您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > C语言课程设计报告学生成绩管理系统(广工)
一、课程设计题目:学生成绩管理二、需求分析给出n个学生的m门考试的成绩表,每个学生的信息由学号、姓名、性别以及各科成绩组成。对学生的考试成绩进行有关统计:按总数高低次序,打印出名次表,分数相同的为同一名次;按名次打印出每个学生的学号、姓名、总分以及各科成绩,并打印统计表。三、概要设计程序要有的功能:1.输入记录2.用指定格式显示全部记录3.根据姓名查找记录4.根据姓名删除记录5.保存记录到文件6.按序号显示记录7.按姓名由小到大的顺序排序程序运行当中,通过选择对应的功能序号来实现所需功能。对输入的数据要有事先的分析,如果用户输入的数据与实际不相符如输入成绩的数值为负,则程序应输出相应的提示:“您输入的数据有误,请核实!”。再者就是,当再输入完相应的数据后,程序作出相应的提示,询问用户是否要保存数据。在排列学生成绩时候,如果出现成绩相同的情况,程序自动作出处理。最后,在程序可以正确运行的基础上,再增加一些功能,如在排列的时候,自动输出最高分与最低分。与及格成绩作比较,输出及格人数等相关信息。流程图:开始结束选择操作输入数据排序显示数据查询删除输出界面插入数据退出系统按学号按姓名保存数据吧按景平均成绩选择7选择6选择5选择4选择3选择2选择1选择8按平均成绩高低i读取数据吧选择8三门成绩学号姓名四、详细设计源程序:#includestdio.h#includestdlib.h#includestring.hintshoudsave=0;/**/structstudent{charnum[10];/*学号*/charname[20];charsex[4];intcgrade;intmgrade;integrade;inttotle;intave;charneartime[10];/*最近更新时间*/};typedefstructnode{structstudentdata;structnode*next;}Node,*Link;voidmenu(){printf(*********************************主菜单*****************************************);printf(\t1登记学生资料\t\t\t\t\t2删除学生资料\n);printf(\t3查询学生资料\t\t\t\t\t4修改学生资料\n);printf(\t5保存学生资料\t\t\t\t\t0退出系统\n);printf(********************************************************************************\n);}voidprintstart(){printf(-----------------------------------------------------------------------\n);}voidWrong(){printf(\n=====提示:输入错误!\n);}voidNofind(){printf(\n=====提示:没有找到该学生!\n);}voidprintc()/*本函数用于输出中文*/{printf(学号\t姓名性别英语成绩数学成绩C语言成绩总分平均分\n);}voidprinte(Node*p)/*本函数用于输出英文*/{printf(%-12s%s\t%s\t%d\t%d\t%d\t%d\t%d\n,p-data.num,p-data.name,p-data.sex,p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.totle,p-data.ave);}Node*Locate(Linkl,charfindmess[],charnameornum[])/*该函数用于定位连表中符合要求的接点,并返回该指针*/{Node*r;if(strcmp(nameornum,num)==0)/*按学号查询*/{r=l-next;while(r!=NULL){if(strcmp(r-data.num,findmess)==0)returnr;r=r-next;}}elseif(strcmp(nameornum,name)==0)/*按姓名查询*/{r=l-next;while(r!=NULL){if(strcmp(r-data.name,findmess)==0)returnr;r=r-next;}}return0;}voidAdd(Linkl)/*增加学生*/{Node*p,*r,*s;charnum[10];r=l;s=l-next;while(r-next!=NULL)r=r-next;/*将指针置于最末尾*/while(1){printf(请你输入学号(以'0'返回上一级菜单:));scanf(%s,num);if(strcmp(num,0)==0)break;while(s){if(strcmp(s-data.num,num)==0){printf(=====提示:学号为'%s'的学生已经存在,若要修改请你选择'4修改'!\n,num);printstart();printc();printe(s);printstart();printf(\n);return;}s=s-next;}p=(Node*)malloc(sizeof(Node));strcpy(p-data.num,num);printf(请你输入姓名:);scanf(%s,p-data.name);getchar();printf(请你输入性别:);scanf(%s,p-data.sex);getchar();printf(请你输入c语言成绩:);scanf(%d,&p-data.cgrade);getchar();printf(请你输入数学成绩:);scanf(%d,&p-data.mgrade);getchar();printf(请你输入英语成绩:);scanf(%d,&p-data.egrade);getchar();p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade;p-data.ave=p-data.totle/3;/*信息输入已经完成*/p-next=NULL;r-next=p;r=p;shoudsave=1;}}voidQur(Linkl)/*查询学生*/{intsel;charfindmess[20];Node*p;if(!l-next){printf(\n=====提示:没有资料可以查询!\n);return;}printf(\n=====1按学号查找\n=====2按姓名查找\n);scanf(%d,&sel);if(sel==1)/*学号*/{printf(请你输入要查找的学号:);scanf(%s,findmess);p=Locate(l,findmess,num);if(p){printf(\t\t\t\t查找结果\n);printstart();printc();printe(p);printstart();}elseNofind();}elseif(sel==2)/*姓名*/{printf(请你输入要查找的姓名:);scanf(%s,findmess);p=Locate(l,findmess,name);if(p){printf(\t\t\t\t查找结果\n);printstart();printc();printe(p);printstart();}elseNofind();}elseWrong();}voidDel(Linkl)/*删除*/{intsel;Node*p,*r;charfindmess[20];if(!l-next){printf(\n=====提示:没有资料可以删除!\n);return;}printf(\n=====1按学号删除\n=====2按姓名删除\n);scanf(%d,&sel);if(sel==1){printf(请你输入要删除的学号:);scanf(%s,findmess);p=Locate(l,findmess,num);if(p){r=l;while(r-next!=p)r=r-next;r-next=p-next;free(p);printf(\n=====提示:该学生已经成功删除!\n);shoudsave=1;}elseNofind();}elseif(sel==2){printf(请你输入要删除的姓名:);scanf(%s,findmess);p=Locate(l,findmess,name);if(p){r=l;while(r-next!=p)r=r-next;r-next=p-next;free(p);printf(\n=====提示:该学生已经成功删除!\n);shoudsave=1;}elseNofind();}elseWrong();}voidModify(Linkl){Node*p;charfindmess[20];if(!l-next){printf(\n=====提示:没有资料可以修改!\n);return;}printf(请你输入要修改的学生学号:);scanf(%s,findmess);p=Locate(l,findmess,num);if(p){printf(请你输入新学号(原来是%s):,p-data.num);scanf(%s,p-data.num);printf(请你输入新姓名(原来是%s):,p-data.name);scanf(%s,p-data.name);getchar();printf(请你输入新性别(原来是%s):,p-data.sex);scanf(%s,p-data.sex);printf(请你输入新的c语言成绩(原来是%d分):,p-data.cgrade);scanf(%d,&p-data.cgrade);getchar();printf(请你输入新的数学成绩(原来是%d分):,p-data.mgrade);scanf(%d,&p-data.mgrade);getchar();printf(请你输入新的英语成绩(原来是%d分):,p-data.egrade);scanf(%d,&p-data.egrade);p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade;p-data.ave=p-data.totle/3;printf(\n=====提示:资料修改成功!\n);shoudsave=1;}elseNofind();}voidDisp(Linkl){intcount=0;Node*p;p=l-next;if(!p){printf(\n=====提示:没有资料可以显示!\n);return;}printf(\t\t\t\t显示结果\n);printstart();printc();printf(\n);while(p){printe(p);p=p-next;}printstart();printf(\n);}voidTongji(Linkl){Node*pm,*pe,*pc,*pt,*pa;/*用于指向分数最高的接点*/Node*r=l-next;if(!r){printf(\n=====提示:没有资料可以统计!\n);return;}pm=pe=pc=pt=pa=r;while(r!=NULL){if(r-data.cgrade=pc-data.cgrade)pc=r;if(r-data.mgrade=pm-data.mgrade)pm=r;if(r-data.egrade=pe-data.egrade)pe=r;if(r-data.totle=pt-dat
本文标题:C语言课程设计报告学生成绩管理系统(广工)
链接地址:https://www.777doc.com/doc-2909209 .html