您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 学生成绩管理系统--C语言
1福建工程学院计算机与信息科学系实验报告2012–2013学年第1学期任课老师:章静课程名称结构化程序综合设计班级计算机1001座号3100301114姓名张扬文实验题目学生成绩管理系统实验时间实验开始日期:2012/2/24报告提交日期:2012/3/10实验目的、要求1.该实验的课内学时是4个课时。2.程序完成后应该完成如下基本功能:1)用自定义结构体typedefstruct设计该软件的数据结构;2)用数组或指针链表将所有学生的数据按照学号顺序链接起来;3)程序能够按照学号顺序输入学生的三门成绩,并计算平均成绩和总成绩。4)程序能够显示已经输入的指定学号的学生成绩以及平均成绩和总成绩。5)程序能够按要求显示指定分数段的学生成绩以及平均成绩和总成绩。6)能够统计班级总人数、班级平均成绩。7)能够增加和删除指定学生的成绩。8)按照指定的要求以及顺序(升序或降序)显示学生成绩以及平均成绩和总成绩。实验步骤与内容按如下顺序写:1、主要设计思想;学生成绩管理系统包含多种功能,可以输入学生成绩,删除,插入,排序,查找等等。。。输入的信息又包含学生姓名,学号,各科成绩。。所以首先要定义一个结构体:typedefstructnode{charid[20];charname[15];intscore[MAXCOURSE];intsum;doubleaverage;structnode*next;}Student;根据结构体中的内容飙血程序。2、主要数据结构及其解释在此次程序设计中用了链表来实现对数据的处理,并设计了菜单界面如图,根据switch语句来对用户的选择:23、模块关系图;4、所有函数的简要说明;1)插入函数Insert_Before();主要是要重新加入学生的信息,通过头插法。主函数输入学生信息打印成绩计算平均分和总分查找学生成绩插入学生成绩显示分数段的学生按总分平均分降序排列菜单32)计算平均分和总分Count_Score();将输入的数据计算出学生的平均分和总分。3)删除学生信息Del_Student();删除某个学生的成绩。4)按姓名查找Searchname_Student();通过输入学生的姓名找到学生的成绩。5)计算班级总人数people=Count_People();将总的输入学生人数打印出来。6)显示某分数段学生信息Section_Score();首先选择你要某科目的成绩并输入成绩的范围,按条件输出学生成绩。7)按总分,平均分降序排列Descend_English();将输入的全部学生成绩按总分排序。5、所有源代码;/*学生成绩管理系统C语言*/#includestdio.h#includestdlib.h#includestring.h#defineMAXID10#defineMAXNAME20#defineMAXCOURSE3/*学生数据结构*/typedefstructnode{charid[20];charname[15];intscore[MAXCOURSE];intsum;doubleaverage;structnode*next;}Student;/*头指针*/Student*head=NULL;/*课程名称*/charClassName[MAXCOURSE][20]={数学,英语,计算机};/*菜单*/intMenu(){system(cls);fflush(stdin);printf(计算机1001张扬文3100301114\n);printf(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n);printf(************学生成绩管理系统****************\n);printf(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n);printf(1-初始化\n);4printf(2-输入学生信息\n);printf(3-计算所有学生的总分和平均分\n);printf(4-打印全部学生信息\n);printf(5-查找学号或姓名删除学生信息\n);printf(6-按姓名查找学生信息\n);printf(7-按学号查找学生信息\n);printf(8-查找某一科成绩段学生信息\n);printf(9-插入学生信息到链表中\n);printf(10-按总分或平均分降序排列学生成绩\n);printf(0-退出\n);return0;}/*初始化*/Student*Init(){inti;Student*head;head=(Student*)malloc(sizeof(Student));head-next=NULL;returnhead;}/*检查学号*/charCheck_ID(char*s){inti;if(strlen(s)==0||strlen(s)MAXID)return0;for(i=0;istrlen(s);i++){if(s[i]'0'&&s[i]'9')return1;}return0;}/*检查姓名*/charCheck_Name(char*s){inti;if(strlen(s)==0||strlen(s)MAXNAME)return0;for(i=0;istrlen(s);i++){5if((s[i]='a'&&s[i]'z')||(s[i]='A'&&s[i]='Z'))return1;}return0;}/*检查分数*/intCheck_Score(ints){if(s=0&&s=100)return1;return0;}/*检查学号是否相同*/charIs_SameID(char*s){Student*p=head-next;while(p!=NULL){if(strcmp(s,p-id)==0)return1;p=p-next;}return0;}/*输入学生信息*/voidInput_Score(Student*p){/*学号*/printf(\n请输入学号:);do{gets(p-id);if(!Check_ID(p-id)){printf(输入不正确!请重新输入学号:);}elseif(Is_SameID(p-id)){printf(存在已学号!请重新输入学号:);}}while(!(Check_ID(p-id)&&!Is_SameID(p-id)));/*姓名*/printf(请输入姓名:);6do{gets(p-name);if(!Check_Name(p-name)){printf(输入不正确!请重新输入姓名:);}}while(!Check_Name(p-name));//输入成绩inti;for(i=0;iMAXCOURSE;i++){do{printf(请输入%s成绩:,ClassName[i]);scanf(%d,&p-score[i]);if(!Check_Score(p-score[i]))printf(输入成绩不正确!\n请重新输入%s成绩:,ClassName[i]);}while(!Check_Score(p-score[i]));}p-average=-1;p-sum=-1;}/*头插法插入节点*/voidInsert_Before(){Student*s=(Student*)malloc(sizeof(Student));Input_Score(s);s-next=head-next;head-next=s;}/*输出学生成绩信息*/voidOutput_Score(Student*p){inti;printf(\n姓名:%s,学号:%s\n,p-name,p-id);for(i=0;iMAXCOURSE;i++){7printf(%s成绩:%d,ClassName[i],p-score[i]);}printf(总分:%d平均分:%.2f\n,p-sum,p-average);}/*删除节点q*/voidDel_Node(Student*q){Student*p=head;while(p-next!=q){p=p-next;}p-next=q-next;free(q);}/*插入学生成绩*/voidInsert_List(){intx;printf(输入你要插入的学生数:);scanf(%d,&x);while(x!=0){getchar();Student*p=(Student*)malloc(sizeof(Student));printf(\n请输入学号:);do{gets(p-id);if(!Check_ID(p-id)){printf(输入不正确!请重新输入学号:);}elseif(Is_SameID(p-id)){printf(存在已学号!请重新输入学号:);}}while(!(Check_ID(p-id)&&!Is_SameID(p-id)));/*姓名*/8printf(请输入姓名:);do{gets(p-name);if(!Check_Name(p-name)){printf(输入不正确!请重新输入姓名:);}}while(!Check_Name(p-name));//输入成绩inti;for(i=0;iMAXCOURSE;i++){fflush(stdin);printf(请输入%s成绩:,ClassName[i]);scanf(%d,&p-score[i]);do{if(!Check_Score(p-score[i]))printf(输入成绩不正确!请重新输入%s成绩:,ClassName[i]);}while(!Check_Score(p-score[i]));}p-average=-1;p-sum=-1;p-next=head-next;head-next=p;x--;}}/*按学号查找*/Student*Search_ID(char*id){Student*p=head-next;while(p!=NULL){if(strcmp(p-id,id)==0)break;p=p-next;}returnp;}/*按姓名查找节点*/9Student*Search_Name(char*name){Student*p=head-next;while(p!=NULL){if(strcmp(p-name,name)==0)break;p=p-next;}returnp;}/*输出链表*/voidOutput_List(){Student*p;p=head-next;while(p!=NULL){Output_Score(p);p=p-next;}}/*删除指定学生信息*/voidDel_Student(){Student*p;fflush(stdin);charstr[15];charjudge[10];printf(请输入要删除的学生的学号或姓名:);do{gets(str);if(!(Check_ID(str)||Check_Name(str))){printf(输入错误!请重新输入:);}}while(!(Check_ID(str)||Check_Name(str)));//判断是否为学号还是姓名if(str[0]'0'&&str[0]'9'){10p=Search_ID(str);if(p==NULL){printf(此学号不存在!\n);}else{Output_Score(p);printf(是否要删除此学号!(确认按y,任意键取消):);gets(judge);if(strcmp(judge,y)==0){Del_Node(p);printf(删除成功!);}}}else{p=Search_Name(str);if(p==NULL){printf(此姓名不存在!\n);}else{Output_Score(p);printf(是否要删除
本文标题:学生成绩管理系统--C语言
链接地址:https://www.777doc.com/doc-1862589 .html