精华内容
下载资源
问答
  • 系统概述 结构化查询语句SQL简介 三 学生管理信息系统设计 3.4系统配置 3.4.1软件配置 3.4.2硬件配置 3.5.1系统E-R图 3.5.2表/字段分析 3.6.3创建存储过程
  • 学生信息管理系统——C语言版

    万次阅读 多人点赞 2019-04-06 18:07:13
    1)查询学生信息 2)添加学生信息 3)修改学生信息 4)删除学生信息 5)刷新学生信息 6)保存学生信息 7)输出当前学生信息 2.题目要求: 1)使用结构体建立学生信息体制 2)实现七大基本功能 3)采用文件存储学生...

    一.题目分析:
    1.功能概述:
    1)查询学生信息
    2)添加学生信息
    3)修改学生信息
    4)删除学生信息
    5)刷新学生信息
    6)保存学生信息
    7)输出当前学生信息
    2.题目要求:
    1)使用结构体建立学生信息体制
    2)实现七大基本功能
    3)采用文件存储学生信息
    二.算法构造
    1.难点解析----对文件的操作
    1.1文件读取

    FILE * fp;
    	if ((fp = fopen(filename, "r")) == NULL) return 0;
    	//从文件读取信息 
    	while (fscanf(fp, "%s %s %s %d %d %d %d ", &stu[j].StudentId, &stu[j].StudentName, &stu[j].StudentAge, &stu[j].StudentSex, &stu[j].score[0], &stu[j].score[1], &stu[j].score[2]) == 7) {
    		j++;
    	}
    

    1.2文件写入

    FILE * fp;
    fp = fopen(filename, "w");
    	for (i = 0; i < n; i++){
    		fprintf(fp, "%s%s%d%c%.lf%.lf%.lf\n", stu[i].StudentId, stu[i].StudentName, stu[i].StudentAge, stu[i].StudentSex,
    			stu[i].score[0], stu[i].score[1], stu[i].score[2]);
    	}
    

    2.流程图
    在这里插入图片描述
    3.七大基本功能----函数实现
    3.1菜单函数:通过菜单建立用户与程序之间的交流

    void menu()/* 界面*/
    {
    	int num;
    	printf(" \n\n                    \n\n");
    	printf("  ******************************************************\n\n");
    	printf("  *                学生信息管理系统                    *\n \n");
    	printf("  ******************************************************\n\n");
    	printf("*********************系统功能菜单*************************       \n");
    	printf("     ----------------------   ----------------------   \n");
    	printf("     *********************************************     \n");
    	printf("     * 0.系统帮助及说明  * *  1.刷新学生信息   *     \n");
    	printf("     *********************************************     \n");
    	printf("     * 2.查询学生信息    * *  3.修改学生信息   *     \n");
    	printf("     *********************************************     \n");
    	printf("     * 4.增加学生信息    * *  5.按学号删除信息 *     \n");
    	printf("     *********************************************     \n");
    	printf("     * 6.显示当前信息    * *  7.保存当前学生信息*     \n");
    	printf("     ********************** **********************     \n");
    	printf("     * 8.退出系统        *                            \n");
    	printf("     **********************                            \n");
    	printf("     ----------------------   ----------------------                           \n");
    	printf("请选择菜单编号:");
    	scanf("%d", &num);
    	switch (num)
    	{
    	case 0:help(); break;
    	case 1:flush(); break;
    	case 2:seek(); break;
    	case 3:modify(); break;
    	case 4:insert(); break;
    	case 5:del(); break;
    	case 6:display(); break;
    	case 7:save(); break;
    	case 8:
    		k = 0; 
    		printf("即将退出程序!\n");
    		break;
    	default:printf("请在0-8之间选择\n");
    	}
    }
    

    3.2系统帮助与说明函数:适用于初次接触学生信息管理系统的用户参考

    void help()
    {
    	printf("\n0.欢迎使用系统帮助!\n");
    	printf("\n1.初次进入系统后,请先选择增加学生信息;\n");
    	printf("\n2.按照菜单提示键入数字代号;\n");
    	printf("\n3.增加学生信息后,切记保存;\n");
    	printf("\n4.谢谢您的使用!\n");
    }
    

    3.3刷新学生信息函数
    功能:调用刷新信息函数后,文件中再无学生信息

    int flush(){
    	char filename[LEN + 1];
    	int i = 0;
    	printf("请输入要刷新学生信息的文件名:\n");
    	scanf("%s", filename);
    	int j = 0;
    	FILE * fp;
    	if ((fp = fopen(filename, "r")) == NULL) return 0;
    	//从文件读取信息 
    	while (fscanf(fp, "%s %s %s %d %d %d %d ", &stu[j].StudentId, &stu[j].StudentName, &stu[j].StudentAge, &stu[j].StudentSex, &stu[j].score[0], &stu[j].score[1], &stu[j].score[2]) == 7) {
    		j++;
    	}
    	n = j;
    	printf("刷新成功!!!");
    	return n;
    }
    
    

    3.4查询学生信息函数
    功能:通过输入要查询的学生学号或者姓名,与系统中的学生信息进行对比,若相等,则输出该学生的基本信息;反之,则输出该学生在该管理系统中不存在
    查询方式:
    1)按照学号查询
    2)按照姓名查询

    void seek() /*查找*/
    {
    	int i, item, flag;
    	char s1[21]; /* 以姓名和学号最长长度+1为准*/
    	printf("------------------\n");
    	printf("-----1.按学号查询-----\n");
    	printf("-----2.按姓名查询-----\n");
    	printf("-----3.退出本菜单-----\n");
    	printf("------------------\n");
    	while (1)
    	{
    		printf("请选择子菜单编号:");
    		scanf("%d", &item);
    		flag = 0;
    		switch (item)
    		{
    		case 1:
    			printf("请输入要查询的学生的学号:\n");
    			scanf("%s", s1);
    			for (i = 0; i<n; i++)
    			if (strcmp(s1,stu[i].StudentId) == 0)
    			{
    				flag = 1;
    				printf("学生学号\t学生姓名\t年龄\t性别\tC语言成绩\t高等数学\t大学英语成绩\n");
    				printf("--------------------------------------------------------------------\n");
    				printf("%s\t%s\t%d\t%6\t%.1f\t%.1f\t%.1f\n", stu[i].StudentId,stu[i].StudentName,stu[i].StudentAge,stu[i].StudentSex,stu[i].score[0],stu[i].score[1],stu[i].score[2]);
    			}
    			if (0 == flag)
    				printf("该学号不存在!\n"); break;
    		case 2:
    			printf("请输入要查询的学生的姓名:\n");
    			scanf("%s", s1);
    			for (i = 0; i<n; i++)
    			if (strcmp(stu[i].StudentName, s1) == 0)
    			{
    				flag = 1;
    				printf("学生学号\t学生姓名\t年龄\t性别\tC语言成绩\t高等数学\t大学英语成绩\n");
    				printf("--------------------------------------------------------------------\n");
    				printf("%s\t%s\t%d\t%c\t%.1f\t%.1f\t%.1f\n", stu[i].StudentId, stu[i].StudentName, stu[i].StudentAge, stu[i].StudentSex, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
    			}
    			if (0 == flag)
    				printf("该姓名不存在!\n"); break;
    		case 3:return;
    		default:printf("请在1-3之间选择\n");
    		}
    	}
    }
    

    3.5修改学生信息
    功能:通过输入学号来选择要修改的该学号学生的信息内容,从而完成修改信息操作;

    //修改学生信息
    void modify() /*修改信息*/
    {
    	int i, item, num = -1;
    	char sex1, s1[LEN + 1], s2[LEN + 1]; /* 以姓名和学号最长长度+1为准*/
    	float score1;
    	printf("请输入要要修改的学生的学号:\n");
    	scanf("%s", s1);
    	for (i = 0; i < n; i++){
    		if (strcmp(stu[i].StudentId, s1) == 0){/*比较字符串是否相等*/
    			num = i;
    			printf("------------------\n");
    			printf("1.修改姓名\n");
    			printf("2.修改年龄\n");
    			printf("3.修改性别\n");
    			printf("4.修改C语言成绩\n");
    			printf("5.修改高等数学成绩\n");
    			printf("6.修改大学英语成绩\n");
    			printf("7.退出本菜单\n");
    			printf("------------------\n");
    			while (1)
    			{
    				printf("请选择子菜单编号:");
    				scanf("%d", &item);
    				switch (item)
    				{
    				case 1:
    					printf("请输入新的姓名:\n");
    					scanf("%s", s2);
    					strcpy(stu[num].StudentName, s2);
    					break;
    				case 2:
    					printf("请输入新的年龄:\n");
    					scanf("%d", stu[num].StudentAge);
    					break;
    				case 3:
    					printf("请输入新的性别:\n");
    					scanf("%s", &sex1);
    					stu[i].StudentSex = sex1;
    					break;
    				case 4:
    					printf("请输入新的C语言成绩:\n");
    					scanf("%f", &score1);
    					stu[num].score[0] = score1;
    					break;
    				case 5:
    					printf("请输入新的高等数学成绩:\n");
    					scanf("%f", &score1);
    					stu[num].score[1] = score1;
    					break;
    				case 6:
    					printf("请输入新的大学英语成绩:\n");
    					scanf("%f", &score1);
    					stu[num].score[2] = score1;
    					break;
    				case 7:	return;
    				default:printf("请在1-7之间选择\n");
    				}
    			}
    			printf("修改完毕!请及时保存!\n");
    		}
    		else{
    			printf("没有该学生学号!!!");
    		}
    	}
    }
    

    3.6添加学生信息函数
    功能:添加学生信息,并保存至文件中

    //添加学生信息函数
    void insert() /*插入函数*/
    {
    	int i = n, j, flag;
    	printf("请输入待增加的学生数:\n");
    	scanf("%d", &m);
    	if (m > 0){
    		do
    		{
    			flag = 1;
    			while (flag)
    			{
    				flag = 0;
    				printf("请输入第%d位学生的学号:\n", i + 1);
    				scanf("%s", stu[i].StudentId);
    				for (j = 0; j < i; j++){
    					if (strcmp(stu[i].StudentId, stu[j].StudentId) == 0){
    						printf("该学号已存在,请重新输入!\n");
    						flag = 1;
    						break;
    					}
    				}
    			}
    			printf("请输入第%d 个学生的姓名:\n", i+1);
    			scanf("%s", stu[i].StudentName);
    			printf("请输入第%d 个学生的年龄:\n", i+1);
    			scanf("%d", &stu[i].StudentAge);
    			printf("请输入第%d 个学生的性别:\n", i+1);
    			scanf(" %c", &stu[i].StudentSex);
    			printf("请输入第%d 个学生的C语言成绩\n",i+1);
    			scanf("%f", &stu[i].score[0]);
    			printf("请输入第%d 个学生的高等数学成绩:\n", i+1);
    			scanf("%f", &stu[i].score[1]);
    			printf("请输入第%d 个学生的大学英语成绩:\n", i+1);
    			scanf("%f", &stu[i].score[2]);
    			if (0 == flag){
    				i++;
    			}
    		} while (i<n + m);
    	}
    		n += m;
    		printf("学生信息增加完毕!!!\n");
    		system("pause");
    }
    

    3.7删除学生信息函数
    功能:通过输入要删除学生信息的学号,删除该学生在该管理系统中的所有信息;

    //删除学生信息函数
    void del()
    {
    	int i, j, flag = 0;
    	char s1[LEN + 1];
    	printf("请输入要删除学生的学号:\n");
    	scanf("%s", s1);
    	for (i = 0; i < n; i++){
    		if (strcpy(stu[i].StudentId, s1) == 0){
    			flag = 1;
    			//要删除学生后面的学生往前移一位
    			for (j = i; j < n - 1; j++){
    				stu[j] = stu[j + 1];
    			}
    		}
    	}
    		//查找失败
    		if (0 == flag){
    			printf("该学号不存在!!!\n");
    		}
    		if (1 == flag){
    			printf("删除成功!!!");
    			//删除成功,学生人数减1
    			n--;
    		}
    		system("pause");
    }
    

    3.8显示当前学生信息
    功能:可以输出进行多种操作后的学生信息管理系统中的所有学生信息;

    //显示全部数据信息
    void display()
    {
    	int i;
    	printf("共有%d位学生的信息:\n", n);
    	if (0 != n)
    	{
    		printf("学生学号 \t学生姓名 \t年龄   \t性别   \tC语言成绩\t高等数学 \t大学英语成绩\n");
    		printf("--------------------------------------------------------------------\n");
    		for (i = 0; i<n; i++)
    		{
    			printf("%s \t%s \t%d   \t%c   \t%.1f\t%.1f \t%.1f\n", stu[i].StudentId, stu[i].StudentName, stu[i].StudentAge, stu[i].StudentSex, stu[i].score[0],stu[i].score[1],stu[i].score[2]);
    		}
    	}
    	system("pause");
    }
    

    3.8保存学生信息
    功能:将进行某些操作后的学生信息保存到指定文件中

    void save(){
    	int i;
    	FILE *fp;
    	char filename[LEN + 1];
    	printf("请输入要保存的文件名:\n");
    	scanf("%s", filename);
    	fp = fopen(filename, "w");
    	for (i = 0; i < n; i++){
    		fprintf(fp, "%s%s%d%c%.lf%.lf%.lf\n", stu[i].StudentId, stu[i].StudentName, stu[i].StudentAge, stu[i].StudentSex,
    			stu[i].score[0], stu[i].score[1], stu[i].score[2]);
    	}
    	printf("保存成功!!!\n");
    	fclose(fp);
    	system("pause");
    }
    
    

    三.源程序代码

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>	/*I/O函数*/
    #include<stdlib.h>	/*其它说明*/
    #include<string.h>	/*字符串函数*/
    
    #define LEN 15		/* 学号和姓名最大字符数,实际请更改*/
    #define N 50		/* 最大学生人数,实际请更改*/
    
    int k = 1, n = 0, m = 0;/* n代表当前记录的学生人数*/
    
    //函数声明
    void readfile();
    void seek();
    void modify();
    void insert();
    void del();
    void display();
    void save();
    void menu();
    
    //结构体保存学生信息
    struct student{
    	char StudentId[LEN+1];
    	char StudentName[LEN+1];
    	int StudentAge;
    	char StudentSex;
    	float score[3];
    }stu[N];
    
    //主函数
    int main()
    {
    	while (k)
    	{
    		menu();
    	}
    	system("pause");
    	return 0;
    }
    
    //系统帮助函数
    void help()
    {
    	printf("\n0.欢迎使用系统帮助!\n");
    	printf("\n1.初次进入系统后,请先选择增加学生信息;\n");
    	printf("\n2.按照菜单提示键入数字代号;\n");
    	printf("\n3.增加学生信息后,切记保存;\n");
    	printf("\n4.谢谢您的使用!\n");
    }
    
    //刷新文件
    int flush(){
    	char filename[LEN + 1];
    	int i = 0;
    	printf("请输入要刷新学生信息的文件名:\n");
    	scanf("%s", filename);
    	int j = 0;
    	FILE * fp;
    	if ((fp = fopen(filename, "r")) == NULL) return 0;
    	//从文件读取信息 
    	while (fscanf(fp, "%s %s %s %d %d %d %d ", &stu[j].StudentId, &stu[j].StudentName, &stu[j].StudentAge, &stu[j].StudentSex, &stu[j].score[0], &stu[j].score[1], &stu[j].score[2]) == 7) {
    		j++;
    	}
    	n = j;
    	printf("刷新成功!!!");
    	return n;
    }
    
    //查找学生信息
    void seek() /*查找*/
    {
    	int i, item, flag;
    	char s1[21]; /* 以姓名和学号最长长度+1为准*/
    	printf("------------------\n");
    	printf("-----1.按学号查询-----\n");
    	printf("-----2.按姓名查询-----\n");
    	printf("-----3.退出本菜单-----\n");
    	printf("------------------\n");
    	while (1)
    	{
    		printf("请选择子菜单编号:");
    		scanf("%d", &item);
    		flag = 0;
    		switch (item)
    		{
    		case 1:
    			printf("请输入要查询的学生的学号:\n");
    			scanf("%s", s1);
    			for (i = 0; i<n; i++)
    			if (strcmp(s1,stu[i].StudentId) == 0)
    			{
    				flag = 1;
    				printf("学生学号\t学生姓名\t年龄\t性别\tC语言成绩\t高等数学\t大学英语成绩\n");
    				printf("--------------------------------------------------------------------\n");
    				printf("%s\t%s\t%d\t%6\t%.1f\t%.1f\t%.1f\n", stu[i].StudentId,stu[i].StudentName,stu[i].StudentAge,stu[i].StudentSex,stu[i].score[0],stu[i].score[1],stu[i].score[2]);
    			}
    			if (0 == flag)
    				printf("该学号不存在!\n"); break;
    		case 2:
    			printf("请输入要查询的学生的姓名:\n");
    			scanf("%s", s1);
    			for (i = 0; i<n; i++)
    			if (strcmp(stu[i].StudentName, s1) == 0)
    			{
    				flag = 1;
    				printf("学生学号\t学生姓名\t年龄\t性别\tC语言成绩\t高等数学\t大学英语成绩\n");
    				printf("--------------------------------------------------------------------\n");
    				printf("%s\t%s\t%d\t%c\t%.1f\t%.1f\t%.1f\n", stu[i].StudentId, stu[i].StudentName, stu[i].StudentAge, stu[i].StudentSex, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
    			}
    			if (0 == flag)
    				printf("该姓名不存在!\n"); break;
    		case 3:return;
    		default:printf("请在1-3之间选择\n");
    		}
    	}
    }
    
    //修改学生信息
    void modify() /*修改信息*/
    {
    	int i, item, num = -1;
    	char sex1, s1[LEN + 1], s2[LEN + 1]; /* 以姓名和学号最长长度+1为准*/
    	float score1;
    	printf("请输入要要修改的学生的学号:\n");
    	scanf("%s", s1);
    	for (i = 0; i < n; i++){
    		if (strcmp(stu[i].StudentId, s1) == 0){/*比较字符串是否相等*/
    			num = i;
    			printf("------------------\n");
    			printf("1.修改姓名\n");
    			printf("2.修改年龄\n");
    			printf("3.修改性别\n");
    			printf("4.修改C语言成绩\n");
    			printf("5.修改高等数学成绩\n");
    			printf("6.修改大学英语成绩\n");
    			printf("7.退出本菜单\n");
    			printf("------------------\n");
    			while (1)
    			{
    				printf("请选择子菜单编号:");
    				scanf("%d", &item);
    				switch (item)
    				{
    				case 1:
    					printf("请输入新的姓名:\n");
    					scanf("%s", s2);
    					strcpy(stu[num].StudentName, s2);
    					break;
    				case 2:
    					printf("请输入新的年龄:\n");
    					scanf("%d", stu[num].StudentAge);
    					break;
    				case 3:
    					printf("请输入新的性别:\n");
    					scanf("%s", &sex1);
    					stu[i].StudentSex = sex1;
    					break;
    				case 4:
    					printf("请输入新的C语言成绩:\n");
    					scanf("%f", &score1);
    					stu[num].score[0] = score1;
    					break;
    				case 5:
    					printf("请输入新的高等数学成绩:\n");
    					scanf("%f", &score1);
    					stu[num].score[1] = score1;
    					break;
    				case 6:
    					printf("请输入新的大学英语成绩:\n");
    					scanf("%f", &score1);
    					stu[num].score[2] = score1;
    					break;
    				case 7:	return;
    				default:printf("请在1-7之间选择\n");
    				}
    			}
    			printf("修改完毕!请及时保存!\n");
    		}
    		else{
    			printf("没有该学生学号!!!");
    		}
    	}
    }
    
    void sort()//按学号排序
    {
    	int i, j, k, *p, *q, s;
    	char temp[LEN + 1], ctemp;
    	float ftemp;
    	for (i = 0; i<n - 1; i++)
    	{
    		for (j = n - 1; j>i; j--)
    		if (strcmp(stu[j - 1].StudentId, stu[j].StudentId)>0)
    		{
    			strcpy(temp, stu[j - 1].StudentId);
    			strcpy(stu[j - 1].StudentId, stu[j].StudentId);
    			strcpy(stu[j].StudentId, temp);
    			strcpy(temp, stu[j - 1].StudentName);
    			strcpy(stu[j - 1].StudentName, stu[j].StudentName);
    			strcpy(stu[j].StudentName, temp);
    			ctemp = stu[j - 1].StudentSex;
    			stu[j - 1].StudentSex = stu[j].StudentSex;
    			stu[j].StudentSex = ctemp;
    			p = &stu[j - 1].StudentAge;
    			q = &stu[j].StudentAge;
    			s = *q;
    			*q = *p;
    			*p = s;
    			for (k = 0; k<3; k++)
    			{
    				ftemp = stu[j - 1].score[k];
    				stu[j - 1].score[k] = stu[j].score[k];
    				stu[j].score[k] = ftemp;
    			}
    		}
    	}
    }
    
    //添加学生信息函数
    void insert() /*插入函数*/
    {
    	int i = n, j, flag;
    	printf("请输入待增加的学生数:\n");
    	scanf("%d", &m);
    	if (m > 0){
    		do
    		{
    			flag = 1;
    			while (flag)
    			{
    				flag = 0;
    				printf("请输入第%d位学生的学号:\n", i + 1);
    				scanf("%s", stu[i].StudentId);
    				for (j = 0; j < i; j++){
    					if (strcmp(stu[i].StudentId, stu[j].StudentId) == 0){
    						printf("该学号已存在,请重新输入!\n");
    						flag = 1;
    						break;
    					}
    				}
    			}
    			printf("请输入第%d 个学生的姓名:\n", i+1);
    			scanf("%s", stu[i].StudentName);
    			printf("请输入第%d 个学生的年龄:\n", i+1);
    			scanf("%d", &stu[i].StudentAge);
    			printf("请输入第%d 个学生的性别:\n", i+1);
    			scanf(" %c", &stu[i].StudentSex);
    			printf("请输入第%d 个学生的C语言成绩\n",i+1);
    			scanf("%f", &stu[i].score[0]);
    			printf("请输入第%d 个学生的高等数学成绩:\n", i+1);
    			scanf("%f", &stu[i].score[1]);
    			printf("请输入第%d 个学生的大学英语成绩:\n", i+1);
    			scanf("%f", &stu[i].score[2]);
    			if (0 == flag){
    				i++;
    			}
    		} while (i<n + m);
    	}
    		n += m;
    		printf("学生信息增加完毕!!!\n");
    		system("pause");
    }
    
    //删除学生信息函数
    void del()
    {
    	int i, j, flag = 0;
    	char s1[LEN + 1];
    	printf("请输入要删除学生的学号:\n");
    	scanf("%s", s1);
    	for (i = 0; i < n; i++){
    		if (strcpy(stu[i].StudentId, s1) == 0){
    			flag = 1;
    			//要删除学生后面的学生往前移一位
    			for (j = i; j < n - 1; j++){
    				stu[j] = stu[j + 1];
    			}
    		}
    	}
    		//查找失败
    		if (0 == flag){
    			printf("该学号不存在!!!\n");
    		}
    		if (1 == flag){
    			printf("删除成功!!!");
    			//删除成功,学生人数减1
    			n--;
    		}
    		system("pause");
    }
    
    //显示全部数据信息
    void display()
    {
    	int i;
    	printf("共有%d位学生的信息:\n", n);
    	if (0 != n)
    	{
    		printf("学生学号 \t学生姓名 \t年龄   \t性别   \tC语言成绩\t高等数学 \t大学英语成绩\n");
    		printf("--------------------------------------------------------------------\n");
    		for (i = 0; i<n; i++)
    		{
    			printf("%s \t%s \t%d   \t%c   \t%.1f\t%.1f \t%.1f\n", stu[i].StudentId, stu[i].StudentName, stu[i].StudentAge, stu[i].StudentSex, stu[i].score[0],stu[i].score[1],stu[i].score[2]);
    		}
    	}
    	system("pause");
    }
    
    void save(){
    	int i;
    	FILE *fp;
    	char filename[LEN + 1];
    	printf("请输入要保存的文件名:\n");
    	scanf("%s", filename);
    	fp = fopen(filename, "w");
    	for (i = 0; i < n; i++){
    		fprintf(fp, "%s%s%d%c%.lf%.lf%.lf\n", stu[i].StudentId, stu[i].StudentName, stu[i].StudentAge, stu[i].StudentSex,
    			stu[i].score[0], stu[i].score[1], stu[i].score[2]);
    	}
    	printf("保存成功!!!\n");
    	fclose(fp);
    	system("pause");
    }
    
    void menu()/* 界面*/
    {
    	int num;
    	printf(" \n\n                    \n\n");
    	printf("  ******************************************************\n\n");
    	printf("  *                学生信息管理系统                    *\n \n");
    	printf("  ******************************************************\n\n");
    	printf("*********************系统功能菜单*************************       \n");
    	printf("     ----------------------   ----------------------   \n");
    	printf("     *********************************************     \n");
    	printf("     * 0.系统帮助及说明  * *  1.刷新学生信息   *     \n");
    	printf("     *********************************************     \n");
    	printf("     * 2.查询学生信息    * *  3.修改学生信息   *     \n");
    	printf("     *********************************************     \n");
    	printf("     * 4.增加学生信息    * *  5.按学号删除信息 *     \n");
    	printf("     *********************************************     \n");
    	printf("     * 6.显示当前信息    * *  7.保存当前学生信息*     \n");
    	printf("     ********************** **********************     \n");
    	printf("     * 8.退出系统        *                            \n");
    	printf("     **********************                            \n");
    	printf("     ----------------------   ----------------------                           \n");
    	printf("请选择菜单编号:");
    	scanf("%d", &num);
    	switch (num)
    	{
    	case 0:help(); break;
    	case 1:flush(); break;
    	case 2:seek(); break;
    	case 3:modify(); break;
    	case 4:insert(); break;
    	case 5:del(); break;
    	case 6:display(); break;
    	case 7:save(); break;
    	case 8:
    		k = 0; 
    		printf("即将退出程序!\n");
    		break;
    	default:printf("请在0-8之间选择\n");
    	}
    }
    

    四.调试、测试以及实验结果
    1.调试:
    在这里插入图片描述
    2.测试:
    输入数据类型与定义时不符合,程序运行过程中会出现错误
    在这里插入图片描述
    3.实验结果:
    (1)~(9)是一个连续的运行实验结果
    (1)运行菜单
    在这里插入图片描述
    (2)添加学生信息
    在这里插入图片描述
    (3)保存学生信息
    在这里插入图片描述

    (4)显示全部信息
    在这里插入图片描述

    (5)修改学生信息
    在这里插入图片描述

    (6)显示修改后全部信息
    在这里插入图片描述

    (7)刷新学生信息
    在这里插入图片描述

    (8)保存学生信息
    在这里插入图片描述

    (9)显示刷新后的全部信息
    在这里插入图片描述
    五、总结:
    编写一个功能齐全的、方便用户操作的学生管理系统,需要长期的实践与积累。
    实践时检验的好办法,学到的知识经过实践的检验,才能更好的被自身吸收。文件的操作的程序编写应用对我来说,是一个没有经过多次实践的问题,所以我在写这部分程序时,还是有些难度。该程序中还存在一个问题就是,当输入一个与定义时不符的数据,程序在运行过程中会出现错误,修改办法还在思考,欢迎大家来与我互相共勉。

    展开全文
  • 学生信息管理系统流程

    万次阅读 2019-08-30 17:26:57
    前言:今天回顾了一下学生信息管理系统,对学生信息管理系统再一次进行了梳理,并画了流程图,也为接下来的机房收费系统做个铺垫。 登陆窗体流程图 添加用户流程图 学籍管理流程图 注:其余的窗体和学籍...

    前言:今天回顾了一下学生信息管理系统,对学生信息管理系统再一次进行了梳理,并画了流程图,也为接下来的机房收费系统做个铺垫。

    登陆窗体流程图

    添加用户流程图

    学籍管理流程图

    注:其余的窗体和学籍管理窗体的逻辑是一样的,所以就画了一个学籍管理窗体来代表后面的一些窗体。

    展开全文
  • C语言实现学生信息管理系统

    万次阅读 多人点赞 2019-04-08 14:40:48
    使用C语言对学生管理系统进行优化

    一、题目分析

    对学生信息管理系统,要求完成以下基本任务:

    1. 改写程序为良好程序风格(文档注释,函数注释,语句注释)。
    2. 将功能补充完全(基于文件处理,完成刷新和保存功能)。
    3. 将学生信息改为更好的数据组织,而非离散形式(结构体)。
    4. 可将程序中的不足(如数据验证)等根据自己的能力与理解完成。

    用使用C语言做一个学生信息管理系统,我的想法是先把需要的一些变量封装在结构体中,然后结合以前学过的数据结构知识(链表),做一些增删查改的操作,并将其保存在文件中。

    二、关键算法构造:

    typedef struct score 			//成绩   
    {
         int score_c;				//C语言成绩
         int score_math;			//高等数学成绩
         int score_english;			//大学英语成绩
    }Score;
    
    typedef struct Student  
    {  
       char name[100]; 		//姓名 
       char num[100]; 		//学号  
       char sex;			//性别 (m代表女生f代表男生)  
       int age;				//年龄  
       Score score;			//成绩  
    }stu;  
    
    typedef struct LNode  
    {  
        stu data; 
        struct LNode *next;  
    }LinkList; 
    

    流程图:
    在这里插入图片描述

    三、程序实现:

    #include <stdio.h>   
    #include <malloc.h> 
    #include <string.h> 
    #include <stdlib.h> 
    typedef struct score
    {
    	int score_c;		//C语言成绩
    	int score_math;		//高等数学
    	int score_english;  //大学英语成绩
    }Score;
    typedef struct Student  
    {  
       char name[100]; 		//姓名  
       char num[100];  		//学号  
       char sex;			//性别 (m代表女生f代表男生)  
       int age;				//年龄  
       Score score;			//成绩  
    }stu;  
    typedef struct LNode  
    {  
        stu data;  
        struct LNode *next;  
    }LinkList;
    
    
    char nam[100];//名字  
    char nu[100];//学号  
    char s;//性别  
    int ag;//年龄  
    Score sc;//成绩 
    
    void menu()/* 菜单界面*/
    {
    	 printf("\t\t\t  ******************************************************\n\n");
    	 printf("\t\t\t  *                学生信息管理系统                   * \n\n");
    	 printf("\t\t\t  ******************************************************\n\n"); 
    	 printf("\t\t\t*********************系统功能菜单*************************\n");
    	 printf("\t\t\t     ----------------------   ----------------------  \n");
    	 printf("\t\t\t     *********************************************  \n");
    	 printf("\t\t\t     * 0.系统帮助及说明  * *  1.刷新学生信息   *   \n");
    	 printf("\t\t\t     *********************************************  \n"); 
    	 printf("\t\t\t     * 2.查询学生信息    * *  3.修改学生信息   *   \n");
    	 printf("\t\t\t     *********************************************  \n");
    	 printf("\t\t\t     * 4.增加学生信息    * *  5.按学号删除信息 *   \n");
    	 printf("\t\t\t     *********************************************  \n");
    	 printf("\t\t\t     * 6.显示当前信息    * *  7.保存当前学生信息*   \n");
    	 printf("\t\t\t     ********************** **********************  \n");
    	 printf("\t\t\t     * 8.退出系统        *        \n");
    	 printf("\t\t\t     **********************        \n");
    	 printf("\t\t\t     ----------------------   ----------------------  \n");
    }
    
    void help()/*帮助界面*/
    { 
    	 printf("\n\t\t\t0.欢迎使用系统帮助!\n");
    	 printf("\n\t\t\t1.初次进入系统后,请先选择增加学生信息;\n");
    	 printf("\n\t\t\t2.按照菜单提示键入数字代号;\n");
    	 printf("\n\t\t\t3.增加学生信息后,切记保存;\n");
    	 printf("\n\t\t\t4.谢谢您的使用!\n");
    }
    
    void InitList(LinkList *&L)//初始化链表  
    {  
        L=(LinkList *)malloc(sizeof(LinkList));  
        L->next=NULL;  
    }
    void ListInsert(LinkList *&L,LinkList *p)//插入新的节点  
    {  
        LinkList *q=NULL;  
        q=L;  
        p->next=q->next;  
        q->next=p;  
    }  
    void addstu(LinkList *&L)//增加新的学生  
    {   
        printf("请输入学生的信息:\n");  
        printf("学号:");  
        scanf("%s",nu);  
        LinkList *q=L->next;  
        while(q!=NULL )  //用于判断学生信息是否已经存在
        {  
            if(0==strcmp(q->data.num,nu))  
            {  
                printf("该学生已存在\n");  
                break;  
            }  
            q=q->next;  
        }  
        if(q==NULL)  
        {  
            LinkList *p;  
            InitList(p);  
            strcpy(p->data.num,nu);  
            printf("姓名") ;  
            scanf("%s",nam) ;  
            strcpy(p->data.name,nam);  
            printf("性别:(m为男 f为女)");  
            scanf(" %c",&s);  
            p->data.sex=s;  
            printf("年龄:");  
            scanf("%d",&ag);  
            p->data.age=ag;  
    	 	printf("C语言成绩:");
      		scanf("%d",&sc.score_c); 
      		while(sc.score_c<0||sc.score_c>100)
      		{
                printf("输入有误,请重新输入\n");
       			scanf("%d",&sc.score_c);  
            }
      		p->data.score.score_c=sc.score_c;
      		printf("高等数学成绩:");
      		scanf("%d",&sc.score_math); 
       		while(sc.score_math<0||sc.score_math>100)
       		{
                printf("输入有误,请重新输入\n");
                scanf("%d",&sc.score_math);  
            }
       		p->data.score.score_math=sc.score_math;
      		printf("大学英语成绩:");
      		scanf("%d",&sc.score_english);  
            while(sc.score_english<0||sc.score_english>100)
            {
                printf("输入有误,请重新输入\n");
                scanf("%d",&sc.score_english);  
            }
            p->data.score.score_english=sc.score_english;  
            ListInsert(L,p);  
        }  
    }  
    
    void deletestu(LinkList *L)//删除学生  
    {   
        printf("请输入您要删除的学生的学号:");  
        scanf("%s",nu);  
        //判断  
        LinkList *p,*pre;  
        if(L->next==NULL)  
        {  
            printf("还没有学生信息,请增加学生信息\n");  
            return;  
        }  
        pre=L;  
        p=pre->next;  
        int judge=0;  
        while(p)  
        {  
             if(0==strcmp(p->data.num,nu))  
             {  
                     judge=1;  
                     pre->next =p->next;  
                     free(p);  
                     printf("删除学生成功\n");  
                     break;  
             }  
             pre=p;  
             p=p->next;  
        }  
        if(judge==0)  
           printf("这个学生不存在\n");  
    }  
    
    void changestu(LinkList *L)//改变学生信息  
    {  
    	int judge=0;  
        printf("请输入您要修改学生的学号:\n");  
        scanf("%s",nu);  
        LinkList *q=L->next;  
        while(q!=NULL )  
        {  
            if(0==strcmp(q->data.num,nu))  
            {  
                judge=1;  
                printf("请输入您要修改的信息选项:1.姓名 2. 成绩(c语言,高等数学,大学英语)  3.年龄   \n");  
                int choose;  
                scanf("%d",&choose); 
                switch(choose)  
                {  
                case 1:  
                    	printf("请输入您要修改的名字:");  
                    	scanf("%s",nam);  
                    	printf("修改的名字为:%s\n",nam);  
                    	strcpy(q->data.name,nam);
                    	printf("修改名字成功!\n");  
                    	break;  
                case 2:  
                    	printf("请输入您要修改的成绩");  
                   		scanf("%d%d%d",&sc.score_c,&sc.score_math,&sc.score_english);  
                    	printf("修改的c成绩为:%d  修改的高等数学成绩为:%d  修改的大学英语成绩为:%d\n",sc.score_c,sc.score_math,sc.score_english);  
                   		q->data.score=sc;  
                    	printf("修改成绩成功!\n");  
                    	break;  
                case 3:  
                    	printf("请输入您要修改的年龄:");  
                    	scanf("%d",&ag);  
                    	printf("修改的年龄为:%d\n",ag);  
                   		q->data.age=ag;  
                    	printf("修改年龄成功!\n");  
                    	break;  
                default :  
                    	printf("请输入正确的选项\n");  
                    	break;  
                }  
            }  
            q=q->next;  
        }  
       if(judge==0)  
       {  
         printf("该生不存在\n");  
       }  
    }  
    void findstu(LinkList *L)//按学号或者姓名查找学生并输出该生信息  
    {  
        int flag; 
        printf("1.按学号查询:\n");
        printf("2.按姓名查询:\n");
        printf("请输入查询方式:");
        scanf("%d",&flag); 
        if(flag==1){
            printf("请输入该生学号:"); 
            scanf("%s",nu);  
            //判断  
            LinkList *q=L->next;  
            while(q!=NULL )  
            {  
                if(strcmp(q->data.num,nu)==0)  
                {  
                    printf("姓名:%s\n",q->data.name);  
                    printf("学号:%s\n",q->data.num);  
                    printf("性别:%c\n",q->data.sex);  
                    printf("年龄:%d\n",q->data.age);  
                    printf("c语言成绩:%d\n",q->data.score.score_c); 
        			printf("高等数学成绩:%d\n",q->data.score.score_math); 
        			printf("大学英语成绩:%d\n",q->data.score.score_english); 
                    break;  
                }  
                 q=q->next;  
            }  
            if(q==NULL)  
                printf("该生不存在\n");  
        	}else{
            	printf("请输入该生姓名:");
            	scanf("%s",nam);  
            	LinkList *q=L->next;  
            	while(q!=NULL)  
            	{  
                	if(strcmp(q->data.name,nam)==0)  
                	{  
                    	printf("姓名:%s\n",q->data.name);  
                    	printf("学号:%s\n",q->data.num);  
                    	printf("性别:%c\n",q->data.sex);  
                    	printf("年龄:%d\n",q->data.age);  
                    	printf("c语言成绩:%d\n",q->data.score.score_c); 
        				printf("高等数学成绩:%d\n",q->data.score.score_math); 
        				printf("大学英语成绩:%d\n",q->data.score.score_english);
                    	break;  
                	}  
                 	q=q->next;  
            	}  
            	if(q==NULL)  
                	printf("该生不存在\n");  
        	}
    }  
    void display(LinkList *&L)//浏览全部学生信息  
    {  
        LinkList *q=L->next;  
        if(q==NULL)  
        {  
            printf("还没有学生信息,请增加学生信息\n");  
            return;  
        }  
        while(q)  
        {   
      		printf("姓名:%s\t",q->data.name);  
            printf("学号:%s\t",q->data.num);  
            printf("性别:%c\t",q->data.sex);  
            printf("年龄:%d\t",q->data.age);  
            printf("c语言成绩:%d\t",q->data.score.score_c); 
      		printf("高等数学成绩:%d\t",q->data.score.score_math); 
      		printf("大学英语成绩:%d\n",q->data.score.score_english);
      		q=q->next;  
        }  
    }  
    void sort(LinkList *L)//按学号排序排序 并输出排序后的结果  
    {   
        LinkList *q,*p,*r=L->next;  
        //判断  
        if(r==NULL)  
        {  
            printf("还没有学生信息,请增加学生信息\n");  
            return;  
        }  
        while(r) //两层循环完成排序  
        {  
             p=r;  
             q=r->next;  
             LinkList *tmp;//用于排序时暂存节点  
             InitList(tmp);  
             while(q)  
             {  
                 if(q->data.num < p->data.num)  //学号由小到大
                 {  
                    /*先复制q结点信息到tmp*/  
                    strcpy(tmp->data.num,q->data.num);  
                    strcpy(tmp->data.name,q->data.name);  
                    tmp->data.sex=q->data.sex;  
                    tmp->data.age=q->data.age;  
                    tmp->data.score=q->data.score; 
    				/*再复制p结点信息到q*/  
                    strcpy(q->data.num,p->data.num);  
                    strcpy(q->data.name,p->data.name);  
                    q->data.sex=p->data.sex;  
                    q->data.age=p->data.age;  
                    q->data.score=p->data.score;
    				/*最后复制exchange结点信息到p*/  
                    strcpy(p->data.num,tmp->data.num);  
                    strcpy(p->data.name,tmp->data.name);  
                    p->data.sex=tmp->data.sex;  
                    p->data.age=tmp->data.age;  
                    p->data.score=tmp->data.score;  
                 }  
                  q=q->next;  
             }  
             r=r->next; 
             }
            printf("刷新后的学生信息是:\n");  
        	display(L);  
    }  
    void saveStuDentFile(LinkList * &L)//保存学生信息到文件  
    {  
        FILE *fp;  
        LinkList *p=L->next;  
        if((fp=fopen("student.txt","w"))==NULL)// 以可写的方式打开当前目录下的.txt  
        {  
            printf("不能打开此文件,请按任意键退出\n");  
            exit(1);  //异常退出
        }  
        while(p)  
        {  
            fprintf(fp,"%s  %s  %c  %d  %d %d %d \n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.score.score_c,p->data.score.score_math,p->data.score.score_english);  
            p=p->next;  
            printf("保存成功\n");  
        }  
        fclose(fp);  
    }  
    
    void readStuDentput (LinkList *&L) //运行前把文件内容读取到电脑内存  
    {  
        FILE *fp;  
        fp=fopen("student.txt","rb"); //以只读方式打开当前目录下的.txt  
        if(fp==NULL)  
        {  
            printf("文件不存在\n");  
            exit(0);                   //终止程序  
        }  
        int i=0;  
        while(!feof(fp))  
        {  
            char nu[100];//学号  
            char nam[100];//名字 
            char s;//性别  
            int ag;//年龄  
            score sc;//成绩  
            fscanf(fp," %s %s %c %d %d %d %d",nu,nam,&s,&ag,&sc.score_c,&sc.score_math,&sc.score_english);
            i++;  
        }  
        fclose(fp);  
        FILE *FP;  
        FP=fopen("student.txt","rb"); //以只读方式打开当前目录下的.txt  
        if(FP==NULL)  
        {  
            printf("无法打开文件\n");  
            exit(0); //终止程序  
        }  
        int b=i-1;  
        int j=1;  
            while(!feof(FP))  
            {  
                fscanf(FP,"%s %s %c %d %d %d %d",nu,nam,&s,&ag,&sc.score_c,&sc.score_math,&sc.score_english);  
                LinkList *n=(LinkList *)malloc(sizeof(LinkList));  
                strcpy(n->data.num,nu);//把后者的内容拷贝到前者中  
                strcpy(n->data.name,nam);//把后者的内容拷贝到前者中  
                n->data.sex=s;  
                n->data.age=ag;  
                n->data.score=sc;  
                ListInsert(L,n);//插入新的节点  
                n=n->next;  
                if(j==b)  
                   break;  
                j++;  
            }  
        fclose(FP);    //关闭文件  
    }  
    
    int main()  
    {       
    	LinkList *L;  
        InitList(L);  
        readStuDentput (L);   //运行前把文件内容读取到电脑   
        int choose;  
        while(1)  
        {  
      		printf("\n");
            menu();     //功能菜单 
      		printf("请输入您的选择:\n"); 
            scanf("%d",&choose);  
            switch(choose)  
            {  
            case 0://系统帮助及说明
       			help();
       			break; 
            case 1://刷新信息(按学号排序)
       			sort(L);
       			break;
      		case 2: //查询学生信息
                findstu(L);  
                break;  
            case 3://修改学生信息  
       			changestu(L); 
                break; 
      		case 4://增加学生信息  
                addstu(L); 
                break; 
     		case 5://删除学生信息  
                deletestu(L);  
                break;  
            case 6://输出所有学生的信息  
                display(L);  
                break; 
            case 7://保存学生信息到文件   
                saveStuDentFile(L);  
                break;
      		case 8://退出  
                printf("谢谢使用!");  
                exit(0);        
            default:  
                printf("请输入正确的选择\n");  
                break;  
            }  
        } 
     	return 0;
    }  
    

    四、调试、测试、及运行结果

    运行结果:
    帮助界面:
    在这里插入图片描述
    刷新:(按学号排序)
    在这里插入图片描述
    查询
    在这里插入图片描述
    修改:
    在这里插入图片描述
    增加:
    在这里插入图片描述
    删除:
    在这里插入图片描述
    显示:
    在这里插入图片描述
    保存:
    在这里插入图片描述
    退出:
    在这里插入图片描述

    五、经验归纳

    这次上机的任务是学生信息管理系统。编写代码的过程中,利用了学习过的链表等知识,将学生信息管理系统通过链表进行了重写。复习了链表的知识和C语言的文件操作。

    文件操作标准库函数有:
          文件的打开操作 fopen 打开一个文件
          文件的关闭操作 fclose 关闭一个文件
          文件的读写操作 fgets 从文件中读取一个字符串
                  fputs 写一个字符串到文件中去
                  fprintf 往文件中写格式化数据
                  fscanf 格式化读取文件中数据
       文件状态检查函数 feof 文件结束

    说明:上述代码均能够在dev C++编译器中运行,VS系列编译器暂不知到。2019/12/29更新。

    展开全文
  • 学生信息管理系统

    2019-04-27 16:43:34
    学生信息管理系统 在使用本系统之前,需要做一些运行环境的搭建,具体步骤见该目录下的 --系统部署流程--。 系统部署完成以后,运行wamp,待服务全部启动之后,打开浏览器,输入:...
  • 学生信息管理系统.zip

    2021-08-07 09:17:13
    包含学生信息管理系统的代码实现、1万字+的毕业论文、40页+的PPT演示文稿、以及数据库的脚本sql语句、还有流程图逻辑图等等
  • 由于Java的跨平台性、安全性等诸多优势,本论文采用Jsp+Tomcat+SQLServer的技术途径和规范的全局设计开发流程,在Myeclipse的开发环境下设计、编写学生信息管理系统。系统用户权限分两种:学生和管理员,不同权限的...
  • 学生信息管理系统 详细设计 学生信息管理系统 详细设计 学生信息管理系统 详细设计
  • 课程设计之学生信息管理系统,上传的资料有需求分析、程序流程图、和程序代码、 此管理系统函数功能包括(1.添加学生信息2.查询学生信息3.修改学生信息4.删除学生信息5.保存学生信息)缺点:没有连接数据库、
  • 学生信息管理系统(程序)学生信息管理系统(程序)学生信息管理系统(程序)学生信息管理系统(程序)学生信息管理系统(程序)学生信息管理系统(程序)学生信息管理系统(程序)学生信息管理系统(程序)
  • Java学生信息管理系统

    2019-03-27 17:53:09
    一个简单的java学生管理系统,这个学生管理系统主要涉及的java基础知识有变量、数据类型、流程控制、数组操作、面向对象、数据封装(构造、重载)、多态、接口、集合、异常、线程(用了一个线程延时)等。...
  • 数据库课设之学生信息管理系统

    万次阅读 多人点赞 2019-07-13 17:31:10
    数据库课设之学生信息管理系统 一、系统需求分析 学校每年都有新生入学、老生毕业,还有其他各种人事变动。如何有效地管理这些学生 的信息,帮助学校和老师掌握学生的情况,这就是学生信息管理系统需要完成的功能。 ...

    数据库课设之学生信息管理系统

    一、系统需求分析

    学校每年都有新生入学、老生毕业,还有其他各种人事变动。如何有效地管理这些学生
    的信息,帮助学校和老师掌握学生的情况,这就是学生信息管理系统需要完成的功能。

    1.1 系统功能分析
    本系统主要的功能是收集学生的个人信息,以便向教师提供每个学生在校的情况。系统
    的主要功能有:
    a、学生个人信息输入,包括:姓名、性别、院系、生日、籍贯、生源所在地等。
    b、学生流动情况的输入,包括:转系、休学、复学、退学、毕业。
    c、奖惩情况的输入。
    d、学生个人情况查询和修改,包括流动情况和奖罚情况。

    1.2 系统功能模块设计(划分)
    根据系统功能要求可以将系统分解成几个模
    块来分别设计应用程序界面,如图 1 所示。
    在这里插入图片描述
    1.3 与其它系统的关系
    学生信息管理系统是校园信息管理系统的一个组成部分。它为其它系统,如班级信息管理系统、
    教学管理系统、成绩单系统、宿舍分配系统等,提供学生的基本情况。同时需要其他系统提
    供的班级设置和院系设置等情况。这些系统可以使用同一个数据库,直接相互调用所需的数
    据。

    1.4 数据流程图
    学生信息管理系统的数据流程如图 2 所示。
    在这里插入图片描述

    二、数据库设计

    2.1 数据库需求分析
    根据上一节的数据流程图,可以列出以下记录学生信息所需的数据项和数据结构:
    a、学生:学号、姓名、性别、生日、籍贯、所在院系、所在班级。
    b、处罚记录:记录号、级别、处罚对象、记录时间、详细描述、是否生效。
    c、奖励记录:记录号、级别、奖励对象、记录时间、详细描述。
    d、学籍变更记录:记录号、变更情况、记录对象、记录时间、详细描述。
    所需的外部数据支持:
    e、班级:班级编号、班级名称、所属院系。
    f、院系:代码、名称。

    2.2 数据库概念结构设计
    图 3 是本系统所需数据的 E-R 模型图。
    在这里插入图片描述

    三、各功能模块的设计与实现

    3.1 功能说明
    1、学生个人信息输入
    2、学籍变更情况的输入
    3、奖励情况的输入
    4、处罚情况的输入
    5、学生个人情况查询和修改

    3.2 用户界面设计
    完成数据库创建和功能说明以后,我们可以进行下一步工作,即设计用户界面。由于本
    系统管理内容比较简单,且为校园管理信息系统的一部分,因此使用一个窗体不同的标签页
    来完成系统要求的 5 项功能。
    我们把学生信息管理系统的窗体分成____个主要部分,如图____所示。
    1、应用程序主窗体的创建
    2、学生个人信息输入界面
    3、学籍变更情况输入界面
    4、奖励情况输入界面
    5、处罚情况输入界面
    6、学生个人情况查询和修改界面

    3.3 各功能模块的实现
    1、学生个人信息输入
    2、学籍变更情况输入
    3、奖励情况输入
    4、处罚情况输入
    5、学生个人情况查询和修改
    在这里插入图片描述

    四、系统实现

    根据系统E-R图,需要设计4个数据表来存放学生的信息。为了系统的完整,系统中包括了应用程序设计中所需的4个外部数据表。为了优化数据表结构,部分字段采用代码形式,因此需要附加3个代码表。这11个数据表如表1到表11所示。

    表1 student学生个人信息表
    在这里插入图片描述
    表2 studentxj学籍变更信息表
    在这里插入图片描述
    表3 reward奖励记录信息表
    在这里插入图片描述
    表4 punishment处罚记录信息表
    在这里插入图片描述
    表5 class班级信息表
    在这里插入图片描述
    表6 department院系信息表
    在这里插入图片描述
    表7 change_code学籍变动代码表
    在这里插入图片描述
    表8 reward_levels奖励等级代码表
    在这里插入图片描述
    表9 punish_levels处罚等级代码表
    在这里插入图片描述
    表10 studentdlb学生账号密码登录表
    在这里插入图片描述
    表11 teacherdlb老师账号密码登录表
    在这里插入图片描述
    4.1、学生和教务办老师的账号密码登陆界面
    学生和教务办老师的账号密码登陆界面请见如图3-1学生和教务办老师的账号密码登陆界面。这个界面是进入学生信息管理系统的钥匙并且设置了教务办老师和学生两个权限,为了实现不同权限的登录功能,所以在数据库中设计了学生账号密码登录表和老师账号密码登录表两个表格,然后用户可以选择自己的身份权限输入自己的账号密码进行登录,然后系统通过连接数据库的两个表格去和用户输入的账号密码去相应匹配,只有匹配成功之后才会出现不同的用户主界面,然后才可以进行数据操作。(用户名的填写格式界面文本框有提示)
    实现学生和教务办老师的账号密码登陆界面的全部代码:

    package xr06;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Vector;
    import javax.swing.*;
    
    import xr06.DbProcess;
    public class Student_management_login_system extends JFrame implements ActionListener {
    
    	JButton jb1,jb2,jb3=null;  
        JRadioButton jrb1,jrb2=null;  
        JPanel jp0,jp1,jp2,jp3,jp4=null;  
        JTextField jtf=null;  
        JLabel jlb0,jlb1,jlb2,jlb3=null;  
        JPasswordField jpf=null;  
        ButtonGroup bg=null;
        private static DbProcess dbProcess;
        public static void main(String[] args) {  
    
    		Student_management_login_system smls=new Student_management_login_system();  
        }  
        public Student_management_login_system()
        {
        	setIconImage(Toolkit.getDefaultToolkit().getImage("G:\\timg-1.jpg"));//图片可以自己选择换
     
        	jb1=new JButton("登录 (login)");  
        	jb1.setBounds(32, 5, 150, 27);
        	jb1.setBackground(Color.ORANGE);
            jb2=new JButton("重置 (resetting)"); 
            jb2.setBounds(196, 5, 204, 27);
            jb2.setBackground(Color.ORANGE);
            jb3=new JButton("退出 (exit)");
            jb3.setBounds(414, 5, 150, 27);
            jb3.setForeground(Color.BLACK);
            jb3.setBackground(Color.ORANGE);
            jb1.addActionListener(this);  
            jb2.addActionListener(this);  
            jb3.addActionListener(this);  
            jrb1=new JRadioButton("教务办老师 (teacher)");  
            jrb1.setFont(new Font("宋体", Font.BOLD, 15));
            jrb1.setBounds(216, 30, 201, 27);
            jrb1.setBackground(new Color(255, 255, 153));
            jrb2=new JRadioButton("学生 (student)");  
            jrb2.setFont(new Font("宋体", Font.BOLD, 15));
            jrb2.setBounds(423, 30, 163, 27);
            jrb2.setBackground(new Color(255, 255, 153));
            bg=new ButtonGroup();  
            bg.add(jrb1);  
            bg.add(jrb2);  
            jrb2.setSelected(true);
            jp0=new JPanel(); 
            jp0.setBounds(0, 0, 602, 100);
            jp0.setBackground(new Color(255, 255, 153));
            jp1=new JPanel();  
            jp1.setBounds(0, 99, 602, 55);
            jp1.setBackground(new Color(255, 255, 153));
            jp2=new JPanel();  
            jp2.setBounds(0, 152, 602, 70);
            jp2.setBackground(new Color(255, 255, 153));
            jp3=new JPanel();  
            jp3.setBounds(0, 221, 602, 86);
            jp3.setBackground(new Color(255, 255, 153));
            jp4=new JPanel(); 
            jp4.setBounds(0, 307, 602, 93);
            jp4.setBackground(new Color(255, 255, 153));
            jlb0=new JLabel("\u5B66\u751F\u4FE1\u606F\u7BA1\u7406\u7CFB\u7EDF");
            jlb0.setFont(new Font("方正舒体", Font.BOLD, 40));
            jlb0.setBounds(129, 36, 351, 51);
            jlb1=new JLabel("用户名 (user name):");  
            jlb1.setFont(new Font("宋体", Font.BOLD, 18));
            jlb1.setBounds(54, 25, 236, 18);
            jlb2=new JLabel("\u5BC6  \u7801 (pass-word)\uFF1A");  
            jlb2.setFont(new Font("宋体", Font.BOLD, 18));
            jlb2.setBounds(54, 35, 227, 18);
            jlb3=new JLabel("\u8EAB   \u4EFD (Identity)\uFF1A"); 
            jlb3.setFont(new Font("宋体", Font.BOLD, 15));
            jlb3.setBounds(29, 26, 201, 34);
            jtf=new JTextField(15);  
            jtf.setBounds(253, 24, 281, 24);
            jpf=new JPasswordField(15); 
            jpf.setBounds(253, 34, 281, 24);
            jtf.addFocusListener(new JTextFieldHintListener("请输入学号/教职工号", jtf));
            jp0.setLayout(null);
            jp0.add(jlb0);
            jp1.setLayout(null);
            
            jp1.add(jlb1);  
            jp1.add(jtf);  
            jp2.setLayout(null);
    
            jp2.add(jlb2);  
            jp2.add(jpf);  
            jp3.setLayout(null);
    
            jp3.add(jlb3);      //添加标签
            jp3.add(jrb1);  
            jp3.add(jrb2);  
            jp4.setLayout(null);
    
            jp4.add(jb1);       //添加按钮
            jp4.add(jb2);  
            jp4.add(jb3);
            getContentPane().setLayout(null);
            getContentPane().add(jp0);
            getContentPane().add(jp1);  
            getContentPane().add(jp2);  
            getContentPane().add(jp3);  
            getContentPane().add(jp4);
            this.setTitle("学生信息管理系统 ");          
            this.setSize(605,433);         
            this.setLocation(700, 300);           
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    //设置当关闭窗口时,保证JVM也退出 
            this.setVisible(true);  
            this.setResizable(false); 
        }
    	public void actionPerformed(ActionEvent e) {
    		if(e.getActionCommand().equals("登录 (login)")  
    				&& !jtf.getText().isEmpty()&&!jpf.getText().isEmpty()){
    				System.out.println("actionPerformed(). 登录 (login)");
    				String jtfQueryField = jtf.getText().trim();
    				String jpfQueryField = jpf.getText().trim();
    				queryProcess(jtfQueryField,jpfQueryField);
    				
    				}
    		else if(e.getActionCommand().equals("登录 (login)")  
    				&& jtf.getText().isEmpty()&&!jpf.getText().isEmpty()){
    			JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);  
    			}//只有用户名没有输入
    		else if(e.getActionCommand().equals("登录 (login)")  
    				&& jtf.getText().isEmpty()&& jpf.getText().isEmpty()){
    			JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);  
    			}//用户名和密码都没有输入
    		else if(e.getActionCommand().equals("登录 (login)")  
    				&& !jtf.getText().isEmpty()&&jpf.getText().isEmpty()){
    			JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);  
    			}//只有密码没有输入
    		else if(e.getActionCommand().equals("重置 (resetting)")){
    	        jtf.setText("");  
    	        jpf.setText("");  
    			}
    		else{
    			int n=JOptionPane.showConfirmDialog(null,"确定退出系统登陆界面?", "学生信息管理系统",JOptionPane.YES_NO_OPTION);
    			if(n==0) {
    				this.setVisible(false);
    			}
    		}
    	}	
    		public void queryProcess(String jtfQueryField,String jpfQueryField)
    		{
    			if(jrb1.isSelected())  
                {  
    				try{
    					// 建立查询条件
    					String jtfsql = "select * from teacherdlb where ";
    					jtfsql = jtfsql + "tuserNo";
    					jtfsql = jtfsql + " = ";
    					jtfsql = jtfsql + "'" + jtfQueryField + "';";
    					System.out.println("queryProcess(). jtfsql = " + jtfsql);
    					dbProcess = new DbProcess();
    					dbProcess.connect();
    					ResultSet jtfrs = dbProcess.executeQuery(jtfsql);
    					jtfrs.next();
    					System.out.print(jpfQueryField);
    					if(jtfrs.getString("tuserNo").equals(jtfQueryField)&&jtfrs.getString("tpswd").equals(jpfQueryField))  
    			        {            
    			            JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);           
    			            dispose();        
    			            jtf.setText("");  
    				        jpf.setText("");             
    				        Teacher t=new Teacher();       //创建新界面  
    			        }else 
    			        {  
    			            JOptionPane.showMessageDialog(null,"密码错误!请重新输入密码!","提示消息",JOptionPane.WARNING_MESSAGE); 
    			            jpf.setText("");
    			        }
    					dbProcess.disconnect();
    				}catch(SQLException sqle){
    					System.out.println("sqle = " + sqle);
    					JOptionPane.showMessageDialog(null,
    						"用户名或者密码错误!","错误",JOptionPane.ERROR_MESSAGE);
    				}catch(Exception e){
    					System.out.println("e = " + e);
    					JOptionPane.showMessageDialog(null,
    						"用户名或者密码错误!","错误",JOptionPane.ERROR_MESSAGE);
    				}                              //连接到教师的方法 页面
                }
    			if(jrb2.isSelected()) //学生在登录系统  
                {  
                	try{
        				// 建立查询条件
        				String jtfsql = "select * from studentdlb where ";
        				jtfsql = jtfsql + "suserNo";
        				jtfsql = jtfsql + " = ";
        				jtfsql = jtfsql + "'" + jtfQueryField + "';";
        				System.out.println("queryProcess(). jtfsql = " + jtfsql);
        				dbProcess = new DbProcess();
        				dbProcess.connect();
        				ResultSet jtfrs = dbProcess.executeQuery(jtfsql);
        				jtfrs.next();
        				System.out.print(jpfQueryField);
        				if(jtfrs.getString("suserNo").equals(jtfQueryField)&&jtfrs.getString("spswd").equals(jpfQueryField))  
        		        {            
        		            JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);           
        		            dispose();        
        		            jtf.setText("");  
        			        jpf.setText("");             
        		            Student ui=new Student();      //创建新界面  
        		        }else 
        		        {  
        		            JOptionPane.showMessageDialog(null,"密码错误!请重新输入密码!","提示消息",JOptionPane.WARNING_MESSAGE); 
        		            jpf.setText("");
        		        }
        				dbProcess.disconnect();
        			}catch(SQLException sqle){
        				System.out.println("sqle = " + sqle);
        				JOptionPane.showMessageDialog(null,
        					"用户名或者密码错误!","错误",JOptionPane.ERROR_MESSAGE);
        			}catch(Exception e){
        				System.out.println("e = " + e);
        				JOptionPane.showMessageDialog(null,
        					"用户名或者密码错误!","错误",JOptionPane.ERROR_MESSAGE);
        			}                              //连接到学生的方法 页面
                }  
    
    
    			
    		}
    
    }
    
    

    图3-1学生和教务办老师的账号密码登陆界面
    在这里插入图片描述
    4.2、学生用户主界面
    学生用户主界面请见如图3-2学生用户主界面。首先这个界面是在选择学生权限用户登录之后出现的,这个界面可以供用户选择查询各式个人信息以及了解学校学院相关的一些常识或者退出系统(点击相应的按钮,然后会出现相应的功能界面),同时为了使界面更加优化,特别插入了“超越梦想”为主题的图片,希望学生用户能够好好提升自己,为梦想努力奋斗,超越自我,迎来美丽人生。
    实现学生用户主界面的全部代码:

    package xr06;
    import java.util.Vector;
    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import javax.swing.ImageIcon;
    import java.awt.Toolkit;
    
    public class Student extends JFrame implements ActionListener {
    
    	private JPanel contentPane;
    
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		
    		Student ui=new Student();
    						
    	}
    	/**
    	 * Create the frame.
    	 */
    	public Student() {
    		setIconImage(Toolkit.getDefaultToolkit().getImage("G:\\timg-1.jpg"));//插入图片
    		this.setResizable(false);
    		setTitle("学生信息管理系统");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(700, 320, 579, 409);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
    		
    		JPanel panel = new JPanel();
    		panel.setBackground(new Color(255, 255, 153));
    		panel.setBounds(0, 0, 573, 374);
    		contentPane.add(panel);
    		panel.setLayout(null);
    			
    		
    		JLabel lblNewLabel = new JLabel("同学你好!欢迎登陆学生信息管理系统");
    		lblNewLabel.setFont(new Font("宋体", Font.BOLD, 20));
    		lblNewLabel.setForeground(new Color(255, 255, 0));
    		lblNewLabel.setBounds(94, 24, 366, 32);
    		panel.add(lblNewLabel);
    		
    		JButton button_1 = new JButton("个人信息查询");
    		button_1.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				dispose();
    				Personcx px = new Personcx();
    			}
    		});
    		button_1.setBounds(86, 90, 167, 32);
    		panel.add(button_1);
    		
    		JButton button_2 = new JButton("个人奖励记录");
    		button_2.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				dispose();
    				Personjl xj = new Personjl();
    			}
    		});
    		button_2.setBounds(86, 148, 167, 32);
    		panel.add(button_2);
    		
    		JButton button_3 = new JButton("个人学籍变更记录");
    		button_3.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				dispose();
    				Personxj xj = new Personxj();
    			}
    		});
    		button_3.setBounds(293, 90, 167, 32);
    		panel.add(button_3);
    		
    		JButton button_4 = new JButton("个人处分记录");
    		button_4.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				dispose();
    				Personcf cf = new Personcf();
    			}
    		});
    		button_4.setBounds(293, 148, 167, 32);
    		panel.add(button_4);
    		
    		JButton button_5 = new JButton("退出");
    		button_5.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				int n=JOptionPane.showConfirmDialog(null,"确定退出该系统?", "学生信息管理系统",JOptionPane.YES_NO_OPTION);
    				if(n==0) {
    					dispose();
    					Student_management_login_system sm=new Student_management_login_system();
    				}
    			}
    		});
    		button_5.setForeground(Color.RED);
    		button_5.setBounds(293, 206, 167, 32);
    		panel.add(button_5);
    		
    		JLabel label = new JLabel("         温馨提示:新生个人登陆系统之后请先查看入学须知");
    		label.setFont(new Font("宋体", Font.PLAIN, 16));
    		label.setForeground(new Color(153, 255, 51));
    		label.setBounds(25, 277, 487, 41);
    		panel.add(label);
    		
    		JButton button = new JButton("入学须知");
    		button.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				dispose();
    				Personrx rx = new Personrx();
    			}
    		});
    		button.setBounds(86, 206, 167, 32);
    		panel.add(button);
    		
    		JLabel lblNewLabel_1 = new JLabel("New label");
    		lblNewLabel_1.setIcon(new ImageIcon("C:\\Users\\\u8C22\u5112\\Pictures\\Camera Roll\\29755920_1478787143469_1024x1024.jpg"));
    		lblNewLabel_1.setBounds(0, 0, 573, 400);
    		panel.add(lblNewLabel_1);
    		this.setVisible(true);
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		// TODO Auto-generated method stub
    		
    	}
    }
    
    

    图3-2学生用户主界面
    在这里插入图片描述
    3.3、老师学生账号密码界面
    老师学生账号密码界面请见如图3-3老师学生账号密码界面。这个界面的设计同样是专门为教务办用户设计,能通过点击全部查询,查询到系统录入的所有同学和教务办老师的账号密码,这个界面信息显示也采用了多表查询,将学生账号密码登录表、老师账号密码登录表两个表格联合查询;然后也可以通过下拉框选择相应想要选择查询的内容比如老师账号,然后点击查询获取相对应的老师账号密码信息。如果修改了账号和密码点击更新按钮,又确认实施该操作,那么会退出系统返回到原始登录界面,其它按钮的功能同上。
    实现老师学生账号密码界面的全部代码:

    package xr06;
    import java.util.Vector;
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.table.DefaultTableModel;
    import org.omg.CORBA.PUBLIC_MEMBER;
    import java.awt.color.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class Studentzh extends JFrame implements ActionListener {
    	// 定义基本信息组件
    		JLabel jLStudentxjTable = null;// 学生学籍表
    		JLabel jLSelectQueryField = null;// 选择
    		JLabel mh = null;// :
    		JLabel teacherzh = null;// 老师账号
    		JLabel teachermm = null;// 老师密码
    		JLabel studentzh = null;// 学生账号
    		JLabel studentmm = null;// 学生密码
    		JLabel ms = null;// 描述
    		JLabel dm = null;// 代码
    		JLabel sm = null;// 说明
    		/// 定义文本框
    		JTextField jTFQueryField = null;// 查询字段
    		JTextField jTFSTz = null;// 老师账号
    		JTextField jTFSTP = null;// 老师密码
    		JTextField jTFSSZ = null;// 学生账号
    		JTextField jTFSSP = null;// 学生密码
    		JTextField jTFSDES = null;// 描述
    		JTextField jTFSCode = null;// 代码
    		JTextField jTFSsm = null;// 说明
    		// 定义按钮
    		JButton jb5 = null;// 顶部选择的四个表+1个菜单
    		JButton jBQuery = null;// 查询
    		JButton jBQueryAll = null;// 查询所有记录
    		JButton jBInsert = null;// 插入
    		JButton jBUpdate = null;// 更新
    		JButton jBDeleteCurrentRecord = null;// 删除当前记录
    		JButton jBDeleteAllRecords = null;// 删除所有记录
    		JButton EXIT = null;// 退出
    		// 定义其他
    		JComboBox<String> jCBSelectQueryField = null;// 查询字段
    		JComboBox<String> jCBsexQueryField = null;// 
    		JPanel jP1, jP2, jP3, jP4, jP5, jP6, jP8 = null;
    		JPanel jPTop, jPBottom = null;
    		DefaultTableModel studentTableModel = null;
    		JTable studentJTable = null;
    		JScrollPane studentJScrollPane = null;
    		Vector studentVector = null;
    		Vector titleVector = null;
    		private static DbProcess dbProcess;
    		String SelectQueryFieldStr = "老师账号";
    		public static void main(String[] args) {
    			Studentzh ss = new Studentzh();
    		}
    
    		// ****************************事件判断**********************
    		public Studentzh() {
    			setIconImage(Toolkit.getDefaultToolkit().getImage("G:\\timg-1.jpg"));
    			this.setResizable(false);
    			jLSelectQueryField = new JLabel("选择");
    			jLSelectQueryField.setBounds(5, 9, 30, 18);
    			mh = new JLabel(" : ");
    			mh.setBounds(192, 9, 24, 18);
    			teacherzh = new JLabel("老师账号:");
    			teacherzh.setBounds(5, 25, 68, 18);
    			teachermm = new JLabel("老师密码:");
    			teachermm.setBounds(323, 25, 68, 18);
    			// 文本框创建
    			jTFQueryField = new JTextField(10);// 查询字段
    			jTFQueryField.setBounds(214, 6, 106, 24);
    			jTFSTz = new JTextField(15);// 老师账号
    			jTFSTz.setBounds(79, 18, 215, 24);
    			jTFSTP = new JTextField(15);// 老师密码
    			jTFSTP.setBounds(395, 18, 215, 24);
    			jBQuery = new JButton("查询选择内容");
    			jBQuery.setBounds(334, 5, 155, 27);
    			jBQuery.setFont(new Font("宋体", Font.BOLD, 15));
    			jBQueryAll = new JButton("查询所有记录");
    			jBQueryAll.setBounds(503, 5, 155, 27);
    			jBQueryAll.setFont(new Font("宋体", Font.BOLD, 15));
    			jBQuery.addActionListener(this);
    			jBQueryAll.addActionListener(this);
    			// 建立下拉框
    			jCBSelectQueryField = new JComboBox<String>();// 查询字段
    			jCBSelectQueryField.setBounds(37, 6, 155, 24);
    			jCBSelectQueryField.addItem("老师账号");
    			jCBSelectQueryField.addItem("老师密码");
    			jCBSelectQueryField.addItem("学生账号");
    			jCBSelectQueryField.addItem("学生密码");
    			jCBSelectQueryField.addItemListener(new ItemListener() {// 下拉框事件监听
    				public void itemStateChanged(ItemEvent event) {
    					switch (event.getStateChange()) {
    					case ItemEvent.SELECTED:
    						SelectQueryFieldStr = (String) event.getItem();
    						System.out.println("选中:" + SelectQueryFieldStr);
    						break;
    					case ItemEvent.DESELECTED:
    						System.out.println("取消选中:" + event.getItem());
    						break;
    					}
    				}
    			});
    
    			studentVector = new Vector();
    			titleVector = new Vector();
    			// 定义表头
    			titleVector.add("老师账号");
    			titleVector.add("老师密码");
    			titleVector.add("学生账号");
    			titleVector.add("学生密码");
    			studentJTable = new JTable(studentVector, titleVector);
    			studentJTable.setPreferredScrollableViewportSize(new Dimension(400, 160));
    			studentJScrollPane = new JScrollPane(studentJTable);
    			studentJScrollPane.setBounds(0, 0, 480, 172);
    			// 分别设置水平和垂直滚动条自动出现
    			studentJScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    			studentJScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    
    			// 为表格添加监听器
    			studentJTable.addMouseListener(new MouseAdapter() {
    				public void mouseClicked(MouseEvent e) {
    					int row = ((JTable) e.getSource()).rowAtPoint(e.getPoint()); // 获得行位置
    					System.out.println("mouseClicked(). row = " + row);
    					Vector v = new Vector();
    					v = (Vector) studentVector.get(row);
    
    					jTFSTz.setText((String) v.get(0));// 老师账号
    					jTFSTP.setText((String) v.get(1));// 老师密码
    					jTFSSZ.setText((String) v.get(2));// 学生账号
    					jTFSSP.setText((String) v.get(3));// 学生密码
    				}
    			});
    
    			jP1 = new JPanel();
    			jP1.setBounds(356, 17, 8, 2);
    			jP3 = new JPanel();
    			jP3.setBounds(98, 55, 480, 172);
    			jP3.setBackground(new Color(204, 51, 0));
    			jP4 = new JPanel();
    			jP4.setBackground(new Color(255, 255, 102));
    			jP4.setBounds(0, 13, 682, 45);
    			jP5 = new JPanel();
    			jP5.setBackground(new Color(255, 255, 153));
    			jP5.setBounds(0, 69, 682, 45);
    			jP6 = new JPanel();
    			jP6.setBackground(new Color(255, 255, 153));
    			jP6.setBounds(0, 113, 682, 79);
    			jPTop = new JPanel();
    			jPTop.setBackground(new Color(255, 255, 102));
    			jPBottom = new JPanel();
    			jPBottom.setBackground(new Color(255, 255, 51));
    			jP3.setLayout(null);
    			jP3.add(studentJScrollPane);
    			jP1.setLayout(new FlowLayout(FlowLayout.CENTER, 4, 1));
    			jP4.setLayout(null);
    	//底部的五部分
    			// 第四行
    			jP4.add(jLSelectQueryField);// 文字“选择”
    			jP4.add(jCBSelectQueryField);// 下拉框
    			jP4.add(mh);
    			jP4.add(jTFQueryField);
    			jP4.add(jBQuery);
    			jP4.add(jBQueryAll);
    			jP4.setPreferredSize(new Dimension(20, 20));
    			jP5.setLayout(null);
    			// 第五行
    			jP5.add(teacherzh);
    			jP5.add(jTFSTz);
    			jP5.add(teachermm);
    			jP5.add(jTFSTP);
    			jP5.setPreferredSize(new Dimension(20, 20));
    			jP6.setLayout(null);
    			studentzh = new JLabel("学生账号:");
    			studentzh.setBounds(5, 32, 68, 18);
    			jP6.add(studentzh);
    			jTFSSZ = new JTextField(15);// 学生账号
    			jTFSSZ.setBounds(79, 29, 215, 24);
    			jP6.add(jTFSSZ);
    			studentmm = new JLabel("学生密码:");
    			studentmm.setBounds(323, 32, 68, 18);
    			jP6.add(studentmm);
    			jP6.setPreferredSize(new Dimension(20, 20));
    			jPTop.setLayout(null);
    			// 命名组件
    			jLStudentxjTable = new JLabel("账户密码表");
    			jLStudentxjTable.setBounds(14, 13, 130, 26);
    			jLStudentxjTable.setFont(new Font("华文新魏", Font.BOLD, 25));
    			jP2 = new JPanel();
    			jP2.setBackground(new Color(255, 255, 102));
    			jP2.setBounds(258, 0, 165, 50);
    			jP2.setLayout(null);
    			jP2.add(jLStudentxjTable);
    			jPTop.add(jP2);
    			// 设置顶部
    			jPTop.add(jP1);
    			jPTop.add(jP3);
    			jPBottom.setLayout(null);
    			jPBottom.add(jP4);
    			jPBottom.add(jP5);
    			jPBottom.add(jP6);
    			jTFSSP = new JTextField(15);
    			jTFSSP.setBounds(395, 29, 215, 24);
    			jP6.add(jTFSSP);
    			// 设置大局面
    			getContentPane().add("North", jPTop);
    			
    			JLabel lblNewLabel = new JLabel("   \u6CE8\u610F\u4E8B\u9879\uFF1A\u8D26\u53F7\u5BC6\u7801\u6D89\u53CA\u4F7F\u7528\u8005\u548C\u7BA1\u7406\u8005\u9690\u79C1\uFF0C\u8BF7\u52FF\u6CC4\u9732\u5916\u4F20\uFF01");
    			lblNewLabel.setBounds(79, 224, 523, 36);
    			jPTop.add(lblNewLabel);
    			lblNewLabel.setForeground(new Color(255, 0, 0));
    			lblNewLabel.setFont(new Font("华文宋体", Font.BOLD, 17));
    			getContentPane().add("South", jPBottom);
    			jBInsert = new JButton("插入");
    			jBInsert.setBounds(10, 205, 80, 27);
    			jPBottom.add(jBInsert);
    			jBInsert.setFont(new Font("宋体", Font.BOLD, 15));
    			jBUpdate = new JButton("更新");
    			jBUpdate.setBounds(95, 205, 80, 27);
    			jPBottom.add(jBUpdate);
    			jBUpdate.setFont(new Font("宋体", Font.BOLD, 15));
    			jBDeleteCurrentRecord = new JButton("删除当前记录");
    			jBDeleteCurrentRecord.setBounds(189, 205, 155, 27);
    			jPBottom.add(jBDeleteCurrentRecord);
    			jBDeleteCurrentRecord.setFont(new Font("宋体", Font.ITALIC, 15));
    			jBDeleteCurrentRecord.setForeground(Color.RED);
    			jBDeleteAllRecords = new JButton("删除所有记录");
    			jBDeleteAllRecords.setBounds(358, 205, 155, 27);
    			jPBottom.add(jBDeleteAllRecords);
    			jBDeleteAllRecords.setFont(new Font("宋体", Font.ITALIC, 15));
    			jBDeleteAllRecords.setForeground(Color.RED);
    			EXIT = new JButton("返回主页面");
    			EXIT.setBounds(527, 205, 155, 27);
    			jPBottom.add(EXIT);
    			EXIT.addMouseListener(new MouseAdapter() {
    				@Override
    				public void mouseClicked(MouseEvent e) {
    					dispose();                    
    					Teacher ui=new Teacher();
    				}
    			});
    			
    			EXIT.setFont(new Font("宋体", Font.BOLD, 15));
    			EXIT.setForeground(Color.RED);
    			EXIT.addActionListener(this);
    			jBDeleteAllRecords.addActionListener(this);
    			jBDeleteCurrentRecord.addActionListener(this);
    			jBUpdate.addActionListener(this);
    			jBInsert.addActionListener(this);
    
    			getContentPane().setLayout(new GridLayout(2, 1));
    			this.setTitle("账号密码查改");
    			this.setSize(700, 568);// 改表的大小
    			this.setLocation(630, 180);// 改表的位置
    			this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			this.setVisible(true);// 使页面显示
    			// this.setVisible(false);使页面消失
    
    			dbProcess = new DbProcess();
    
    		}
    
    		// 监听器事件
    		public void actionPerformed(ActionEvent e) { // 事件判断
    
    			if (e.getActionCommand().equals("查询选择内容") && !jTFQueryField.getText().isEmpty()) {
    				System.out.println("actionPerformed(). 查询选择内容");
    				String sQueryField = jTFQueryField.getText().trim();
    				int n=JOptionPane.showConfirmDialog(null,"确定查询该选项?", "账号密码记录",JOptionPane.YES_NO_OPTION);
    				if(n==0) {
    					queryProcess(sQueryField);
    					jTFQueryField.setText("");
    				}
    			} if (e.getActionCommand().equals("查询所有记录")) {
    				System.out.println("actionPerformed(). 查询所有记录");
    				int n=JOptionPane.showConfirmDialog(null,"确定查询所有记录?", "账号密码记录",JOptionPane.YES_NO_OPTION);
    				if(n==0) {
    					queryAllProcess();
    				}
    			} if (e.getActionCommand().equals("插入") && !jTFSTz.getText().isEmpty() && !jTFSTP.getText().isEmpty()
    					&& !jTFSSZ.getText().isEmpty() && !jTFSSP.getText().isEmpty() ) {
    				System.out.println("actionPerformed(). 插入");
    				int n=JOptionPane.showConfirmDialog(null,"确定插入该条记录?", "账号密码记录",JOptionPane.YES_NO_OPTION);
    				if(n==0) {
    					insertProcess();
    					JOptionPane.showMessageDialog(null, "                                插入成功", "插入成功", JOptionPane.PLAIN_MESSAGE);
    				} 
    			} if (e.getActionCommand().equals("更新") && !jTFSTz.getText().isEmpty() && !jTFSTP.getText().isEmpty()
    					&& !jTFSSZ.getText().isEmpty() && !jTFSSP.getText().isEmpty() ) {
    				System.out.println("actionPerformed(). 更新");
    				int n=JOptionPane.showConfirmDialog(null,"确定更新该条记录?", "账号密码记录",JOptionPane.YES_NO_OPTION);
    				if(n==0) {
    					JOptionPane.showMessageDialog(null, "                                更新成功", "更新成功", JOptionPane.PLAIN_MESSAGE);
    					updateProcess();
    					dispose();
    					Student_management_login_system sm=new Student_management_login_system();
    				} 
    			}  if (e.getActionCommand().equals("删除当前记录")) {
    				System.out.println("actionPerformed(). 删除当前记录");
    				int n=JOptionPane.showConfirmDialog(null,"注意:确定删除该条记录?", "账号密码记录",JOptionPane.YES_NO_OPTION);
    				if(n==0) {
    					JOptionPane.showMessageDialog(null, "                                删除成功", "删除成功", JOptionPane.PLAIN_MESSAGE);
    					deleteCurrentRecordProcess();
    				} 
    			} if (e.getActionCommand().equals("删除所有记录"))   {
    				System.out.println("actionPerformed(). 删除所有记录");
    				int n=JOptionPane.showConfirmDialog(null,"注意:确定删除所有记录?", "账号密码记录",JOptionPane.YES_NO_OPTION);
    				if(n==0) {
    					JOptionPane.showMessageDialog(null, "                                全部删除成功", "全部删除成功", JOptionPane.PLAIN_MESSAGE);
    					deleteAllRecordsProcess();
    				}
    			}
    
    		}
    
    		// “查询”程序
    		public void queryProcess(String sQueryField) {
    			try {
    				// 建立查询条件
    				if(SelectQueryFieldStr=="老师账号"||SelectQueryFieldStr=="老师密码") {
    				String sql = "SELECT `teacherdlb`.tuserNo,`teacherdlb`.tpswd FROM `teacherdlb`  WHERE teacherdlb.tpswd IS NOT NULL  AND ";
    				String queryFieldStr = jCBSelectQueryFieldTransfer(SelectQueryFieldStr);
    				System.out.println(queryFieldStr);
    
    				
    					sql = sql + queryFieldStr;
    					sql = sql + " = ";
    					sql = sql + "'" + sQueryField + "';";
    			
    				String sql1 = "SELECT `studentdlb`.suserNo,`studentdlb`.spswd FROM `studentdlb`  WHERE studentdlb.spswd IS NOT NULL ; ";
    				System.out.println("queryProcess(). sql = " + sql);
    
    				dbProcess.connect();
    				ResultSet rs = dbProcess.executeQuery(sql);
    				ResultSet rs1 = dbProcess.executeQuery(sql1);
    
    				// 将查询获得的记录数据,转换成适合生成JTable的数据形式
    				studentVector.clear();
    				while (rs.next()&&rs1.next()) {
    					Vector v = new Vector();
    					v.add(rs.getString("tuserNo"));
    					v.add(rs.getString("tpswd"));
    					v.add(rs1.getString("suserNo"));
    					v.add(rs1.getString("spswd"));
    					
    					studentVector.add(v);//显示表
    				}
    
    				studentJTable.updateUI();
    
    				dbProcess.disconnect();}
    				
    				if(SelectQueryFieldStr=="学生账号"||SelectQueryFieldStr=="学生密码") {
    					String sql = "SELECT `studentdlb`.suserNo,`studentdlb`.spswd FROM `studentdlb`  WHERE studentdlb.spswd IS NOT NULL  AND ";
    					String queryFieldStr = jCBSelectQueryFieldTransfer(SelectQueryFieldStr);
    					System.out.println(queryFieldStr);
    
    					
    						sql = sql + queryFieldStr;
    						sql = sql + " = ";
    						sql = sql + "'" + sQueryField + "';";
    				
    					String sql1 = "SELECT `teacherdlb`.tuserNo,`teacherdlb`.tpswd FROM `teacherdlb`  WHERE teacherdlb.tpswd IS NOT NULL ; ";
    					System.out.println("queryProcess(). sql = " + sql);
    
    					dbProcess.connect();
    					ResultSet rs = dbProcess.executeQuery(sql);
    					ResultSet rs1 = dbProcess.executeQuery(sql1);
    
    					// 将查询获得的记录数据,转换成适合生成JTable的数据形式
    					studentVector.clear();
    					while (rs.next()&&rs1.next()) {
    						Vector v = new Vector();
    						v.add(rs1.getString("tuserNo"));
    						v.add(rs1.getString("tpswd"));
    						v.add(rs.getString("suserNo"));
    						v.add(rs.getString("spswd"));
    						
    						studentVector.add(v);//显示表
    					}
    
    					studentJTable.updateUI();
    
    					dbProcess.disconnect();}
    				
    			} catch (SQLException sqle) {
    				System.out.println("sqle = " + sqle);
    				JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);
    			} catch (Exception e) {
    				System.out.println("e = " + e);
    				JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);
    			}
    		}
    
    		// “查询全部”程序
    		public void queryAllProcess() {
    			try {
    				// 建立查询条件
    				String sql = "SELECT `studentdlb`.suserNo,`studentdlb`.spswd FROM `studentdlb`  WHERE studentdlb.spswd IS NOT NULL  ;";
    				String sql1 = "SELECT `teacherdlb`.tuserNo,`teacherdlb`.tpswd FROM `teacherdlb`  WHERE teacherdlb.tpswd IS NOT NULL ; ";
    				System.out.println("queryProcess(). sql = " + sql);
    
    				dbProcess.connect();
    				ResultSet rs = dbProcess.executeQuery(sql);
    				ResultSet rs1 = dbProcess.executeQuery(sql1);
    
    				// 将查询获得的记录数据,转换成适合生成JTable的数据形式
    				studentVector.clear();
    				while (rs.next()&&rs1.next()) {
    					Vector v = new Vector();
    					v.add(rs1.getString("tuserNo"));
    					v.add(rs1.getString("tpswd"));
    					v.add(rs.getString("suserNo"));
    					v.add(rs.getString("spswd"));
    					studentVector.add(v);//显示表
    				}
    
    				studentJTable.updateUI();
    
    				dbProcess.disconnect();
    			} catch (SQLException sqle) {
    				System.out.println("sqle = " + sqle);
    				JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);
    			}
    		}
    
    		// “插入”程序
    		public void insertProcess() {
    			String tuserNo = jTFSTz.getText().trim();
    			String tpswd = jTFSTP.getText().trim();
    			String suserNo = jTFSSZ.getText().trim();
    			String spswd = jTFSSP.getText().trim();
    
    			// 建立插入条件
    			String sql = "insert into `teacherdlb` values('";
    			sql = sql + tuserNo + "','";
    			sql = sql + tpswd + "');";
    			
    			String sql1 = "insert into `studentdlb` values('";
    			sql1 = sql1 + suserNo + "','";
    			sql1 = sql1 + spswd + "');";
    			System.out.println("insertProcess(). sql = " + sql+"insertProcess(). sql1 = " + sql1);
    			try {
    				if (dbProcess.executeUpdate(sql) < 1||dbProcess.executeUpdate(sql1) < 1) {
    					System.out.println("insertProcess(). insert database failed.");
    				}
    			} catch (Exception e) {
    				System.out.println("e = " + e);
    				JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);
    			}
    			queryAllProcess();
    		}
    
    		// “更新”程序
    		public void updateProcess() {
    			String tuserNo = jTFSTz.getText().trim();
    			String tpswd = jTFSTP.getText().trim();
    			String suserNo = jTFSSZ.getText().trim();
    			String spswd = jTFSSP.getText().trim();
    
    			// 建立更新条件
    			String sql = "update teacherdlb set tpswd = '";
    			sql = sql + tpswd + "'";
    			sql = sql + " WHERE tuserNo = '" + tuserNo + "';";
    			
    			String sql1 = "update studentdlb set spswd = '";
    			sql1 = sql1 + spswd + "'";
    			sql1 = sql1 + " WHERE suserNo = '" + suserNo + "';";
    			
    			System.out.println("updateProcess(). sql = " + sql+"updateProcess(). sql1 = " + sql1);
    			try {
    				if (dbProcess.executeUpdate(sql) < 1||dbProcess.executeUpdate(sql1) < 1) {
    					System.out.println("updateProcess(). update database failed.");
    				}
    			} catch (Exception e) {
    				System.out.println("e = " + e);
    				JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);
    			}
    			queryAllProcess();
    		}
    
    		// “删除”程序
    		public void deleteCurrentRecordProcess() {
    			String tuserNo = jTFSTz.getText().trim();
    			String suserNo = jTFSSZ.getText().trim();
    
    			// 建立删除条件
    			String sql = "delete from teacherdlb where tuserNo = '" + tuserNo + "';";
    			String sql1 = "delete from studentdlb where suserNo = '" + suserNo + "';";
    			System.out.println("deleteCurrentRecordProcess(). sql = " + sql+"deleteCurrentRecordProcess(). sql1 = " + sql1);
    			try {
    				if (dbProcess.executeUpdate(sql) < 1||dbProcess.executeUpdate(sql1) < 1) {
    					System.out.println("deleteCurrentRecordProcess(). delete database failed.");
    				}
    			} catch (Exception e) {
    				System.out.println("e = " + e);
    				JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);
    			}
    			queryAllProcess();
    		}
    
    		// “删除全部”程序
    		public void deleteAllRecordsProcess() {
    			// 建立删除条件
    			String sql = "delete from teacherdlb;";
    			String sql1 = "delete from studentdlb;";
    			System.out.println("deleteAllRecordsProcess(). sql = " + sql+"deleteAllRecordsProcess(). sql1 = " + sql1);
    			try {
    				if (dbProcess.executeUpdate(sql) < 1||dbProcess.executeUpdate(sql1) < 1) {
    					System.out.println("deleteAllRecordsProcess(). delete database failed.");
    				}
    			} catch (Exception e) {
    				System.out.println("e = " + e);
    				JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);
    			}
    			queryAllProcess();
    		}
    
    		public String jCBSelectQueryFieldTransfer(String InputStr) {
    			String outputStr = "";
    			System.out.println("jCBSelectQueryFieldTransfer(). InputStr = " + InputStr);
    
    			if (InputStr.equals("老师账号")) {
    				outputStr = "tuserNo";
    			} else if (InputStr.equals("老师密码")) {
    				outputStr = "tpswd";
    			} else if (InputStr.equals("学生账号")) {
    				outputStr = "suserNo";
    			} else if (InputStr.equals("学生密码")) {
    				outputStr = "spswd";
    			} 
    			System.out.println("jCBSelectQueryFieldTransfer(). outputStr = " + outputStr);
    			return outputStr;
    		}
    
    		// 退出程序
    		public void close() {
    			System.exit(0);
    		}
    }
    
    
    

    图3-3老师学生账号密码界面
    在这里插入图片描述
    3.4、新生信息输入界面
    新生信息输入界面请见如图3-4新生信息输入界面。这个界面的设计同样是专门为教务办用户设计,首先这个界面是一个录入新生信息的界面,在每一个文本框都有相应输入的数据格式的提示比如生日的文本框所提示的内容是“2013-05-20”这种格式,因为在数据库中的学生信息表格中设计的时间的数据类型是date类型,所以必须用这种数据格式的填写才能成功插入到数据库相应的表格里面去。只有当所有的文本框中都输有正确数据,然后点击确认键,然后会弹出一个窗口让用户再确认一次是否允许该操作的执行,减少用户操作失误的几率。插入数据成功之后界面的所有文本框会清空,用户可以再继续将其他学生信息插入到学生信息表中;也可以点击返回,然后返回主界面。
    实现新生信息输入界面的全部代码:

    package xr06;
    
    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    
    import java.awt.Font;
    import java.awt.Color;
    import java.awt.SystemColor;
    import javax.swing.JTextField;
    import javax.swing.ButtonGroup;
    import javax.swing.JButton;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import javax.swing.JRadioButton;
    import javax.swing.ImageIcon;
    import java.awt.Toolkit;
    
    public class Newstudent extends JFrame {
    	static String select="男";
    	ButtonGroup bg=null;
    	private static DbProcess dbProcess;
    	private JPanel contentPane;
    	private JTextField textField;
    	private JTextField textField_1;
    	private JTextField textField_3;
    	private JTextField textField_4;
    	private JTextField textField_5;
    	private JTextField textField_6;
    
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		
    					Newstudent f = new Newstudent();
    					
    	}
    
    	/**
    	 * Create the frame.
    	 */
    	public Newstudent() {
    		setIconImage(Toolkit.getDefaultToolkit().getImage("G:\\timg-1.jpg"));
    		
    		
    		this.setResizable(false);
    		setFont(new Font("Dialog", Font.BOLD, 25));
    		setTitle("新生信息输入");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(700, 200, 570, 533);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
    		
    		JPanel panel = new JPanel();
    		panel.setBackground(new Color(255, 255, 153));
    		panel.setBounds(0, 0, 566, 498);
    		contentPane.add(panel);
    		panel.setLayout(null);
    		
    		JLabel lblNewLabel = new JLabel("新生信息输入");
    		lblNewLabel.setBounds(182, 13, 197, 36);
    		lblNewLabel.setBackground(Color.LIGHT_GRAY);
    		lblNewLabel.setFont(new Font("华文新魏", Font.BOLD, 30));
    		panel.add(lblNewLabel);
    		
    		JLabel lblNewLabel_1 = new JLabel("学号:");
    		lblNewLabel_1.setFont(new Font("宋体", Font.BOLD, 20));
    		lblNewLabel_1.setBounds(92, 76, 71, 18);
    		panel.add(lblNewLabel_1);
    		
    		JLabel label = new JLabel("姓名:");
    		label.setFont(new Font("宋体", Font.BOLD, 20));
    		label.setBounds(92, 126, 74, 18);
    		panel.add(label);
    		
    		JLabel label_1 = new JLabel("性别:");
    		label_1.setFont(new Font("宋体", Font.BOLD, 20));
    		label_1.setBounds(92, 176, 70, 18);
    		panel.add(label_1);
    		
    		JLabel label_2 = new JLabel("生日:");
    		label_2.setFont(new Font("宋体", Font.BOLD, 20));
    		label_2.setBounds(92, 226, 77, 18);
    		panel.add(label_2);
    		
    		JLabel label_3 = new JLabel("地址:");
    		label_3.setFont(new Font("宋体", Font.BOLD, 20));
    		label_3.setBounds(92, 276, 66, 18);
    		panel.add(label_3);
    		
    		textField = new JTextField();
    		textField.setBounds(162, 74, 255, 24);
    		panel.add(textField);
    		textField.setColumns(10);
    		textField.addFocusListener(new JTextFieldHintListener("新生学号 如 1705", textField));
    		
    		textField_1 = new JTextField();
    		textField_1.addFocusListener(new JTextFieldHintListener("新生姓名 如 XR", textField_1));
    		textField_1.setColumns(10);
    		textField_1.setBounds(162, 124, 255, 24);
    		
    		panel.add(textField_1);
    		
    		
    		textField_3 = new JTextField();
    		textField_3.addFocusListener(new JTextFieldHintListener("新生生日 如 2013-05-20", textField_3));
    		textField_3.setColumns(10);
    		textField_3.setBounds(162, 224, 255, 24);
    		panel.add(textField_3);
    		
    		textField_4 = new JTextField();
    		textField_4.addFocusListener(new JTextFieldHintListener("新生地址籍贯 如 湖南长沙", textField_4));
    		textField_4.setColumns(10);
    		textField_4.setBounds(162, 274, 255, 24);
    		panel.add(textField_4);
    		
    		JLabel label_4 = new JLabel("院系:");
    		label_4.setFont(new Font("宋体", Font.BOLD, 20));
    		label_4.setBounds(92, 326, 66, 18);
    		panel.add(label_4);
    		
    		textField_5 = new JTextField();
    		textField_5.addFocusListener(new JTextFieldHintListener("新生院系 如 0101", textField_5));
    		textField_5.setColumns(10);
    		textField_5.setBounds(162, 324, 255, 24);
    		panel.add(textField_5);
    		
    		JLabel label_5 = new JLabel("班名:");
    		label_5.setFont(new Font("宋体", Font.BOLD, 20));
    		label_5.setBounds(92, 376, 66, 18);
    		panel.add(label_5);
    		
    		textField_6 = new JTextField();
    		textField_6.addFocusListener(new JTextFieldHintListener("新生班名 如 01", textField_6));
    		textField_6.setColumns(10);
    		textField_6.setBounds(162, 374, 255, 24);
    		panel.add(textField_6);
    		
    		JButton btnNewButton = new JButton("确认");
    		btnNewButton.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				if ( !textField.getText().isEmpty() && !textField_1.getText().isEmpty()
    						 && !textField_3.getText().isEmpty() && !textField_4.getText().isEmpty()
    						&& !textField_5.getText().isEmpty() && !textField_6.getText().isEmpty()) {
    					System.out.println("mouseClicked(). 确认");
    					int n=JOptionPane.showConfirmDialog(null,"确定录入该生信息?", "新生信息录入",JOptionPane.YES_NO_OPTION);
    					if(n==0) {
    						insertProcess();
    						JOptionPane.showMessageDialog(null, "                   录入信息成功", "输入信息成功", JOptionPane.PLAIN_MESSAGE); 
    						textField.setText("");
    						textField_1.setText("");
    						textField_3.setText("");
    						textField_4.setText("");
    						textField_5.setText("");
    						textField_6.setText("");
    					}
    				}
    				else {JOptionPane.showMessageDialog(null, "                   请输入完整数据,谢谢", "请输入完整数据", JOptionPane.PLAIN_MESSAGE); }
    		}
    			});
    		btnNewButton.setForeground(Color.BLACK);
    		btnNewButton.setBackground(Color.ORANGE);
    		btnNewButton.setFont(new Font("宋体", Font.BOLD, 20));
    		btnNewButton.setBounds(322, 433, 95, 35);
    		panel.add(btnNewButton);
    		
    		JButton button = new JButton("返回");
    		button.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				dispose();
    				Teacher t = new Teacher();
    			}
    		});
    		button.setForeground(Color.RED);
    		button.setFont(new Font("宋体", Font.BOLD, 20));
    		button.setBackground(Color.ORANGE);
    		button.setBounds(438, 433, 95, 35);
    		panel.add(button);
    		
    		
    		JRadioButton rdbtnNewRadioButton = new JRadioButton("男");
    		rdbtnNewRadioButton.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				System.out.println("选择“男”");
    				select="男";
    			}
    		});
    		rdbtnNewRadioButton.setFont(new Font("宋体", Font.BOLD, 17));
    		rdbtnNewRadioButton.setBackground(new Color(255, 255, 153));
    		rdbtnNewRadioButton.setBounds(162, 174, 77, 27);
    		panel.add(rdbtnNewRadioButton);
    		
    		JRadioButton rdbtnNewRadioButton_1 = new JRadioButton("女");
    		rdbtnNewRadioButton_1.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				System.out.println("选择“女”");
    				select="女";
    			}
    		});
    		
    		rdbtnNewRadioButton_1.setFont(new Font("宋体", Font.BOLD, 17));
    		rdbtnNewRadioButton_1.setBackground(new Color(255, 255, 153));
    		rdbtnNewRadioButton_1.setBounds(238, 174, 157, 27);
    		panel.add(rdbtnNewRadioButton_1);
    		this.setVisible(true);
    		bg=new ButtonGroup();  
            bg.add(rdbtnNewRadioButton);  
            bg.add(rdbtnNewRadioButton_1);  
            rdbtnNewRadioButton.setSelected(true);
    		dbProcess = new DbProcess();
    		
    	}
    	public void insertProcess() {
    		
    		String Sno = textField.getText().trim();
    		String Sname = textField_1.getText().trim();
    		String Ssex = select;
    		String Sbirth = textField_3.getText().trim();
    		String Sadd = textField_4.getText().trim();
    		String Sacademy = textField_5.getText().trim();
    		String Scla = textField_6.getText().trim();
    
    		// 建立插入条件
    		String sql = "insert into student values('";
    		sql = sql + Sno + "','";
    		sql = sql + Sname + "','";
    		sql = sql + Ssex + "','";
    		sql = sql + Sbirth + "','";
    		sql = sql + Sadd + "','";
    		sql = sql + Sacademy + "','";
    		sql = sql + Scla + "');";
    
    		System.out.println("insertProcess(). sql = " + sql);
    		try {
    			if (dbProcess.executeUpdate(sql) < 1) {
    				System.out.println("insertProcess(). insert database failed.");
    			}
    		} catch (Exception e) {
    			System.out.println("e = " + e);
    			JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);
    		}
    	}
    }
    
    

    图3-4新生信息输入界面
    在这里插入图片描述

    以上只是数据库课设之学生信息管理系统部分设计内容和源代码资源,如果想要学生信息管理系统全部资源请点击下面资源链接进行下载,希望能帮助到你!

    独家资源:点击资源下载链接

    同时在完成相关设计可能会用到的博主博客中的文章内容:

    1、Navicat for MySQL资源分享和下载以及SQL文件的导入导出

    2、Eclipse最新最简最详细安装教程

    各位大佬如有更好的建议或者不清楚的地方让各位产生了疑问,各位可以在评论中提出!

    展开全文
  • 【python毕业设计】Django框架实现学生信息管理系统

    万次阅读 多人点赞 2019-08-10 16:39:01
    Django框架实现学生信息管理系统 总体概括 注册流程 首先进行输入用户名(邮箱)、密码以及验证码,输入完之后点击注册按钮。如果输入的不正确,提示错误信息。 如果一切信息填写正确无误,调用STMP...
  • 学生信息管理系统,包括学生信息添加,修改,教师信息的添加和修改,还有课程,班级等的添加和修改,其中还包括学生 选课,退课,成绩查询等......
  • C语言学生信息管理系统,控制台版,C语言的课程设计,有代码有程序,强大的全上下左右操作。
  • 本文就详细的设计了一个学生信息管理系统,把学生信息的一些相关的点名查询的详细信息囊括其中,尽量使整个管理系统层次鲜明,概括清楚。在阅读完本文后你将能够清楚的了解到一个学生信息管理系统的具体设计和实现...
  • 使用软件管理电子化的学生数据 通过软件使用电子化的学生数据 减少重复性的劳动、提高工作效率 为后续系统提供功能支持
  • 学生信息管理系统是一个能够简单快捷的对学生信息进行管理的的系统,能够大大的解决人员操作带来的不便和不必要的错误。基于学生信息量和数据的综合考虑,该系统在Visual Basic6.0环境下采用“自上而下地总体规划,...
  • 学生信息管理系统设计 精品文档 精品文档 收集于网络如有侵权请联系管理员删除 收集于网络如有侵权请联系管理员删除 精品文档 收集于网络如有侵权请联系管理员删除 学生信息管理系统详细设计说明书 TOC \o "1-2" \h ...
  • C语言开发简单的学生成绩管理系统(附源码)

    万次阅读 多人点赞 2019-04-15 21:08:22
    学生成绩管理系统 开发语言:C语言 开发工具:Visual Studio 2019 开发时间:2019.4.14 开发者:summer @一、系统使用展示 @二、系统功能 @三、菜单 @四、录入学生信息 @五、打印学生信息 @六、保存学生信息 @七、...
  • c语言学生信息管理系统,能够成功运行。 内含代码,系统流程代码解释以及结果截图。 很适合新手参考学习。
  • 信息管理系统\学分制下学生信息管理系统的设计初探.PDF

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 58,499
精华内容 23,399
关键字:

学生信息管理系统流程