精华内容
下载资源
问答
  • 4.2学生成绩管理系统功能设计 22 4.3学生成绩管理系统数据库设计 22 4.3.1数据库中的概念结构设计 23 4.3.2数据库中的逻辑结构设计 24 4.3.3 数据库中的物理结构设计 25 5信息系统实施 28 5.1 系统测试要点 28 5.2 ...
  • 完整且功能完善的学生成绩管理系统实验报告,包括流程,分析....
  • 功能流程;需求分析; 处理 判断用户名是否与密码匹配 需要对于成绩录入判断是否符合业务规则 对于符合规则的成绩计算总分并分出成 绩档次后按照总评进行排序;类图;关键问题及解决方案;导出数据;心得体会;谢谢观赏
  • 学生成绩管理系统

    千次阅读 2018-12-10 16:58:03
    上周和同学一起写了一个学生成绩管理系统,可读可写该有的功能都有,就差个图形化界面就可以送给学校用了。 主要功能 1.学生能够登入系统查询语文、数学、英语三科成绩,及三科的平均分、总分、排名。 2.教师能够...

    学生成绩管理系统

    PS.上周和同学一起写了一个学生成绩管理系统,可读可写该有的功能都有,就差个图形化界面就可以送给学校用了。
    

    主要功能

    1.学生能够登入系统查询语文、数学、英语三科成绩,及三科的平均分、总分、排名。

    2.教师能够管理学生、录入学生考试成绩。

    3.管理员能够管理教师,超级管理员有且只有一个,只为管理普通管理员。

    4.除超级管理员外,所以用户连续登入三次账号被锁定,需要上级用户才能解锁。

    5.除超级管理员外,所有用户ID要求有序且唯一。

    6.除超级管理员外,所有用户登入必须修改密码。

    编写代码前的准备

    1.分析整个系统功能的实现

        首先我们定义了3个结构体,分别代表学生,老师,和管理员。代码如下
    
    struct Admin//管理员
    {
       int number;//工号
       char name[20];//姓名
       char code[20];//密码
       int year;//出生年
       int work_year;//参加工作的那年
       char sex;//性别
       char state;//0正常 1 冻结 2 离职
    
    };
    struct Teacher//老师
    {
       int number;//工号
       char name[20];//姓名
       char sex;//性别
       int year;//出生年
       int work_year;//入职年
       char code[20];//密码
       char state;//0正常 1 冻结 2 退学	
    };
    struct Student//学生
    {
       char code[20];//密码
       char name[20];//姓名
       int number;//学号
       int year;//出生年
       int math;//数学成绩
       int English;//英语成绩
       int chinese;//语文成绩
       char sex;//性别
       char state;//0正常 1 冻结 2 离职
    };
    
    考虑到我们可能会经常用到某些函数,我们决定先写出来放在一个公共的头文件中。
    第一个函数 清理输入缓冲区 由于scanf和gets经常会出bug我们决定自己写一个输入函数。
    
    void clear_stdin(void) //清理输入缓冲区
    {
    	stdin->_IO_read_ptr=stdin->_IO_read_end;
    }
    har* get_str(char* str,size_t size)//输入函数
    {
    	if(NULL == str) return str;
    	clear_stdin();
    	fgets(str,size,stdin);
    	if(size-1 == strlen(str))
    	{
    		if('\n'==str[size-2])
    			str[size-2]= '\0';
    		else
    			clear_stdin();
    	}
    	else
    		str[strlen(str)-1]='\0';
    }
    
    接下来考虑到我们有3个界面,老师学生还有管理员都需要账号密码登入,所以我们又写了一个相对隐蔽的密码输入函数和密码规则函数。
    
    int password_rule(char *str)//密码规则 ,输入的密码只能是数字,密码长度大于6位小于10位
    {
    	int x=strlen(str);
    	if(x<6 || x>10)
    	return 0;
    	for(int i=0;str[i];i++)
    	{
    		if(str[i]<'0' || str[i]>'9')
    		return 0;
    	}
    	return 1;
    }
    void password_input(char* str)//密码输入函数,让输入的密码用*号来显示增加密码的隐蔽性。
    {
    	for(int i=0;i<20;i++)
    	{
    		str[i]=getch();
    		if(i>0&&127 == str[i])
    		{
    			i-=2;
    			printf("\b \b");
    			continue;
    		}
    		if(127 == str[i])
    		{
    			i--;
    			continue;
    		}
    		if('\n'==str[i])
    		{
    			str[i]='\0';
    			break;
    		}
    		putchar('*');
    		
    	}
    }
    
    最后我们添加了一些管理系统中常用的函数
    
    void anykey_continue(void)//按任意键返回函数
    {
    	puts("按任意键返回......");
    	getch();
    }
    void show_msg(char* msg,int sec,int color)//延时输出函数,让字显示多少秒,顺便添加了点颜色
    {
    	if(0==color)
    	printf("\n\033[01;31m%s\n\033[00m\n",msg);
    	if(1==color)
    	printf("\n\033[01;32m%s\n\033[00m\n",msg);
    	if(2==color)
    	printf("\n\033[01;33m%s\n\033[00m\n",msg);
    	sleep(sec);
    }
    

    主界面

    void interface(void);//主菜单函数声明
    void student_interface(void);//学生入口
    void teacher_interface(void);//教师入口
    void administratorsr_interface(void);//管理员入口
    void super_administrators_interface(void);//超级管理员入口
    int cmp_stu_num(int num);//通过学号查找编号
    int cmp_stu_code(int num,char *str);//通过编号对学生密码进行验证
    int cmp_tea_num(int num);//通过工号查找编号
    int cmp_tea_code(int num,char *str);//通过编号对教师密码进行验证
    int cmp_adm_num(int num);//通过工号来查找编号
    int cmp_adm_code(int num,char *str);//通过编号对管理员密码进行验证
    void student_interface_son(int i);
    int cmp_stu_code(int num,char *str)
    {
    	if(num<0) return 0;
    	int i=strcmp(str,student[num].code);
    	if(i==0) return 1;
    	else return 0;
    }
    int cmp_stu_num(int num)
    {
    	for(int i=0;student[i].number;i++)
    	{
    		if(student[i].number==num)
    		return i;
    	}
    	return -1;
    }
    int cmp_tea_code(int num,char *str)
    {
    	if(num<0) return 0;
    	int i=strcmp(str,teacher[num].code);
    	if(i==0) return 1;
    	else return 0;
    }
    int cmp_tea_num(int num)
    {
    	for(int i=0;teacher[i].number;i++)
    	{
    		if(teacher[i].number==num)
    		return i;
    	}
    	return -1;
    }
    int cmp_adm_code(int num,char *str)
    {
    	if(num<0) return 0;
    	int i=strcmp(str,admin[num].code);
    	if(i==0) return 1;
    	else return 0;
    }
    int cmp_adm_num(int num)
    {
    	for(int i=0;admin[i].number;i++)
    	{
    		if(admin[i].number==num)
    		return i;
    	}
    	return -1;
    }
    void interface(void)
    {
    	system("clear");
    	puts("-----指针学生信息管理系统-----");	
    	puts("1.学生入口");
    	puts("2.教师入口");
    	puts("3.管理员入口");
    	puts("5.退出");
    }
    void student_interface(void)
    {
    	system("clear");
    	puts("----------学生登录----------");
    	puts("1.登入学生成绩查询系统");
    	puts("2.返回主界面");
    	int stu_num=0;
    	char stu_code[20];
    	int index=0;
    	switch(getch())
    	{
    		case 49:
    			while(1)
    			{
    				system("clear");
    				puts("-----登入学生成绩查询系统-----");
    				puts("1.输入账号密码:");
    				puts("2.退出");
    				switch(getch())
    				{
    					case 49:printf("请输入账号:");
    							scanf("%d",&stu_num);
    							printf("请输入密码:");
    							getch();
    							password_input(stu_code);
    							int i=cmp_stu_num(stu_num);
    							if(-1==i)
    							{
    								show_msg("账号不存在!",1,0);
    								continue;
    							}
    							if(student[i].state=='1')
    							{
    								show_msg("该账号已经被冻结!",1,0);
    								return;
    							}
    							if(student[i].state=='2')
    							{
    								show_msg("您已离校!无法登入!",1,0);
    								return;
    							}
    							if(cmp_stu_code(i,stu_code))
    							{
    								system("clear");
    								printf("%s同学,欢迎你!\n",student[i].name);
    								sleep(2);
    								student_interface_son(i);
    								index=0;
    							}
    							else if(2==index)
    							{
    								show_msg("你的账号已经被锁定",1,0);
    								student[i].state='1';
    								anykey_continue();
    								return;
    							}
    							else
    							{
    								printf("\n\033[01;33m你还剩%d次机会!\n\033[00m\n",2-index);
    								index++;
    								anykey_continue();
    							};
    							;break;
    					case 50:return;
    				}
    			}	
    			;break;//1.学生入口
    		case 50:return;break;//退出
    	}
    
    }
    void teacher_interface(void)
    {
    	system("clear");
    	puts("----------教师登录----------");
    	puts("1.登入教师管理系统");
    	puts("2.返回主界面");
    	int tea_num=0;
    	char tea_code[20];
    	int index=0;
    	switch(getch())
    	{
    		case 49:
    			while(1)
    			{
    				system("clear");
    				puts("-----登入教师管理系统-----");
    				puts("1.输入账号密码:");
    				puts("2.退出");
    				switch(getch())
    				{
    					case 49:printf("请输入教师工号:");
    							scanf("%d",&tea_num);
    							printf("请输入密码:");
    							getch();
    							password_input(tea_code);
    							int i=cmp_tea_num(tea_num);
    							if(-1==i)
    							{
    								show_msg("账号不存在!",1,0);
    								continue;
    							}
    							if(teacher[i].state=='1')
    							{
    								show_msg("该账号已经被冻结!",1,0);
    								return;
    							}
    							if(cmp_tea_code(i,tea_code))
    							{
    								system("clear");
    								printf("%s老师,欢迎您!\n",teacher[i].name);
    								sleep(2);
    								teacher_interface_son(i);
    								index=0;
    							}
    							else if(2==index)
    							{
    								show_msg("你的账号已经被锁定",1,0);
    								teacher[i].state='1';
    								anykey_continue();
    								return;
    							}
    							else
    							{
    								printf("\n\033[01;33m你还剩%d次机会!\n\033[00m\n",2-index);
    								index++;
    								anykey_continue();
    							};
    							;break;
    					case 50:return;
    				}
    			}	
    			;break;
    		case 50:return;break;
    	}
    }
    void administratorsr_interface(void)
    {
    	system("clear");
    	puts("----------管理员登录----------");
    	puts("1.登入管理员管理系统");
    	puts("2.返回主界面");
    	int adm_num=0;
    	char adm_code[20];
    	int index=0;
    	switch(getch())
    	{
    		case 49:
    			while(1)
    			{
    				system("clear");
    				puts("-----登入管理员管理系统-----");
    				puts("1.输入账号密码:");
    				puts("2.退出");
    				switch(getch())
    				{
    					case 49:printf("请输入管理员工号:");
    							scanf("%d",&adm_num);
    							printf("请输入密码:");
    							getch();
    							password_input(adm_code);
    							int i=cmp_adm_num(adm_num);
    							if(-1==i)
    							{
    								show_msg("账号不存在!",1,0);
    								anykey_continue();
    								continue;
    							}
    							if(admin[i].state=='1')
    							{
    								show_msg("该账号已经被冻结!",1,0);
    								anykey_continue();
    								return;
    							}
    							if(cmp_adm_code(i,adm_code))
    							{
    								system("clear");
    								printf("%s管理员,欢迎您!\n",admin[i].name);
    								sleep(2);
    								admin_interface_son(i);
    								index=0;
    							}
    							else if(2==index)
    							{
    								show_msg("你的账号已经被锁定",1,0);
    								admin[i].state='1';
    								anykey_continue();
    								return;
    							}
    							else
    							{
    								printf("\n\033[01;33m你还剩%d次机会!\n\033[00m\n",2-index);
    								index++;
    								anykey_continue();
    							};
    							;break;
    					case 50:return;
    				}	
    			}	
    			;break;
    		case 50:return;break;
    	}
    }
    void super_administrators_interface(void)
    {
    	while(1)
    	{
    		system("clear");
    		puts("1.请输入指令:");
    		puts("2.退出");
    		switch(getch())
    		{
    			case 49:system("clear");
    					puts("输入口令:");
    					char sup_adm_mima[30]={};
    					password_input(sup_adm_mima);
    					int index=strcmp(sup_adm_mima,"asdfghjkl123456789");
    					if(index==0)
    					{
    						show_msg("登入成功!!",1,0);
    						super_administrators_interface_son();
    					}
    					else
    					{
    						anykey_continue();
    						return;
    					};break;
    			case 50:return;
    		}
    	}
    }
    

    教师界面

    int _find_num( int key);//寻找学号
    char *_find_name(char* name,char* key);//寻找姓名
    void _show_stu(int key,int b);//显示信息
    void add_stu_more(void);//导入学生
    void add_stu(void);//增加学生(可能需要修改)
    void del_stu(void);//删除学生
    void modify_stu(void);//修改学生信息
    void reset_code(void);//重置密码
    void unlock_account(void);//解锁账号
    void find_name_stu(void);//按姓名查找
    void show_01_stu(void);//显示在校学生
    void show_2_stu(void);//显示离校学生
    void add_score_more(void);//导入分数
    void add_score(void);//添加分数
    void modify_score(void);//修改分数
    void sort_score(void);//按成绩排序
    void find_name_num_score(void);//按学号查分数
    void teacher_interface_son(int i);//教师界面
    void student_achievement_management(void);//学生成绩管理
    void student_information_management(void);//学生信息管理
    void change_tea_password(int i);
    int _find_num( int key)//寻找学号
    {
    	for(int i=0 ;i<stu_count;i++)
    	{
    		if(student[i].number==key && student[i].state!= '2')
    		{
    			return i;
    		}
    	}
    	return -1;
    }
    char *_find_name(char* name,char* key)//寻找姓名
    {
    	int count=0;
    	for(int i=0;i<stu_count;i++)
    	{
    		if(0==strcmp(student[i].name,name) && (student[i].state=='0'|| student[i].state=='1'))
    		{
    			key[count]=i+'0';
    			count++;
    		}
    	}
    	key[count]='\0';
    	return key;
    }
    void _show_stu(int key,int b)//显示信息
    {
    	system("clear");
    	printf("学号:%4d ",student[key].number);
    	printf("性别:%3s ",'1'==student[key].sex?"男":"女");
    	printf("姓名:%4s ",student[key].name);
    	if(b==1)
    	{
    	printf("语文:%4d ",student[key].chinese);
    	printf("数学:%4d ",student[key].math);
    	printf("英语:%4d ",student[key].English);
    	}
    	printf("\n");
    	sleep(1);
    }
    void add_stu_more(void)//导入学生
    {
    
    	system("clear");
    	puts("---------导入学生---------");
    	FILE* fp=fopen("add_stu.txt","r");
    	if(NULL==fp)
    	{
    		perror("fopen");
    		return ;
    	}	
    	while(1)
    	{
    		int num=100000;
    		stu_count++;
    		fscanf(fp,"%s %d %c",student[stu_count-1].name,&student[stu_count-1].year,&student[stu_count-1].sex);
    		if(feof(fp)==1)
    		{
    			stu_count--;
    			break;
    		}
    		student[stu_count-1].number=num+stu_count;
    		strcpy(student[stu_count-1].code,"123456");
    		student[stu_count-1].state='0';
    	}	
    	fclose(fp);
    		show_msg("添加成功!按任意键返回!",1,1);
    		getch();
    }
    void add_stu(void)//增加学生
    {
    	system("clear");
    	printf("----------增加学生---------\n");
    	stu_count++;
    	int num=100000;int sex=0;
    	student[stu_count-1].number=num+stu_count;
    	strcpy(student[stu_count-1].code,"123456");
    	printf("请输入姓名:\n");
    	gets(student[stu_count-1].name);
    
    	while(1)
    	{	
    		printf("请输入性别1.男 2.女\n");
    		sex=getch();
    		if(sex==49||sex==50)
    		{
    			printf("%s\n",sex==49?"男":"女");
    			student[stu_count-1].sex=sex;
    			break;
    		}
    		else
    		show_msg("性别输入错误!",1,0);
    	}
    	student[stu_count-1].state='0';
    	printf("请输入出生年份:\n");
    	scanf("%d",&student[stu_count-1].year);
    	show_msg("添加成功!",1,1);
    	sleep(1);	
    }
    void del_stu(void)//删除学生
    {
    	system("clear");
    	int key=0;int num=0;int yes;
    	printf("----------删除学生---------\n");
    	printf("请输入需删除学生的学号\n");
    	while(1)
    	{
    		scanf("%d",&key);
    		getchar();
    		num=_find_num(key);
    		if(-1==num)
    		{
    			show_msg("该学生学号不存在!",1,0);
    			show_msg("是否重新输入?y/n",1,2);
    			yes=getch();
    			if(121==yes || 89==yes)
    			{	continue; }
    			else
    			{   break;    }	
    		}	
    		else
    		{
    			_show_stu(num,0);
    			show_msg("是否继续删除?y/n",1,2);
    			yes=getch();
    			if(yes==121 || yes==89)
    			{	
    				student[num].state='2';
    				show_msg("删除成功!",1,1);
    				break;
    			}
    			else
    			{
    				printf("输入学号:\n");
    			}
    		}	
    	}
    	sleep(1);
    }
    void modify_stu(void)//修改学生信息
    {
    	system("clear");
    	int key=0;int num=0;char name[20];int year=0;
    	printf("----------修改信息---------\n");
    	printf("请输入需修改学生的学号\n");
    		scanf("%d",&key);
    		getchar();
    		num=_find_num(key);
    		if(-1==num)
    		show_msg("该学生学号不存在!",1,0);
    		else
    		{
    			printf("输入修改的姓名:\n");
    			strcpy(student[num].name,gets(name));
    			printf("输入出生年份:\n");
    			scanf("%d",&year);
    			student[num].year=year;
    			show_msg("修改成功!",1,1);		
    		}
    	sleep(1);
    }
    void reset_code(void)//重置密码
    {
    	system("clear");
    	int key=0;int num=0;
    	printf("----------重置密码----------\n");
    	printf("请输入需要重置密码学生的学号\n");
    	scanf("%d",&key);
    	getchar();
    	num=_find_num(key);
    	if(-1==num)
    		show_msg("该学生学号不存在!",1,0);
    	else
    	{
    		strcpy(student[num].code,"123456");
    		show_msg("修改成功!",1,1);
    	}
    	sleep(1);
    }
    void unlock_account(void)//解锁账号
    {
    	system("clear");
    	int key=0;
    	printf("----------解锁账号----------\n");
    	printf("请输入需要解锁账号的学生的学号:\n");
    	scanf("%d",&key);
    	getchar();
    	for(int i=0 ;i<stu_count;i++)
    	{
    		if(student[i].number==key && student[i].state == '1')
    		{
    			student[i].state= '0';
    			show_msg("解锁成功!",1,1);
    			sleep(1);
    			return;
    		}
    	}	
    	show_msg("该账号不存在或未被锁定!",1,0);	
    	show_msg("任意键结束显示",1,2);
    	getch();
    	
    }
    void find_name_stu(void)//按姓名查找
    {
    	system("clear");
    	char key[100] ;char name[20];int num=0;
    	printf("----------按姓名查找----------\n");
    	while(1)
    	{
    		printf("请输入需要查找人姓名:\n");
    		gets(name);
    		_find_name(name,key);
    		num=strlen(key);
    		if(0==num)
    		{
    			show_msg("查无此人!",1,0);
    			anykey_continue();
    			break;
    		}
    		for(int i=0;i<num;i++)
    		{
    			printf("学号:%4d ",student[key[i]-'0'].number);
    			printf("性别:%3s ",'1'==student[key[i]-'0'].sex?"男":"女");
    			printf("姓名:%4s \n",student[key[i]-'0'].name);
    		}
    		show_msg("是否结束查找?y/n",1,2);
    		num=getch();
    		if(num==121 ||num==89)
    			break;
    	}
    }
    void show_01_stu(void)//显示在校学生
    {
    	system("clear");
    	char key[500];
    	printf("----------显示在校学生---------\n");
    	int num=0;
    	for(int i=0;i<stu_count;i++)
    	{
    		if(student[i].state!='2')
    		{
    			key[num]=i+'0';
    			num++;
    		}
    	}
    	for(int i=0;i<num;i++)
    	{
    		printf("学号:%4d ",student[key[i]-'0'].number);
    		printf("性别:%3s ",'1'==student[key[i]-'0'].sex?"男":"女");
    		printf("姓名:%4s \n",student[key[i]-'0'].name);
    	}
    	show_msg("任意键结束显示!",1,2);
    	getch();
    }
    void show_2_stu(void)//显示离校学生
    {
    	system("clear");
    	char key[500];int num=0;
    	printf("----------显示离校学生---------\n");
    	for(int i=0;i<stu_count;i++)
    	{
    		if(student[i].state=='2')
    		{
    			key[num]=i+'0';
    			num++;
    		}
    	}
    	for(int i=0;i<num;i++)	
    	{
    		printf("学号:%4d ",student[key[i]-'0'].number);
    		printf("性别:%3s ",'1'==student[key[i]-'0'].sex?"男":"女");
    		printf("姓名:%4s \n",student[key[i]-'0'].name);
    	}
    	show_msg("任意键结束显示",1,2);
    	getch();
    }
    void student_information_management(void)//学生信息管理
    {
    	while(1)
    	{
    		system("clear");
    		printf("-------------学生信息管理--------------\n");
    		puts("0.批量导入学生");
    		puts("1.添加学生");
    		puts("2.删除学生");
    		puts("3.修改学生基本信息");
    		puts("4.重置学生密码");
    		puts("5.解锁学生账号");
    		puts("6.根据姓名查询学生基本信息");
    		puts("7.显示所有在读学生");
    		puts("8.显示所有退学学生");
    		puts("9.返回上层");
    		switch(getch())
    			{
    				case 48: add_stu_more();break;
    				case 49: add_stu();break;
    				case 50: del_stu();break;
    				case 51: modify_stu();break;
    				case 52: reset_code();break;
    				case 53: unlock_account();break;
    				case 54: find_name_stu();break;
    				case 55: show_01_stu();break;
    				case 56: show_2_stu();break;
    				case 57: return;
    			}
    	}
    }
    void add_score_more(void)
    {
    	system("clear");
    	puts("---------导入学生成绩---------");
    	FILE* fp=fopen("add_score.txt","r");
    	int n=0;
    	if(NULL==fp)
    	{
    		perror("fopen");
    		return ;
    	}	
    	while(1)
    	{
    		fscanf(fp,"%d%d%d%d",&score[n].num,&score[n].chinese,&score[n].math,&score[n].English);
    		if(feof(fp)==1)
    		{
    			break;
    		}
    		n++;
    	}	
    	fclose(fp);
    	for(int i=0;i<n;i++)
    	{
    		for(int j=0;j<stu_count;j++)
    		{
    			if(score[i].num==student[j].number)
    			{
    				student[j].chinese=score[i].chinese;
    				student[j].math=score[i].math;
    				student[j].English=score[i].English;
    			}
    		}
    	}
    		show_msg("添加成功!按任意键返回!",1,1);
    		getch();
    }
    void add_score(void)
    {
    	system("clear");
    	int key=0;int num=0;int yes=0;
    	while(1)
    	{
    		system("clear");
    		puts("----------成绩录入----------");
    		printf("请输入需录入成绩学生的学号\n");
    	
    		scanf("%d",&key);
    		getchar();
    		num=_find_num(key);
    		if(-1==num)
    		{
    			show_msg("该学生学号不存在!",1,0);
    			show_msg("是否重新输入?y/n",1,2);
    			yes=getch();
    			if(121==yes || 89==yes)
    			{	continue; }
    			else
    			{   break;    }	
    			
    		}
    		else
    		{
    			_show_stu(num,1);
    			puts("请输入语文成绩:");
    			scanf("%d",&student[num].chinese);
    			puts("请输入数学成绩: ");
    			scanf("%d",&student[num].math);
    			puts("请输入英语成绩:");
    			scanf("%d",&student[num].English);
    			getchar();
    			show_msg("是否继续输入?y/n",1,2);
    			yes=getch();
    			if(121==yes || 89==yes)
    			{	continue; }
    			else
    			{   break;    }	
    		}	
    	}
    	sleep(1);
    }
    void modify_score(void)
    {
    	system("clear");
    	int key=0;int num=0;int yes=0;
    	while(1)
    	{
    		system("clear");
    		puts("----------成绩修改----------");
    		puts("请输入需录入成绩学生的学号");
    	
    		scanf("%d",&key);
    		getchar();
    		num=_find_num(key);
    		if(-1==num)
    		{
    			show_msg("该学生学号不存在!",1,0);
    			show_msg("是否重新输入?y/n",1,2);
    			yes=getch();
    			if(121==yes || 89==yes)
    			{	continue; }
    			else
    			{   break;    }	
    		}		
    		else
    		{
    			_show_stu(num,1);
    			puts("请输入语文成绩:");
    			scanf("%d",&student[num].chinese);
    			puts("请输入数学成绩: ");
    			scanf("%d",&student[num].math);
    			puts("请输入英语成绩:");
    			scanf("%d",&student[num].English);
    			getchar();
    			show_msg("是否继续修改?y/n",1,2);
    			yes=getch();
    			if(121==yes || 89==yes)
    			{	continue; }
    			else
    			{   break;    }
    		}
    	}
    }
    void find_name_num_score(void)
    {
    	int key=0,yes;
    	while(1)
    	{	
    		int num=0;
    		system("clear");
    		puts("----------成绩查询----------");
    		puts("请输入需要查询学生的学号:");
    		scanf("%d",&key);
    		getchar();
    		num=_find_num(key);
    		if(-1==num)
    		{
    			show_msg("该学生学号不存在!",1,0);
    			show_msg("是否重新输入?y/n,",1,2);
    			yes=getch();
    			if(121==yes || 89==yes)
    			{	continue; }
    			else
    			{   break;    }	
    		}
    		else
    		{
    			_show_stu(num,1);
    			show_msg("任意键结束显示!",1,2);
    			getch();
    			break;
    		}
    	}
    }
    void sort_score(void)
    {
    	system("clear");
    	int count_c[500]={},count_m[500]={},count_e[500]={},count[500]={};
    	for(int i=0;i<stu_count;i++)
    	{
    		if(student[i].state!='2')
    		{
    			for(int j=0;j<stu_count;j++)
    			{
    				if(student[j].state!='2')
    				{
    					if(student[j].chinese > student[i].chinese)
    					count_c[i]++;
    					if(student[j].math > student[i].math)
    					count_m[i]++;
    					if(student[j].English > student[i].English)
    					count_e[i]++;
    					if(student[j].chinese+student[j].math+student[j].English > student[i].chinese+student[i].math+student[i].English )
    					count[i]++;
    				}
    			}
    		}
    	}
    	printf(" 学号    姓名	语文排名(语文分数)  数学排名(数学分数)  英语排名(英语分数)  总排名(总分)\n");
    	for(int i=0;i<stu_count;i++)
    	{
    		
    		if(student[i].state!='2')
    		{
    			printf("%6d\t",student[i].number);
    			printf("%s\t",student[i].name);
    			printf("%6d(%3d)\t",count_c[i]+1,student[i].chinese);
    			printf("%10d(%3d)\t",count_m[i]+1,student[i].math);
    			printf("%6d(%3d)\t",count_e[i]+1,student[i].English);
    			printf("%7d(%3d)\n",count[i]+1,student[i].chinese+student[i].math+student[i].English);
    		}
    	}
    	show_msg("任意键结束显示!",1,2);
    	getch();	
    
    }
    void student_achievement_management(void)//学生成绩管理
    {
    	while(1)
    	{
    		system("clear");
    		printf("------------学生成绩管理---------------\n");
    		puts("1.单个录入成绩");
    	    puts("2.值导入成绩");
    	    puts("3.修改学生成绩");
    	    puts("4.根据学号或姓名查找成绩");
    	    puts("5.按各科分数或部分排序");
    	    puts("6.返回上层");
    	    switch(getch())
    	    {
    			case 49: add_score();break;//单个录入成绩
    			case 50: add_score_more();break;//指导入
    			case 51: modify_score();break;//修改学生成绩 
    	 		case 52: find_name_num_score();break;//根据学号或姓名查询学生成绩 
    			case 53: sort_score();break;//按各科分数和部分排序
    			case 54: return;//返回上层
    		}
    	}	
    }
    void change_tea_password(int i)
    {
    	while(1)
    		{
    			printf("请输入新密码:");
    			char new_code[20];
    			password_input(new_code);
    			if(0==password_rule(new_code))
    			{
    				show_msg("密码格式错误",1,2);
    				continue;
    			}
    			if(0==strcmp(new_code,"123456"))
    			{
    				show_msg("不能修改为初始密码!",1,2);
    				continue;
    			}
    			strcpy(teacher[i].code,new_code);
    			puts("输入成功");
    			anykey_continue();
    			break;
    		}
    }
    void teacher_interface_son(int i)
    {
    	if(0==strcmp(teacher[i].code,"123456"))
    	{
    		system("clear");
    		while(1)
    		{
    			show_msg("第一次登入请修改密码,密码不能为初始值",1,2);
    			printf("请输入新密码:");
    			char new_code[20];
    			password_input(new_code);
    			if(0==password_rule(new_code))
    			{
    				show_msg("密码格式错误",1,2);
    				continue;
    			}
    			strcpy(teacher[i].code,new_code);
    			show_msg("输入成功",1,1);
    			anykey_continue();
    			break;
    		}
    	}
    	while(1)
    	{
    	system("clear");
    	printf("--------教师界面--------\n");
    	printf("工号:%d\n",teacher[i].number);
    	printf("性别:%s\n",teacher[i].sex=='1'?"男":"女");
    	printf("姓名:%s\n",teacher[i].name);
    	printf("年龄:%ld\n",(time(NULL)/(SUM_SEC))+1970-teacher[i].year);
    	printf("工龄:%ld\n",(time(NULL)/(SUM_SEC))+1970-teacher[i].work_year);
    	printf("1、学生信息管理:\n");
    	printf("2、学生成绩管理:\n");
    	printf("3、修改登入密码:\n");
    	printf("4、返回主菜单:\n");
    	switch(getch())
    			{
    				case 49:student_information_management();break;
    				case 50:student_achievement_management();break;
    				case 51:printf("修改登入密码\n");change_tea_password(i);;break;
    				case 52:printf("返回主菜单\n");return;break;
    			}
    	}
    }
    

    学生界面

    void total_ranking(int n);//总成绩排名
    void single_ranking(int n);//单科成绩排名
    void student_interface_son(int i);//学生界面
    void change_stu_password(int i);
    void single_ranking(int n)
    {
    	int count_c=1,count_m=1,count_e=1;
    	for(int i=0;i<500;i++)
    	{
    		if(student[i].state=='0')
    		{
    			if(student[i].chinese > student[n].chinese)
    			count_c++;
    			if(student[i].math > student[n].math)
    			count_m++;
    			if(student[i].English > student[n].English)
    			count_e++;
    		}
    	}
    	printf("语文成绩排名:%d\n",count_c);
    	printf("数学成绩排名:%d\n",count_m);
    	printf("英语成绩排名:%d\n",count_e);
    }
    
    void total_ranking(int n)
    {
    	int count=1;
    	for(int i=0;i<500;i++)
    	{
    		if(student[i].state=='0')
    		{
    			if(student[i].chinese+student[i].math+student[i].English > student[n].chinese+student[n].math+student[n].English )
    				count++;
    		}
    	}
    	printf("总成绩排名:%d\n",count);	
    }
    void change_stu_password(int i)
    {
    	while(1)
    		{
    			printf("请输入新密码:");
    			char new_code[20];
    			password_input(new_code);
    			if(0==password_rule(new_code))
    			{
    				show_msg("密码格式错误",1,2);
    				continue;
    			}
    			if(0==strcmp(new_code,"123456"))
    			{
    				show_msg("不能修改为初始密码!",1,2);
    				continue;
    			}
    			strcpy(student[i].code,new_code);
    			show_msg("输入成功!",1,1);
    			anykey_continue();
    			break;
    		}
    }
    void student_interface_son(int i)
    {
    
    	if(0==strcmp(student[i].code,"123456"))
    	{
    		system("clear");
    		while(1)
    		{
    			puts("第一次登入请修改密码,密码不能为初始值");
    			printf("请输入新密码:");
    			char new_code[20];
    			password_input(new_code);
    			if(0==password_rule(new_code))
    			{
    				show_msg("密码格式错误",1,2);
    				continue;
    			}
    			strcpy(student[i].code,new_code);
    			show_msg("输入成功!",1,1);
    			anykey_continue();
    			break;
    		}
    	}
    	while(1)
    	{
    		system("clear");
    		printf("--------学生界面--------\n");
    		printf("学号:%d\n",student[i].number);
    		printf("姓名:%s\n",student[i].name);
    		printf("性别:%s\n",student[i].sex=='1'?"男":"女");
    		printf("年龄:%ld\n",(time(NULL)/(SUM_SEC))+1970-student[i].year);
    		printf("语文成绩:%d\n",student[i].chinese);
    		printf("数学成绩:%d\n",student[i].math);
    		printf("英语成绩:%d\n",student[i].English);
    		printf("平均分:%.2lf\n",(student[i].chinese+student[i].math+student[i].English)/3.0);
    		printf("总分:%d\n",student[i].chinese+student[i].math+student[i].English);
    		printf("--------------------\n");
    		printf("1、查看单科成绩排名:\n");
    		printf("2、总分成绩排名:\n");
    		printf("3、修改登入密码:\n");
    		printf("4、返回主菜单:\n");
    		printf("--------------------\n");
    		switch(getch())
    		{
    			case 49:printf("*查看单科成绩排名*\n");single_ranking(i);anykey_continue();break;//1.学生入口
    			case 50:printf("*查看总分成绩排名*\n");total_ranking(i);anykey_continue();break;//退出
    			case 51:printf("修改登入密码\n");change_stu_password(i);;break;//退出
    			case 52:printf("返回主菜单\n");return ;//退出
    		}
    	}
    }
    

    管理员界面

    void admin_interface_son(int i);
    int _find_teacher_num( int key);//寻找老师工号
    char *_find_teacher_name(char* name,char* key);//寻找教师姓名
    void _show_teacher(int key,int b);//显示教师信息
    void add_teacher(void);//增加教师(可能需要修改)
    void del_teacher(void);//删除教师
    void modify_teacher(void);//修改教师信息
    void reset_teacher_code(void);//重置教师密码
    void unlock_teacher_account(void);//解锁教师账号
    void find_teacher_name(void);//按姓名查找教师
    void show_01_teacher(void);//显示在职教师
    void show_2_teacher(void);//显示离职教师
    void teacher_information_management(void);//教师信息管理
    void change_adm_password(int i);
    int _find_teacher_num( int key)//寻找老师工号
    {
    	for(int i=0 ;i<teacher_count;i++)
    	{
    		if(teacher[i].number==key && teacher[i].state != '2')
    		{
    			return i;
    		}
    	}
    	return -1;
    }
    char *_find_teacher_name(char* name,char* key)//寻找教师姓名
    {
    	int count=0;
    	for(int i=0;i < teacher_count;i++)
    	{
    		if(0==strcmp(teacher[i].name,name) && (teacher[i].state=='0'|| teacher[i].state=='1'))
    		{
    			key[count]=i+'0';
    			count++;
    		}
    	}
    	key[count]='\0';
    	return key;
    }
    void _show_teacher(int key,int b)//显示教师信息
    {
    	system("clear");
    	printf("工号:%4d ",teacher[key].number);
    	printf("性别:%3s ",'1'==teacher[key].sex?"男":"女");
    	printf("姓名:%4s \n",teacher[key].name);
    	sleep(1);
    }
    void add_teacher(void)//增加教师(可能需要修改)
    {
    	system("clear");
    	printf("----------增加教师---------\n");
    	teacher_count++;
    	int num=200000,sex=0;
    	teacher[teacher_count-1].state='0';
    	strcpy(teacher[teacher_count-1].code,"123456");
    	teacher[teacher_count-1].number=num+teacher_count;
    
    	printf("请输入姓名:\n");
    	gets(teacher[teacher_count-1].name);
    	while(1)
    	{	
    		printf("请输入性别1.男 2.女\n");
    		sex=getch();
    		if(sex==49||sex==50)
    		{
    			printf("%s\n",sex==49?"男":"女");
    			teacher[teacher_count-1].sex=sex;
    			break;
    		}
    		else
    		show_msg("性别输入错误!",1,2);
    	}
    	printf("请输入出生年份:\n");
    	scanf("%d",&teacher[teacher_count-1].year);
    	printf("请输入参加工作的年份:\n");
    	scanf("%d",&teacher[teacher_count-1].work_year);
    	show_msg("添加成功!",1,1);
    		
    }
    void del_teacher(void)//删除教师
    {
    	system("clear");
    	int key=0;int num=0;int yes;
    	printf("----------删除教师---------\n");
    	printf("请输入需删除教师的工号\n");
    	while(1)
    	{
    		scanf("%d",&key);
    		getchar();
    		num=_find_teacher_num(key);
    		if(-1==num)
    		{
    			show_msg("该教师工号不存在!",1,0);
    			show_msg("是否重新输入?y/n",1,2);
    			yes=getch();
    			if(121==yes || 89==yes)
    			{	continue; }
    			else
    			{   break;    }	
    		}
    		else
    		{
    			_show_teacher(num,0);
    			show_msg("是否继续删除?y/n",1,2);
    			yes=getch();
    			if(yes==121 || yes==89)
    			{	
    				teacher[num].state='2';
    				show_msg("删除成功!",1,1);
    				break;
    			}
    			else
    			{
    				printf("输入工号:\n");
    			}
    		}	
    	}
    	sleep(1);
    }
    void modify_teacher(void)//修改教师信息
    {
    	system("clear");
    	int key=0;int num=0;char name[20];int year=0;int yes=0;
    	printf("----------修改信息---------\n");
    	printf("请输入需修改教师的工号\n");
    	while(1)
    	{
    		scanf("%d",&key);
    		getchar();
    		num=_find_teacher_num(key);
    		if(-1==num)
    		{
    			show_msg("该教师工号不存在!",1,0);
    			show_msg("是否重新输入?y/n",1,2);
    			yes=getch();
    			if(121==yes || 89==yes)
    			{	continue; }
    			else
    			{   break;    }	
    		}
    		else
    		{
    			printf("输入修改的姓名:\n");
    			strcpy(teacher[num].name,gets(name));
    			
    			printf("输入入职年份:\n");
    			scanf("%d",&year);
    			teacher[num].year=year;
    			show_msg("修改成功!",1,1);
    			break;
    		}
    	}
    	sleep(1);
    }
    void reset_teacher_code(void)//重置教师密码
    {
    	system("clear");
    	int key=0;int num=0;int yes=0;
    	printf("----------重置密码----------\n");
    	printf("请输入需要重置密码教师的工号\n");
    	while(1)
    	{
    		scanf("%d",&key);
    		getchar();
    		num=_find_teacher_num(key);
    		if(-1==num)
    		{
    			show_msg("该教师工号不存在!",1,0);
    			show_msg("是否重新输入?y/n",1,2);
    			yes=getch();
    			if(121==yes || 89==yes)
    			{	continue; }
    			else
    			{   break;    }	
    		}
    		else
    		{
    			strcpy(teacher[num].code,"123456");
    			show_msg("修改成功!",1,1);
    			break;
    		}
    	}	
    	sleep(1);
    }
    void unlock_teacher_account(void)//解锁教师账号
    {
    	system("clear");
    	int key=0;
    	printf("----------解锁账号----------\n");
    	while(1)
    	{	
    		printf("请输入需要解锁账号的教师的工号:\n");
    		scanf("%d",&key);
    		getchar();
    		for(int i=0 ;i<teacher_count;i++)
    		{
    			if(teacher[i].number==key && teacher[i].state == '1')
    			{
    				teacher[i].state= '0';
    				show_msg("解锁成功!",1,1);
    				anykey_continue();
    				return;
    			}
    		}
    		show_msg("查无此人",1,0);
    		return;
    	}
    }
    void find_teacher_name(void)//按姓名查找教师
    {
    	system("clear");
    	char key[100]={};char name[20];int num=0;
    	printf("----------按姓名查找----------\n");
    	while(1)
    	{
    		printf("请输入需要查找人姓名:\n");
    		gets(name);
    		_find_teacher_name(name,key);
    		num=strlen(key);
    		if(num==0)
    		{
    			show_msg("查无此人",1,0);
    			return;
    		}
    		for(int i=0;i<num;i++)
    		{
    			printf("工号:%4d ",teacher[key[i]-'0'].number);
    			printf("姓名:%4s ",teacher[key[i]-'0'].name);
    			printf("性别:%3s \n",'1'==teacher[key[i]-'0'].sex?"男":"女");
    		}
    		show_msg("是否结束查找?y/n",1,2);
    		num=getch();
    		if(num==121 ||num==89)
    		{
    			break;
    		}
    	}
    
    }
    void show_01_teacher(void)//显示在职教师
    {
    	system("clear");
    	char key[500];int num=0;
    	printf("----------显示在职教师---------\n");
    	for(int i=0;i<teacher_count;i++)
    	{
    		if(teacher[i].state!='2')
    		{
    			key[num]=i+'0';
    			num++;
    		}
    	}
    	key[num]='\0';
    	for(int i=0;i<num;i++)
    	{
    		printf("工号:%4d ",teacher[key[i]-'0'].number);
    		printf("姓名:%4s ",teacher[key[i]-'0'].name);
    		printf("性别:%3s\n",'1'==teacher[key[i]-'0'].sex?"男":"女");
    	}
    	show_msg("按任意键继续!",1,2);
    	getch();
    	
    }
    void show_2_teacher(void)//显示离职教师
    {
    	system("clear");
    	char key[500];int num=0;
    	printf("----------显示离职教师---------\n");
    	for(int i=0;i<teacher_count;i++)
    	{
    		if(teacher[i].state=='2')
    		{
    			key[num]=i+'0';
    			num++;
    		}
    	}
    	key[num]='\0';
    	for(int i=0;i<num;i++)
    	{
    		printf("工号:%4d ",teacher[key[i]-'0'].number);
    		printf("姓名:%4s ",teacher[key[i]-'0'].name);
    		printf("性别:%3s\n",'1'==teacher[key[i]-'0'].sex?"男":"女");
    	}
    	show_msg("按任意键继续!",1,2);
    	getch();
    }
    void teacher_information_management(void)//教师信息管理
    {
    	while(1)
    	{
    		system("clear");
    		printf("-------------教师信息管理--------------\n");
    		puts("1.添加教师");
    		puts("2.删除教师");
    		puts("3.修改教师基本信息");
    		puts("4.重置教师密码");
    		puts("5.解锁教师账号");
    		puts("6.根据姓名查询教师基本信息");
    		puts("7.显示所有在职教师");
    		puts("8.显示所有离职教师");
    		puts("9.返回上层");
    		switch(getch())
    			{
    				case 49: add_teacher();break;
    				case 50: del_teacher();break;
    				case 51: modify_teacher();break;
    				case 52: reset_teacher_code();break;
    				case 53: unlock_teacher_account();break;
    				case 54: find_teacher_name();break;
    				case 55: show_01_teacher();break;
    				case 56: show_2_teacher();break;
    				case 57: return;
    			}
    	}
    }
    void change_adm_password(int i)
    {
    	while(1)
    		{
    			printf("请输入新密码:");
    			char new_code[20];
    			password_input(new_code);
    			if(0==password_rule(new_code))
    			{
    				show_msg("密码格式错误",1,0);
    				continue;
    			}
    			if(0==strcmp(new_code,"123456"))
    			{
    				show_msg("不能修改为初始密码!",1,0);
    				continue;
    			}
    			strcpy(admin[i].code,new_code);
    			show_msg("输入成功!",1,1);
    			anykey_continue();
    			break;
    		}
    }
    void admin_interface_son(int num)
    {
    	if(0==strcmp(admin[num].code,"123456"))
    	{
    		system("clear");
    		while(1)
    		{
    			puts("第一次登入请修改密码,密码不能为初始值");
    			printf("请输入新密码:");
    			char new_code[20];
    			password_input(new_code);
    			if(0==password_rule(new_code))
    			{
    				show_msg("密码格式错误",1,0);
    				continue;
    			}
    			strcpy(admin[num].code,new_code);
    			show_msg("输入成功!",1,1);
    			anykey_continue();
    			break;
    		}
    	}
    	while(1)
    	{
    	system("clear");
    	printf("--------管理员界面--------\n");
    	printf("工号:%d\n",admin[num].number);
    	printf("姓名:%s\n",admin[num].name);
    	printf("-------------------------\n");
    	printf("1、教师信息管理:\n");
    	printf("2、修改登入密码:\n");
    	printf("3、返回主菜单:\n");
    	switch(getch())
    			{
    				case 49:teacher_information_management();break;
    				case 50:printf("修改登入密码\n");change_adm_password(num);;break;
    				case 51:printf("返回主菜单\n");return;break;
    			}
    	}
    }
    

    超级管理员界面

    void adm_add(void);//添加或删除管理员函数
    int adm_sec_num(int num);//通过工号查找编号
    void super_administrators_interface_son(void);//界面函数
    int adm_sec_num(int num)
    {
    	for(int i=0;i<adm_count;i++)
    	{
    		if(admin[i].state!='2' && num == admin[i].number)
    		return i;
    	}
    	return -1;
    }
    void replace_adm(void)
    {
    	puts("输入要重置密码的管理员的工号:");
    	int num=0;
    	scanf("%d",&num);
    	getchar();
    	int index=adm_sec_num(num);
    	if(-1==index)
    	{
    		show_msg("查无此管理员",1,0);
    		anykey_continue();
    	}
    	else
    	{
    		strcpy(admin[index].code,"123456");
    		show_msg("重置密码成功",1,1);
    		anykey_continue();
    	}
    	
    }
    void unlock_adm(void)
    {
    	puts("输入要解锁的管理员的工号:");
    	int num=0;
    	scanf("%d",&num);
    	getchar();
    	int index=adm_sec_num(num);
    	if(-1==index)
    	{
    		show_msg("查无此管理员",1,0);
    		anykey_continue();
    	}
    	else
    	{
    		admin[index].state='0';
    		show_msg("解锁成功",1,1);
    		anykey_continue();
    	}
    }
    void list_adm(void)
    {
    	system("clear");
    	for(int i=0;i<adm_count;i++)
    	{
    		if(admin[i].state=='2')
    		continue;
    		else
    		printf("姓名:%s 工号:%d\n",admin[i].name,admin[i].number);
    	}
    	anykey_continue();
    	
    }
    void super_administrators_interface_son(void)
    {
    	while(1)
    	{
    		system("clear");
    		puts("1.添加或删除管理员");
    		puts("2.重置管理员密码");
    		puts("3.解锁管理员账号");
    		puts("4.显示所有管理员");
    		puts("5.返回上级菜单");
    		switch(getch())
    		{
    			case 49:adm_add();;break;
    			case 50:replace_adm();;break;
    			case 51:unlock_adm();;break;
    			case 52:list_adm();;break;
    			case 53:return;		
    		}
    	}
    }
    void adm_add(void)
    {
    	system("clear");
    	puts("1.添加管理员");
    	puts("2.删除管理员");
    	puts("3.返回上级菜单");
    	while(1)
    	{
    		int num=0;
    		switch(getch())
    			{
    				case 49:
    						system("clear");
    						printf("----------增加管理员---------\n");
    						adm_count++;
    						int num=300000,sex=0;
    						admin[adm_count-1].state='0';
    						strcpy(admin[adm_count-1].code,"123456");
    						admin[adm_count-1].number=num+adm_count;
    
    						printf("请输入姓名:\n");
    						gets(admin[adm_count-1].name);
    						while(1)
    						{	
    							printf("请输入性别1.男 2.女\n");
    							sex=getch();
    							if(sex==49||sex==50)
    							{
    								printf("%s\n",sex==49?"男":"女");
    								admin[adm_count-1].sex=sex;
    								break;
    							}
    							else
    							show_msg("性别输入错误!",1,0);
    						}
    						printf("请输入出生年份:\n");
    						scanf("%d",&admin[adm_count-1].year);
    						show_msg("添加成功!",1,1);
    						sleep(1);	
    				return;
    						;break;
    				case 50:
    				puts("请输入要删除的管理员的工号:");
    				scanf("%d",&num);
    				getchar();
    				int index=adm_sec_num(num);
    				if(-1==index)
    				{
    					show_msg("查无此管理员!",1,0);
    					anykey_continue();
    					return;
    				}
    				else
    				{
    					admin[index].state='2';
    					show_msg("删除成功!",1,1);
    					anykey_continue();
    					return;
    				}
    						;break;	
    				case 51:return;break;
    			}
    	}
    };
    
    展开全文
  • 程序特点:为在线多用户管理系统。提供6种权限用户:校长室(可查询所有学生成绩信息),班主任(可录入、查询所任班级的所有学生成绩信息),任课老师(可录入、查询所任班级课程的所有学生成绩信息),学生、学生...
  • 本文实例为大家分享了Python实现GUI学生信息管理系统的具体代码,供大家参考,具体内容如下项目环境:软件环境:OS:RedHat6.3Lib:PygtkLanguage:PythonSupport tool:Glade3项目简述:①Glade3设计用户的登录窗口,...

    本文实例为大家分享了Python实现GUI学生信息管理系统的具体代码,供大家参考,具体内容如下

    项目环境:

    软件环境:

    OS:RedHat6.3

    Lib:Pygtk

    Language:Python

    Support tool:Glade3

    项目简述:

    ①Glade3设计用户的登录窗口,功能主窗口

    ②通过Gtk.Builder初始化,载入界面

    ③在Mysql.py文件中实现Python操作数据库。

    ④在stuManager.py中实现学生信息的查询,删除,修改,终端登录,图形统计等功能

    ⑤在Glade中定义函数触发信号,实现功能的连接。

    项目测试:

    ①登录窗口

    ②主窗口

    ③删除信息

    ④修改信息

    ⑤登录终端

    ⑥学生成绩

    ⑦图形统计(没做好)

    ⑧查找信息

    部分代码:

    Terminal.py

    Stu_Sys.py

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

    原文链接:http://iotos.iteye.com/blog/2093002

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

    2020-06-14 09:49:20
    学生成绩管理系统,是面向对象的课程的大作业。本系统满足:1.图形化界面,有菜单、文件操作,数据使用数组、结构体;2.软件有相对完备的基本功能(信息的录入、处理、输出、保存)3.软件应该有角色划分,并设置不同...
  • WEB课设之学生成绩管理系统 一、设计内容 学校每年都会有学生基本信息变动,也会举行期中期末考试。如何有效地管理这些学生的基本信息和成绩,帮助学校和老师掌握学生的基本情况,这就是学生成绩管理系统需要完成...

    WEB课设之学生成绩管理系统

    一、设计内容

    学校每年都会有学生基本信息变动,也会举行期中期末考试。如何有效地管理这些学生的基本信息和成绩,帮助学校和老师掌握学生的基本情况,这就是学生成绩管理系统需要完成的功能。学生成绩管理系统主要是用来管理学生基本信息数据与学生成绩的系统。需要提供如录入、删除、修改、查找学生基本信息以及成绩,甚至个别学生或者全体学生成绩报表的导出和学生成绩柱状图的生成。

    1、 系统需求分析
    1.1 系统功能分析
    本系统主要的功能是向学校提供学生的基本信息和考试成绩。
    本系统主要有以下几项功能:
    a、用户登录相应账号并且输入对应密码才能进入系统进行相应操作
    b、添加学生功能:姓名、学号、性别、出生年月日。(学号系统会自动生成且唯一)
    c、根据学生学号或者姓名查找学生信息功能:在界面上显示姓名、学号和成绩
    d、学生信息的修改与删除功能:不能修改学号。
    e、根据学生学号查找学生成绩功能:在界面上显示姓名、学号和成绩。
    f、根据学生姓名(支持模糊匹配)查找学生成绩功能:并在界面上显示姓名、学号和成绩,如果有多个相同姓名学生存在,一起显示出来。
    g、修改添加学生成绩功能:每个人都有数学、Java、英语、体育四门课,可分课程输入成绩。
    h、生成学生学习情况报表功能:报表包含学号、姓名、各科目成绩及对应的该科目班级平均值,总成绩以及班级总成绩平均值,用户可选择分成个人或者全班学习情况导出至excel文件。
    i、支持对单个学生各科成绩生出柱状分布图。

    1.2 系统功能模块设计(划分)
    根据系统功能要求,可以将系统分解成几个模块来分别设计应用程序界面,如图 1-1所示。
    在这里插入图片描述
    图1-1 学生成绩管理系统功能模块图

    1.3 与其它系统的关系
    学生成绩管理系统是校园信息管理系统的一个组成部分。它为其它系统如班级信息管理系统、教学管理系统、宿舍分配系统等提供学生的基本情况。同时需要其他系统提供的班级设置和院系设置等情况。这些系统可以使用同一个数据库,直接相互调用所需的数据。

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

    2、数据库设计
    2.1 数据库需求分析
    根据上一节图1-2学生成绩管理系统数据流程图,可以列出以下数据项、数据结构以及外部数据支持。
    记录学生信息所需的数据项和数据结构:
    A、学生信息表:学号、姓名、性别、生日。
    B、学生成绩表:学号、姓名、数学成绩、Java成绩、英语成绩、体育成绩。
    C、学生成绩导出表:学号、姓名、数学成绩、Java成绩、英语成绩、体育和四门科目成绩总分数。
    外部数据支持:
    A、 用户登录表:用户名、密码、用户身份证号码。

    2.2 数据库概念结构设计
    下图2-1是本系统所需数据的 E-R 模型图。
    在这里插入图片描述
    图2-1 学生成绩管理系统所需数据的 E-R 模型图

    2.3 数据库逻辑结构设计
    根据系统E-R图,需要设计3个数据表来存放学生的基本信息和成绩信息。为了系统的完整,系统中包括了应用程序设计中所需的1个外部数据表。这4个数据表如表1到表4所示。
    在这里插入图片描述
    表1 student学生信息表
    在这里插入图片描述
    表2 score学生成绩表
    在这里插入图片描述
    表3 report学生成绩导出表
    在这里插入图片描述
    表4 dlb用户登录表

    二、实现方法

    1、功能说明
    1.1 学生成绩管理系统用户注册登录和登录密码的修改
    1.2 学生个人基本信息输入
    1.3 学生个人基本信息查询、修改和删除
    1.4 学生成绩查询和修改
    1.5 学生个人或者全班成绩导出文件
    1.6 学生个人成绩生成柱状图

    2、系统界面设计
    完成数据库创建和功能说明以后,我们可以进行下一步工作,即设计用户界面。我们的系统主要有以下几个界面:
    2.1 用户账号密码信息注册界面
    2.2 用户账号密码登录界面
    2.3 用户登录失败界面
    2.4 用户密码修改界面
    2.5 学生个人基本信息录入界面
    2.6 学生个人基本信息查找界面
    2.7 查找学号失败界面
    2.8 查找姓名失败界面
    2.9 学生个人基本信息修改界面
    2.10 学生个人基本信息删除界面
    2.11 学生个人成绩查询界面
    2.12 学生个人成绩修改界面
    2.13 学生个人或者全部学生成绩导出文件界面
    2.14 学生个人成绩柱状图生成界面
    2.15 学生个人成绩柱状图显示界面
    2.16 用户操作失败界面
    2.17 用户登录主界面

    3、各功能模块的实现
    在这里插入图片描述
    图3-1用户账号密码信息注册界面

    在这里插入图片描述
    图3-2用户账号密码登录界面

    在这里插入图片描述
    图3-3学生个人基本信息录入界面

    在这里插入图片描述
    图3-4学生个人基本信息查找界面

    在这里插入图片描述
    图3-5学生个人基本信息修改界面

    在这里插入图片描述
    图3-6学生个人或者全部学生成绩导出文件界面

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

    万次阅读 多人点赞 2016-04-12 14:33:51
    *@name:java学生成绩管理系统. *@功能:学生相关信息,录入,查询,统计,修改等.... *@PS:图形界面的学生管理系统不要求就不做了. */ import java.util.Scanner; import java.lang.*; import ja
    /*
     *@copyright by LzyRapx on 2016/4/12.
     *@name:java学生成绩管理系统.
     *@功能:学生相关信息,录入,查询,统计,修改等....
     *@PS:图形界面的学生管理系统不要求就不做了.
     */
    
    import java.util.Scanner;
    import java.lang.*;
    import java.io.*;
    class Student
    {
    	private static Student[] s=new Student[100]; //录入学生上限
        int n=0;
    	private String name;
    	private int num;
    	private String classAge;
    	private int chinese;
    	private int  math;
    	private int english;
    	
    	//判断是否有录入学生信息
    	public void judge() throws IOException
    	{
    		int i;
    		char ch;
    		String str;
    		Scanner In=new Scanner(System.in);
    		if(n==0)
    		{
    			System.out.println("你还没有录入任何学生信息,是否录入(Y/N):");
    			str=In.next();
    			ch=str.charAt(0);
    			while(ch!='Y'&&ch!='y'&&ch!='N'&&ch!='n')
    			{
    				System.out.println("输入有误,请重新输入:");
    				str=In.next();
    				ch=str.charAt(0);
    			}
    			if(ch=='Y'||ch=='y')
    			{
    				this.add();
    			}
    			if(ch=='N'||ch=='n')
    			{
    				this.menu();
    			}
    		}
    	}
    
    	//菜单
    	public void menu() throws IOException  //将异常抛出,调用这个方法去处理异常,如果main方法也将异常抛出,则交给Java虚拟机来处理,下同.
    	{
    		int a;
    		Scanner in=new Scanner(System.in);
    		System.out.println("*************学生信息管理系统*************");
    		System.out.println("*****        1.录入学生信息            ******");
    		System.out.println("*****        2.显示学生信息            ******");
    		System.out.println("*****        3.修改学生信息            ******");
    		System.out.println("*****        4.删除学生信息            ******");
    		System.out.println("*****        5.查看学生信息            ******");
    		System.out.println("*****        0.退出管理系统            ******");
    		System.out.println("******************************************");
    		System.out.print("请选择(0~5):");
    		a=in.nextInt();
    		while(a<0||a>5)
    		{
    			System.out.print("输入无效,请重新输入:");
    			a=in.nextInt();
    		}
    		switch(a)
    		{
    			case 1:this.add();break;
    			case 2:this.show();break;
    			case 3:this.modif();break;
    			case 4:this.delete();break;
    			case 5:this.look();break;
    			case 0:System.out.println("成功退出系统!!!");System.exit(0);break;
    		}			
    	}
    	
    	//录入学生信息
    	public void add() throws IOException
    	{
    		String str,str1,str2;
    		int i,num1,t=1;
    		char ch,ch1;
    		FileWriter fw=new FileWriter("E://student.txt",true);   //将学生信息录入指定的txt文件中
    		
    		fw.write("             录入的学生信息列表\r\n\r\n学号    姓名    班级    语文成绩      数学成绩    英语成绩\r\n");
    		Scanner In=new Scanner(System.in);
    		while(t==1)
    		{
    			System.out.println("请输入学生学号:");
    			num1=In.nextInt();
    			
    			//判断学号是否重复
    			for(i=0;i<n;i++)
    			{
    				while(s[i].num==num1)
    				{
    					System.out.println("已存在此学号,请重新输入");
    					System.out.print("请输入学号:");
    					num1=In.nextInt();
    				}
    			}
    			s[n].num=num1;
    			str2=String.valueOf(num1);
    			fw.write(str2+"    ");
    			System.out.println();
    			System.out.println("请输入学生姓名:");
    			s[n].name=In.next();
    			fw.write(s[n].name+"      ");
    			System.out.println();
    			System.out.println("请输入学生班级:");
    			s[n].classAge=In.next();
    			fw.write(s[n].classAge+"  ");
    			System.out.println("请输入学生语文成绩:");
    			s[n].chinese=In.nextInt();
    			fw.write(s[n].chinese+"  ");                   
    			System.out.println("请输入学生数学成绩:");
    			s[n].math=In.nextInt();
    			fw.write(s[n].chinese+"  ");
    			System.out.println("请输入学生英语成绩:");
    			s[n].english=In.nextInt();
    			fw.write(s[n].english+"\r\n");
    			++n;
    			fw.close();	
    			System.out.println();
    			System.out.println("是否继续添加(Y/N)");
    			str=In.next();
    			ch=str.charAt(0);
    			while(ch!='N'&&ch!='n'&&ch!='Y'&&ch!='y')
    			{
    				System.out.println("输入无效,请重新输入:");
    				str=In.next();
    				ch=str.charAt(0);
    			}
    			if(ch=='N'||ch=='n')
    			{
    				break;
    			}
    		}
    		System.out.println();
    		System.out.print("是否返回系统主菜单(Y/N)");
    		str1=In.next();
    		ch1=str1.charAt(0);
    		while(ch1!='Y'&&ch1!='y'&&ch1!='N'&&ch1!='n')
    		{
    			System.out.println("输入无效,请重新输入:");
    			str1=In.next();
    			ch1=str1.charAt(0);
    		}
    		if(ch1=='Y'||ch1=='y')
    		{
    			this.menu();
    		}
    		if(ch1=='N'||ch1=='n')
    		{
    			System.out.println("");
    			System.out.println("你已退出系统!!!");
    			System.exit(0);
    		}
    	}
    
    	//显示学生信息
    	public void show() throws IOException
    	{
    		int i;
    		this.judge();	
    		System.out.println("本次操作共录入"+n+"位学生!");
    		System.out.println("你录入的学生信息如下:");
    		System.out.println();
    		System.out.println("学号\t姓名\t班级\t语文\t数学\t英语");
    		for(i=0;i<n;i++)                        
    		{
    			System.out.println(s[i].num+"      "+s[i].name+"     "+s[i].classAge+"     "+s[i].chinese+"      "+s[i].math+"     "+s[i].english);
    		}
    		System.out.println("系统返回主菜单!");
    		this.menu();
    	}
    	
    	//删除学生信息
    	public void delete() throws IOException
    	{
    		this.judge();
    		int j=0,t=0,k=0,num1;
    		char ch;
    		String str;
    		Scanner pin=new Scanner(System.in);
    		System.out.println("请输入要删除的学号:");
    		num1=pin.nextInt();
    		for(j=0;j<n;j++)
    		{
    			if(s[j].num==num1)
    			{
    				k=1;
    				t=j;
    			}
    		}
    		if(k==0)
    		{
    			System.out.println("对不起!你要删除的学号不存在!");
    			System.out.println("系统将返回主菜单!");
    			this.menu();
    		}
    		if(k==1)
    		{
    			System.out.println("你要删除的学生信息如下:");//打印管理员要删除的学生信息
    			System.out.println("学号\t姓名\t班级");//本功能暂时不备扩展性
    			System.out.println(s[t].num+"      "+s[t].name+"      "+s[t].classAge);
    			System.out.println();
    			System.out.println("你确定要删除(Y/N):");
    			str=pin.next();
    			ch=str.charAt(0);
    			while(ch!='Y'&&ch!='y'&&ch!='N'&&ch!='n')
    			{
    				System.out.println("输入无效,请重新输入:");
    				str=pin.next();
    				ch=str.charAt(0);
    			}
    			if(ch=='N'||ch=='n')
    			{
    				System.out.println();
    				System.out.println("系统返回主菜单!");
    				this.menu();
    			}
    			if(ch=='Y'||ch=='y')
    			{
    				for(j=t;j<n-1;j++)
    				{
    					s[j]=s[j+1];
    				}
    				n--;
    				System.out.println("学生数据成功删除!");
    				System.out.println("系统返回主菜单!");
    				this.menu();
    			}
    		}
    	}
    	//查看学生信息
    	public void look() throws IOException 
    	{
    		FileReader fr=new FileReader("E://student.txt");  //查看txt中的学生信息
    		int a;
    		while((a=fr.read())!=-1)
    		{
    			System.out.print((char)a);
    		}
    		fr.close();
    		System.out.println("系统返回主菜单!");
    		System.out.println();
    		this.menu();
    	}
    	
    	//修改学生信息
    	public void modif() throws IOException
    	{
    		this.judge();
    		int j=0,t=0,k=0,num2,num3,moi,c=1;
    		char ch;
    		String str,str1,str2;
    		Scanner pin=new Scanner(System.in);
    		System.out.println("请输入要修改的学号:");
    		num2=pin.nextInt();
    		for(j=0;j<n;j++)
    		{
    			if(s[j].num==num2)
    			{
    				k=1;
    				t=j;
    			}
    		}
    		if(k==0)
    		{
    			System.out.println("对不起!你要修改的学号不存在!");
    			System.out.println("系统将返回主菜单!");
    			this.menu();
    		}
    		if(k==1)
    		{
    			//打印将要要删除的学生信息
    			System.out.println("你要修改的学生信息如下:");
    			System.out.println("学号\t姓名\t班级");
    			System.out.println(s[t].num+"      "+s[t].name+"      "+s[t].classAge);
    			System.out.println("语文\t数学\t英语");
    			System.out.println(s[t].chinese+"      "+s[t].math+"      "+s[t].english);
    			System.out.println();
    			System.out.println("你确定要修改(Y/N):");
    			str=pin.next();
    			ch=str.charAt(0);
    			while(ch!='Y'&&ch!='y'&&ch!='N'&&ch!='n')
    			{
    				System.out.println("输入无效,请重新输入:");
    				str=pin.next();
    				ch=str.charAt(0);
    			}
    			if(ch=='N'||ch=='n')
    			{
    				System.out.println();
    				System.out.println("系统返回主菜单!");
    				this.menu();
    			}
    			while(c==1)
    			{
    				if(ch=='Y'||ch=='y')
    				{
    					System.out.println("****************************************");
    					System.out.println("*****         1.修改学号           *****");
    					System.out.println("*****         2.修改班级           *****");
    					System.out.println("*****         3.修改姓名           *****");
    					System.out.println("****************************************");
    					System.out.println("请选择:");
    					moi=pin.nextInt();
    					switch(moi)
    					{
    						case 1:System.out.print("请输入新的学号:");num3=pin.nextInt();s[t].num=num3;break;
    						case 2:System.out.print("请输入新的班级:");str1=pin.next();s[t].classAge=str1;break;
    						case 3:System.out.print("请输入新的姓名:");str2=pin.next();s[t].name=str2;break;
    					}
    					System.out.println("数据已成功修改!");
    				}
    				System.out.print("是否继续修改(Y/N)");
    				str=pin.next();
    				ch=str.charAt(0);
    				System.out.println();
    				while(ch!='Y'&&ch!='y'&&ch!='N'&&ch!='n')
    				{
    					System.out.print("输入无效,请重新输入:");
    					str=pin.next();
    					ch=str.charAt(0);
    				}
    				if(ch=='N'||ch=='n')
    				{
    					break;
    				}
    			}	
    		}
    		System.out.println();
    		System.out.println("系统返回主菜单!");
    		this.menu();
    	}
    	
    	public static void main(String[] args) throws IOException
    	{	
    		Student stu=new Student();
    		for(int i=0;i<100;i++)
    		{
    			s[i]=new Student();
    		}
    		stu.menu();
    	}
    }
    

    部分效果图:





    若转载,请注明出处。谢谢!

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

    2020-08-12 21:58:49
    本文包括学生成绩管理系统(链表实现)运行结果截图、自测数据、源代码、调试截图以及流程(总体流程和各个函数流程)。 本人小白一枚,项目比较简陋,大神勿喷! 1. 问题描述 对班级学生的考试成绩进行统一...
  • C语言 界面化学生成绩管理系统

    千次阅读 2020-05-05 21:14:24
    本作业除了完成学生成绩管理系统的基本功能外,还将界面进行图形化,提高了交互性。 功能介绍 程序在控制台上完成了使用键盘(WS)和小键盘(⬆️⬇️)键以及回车键进行操控的基于图形界面的交互式学生成绩管理系统。...
  • JavaWeb学生成绩管理系统 此设计提供完整视频讲解,点击这里学习。 主要功能: 不同的用户登录成功之后显示不同的菜单,本次开发使用动态生成菜单。 超级管理员功能: |- 超级管理员可以对老师进行管理,包括老师...
  • 学生成绩:管理系统课程设计 实验报吿 题目学生成绩管理系统 学院数学与信息工程学院 专业计算机科学与技术 班级 同组成员 编写日期 一 课程设计目的 做这个小的学生成绩管理系统来加深对JAVA所学知识的巩固以及学习...
  • Java WEB 学生成绩管理系统

    千次阅读 2019-12-15 16:45:58
    Java WEB 学生成绩管理系统 系统功能分析开发环境软件功能结构数据库表系统部分截图总结 声明: 技术交流,可联系博主(QQ:2430001224) 如果涉及版权,可联系博主删除,谢谢! 系统功能分析 本系统适用于中小学校...
  • 项目描述​这是有利于大学生毕业论文参考的java项目《学生成绩管理系统》项目名称:学生成绩管理系统项目需求分析(Need 需求):(1)该系统的用户分为教师和学生。教师的功能有:管理某一学生或课程的信息以及成绩,...
  • 这个是用C语言写出来的学生成绩管理系统功能非常齐全,该实验报告包含流程,总结在内,要啥有啥
  • Java swing 学生成绩管理系统

    千次阅读 2020-10-26 15:57:22
    Java swing 学生成绩管理系统 ps:代码已上传网盘提取码:1111,内有JDBC的jar包,管理员登录账号:admin密码:admin 功能需求 1,学生可查自己的分数,可以选课 2,教师可以为学生输入分数 3,教师可查自己所授课...
  • 学生成绩管理系统课程设计 实验报告 题目学生成绩管理系统 学院数学与信息工程学院 专业计算机科学与技术 班级 同组成员 编写日期 . 一 课程设计目的 做这个小的学生成绩管理系统来加深对 JAVA所学知识的巩固以及...
  • 16 3.2.2功能需求 16 3.2.3性能需求 17 3.2.4 数据需求 18 3.3学生成绩管理的数据流程调查 18 4学生成绩管理系统设计 21 4.1信息系统设计原则 21 4.2学生成绩管理系统功能设计 22 4.3学生成绩管理系统数据库设计 22 ...
  • 学生成绩管理系统数据库设计--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 ...
  • 【Python课程设计】学生成绩管理系统

    万次阅读 多人点赞 2020-06-30 20:14:05
    【Python课程设计】学生成绩管理系统1、需求分析2、功能设计与分析1、使用数据库对数据进行存取(1)使用PyMySQL模块操作数据库对数据进行存取(2)创建数据库school,创建数据表student_sore、teacher_login(3)...
  • 今天给大家演示一下由Java swing mysql实现的一款学生选课成绩信息管理系统,主要实现的功能有:学生教师信息管理、年级班级信息管理、课程信息管理、选课、成绩录入功能成绩统计功能,实现学生、教师、管理员三个...
  • 学生成绩管理系统课程设计 实验报告 题目学生成绩管理系统 学院数学与信息工程学院 专业计算机科学与技术 班级 同组成员 编写日期 课程设计目的 做这个小的学生成绩管理系统来加深对JAVA所学知识的巩固以及学习JAVA...
  • 1.学生管理系统的实现:在我的程序里,MFC主对话框“学生管理系统”中拥有“保存”,“打开”,“添加”,“删除”,“按高数成绩排序”,“按C++成绩排序”,“修改”,“确定”,“反选”一共9个按钮,以及“学号...
  • c语言学生成绩管理系统

    千次阅读 2018-12-07 16:34:55
    c语言学生成绩管理系统欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左...
  • 基于JSP的学生成绩管理系统 系统没用任何框架,前台纯JSP实现,后台servlet映射,适合刚学习J2EE的新手,代码思路清晰,注解详细,数据库用的是mysql5.1,服务器用的tomcat7,JDK版本1.7. 编程软件Eclispe J2EE版本...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 458
精华内容 183
关键字:

学生成绩管理系统功能图