精华内容
下载资源
问答
  • C语言开发简单的学生成绩管理系统(附源码)

    万次阅读 多人点赞 2019-04-15 21:08:22
    学生成绩管理系统 开发语言:C语言 开发工具:Visual Studio 2019 开发时间:2019.4.14 开发者:summer @一、系统使用展示 @二、系统功能 @三、菜单 @四、录入学生信息 @五、打印学生信息 @六、保存学生信息 @七、...

    学生成绩管理系统

    开发语言:C语言
    开发工具:Visual Studio 2019
    开发时间:2019.4.14
    开发者:summer

    商业合作可淘宝搜索店铺“程序员夏天的小店”

    @一、系统使用展示

    @二、系统功能

    @三、菜单

    @四、录入学生信息

    @五、打印学生信息

    @六、保存学生信息

    @七、读取学生信息

    @八、统计所有学生人数

    @九、查找学生信息

    @十、修改学生信息

    @十一、删除学生信息

    @十二、退出系统

    @十三、出错

    一、系统使用展示

    Alt

    二、系统功能

    1. 系统功能介绍
    1.录入学生信息:用户可以自由输入学生信息到系统中。
    2.打印学生信息:格式化展示系统中的学生信息。
    3.保存学生信息:将系统中的学生信息保存到本地文档。
    4.读取学生信息:读取本地文档中的学生信息并显示。
    5.统计所有学生人数
    6.查找学生信息:根据用户给定的信息(学号)在系统中查找该学生的信息
    7.修改学生信息
    8.删除学生信息
    0.退出系统
    
    1. 系统main函数,while循环在外,系统程序能够持续运行,switch判断语句进行功能选择与函数切换。
    int main() {
    	while (1)
    	{
    		//打印菜单
    		Menu();
    		//读取一个字符 整数,字符在内存中映射为ASCII码
    		char ch = _getch();
    
    		switch (ch)
    		{
    		case '1'://1.录入学生信息
    			InputStudent();
    			break;
    		case '2'://2.打印学生信息
    			PrintStudent();
    			break;
    		case '3'://3.保存学生信息
    			SaveStudent();
    			break;
    		case '4'://4.读取学生信息
    			ReadStudent();
    			break;
    		case '5'://5.统计所有学生人数
    			CountStudent();
    			break;
    		case '6'://6.查找学生信息
    			FindStudent();
    			break;
    		case '7'://7.修改学生信息
    			ChangeStudent();
    			break;
    		case '8'://8.删除学生信息
    			DeleteStudent();
    			break;
    		case '0'://0.退出系统
    			return 0;
    			break;
    		default:
    			printf("输入有误,没有该功能\n\n");
    			system("pause");  //暂停
    			system("cls");    //清屏
    			break;
    		}
    	}
    
    	return 0;
    }
    

    三、菜单

    1. 菜单显示
    //菜单
    void Menu() {
    	printf("*************************************************\n");
    	printf("*\t欢迎使用高校学生成绩管理系统V1.0\t*\n");
    	printf("*\t\t请选择功能\t\t\t*\n");
    	printf("*************************************************\n");
    	printf("*\t\t1.录入学生信息\t\t\t*\n");
    	printf("*\t\t2.打印学生信息\t\t\t*\n");
    	printf("*\t\t3.保存学生信息\t\t\t*\n");
    	printf("*\t\t4.读取学生信息\t\t\t*\n");
    	printf("*\t\t5.统计所有学生人数\t\t*\n");
    	printf("*\t\t6.查找学生信息\t\t\t*\n");
    	printf("*\t\t7.修改学生信息\t\t\t*\n");
    	printf("*\t\t8.删除学生信息\t\t\t*\n");
    	printf("*\t\t0.退出系统\t\t\t*\n");
    	printf("*************************************************\n");
    }
    
    1. 打印菜单

    scanf()、getchar()输入后均需要按enter,而getch()不用

    	//打印菜单
    	Menu();
    	//读取一个字符 整数,字符在内存中映射为ASCII码
    	char ch = _getch();
    

    四、录入学生信息

    1. 定义学生结构体、链表节点结构体
    //定义一个学生
    typedef struct tagStudent {
    	char szName[20];	//姓名
    	char szSex[4];		//性别
    	int  nAge;			//年龄
    	int  nStuNo;		//学号
    	int  nScore;		//成绩
    }Student;
    
    //链表
    //节点
    typedef struct tagNode
    {
    	Student stu;			//学生信息
    	struct tagNode* pNext;	//指向下一个节点
    }Node;
    
    //创建头节点
    Node* g_pHead = NULL;		//指向头节点
    
    1. 利用学生结构体,以及链表操作输入学生信息
    //1.录入学生信息
    void InputStudent() {
    	//创建一个人,在堆中分配内存
    	Node* pNewNode = (Node*)malloc(sizeof(Node));
    	//指针下一个指向空
    	pNewNode->pNext = NULL;
    
    	//查找链表的尾结点
    	Node* p = g_pHead;
    	while (g_pHead != NULL && p->pNext != NULL)
    	{
    		p = p->pNext;
    	}
    
    	//把节点插到链表的尾节点
    	if (g_pHead == NULL) {
    		g_pHead = pNewNode;
    	}
    	else {
    		p->pNext = pNewNode;
    	}
    
    	//录入学生信息
    	printf("请输入学生姓名:\n");
    	scanf_s("%s", pNewNode->stu.szName, sizeof(pNewNode->stu.szName));
    	printf("请输入性别:\n");
    	scanf_s("%s", pNewNode->stu.szSex, sizeof(pNewNode->stu.szSex));
    	printf("请输入学生年龄:\n");
    	scanf_s("%d", &pNewNode->stu.nAge);
    	printf("请输入学号:\n");
    	scanf_s("%d", &pNewNode->stu.nStuNo);
    	printf("请输入成绩:\n");
    	scanf_s("%d", &pNewNode->stu.nScore);
    
    	printf("学生信息录入成功。\n\n");
    	system("pause");
    	system("cls");
    }
    

    五、打印学生信息

    1. 读取链表结构,输出学生信息。先进行判空处理,如果无学生信息则输出提示信息,反之则正确输出学生信息。
    //2.打印学生信息
    void PrintStudent() {
    
    	system("cls");
    	//遍历链表
    	Node* p = g_pHead;
    	if (p == NULL) {
    		printf("系统中暂无学生信息,请录入后再来打印查看。\n\n");
    	}
    	else {
    		printf("*********************************************************************************\n");
    		printf("*\t\t\t欢迎使用高校学生成绩管理系统V1.0\t\t\t*\n");
    		printf("*********************************************************************************\n");
    		printf("*\t学号\t*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n");
    		printf("*********************************************************************************\n");
    
    		while (p != NULL)
    		{
    			printf("*\t%d\t*\t%s\t*\t%s\t*\t%d\t*\t%d\t*\n",
    				p->stu.nStuNo,
    				p->stu.szName,
    				p->stu.szSex,
    				p->stu.nAge,
    				p->stu.nScore
    			);
    
    			//下一个节点
    			p = p->pNext;
    			printf("*********************************************************************************\n");
    		}
    	}
    
    	system("pause");
    	system("cls");
    }
    

    六、保存学生信息

    1. 利用文件对学生信息进行存储
    //3.保存学生信息
    void SaveStudent() {
    	//打开文件
    	FILE* pFile;
    	pFile = fopen(".\\stuinfo.dat", "w");
    	
    	if (pFile == NULL) {
    		printf("打开文件失败。\n");
    		return;
    	}
    
    	//写入数据
    	Node* p = g_pHead;
    	while (p != NULL)
    	{
    		fwrite(&p->stu, sizeof(Node), 1, pFile);
    		p = p->pNext;
    	}
    
    	//关闭文件
    	fclose(pFile);
    
    	printf("数据保存成功。\n");
    	system("pause");
    	system("cls");
    }
    
    1. fopen在vs中会报错,解决方式

    (1)按照vs的提示,将fopen换成fopen_s

    (2)不修改函数,仅仅修改项目的属性。因为fopen_s是一种Microsoft的函数,若纯做Windows开发则直接改为_s也无妨,但是我们尽量还是用标准C++比较好,这样代码有较好的移植性。

    具体操作:

    右键工程名–>属性–>C/C++–>预处理器–>预处理器定义,编辑右边输入框加入: _CRT_SECURE_NO_WARNINGS

    保存(注意用分号隔开)。

    七、读取学生信息

    1. 打开存储学生信息的文本,单个单词读取,判断非分隔符或者空时则赋值给链表中的节点,读取完毕后,直接调用PrintStudent()函数进行打印结果。
    //4.读取学生信息
    void ReadStudent() {
    	system("cls");
    
    	//打开文件
    	FILE* pFile;
    	pFile = fopen(".\\stuinfo.dat", "r");
    
    	if (pFile == NULL) {
    		printf("打开文件失败。\n");
    		return;
    	}
    	
    	//创建一个人,在堆中分配内存
    	Node* p = (Node*)malloc(sizeof(Node));
    	p->pNext = NULL;
    	//重新建立链表
    	g_pHead = p;
    
    	//逐个单词读入文本内容
    	char str[200];
    	int i = 0;
    	while (fscanf(pFile, "%s", str) != EOF) {  //读文件 
    		//单词不是*或者空时,进行赋值
    		if (strcmp(str, "*") && str != NULL) {
    			switch (i)
    			{
    			case 0:
    				p->stu.nStuNo = atoi(str);
    				break;
    			case 1:
    				strcpy(p->stu.szName, str);
    				break;
    			case 2:
    				strcpy(p->stu.szSex, str);
    				break;
    			case 3:
    				p->stu.nAge = atoi(str);
    				break;
    			case 4:
    				p->stu.nScore = atoi(str);
    				break;
    			default:
    				Node* pNewNode = (Node*)malloc(sizeof(Node));
    				pNewNode->pNext = NULL;
    				p->pNext = pNewNode;
    				p = pNewNode;
    				p->stu.nStuNo = atoi(str);
    				i = 0;
    				break;
    			}
    			i++;
    		}
    	}
    	//打印读取结果
    	PrintStudent();
    }
    
    1. 读取文本时,将内容全部赋值给char数组,所有赋值时需特殊处理。
    • char数组赋值给整数

      在<stdlib.h>头文件中有两个函数,int atoi(char *p)和char *itoa(int p),分别将装有整数的char数组转化为整数,和将整数按位数分解依次存入char数组中。

    • char数组赋值给char数组

      用strcpy函数!

      原型声明:extern char *strcpy(char *dest,char *src);

      头文件:string.h

      功能:把src所指由NULL结束的字符串复制到dest所指的数组中。

      说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

      返回指向dest的指针。

      注:不能使用memcpy(a, b, strlen(b)),会导致中文乱码。

    八、统计所有学生人数

    1. 设置计数器,遍历链表
    //5.统计所有学生人数
    void CountStudent() {
    	int countStu = 0;
    
    	//遍历链表
    	Node* p = g_pHead;
    	while (p != NULL)
    	{
    		countStu++;
    		p = p->pNext;
    	}
    	printf("学生总人数:%d\n\n", countStu);
    
    	system("pause");
    	system("cls");
    }
    

    九、查找学生信息

    1. 本次查找以学号为示例,改用姓名等信息查询流程基本一致。

      遍历链表,如果有符合信息的学生则打印,反之则继续下一个节点,若系统中无该学生信息,给予用户无结果提示。

    //6.查找学生信息
    void FindStudent() {
    	system("cls");
    	//以学号为查找示例,其他信息查找流程基本相似
    	int stuNum;
    	printf("请输入查找学生学号:");
    	scanf("%d", &stuNum);
    	//遍历链表查找,查找到后进行信息显示
    	Node* p = g_pHead;
    	//对表头进行展示一次
    	bool isShowHead = false;
    	//记录是否有找到该学号的学生信息
    	bool isFindStu = false;
    	while (p != NULL)
    	{
    		if (stuNum == p->stu.nStuNo) {
    			if (!isShowHead) {
    				printf("*********************************************************************************\n");
    				printf("*\t学号\t*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n");
    				printf("*********************************************************************************\n");
    				isShowHead = true;
    			}
    			printf("*\t%d\t*\t%s\t*\t%s\t*\t%d\t*\t%d\t*\n",
    				p->stu.nStuNo,
    				p->stu.szName,
    				p->stu.szSex,
    				p->stu.nAge,
    				p->stu.nScore
    			);
    			isFindStu = true;
    			printf("*********************************************************************************\n");
    		}
    		p = p->pNext;
    	}
    
    	if (!isFindStu) {
    		printf("学号输入有误,系统中暂无该学生信息。\n\n");
    	}
    
    	system("pause");
    	system("cls");
    }
    

    十、修改学生信息

    1. 可参考查找学生信息代码段,在查找后进行修改即可
    //7.修改学生信息
    void ChangeStudent() {
    	//以学号为查找示例,其他信息查找流程基本相似
    	int stuNum;
    	printf("请输入欲修改学生的学号:");
    	scanf("%d", &stuNum);
    	//遍历链表查找,查找到后进行信息显示
    	Node* p = g_pHead;
    	//对表头进行展示一次
    	bool isShowHead = false;
    	//记录是否有找到该学号的学生信息
    	bool isFindStu = false;
    	while (p != NULL)
    	{
    		if (stuNum == p->stu.nStuNo) {
    			if (!isShowHead) {
    				printf("*********************************************************************************\n");
    				printf("*\t学号\t*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n");
    				printf("*********************************************************************************\n");
    				isShowHead = true;
    			}
    			printf("*\t%d\t*\t%s\t*\t%s\t*\t%d\t*\t%d\t*\n",
    				p->stu.nStuNo,
    				p->stu.szName,
    				p->stu.szSex,
    				p->stu.nAge,
    				p->stu.nScore
    			);
    			//修改学生信息
    			printf("请输入学生姓名:\n");
    			scanf_s("%s", p->stu.szName, sizeof(p->stu.szName));
    			printf("请输入性别:\n");
    			scanf_s("%s", p->stu.szSex, sizeof(p->stu.szSex));
    			printf("请输入学生年龄:\n");
    			scanf_s("%d", &p->stu.nAge);
    			printf("请输入学号:\n");
    			scanf_s("%d", &p->stu.nStuNo);
    			printf("请输入成绩:\n");
    			scanf_s("%d", &p->stu.nScore);
    			isFindStu = true;
    			printf("*********************************************************************************\n");
    			printf("学生信息修改成功,请注意及时保存。\n\n");
    		}
    		p = p->pNext;
    	}
    
    	if (!isFindStu) {
    		printf("学号输入有误,系统中暂无该学生信息,无法进行修改。\n\n");
    	}
    
    	system("pause");
    	system("cls");
    }
    

    十一、删除学生信息

    1. 仍然以查找学生信息操作为基础,以学号为线索,查找到则进行删除,未查找到则进行错误提示,删除时需要区分当前节点是头结点、尾节点或者中间节点,不同节点操作不同,同时该删除仅作用于本次操作,需保存学生信息才能长久生效。
    //8.删除学生信息
    void DeleteStudent() {
    	system("cls");
    	//以学号为查找示例,其他信息查找流程基本相似
    	int stuNum;
    	printf("请输入删除学生的学号:");
    	scanf("%d", &stuNum);
    	//遍历链表查找,查找到后进行信息显示
    	Node* p = g_pHead;
    	//记录前一个节点,删除时方便操作
    	Node* beforeNode = g_pHead;
    
    	//对表头进行展示一次
    	bool isShowHead = false;
    	//记录是否有找到该学号的学生信息
    	bool isFindStu = false;
    	while (p != NULL)
    	{
    		if (stuNum == p->stu.nStuNo) {
    			if (!isShowHead) {
    				printf("*********************************************************************************\n");
    				printf("*\t学号\t*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n");
    				printf("*********************************************************************************\n");
    				isShowHead = true;
    			}
    			printf("*\t%d\t*\t%s\t*\t%s\t*\t%d\t*\t%d\t*\n",
    				p->stu.nStuNo,
    				p->stu.szName,
    				p->stu.szSex,
    				p->stu.nAge,
    				p->stu.nScore
    			);
    			isFindStu = true;
    			printf("*********************************************************************************\n");
    
    			//删除节点为头节点
    			if (p == g_pHead) {
    				g_pHead = p->pNext;
    			}
    			//删除节点为尾节点
    			else if (p->pNext == NULL) {
    				p = beforeNode;
    				p->pNext = NULL;
    			}
    			//删除节点为中间节点
    			else {
    				beforeNode->pNext = p->pNext;
    			}
    			printf("删除成功,请记得保存。\n\n");
    		}
    		beforeNode = p;
    		p = p->pNext;
    	}
    
    	if (!isFindStu) {
    		printf("学号输入有误,系统中暂无该学生信息,无法进行删除操作。\n\n");
    	}
    
    	system("pause");
    	system("cls");
    }
    

    十二、退出系统

    直接在选择0时,设置return即可。

    十三、出错

    用户输入有误时,进行提示信息输出即可。

    	printf("输入有误,没有该功能\n\n");
    	system("pause");  //暂停
    	system("cls");    //清屏
    

    展开全文
  • C语言学生成绩管理系统源代码

    万次阅读 多人点赞 2018-03-21 20:27:20
    大学C语言实训课,C语言学生成绩管理系统。 #include<stdio.h> #include<string.h> #include<math.h> struct student { int num; char name[20]; float pingshi; float shiyan; ...

    分享:C语言学生成绩管理系统设计 《C语言程序设计》实训报告

    点击查看 ----> C语言学生成绩管理系统(课程设计报告书)

    扫描下方公众号,发送 成绩系统 4个字,获取下载源码

    扫描上方二维码,回复 999 直接获取作者之前收藏的学习资源,谢谢网友们的分享。

    回复 系统大全,即可获得关于C语言管理系统比较全面的文章内容,覆盖全网(有点夸张,但仍在更新补充中)

    以后有时间再给大家继续分享,有任何问题欢迎留言区交流。

    大学C语言实训课,C语言学生成绩管理系统。

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    struct student
    	{
    		int num;
    		char name[20];
    		float pingshi;
    		float shiyan;
    		float kaoshi;
    		double zongping;
    	}stu[4];
    void main()
    {
    	void a();
    	void b();
    	void c();
    	void d();
    	void e();
    	int n;
    	while(n!=6)
    	{	printf("\t大学计算机基础成绩管理系统\n");
    		printf("1:输入一个班学生大学计算机基础成绩记录\n");
    		printf("2:显示所有成绩记录\n");
    		printf("3:计算并输出平均成绩,均方差\n");
    		printf("4:输出成绩与排名\n");
    		printf("5:结果存入文件chengji.txt\n");
    		printf("6:退出系统\n");
    		printf("输入选项代码:");
    		scanf("%d",&n);
    		switch(n)
    		{
    			case 1:a();break;
    			case 2:b();break;
    			case 3:c();break;
    			case 4:d();break;
    			case 5:e();break;
    			case 6:printf("\n*******************谢谢使用!*******************\n");break;
    			break;    
    		}	
    	}
    getchar();
    }
    /* 子  函  数*/
    void a() /* 输入一个班的学生记录*/
    
    {
    	int i;
    
    	for(i=0;i<4;i++)
    
    	{   
    
    		printf("请输入学号 姓名 平时成绩 实验成绩 考试成绩:");
    
    		scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].pingshi,&stu[i].shiyan,&stu[i].kaoshi);
    		
    	}for(i=0;i<4;i++)
    stu[i].zongping=0.1*stu[i].pingshi+0.3*stu[i].shiyan+0.6*stu[i].kaoshi;
    }
    void b()/* 显示所有记录*/
    
    {
    	int i;
    
    	printf("学号        姓名       平时成绩       实验成绩      考试成绩     总评成绩\n");
    
    	for(i=0;i<4;i++)
    
    		printf("%d%14.2s%14.2f%14.2f%14.2f%14.2f\n",stu[i].num,stu[i].name,stu[i].pingshi,stu[i].shiyan,stu[i].kaoshi,stu[i].zongping);
    
    }
    
    void c()/* 求出全班平均成绩,显示均方差*/
    {  
    	int a[4]={0,1,2,3};
        int i,j;
        double total=0,pfc=0,bzc=0;
        double ave;
        for(i=0;i<4;i++)
    	{
    		total=total+stu[i].zongping;
    	}
        ave=total/4.0;
        printf("总评平均成绩是%f\n",ave);
    	for(i=0;i<4;i++)
    	{
    		pfc=pow((stu[i].zongping-ave),2)/4;
    	}
    	bzc=sqrt(pfc);
    	printf("\n平方差是%f\n",pfc);
    	printf("\n标准差是%f\n",bzc);
    }
    void d()
    
    {
    	int a[4]={0,1,2,3};
    	int i,j,temp;
    	for(j=0;j<3;j++)
    	{
    		for(i=0;i<3-j;i++)
    		if(stu[a[i]].zongping>stu[a[i+1]].zongping)
    		{	
    			temp=a[i];a[i]=a[i+1];
    			a[i+1]=temp;
    
    		}
    	}
    
    	printf("顺序为:\n");
    
    	printf("学号     姓名      总评成绩\n");
    
    	for(i=0;i<4;i++)
    
    		printf("%d%10.2s%15.2f\n",stu[a[i]].num,stu[a[i]].name,stu[a[i]].zongping);
    
    	printf("\n");
    
    }
    
    void e()
    {int i;
    FILE *fp;
    fp=fopen("chengji.txt","w");
    
    	fprintf(fp,"学号        姓名       平时成绩       实验成绩      考试成绩     总评成绩\n");
    
    	for(i=0;i<4;i++)
    
    		fprintf(fp,"%d%14.2s%14.2f%14.2f%14.2f%14.2f\n",stu[i].num,stu[i].name,stu[i].pingshi,stu[i].shiyan,stu[i].kaoshi,stu[i].zongping);
    
    printf("\n\n*******************恭喜,保存完成!*******************\n\n");
    }
    

    简单记录。

    关注微信公众号“资料在线”,回复“C语言源码”,即可获得C语言源码包

    更多资源等着你

    最新文章:

    0、C语言学生成绩管理系统(课程设计报告书)★★★

    1、 C语言学生成绩管理系统源代码 ★★★★★

    2、 C语言学籍管理系统源代码 ★★

    3、C语言学生成绩管理系统设计 《C语言程序设计》实训报告 ★★★

    4、C语言学生信息管理系统源代码 ★★★★

    展开全文
  • 基于javaweb实现学生成绩管理系统,实现了学生信息管理,课程管理,教师信息管理,学生成绩汇总,学生登录注册,教师和管理员的登录,个人信息修改等。 系统功能大致描述:基于javaweb实现学生成绩管理系统,实现了学生信息...

    基于javaweb实现学生成绩管理系统,实现了学生信息管理,课程管理,教师信息管理,学生成绩汇总,学生登录注册,教师和管理员的登录,个人信息修改等。

    系统功能大致描述:基于javaweb实现学生成绩管理系统,实现了学生信息管理,课程管理,教师信息管理,学生成绩汇总,学生登录注册,教师和管理员的登录,个人信息修改等。 使用的技术有jsp,servlet,jdbc,mysql,html,css,js,没有使用任何java框架,代码规范,特别适合新手,可以用于毕业设计和课程作业.

    由于系统源码太多,这里只做部分演示,下面是系统运行效果截图

     

     

     

     

     

     

    基于javaweb实现学生成绩管理系统,实现了学生信息管理,课程管理,教师信息管理,学生成绩汇总,

    学生登录注册,教师和管理员的登录,个人信息修改等。

    使用的技术有jsp,servlet,jdbc,mysql,html,css,js,

    没有使用任何java框架,代码规范,特别适合新手,可以用于毕业设计和课程作业.

    学生账号:160341  123456

    教师:1123  123456

    管理员信息:1000   123456

    数据库字段说明

    course(课程表)
    字段名类型默认值主外键是否为空注释
    course_idint(11)null主键NO课程编号
    course_namevarchar(20)null NO课程名
    course_creditint(11)null NO学分
    course_hoursint(11)null NO学时
    course_teachervarchar(30)null NO任课教师
    coursedatedatenull NO开课时间

     

    role(角色表)
    字段名类型默认值主外键是否为空注释
    role_idint(11)null主键NO角色编号
    role_namevarchar(20)null NO角色名称
    role_infovarchar(50)null NO角色信息

     

    score(成绩表)
    字段名类型默认值主外键是否为空注释
    score_idint(11)null主键NO成绩编号
    stu_numvarchar(20)null NO学号
    stu_namevarchar(30)null NO姓名
    stu_classvarchar(20)null NO班级
    course_namevarchar(20)null NO科目
    score_gradedouble(11,2)null NO成绩
    majorvarchar(20)null NO专业

     

    student(学生表)
    字段名类型默认值主外键是否为空注释
    stu_idint(11)null主键NO编号
    stu_numvarchar(20)null NO账号
    stu_namevarchar(30)null NO姓名
    stu_sexvarchar(10)null NO性别
    stu_ageint(11)null NO年龄
    stu_classvarchar(20)null NO班级
    majorvarchar(20)null NO专业
    departmentvarchar(20)null NO院系

     

    teacher(教师表)
    字段名类型默认值主外键是否为空注释
    tea_idint(11)null主键NO编号
    tea_numvarchar(20)null NO工号
    tea_namevarchar(30)null NO姓名
    tea_sexvarchar(10)null NO性别
    tea_ageint(11)null NO年龄
    tea_coursevarchar(20)null NO所任课程
    majorvarchar(20)null NO专业
    departmentvarchar(20)null NO院系

     

    user(用户表)
    字段名类型默认值主外键是否为空注释
    user_idint(11)null主键NO用户编号
    user_numvarchar(20)null NO用户账号
    user_namevarchar(30)null NO用户名
    passwordvarchar(20)null NO密码
    phonevarchar(20)null NO用户电话
    role_idint(11)null NO角色编号(外键)

    数据库创建表语句

    
    DROP TABLE IF EXISTS `course`;
    CREATE TABLE `course`  (
      `course_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '课程编号',
      `course_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '课程名',
      `course_credit` int(11) NOT NULL COMMENT '学分',
      `course_hours` int(11) NOT NULL COMMENT '学时',
      `course_teacher` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '任课教师',
      `coursedate` date NOT NULL COMMENT '开课时间',
      PRIMARY KEY (`course_id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- Records of course
    -- ----------------------------
    INSERT INTO `course` VALUES (1, 'C++程序设计教程', 3, 60, '汪维清', '2017-03-02');
    INSERT INTO `course` VALUES (2, 'java入门基础', 3, 60, '肖兴江', '2017-02-09');
    INSERT INTO `course` VALUES (3, '计算机组成原理', 3, 60, '胡继宽', '2017-02-09');
    INSERT INTO `course` VALUES (4, '信息检索', 2, 60, '郑蔚', '2017-02-09');
    INSERT INTO `course` VALUES (5, '操作系统原理', 4, 60, '丁华峰', '2018-03-15');
    INSERT INTO `course` VALUES (6, '管理信息系统', 4, 60, '杜治国', '2019-02-11');
    
    -- ----------------------------
    -- Table structure for role
    -- ----------------------------
    DROP TABLE IF EXISTS `role`;
    CREATE TABLE `role`  (
      `role_id` int(11) NOT NULL COMMENT '角色编号',
      `role_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色名称',
      `role_info` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色信息',
      PRIMARY KEY (`role_id`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- Records of role
    -- ----------------------------
    INSERT INTO `role` VALUES (0, '学生', '学生查看成绩');
    INSERT INTO `role` VALUES (1, '教师', '教师操作');
    INSERT INTO `role` VALUES (2, '管理员', '管理员操作');
    
    -- ----------------------------
    -- Table structure for score
    -- ----------------------------
    DROP TABLE IF EXISTS `score`;
    CREATE TABLE `score`  (
      `score_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '成绩编号',
      `stu_num` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '学号',
      `stu_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '姓名',
      `stu_class` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '班级',
      `course_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '科目',
      `score_grade` double(11, 2) NOT NULL COMMENT '成绩',
      `major` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '专业',
      PRIMARY KEY (`score_id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 113 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- Records of score
    -- ----------------------------
    INSERT INTO `score` VALUES (1, '170340', '张三', '计科1701', 'java入门基础', 96.50, '计算机');
    INSERT INTO `score` VALUES (2, '170340', '张三', '计科1701', 'C++程序设计教程', 85.00, '计算机');
    INSERT INTO `score` VALUES (3, '160341', '王五', '信管1601', 'java入门基础', 62.60, '信息管理与信息系统');
    INSERT INTO `score` VALUES (4, '160341', '王五', '信管1601', 'C++程序设计教程', 85.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (5, '170340', '张三', '计科1701', '计算机组成原理', 69.00, '计算机');
    INSERT INTO `score` VALUES (6, '170340', '张三', '计科1701', '信息检索', 95.00, '计算机');
    INSERT INTO `score` VALUES (7, '170340', '张三', '计科1701', '操作系统原理', 89.00, '计算机');
    INSERT INTO `score` VALUES (8, '160341', '王五', '计科1701', 'C++程序设计教程', 95.00, '计算机');
    INSERT INTO `score` VALUES (9, '160341', '王五', '信管1601', 'java入门基础', 92.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (10, '160341', '王五', '信管1601', '计算机组成原理', 83.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (11, '170339', '李四', '计科1701', 'java入门基础', 78.20, '计算机');
    INSERT INTO `score` VALUES (12, '170339', '李四', '计科1701', '信息检索', 98.00, '计算机');
    INSERT INTO `score` VALUES (13, '170339', '李四', '计科1701', '计算机组成原理', 76.00, '计算机');
    INSERT INTO `score` VALUES (14, '170339', '李四', '计科1701', '操作系统原理', 69.80, '计算机');
    INSERT INTO `score` VALUES (15, '170339', '李四', '计科1701', 'C++程序设计教程', 89.00, '计算机');
    INSERT INTO `score` VALUES (16, '170343', '陈留', '计科1701', 'java入门基础', 80.50, '计算机');
    INSERT INTO `score` VALUES (17, '170343', '陈留', '计科1701', '计算机组成原理', 83.50, '计算机');
    INSERT INTO `score` VALUES (18, '170343', '陈留', '计科1701', 'C++程序设计教程', 82.50, '计算机');
    INSERT INTO `score` VALUES (19, '170343', '陈留', '计科1701', '操作系统原理', 80.00, '计算机');
    INSERT INTO `score` VALUES (20, '160342', '盛祎琛', '信管1602', '信息检索', 95.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (21, '160342', '盛祎琛', '信管1602', '操作系统原理', 85.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (22, '160342', '盛祎琛', '信管1602', '计算机组成原理', 65.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (23, '160342', '盛祎琛', '信管1602', 'java入门基础', 95.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (24, '160343', '闫玉平', '信管1601', '信息检索', 90.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (25, '160343', '闫玉平', '信管1601', '操作系统原理', 64.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (26, '160343', '闫玉平', '信管1601', '计算机组成原理', 63.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (27, '160343', '闫玉平', '信管1601', 'java入门基础', 70.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (28, '160344', '陈淑婷', '信管1601', '信息检索', 88.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (29, '160344', '陈淑婷', '信管1601', '操作系统原理', 77.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (30, '160344', '陈淑婷', '信管1601', '计算机组成原理', 66.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (31, '160344', '陈淑婷', '信管1601', 'java入门基础', 88.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (32, '160345', '周梦琪', '信管1601', '信息检索', 95.50, '信息管理与信息系统');
    INSERT INTO `score` VALUES (33, '160345', '周梦琪', '信管1601', '计算机组成原理', 65.50, '信息管理与信息系统');
    INSERT INTO `score` VALUES (34, '160345', '周梦琪', '信管1601', 'java入门基础', 78.50, '信息管理与信息系统');
    INSERT INTO `score` VALUES (35, '160345', '周梦琪', '信管1601', '操作系统原理', 85.50, '信息管理与信息系统');
    INSERT INTO `score` VALUES (36, '160346', '曾智', '信管1601', '信息检索', 90.90, '信息管理与信息系统');
    INSERT INTO `score` VALUES (37, '160346', '曾智', '信管1601', '计算机组成原理', 98.90, '信息管理与信息系统');
    INSERT INTO `score` VALUES (38, '160346', '曾智', '信管1601', 'java入门基础', 60.90, '信息管理与信息系统');
    INSERT INTO `score` VALUES (39, '160346', '曾智', '信管1601', '操作系统原理', 70.90, '信息管理与信息系统');
    INSERT INTO `score` VALUES (40, '160347', '百鬼丸', '信管1601', '信息检索', 85.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (41, '160347', '百鬼丸', '信管1601', '操作系统原理', 65.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (42, '160347', '百鬼丸', '信管1601', 'java入门基础', 75.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (43, '160347', '百鬼丸', '信管1601', '计算机组成原理', 95.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (44, '160348', '多罗罗', '信管1601', '信息检索', 65.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (45, '160349', '伊藤健太郎', '信管1601', '信息检索', 95.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (46, '160350', '贺来贤人', '信管1601', '信息检索', 66.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (47, '160351', '服部平次', '信管1601', '信息检索', 88.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (48, '160352', '柯南', '信管1601', '信息检索', 99.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (49, '170353', '时崎狂三', '计科1601', 'java入门基础', 96.50, '计算机');
    INSERT INTO `score` VALUES (50, '170354', '坂本', '计科1601', 'java入门基础', 66.50, '计算机');
    INSERT INTO `score` VALUES (51, '170355', '夏瀚宇', '计科1601', 'java入门基础', 99.00, '计算机');
    INSERT INTO `score` VALUES (52, '170356', '管栎', '计科1602', 'java入门基础', 96.00, '计算机');
    INSERT INTO `score` VALUES (53, '170357', '连淮伟', '计科1602', 'java入门基础', 76.50, '计算机');
    INSERT INTO `score` VALUES (54, '170358', '杨芸晴', '计科1603', 'java入门基础', 69.00, '计算机');
    INSERT INTO `score` VALUES (55, '170359', '赖美云', '计科1603', 'java入门基础', 88.00, '计算机');
    INSERT INTO `score` VALUES (56, '170360', '灰二', '计科1603', 'java入门基础', 96.00, '计算机');
    INSERT INTO `score` VALUES (57, '160352', '潘思言', '信管1701', '信息检索', 95.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (58, '160352', '杨皓鹏', '信管1701', '信息检索', 90.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (59, '160352', '王子', '信管1701', '信息检索', 93.50, '信息管理与信息系统');
    INSERT INTO `score` VALUES (60, '160352', '宫崎骏', '信管1801', '信息检索', 75.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (61, '160352', '胡春阳', '信管1801', '信息检索', 66.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (62, '160352', '阿云嘎', '信管1801', '信息检索', 78.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (63, '160352', '吴磊', '信管1703', '信息检索', 79.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (64, '160352', '魏大勋', '信管1703', '信息检索', 65.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (65, '160352', '白敬亭', '信管1703', '信息检索', 75.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (66, '160352', '铃屋十造', '信管1802', '信息检索', 65.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (67, '160348', '多罗罗', '信管1601', 'java入门基础', 65.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (68, '160349', '伊藤健太郎', '信管1601', 'java入门基础', 95.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (69, '160350', '贺来贤人', '信管1601', 'java入门基础', 66.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (70, '160351', '服部平次', '信管1601', 'java入门基础', 88.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (71, '160352', '柯南', '信管1601', 'java入门基础', 99.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (72, '170353', '时崎狂三', '计科1601', '操作系统原理', 96.50, '计算机');
    INSERT INTO `score` VALUES (73, '170354', '坂本', '计科1601', '操作系统原理', 66.50, '计算机');
    INSERT INTO `score` VALUES (74, '170355', '夏瀚宇', '计科1601', '操作系统原理', 99.00, '计算机');
    INSERT INTO `score` VALUES (75, '170356', '管栎', '计科1602', '操作系统原理', 96.00, '计算机');
    INSERT INTO `score` VALUES (76, '170357', '连淮伟', '计科1602', '操作系统原理', 76.50, '计算机');
    INSERT INTO `score` VALUES (77, '170358', '杨芸晴', '计科1603', '操作系统原理', 69.00, '计算机');
    INSERT INTO `score` VALUES (78, '170359', '赖美云', '计科1603', '操作系统原理', 88.00, '计算机');
    INSERT INTO `score` VALUES (79, '170360', '灰二', '计科1603', '操作系统原理', 96.00, '计算机');
    INSERT INTO `score` VALUES (80, '160352', '潘思言', '信管1701', 'java入门基础', 95.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (81, '160352', '杨皓鹏', '信管1701', 'java入门基础', 90.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (82, '160352', '王子', '信管1701', 'java入门基础', 93.50, '信息管理与信息系统');
    INSERT INTO `score` VALUES (83, '160352', '宫崎骏', '信管1801', 'java入门基础', 75.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (84, '160352', '胡春阳', '信管1801', 'java入门基础', 66.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (85, '160352', '阿云嘎', '信管1801', 'java入门基础', 78.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (86, '160352', '吴磊', '信管1703', 'java入门基础', 79.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (87, '160352', '魏大勋', '信管1703', 'java入门基础', 65.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (88, '160352', '白敬亭', '信管1703', 'java入门基础', 75.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (89, '160352', '铃屋十造', '信管1802', 'java入门基础', 65.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (90, '160348', '多罗罗', '信管1601', '计算机组成原理', 65.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (91, '160349', '伊藤健太郎', '信管1601', '计算机组成原理', 95.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (92, '160350', '贺来贤人', '信管1601', '计算机组成原理', 66.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (93, '160351', '服部平次', '信管1601', '计算机组成原理', 88.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (94, '160352', '柯南', '信管1601', '计算机组成原理', 99.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (95, '170353', '时崎狂三', '计科1601', 'C++程序设计教程', 96.50, '计算机');
    INSERT INTO `score` VALUES (96, '170354', '坂本', '计科1601', 'C++程序设计教程', 66.50, '计算机');
    INSERT INTO `score` VALUES (97, '170355', '夏瀚宇', '计科1601', 'C++程序设计教程', 99.00, '计算机');
    INSERT INTO `score` VALUES (98, '170356', '管栎', '计科1602', 'C++程序设计教程', 96.00, '计算机');
    INSERT INTO `score` VALUES (99, '170357', '连淮伟', '计科1602', 'C++程序设计教程', 76.50, '计算机');
    INSERT INTO `score` VALUES (100, '170358', '杨芸晴', '计科1603', 'C++程序设计教程', 69.00, '计算机');
    INSERT INTO `score` VALUES (101, '170359', '赖美云', '计科1603', 'C++程序设计教程', 88.00, '计算机');
    INSERT INTO `score` VALUES (102, '170360', '灰二', '计科1603', 'C++程序设计教程', 96.00, '计算机');
    INSERT INTO `score` VALUES (103, '160352', '潘思言', '信管1701', '计算机组成原理', 95.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (104, '160352', '杨皓鹏', '信管1701', '计算机组成原理', 90.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (105, '160352', '王子', '信管1701', '计算机组成原理', 93.50, '信息管理与信息系统');
    INSERT INTO `score` VALUES (106, '160352', '宫崎骏', '信管1801', '计算机组成原理', 75.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (107, '160352', '胡春阳', '信管1801', '计算机组成原理', 66.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (108, '160352', '阿云嘎', '信管1801', '计算机组成原理', 78.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (109, '160352', '吴磊', '信管1703', '计算机组成原理', 79.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (110, '160352', '魏大勋', '信管1703', '计算机组成原理', 65.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (111, '160352', '白敬亭', '信管1703', '计算机组成原理', 75.00, '信息管理与信息系统');
    INSERT INTO `score` VALUES (112, '160352', '铃屋十造', '信管1802', '计算机组成原理', 65.00, '信息管理与信息系统');
    
    -- ----------------------------
    -- Table structure for student
    -- ----------------------------
    DROP TABLE IF EXISTS `student`;
    CREATE TABLE `student`  (
      `stu_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
      `stu_num` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '账号',
      `stu_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '姓名',
      `stu_sex` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '性别',
      `stu_age` int(11) NOT NULL COMMENT '年龄',
      `stu_class` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '班级',
      `major` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '专业',
      `department` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '院系',
      PRIMARY KEY (`stu_id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 34 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- Records of student
    -- ----------------------------
    INSERT INTO `student` VALUES (1, '160341', '王五', '女', 21, '信管1601', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (2, '170340', '张三', '男', 20, '计科1701', '计算机', '商贸学院');
    INSERT INTO `student` VALUES (3, '170339', '李四', '男', 20, '计科1701', '计算机', '商贸学院');
    INSERT INTO `student` VALUES (4, '170343', '陈留', '男', 21, '计科1701', '计算机', '商贸学院');
    INSERT INTO `student` VALUES (5, '160342', '盛祎琛', '女', 19, '信管1602', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (6, '160343', '闫玉平', '女', 20, '信管1601', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (7, '160344', '陈淑婷', '女', 20, '信管1601', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (8, '160345', '周梦琪', '女', 20, '信管1601', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (9, '160346', '曾智', '女', 20, '信管1601', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (10, '160347', '百鬼丸', '男', 20, '信管1601', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (11, '160348', '多罗罗', '男', 20, '信管1601', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (12, '160349', '伊藤健太郎', '男', 20, '信管1601', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (13, '160350', '贺来贤人', '男', 20, '信管1601', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (14, '160351', '服部平次', '男', 20, '信管1601', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (15, '160352', '柯南', '男', 20, '信管1601', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (16, '170353', '时崎狂三', '女', 21, '计科1601', '计算机', '商贸学院');
    INSERT INTO `student` VALUES (17, '170354', '坂本', '男', 21, '计科1601', '计算机', '商贸学院');
    INSERT INTO `student` VALUES (18, '170355', '夏瀚宇', '男', 21, '计科1601', '计算机', '商贸学院');
    INSERT INTO `student` VALUES (19, '170356', '管栎', '男', 21, '计科1602', '计算机', '商贸学院');
    INSERT INTO `student` VALUES (20, '170357', '连淮伟', '男', 21, '计科1602', '计算机', '商贸学院');
    INSERT INTO `student` VALUES (21, '170358', '杨芸晴', '女', 21, '计科1603', '计算机', '商贸学院');
    INSERT INTO `student` VALUES (22, '170359', '赖美云', '女', 21, '计科1603', '计算机', '商贸学院');
    INSERT INTO `student` VALUES (23, '170360', '灰二', '男', 21, '计科1603', '计算机', '商贸学院');
    INSERT INTO `student` VALUES (24, '160352', '潘思言', '男', 20, '信管1701', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (25, '160352', '杨皓鹏', '男', 20, '信管1701', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (26, '160352', '王子', '男', 20, '信管1701', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (27, '160352', '宫崎骏', '男', 20, '信管1801', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (28, '160352', '胡春阳', '男', 20, '信管1801', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (29, '160352', '阿云嘎', '男', 20, '信管1801', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (30, '160352', '吴磊', '男', 20, '信管1703', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (31, '160352', '魏大勋', '男', 20, '信管1703', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (32, '160352', '白敬亭', '男', 19, '信管1703', '信息管理与信息系统', '商贸学院');
    INSERT INTO `student` VALUES (33, '160352', '铃屋十造', '男', 18, '信管1802', '信息管理与信息系统', '商贸学院');
    
    -- ----------------------------
    -- Table structure for teacher
    -- ----------------------------
    DROP TABLE IF EXISTS `teacher`;
    CREATE TABLE `teacher`  (
      `tea_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
      `tea_num` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '工号',
      `tea_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '姓名',
      `tea_sex` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '性别',
      `tea_age` int(11) NOT NULL COMMENT '年龄',
      `tea_course` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '所任课程',
      `major` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '专业',
      `department` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '院系',
      PRIMARY KEY (`tea_id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- Records of teacher
    -- ----------------------------
    INSERT INTO `teacher` VALUES (1, '1123', '肖兴江', '男', 30, 'java入门基础', '计算机', '商贸学院');
    INSERT INTO `teacher` VALUES (2, '1124', '汪维清', '男', 25, 'C++程序设计教程', '计算机', '商贸学院');
    INSERT INTO `teacher` VALUES (3, '1125', '胡继宽', '男', 32, '计算机组成原理', '信息管理与信息系统', '商贸学院');
    INSERT INTO `teacher` VALUES (4, '1126', '郑蔚', '女', 34, '信息检索', '信息管理与信息系统', '商贸学院');
    INSERT INTO `teacher` VALUES (5, '1127', '丁华峰', '男', 40, '操作系统原理', '计算机', '商贸学院');
    INSERT INTO `teacher` VALUES (6, '1128', '杜治国', '男', 35, '管理信息系统', '信息管理与信息系统', '商贸学院');
    
    -- ----------------------------
    -- Table structure for user
    -- ----------------------------
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user`  (
      `user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户编号',
      `user_num` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户账号',
      `user_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名',
      `password` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',
      `phone` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户电话',
      `role_id` int(11) NOT NULL COMMENT '角色编号(外键)',
      PRIMARY KEY (`user_id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 41 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- Records of user
    -- ----------------------------
    INSERT INTO `user` VALUES (1, '160341', '王五', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (2, '170340', '张三', '123456', '15869483651', 0);
    INSERT INTO `user` VALUES (3, '170339', '李四', '123456', '13589462584', 0);
    INSERT INTO `user` VALUES (6, '1123', '肖兴江', '123456', '17418953551', 1);
    INSERT INTO `user` VALUES (7, '1124', '汪维清', '123456', '15897683584', 1);
    INSERT INTO `user` VALUES (8, '170343', '陈留', '123456', '12457891862', 0);
    INSERT INTO `user` VALUES (9, '1125', '胡继宽', '123456', '12378945862', 1);
    INSERT INTO `user` VALUES (10, '1126', '郑蔚', '123456', '13589462584', 1);
    INSERT INTO `user` VALUES (11, '1000', 'admin', '123456', '18179586325', 2);
    INSERT INTO `user` VALUES (12, '1127', '丁华峰', '123456', '16123598785', 1);
    INSERT INTO `user` VALUES (13, '1128', '杜治国', '123456', '13158794456', 1);
    INSERT INTO `user` VALUES (14, '160344', '陈淑婷', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (15, '160345', '周梦琪', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (16, '160346', '曾智', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (17, '160347', '百鬼丸', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (18, '160348', '多罗罗', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (19, '160349', '伊藤健太郎', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (20, '160350', '贺来贤人', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (21, '170358', '杨芸晴', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (22, '170359', '赖美云', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (23, '170360', '灰二', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (24, '160352', '潘思言', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (25, '160352', '杨皓鹏', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (26, '160352', '王子', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (27, '160352', '宫崎骏', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (28, '160352', '胡春阳', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (29, '160352', '阿云嘎', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (30, '160352', '吴磊', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (31, '160352', '魏大勋', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (32, '160352', '白敬亭', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (33, '160352', '铃屋十造', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (34, '160351', '服部平次', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (35, '160352', '柯南', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (36, '170353', '时崎狂三', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (37, '170354', '坂本', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (38, '170355', '夏瀚宇', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (39, '170356', '管栎', '123456', '14829726746', 0);
    INSERT INTO `user` VALUES (40, '170357', '连淮伟', '123456', '14829726746', 0);
    
    -- ----------------------------
    -- Triggers structure for table student
    -- ----------------------------
    DROP TRIGGER IF EXISTS `stuLogin`;
    delimiter ;;
    CREATE TRIGGER `stuLogin` AFTER DELETE ON `student` FOR EACH ROW begin 
    delete from user where user_num=old.stu_num;
    end
    ;;
    delimiter ;
    
    -- ----------------------------
    -- Triggers structure for table teacher
    -- ----------------------------
    DROP TRIGGER IF EXISTS `teaLogin`;
    delimiter ;;
    CREATE TRIGGER `teaLogin` AFTER DELETE ON `teacher` FOR EACH ROW begin
    delete from user where user_num=old.tea_num;
    end
    ;;
    delimiter ;
    
    SET FOREIGN_KEY_CHECKS = 1;
    

    java链接数据库文件

    package db;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
    
    
    public class DBCon {
    	Connection con = null;
    	Statement st = null;
    	ResultSet rs = null;
    	String driver=null;
    	String url = null;
    	String username = null;
    	String password = null;
    
    	public Connection dbCon() {
    		try {
    			InputStream is=DBCon.class.getClassLoader().getResourceAsStream("db.properties");
    			Properties prop=new Properties();
    			try {
    				prop.load(is);
    				driver=prop.getProperty("driver");
    				url=prop.getProperty("url");
    				username=prop.getProperty("username");
    				password=prop.getProperty("password");
    				
    			} catch (IOException e1) {
    				
    				e1.printStackTrace();
    			}
    			Class.forName(driver);
    			/*Class.forName("com.mysql.jdbc.Driver");
    			url = "jdbc:mysql:///sams?useUnicode=true&characterEncoding=utf8";
    			username = "root";
    			password = "root";*/
    			try {
    				con = DriverManager.getConnection(url, username, password);
    			} catch (SQLException e) {
    
    				e.printStackTrace();
    			}
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    		return con;
    	}
    
    	/*
    	 * 增删改
    	 */
    	public int query(String sql) {
    		int rs = 0;
    		con = dbCon();
    		try {
    			st = con.createStatement();
    			rs = st.executeUpdate(sql);
    		} catch (SQLException e) {
    			close();
    			e.printStackTrace();
    		}
    
    		return rs;
    	}
    
    	/*
    	 * 查
    	 */
    	public ResultSet find(String sql) {
    
    		try {
    			con = dbCon();
    			st = con.createStatement();
    			rs = st.executeQuery(sql);
    		} catch (SQLException e) {
    			close();
    			e.printStackTrace();
    		}
    		return rs;
    	}
    
    	/*
    	 * 关闭数据库
    	 */
    	public void close() {
    		try {
    			if (rs != null)
    				rs.close();
    			if (st != null)
    				st.close();
    			if (con != null)
    				con.close();
    		} catch (SQLException e) {
    
    			e.printStackTrace();
    		}
    	}
    }
    

    管理员查看成绩代码实现

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'selectblurScore.jsp' starting page</title>
        
    	<meta http-equiv="pragma" content="no-cache">
    	<meta http-equiv="cache-control" content="no-cache">
    	<meta http-equiv="expires" content="0">    
    	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    	<meta http-equiv="description" content="This is my page">
    	<link rel="stylesheet" href="css/bootstrap.min.css">
    
     <style type="text/css">
    .div_list {
    	width: 75%;
    	margin: 0 auto;
    	margin-top: 50px;
    	margin-left: 20%;
    
    }
    #tableClass{
    margin:0 auto;
    width: 100%
    
    }
    .form1{
    	width: 200px;
    	display: inline-block
    }
    font {
    	color: red;
    	font-weight: bold;
    	text-align: center;
    }
    table{
    margin:0 auto;
    
    }
    table tr td{
    text-align: center;
    width:150px;
    height:40px;
    }
    a{
    text-decoration: none;
    cursor:pointer;
    
    }
    </style>
    <script type="text/javascript">
    
    function page(s){
    	var frm=document.getElementById("frm");
    	var pageNo=document.getElementById("pageNo");
    	pageNo.value=s;
    	frm.submit();
    }
    </script>
      </head>
      
      <body>
      <form action="ServletSearchScore" method="post" id="frm">
        <div class="div_list">
       课程名:<input type="text" class="form-control form1"   name="cosName" value="${score.getCourseName() }" />&nbsp;&nbsp;&nbsp;&nbsp;
      	学&nbsp;&nbsp;&nbsp;&nbsp;号:<input type="text"  class="form1 form-control" name="stuNum" value="${score.getStuNum() }" />&nbsp;&nbsp;&nbsp;&nbsp;
      	姓&nbsp;&nbsp;&nbsp;&nbsp;名:<input type="text"  class="form1 form-control" name="stuName" value="${score.getStuName() }" /><br/><br/>
      	班&nbsp;&nbsp;&nbsp;&nbsp;级:<input type="text"  class="form1 form-control" name="stuClass" value="${score.getStuClass() }" />&nbsp;&nbsp;
      	专&nbsp;&nbsp;&nbsp;&nbsp;业:<input type="text"  class="form1 form-control" name="major" value="${score.getMajor() }" /> &nbsp;&nbsp;
    		<input type="submit" class="btn btn-primary" value="查询" /><br/><br/>
    		<div class=" panel panel-default">
    			<div class="panel-heading">成绩信息</div>
    		<table class="table panel-body" id="tableClass">
    			<tr>
    				<td>学号</td>
    				<td>姓名</td>
    				<td>班级</td>
    				<td>科目</td>
    				<td>成绩</td>
    				<td>专业</td>
    				<td>操作</td>
    			</tr>
    			<c:forEach var="list" items="${list.pbjs }">
    			<tr>
    				<td>${list.getStuNum() }</td>
    				<td>${list.getStuName() }</td>
    				<td>${list.getStuClass() }</td>
    				<td>${list.getCourseName() }</td>
    				<td>${list.getScoreGrade() }</td>
    				<td>${list.getMajor() }</td>
    				<td><a href="ServletSelectScore?scoreID=${list.getScoreID() }">修改</a>&nbsp;&nbsp;&nbsp;<a href="ServletDeleteScore?scoreID=${list.getScoreID() }" onclick="return confirm('是否确认删除?')">删除</a></td>
    				
    			</tr>
    			</c:forEach>
    			<tr>
    					<td colspan="7">
    						<a onclick="page(1);">首页</a> 
    						<c:if test="${list.isPrevious() }">
    							<a onclick="page(${list.pageNo-1});">上一页</a>
    						</c:if> 
    						<c:if test="${(list.pageNo+1)<list.totalPage }">
    						<a onclick="page(${list.pageNo+1 });">${list.pageNo+1 }</a>
    						</c:if> 
    						<c:if test="${(list.pageNo+2)<list.totalPage }">
    						<a onclick="page(${list.pageNo+2 });">${list.pageNo+2 }</a>
    						</c:if> 
    						<c:if test="${list.isNext() }">
    							<a onclick="page(${list.pageNo+1});">下一页</a>
    						</c:if> 
    						<a onclick="page(${list.totalPage });">最后一页</a> <br /> 
    						跳转到:<input class="form-control form1"
    						id="pageNo" type="text" name="pageNo" value="${list.pageNo }" />
    						每页记录数:<input type="text" name="pageCount" class="form-control form1"
    						value="${list.pageCount }" /> 
    						
    						<input
    						type="submit" class="btn btn-primary" value="跳转" /> 共有${list.totalPage }页</td>
    				</tr>
    		</table>
    	</div>
    	</div>
    	</form>
      </body>
    </html>
    

     

    展开全文
  • JavaWeb学生成绩管理系统

    万次阅读 多人点赞 2018-07-06 21:12:05
    基于JavaWeb开发的学生成绩,使用MyEclipse2014开发,连接MySQL数据库,存储学生的身份信息、成绩,管理员的身份信息,课程信息。功能说明:学生注册。学生身份:跳转到学生登录界面,点击查询成绩按钮,以表格的形式...

    基于JavaWeb开发的学生成绩,使用MyEclipse2014开发,连接MySQL数据库,存储学生的身份信息、成绩,管理员的身份信息,课程信息。

    功能说明:

    学生注册。学生身份:跳转到学生登录界面,点击查询成绩按钮,以表格的形式在该页面显示该学生所有成绩。管理员身份:进入功能选择页面,以列表形式显示超链接,录入成绩、修改成绩、查询成绩。录入成绩页面中,管理员输入学号、课程号和成绩进行录入,点击添加跳出弹框提示是否录入成功;查询成绩界面,可选择按学号查询和按课程号查询,在页面下方以表格形式显示成绩;修改成绩界面,先按学号或课程号查询出成绩,显示当前成绩,可进行修改、删除操作,跳出弹框显示是否修改成功。

    1.编写JavaBean,保存信息:

    1.1学生信息Student.java

    package beans;
    
    public class Student {
    	private String studentid;
    	private String studentname;
    	private String password;
    	public Student(){}
    	public Student(String studentid,String studentname,String password){
    		this.studentid=studentid;
    		this.studentname=studentname;
    		this.password=password;
    	}
    	public String getStudentid(){
    		return studentid;
    	}
    	public void setStudentid(String studentid){
    		this.studentid=studentid;
    	}
    	public String getStudentname(){
    		return studentname;
    	}
    	public void setStudentname(String studentname){
    		this.studentname=studentname;
    	}
    	public String getPassword(){
    		return password;
    	}
    	public void setPassword(String password){
    		this.password=password;
    	}
    }

    1.2管理员信息Admin.java

    package beans;
    
    public class Admin {
    	private String adminid;
    	private String adminname;
    	private String password;
    	public Admin(){}
    	public Admin(String adminid,String adminname,String password){
    		this.adminid=adminid;
    		this.adminname=adminname;
    		this.password=password;
    	}
    	public String getAdminid(){
    		return adminid;
    	}
    	public void setAdminid(String studentid){
    		this.adminid=studentid;
    	}
    	public String getAdminname(){
    		return adminname;
    	}
    	public void setAdminname(String studentname){
    		this.adminname=studentname;
    	}
    	public String getPassword(){
    		return password;
    	}
    	public void setPassword(String password){
    		this.password=password;
    	}
    }

    1.3课程信息Course.java

    package beans;
    
    public class Course {
    	private String courseid;
    	private String coursename;
    	public String getCourseid() {
    		return courseid;
    	}
    	public void setCourseid(String courseid) {
    		this.courseid = courseid;
    	}
    	public String getCoursename() {
    		return coursename;
    	}
    	public void setCoursename(String coursename) {
    		this.coursename = coursename;
    	}
    
    }

    1.4学生分数Score.java

    package beans;
    
    public class Score {
    	private String studentid;
    	private String studentname;
    	private String courseid;
    	private String coursename;
    	private String score;
    	public Score(){}
    	public Score(String studentid,String courseid,String coursename,String score){
    		this.studentid=studentid;
    		this.courseid=courseid;
    		this.coursename=coursename;
    		this.score=score;
    	}
    	public String getStudentid(){
    		return studentid;
    	}
    	public void setStudentid(String studentid){
    		this.studentid=studentid;
    	}
    	public String getScore(){
    		return score;
    	}
    	public void setScore(String score){
    		this.score=score;
    	}
    	public String getStudentname() {
    		return studentname;
    	}
    	public void setStudentname(String studentname) {
    		this.studentname = studentname;
    	}
    	public String getCourseid() {
    		return courseid;
    	}
    	public void setCourseid(String courseid) {
    		this.courseid = courseid;
    	}
    	public String getCoursename() {
    		return coursename;
    	}
    	public void setCoursename(String coursename) {
    		this.coursename = coursename;
    	}
    }

    2.编写DAO,连接数据库,并定义相关查询分数、增加成绩、删除成绩方法

    2.1CourseDAO.java。通过课程号查找课程名方法。

    package DAO;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import beans.Course;
    import beans.Student;
    
    public class CourseDAO {
    	private static Connection conn=null;
    	
    	public static void initConnection() throws Exception{//建立连接
    		Class.forName("com.mysql.jdbc.Driver");
    	    conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","7277991");
    	}
    	
    	public static Course findclasses(String courseid) throws Exception{//查找课程
    	initConnection();
    	Statement state =null;
    	ResultSet rs = null;
    	Course course=new Course();
    	try{
    	String sql = "select * from course where courseid = '"+courseid+"'";
    	state = conn.createStatement();
    	rs=state.executeQuery(sql);
    	if(rs.next()){
    		course.setCourseid(rs.getString("courseid"));
    		course.setCoursename(rs.getString("coursename"));
    	}
    	}catch(Exception e){
    		e.printStackTrace();
    		}finally{
    		closeConnection();
    	}
    	return course;
    	}
    	
    	public static void closeConnection() throws Exception{//断开连接
    		conn.close();
    	}
    }

    2.2UserDAO.java。登录时通过学号或管理员账号查找学生或管理员进行登录验证。注册时学生信息增加。

     package DAO;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import beans.Admin;
    import beans.Student;
    
    public class UserDAO {
    	private static Connection conn=null;
    	
    	public static void initConnection() throws Exception{//建立连接
    		Class.forName("com.mysql.jdbc.Driver");
    	    conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","7277991");
    	}
    	
    	public static Student findstudent(String studentid) throws Exception{//查找学生
    	initConnection();
    	Statement state =null;
    	ResultSet rs = null;
    	Student student=new Student();
    	try{
    	String sql = "select * from student where studentid = '"+studentid+"'";
    	state = conn.createStatement();
    	rs=state.executeQuery(sql);
    	if(rs.next()){
    		student.setStudentid(rs.getString("studentid"));
    		student.setPassword(rs.getString("password"));
    		student.setStudentname(rs.getString("studentname"));
    	}
    	}catch(Exception e){
    		e.printStackTrace();
    		}finally{
    		closeConnection();
    	}
    	return student;
    	}
    	
    	public static boolean addStudent(Student student) {//增加学生
    	    boolean flag=false;
    	    int i=0;
    			try {
    				initConnection();
    			} catch (Exception e1) {
    				// TODO Auto-generated catch block
    				e1.printStackTrace();
    			}
    	    Statement state =null;
    	    String sql= "insert into student (studentid,studentname,password) values('"+student.getStudentid()+"','"+student.getStudentname()+"','"+student.getPassword()+"')"; 
    	    try {
    	    	state = conn.createStatement();
    	    	i=state.executeUpdate(sql);
    	      if(i>0){
    	        flag=true;
    	      }
    	    }catch (SQLException e) {
    	      e.printStackTrace();
    	    }
    	    try {
    			closeConnection();
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	    return flag;
    	  }
    
    	
    	public static Admin findadmin(String adminid) throws Exception{//查找管理员
    	initConnection();
    	Statement state =null;
    	ResultSet rs = null;
    	Admin admin=new Admin();
    	try{
    	String sql = "select * from admin where adminid = '"+adminid+"'";
    	state = conn.createStatement();
    	rs=state.executeQuery(sql);
    	if(rs.next()){
    		admin.setAdminid(rs.getString("adminid"));
    		admin.setPassword(rs.getString("password"));
    		admin.setAdminname(rs.getString("adminname"));
    	}
    	}catch(Exception e){
    		e.printStackTrace();
    		}finally{
    		closeConnection();
    	}
    	return admin;
    	}
    	
    	public static void closeConnection() throws Exception{//断开连接
    		conn.close();
    	}
    }

    2.3ScoreDAO.java。通过学号或课程号查找成绩。增加、删除、修改成绩等方法。

    package DAO;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;
    import beans.Score;
    import beans.Student;
    
    public class ScoreDAO {
    	private static Connection conn=null;
    	
    	public static void initConnection() throws Exception{//建立连接
    		Class.forName("com.mysql.jdbc.Driver");
    	    conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","7277991");
    	}
    	
    	public static ArrayList<Score> findscore1(String studentid) throws Exception{//按学号查找成绩
    	initConnection();
    	Statement state =null;
    	ResultSet rs = null;
    	ArrayList<Score> list=new ArrayList<Score>();
    	try{
    	String sql = "select score.*,student.studentname,course.coursename from score,student,course where score.studentid=student.studentid and score.courseid=course.courseid and score.studentid = '"+studentid+"'";
    	state = conn.createStatement();
    	rs=state.executeQuery(sql);
    	while(rs.next()){
    		Score score=new Score();
    		score.setStudentid(rs.getString("studentid"));
    		score.setStudentname(rs.getString("studentname"));
    		score.setCourseid(rs.getString("courseid"));
    		score.setCoursename(rs.getString("coursename"));
    		score.setScore(rs.getString("score"));
    		list.add(score);
    	}
    	}catch(Exception e){
    		e.printStackTrace();
    		}finally{
    		closeConnection();
    	}
    	return list;
    	}
    	
    	public static ArrayList<Score> findscore2(String courseid) throws Exception{//按课程号查找成绩
    	initConnection();
    	Statement state =null;
    	ResultSet rs = null;
    	ArrayList<Score> list=new ArrayList<Score>();
    	try{
    	String sql = "select score.*,student.studentname,course.coursename from score,student,course where score.studentid=student.studentid and score.courseid=course.courseid and score.courseid = '"+courseid+"'";
    	state = conn.createStatement();
    	rs=state.executeQuery(sql);
    	while(rs.next()){
    		Score score=new Score();
    		score.setStudentid(rs.getString("studentid"));
    		score.setStudentname(rs.getString("studentname"));
    		score.setCourseid(rs.getString("courseid"));
    		score.setCoursename(rs.getString("coursename"));
    		score.setScore(rs.getString("score"));
    		list.add(score);
    	}
    	}catch(Exception e){
    		e.printStackTrace();
    		}finally{
    		closeConnection();
    	}
    	return list;
    	}
    	
    	public static int addscore(String studentid,String courseid,String score) throws Exception{//增加成绩
    	initConnection();
    	Statement state =null;
    	int rs = 0;
    	try{
    	String sql = "insert into score(studentid,courseid,score) values('"+studentid+"','"+courseid+"','"+score+"')";
    	state = conn.createStatement();
    	rs=state.executeUpdate(sql);
    	}catch(Exception e){
    		e.printStackTrace();
    		}finally{
    		closeConnection();
    	}
    	return rs;
    	}
    	
    	public static int updatescore(String studentid,String courseid,String score) throws Exception{//修改成绩
    	initConnection();
    	Statement state =null;
    	int rs = 0;
    	try{
    	String sql = "update score set score='"+score+"' where studentid = '"+studentid+"' and courseid='"+courseid+"'";
    	state = conn.createStatement();
    	rs=state.executeUpdate(sql);
    	}catch(Exception e){
    		e.printStackTrace();
    		}finally{
    		closeConnection();
    	}
    	return rs;
    	}
    	
    	public static int deletescore(String studentid,String courseid) throws Exception{//删除成绩
    	initConnection();
    	Statement state =null;
    	int rs = 0;
    	try{
    	String sql = "delete from score where studentid = '"+studentid+"' and courseid='"+courseid+"'";
    	state = conn.createStatement();
    	rs=state.executeUpdate(sql);
    	}catch(Exception e){
    		e.printStackTrace();
    		}finally{
    		closeConnection();
    	}
    	return rs;
    	}
    	
    	public static void closeConnection() throws Exception{//断开连接
    		conn.close();
    	}
    }
    

    3.jsp及相关Servlet的编写

    3.1登录界面的编写

    index.jsp

      <body>
      <div id="top"><p>欢迎登录学生成绩管理系统</p></div>
      <div id="index">
        <form action="servlet\login" method="post">
        <p> 账号<input name="userid" type="text" onBlur="f0()"/><br></p>
       <p> 密码<input name="password" type="password" onBlur="f1()"/><br></p>
        <p><input name="user" type="radio" value="student" checked>学生
        <input name="user" type="radio" value="administrator">管理员<br></p>
        <p><input type="submit" value="登录"></p>
        </form>
        <p><a href="register.jsp">没有账号?点击注册吧</a></p>
        </div>
      </body>

    用CSS简单美化后登录界面长这样


    登录界面的Servlet,login.java

    package servlets;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import DAO.UserDAO;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import beans.Admin;
    import beans.Student;
    
    public class login extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		request.setCharacterEncoding("UTF-8");
    		String userid = request.getParameter("userid");//获取账号
    		String password = request.getParameter("password");//获取密码
    		String user=request.getParameter("user");//判断用户身份,学生还是管理员
    		response.setContentType("text/html;charset=gb2312");
    		PrintWriter out = response.getWriter();
    		if(user==null||password==null){//未输入密码
    			System.out.println("登录失败!");
    			out.print("<script>alert('登录失败!请输入账号和密码');"
    					+ "window.location.href='../index.jsp'</script>");
    		}else{
    			if(user.equals("student")){//学生登录时
    				try {
    					Student student=UserDAO.findstudent(userid);
    					if(student.getPassword().equals(password)){
    						HttpSession session = request.getSession();
    						session.setAttribute("student",student);
    						System.out.println("登录成功!");
    						response.sendRedirect("../stu_showscore.jsp");
    					}else{
    						System.out.println("登录失败!");
    						out.print("<script>alert('登录失败!请确认账号和密码');"
    								+ "window.location.href='../index.jsp'</script>");
    					}
    				} catch (Exception e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}else{//管理员登录时
    				try {
    					Admin admin=UserDAO.findadmin(userid);
    					if(admin.getPassword().equals(password)){
    						HttpSession session = request.getSession();
    						session.setAttribute("admin",admin);
    						System.out.println("登录成功!");
    						response.sendRedirect("../admin_menu.jsp");
    					}else{
    						System.out.println("登录失败!");
    						out.print("<script>alert('登录失败!请确认账号和密码');"
    								+ "window.location.href='../index.jsp'</script>");
    					}
    				} catch (Exception e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    					
    			}
    		}
    		
    	}
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		doGet(request,response);
    		
    	}
    
    }
    
    3.2注册界面

    注册界面的jsp,利用JavaScript对输入的账号、密码等输入信息进行简单验证,利用Servlet对输入的账号是否已存在、两次密码是否一致进行验证。

     <body>
      <script type="text/javascript">
        var emt = document.getElementsByTagName("em");
        var t=1;
         function  f0(){
         if(register.userid.value.length<6||register.userid.value.length>12){
                    emt[0].innerHTML="账号长度6-12位!";
                    t=0;
                }
          else{
               emt[0].innerHTML="";
               t=1;
          }
        } 
        function  f1(){
         if(register.username.value.length<1||register.username.value.length>4){
                    emt[1].innerHTML="用户名长度1-4位!";
                    t=0;
                }
          else{
               emt[1].innerHTML="";
               t=1;
          }
        } 
        function  f2(){
            var mm=/^[0-9a-zA-Z]{6,12}$/;
         var flag=mm.test(register.password1.value);
         if(!flag){
                    emt[2].innerHTML="密码要求长度6-12位;字母数字的组合,不能有其他字符!";
                    t=0;
                }
          else{
               emt[2].innerHTML="";
               t=1;
          }
        } 
        function  f3(){
           if(register.password1.value != register.password2.value){
                emt[3].innerHTML="密码两次应一致!";
                    t=0;
           }else{
               emt[3].innerHTML="";
               t=1;
          }
        }
    </script>
       <div id="top"><p>欢迎登录学生成绩管理系统</p></div>
         <div id="index">
         <form name="register" action="servlet\register" method="post">
       <p> 账号<input name="userid" type="text" onBlur="f0()"/><br><em></em></p>
       <p> 姓名<input name="username" type="text" onBlur="f1()"/><br><em></em></p>
       <p> 密码<input name="password1" type="password" onBlur="f2()"/><br><em></em></p>
        <p>确认密码<input name="password2" type="password" onBlur="f3()"/><br><em></em></p>
        <p><input type="submit" value="确认"></p>
        </form>
        <p><a href="index.jsp">返回登录</a></p>
        </div>
      </body>

    注册页面的提示效果


    注册界面的Servlet,register.java

    package servlets;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import DAO.UserDAO;
    import beans.Student;
    
    public class register extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		request.setCharacterEncoding("UTF-8");
    		String userid = request.getParameter("userid");//获取账号
    		String password1 = request.getParameter("password1");//获取第一次输入的密码
    		String username = request.getParameter("username");//获取姓名
    		String password2 = request.getParameter("password2");//获取第二次输入的密码
    		response.setContentType("text/html;charset=gb2312");
    		PrintWriter out = response.getWriter();
    		System.out.print(userid);
    		System.out.print(username);
    		System.out.print(password1);
    		System.out.print(password2);
    		if(userid!=null&&username!=null&&password1!=null&&password2!=null){//页面信息是否填写完整
    			if(password1.equals(password2)){//两次输入的密码一致
    				try {
    					Student student = UserDAO.findstudent(userid);
    					if(student.getStudentid()!=null){//账号存在
    						out.print("<script>alert('该账号存在,注册失败!');"
    								+ "window.location.href='../register.jsp'</script><");
    					}else{
    						student.setStudentid(userid);
    						student.setStudentname(username);
    						student.setPassword(password1);
    						boolean flag=UserDAO.addStudent(student);
    						if(flag){
    							out.print("<script>alert('注册成功!现在去登录');"
    									+ "window.location.href='../index.jsp'</script>");
    						}else{
    							out.print("<script>alert('注册失败!稍后重试');"
    									+ "window.location.href='../register.jsp'</script>");
    						}
    					}
    				} catch (Exception e) {
    			// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}else{
    				out.print("<script>alert('两次密码不一致,请确认');"
    						+ "window.location.href='../register.jsp'</script>");
    		}
    		}else{
    			out.print("<script>alert('请将信息填写完整');"
    					+ "window.location.href='../register.jsp'</script>");
    		}
    	}
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		doGet(request,response);
    	}
    
    }
    

    3.3管理员功能页面

    3.3.1管理员登录成功菜单,登录成功后该页面有三个超链接,分别指向具体的功能页面

    3.3.2管理员查询成绩页面

    成绩查询有两种形式:按学号或按课程号查询,利用表单中的radio进行选择。在servlet中查询,并把结果存到Session中,并在jsp页面判断Session中是否有值,若有,则以表格的形式显示,导入beans包,调用类中的get方法获得相应的值。

    <body>
      <div id="top"><p>学生成绩管理系统-查询成绩</p></div>
      <div id="admin">
        <form action="servlet\showscore" method="post">
        <input name="func" type="hidden" value="show">选择成绩查询方式:
        <input name="flag" type="radio" value="course" checked>课程号查询
        <input name="flag" type="radio" value="stu">学号查询<br>
        <input name="id" type="text">
        <input type="submit" value="查询">
        </form>
        </div>
         <table align="center" cellpadding="15" cellspacing="15">
        <%
        ArrayList<Score> list=(ArrayList<Score>) session.getAttribute("score"); 
        String flag=(String) session.getAttribute("flag");
        if(list!=null&&list.size()!=0){
        if(flag.equals("stu")){%>
            <tr>
         	<td colspan="4" align="center">学号为<%=list.get(0).getStudentid() %>的学生成绩如下</td>
         	</tr>
        <% }else{%>
        <tr>
         	<td colspan="4" align="center">  课程号为<%=list.get(0).getCourseid()%>的全体学生成绩如下</td>
         	</tr>
        <%}%>
        <tr>
             <td>学生学号</td>
             <td>学生姓名</td>
             <td>课程名</td>
             <td>成绩</td>
         	</tr>
        <%
                for(int j=0;j<list.size();j++){%>
                <tr>
                <td><%=list.get(j).getStudentid() %></td>
                <td><%=list.get(j).getStudentname()%></td>
                <td><%=list.get(j).getCoursename()%></td>
                <td><%=list.get(j).getScore()%></td>
                </tr>
    			         <% }}%>
    			         <tr>
    	<td colspan="4" align="center">
    	<form action="servlet\exit" method="post">
    	<input name="exit" type="hidden" value="score">
        <input type="submit" value="返回">
        </form>
    	</td>
    	</tr>
    	</table>
      </body>

    查询结果显示如下


    查询成绩操作的servlet如下

    package servlets;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import DAO.CourseDAO;
    import DAO.ScoreDAO;
    import DAO.UserDAO;
    import beans.Course;
    import beans.Score;
    import beans.Student;
    
    public class showscore extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		request.setCharacterEncoding("UTF-8");
    		response.setContentType("text/html;charset=gb2312");
    		String flag=request.getParameter("flag");//按学号还是课程号查找
    		String id=request.getParameter("id");//获取的id值
    		String func=request.getParameter("func");//从哪个页面传来的表单
    		PrintWriter out = response.getWriter();
    		HttpSession session = request.getSession();
    		if(flag.equals("stu")){//按学号查找成绩
    			session.setAttribute("flag", flag);
    			try {
    				Student student=UserDAO.findstudent(id);
    				if(student.getStudentid()!=null){//输入的学号存在
    					try {
    						ArrayList<Score> list=(ArrayList<Score>) ScoreDAO.findscore1(id);
    						session.setAttribute("score", list); 
    						if(func.equals("show"))//从admin_showscore.jsp传来的值
    							response.sendRedirect("../admin_showscore.jsp");
    						else//从admin_updatescore.jsp传来的值
    							response.sendRedirect("../admin_updatescore.jsp");
    					}catch (Exception e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    					}
    				}else{//学号不存在
    					if(func.equals("show")){
    					out.print("<script>alert('不存在该学生');"
    							+ "window.location.href='../admin_showscore.jsp'</script>");
    					}else{
    						out.print("<script>alert('不存在该学生');"
    								+ "window.location.href='../admin_updatescore.jsp'</script>");
    					}
    				}
    			} catch (Exception e1) {
    				// TODO Auto-generated catch block
    				e1.printStackTrace();
    			}
    					
    		}else{//按课程号查找成绩
    			try {
    				Course course=CourseDAO.findclasses(id);
    				if(course.getCourseid()!=null){
    					ArrayList<Score> list;
    					try {
    						session.setAttribute("flag", flag);
    						list = (ArrayList<Score>) ScoreDAO.findscore2(id);
    						session.setAttribute("score", list); 
    						if(func.equals("show"))
    							 response.sendRedirect("../admin_showscore.jsp");
    						 else
    							 response.sendRedirect("../admin_updatescore.jsp");
    					} catch (Exception e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
    				}else{
    					if(func.equals("show")){
    						out.print("<script>alert('不存在该课程');"
    								+ "window.location.href='../admin_showscore.jsp'</script>");
    						}else{
    							out.print("<script>alert('不存在该课程');"
    									+ "window.location.href='../admin_updatescore.jsp'</script>");
    						}
    					
    				}
    			} catch (Exception e1) {
    				// TODO Auto-generated catch block
    				e1.printStackTrace();
    			}
    			
    			 
    		}
    	}
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    				doGet(request,response);
    	}
    
    }
    

    3.3.3管理员录入成绩页面

    管理员需输入学生号、课程号、成绩,利用form表单,把其提交到servlet中,在servlet中要判断学生号和课程号是否在数据库中存在,不存在则跳出相应的警告框。

      <body>
      <div id="top"><p>学生成绩管理系统-录入成绩</p></div>
      <div id="admin">输出下列信息进行分数录入</div>
      <table align="center" cellpadding="15" cellspacing="15">
      <tr>
             <td>学生学号</td>
             <td>课程号</td>
             <td>成绩</td>
         	</tr>
       <tr>
       <form action="servlet\addscore" method="post">
       <td><input type="text" name="studentid"></td>
       <td><input type="text" name="courseid"></td>
       <td><input type="text" name="score"></td>
       </tr>
       <tr>
       <td colspan="3" align="center"><input type="submit" value="添加"></td>
       </form>
    	</tr>
    	<tr>
    	<td colspan="3" align="center">
    	<form action="servlet\exit" method="post">
    	<input name="exit" type="hidden" value="score">
        <input type="submit" value="返回">
        </form></td>
    	</tr>
        </table>
      </body>

    页面如下


    录入成绩的servlet

    package servlets;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import DAO.CourseDAO;
    import DAO.ScoreDAO;
    import DAO.UserDAO;
    import beans.Course;
    import beans.Score;
    import beans.Student;
    
    public class addscore extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		request.setCharacterEncoding("UTF-8");
    		response.setContentType("text/html;charset=gb2312");
    		String studentid=request.getParameter("studentid");//获取学号
    		String courseid=request.getParameter("courseid");//获取课程号
    		String score=request.getParameter("score");//获取成绩
    		PrintWriter out = response.getWriter();
    		try {
    			Student student=UserDAO.findstudent(studentid);//查找学生
    			Course course=CourseDAO.findclasses(courseid);//查找课程
    			System.out.print(student.getStudentid());
    			if(student.getStudentid()!=null){//存在该学生
    				if(course.getCourseid()!=null){//存在该课程
    				 try {
    			        	int i=ScoreDAO.addscore(studentid,courseid,score);
    						if(i!=0){
    							out.print("<script>alert('添加成功');"
    									+ "window.location.href='../admin_addscore.jsp'</script>");
    						}else{
    							out.print("<script>alert('添加失败');"
    									+ "window.location.href='../admin_addscore.jsp'</script>");
    						}
    					} catch (Exception e1) {
    						// TODO Auto-generated catch block
    						e1.printStackTrace();
    					}
    				}else{
    					out.print("<script>alert('课程不存在,添加失败');"
    							+ "window.location.href='../admin_addscore.jsp'</script>");
    				}
    			}else{
    				out.print("<script>alert('学生不存在,添加失败');"
    						+ "window.location.href='../admin_addscore.jsp'</script>");
    			}
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		doGet(request,response);
    	}
    
    }
    

    3.3.4管理员修改、删除成绩

    管理员首先通过学号或课程号查询成绩,查询成绩的servlet是3.3.2中的servlet,在提交表单时,定义了一个名为func的隐藏表单,判断是哪个页面传来的查询操作,并在查询结束后,返回到该页面,在本页面显示成绩,成绩为一个输入框,且在每行成绩后有修改和删除两个按钮。两个按钮分别对应两个表单,提交表单时把隐藏表单中的相应学生信息传入servlet中处理。

    页面jsp代码

    <body>
        <div id="top"><p>学生成绩管理系统-修改成绩</p></div>
      <div id="admin">
        <form action="servlet\showscore" method="post">
        <input name="func" type="hidden" value="update">选择方式进行查询修改
        <input name="flag" type="radio" value="course" checked>课程号查询
        <input name="flag" type="radio" value="stu">学号查询<br>
        <input name="id" type="text">
        <input type="submit" value="查询">
        </form>
        </div>
        <table align="center" cellpadding="15" cellspacing="15">
        <%
        ArrayList<Score> list=(ArrayList<Score>)session.getAttribute("score"); 
        String flag=(String) session.getAttribute("flag");
        if(list!=null&&list.size()!=0){
        
        if(flag.equals("stu")){%>
            <tr>
         	<td colspan="6" align="center">学号为<%=list.get(0).getStudentid() %>的学生成绩如下</td>
         	</tr>
        <% }else{%>
        <tr>
         	<td colspan="6" align="center">  课程号为<%=list.get(0).getCourseid()%>的全体学生成绩如下</td>
         	</tr>
      <br>
        <%}%><tr>
             <td>学生学号</td>
             <td>学生姓名</td>
             <td>课程名</td>
             <td>成绩</td>
             <td>修改</td>
             <td>是否删除</td>
         	</tr>
        <%
                for(int j=0;j<list.size();j++){%>
                
                <tr>
                <td><%=list.get(j).getStudentid() %></td>
                <td><%=list.get(j).getStudentname()%></td>
                <td><%=list.get(j).getCoursename()%></td>
                <form action="servlet\updatescore" method="post">
                <input type="hidden" name="studentid" value="<%=list.get(j).getStudentid() %>">
                <input type="hidden" name="courseid" value="<%=list.get(j).getCourseid() %>">
                <td><input name="score" type="text" value="<%=list.get(j).getScore()%>"></td>
                <td><input type="submit" value="修改"></td>
                </form>
                <form action="servlet\deletescore" method="post">
                <input type="hidden" name="studentid" value="<%=list.get(j).getStudentid() %>">
                <input type="hidden" name="courseid" value="<%=list.get(j).getCourseid() %>">
                <td><input type="submit" value="删除"></td>
                </form>
                </tr>
    			<%}
            } %>
            <tr>
    	<td colspan="6" align="center">
    	<form action="servlet\exit" method="post">
    	<input name="exit" type="hidden" value="score">
        <input type="submit" value="返回">
        </form>
    	</td>
    	</tr>
            </table>
    </body>

    页面如下


    修改成绩的servlet代码

    package servlets;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import DAO.ScoreDAO;
    import beans.Score;
    
    public class updatescore extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		request.setCharacterEncoding("UTF-8");
    		response.setContentType("text/html;charset=gb2312");
    		String studentid=request.getParameter("studentid");//获取学号
    		String courseid=request.getParameter("courseid");//获取课程号
    		String score=request.getParameter("score");//获取成绩
    		int i = 0;
    		PrintWriter out = response.getWriter();
    		HttpSession session = request.getSession();
            ArrayList<Score> list = (ArrayList<Score>) session.getAttribute("score");
            try {
    			i=ScoreDAO.updatescore(studentid,courseid,score);
    		} catch (Exception e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
             for(int j=0;j<list.size();j++){
                 if(list.get(j)==null){
                     list.remove(j);
                 }
                 if(list.get(j)!=null && list.get(j).getStudentid().equals(studentid)&&list.get(j).getCourseid().equals(courseid)){
                	     list.get(j).setScore(score);
                		 break;
                	 }
                 }
             if(i!=0){
            	 out.print("<script>alert('修改成功');"
     					+ "window.location.href='../admin_updatescore.jsp'</script>");
    			}else{
    				out.print("<script>alert('修改失败');"
    						+ "window.location.href='../admin_updatescore.jsp'</script>");
    			}
            
            //response.sendRedirect("../admin_updatescore.jsp");
    	}
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		doGet(request,response);
    	}
    
    }
    

    删除成绩的servlet

    package servlets;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import DAO.ScoreDAO;
    import beans.Score;
    
    public class deletescore extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		request.setCharacterEncoding("UTF-8");
    		response.setContentType("text/html;charset=gb2312");
    		String studentid=request.getParameter("studentid");//获取学号
    		String courseid=request.getParameter("courseid");//获取课程号
    		int i=0;
    		PrintWriter out = response.getWriter();
    		HttpSession session = request.getSession();
            ArrayList<Score> list = (ArrayList<Score>) session.getAttribute("score");
            try {
    			i=ScoreDAO.deletescore(studentid,courseid);//进行删除操作
    		} catch (Exception e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
             for(int j=0;j<list.size();j++){
                 if(list.get(j)==null){
                     list.remove(j);
                 }
                 if(list.get(j)!=null && list.get(j).getStudentid().equals(studentid)&&list.get(j).getCourseid().equals(courseid)){
                		 list.remove(j);
                		 break;
                	 }
                 }
             if(i!=0){
            	 out.print("<script>alert('删除成功');"
     					+ "window.location.href='../admin_updatescore.jsp'</script>");
             }else{
            	 out.print("<script>alert('删除失败');"
     					+ "window.location.href='../admin_updatescore.jsp'</script>");
             }
             
           // response.sendRedirect("../admin_updatescore.jsp");
    	}
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		doGet(request,response);
    	}
    
    }
    

    3.4学生页面

    学生在登录时,登录信息存储在session中,session中的学号以隐藏表单形式存在,学生点击查询成绩时,跳转到相应的servlet页面。与管理员查询成绩操作相同,就不赘述了。

    3.5返回、退出界面

    返回或登录时,利用表单传入servlet中进行操作,在session中把相应的session值进行清除再返回上个页面

    package servlets;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    public class exit extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		request.setCharacterEncoding("UTF-8");
    		response.setContentType("text/html;charset=gb2312");
    		String exit=request.getParameter("exit");
    		HttpSession session = request.getSession();
    		if(exit.equals("user")){
    			session.invalidate();
    			response.sendRedirect("../index.jsp");
    		}else{
    			session.removeAttribute("score");
    			response.sendRedirect("../admin_menu.jsp");
    		}
    	}
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		doGet(request,response);
    	}
    
    }
    





    
    
    展开全文
  • 学生成绩管理系统数据库设计--MySQL

    万次阅读 多人点赞 2020-06-18 13:02:04
    MySQL/SQL Server 数据库设计(学生成绩管理系统) 设计大纲 1. 项目背景及需求分析 1.1 项目背景 1.2 需求分析 1.2.1 信息需求 1.2.2 功能需求 1.2.3 安全性与完整性需求 2. 概念结构设计 2.1 抽象出系统实体 2.2 ...
  • 学生成绩管理系统学生成绩管理系统学生成绩管理系统学生成绩管理系统学生成绩管理系统学生成绩管理系统学生成绩管理系统学生成绩管理系统学生成绩管理系统学生成绩管理系统
  • 学生成绩管理学生成绩管理学生成绩管理学生成绩管理学生成绩管理学生成绩管理学生成绩管理学生成绩管理学生成绩管理
  • – 查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩 SELECT st.s_id, st.s_name, sc.c_id, sc.s_score FROM student st LEFT JOIN score sc ON sc.s_id=st.s_id LEFT JOIN course c ON c.c_id=sc.c...
  • 学生成绩管理系统jsp版学生成绩管理系统jsp版学生成绩管理系统jsp版学生成绩管理系统jsp版学生成绩管理系统jsp版学生成绩管理系统jsp版学生成绩管理系统jsp版学生成绩管理系统jsp版学生成绩管理系统jsp版
  • c#学生成绩管理系统c#学生成绩管理系统c#学生成绩管理系统c#学生成绩管理系统c#学生成绩管理系统c#学生成绩管理系统c#学生成绩管理系统c#学生成绩管理系统c#学生成绩管理系统
  • 学生成绩管理系统——JAVA

    万次阅读 多人点赞 2020-07-18 14:31:21
    学生成绩管理系统 1.简介 本学生成绩管理系统具有录入学生成绩、查询学生成绩、输出学 生按成绩的排名、输出学科的分数四个功能,其中后两个功能在“输出成绩”这一目录下。 此系统可以实现学生成绩管理的一些基本...
  • 学生成绩管理系统(C语言)

    万次阅读 多人点赞 2018-06-26 23:36:31
    一设计项目:学生成绩管理系统 二总体设计: 1程序设计组成框图: 学生成绩管理系统 输入学生成绩查看学生成绩及成绩 排序 通过学号查询学生成绩 统计成绩信息 通过学号修改学生成绩 添加学生成绩 通过学号...
  • MFC课程设计 --学生成绩管理系统

    万次阅读 多人点赞 2018-07-26 21:12:55
    MFC课程设计 ,C++课程设计 --学生成绩管理系统 ps:因为课设完成的过程大家都不太一样,以下的代码仅供学习一下在MFC下各个控件的用法,有问题欢迎留言讨论。     实验目的 使用MFC类库编制应用程序:按钮...
  • 学生成绩管理系统(基于文件的MFC) mfc学生成绩管理系统 C++学生成绩管理系统
  • 学生成绩管理系统设计》 二、实训目的 (1)掌握结构化程序设计的基本方法,基本掌握面向对象程序设计的基本思路和方法。 (2)掌握C++的基本概念和基础知识。 (3)通过训练能够读懂较为复杂的C++语言源程序...
  • 【Python课程设计】学生成绩管理系统

    万次阅读 多人点赞 2020-06-30 20:14:05
    【Python课程设计】学生成绩管理系统1、需求分析2、功能设计与分析1、使用数据库对数据进行存取(1)使用PyMySQL模块操作数据库对数据进行存取(2)创建数据库school,创建数据表student_sore、teacher_login(3)...
  • 课程设计:c++实现学生成绩管理系统

    万次阅读 多人点赞 2020-11-28 10:59:08
    学生成绩管理系统课程设计,作为计算机科学专业学生的一门必修课,印象非常深刻,上机,编码,写报告,答辩,最后很多人勉强完成了功课,但是却很少能学到东西,算是一种遗憾吧,即使我们毕业了,仍然会想回去再做一...
  • 学生成绩 pythonGiven students details, marks in 5 subjects and we have to find student's grade. 给学生详细信息,在5门科目中打分,我们必须找到学生的成绩。 In this program, we are taking student name,...
  • C++ 学生成绩管理系统

    万次阅读 多人点赞 2019-10-04 20:26:09
    用c++实现学生成绩管理系统,此系统可以提供成绩的录入,可以按学生成绩进行排名,求总分和平均分以及提供成绩查询功能等。 实现功能 提供成绩录入 统计每个学生的总分和平均分 按总分由大到小排出名次 提供成绩...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 257,028
精华内容 102,811
关键字:

学生成绩