学生成绩管理系统(C语言)_第1页
学生成绩管理系统(C语言)_第2页
学生成绩管理系统(C语言)_第3页
免费预览已结束,剩余26页可下载查看

下载本文档

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

文档简介

1、C/C+程序设计课程设计报告专 业:电子信息科学与技术班 级: 08 级一班学 号: 2姓 名: 张玉印版本号: 32018-07-20时 间 :目录1 概述 11.1 目的 11.2 计划 22 课程设计过程及结果 22.1 编程环境及工具 22.2 排序与简单分析 22.3 综合设计 32.3.1 功能实现 32.3.2 程序异常处理 62.3.3 特色功能 73 课程设计总结 73.1 课程设计计划执行情况 73.2 我理解的 C+ 83.3 改进设想 8附录关键代码 8原创声明:本课程设计报告及相应的软件程序的全部内容均为本人独立完 成,如有抄袭,愿承担相应后果。声明人:张玉印学号:2

2、1概述1.1目的C/C+独立完成回顾并加深对C/C+程序设计相关知识的理解,能够用 简单数据管理软件的编写。1.2 计划看到这些C/C+的设计题目,首先想到要用 C做因为C+毕竟没有学过,要在这么短的时间内学好 C+,并能运用自如做出这么大的题目有点困难。首先,温习一下C语言课本,重拾一下当时学 C时的好的思想和方法。再者,拿出一下午和晚上的时间做完排序题目。1.2.4 最后,拿出全部精力攻克学生成绩管理软件编程。1.2.5 写实验报告2 课程设计过程及结果2.1编程环境及工具2.1.1 环境变量的应用和设置2 . 1 . 2批处理及命令行编译2.1.3 C/C+项目的组成,软件开发环境的使用

3、,重点掌握软件调试。2.2 排序与简单分析简单分析:题目是 “把一个完全由小写字母组成字符串按照每个字母的出现次数 从低到高重新排序”。首先分析题目要求的是字母,而且是小写字母,不同字母出现 的次数相同的在一起并按字母表顺序排列,出现次数越多越靠后,如 aassdfkjiowea 回 车后变成 defijkowssaaa。程序设计思路:首先对输入的字符串用比较法进行排序,然后从前往后找字母个数 分别为1, 2, 3, 4, 5直到N的字符,输出即可。因为字母是事先排好序的,所以从前往后输出字母的顺序是字母表顺序。2.3综合设计功能实现文件读入fsca nf(文件指针,格式字符串,输入表列>

4、; ;文件的读入是fscanf的应用。首先在项目文件夹中建立一个文本文件,fscanf以“r” <只读方式)打开这个文本文件,并将这个文本文件中的内容以空格键为分隔符读 入内存中。读入程序如下图:FILE Rfi=fopen("A .txt*'RfiFopen;ftC=Fopen("C;For(i=0;i<H;i+)FscanF(RA,studi nun.studi .na(«etstudi .sexvstudi .clas);For(i=fl;i<M;i+)Fscanf (RBpcoui .cnun,ane,Ekcoul.

5、credit);for<i->i<V;i+)f scanffRC ,stus i _nun),stusi .cnun,&stusi .score) ;|ftlose(RA); fclose(RB);Fclose(RC);尸亠» X信息显示信息显示同样是fscanf函数的应 用,首先将文件中的数据读入内存 中,然后用标准输出函数printf输出,学生信息表的信息输出如右图, 编写的程序如下图,成绩表显示时其 中的课程号要换成课程名称输出。畋学生信息文件”学号姓名 性别 班级200801200U02200804200U05200806王立 王五 刘建 睜文 辭文

6、测拴机电 eta "7. 甩十二电子一站伸生信息衰显示函廳<FILE int i: if(fp-Fcpen("ft. tJCf /r" )-NHLL) printFC'Cnnt open this FiletVn");Bllt(D);卜printFCn学生信息文件”n、n 学号 姓名 性别班级、nn"Fp=Fopen(B'fi-txt"F0r(i=B;i<P;l+)FscanF(iFp.1R.Stlidi -nuRl!stUdi .nam.Studivstudi ,clas):printf (5%9s%7s

7、%10sn'stucfi .nunstudEi .name .studfi .sex.studi .clas);fclose(fp>:此功能遇到的问题:用fscanf函数时写入浮点数成绩时,只能写成如下格式:fscan f(p2,"%s%s%f",stusi. nu m,stusi.c num,&stusi.score。而不能写成:fsca nf(p2,"%s%s%.1f",stusi. nu m,um,&stusi.score。否则将显示一团乱码。数据录入fprintf(文件指针,格式字符串,输入列表;fp

8、rintf函数和fscanf函数都是格式化读写函数,对象都是磁盘文件。Fprintf和fscanf功能相反,它是把内存中的数据写到文件型指针fp指定的文件上去。首先用fopen函数以“ w”方式打开文件,如果没有此文件就以该文件名在项目文件夹中新建 一个文件。数据录入的设计思路是:在屏 幕中输入一条记录,通过scanf函数写入结构体 < 即内存)中,再通过 fprintf函数把内存中的数据输出到指 定的文件中。注意输入时要做一下判断,判 断输入的学号是否是学生表中存在 的数据,如是在学生表中不存在则 不往内存中输,屏幕打印“ error num in put! ”,需重新输入。输入的 课

9、程号和输入学号一样需做一下判 断。再者成绩文件打开时要以文本 追加形式打开,也可以用读写文本 形式打开,再用指针定位到文件末尾进行数据录入。输入完成后可以查看输入后的学成成绩表,如 图。数据录入的部分主要程序如下所示:p2=fopen("C.txt","r+">。fseek(p2,0,2>。对文件的追加 for(i=0,c=' '。 c=' '。i+>printf("n输入学生的成绩记录:n学号:"。 for(j=0。 j=0。 >sca nf("%s",st

10、usi. num>。for(k=0 o k<N。 k+>if(strcmp(stusi. nu m,studk. num>=0> j=1 oif(j=1>breakoelseprintf("error num input!"> 。printf("课程号:">。 for(j=0。j=0。> sca nf("%s",stusi.c num>。for(k=0 o k<N。 k+>if(strcmp(stusi.c num ,couk.c num>=0> j=

11、1 oif(j=1>elsebreak。printf("error num input!"> 。printf("成绩:">。scanf("%f",&stusi.score>。fprintf(p2,"%4s%4s %.1f n",stusi.num,um,stusi.score>。 L=L+1 。printf("n*<继续录入按空格键确认>*n">。c=getch(>。 fclose(p2>。成绩查询成绩查询是文件

12、中的数据输入数据区后,进行的一系列逻辑性的查找。通过输入学号进入事先 定义的字符型数组,然后通过在“C.txt ”中查找该学号的学生所修课程的成绩输出。改程序的算法为:Stepl:用scanf函数将文件中的数据导入内存数据区中;Step2:定义字符型数组存储输入的学生 学号;Step3:输入学号在文件3中查找是否有 相同的字符串,若有则执行 step4,若无则执 行 step ;Step4:通过学号在文件1中查找到该生的姓名班级输出;Step5:通过学号找到对应的课程号,在 文件2中找到相对应的课程名称和相应的学 分。课程名称输出,学分要根据文件3中所得的分数输出,如果分数小于60分则输出实得

13、学分为0,如果分数大于 60,则学分按原样输出,执行step7;Step6:输出“该学生无修课程记录请重新输入学号”;Step7:输入一个字符判断该字符是否为空格键,若是的则跳到step3,否则往下执行;Step8:算法结束。对指定的课程的成绩排序功能<1><2> <3> <4> <5> <&> <7)出进入功能t请輪入要查砌学号:Z00S04I*:苜|ra|F0石科Hs.-ns i h - h - 1 -_1X 名名名名肿 程fl 0 0 V A B -b B 97 gg 旧 9此功能的算法为:Stepl

14、:建立一个整型数组和一个字符型数组;Step2:输入课程号存在字符型数组中;Step3:将字符型数组中的字符串和文件 把此结构体的标号记下来存到整形 数组中;Step4:用整形数组的值作为文件3结构体的标号,在文件 3中找相同 的值,若存在相同的值则执行step5,否则执行step ;Step5 :,进行比较为此标号的分3中的课程号进行比较,如果有相同的字符串则<1><2><3><4><5><6><进入功能行:*青输入课程号:C01名軽为;喊大学英语乂吃科目的相芙成鎬为;99.0 2H0804刘建软件一<1&g

15、t;<2><3><4><5>>丄为* <6的齧 能.名成 功*W 入程课相 逬课的的 人号目 科99,091.7SS.078.072.0S&.02008R5 2008(3 200&06 200&05 2008Q4二一二二一二 件子子尹子件 电电电软 建文文文戈建 刘数,比较法进行从大到小排列输出;Step6:根据文件 3中的课程名找到相应的学号,找到学号后在文件1中输出对应的姓名;Step7:根据文件3中的课程号在文件 2中找到相应的课程名输出,执行step9;Step8:输出"*!无此课程的相关记录

16、 * ”;Step9:输入一个字符,判断是不是空格键若是则返回step2;否则输出“ *此功能已退出! * ”,算法结束。对成绩记录的删除设计思路:要想删除文件中的数据,首先以只读方式“r”打开,将这个文件中的数据输入内存中关闭文件型指针,然后以只读方式“w”打开此时文件为空文件),然后将内存中的和要删除的数据不相同的记录再输出到文件,即可完成删除。此功能设计算法:Stepl:将文本中的数据输入内存中;Step2:将该文本删除后重新建立,创建字符型数组。Step3:要是删除学生记录,则输入学号,在文件1中逐个查找当学号和文件1中的记录不相同时输出到文件中;在文件3中查找当文件3中的数据和输入时

17、学号不相同时导出到文件3中;Step4:要是删除课程中的记录,则采用相同的方法在文件2和文件3中查找,不相同时重新导出到相应的文件中;Step5:接收一个字符,判断是不是空格键,若是则返回step2Step6:判断是否打印已经删除后的文件,若是则把相应的文件打印出来,结束;否则不打印, 算法结束。保存功能叱按空格键纟怅续执行删除功能”*是否继续执行其他菜卑功能.按空格犍确认用*系统已退出丹,是否保存操作:否是*文件未保存设计思路:重新建立三个文件 用来存放上次操作后保存的数据, 当执行保存功能时因为原来的文件 已经在操作中更改,故不需任何操 作推出即可;当不执行保存功能 时,因为要恢复上次操作

18、后 及本次 操作前的数据),就可以把新建的 三个文件中的数据重新输出到本次 操作的文件中即可完成不保存。232程序异常处理指针定位问题:如果用fopen打开文件往内存中输入数据后,此时文件型指针已经 指向末尾,若此时再想调用文件中的数据就会出错,必须再关闭文件再打开或者使用 文件型指针定位使文件指针指向文件开头。删除功能问题:删除时当输入的数据较少时该功能能够准确无误的把删除后的数据 输出到文件夹中,并能正确显示;当删除数据较多时如删到五个以上时就会出现问 题,其实输出到文件中的数据没有问题,显示时就会有少的数据。成绩录入功能问题:该功能存在和删除功能同样的问题,当文件中的成绩记录小于20时该

19、功能能够成功录入,并能正确显示,超过 20条记录时,就会出现如下图的对话 框,我知道这是内存分配问题导致的,但始终未能改出来。学生管理.eXe L应用程序错误"000405164"指令引用的*0x00003630*内存松该内存不能为* wr it tgr/' *棗绥止程序”请单击“确定” °要调试程序,诸单击审取消"°确定 | 取消特色功能界面友好:功能菜单选择时,看到大部分学生的程序运行时,遇到需要选择的情况 就要输入功能但后的数字,通过 switch(语句进行转换到相应的功能,感到很乏味就想 到了本程序的选择法,运用了转义字符“r”

20、的回车不换行功能,用 Tab键实现跳格也可以换成其他键的 ASCII )。选择时就只需按一个键 如Tab键)选择相应的功能再 按回车键就行了,无需满键盘找相应的字母按,这种方式实现了操作界面友好。进入菜单时,有几个光标闪几下才能进入功能菜单,这运用了时间延迟函数,老师 您验程序时很生气地说我是故意的,说实在的我是怕您看不到,之前故意把闪动次数 调大的。这个设计对我这样的小程序无疑是毫无用处,我想对以后编的大程序是不是 会有一定的缓冲作用,再此只是表明了我的一个想法。能够完成保存功能:未想到用保存功能之前,添加或删除时总是在操作前备份一 次,操作后在复制进去,这样很是麻烦,想到程序运行结束时能不

21、能自己把原来操作 前的数据再导进已经操作的文件中去。保存函数功能是:删除数据或者添加数据时如 果添加错了或删除错了能够恢复原来的数据即不保存。3课程设计总结此次课程设计不仅让我们回顾了 C语言,也让我们更好的了解 C语言的应用和编 程方法,尤其是最后一道编程题,虽然编的程序不尽是非常完美,但让我学到了很多 东西。猛然发现当初在课堂上学到的还不到C的一个角,C语言的许多功能都未曾涉及到。上课时编的程序最多不过五十行,如今编的程序竟然达到五六百行,这是当时 想都没有想到的。以前看到的那些眼花缭乱的程序我也可以实现,心中莫名升起一种 自豪感。软件各功能之间除基础的之外几乎没有什么联系,这让我明白了各

22、大公司为 什么分模块编程,有的功能很好而有的功能不是很完美,这也许是软件之间的优异性 所在吧。以前觉得文件是很高级的编程方法,如今用起来也能得心应手,对该软件的编程 就用了 fscanf和fprintf两个函数,其余的都是逻辑设计方面的问题。这种设计不仅让我 学到了许多东西,而且让我开阔了视野,这个软件的程序除了一个函数getch(网上搜的之外其余都是自己编的。让我大为获益的一点是C可以调用其他方面的功能或转换成其他功能,比如转换成 DOS功能,以后要对C语言多多学习来更好的掌握它。看 到其他同学编的软件,有密码和计算平均分的功能,3.1课程设计计划执行情况各项计划都进行的挺顺利,只是时间来不

23、及了书没看完就去编程,转换方法编程序时哪里不会就去找课本和资料。3.2 我理解的 C+C+ 是比 C 更高级的语言。主流的 3 种操作系统 Windows,Linux,Unix, 内核都是用 C 语言和汇编写的,上层高 级特性是用 C+ 写的。我们玩的许多游戏如魔兽等都是用C+ 编写的。3.3 改进设想3.3.1 查询功能该功能不能计算平均分,设想能够计算出查询出来的成绩的平均分,并能够实现 把查询出的成绩记录从大到小和从小到大排列之间切换。3.3.2 具有统计和防错功能能够识别出输入的是字符还是数字,以至于在输入学号时给与提示输入字符还是数 字,使界面更加友好。能够统计出各个文件中的记录,比

24、如说分宿舍时需要统计出学生数量就可以调用此 功能。3.3.3 保存功能的该进在软件现有保存功能的基础上在增加保存时可以把操作的文件在存储到未操作的文 件中,这样就使备用的未操作文件组保存,成为下一次操作的源文件,这一设计思路 未能设计的原因是:即使保存文件操作后,因为程序中存在宏定义的值,这个值不能 改变。此次设想定义全局变量,把上次运算的值记在文件中攻下一次调用,这样就可 以实现真正意义上的保存功能了。附录 关键代码排序程序#include<stdio.h>#include<string.h># define N 255int M 。void main(>int

25、 i,j,k,t 。char aN 。printf(" 请输入小于 %d 个小写字母: n",N> 。scanf("%s",a> 。M=strlen(a> 。for(i=0 。 i<M 。 i+>for(j=i。j<M。j+>if(ai>aj>k=ai 。ai=aj 。aj=k 。printf("n"> 。for(t=1 。 t<=M 。 t+>for(i=0 。 i<M 。 i+=k>k=0。for(j=i。j<M。j+>if(aj=ai

26、>k+ 。if(k=t>for(j=1 。 j<=t 。 j+> printf("%c",ai> 。printf("n"> 。学生成绩管理软件程序#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define N 6#define M 6#define Y 12int P=N,Q=M,L=Y 。struct studentchar num20 。char name20 。char

27、sex20 。char clas20 。studN 。struct coursechar cnum20 。char cname20 。int credit 。couM 。struct stuscorechar num20 。char cnum20 。 float score 。stusY 。void Delete(>/ 删除函数int i,t=0,s=0,m=1,c,f=N,g=Y 。char a20 。void xstu(> 。void score(> 。FILE *DA,*DB,*DC 。DA=fopen("A.txt","r"&g

28、t; 。 DB=fopen("B.txt","r"> 。 DC=fopen("C.txt","r"> 。 for(i=0 。 i<P。 i+> fscanf(DA,"%s%s%s%s",studi.num,,studi.sex,studi.clas> 。for(i=0 。 i<Q。 i+> fscanf(DB,"%s%s%d",um,ame,&coui.credit> 。f

29、or(i=0 。 i<L 。 i+> fscanf(DC,"%s%s%f",stusi.num,um,&stusi.score> 。fclose(DA> 。fclose(DB> 。fclose(DC> 。for(c=' '。c=''。> printf("n *< 删除学生记录 >* *< 删除课程记录 >*n"> 。 /对学生记录和课程记 录进行选择删除for(m=9,s=0 。 m=9 。 s+> if(m=9>

30、if(s%2=0> printf("*r">。if(s%2=1>printf("* r">。 printf("n"> 。m=getch(> 。if(m='r'>if(s%2=0>/ 删除学生记录printf("*n">printf(" 请输入要删除的学生学号: "> 。DA=fopen("A.txt","w"> 。 /换成 W 后新建删除后的新文件 / fseek(RA,0,

31、2> 。 /删除后的数放在原有数据后 scanf("%s",a> 。for(i=0 。 i<f 。 i+>if(strcmp(a,studi.num>!=0>fprintf(DA,"%10s%10s%10s%10sn",studi.num,,studi.sex,studi.clas>elseP=P-1。DC=fopen("C.txt","w">。fseek(RC,0,2>。 删除后的数放在原有数据后for(i=0 。 i<g 。 i+&

32、gt;if(strcmp(a,stusi.num>!=0>fprintf(DC,"%10s%10s %.1fn",stusi.num,um,stusi.score>L=L-1 。! 该 学 号 及 相 关 记 录。已经删else printf("nn 除 !n*n">fclose(DA> 。 fclose(DC> 。 xstu(> 。 score(> 。if(s%2=1>/ 删除课程记录printf("n *< 按空格键继续执行删除功能 >*nn">

33、; 。 c=getch(> 。if(c=' '>f=f-1 。 g=g-1。void in(>/ 成绩录入函数FILE *p2,*iA,*iB 。int i,j,k,c,m,t 。void score(> 。p2=fopen("C.txt","r"> 。 iA=fopen("A.txt","r"> 。 iB=fopen("B.txt","r"> 。for(i=0 。 i<N。 i+> fscanf(iA,&

34、quot;%s%s%s%s",studi.num,,studi.sex,studi.clas> 。for(i=0 。 i<M 。 i+> fscanf(iB,"%s%s%d",um,ame,&coui.credit> 。for(i=0 。 i<Y 。 i+> fscanf(p2,"%s%s%f",stusi.num,um,&stusi.score> 。fclose(p2> 。 fclose(iA> 。 fclos

35、e(iB> 。p2=fopen("C.txt","r+"> 。fseek(p2,0,2> 。 /对文件的追加for(i=0,c=' ' 。 c=' '。 i+>printf("n 输入学生的成绩记录: n 学号: "> 。for(j=0 。 j=0 。 >scanf("%s",stusi.num> 。for(k=0 。 k<N 。 k+>if(strcmp(stusi.num,studk.num>=0>j=1 。if(

36、j=1>break。elseprintf("error num input!"> 。printf(" 课程号: "> 。for(j=0 。 j=0 。 >scanf("%s",um> 。for(k=0 。 k<N 。 k+> if(strcmp(um,um>=0> j=1 。if(j=1>break。elseprintf("error num input!"> 。printf(" 成绩: &qu

37、ot;> 。scanf("%f",&stusi.score> 。fprintf(p2,"%4s%4s %.1f n",stusi.num,um,stusi.score> 。L=L+1 。printf("n *< 继续录入按空格键确认 >*n"> 。 c=getch(> 。fclose(p2> 。printf("n *< 添加 %d 条记录成功,是否查看成绩表 >*nn",i> 。printf(”< 是 ><

38、否 >n">。for(m=0,t=9。m>=0。m+>if(t=9>if(m%2=0>printf(" *r"> 。if(m%2=1>printf("*r"> 。t=getch(> 。if(t='r'>if(m%2=0>score(>。break 。if(m%2=1>break 。printf(" *< 此功能已经退出 >*nn"> 。void Research(>/ 查询函数 <注意:设置多次查

39、询 >int i,k,t=0,s=0,j 。char a20,m=' '。FILE *RA,*RB,*RC 。RA=fopen("A.txt","r"> 。 RB=fopen("B.txt","r"> 。 RC=fopen("C.txt","r"> 。for(i=0 。 i<P。 i+>fscanf(RA,"%s%s%s%s",studi.num,,studi.sex,studi.cl

40、as> 。for(i=0 。 i<Q。 i+>fscanf(RB,"%s%s%d",um,ame,&coui.credit> 。for(i=0 。 i<L 。 i+>fscanf(RC,"%s%s%f',stusi.num,um,&stusi.score>。/以.1f 格式输有误for( 。 m=' '。 t=0,s=0>printf("n 请输入要查询的学号: ">。scanf("%s"

41、,a> 。for(i=0,j=0 。 i<L 。 i+>/7 if(strcmp(a,stusi.num>=0>j=1 。if(j=1> /6for(i=0 。 i<P 。 i+> if(strcmp(a,studi.num>=0>*n">break。printf(printf(" 姓名: %sn",> 。for(k=0 。 k<L 。 k+> /5if(strcmp(a,stusk.num>=0>/4printf("* 课程号: %s&q

42、uot;,um> 。 s+。for(i=0 。 i<Q 。 i+>/3if(strcmp(um,um>=0>/2printf(" 课程名称: %s 成 绩: %.1f",ame,stusk.score> 。if(stusk.score>=60.0>printf(" 实 得 学 分: %dn",coui.credit> 。t=t+coui.credit 。elseprintf(" 实得学分: 0n"> 。t=t+0 。

43、/3/4printf(" 共修 %d 科 ",s>。 printf(" 实得总学分为: %dn",t> 。printf(o>*nn"> 。*n">printf("n *< 继续查询?“是”按空格键 /scanf("%d",&m> 。m=getch(> 。/elseprintf(" 该学生无修课程记录请重新输入学号n"> 。fclose(RA> 。fclose(RB> 。fclose(RC> 。printf(

44、"n"> 。void Sort(>/ 分数排序函数int i,k,j,t,s 。 char a4 。 int bY 。 FILE *SA,*SB,*SC 。SA=fopen("A.txt","r"> 。 SB=fopen("B.txt","r"> 。 SC=fopen("C.txt","r"> 。 for(i=0 。 i<N。 i+>fscanf(SA,"%s%s%s%s",studi.num,

45、,studi.sex,studi.clas> 。 for(i=0 。 i<M 。 i+>fscanf(SB,"%s%s%d",um,ame,&coui.credit> 。 for(i=0 。 i<Y 。 i+>fscanf(SC,"%s%s%f",stusi.num,um,&stusi.score> 。 for(s=' ' 。 s=' '。>printf(" 请输入课程号: "

46、> 。 scanf("%s",a> 。for(i=0。i<Q。i+>if(strcmp(a,um>=0>printf(" 此代号的课程名称为: *<%s>*n",ame> 。 for(i=0,j=0 。 i<L 。 i+>if(strcmp(a,um>=0>bj=i 。j+ 。if(j=0>printf("n *<! 无此课程的相关记录 >*nn"> 。elsefor(i=0。i<j。

47、i+> for(k=i 。 k<j 。 k+>if(stusbi.score<stusbk.score> t=bi 。 bi=bk 。 bk=t 。printf(" 此科目的相关成绩为: n"> 。 printf("n*n">for(i=0 。 i<j 。 i+>printf(" %.1f",stusbi.score> 。for(k=0 。 k<N 。 k+>if(strcmp(stusbi.num,studk.num>=0>printf("

48、 printf(" printf("%s",studk.num> 。%s",> 。%sn",studk.clas> 。printf("n*n">printf("n * < 按空格键继续 ,按任意键退出 > *nn"> 。 s=getch(> 。 printf("nvoid score(>/*< 此功能已退出! >*nn"> 。成绩信息表函数FILE *p2,*sB int i,k 。sB=fop

49、en("B.txt","r"> 。 for(i=0 。 i<Q。 i+>fscanf(sB,"%s%s%d",um,ame,&coui.credit> fclose(sB> 。 printf("n*< 学 生 成 绩 >*nnnn"> 。p2=fopen("C.txt","r"> 。 /课程号输出为课程名称for(i=0 。 i<L 。 i+>学号课程名称成绩fscanf(p

50、2,"%s%s%f",stusi.num,um,&stusi.score>printf("%15s",stusi.num> 。for(k=0。k<M。k+>if(strcmp(um,um>=0>printf("%13s",ame> 。printf(" %.1fn",stusi.score> 。 printf("n"> fclose(p2> 。课程信息表显示函数void

51、xcou(>/int i 。FILE *p1 。 p1=fopen("B.txt","r"> 。printf("*< 课 程 信 息 >*nnnn"> 。课程编号课程名称学分for(i=0 。 i<Q。 i+> fscanf(p1,"%s%s%d",um,ame,&coui.credit> printf("%9s%15s%7dn",um,ame,coui.credit> 。pri

52、ntf("n">。fclose(p1> 。void xstu(>/学生信息表显示函数FILE *fp 。 int i 。if(fp=fopen("A.txt","r">>=NULL> printf("Cannt open this file!n"> 。exit(0> 。班级printf("n*< 学 生 信 息 文 件 >*nn 学 号姓 名性 别fp=fopen("A.txt","r"> 。for(

53、i=0 。 i<P。 i+> fscanf(fp,"%s%s%s%s",studi.num,,studi.sex,studi.clas> printf("%7s%9s%7s%10sn",studi.num,,studi.sex,studi.clas> printf("n"> 。 fclose(fp> 。void Menu(>/ 菜单函数int i,c,j 。for(j=' ' o j=''。>printf("

54、;n*n">printf("n">oprintf("功能菜单n"> oprintf("n">oprintf("n">oprintf("a. 显示功能 n"> oprintf("学生信息表 <1>nn">oprintf("课程信息表 <2>nn">oprintf("成绩信息表 <3>nn">oprintf("b.数据录入 <

55、4>nn">oprintf("c.成绩查询 <5>nn">oprintf("d.排序功能 <6>nn">oprintf("f. 删除功能 < 7 >nn"> oprintf("g. 保存功能 < 退出 >nn"> oprintf("n*n">printf("<1> <2> <3> <4> <5> <6> <7&

56、gt; < 退出 > n"> ofor(i=0,c=9 o i>=0 o i+>if(c=9>if(i%8=0>printf("*r"> oif(i%8=1>printf("*r"> oif(i%8=2>printf("*r"> oif(i%8=3>printf("*r"> oif(i%8=4>r"> 。r"> 。r"> 。r"> 。printf(&qu

57、ot; *if(i%8=5>printf(" *if(i%8=6>printf(" * if(i%8=7>printf("c=getch(> 。if(c='r'>/printf("n 成功 n"> 。if(i%8=0>printf("n 进入功能 <1> : n"> xstu(> 。break。if(i%8=1>printf("n 进入功能 <2> : n"> 。 xcou(> 。break。i

58、f(i%8=2>printf("n 进入功能 <3> : n"> score(>。break。if(i%8=3>printf("n 进入功能 <4> : n"> in(> 。break。if(i%8=4>printf("n 进入功能 <5> : n"> Research(>。break。if(i%8=5>printf("n 进入功能 <6> :n"> 。 Sort(> 。break。 if(i%8

59、=6>printf("n 进入功能 <7> :n"> 。 Delete(> 。 break。 if(i%8=7> break。 if(i%8=7>break。printf(" *< 是否继续执行其他菜单功能,按空格键确认 >*n"> 。 j=getch(> 。 printf("nn *< 系统已退出 >*nn"> 。void main(>/ 主函数int i,c,j,k 。 void restore(> 。 void spark(>

60、。printf("n *>nnn"> 。 printf("n *< 学生成绩管理系统 >*nnn"> 。printf("n 制作:电子一班 nn 张玉印n"> 。printf("n*>n">printf("n < 进入 ><退出 >n"> 。for(i=0,c=9。i>=0。i+>if(c=9>if(i%2=0> printf("if(i%2=1> printf("r">。r">。c=getch(> 。 / 不用按回车就能输入的函数/printf("%d",c> 。if(c='r'>if(i%2=0>printf("nn"> 。 /进入后开始调用函数 spark(> 。Menu(> 。printf(&qu

温馨提示

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

评论

0/150

提交评论