学生成绩管理系统课程设计报告书_第1页
学生成绩管理系统课程设计报告书_第2页
学生成绩管理系统课程设计报告书_第3页
免费预览已结束,剩余46页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告书课程名称:学院:班级:学号:姓 名:指导老师:设计时间:学生成绩管理课程设计一、设计题目用C语言编写程序完成以下任务 :(1) 能按学期、按班级完成对学生成绩的录入、修改(2) 能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平时成绩进行查询(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单二、设计要求(1) 贯彻结构化的程序设计思想。(2) 用户界面友好,功能明确,操作方便。(3) 用户界面中的菜单至少应包括统计各班总分及平均分”、平均成绩 排 序”、成绩单显示”和退出”4项。(4) 代码应适当缩进,并给出必要的注释,以增强程序的可读性。三、设

2、计需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为十个模块,每一个模块对应一个函数。在这些函数当中,按学期对学生信息查 询函数、按班级对学生信息查询函数、按平均成绩排序函数、按班级显示学生成绩单函数、统计全部学生总分及平均分函数、按总成绩排序函数、 统计成绩不及格学生信息函数、显示全部学生信息并统计人数函数的实现 严格按照题目的要求。读取文件函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。1显示全部学生信息并统计人数这里要用到文件打开函数和文件读取数据函数,再加入人数的统计语句,以实现将文件内容显示到窗体并统计总人数。2.统计全部学生总分及平均分这一步在第一

3、项功能的基础上稍加改动,添加求学生总分和平均分的函数就可以实现预期的功能。3.按学期对学生信息查询实现的功能是按照学期对学生的成绩和数据进行查询,要求输入正确学期实现该功能4.按班级对学生信息查询实现的功能是按照班级对学生的成绩和数据进行查询,要求输入正确班级实现该功能。5. 按总成绩排序该项为附加功能实现的是总成绩的递减排序以及名次显示,其中总成绩相同者名次相同。6. 按平均成绩排序按照题目的具体要求实现的是平均成绩的递减排序以及名次显示,其中平均成绩相同者名次相同 。7.统计成绩不及格学生信息该项即统计所有学生中各科中至少有一科不及格的学生的所有信息8.按班级显示学生成绩单该项即显示所有学

4、生的基本信息及在总体中成绩排序信息除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序,这使整个程序更加兀善 。每一个学生记录都包含学期、班级、学号、姓名,以及英语、计算机两门成绩,在程序当中将学生记录类型定义为结构体类型,函数每次对学生记录的访问,其数据来源都是file.txt文件,这样做保证学生数据的一致性,每次运行程序都可以采用原来的数据 。四、程序流程图1.程序总体结构图输入值n=1?函数prin tll()直 7=2?/、直、n函数 sort()(V函数query()1直一;一函数n=4?真、n=5?一假函数sort2()真-n=6

5、?假函数excelle nt( )真n=7?假 函数cjdar退出sort1()图1程序总体结构图2.具体功能框图(1)显示全部学生信息并统计学生人数函数以读方式打开E盘student.txt文件成功?真-”假循环变量i=0输出文件 打开失败当文件未结束时读取学生信息到数组元素stui中i+返回关闭文件返回学生人数i图2读取学生数据(2)按平均分排序函数n 二reads(stu)循环变量i=0当i< n-1时J=0当 J< n-1-i 时直一第J个学生平均分 第J+1个学生平均分一一假交换两个学生信息J+J+i+亩-一一一.第J个学生平均分 =第J+1个学生平均分/丁JJ+i+输出

6、学生信息和排名情况图3按平均分排序五、核心技术的实现说明及相应程序段本程序主要由十个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当中,按学期对学生信息查询、按班级对学生信息查询函数、按平均成绩排序函数、统计成绩不及格学生信息函数等是程序中较为核心的部分F面分别进行说明。1. 按学期、班级对学生信息查询函数首先调用reads函数读取文件中的信息,利用for循环按照班级号循环查找,通过strcmp函数比较所查找学期、班级和已知学期、班级字符,利用if语句对所输入的待查找学期、班 级与已知学期、班级字符进行判断,如果所查学期、班级字符不是已知, 则显

7、示无此学期、班级信息,在符合条件的情况下则输出该学期学生所有 信息。具体的程序段如下:/*按学期对学生信息查询*/ void xueqi ()struct stude nt studN;char nu mber20;int i,n;n=reads(stud);n ”, nu mber);prin tf("n请输入待查询的学生学期号按回车键确认sca nf("%s", nu mber);printf(”*所查学生信息如下*n");printf("学期 班级 学号姓名 计算机 英语 总分平均分 n ”);*n");printf(for(i

8、=0;i< n; i+)if(strcmp(number,studi.xq)!=O) continue;if(i>=n)printf("没有找到该学期信息! n");return; elseprin tf("%st%st%st%st%3.1ft%3.1ft%3.1ft%3.1fn",studi.xq,studi.cla,studi. nu m,studi. name,puter,studi.e nglish,puter+studi.e nglish,(puter+studi.e nglis

9、h)/2); /*按班级对学生信息查询*/void query()struct stude nt studN;char nu mber20;int i,n;n=reads(stud);printf("n请输入待查询的学生班级号,按回车键确认:n",number);sca nf("%s", nu mber);printf("*所查学生*printf("班级 学期 学号姓名 计算机英语 总分平均分 n");*n"printf( );for(i=0;i< n;i+)if(strcmp(number,studi.cl

10、a)!=O) continue;if(i>=n) printf("没有找到该班级信息! n"); return; else prin tf("%st%st%st%st%3.1ft%3.1ft%3.1ft%3.1fn",studi.cla,studi.xq,studi. nu m,studi. name,puter,studi.e nglish,studi. computer+studi.e nglish,(puter+studi.e nglish)/2);2. 按平均成绩排序函数该函数的核心内容是求平均成绩并对所

11、有人进行排序 。采用冒泡法对 平均分进行排序,并记录对于总分的排序采用的排序算法是冒泡法排序,其中平均分的求得是在排序的过程中实现的,这部分程序仍然调用了reads函数,整个排序过程在结构体数组stud中实现,由于排序算法涉及到两个数组元素的信息交换,因此还需要定义一个中间变量来协助 。对于 学生排序后名次的确定在结果输出时予以显示 。具体程序段如下:/*按平均成绩排序*/void sort2()struct stude nt studN,temp;int i,j,n;n=reads(stud);for(i=0;i< n-1;i+)for(j=0;j< n-1-i;j+)if(st

12、ud j.english+puter)/2<(studj+1.english+studj+1.co mputer)/2)temp=stud j; stud j=stud j+1; stud j+1=temp;j=1;printf(平均成绩排序结果如下*、nn");printf("名次 学期计算机平均成绩 n");班级 学号 姓名 英语printf();for(i=0;i< n;i+) /输出结果并排名if(studi.e nglish+puter=studi+1.e nglish+studi+1.computer)p

13、rin tf("%dt%st%st%st%st%3.1ft%3.1ft%3.1fn",j,studi.xq,studi.cla,studi. nu m,studi. name,puter,studi.e nglish,(studi. computer+studi.e nglish)/2);elseprin tf("%dt%st%st%st%st%3.1ft%3.1ft%3.1fn",j+,studi.xq,studi.cla,studi. nu m,studi. name,puter,studi.e nglish,(s

14、puter+studi.e nglish)/2);getch();3. 统计成绩不及格学生信息该函数首先读取文件中的内容,通过循环将挑选出至少一科成绩不及格的学生的信息。具体的程序段如下/*统计成绩不及格学生信息*/void bujige()struct stude nt studN;int i,n;n=reads(stud);printf(”*成绩不及格学生信息如下*nn");n");printf(”* n");printf(”学期 班级 学号 姓名 计算机 英语for(i=0;i< n; i+)if(puter<6

15、0)|(studi.e nglish<60)prin tf("%st%st%st%st%3.1ft%3.1fn",studi.xq,studi.cla,studi.nu m,studi. name,puter,studi.e nglish);六、测试情况欢迎光临成绩统计系统舌显示全部学生信息并统计人数 尢统计全部学生总分及平均分 沢按学期对学生信息查询4.按班级对学生信息查询*5.®总成绩排序氛按平均成绩排序7.统计威绩不及格学生信息鉄技班级显示学生成绩单知退出请输入您要选择的换作庫塗1弱MN員何:M貝凰耳耳河凤且沁貝且耳嬴且崖號ps E孑

16、洋"主异r 口下XJCX XJC軽XN买:学期 班级 学号 姓名 计覧机英语79 *腼阳厢80 ”00丽丽75.0SB00B?8.3060006S.00B00BS3.000070.00UM0B75,00600065.90S300 61.00U0M080,906300 72厨迪00 60r30S30 60.00Q00B79.00600050-00000375,0069009291.000S00£2,000000胡.阳讯0012,000000 帆阳凶耐 86,000000SB .B0MUEIM30.900000H6.B0MUyM92,000000HH.00MU0M 73,000

17、000 36.B0lt9(3M 84,300000 31.&QH&Q&B4,0OHHW0 13 二 _ - 二 - -二 _ ;-二 _ _ B _ 二H II _ 二.1 L _ 二.1 L _ 二.1 一 _ 二 H IJ一 一-一:二 一 _1 - - - - - - - - - - - - - - - - - JJ _- J 匚-土 -_ -LN- Lr. i E 冇.i-Ml一 ETri I- r* j e FriillI", hTH-yL 12 13111213 293T3232 工工工工工工工工工工工工工工工工工工扣 育亠_ 口亠B亠_口官亠_

18、口咅亠=口博亠_口企口亠_口岂口亠_ 口岂口亠=口亠_口亠_ 口耳 /. / I- 1. J. / 1/ 丿 J 1. JJ- 1. J- 1. J- 1. J /909s?90ff9s99s990 0100001010 0 0100001 B00aR-0H-aQu -0 iS Ou ov To Ou R- ov0000007846计0823276806283 64 14661B8B389B7 3B3812 3 4 50 0 0 0 0 llllllillllF/72 -勺小口'分总11821-鹏阳玫涛瘵十萌青 ZK塞苇龙士芳朝亠萌立伟小柳草 囊冯郝雲李刘刘卢马孙田王王王隼英78fl0

19、12345t7B9060111111111111111111.7*7".».- r 屮匚 T T叮 L 匚巧-?-.- T"J."rlTrxB T-1-/-.- T.'.-IT-.'.; T".-1: !*请输入您要选择的操作序号,按回车键确认:3生学期号按回车犍确认¥HMKH JCX KKH JCM JCHH JC* JCMKK学期 班级 E*所杳学豈息 文口下 *i*W*HW««H*W*He*HeWH* 学号鼻 iW英语总分平均分0171,085.50136,0佃0128,064.30£

20、;5.332.5095.04?.50172,096.90133.0&6.5013.0B1.S081.H40.5?97hMlb016036003宁 J I 永红龙士明韋外柳 杜冯戛凉王王新华萌青660246? & 011111 ilillilll - : : : : : _ _ _ 二 -rrL T - -» - - r - J-1一 - 一 - - - - 1111M2.M2.生 工工工工工工工工工 4_口 20202_口僅口7 口 乜口乜 口匕口999999999-w- -M iS 一2 ktjM- M- M-请输入您更选择的操作序号,按回车键确认4输入特查询的学生

21、班级号,按回辜犍确认; 土1班1 H 需 J< ft 耳 K H Hit:R斤主 f言 自级 学期学号 姓名弔訂ijQji-k息分 平均分圧圧圧圧圧圧二 id I L 丄 1 11:X 工工口工工工工 W士_口击口亠_口士_口吿口士戸:200?200?2009201 H20102QB8101 tea IBS 10£ in?109120i;e Q 000 00797565537068G2B171.085aL3&.0GS812B,0640&5.S32a157.079B156,0780lte.08Q占欢迎光临召请输入您募选择的操作序号. 十十十卄林十十十M总,下mf#

22、次学期 班级 学号 姓名英语 计算机总成绩10112009200920102009 2驱2010 2008 2弧P2010201020R20082009230920092010L-IlT ci' F- -H. - T-. - T-. L-IlT -I:I” :n. - T-. - T-. - H- - M-vt d- V. -hi-. - T- - - - - - - ” E ” - - - - - - a » - 2122231 2 11231312 工工工工工工工工工工工工工工工工 信信信信信信信信信信信信信信信信21 26830 B 79143459 Jxill IJX

23、lilliillli宁萌阳韋 林永泵朝佳蛊卄S央立苇红传龙卫孙qWH刘田賞李刘马郝堂越0SS000570«75玫涛r:80360240860I16172.0 171-W 171.0 163.0 161.0 160.0 160.0 159.0 1S7.W 156.0 347.0 140,0 136.0 133.M 128.0 W3.0冊029 9 H 00 02 2口 M1 2M2请输入您要选择的揀作序号,按回车镇确认:平均成绩排序结果如下革语 :口 -I,平均成绩a9o?5225A81un-587877 76 776677宁萌2126b30b?14-346951001012 1-01

24、0 01011=Err IrA EliM4>/"?-piz>/? Ti"1rl ITzy.-1-/ 2129311 丄 23.丄 m 丄 23 工口口工Ts工口Ts工口工工口工工工 F信信信信信信倍信信信信信信信倍信信 H i M択学期请输入您要选择的操作序号,按回车键确认7”"卄"""卄"成绩 不 及格学生信 息,如 下学期 班级学号 姓名计算机英语00 0 0青0 5 7 9111 11111036019 9 8 9 00 0 0 0 1 _M -M- -M- M- 9IP金卢王杨英二 j 11 j : -

25、11 _ - - - - - - - -b-&>T- la£x”* - r TJ1J mJ TJTJ 13 3 3 2 工工工工工 亠_IQ亠一曰宫*_£_ J- J. Jr 1.- / 临 光 迎 欢请输入您要选择的操作序号,按回车键确认 B请输入特查询的学生班级号按回车犍确认思工:!班JtKJtKKXKKXXIKMLJCMKKXKXM: 目?-杳电圧三?彳言 歌女口 下:M?M*寰-M Jt 耳 J< K Jt X K JC K X!耳 ML X J( 名次班级 学号妥茗 计算机英语 总分0 5 10518 7 6 8-776爵马孙王殷4央2 8 1

26、2 6 8 90 ® 1 1 1 1 11 i 111 1 1:_ : M ii U : _ L _ : F _ >1 -!J -! - 一 -_Hlh«Iv-HIr TdJ J - a a - - - Taj nJ " - J 2 2 2 2 2 2 2 工工工工工工工 »信信IBftjJg陰 口七、课程设计总结不觉之中C语言课程设计很快结束了,通过这一段时间的设计使我学到了许多,以前对C语言的认识比较肤浅,不过在不断尝试中我知道 能利用C语言解决比较复杂的问题,也对许多函数有了很深的认识。通过我的努力以及遇到不会的问题主动向老师请教和向同学们探

27、讨,我顺利的完成了这次语言课程设计,感到要想对一门课程了解深刻就必须亲 自身入其中的去体验,这样才能发现自己的很多缺点,才能一一的去克服,也才能真正的学到知识,也明白了那句纸上谈来终觉浅,深知此是要躬行”的真正意义。纵然把结论书本背得滚瓜烂熟而不运用与实际,也不过是纸上谈兵罢了,终究在未来需要动手能力和实践人才的社会竞争中被淘汰,所以我们需要实际的操作,需要更多的实践训练,这样才能成为真正的二一世纪合格的大学生!八、源程序代码#i nclude <stdio.h>#i nclude <stdlib.h>#in clude<stri ng.h>#in elud

28、e <coni o.h>#defi ne N 25struct stude ntchar cla10;char xq10;char num20;char n ame10;float computer;float en glish;float sum,aver;studN;void menu();void sort();void prin tll();int reads(struct stude nt stuN);void sort1();void sort2();void xueqi();void query();void bujige();void cjdan();void ma

29、i n()int c;while(1)menu();,按回车键确认:”);能!n");prin tf("n请输入您要选择的操作序号scan f("%d", &c);if(c>8|c<1)printf("-对不起,没有此项功switch(c)case 1:pri ntll();break;case 2:sort();break;case 3:xueqi();break;case 4:query();break;case 5:sort1();break;case 6:sort2();break;case 7:bujige();b

30、reak;case 8:cjda n() ;break;case 9:exit(0); void menu()printf(” *printf(" *printf(”欢迎光临 探n");n");printf(”printf(" 成绩统计系统 n");printf(” 1.显示全部学生信息并统计人数n");printf(”n");printf("n");printf("printf("n");printf("printf("n");printf(&

31、quot;printf(" n");printf("printf("n");printf("printf("n");printf(" 2.统计全部学生总分及平均分n"); 3.按学期对学生信息查询n"); 4.按班级对学生信息查询n ”);5.按总成绩排序n"); 6.按平均成绩排序n"); 7.统计成绩不及格学生信息n");printf(” 8.按班级显示学生成绩单n");printf(”printf(”n");n");9.

32、 退 出n");printf(”printf(" *printf(" *intreads(struct stude nt studN)/读取文件中的内容FILE *fp;int i=0;if(fp=fope n( "e:fileO4.txt",T')=NULL)return 0;elsefor(i=0;!feof(fp);i+)fscan f(fp,"%st%st%st%st%ft%fn",studi.xq,studi.cla,studi. num,studi. name, &puter,

33、&studi.e nglish); fclose(fp);return i;void printll() /*读取D盘文件并打印全部统计总人数*/FILE *fp;int nu mber=0,i ,n=20;if(fp=fope n("E:file04.txt","r")=NULL)printf(”*所有的学生信息*n");printf("学期 班级学号 姓名 计算机英语n");*n");printf(for(i=0;i< n; i+) fscan f(fp,"%st%st%st%st%ft

34、%fn",studi.xq,studi.cla,studi. num,studi. name, &puter, &studi.e nglish);prin tf("%st%st%st%st%ft%fn",studi.xq,studi.cla,studi. nu m,s tudi. name,puter,studi.e nglish);nu mber+;if(feof(fp)break;printf("学生总人数为:%dn",number);fclose(fp);void sort()/*统计全

35、部学生总分及平均分 */struct stude nt studN;int i,n;n=reads(stud);printf("*全部学生信息*n");printf("班级 学号 姓名 计算机英语 总分平均分n");printf("*n");printf("*n");for(i=0;i< n; i+)studi.sum=puter+studi.e nglish;studi.aver=(puter+studi.e nglish)/2;prin tf("%st%st%

36、st%3.1ft%3.1ft%3.1ft%3.1fn",studi.cla,studi.nu m,studi. name,puter,studi.e nglish,studi.sum,studi.aver);getch();void xueqi ()/*按学期对学生信息查询*/ struct stude nt studN;char nu mber20;int i,n;n=reads(stud);n ”, nu mber);prin tf("n请输入待查询的学生学期号按回车键确认sca nf("%s", nu mber);printf(&

37、quot;*所查学生信息如下*n");printf("学期 班级 学号姓名 计算机 英语 总分平均分 n ”);*n");printf(for(i=0;i< n; i+)if(strcmp(number,studi.xq)!=O) continue;if(i>=n)printf("没有找到该学期信息! n");return; elseprin tf("%st%st%st%st%3.1ft%3.1ft%3.1ft%3.1fn",studi.xq,studi.cla,studi. nu m,studi. name,s

38、puter,studi.e nglish,puter+studi.e nglish,(puter+studi.e nglish)/2);void query()/*按班级对学生信息查询*/struct stude nt studN;char nu mber20;int i,n;n=reads(stud);:n”,number);prin tf("n请输入待查询的学生班级号,按回车键确认sca nf("%s", nu mber);所查学生printf(” *n");printf(” 班级学期 学号姓名 计

39、算机英语总分平均分n");printf(*n");for(i=0;i< n;i+)if(strcmp(number,studi.cla)!=O) continue;if(i>=n) printf("没有找到该班级信息! n"); return;elseprin tf("%st%st%st%st%3.1ft%3.1ft%3.1ft%3.1fn",studi.cla, studi.xq,studi. nu m,studi. name,puter,studi.e nglish,studi. computer+s

40、tudi.e nglish,(puter+studi.e nglish)/2);void sort1()/*按总成绩排序*/struct stude nt studN,temp;int i,j,n;n=reads(stud);for(i=0;i< n-1;i+)for(j=0;j< n-1-i;j+)if(studj.e nglish+puter<studj+1.e nglish+studj+1.computer) temp=studj; stud j=studj+1; stud j+1=temp; j=1;printf(* nn"

41、;);printf("名次 学期班级 学号姓名英语总成绩排序结果计算机 总成绩n");printf( n");for(i=0;i< n;i+)/输出结果并排名if(studi.e nglish+puter=studi+1.e nglish+studi+1.compu ter)prin tf("%dt%st%st%st%st%3.1ft%3.1ft%3.1fn",j,studi.xq,studi.cla,studi. nu m,studi. name,puter,studi.e nglish,studi.

42、c omputer+studi.e nglish);elseprin tf("%dt%st%st%st%st%3.1ft%3.1ft%3.1fn",j+,studi.xq,studi.cla,studi. nu m,studi. name,puter,studi.e nglish,puter+studi.e nglish);getch();void sort2()/*按平均成绩排序*/struct stude nt studN,temp;int i,j,n;n=reads(stud);for(i=0;i< n-1;i+)for(j=

43、0;j< n-1-i;j+)if(stud j.english+stud puter)/2<(studj+1.english+studj+1.computer)/2)temp=stud j; stud j=stud j+1; stud j+1=temp;j=1;printf(平均成绩排序结 果如下*、nn");printf("名次 学期算机平均成绩n");班级 学号 姓名 英语 计printf();for(i=0;i< n;i+) / 输出结果并排名if(studi.e nglish+puter=studi+1.e n

44、glish+studi+1.computer) prin tf("%dt%st%st%st%st%3.1ft%3.1ft%3.1fn",j,studi.xq,studi.cla,studi. nu m,studi. name,puter,studi.e nglish,(studi. computer+studi.e nglish)/2);elseprin tf("%dt%st%st%st%st%3.1ft%3.1ft%3.1fn",j+,studi.x q,studi.cla,studi. nu m,studi. name,puter,studi.e nglish,(stu puter+studi.e nglis

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论