1河南理工大学计算机科学与技术学院课程设计报告2013—2014学年第2学期课程名称C语言程序设计设计题目学生成绩管理学生姓名学号专业班级指导教师2014年6月23日21题目与要求1.1问题提出本人计划编写一个学生成绩管理系统,主要用来管理学生基本信息及成绩信息。1.2本系统涉及的知识点结构、数组、循环、函数、分支、指针1.3功能要求1、建立学生信息,每个学生的信息包括:学号、姓名、班级、各科成绩、学期、平均成绩;2、求出每个学生的平均分;3、排序:分别按平均分排序4、根据学号查询成绩及不及格科目;5、按班级输出学生的成绩单2功能设计2.1算法设计本系统需要实现的功能要求:利用switch语句设计如图1所示的主菜单:请输入选项编号(1~6)1——信息导入2——信息修改3——信息查询4——信息浏览35——统计成绩6——数据存盘0——退出系统图1学生成绩管理系统主菜单选择1后,调用输入学生成绩,进入函数后实现一个如图2所示的菜单。图2排序子菜单2.2部分模块流程图是否要输入信息(y/n)输入学期输入班级输入学号输入姓名输入语文成绩输入数学成绩输入英语成绩输入计算机成绩43程序代码设计输入模块1)函数原形:structinfor*creat()2)功能:利用while循环语句和scanf、if函数完成对结构数组的输入,存放n个学生的信息(学号、姓名、班级、学期、平均成绩、4门成绩)。3)变量及类型:structinfor*head=NULL,*p=NULL,*q=NULL;4C程序设计总结内容:1.程序调试情况;5登陆界面:输入信息:6输入成绩:查询成绩:78求平均分:9修改信息:5结束语做这个系统,感觉很难,有些内容上课没听懂,对知识点没彻底弄懂,导致做系统的时候感觉知识不够用,力不从心。在以后的学习中更要上课认真听讲,注重每个知识点、细节,彻底搞懂;也要多些程序以提高自己编程的水平;课余时间更要多花时间在编程上面,这样才能学好。感谢朱老师一年的教导,感谢老师引导我们走进程序设计的大门。参考文献[1]贾宗璞许合利,C语言程序设计,人民邮电出版社,2012.1[2]StephenPrata,PrimerPlus(第五版)中文版,人民邮电出版社,2014.2附录:程序清单10#includestdio.h#includestdlib.h#includestring.h#defineN4structinfor{intterm;//定义学期(1或2)intno;//学号intclas;//定义班级(1或2班)charname[9];//姓名floatchinese;//定义四门成绩floatenglish;floatmath;floatcomputer;structinfor*link;};intn=0;//******************************************************************************//函数功能:创建链表,录入学生的相关信息,此函数返回一个指向链表头的指针//******************************************************************************11structinfor*creat(){structinfor*head=NULL,*p=NULL,*q=NULL;charc;fflush(stdin);printf(是否要输入信息(y/n):);scanf(%c,&c);p=q=(structinfor*)malloc(sizeof(structinfor));q=head;while(p!=NULL&&c=='y'){n++;p=(structinfor*)malloc(sizeof(structinfor));printf(请输入要录入学生信息的学期:);fflush(stdin);scanf(%d,&p-term);//学期只能为1或2while(p-term!=1&&p-term!=2){getchar();printf(输入错误!请重新输入:);//若学期不为1或2,则输入有误12scanf(%d,&p-term);}printf(请输入要录入学生成绩信息的班级:);fflush(stdin);//班级只能为1或2scanf(%d,&p-clas);while(p-clas!=1&&p-clas!=2){getchar();printf(输入错误!请重新输入:);scanf(%d,&p-clas);}printf(请输入该班的学生信息!\n);//输入学生信息(包括学号、四门成绩)printf(请输入学生学号:);fflush(stdin);scanf(%d,&p-no);printf(请输入学生姓名:);fflush(stdin);scanf(%s,p-name);//输入学生姓名printf(请输入语文成绩(0-100):);//输入四门成绩13scanf(%f,&p-chinese);printf(请输入数学成绩(0-100):);scanf(%f,&p-math);printf(请输入英语成绩(0-100):);scanf(%f,&p-english);printf(请输入计算机成绩(0-100):);scanf(%f,&p-computer);if(n==1)//创建新结点head=p;elseq-link=p;q=p;printf(是否还要输入信息(y/n):);fflush(stdin);scanf(%c,&c);}q-link=NULL;//链表结尾return(head);//链表返回头指针}14//******************************************************************************//函数功能:实现对学生信息的修改//******************************************************************************voidchange(structinfor*head){structinfor*p=head;charch,m;charname[9];//定义一个数组,存储学生的姓名intnum;if(p==NULL)printf(出错!请先输入学生信息!);while(1)//设置循环控制{printf(\t\t\t请选择要修改的信息!\t\n);printf(\t\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n);//输出要修改的信息printf(\t\t\ta、学号:\n);printf(\t\t\tb、姓名:\n);printf(\t\t\tc、班级:\n);printf(\t\t\td、成绩:\n);printf(\t\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n);15fflush(stdin);//清盘scanf(%c,&ch);if(ch=='a'){printf(你要修改的信息是:学号!\n);//按姓名修改学号printf(请输入你要修改的学生姓名:);scanf(%s,name);if(strcmp(name,p-name)==0){printf(请输入该学生新的学号:);//输入新学号scanf(%d,&p-no);}elseprintf(无法查找到该学生!\n);//找不到信息}elseif(ch=='b')//按学号修改该班级学生的信息{printf(你要修改的信息是:姓名!\n);16printf(请输入你要修改的学生的学号:);scanf(%d,&num);if(num==p-no)//输入学号,判断条件{printf(请输入该学生的姓名:);scanf(%s,p-name);//输入要做修改的学生姓名}elseprintf(无法查找到该学生!\n);//找不到信息}elseif(ch=='c'){printf(你要修改的信息是:班级!\n);//按学号修改班级printf(请输入你要修改的学生的学号:);scanf(%d,&num);if(num==p-no){printf(请输入该学生的班级:);//输入要做修改的班级scanf(%d,p-clas);}17elseprintf(无法查找到该学生!\n);//找不到信息}elseif(ch=='d'){printf(你要修改的信息是:成绩!\n);//按学号修改成绩printf(请输入你要修改的学生的学号:);scanf(%d,&num);if(num==p-no)//输入学号{printf(请输入该学生新的语文成绩:);scanf(%f,p-chinese);printf(请输入该学生新的数学成绩:);scanf(%f,p-math);//输入新的四门成绩printf(请输入该学生新的英语成绩:);scanf(%f,p-english);printf(请输入该学生新的计算机成绩:);scanf(%f,p-computer);}elseprintf(无法查找该学生的信息!\n);//找不到信息18}elseprintf(出错!\n);p=p-link;printf(是否还要继续修改信息(y/n):);//判断,是否还要修改信息,跳出循环fflush(stdin);if((m=getchar())=='n')break;}}//******************************************************************************//函数功能:按照学号查询学生信息//******************************************************************************voidcheckno(structinfor*head){//按学号查询学生的成绩structinfor*p;p=head;intnum,i=0;19printf(请输入你要查询的学生学号:\n);scanf(%d,&num);if(num==p-no)//输入学号,判断条件{printf(--------------------------------------------------------------------------);printf(\t学期\t学号\t班别\t姓名\t语文\t数学\t英语\t计算机\t\n);printf(-------------------------------------------------------------------------\n);printf(%d\t,p-term);printf(%d\t,p-no);printf(%d\t,p-clas);//输出学生的班级printf(%s\t,p-name);printf(%1f\t,p-chinese);//输出四门成绩printf(%1f\t,p-math);printf(%1f\t,p-english);printf(%1f\t,p-computer);i=2;}if(i==0)printf(没找到该学生的信息!);//找不到信息}20voidcheckclass(structinfor*head){intbanji,i=0;structinfor*p=head;while(p!=NULL)//按班级查询学生的成绩{printf(请输入你要查询成绩的班级:);scanf(%d,&banji);if(banji==p-clas){printf(请输出%d班所有同学的成绩:,banji);printf(-------------------------------