还剩15页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
学生成绩管理系统1系统分析
1.1课程设计内容设计一学生成绩管理系统功能包括.输入数据可输入学生姓名、学号、及多门(至少5门课程的成绩(先将所有学生的姓名、学号输入完后,再逐科输入成绩.编辑数据可添加、删除、修改数据.计算计算出每个学生的总分及平均成绩;计算每门课程平均成绩.查询可按姓名、学号查询;可查询不及格的学生名单.排序可按姓名、学号、总分排序.浏览可浏览输入、查询或排序后的数据.文件操作可打开、保存、关闭数据文件
1.2系统功能需求分析本系统应具有以下功能
1、数据输入功能可输入学生人数、姓名、学号、数学成绩、英语成绩语文成绩、物理成绩、电脑成绩输入后自动保存学生数据
2、数据添加、修改、删除功能可以添加多名学生信息,包括姓名、学号、各科成绩等待可以修改某学生的全部信息也可以删除某学生的全部信息
3、计算功能可以计算出每个学生的总分以及平均成绩,也可以计算出全部学生的各科的平均成绩
4、查询功能可按姓名、学号查询到某个学生的信息,可以输出不及格的学生名单
5、排序功能可以按学生姓名、学号、总分对全部学生排序
6、浏览功能可浏览输入、查询或排序后的数据
7、文件功能可以新建文件,打开文件
8、关闭系统printf^\nPleaseinputthenewnameofthestudent:“);scanf%s”stu[i].name;printfPleaseinputthenewnumberofstudentslearning:“〉;scanf〈线s”stu[i].num;printfPleaseinputthenewmathematicsscore:/,;scanf,z%d,zstu[i].math;printfPleaseinputnewEnglishscore:*;scanf/z%d/zstu[i].english;printfPleaseinputthenewmathematicsscore:“〉;scanf,,%d,,»stu[i].Chincse;prinlfXPleaseinputthenewphysicalscore:“);scanf//%d,,stu[i].physics;printfVPleaseinputthenewcomputerscore:“);scanf%dstu[i]puter;}}fp=fopcnfnamc,zw/z;fprintfXfp飞d”number;fori=0;inumber;i++fprintffpz,%s%s%d%d%d%d%dz,stu[i].namestu[i].numstu[i].mathstu[i].englishstu[i].Chinesestu[i].physicsstu[i]puter;fclosefp;saveO;printf〈“\n\nPressanykeytoreturntothemenu”);getchO;}voidcalculateintn/*计算*/{intimathave=0englishave=0Chineseave=0physicsave=0computerave=0;clrscrO;printf\n\nEverystudentstotcilscoreandaveragescoreare:\n\n”;printK^nametatalavcragcn〉;fori=0;in;i++(stu[i].total=stu[i].math+stu[i].english+stu[i].Chinese+stu[i].physics+stu[i]puter;stu[i].average=stu[i].total/5;printf%-10s%-10d%-10d\n”stu[i].namestu[i].totalstu[i].average〉;)fori-0;in;i++mathave=mathave+stu[i].math;mathave=mathave/n;fori=0;in;i++cnglish_ave=englishave+stu[i].english;english_ave=english_ave/n;fori=0;in;i++chinese_ave=chinese_ave+stu[i].Chinese;Chineseave-chineseave/n;for〈i=0;in;i++physics_ave=physics_ave+stu[i].physics;physics_avc=physicsave/n;fori=0;in;i++computer_ave=computer_ave+stu[i]puter;computer_ave_computer_ave/n;printKAnmathaverageis:%d\n/zmathave;printK^englishaverageis:%d\n,,»english_ave;printK^chineseaverageis:%d\n”Chinese一ave;printK^physicsaverageis:%d\n”physics_avc;printfz,computeraverageis:%d\n,zcomputer_ave;printf〈“\n\nPressanykeytoreturntothemenu〉;getchO;voidsearchO/*查询*/{voidsearchnameO;voidsearch_num;voidsearchfailO;inti;clrscrO;printKAnXnl.Searchstudentmessagebyname\n”;printf/,
2.Searchstudentmessagebynumber\n”〉;printfz/
3.Searchthestudentwhosscorelower60\n”;printf
4.Returntomenu\n,/;printf,z\n\nYourchoicescanf〈飞d”i;switchi{case1:searchnameO;break;case2:searchnum;break;case3:search_fai1;break;case4:returnmcnuO;break;default:printf,/error\n,,;}voidsearchnameO/*按姓名查询*/inti;charname
[10];charmark=l;clrscrO;printf,z\n\nPleaseinputthestudentsname:“〉;scanf/s”name;fori=0;inumber;i++{ifstrcmpnamestu[i].namo==0{printf,z\nstudentname:%s\n”stu[i].name;printR^studentnumber:%s\nz/stu[i].num;printf,zstudentmathscore:%d\n/,stu[i].math;printf,zstudentenglishscore:%d\n\stu[i].english;printf,zstudentChinesescore:%d\n,,»stu[i].Chinese;printf,zstudcntphysicsscorc:%d\nz,stu[i].physics;printK^studentcomputerscore:%d\n,,stu[i]puter;mark-0;}ifmark-lprintf,zNothisstudent\n/x;printf〈“\n\nPressanykeytoreturntothemenu”;getchO;}voidsearchnumO/*按学号杳询*/{inti;charnumL10];chcirmeirk=l;clrscrO;printfz,Pleaseinputthestudent1snum:scanf%snum;fori=0;i〈number;i++{ifstrcmpnumstu[i].num==0{printf,zstudcntnamc:%s\n,zstu[i].namc;printK^studentnumber:%s\n”stu[i].num;printK^studentmathscore:%d\n”stu[i].math;printK^studentenglishscore:%d\n,,stu[i].english;printK^studentChinesescore:%d\n”stu[i].Chinese〉;printK^studcntphysicsscorc:%d\n/zstu[i].physics;printf,zstudentcomputerscore:%d\n,zstu[i]puter;mark=0;break;}}ifmark==lprintf/,Nothisnum\n〃;printf,z\n\nPressanykeytoreturntothemenu”;getchO;voidsearch_fai1/*查询不及格名单*/{inti;fori-0;inumber;i++if«stu[i].math60|stu[i].english60stu[i].Chinese60|stu[i].physics60|stu[i]puter60printf,z\n\nThestudentwhofai1is*sname〉;printf\n\nPressanykeytoreturntothemenu”;getchO;voidsortO/*排序*/{voidsort_name;voidsortnumO;voidsort_score;inti;clrscrO;printf〈“\n\n
1.Sortbyname\n”〉;printf,z
2.Sortbynum\n,,;printf/,
3.Sortbytotalscore\nz,;printf,/
4.Returntomenu\n”;printf/z\n\nYourchoicescanf%di〉;switchi{case1:sortnamcO;break;case2:sort_num;break;case3:sortscoreO;break;case4:return_menu;break;default:printf*nothischoice\n,z;}}voidsortnameO/*按姓名排序*/{intijt;charstr
[10];clrscrO;forj=0;jnumber;j++fori=0;inumber-l-j;i++/*冒泡法*/ifstrcmpstu[i].namestu[i+l].name0strcpystrstu[i].name〉;strcpystu[i].namestu[i+l].name;strcpystu[i+l].namestr;strcpystrstu[i].num;strcpystu[i].numstu[i+l].num;strcpystu[i+l].numstr;t=stu[i].math;stu[i].math=slu[i+】].math;stu[i+1].math=t;t=stu[i].english;stu[i].english-stu[i+l].english;stu[i1].english=t;t=stu[i].Chinese;stu[i].Chinese=stu[i+1].Chinese;stu[i+l].Chinese=t;t=stu[i].physics;stu[i].physics=stu[i+l].physics;stu[i+1].physics-t;t=stu[i]putor;stu[i]puter=stu[i+l]puter;stu[i^l]puter=t;}printf〈“\n\nnamenummathenglisChinesephysicscomputer\nz,;fori=;inumber;i++printf/,%-10s%-10s%-10d%-10d%-10d%-10d%-10d\n,,»stu[i].namestu[i].numstu[i].mathstu[i].englishstu[i].Chinesestu[i].physicsstu[i]puter;saveO;printf\n\nPressanykeytoreturntothemenu”;getchO;}voidsort_num/*按学号排序*/intijt;charstr
[10];clrscrO;forj-0;jnumber;j++〉fori=0;inumber-l-j;i++{ifstrcmpstu[i].numstu[i+l].num0{strcpystrstu[i].num;strcpystu[i].numstu[i+l].num;strcpystu[i+l].numstr;strcpystrstu[i].name;strcpystu[i].namestu[i+l].name;strcpystu[i+l].namestr;t=stu[i].math;stu[i].math=stu[i+l].math;stu[i+l].malh二t;t=stu[i].english;stu[i].english-stu[i+l].english;stu[i+l].english-t;t=stu[i].Chinese;stu[i].Chinese=stu[i+1].Chinese;stu[i+l].Chinese=t;t=stu[i].physics;stu[i].physics=stu[i+l].physics;stu[i-1].physics-t;t=stu[i]puter;stu[i]puter=stu[i+1]puter;stu[i-l]puter=t;}printf〈“\n\nnumnamemathenglisChinesephysicscomputer\n,z;fori-0;inumber;i++printf,z%-10s%-10s%-10d%-10d%-10d%-10d%-1OciXn^stu[i].numstu[i].namestu[i].mathstu[i].cnglishstu[i].Chinesestu[i].physicsstu[i]puter;saveO;printf〈“\n\nPressanykeytoreturntothemenu”〉;getchO;intijt;charstr
[10];clrscrO;fori~0;Knumber;i++stu[i].total=stu[i].math+stu[i].english-stu[i].Chinese+stuLi].physics+stu[i]puter;forj=0;jnumbcr;j++fori-0;inumber-l-j;i++ifstu[i].totalstu[i+l].total{strcpystrstu[i].name;strcpystu[i].namestu[i+l].name;strcpystu[i+l].namestr;strcpystrstu[i].num;strcpystu[i].numstu[i+l].num;strcpystu[i+l].numstr;t=stu[i].math;stu[i].math_stu[i+l].math;stu[i^l].math二t;t=stu[i].english;stu[i].english=stu[i+l].english;stu[i+l].english=t;t=stu[i].Chinese;stu[i].Chinese=stu[i+1].Chinese;stu[i-1].Chinese-t;t=stu[i].physics;stu[i].physics=stu[i+l].physics;stu[i-l].physics二t;t=stu[i]putor;stu[i]puter=stu[i+l]puter;stu[i+l]puter=t;t=stu[i].total;stu[i].total=stu[i+l].total;stu[i+l].total=t;}printf\n\nnanienummathenglisChinesephysicscomputertotal\n,z;fori=0;inumber;i++printf/,%-10s%-10s%-10d%-10d%-10d%-10d%-10d%-10d\n//stu[i].namestu[i].numstu[i].mathstu[i].englishstu[i].Chinesestu[i].physicsstu[i]puterstu[i].total;saveO;printf\n\nPressanykeytoreturntothemenu”;getchO;}voidbrowseO/*浏览数据*/{inti;clrscrO;/*FILE*fp;*/fp=fopenwstu_listz,rb”;printf\n\nnamenummathenglisChinesephysicscomputer\nz,;fori;inumber;i++{frcadstu[i]sizcofstructstudcnt1fp;printfz,%-1Os%-1Os%-10d%-1Od%-10d%-1Od%-1Od\n\stu[i].namestu[i].numstu[i].mathstu[i].englishstu[i].Chineseslu[i].physicsstu[i]puter;fclosefp;printf,\n\nPressanykeytoreturntothemenu”〉;getchO;}voidopenfile/*打开文件*/{inti;charfname[10j;clrscrO;printf〈“\n\n\tPloaseinputthefilenamewhichyouwanttoopen:scanf〈/s”fname;gctchO;iffpl=fopenfname!二NULL》fscanffplnumber;//fclosefpl;printf/z\nnuinber:%d\n,znumber;printK^XnnamenummathenglisChinesephysicscomputer\n,z;//fpl=fopenfncunefori=0;inumber;i++/*注意下面的格式要和之前的一样要不会乱码*/fscanffpl%s%s%d%d%d%d%dz,stu[i].namestu[i].numstu[i].mathstu[i].englishstu[i].Chinesestu[i].physicsstu[i]puter;printf,,%-10s%-10s%-10d%-10d%-10d%-10d%-10d\n,/stu[i].namestu[i].numstu[i].mathstu[i].englishstu[i].Chinesestu[i].physicsstu[i]puter;}fclosefpl;elseprintf,/\terror,,;printfw\n\n\tPressanykeytoreturntothemenu…getchO;}voidmainO{intnum;clrscrO;gotoxy32;fori-0;i37;i++printf*gotoxy105;printf/zWelcometostudentachievementmanagementsystem”;gotoxy107;printf〈“Producer:Wangxuezheng”;gotoxy109;printK^Studentnumber:310908789”;gotoxy1011;printKXlass:Electronic5class”;gotoxy314;fori=0;i37;i-+printf*;printf〈“\n\n\n\tPlcascpressanykeytocontinue...getchO;whilel{menuO;scanf,,%d,znum;switchnumcase1:new_file;break;case2:editdataO;break;case3:calculatenumber;break;case4:search;break;case5:sortO;break;case6:browseO;break;case7:openfile;break;case0:exit0;}}2系统设计
2.1总体设计按系统分析的功能要求将系统划分为以下几个主要功能模块
2.2详细设计
1、主函数main利用While循环语句和switch◊实现各函数的调用,系统根据输入的数字选项来调用相应的函数
2、菜单函数menuO通过菜单函数显示可选择的菜单,每次操作完后按任意键回到菜单函数
3、新建文件函数new_file通过该函数实现新建文件、输入学生数据功能
4、编辑数据函数edit_data该函数下还有3个函数,通过switch◊功能去选择其包含3个函数去实现不同的功能3个函数分别是添加学生数据函数add_data、删除学生信息函数deldata修改学生信息函数moddataOo
5、计算函数calculate通过该函数计算每个学生的平均成绩及总成绩,计算出每科的平均成绩并显示出来
6、查询函数search该函数包含3个子涵数,分别按照姓名查询函数searchjame◊:、按照学号查询函数search_num查询不及格名单函数search_fail通过switchO来选这3个函数去实现不同的查询功能
7、排序函数sort该函数包含3个子函数分别按照姓名排序函数sort_name按照学号排序函数sort_num按照分数高低排序函数sort_score◊,通过switch◊来选择这3个函数每个函数排序好后会显示出来
8、浏览函数browseO通过该函数可以查看可浏览输入、查询或排序后的数据
9、打开文件函数open_file通过该函数可以打开已经保存的文件查看里面的数据
10、保存函数savcO把该函数放在子函数末尾,比如放在排序函数编辑函数等函数内容的末尾,这个就可以实现将修改后的数据保存下来
11、清屏函数clrscr通过该函数可以独立显示每个函数的内容
12、返菜单函数returnmenuO这个函数反正子函数里面,当子函数操作完后,通过该函数可按任意键返回到目录
13、定义一个结构体structstudent}stu[SIZE]这样就可以将不同类型的数组组合成一个有机的整体,以便引用,还可以通过SIZE的大小来控制最多可输入的学生人数3系统运行菜单界面输入数据删除数据计算数据按姓名排序后的数据按姓名排序打开文件4总结本次设计达到了设计要求的基本内容,各功能都能正常运行,设计的系统使用方法容易理解,界面清晰但不够华丽没有设计到要求以外的其它功能设计过程中文件操作这一部分把我难住了,由于之前没有系统地去学这一块自己只有看书,问同学来了解搞了很久才完成这一块还有输入错误检查这一部分做得不好通过一个多星期的c语言课程设计感觉自己收获了不少首先学会了一些书本没学到的函数,比如clrscr◊等我对各函数的作用有更加进一步的了解,熟悉了函数之间的调用关系懂得了冷静地去处理编译时出现的问题从这里我也得到一个体会做一个程序或者开发一个软件应该着重从它的后台制作入手不能做出一个中看不中用的程序或者软件,写的程序往往是很长的,有时候面对几百行的程序甚至数千行的程序,自己也会看傻这就需要我们在设计时要有耐心,适当地做下注释这次课程设计对我以后在单片机编程这一块打下了很好的基础,对我以后的学习有很大的帮助参考文献C程序设计(第三版谭浩强编著C程序设计题解与上机指导(第三版谭浩强编著附录代码#include,zstdio.h#includestring.h#includestdlib.h/*包含exitO*/^defineSIZE100intinumber;FILE*fp*fpl;structstudent{charname
[20];charnumL10];intmath;intenglish;intChinese;intphysics;intcomputer;inttotal;intaverage;}stu[SIZE];voidsaveO/*将数据储存于文件*/{FILE*fp;intj;iffp-fopen,,stulistwb〉==NULLprintK^Ccinnotopenfile\n”;return;}forj=0;jSIZE;j++iffwritestu[j]sizeofXstructstudent),1fp!=]printK^filewriteerror\n,z;fclosefp;)voidreturnmenuO/*返回菜单*/{printKAnXnXtPressanykeytoreturntomenu…getchO;}voidmenuO/*菜单*/{inti;clrscrO;gotoxyl3;fori-0;i37;i++print**”;printf\n\n\n
1.Setupnewfile\nz,;printf
2.Editdata\n,,;printfz,
3.Calculation\n,,;printf/,
4.Searchd);printf,/
5.Sort\n”;printf/,
6.Browse\nz,;printf/,
7.Openfile\n,z;printfV
0.exit\n,;printf,,\n\n/,;fori=0;i37;i++printfz,*;printf,z\n\nPleaseselectthemenu:“);}voidnew_file/*输入数据*/{intijsum;charfi1e_name
[10];fori=0;i37;i++print**”;clrscrO;printf〈“\n\nPleaseinputthefilename:“);scanf,z%swfile_name;fp=fopenfile_namew”;/*向文件写数据*/printf\nSucccsscdtocrcatfilc,z;printf〈“\n\nPleaseinputthenumberofstudents:;scanf%d”number;fori=0;inumber;i++printf,z\nPleaseinputthenameofthestudent:z,;scanf绘s”stu[i].name;printfPleaseinputthenumberofstudentslearning:scanf〈%s”stu[i].num;printfwPleaseinputthemathematicsscore:“;scanfz,%d,/stu[i].malh;printfwPleaseinputEnglishscore:“〉;scanf%d”stu[i].english;printfX“Pleaseinputthemathematicsscore:“〉;scanf%d”stu[i].Chinese:printfPleaseinputthephysicalscore:“〉;scanf〈%d”stu[i].physics;printf,Pleaseinputthecomputerscore:“;scanf〈%d”stu[i]puter;}fprintffp%d”number;fori=0;inumber;i++fprintffp,z\n%s%s%d%d%d%d%d,,»stu[i].namestu[i].numstu[i].mathstu[i].englishstu[i].Chinesestu[i].physicsstu[i]puter;/*将学生信息输出到文件上*/inti;clrscrO;printf\n\n
1.Adddata\n”;printf,z
2.Deletedata\n”》;printf*
3.Modifydata\n*;printfz,
4.Returntomenu\n”;printf\n\nYouchoiceis:;scanf%di;switchicase1:adddataO;break;case2:del_data;break;case3:moddataO;break;case4:return_menu;break;default:printfz/Nothischoice”);))voidadddataO/*添加数据*/{intin;charfname[10J;clrscrO;printf〈“\n\n\tPleaseinputthefilenamewhichyouwanttoadddata:“);scanfdfname;fp=fopcn〈fnam,〃r”;/*读入文件*/fscanffpnumber;/*从文件读出学生人数*/fori=0;inumber;i++fscanffp/z%s%s%d%d%d%d%d,zstu[i].namestu[i].numstu[i].mathstu[i].englishstu[i].Chinesestu[i].physicsstu[i]puter;/*从文件读入学生各项信息*/fclosefp;printf〈“\n\nPleaseinputtheaddnumberofstudents:scanf%d”n;fori=number;inumber+n;i++(printf\nPleaseinputthenameofthestudent:“);scanf〈%s”stu[i].name;printfVPleaseinputthenumberofstudentslearning:scanf“%s”stu[i].num;printfwPleaseinputthemathematicsscore:“);scanfX“*d”stu[i].math;printfPleaseinputEnglishscore:“〉;scanfWstu[i].english;printfVPleaseinputthemathematicsscore:“〉;scanf,,%d,zChinese);printfVPleaseinputthephysicalscore:“〉;scanf,,%d,/stu[i].physics);printf,zPleaseinputthecomputerscore:“);scanf%d”stu[i]puter;number=number+n;fp=fopcnfnam,w”;fprintffp%d”number;fori=0;inumbcr;i++/*将学生信息输出到文件上*/fprintKfp/^s%s%d%d%d%d%d//stu[i].namestu[i].numstufi].mathstu[i].englishstu[i].Chinesestu[i].physicsstu[i]puter;fclosefp;saveO;printf〈“\n\nPressanykeytoreturntothemenu”;getchO;voiddeldataO/*删除数据*/{intikn;charname
[10]c;cheirfname[10一;clrscrO;printf\n\n\lPleaseinputthefilenamewhichyouwanttodeletedala:;scanf%s”fname;fp=fopenfnamer”;fscanffp%d”number;fori-0;inumber;i++/*把学生信息读进来*/fscanffp,z%s%s%d%d%d%d%d,zstu[i].namestu[i].numstu[i].mathstu[i].englishstu[i].Chinesestu[i].physicsstu[i]puter;fclosefp;printKAtoriginaldata:,z;printKAnXnnamenummathenglisChinesephysicscomputer\n,z;fori-0;inumber;i++printf,z%-10s%-10s%-10d%-10d%-10d%-10d%-1Od\n*stu[i].namestu[i].numstu[i].mathstu[i].cnglishstu[i].Chinesestu[i].physicsstu[i]puter;printKAnXtPleaseinputthestudent*snamewhichyouwanttodelete:scanf%s”name;fori=0;i〈number;i++{ifstrcmpnamestu[i].name==0{/*将学生信息向前移一位*/strcpystu[i].namestu[i+l].name;strcpystu[i].numstu[i+l].num;stu[i].math=stu[i+l].math;stu[i].english=stu[i+l].english;stu[i].Chinese=stu[i+1].Chinese;stu[i].physics=stu[i+l].physics;stu[i]puter=stu[i+l]puter;)}printfz/\n\tthenewdata:“);printf,z\n\nnamenummathenglisChinesephysicscomputer\n,;fori=0;inumber-l;i++printf/,%-10s%-10s%-10d%-10d%-10d%-10d%-10d\n,,»stu[i].namestu[i].numstu[i].mathstu[i].englishstu[i].Chinesestu[i].physicsstu[i]puter;number一;fp fopenfnamefprintffp%d”number;fori-0;inumber;i++/*将删除后的信息写到文件上*/fprintffpf,%s%s%d%d%d%d%dwstu[i].namestu[i].numstu[i].mathstu[i].cnglishstu[i].Chinesestu[i].physicsstu[i]puter;fclosefp;saveO;printf〈“\n\nPressanykeytoreturntothemenu”);getchO;}voidmoddataO/*修改数据*/{charname
[10];charfname[10J;clrscrO;printf/z\n\n\tPleaseinputthefilenamewhichyouwanttomodifydata:);scanfz/%sz/fname;fp=fopcn〈fnam,fscanffp%d”number;fori=0;inumbcr;i++fscanffp/z%s%s%d%d%d%d%d,zstu[i].namestu[i].numstu[i].mathstu[i].englishstu[i].Chinesestu[i].physicsstu[i]puter;fclosefp;clrscrO;printfz,\n\nPleaseinputthestudentsnamewhoyouwanttomodify:*;scanf%s”name;fori=0;inumber;i++ifstrcmpnamestu[i].name=_0。