《C语言学生成绩管理系统方案.docx》由会员分享,可在线阅读,更多相关《C语言学生成绩管理系统方案.docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学生成绩管理系统1系统分析1.1课程设计内容设计一学生成绩管理系统,功能包括:1 .输入数据:可输入学生姓名、学号、及多门(至少5门课程的成绩。(先将 所有学生的姓名、学号输入完后,再逐科输入成绩2 .编辑数据:可添加、删除、修改数据。3 .计算:计算出每个学生的总分及平均成绩;计算每门课程平均成绩。4 .查询:可按姓名、学号查询;可查询不及格的学生名单。5 .排序:可按姓名、学号、总分排序6 .浏览:可浏览输入、查询或排序后的数据。7 .文件操作:可打开、保存、关闭数据文件。1.2系统功能需求分析本系统应具有以下功能:1、数据输入功能:可输入学生人数、姓名、学号、数学成绩、英语成绩, 语文成
2、绩、物理成绩、电脑成绩,输入后自动保存学生数据。2、数据添加、修改、删除功能:可以添加多名学生信息,包括姓名、学号、 各科成绩等待,可以修改某学生的全部信息,也可以删除某学生的全部信 息。3、计算功能:可以计算出每个学生的总分以及平均成绩,也可以计算出全部 学生的各科的平均成绩。4、查询功能:可按姓名、学号查询到某个学生的信息,可以输出不及格的学 生名单。5、排序功能:可以按学生姓名、学号、总分对全部学生排序。6、浏览功能:可浏览输入、查询或排序后的数据。7、文件功能:可以新建文件,打开文件。8、关闭系统。printfn Please input the new name of the stu
3、dent:“); scanf;printf;printf;scanf;printf;scanf;printf Please input the new mathematics score:“;scanf;prinlfX Please input the new physical score:“);scanf &stui. physics;printfV Please input the new computer score:“); scanf;fp=fopcn;fprintfXfp,飞d”, number;fori=0;ifprintf;fclose;saveO;printf“nn Press
4、 any key to return to the menu”);getchO;void calculate /*计算*/int i, math ave=0, english ave=0,Chinese ave=0,physics ave=0, computer ave=0;clrscrO;printf;printKnametatalavcragcn;fori=0;i(stui. total=stui. math+stui. english+stui. Chinese+stui. physics+stui puter;stui. average=stui. total/5;printf %-1
5、0s%-10d%-10dn”, stui. name, stui. total, stui. average;)fori-0;imath ave=;math ave=; fori=0;icnglish_ave=; english_ave=;fori=0;i chinese_ave=;Chinese ave-; fori=0;iphysics_ave=; phys i cs_avc=;fori=0;icomputer_ave=; computer_ave_;printKAnmath average is:%dn/z, math ave; printKengl i sh average is:%d
6、n, engl ish_ave; printKchinese average is:%dn”, Chinese一ave; printKphysics average is:%dn”, physics_avc; printf; printf“nn Press any key to return to the menu; getchO; ) void searchO/*查询*/ void search nameO; void search_num; void search failO; int i;clrscrO;printKAnXnl. Search student message by nam
7、en”; printf/,2. Search student message by numbern”; printf; printf;printf; switch case 1:search nameO;break; case 2:search num;break; case 3:search_fai1;break; case 4: return mcnuO; break; default :printf; ) void search nameO/*按姓名查询*/ int i;char name10;char mark=l;clrscrO;printf,znn Please input the
8、 students name:“;scanf;fori=0;iifstrcmp=0printf;printRstudent number:%snz/, stui. num;printf;printf; printf; printf; printKstudent computer score:%dn,stuiputer;mark-0;)ifprintf;printf“nn Press any key to return to the menu”); getchO;void search numO/*按学号杳询*/int i;char numL10;chcir meirk=l;clrscrO;pr
9、intfz,Please input the student1 s num:scanf;forifstrcmp=0printf;printKstudent number:%sn”, stui. num;printKstudent math score:%dn”, stui. math;printKstudent english score:%dn,stui. english; printKstudent Chinese score:%dn”, stui. Chinese; printKstudcnt physics scorc:%dn/z, stui. physics; printf;mark
10、=0;break; ifprintf;printf,znn Press any key to return to the menu”); getchO;)void search_fai 1/*查询不及格名单*/ int i;fori-0;i (ifstui. math |stui. english stui. Chinese | stui. physics | stuiputer printf,znn The student who fai 1 is*s, name;) printfnn Press any key to return to the menu”); getchO;)void s
11、ortO/*排序*/ void sort_name;void sort numO;void sort_score; int i;clrscrO;printf“nn 1. Sort by namen”;printf;printf;printf;printf/znn Your choice scanf%d, &i; switch case 1: sortnamcO; break; case 2:sort_num;break;case 3: sort scoreO; break;case 4:return_menu;break;default:printf; void sort nameO /* 按
12、姓名排序*/ int i, j, t;char str10; clrscrO;forj=0;jfori=0; i/*冒泡法*/(ifstrcmp0 ( strcpy stui.name; strcpy; strcpy; strcpy; strcpy; strcpy; t=stui. math;stui. math=slui+】. math;stui+1. math=t; t=stui. english;stui. english-stui+l.english;stui 1. english=t;t=stui. Chinese;stui. Chinese=stui + 1. Chinese;st
13、ui+l. Chinese=t;t=stui. physics;stui. physics=stui + l. physics;stui+1. physics-t;t=stuiputor;stuiputer=stui+lputer; stuilputer=t; )printf“nnname num math englis Chinese physics computernz,; fori=(); iprintf;saveO; printfnn Press any key to return to the menu”); getchO;void sort_num /*按学号排序*/ ( int
14、i,j, t;char str10;clrscrO;forj-0;jnumber;j+ fori=0;i ifstrcmp0 strcpy;strcpy;strcpy; strcpy stui.name); strcpystui. name, stui+l. name); strcpy;t=stui. math;stui. math=stui+l. math;stui+l. malh二t;t=stui. english;stui. english-stui + l. english;stui+l. english-t;t=stui. Chinese;stui. Chinese=stui+1.C
15、hinese;stui+l. Chinese=t;t=stui. physics;stui. physics=stui + l. physics;stui-1. physics-t; t=stuiputer;stuiputer=stui+1puter; stui-lputer=t;) printf“nnnum name math englis Chinese physics computern,z; fori-0;iprintf;saveO;printf“nn Press any key to return to the menu”; getchO;void sort scorcO/*按分数排
16、序*/int i, j, t;char str10;clrscrO;forstui. total=stui. math+stui. english- stui. Chinese+stuLi. physics+stuiput er;forj=0;jfori-0;i(ifstui. totalstrcpy stui. name);strcpystui. name, stui+l. name);strcpy;strcpy;strcpy;strcpy;t=stui. math;stui. math_stui + l. math;stuil. math二t;t=stui. english;stui. e
17、nglish=stui+l. english;stui+l. english=t;t=stui. Chinese;stui. Chinese=stui + 1. Chinese;stui-1. Chinese-t;t=stui. physics;stui. physics=stui + l. physics;stui-l. physics二t;t=stuiputor;stuiputer=stui+lputer;stui+lputer=t;t=stui. total;stui. total=stui+l. total;stui+l. total=t;)printf;fori=0;iprintf;
18、saveO;printfnn Press any key to return to the menu”); getchO; void browseO/*浏览数据*/ int i;clrscrO; /* FILE*fp;*/fp=fopen;printf; fori ;i frcad&stui, sizcof,1,fp;printf;)fclose;printf?,nn Press any key to return to the menu”; getchO; void open file/* 打开文件*/ int i; char fname10j;clrscrO;printf“nntPloas
19、e input the file name which you want to open:scanf/s”, fname;gctchO;iffpl=fopenfname,!二NULL( fscanf; / fclose;printf;printKXnname num math engl is Chinese physics computern,z;/ fpl=fopenfncune,fori=0;i/*注意下面的格式要和之前的一样。要不会乱码*/ fscanf;printf;fclose;)elseprintf;printfwnntPress any key to return to the
20、menu getchO;void ma inO int num;clrscrO;gotoxy;fori-0;iprintf*gotoxy;printf/zWelcome to student achievement management system”); gotoxy;printf“Producer: Wang xuezheng”;gotoxy;printKStudent number: 3109()08789”);gotoxy;printKXlass: Electronic 5 class”); gotoxy;fori=0;i printf; printf“nnntPlcasc press
21、 any key to continue.getchO;while menuO;scanf; switch (case 1:new_file;break;case 2: edi t dataO; break;case 3:calculate;break;case 4:search。;break;case 5:sortO;break;case 6: browseO; break;case 7:open file;break;case 0:exit;)2系统设计2.1总体设计按系统分析的功能要求将系统划分为以下几个主要功能模块:2. 2详细设计1、主函数main利用While循环语句和switch
22、实现各函数的调用,系统根据输入的数字选项来调用相 应的函数。2、菜单函数menuO通过菜单函数显示可选择的菜单,每次操作完后按任意键回到菜单函数。3、新建文件函数new_file通过该函数实现新建文件、输入学生数据功能。4、编辑数据函数edit_data该函数下还有3个函数,通过switch功能去选择其包含3个函数去实现不 同的功能。3个函数分别是添加学生数据函数add_data、删除学生信息函数 del data修改学生信息函数mod dataOo5、计算函数 calculate 通过该函数计算每个学生的平均成绩及总成绩,计算出每科的平均成绩,并显 示出来。6、查询函数search该函数包含
23、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把该
24、函数放在子函数末尾,比如放在排序函数,编辑函数等函数内容的末尾, 这个就可以实现将修改后的数据保存下来。11、清屏函数clrscr (通过该函数可以独立显示每个函数的内容。12、返菜单函数 return menuO这个函数反正子函数里面,当子函数操作完后,通过该函数可按任意键返回 到目录。13、定义一个结构体 struct student ( stuSIZE这样就可以将不同类型的数组组合成一个有机的整体,以便引用,还可以通 过SIZE的大小来控制最多可输入的学生人数。3系统运行菜单界面:输入数据:删除数据:计算数据:按姓名排序后的数据:按姓名排序:打开文件:4总结本次设计达到了设计要求的基本内
25、容,各功能都能正常运行,设计的系统使 用方法容易理解,界面清晰但不够华丽,没有设计到要求以外的其它功能。设计过程中文件操作这一部分把我难住了,由于之前没有系统地去学这一块, 自己只有看书,问同学来了解,搞了很久才完成这一块。还有输入错误检查这一部 分做得不好。通过一个多星期的c语言课程设计,感觉自己收获了不少。首先学会了一些 书本没学到的函数,比如clrscr等。我对各函数的作用有更加进一步的了解, 熟悉了函数之间的调用关系。懂得了冷静地去处理编译时出现的问题。从这里我 也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手, 不能做出一个中看不中用的程序或者软件,写的程序往
26、往是很长的,有时候面对 几百行的程序甚至数千行的程序,自己也会看傻,这就需要我们在设计时要有耐 心,适当地做下注释。这次课程设计对我以后在单片机编程这一块打下了很好的基础,对我以后的 学习有很大的帮助。参考文献C程序设计(第三版谭浩强编著 C程序设计题解与上机指导(第三版谭浩强 编著附录:代码#include,zstdio. h #include #include/* 包含 exitO*/ define SIZE 100 int i, number;FILE *fp, *fpl; struct student char name20; char numL10; int math; int en
27、glish; int Chinese; int physics; int computer; int total; int average; stuSIZE; void saveO/*将数据储存于文件*/FILE *fp; int j; iffp-fopen=NULLprintKCcinnot open filen”;return; forj=0;j iffwrite!= printKfile write errorn,z; fclose;) void return menuO /*返回菜单*/ printKAnXnXtPress any key to return to menu getch
28、O; void menuO/*菜单*/ int i; clrscrO; gotoxy; fori-0;i print* *”; printf; printf;printf;printf/,4. Searchd);printf;printf;printf;printfV0. exitn,,;printf; fori=0;i printf; printf,znn Please select the menu:“); void new_file/* 输入数据*/ int i, j, sum; char fi1e_name10;fori=0;i print* ”; clrscrO; printf“nn
29、 Please input the file name:“); scanf; fp=fopen;/* 向文件写数据*/printf;printf“nn Please input the number of students:;scanf;fori=0;iprintf;scanf;printf;printfwPlease input the mathematics score:“); scanf;printfwPlease input English score:“;scanf;printfX“ Please input the mathematics score:“;scanf:printf;
30、printf;fprintf;fori=0;ifprintf;/*将学生信息输出到文件上*/fclose;/*save;*/ printfnn getchO;)void edit dataO(void add_dcitci;void del dataO;void mod dataO;/*关闭文件*/Press any key to return to the menu;/*编辑数据*/int i;clrscrO;printf;printf,z2. Deletedatan”;printf;printf;printf; scanf;switch case 1: add dataO; break;case 2:del_data;break;case 3:mod dataO;break;case 4:return_menu;break;default:printf;fp=fopcnfnam。,