数据结构课程设计学生成绩管理系统_第1页
数据结构课程设计学生成绩管理系统_第2页
数据结构课程设计学生成绩管理系统_第3页
数据结构课程设计学生成绩管理系统_第4页
数据结构课程设计学生成绩管理系统_第5页
免费预览已结束,剩余16页可下载查看

下载本文档

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

文档简介

1、辽宁科技大学课程设计报告设计题目:学生成绩管理学院、系:电子与信息工程学院专业班级:计算机 11-2班_II学生姓名:赵月指导教师:龙艳彬 -I F成绩:2013年1 月8日目录一、需求分析 I I3二、概要设计3三、详细设计53.1 系统流程图53.2 界面设计6仅供个人学习参考3.3 各功能模块的设计7四、测试与分析9五、总结15六、附录(源代码)16I1 .需求分析1.1 问题描述本系统实现了学生成绩管理的功能,具有学生成绩的输入、读取、查询、修改、插入、删除、 排序,统计等功能。1. 2基本要求(1)?输入的形式和输入值的范围;首先输入学生个数,按回车键。按照提示选择,将学生信息保存在

2、文本文档中,具体对学生 信息进行插入删除查询操作时,将保存在文本文档中的学生信息提取出来,保存在自己定义的数据结构中,然后再对该数据结构进行操作,所有操作完成,或者在相应的命令后,再将学生信息保存到文本文档中。输入数据类型主要是 char、int、float等数据类型,输入内容包括:学期、学号、 姓名、高等数学成绩,数据机构成绩,大学英语成绩总分,平均分等数据。(2)?输出的形式;学期、学号、姓名、高等数学成绩,数据结构成绩,大学英语成绩,总分,平均分等数据。(3)?程序所能达到的功能;1 .数据输入功能,输入的数据能最终保存在文件中;2 .数据删除功能,能最终从文件中删除;3 .排序功能,根

3、据自己设计的数据结构,设计排序算法4 .多种查询(如按学号查询、按姓名查询、按成绩查询等)及输出功能;6 .学生信息的修改(比如修改学生姓名,修改学生某门课程的成绩)7 .其它功能(如各种统计,统计每个学生所有课程的平均分,统计某门课程所有学生的平均分等等) 2、概要设计1 .数据结构:数组(顺序存储结构)2 .程序模块:(1)先编入系统所需的库函数,使程序可运行#include<iostream.h>#include<stdlib.h>#include<iomanip.h> /主要是对cin,cout 之类的一些操纵运算,是I/O流控制头文件。#inclu

4、de<conio.h> /文件和标准控制台的输入输出#include<stdio.h>(2)主界面的设计在主界面中包括“输入学生信息并保存到文件读取文件并输出学生信息按学号及学期 查询按姓名及学期查询按学号及学期修改信息插入信息按学号及学期删除信息按数据 结构降序(冒泡)排序按总分降序(选择)排序统计各科成绩的总分和平均分 11退出”等全部的 功能。每个函数体如下:仅供个人学习参考voidinput(Student*r);/ 输入voidoutput(Student*r);/ 输出voidsearchnum(Student*r);/按学号及学期查找voidsearchn

5、ame(Student*r);/按姓名及学期查找 break;voidchange(Student*r);/ Student*insert(Student*r);/ voidshanchu(Student*r);/ voidmaopao(Student*r);/ voidxuanze(Student*r);/ voidtongji(Student*r);/(3) Main()函数的设计按学号及学期修改信息插入信息按学号及学期删除信息按数据结构降序(冒泡)排序 按总分降序(选择)排序 统计各科总分和平均分信息在main()函数中主要运用do-while循环语句和switch()-case 选择判

6、断语句来调用相关 功能模块。系统的运行是在一个循环里进行的,只有在主界面并选择“退出”时,才会跳出循环, 并退出程序。voidmain()cout<<"输入学生的个数:"; cin>>num;/全局变量 Student*p=(Student*)newStudentnum;intm;do/定义指针数组,存放学生个数cout<<endl; cout<<endl; cout<<"t*-cout<<"t*<1> cout<<"t*<3> cout

7、<<"t*<5> cout<<"t*<7> cout<<"t*<9>*n"<<endl;输入学生信息并保存到文件<2>读取文件并输出学生信息*"<<endl;按学号及学期查询<4>«姓名及学期查询*"<<endl;按学号及学期修改信息<6>雨入信息*"<<endl;按学号及学期删除信息<8>®数据结构降序(冒泡)排序*"vvend

8、l;按总分降序(选择)排序<10>统计各科成绩的总分和平均分*"<<endl;cout<<"t*<11> 退出*"<<endl;cout<<"t*<endl;cout<<"请选择:"cin>>m;switch(m)easel:input(p);break;case2:output(p);break;case3:searchnum(p);/输入*n"<case4:searchname(p);break;case5:cha

9、nge(p);break;case6:p=insert(p);break;case7:shanchu(p); break;case8:maopao(p);break;case9:xuanze(p);break;case10:tongji(p);break;casell:/ 退出 break;while(m!=11);3、详细设计1、系统流程图仅供个人学习参考输入学生成2、界面设计在此界面用户可以选择要操作的选项,回车之后即可进入相关的页面进行操作(例如:选择 1,即 可进入输入学生信息页面)3、各功能模块的设计主函数模块:用函数voidmain()来实现主要是来显示主菜单,使用户选择操作。首先

10、定义一个指针数组(全局使用) Student*p=(Student*)newStudentnum; 在此处num是指学生个数,并不是学号,在这里应用了 do-while和switch-case语句来进行选择。最后若选择“ 11”则是保存记录并退出循环。输入学生记录模块:用函数 voidinput(Student*r); 来实现主要功能用来对学生的成绩进行输入。首先会有个提示“输入学生的个数”,之后跳出主菜单,选 择"1”,进入输入模块输入所需学生个数的学生信息,比如学期,学号,姓名,成绩等。输完之后 会自动跳出主菜单。期间会有一些提示语,按照提示操作。根据 if和for语句来判定是否

11、有重复 学号输入,在本操作中,允许有重复学生姓名出现。t=1表示找到了与之重复的学号,t=0表示未出现重复学号。在此期间会根据语句算出总分和平均分,并默认按学号排序保存到文件中去。之后 返回主菜单。输出学生记录模块:用函数 voidoutput(Student*r); 来实现主要功能是用来输出学生的信息。在系统已经录入了学生资料的前提下,用该功能可以显示学生的 信息资料。同时也会自动跳出主菜单进行后续操作。其中 stew()指的是两字节之间的间隔,在括 号中填入数字就会有相应的间隔。按学号及学期来查找学生记录模块:用函数 voidsearchnum(Student*r);来实现主要功能时用来查

12、找学生记录。首先会有提示输入学号及学期,再用 for循环语句和if判断语句 来进行查找,if(rm.num=n&&rm.term=k) 若找到则显示学生记录并跳出循环; 仅供个人学习参考if(rm.num!=n&&rm.term!=k)若没有则提示“该学号不存在,或没有这个学期的成绩!”。按姓名及学期来查找学生记录模块:用函数 voidsearchname(Student*r)来实现主要功能也是用来查找学生记录的。首先会有提示输入姓名及学期,再用 for循环语句和if判断 语句来进行查找,if(0=n0)&&(rm.term=k)若

13、找到则显示学生记录并跳出循环;if(0!=n0&&rm.term!=k)若没有则提示"该姓名不存在,或没有这个学期的成绩!"按学号及学期修改信息:用函数 voidchange(Student*r)来实现主要功能是用来修改学生记录。首先也要有个判断语句,判断学生是否存在,这个是通过学号及学 期来判断的,这里会有提示输入学号及学期,之后是for和if语句,if(rm.num=n&&rm.term=k) 若存在则先输出修改之前的信息,查看是否正确。若正确,则修改此学生记录,这里有个while循环语句,和switch-case选择语句,

14、用来选择修改哪科成绩,和是否进行再修改记录(通过选择 Y或y来实现)。最后将修改过后的记录保存到文件中去,并输出提示"文件已修改并写入"。插入学生资料模块:用函数 Student*insert(Student*r); 实现主要功能是用来添加学生资料,成绩。若显示没有此学生的信息,就可以使用本模块来进行添加。在此模块代码中定义了另一个指针数组:Student*y=(Student*)newStudentnum+1; 用来存放新添 加的学生记录。再利用for循环进行输入新学生记录,for(m=0;m<num;m+)最后会有一个提示语句 cout<<”是否继续输

15、入?(继续,输入 y,否则输入其他)“<<endl;若输入y则继续输入,否则将 返回主菜单。按学号及学期删除学生记录模块用函数 voidshanchu(Student*r)来实现主要功能是用来删除学生记录。首先有个读文件的操作,之后会有判断语句,根据所输入的学号及 学期,来显示删除前的信息记录,添加for循环语句,循环把后一位的信息提前一位,整体数量减 一,来进行全局变量的修改,之后再把修改过后的信息记录保存到文件中去。按数据结构成绩(冒泡)降序排序模块用函数 voidmaopao(Student*r)来实现主要功能时是用来对学生的记录来按单科成绩(这里以数据结构成绩为例)进行排序

16、。这样方便对 某科成绩有个大致的了解。首先会有一个读文件操作,为排序做基础。本排序使用冒泡排序。它有两个优点:一是很容易写出代码;二是具有稳定性,这里的稳定性是指原序列中相同两元素的相对 顺序仍然保持到排序后的序列。冒泡排序时进过n-1趟子排序完成的,第i趟子排序从第1个数至 第n+1个数,若第i个数比后一个数大(则升序,小则降序。本程序一律采用降序)则交换两数。排序之后,将排序之后的结果写入文件,再打开文件的时候,里面显示的就是按单科成绩排序后的 结果。按总分(选择)降序排序:用函数 voidxuanze(Student*r)来实现主要功能时是用来对学生的记录来按总分成绩进行排序。这样方便对

17、学生总体有个大致的了解。首先会有一个读文件操作,为排序做基础。本排序使用选择排序。其基本思想是:n个记录的文件的直接选择排序可进过n-1趟直接选择排序得到有序结果:初始状态,无序区为 R1.n,有序区 为空。第一趟排序在无序区R1.n中选出关键字最小的记录 Rk,将它与无序区的第一个记录 R1交换,使R1.n和R2.n分别变为记录个数增加1个的新有序区记录和记录数减少1个的 新无序区。. 第i趟排序第i趟排序开始时,当前有序区和无序区分别为R1.i-1和R(1<i <n-1) 0该趟排序从当前无序区中选出关键字最小的记录Rk,将它与无序区的第一个记录与R交换,使R1.i和R分别变成

18、为记录个数增加1个的新有序区和记录个数减少1个的新无序区。 这样,n个记录的文件的直接选择排序可经过 n-1趟直接选择排序得到有序结果。统计各科总分及平均分模块:用函数 voidtongji(Student*r) 来实现主要功能是计算总分和各科平均分,计算完之后将总分保存到文件中。4、测试与分析进入主界面选择1渝入学生信息输入结束后的界面:Student.txt:23 赵月 89.092.088.03269.089.712 李丽 92.085.088.03265.088.331 王虎 87.079.045.03211.070.3选择2,输出了学生信息:选择3,按学号及学期查询学生信息:选择4,

19、按姓名及学期查询学生信息:选择5,按学号及学期修改学生信息: Student.txt:23 赵月 89.092.088.03269.089.712 李丽 92.085.088.03265.088.331 王虎 87.079.085.03211.070.3选择6,插入学生信息:Student.txt:23 赵月 89.092.088.03269.089.712 李丽 92.085.088.03265.088.331 王虎 87.079.085.03211.070.317 王万 78.079.086.03243.081.0选择7,按学号及学期删除学生信息:Student.txt:23 赵月 89.

20、088.088.03269.089.712 李丽 92.088.088.03265.088.317 王万 78.086.086.03243.081.0选择8,按数据结构降序 冒泡排序:Student.txt:23 赵月 89.088.088.03269.089.712 李丽 92.088.088.03265.088.317 王万 78.086.086.03243.081.0选择9,按总分降序 选择 排序:Student.txt:23 赵月 89.088.088.03269.089.712 李丽 92.088.088.03265.088.317 王万 78.086.086.03243.081.选

21、择10,统计各科成绩的总分和平均分:选择11,退出:5、总结课程设计终于结束了感觉有很多的收获,通过课程设计我又一次巩固了所学的知识,对学习到的理论知识进行了巩固,真正的理解及体会了。平时有很多知识都是似懂非懂,通过平时上机操作,自己也了解了一些,但在这次的课设上,之前的困惑也通过这次的课设解决了一些,虽然还是不能够全面的理解,但是有进步就很有成就感。在课程设计中遇到不少困难,通过查阅资料,询问同学, 仅供个人学习参考/主要是对cin,cout之类的一些操纵运算,是I/O流控制头文件。/文件和标准控制台的输入输出/结构体/学期/学号/姓名/成绩1/成绩2/成绩3/总分/平均分I i II J1

22、输入输出voidchange(Student*r);/ Student*insert(Student*r);/ voidshanchu(Student*r);/ voidmaopao(Student*r);/ voidxuanze(Student*r);/ voidtongji(Student*r);/按学号及学期修改信息插入信息按学号及学期删除信息按数据结构降序(冒泡)排序 按总分降序(选择)排序 统计各科总分和平均分信息在应用课本的前提下,拓展课外知识,完成了此次课程设计,虽然还有许多不足之处,但是从中我学到了许多东西。我懂得了我们不能拘泥于所学知识,应对其灵活运用。通过此次课程的设计使我

23、认识到对知识的掌握不全面,而且感觉我们在学习专业知识的同时 还需要再加强其他方面知识的学习,因为编程有时候涉及到其他方面的知识,只有了解了其他方面 的知识才能收集资料,然后编程。在编程的过程中,又重新复习了课本,从中学到了许多以前未学到的知识,感觉非常有成就感,特别当自己把程序一点点完善时,让我对自己更加有信心,让我对数据结构这门课程也更感兴趣了,以前我一直感觉枯燥难学的数据结构,在编程的过程中我也愿意去认真研究学习了。这次数据结构课程设计中,多亏了同学的耐心帮助。如果没有同学的指导改错,我会花更多的时间去找错误。在以后的学习过程中,我一定会认真负责地对待课本中的每一个知识点,进一步充实自己,

24、提高自己。争取在不断的练习中提高自己的层次。也希望可以在以后的专业课当中多增加一些实践的内容,只有多动手,我们才能不断提高。6、附录:源程序清单#include<iostream.h>#include<stdlib.h>#include<iomanip.h>#include<conio.h>#include<stdio.h>/数组、结构体 structStudent intterm;intnum;charname12;floatmarkl;floatmark2;floatmark3;floatsum;floataverage;intn

25、um=0;/声明voidinput(Student*r);/voidoutput(Student*r);/voidsearchnum(Student*r);/按学号及学期查找voidsearchname(Student*r);/ 按姓名及学期查找voidmain()cout<<"输入学生的个数cin>>num;/ 全局变量/定义指针数组,存放学生个数Student*p=(Student*)newStudentnum;intm;docout<<endl;cout<<endl;cout<<"t*>菜单栏 <

26、*n"<<endl;cout<<"t*<1>输入学生信息并保存到文件<2>读取文件并输出学生信息*"<<endl;cout<<"t*<3> 按学号及学期查询<4>按姓名及学期查询*"<<endl;cout<<"t*<5>按学号及学期修改信息<6>插入信息*"<<endl;cout<<"t*<7>按学号及学期删除信息<8>按数据

27、结构降序(冒泡)排序*"<<endl;cout<<"t*<9> 按总分降序(选择)排序<10>统计各科成绩的总分和平均分*"<<endl;cout<<"t*<11> 退出 *"<<endl;cout<<"t*n"<<endl;cout<<"请选择:";cin>>m;switch(m) M I|'I i-r - icasel:input(p);/ 输入bre

28、ak;case2:output(p); .Ibreak;Lcase3:searchnum(p); / J ,":*' ,break;case4:searchname(p);break;case5:change(p);break;case6:p=insert(p);break;case7:shanchu(p);break;case8:maopao(p);break;case9:xuanze(p);break;case10:tongji(p);仅供个人学习参考break;casell:/ 退出 break;while(m!=11);/输入信息voidinput(Student*r

29、)FILE*fp;intn=0;inti;intt=0;/t为标志位,1为找到,0为未找到cout<<endl<<">请输入学生信息 <"<<endl;for(i=0;i<num;i+)cout<<"请输入学期:"cin>>ri.term;cout<<"请输入第"<<i+1<<"个人的学号:";cin>>ri.num;if(i>=1)for(n=0;n<i;n+)Iif(rn.n

30、um=ri.num)cout<<"该学号已存在! ! "<<endl;t=1;if(t=1)/表示有重复i-;t=0;continue;cout<<"请输入姓名:"cin>>;cout<<"请输入高等数学成绩:";cin>>ri.mark1;cout<<"请输入数据结构成绩:";cin>>ri.mark2;cout<<"请输入大学英语成绩:";cin>>ri.ma

31、rk3;ri.sum=ri.mark1+ri.mark2+ri.mark3;ri.average=(ri.mark1+ri.mark2+巾.mark3)/3;fp=fopen("student.txt","w+");if(!fp)cout<<"文件不能打开"<<endl;exit(0);for(n=0;n<i;n+)fprintf(fp,"%d%s%.1f%.1f%.1f%d%.1f%.1f",rn.num,,rn.mark1,rn.mark2,rn.mark3,rn.t

32、erm,rn.s um,rn.average);fprintf(fp,"n"); fclose(fp);cout<<"文件已经写入"<<endl;8jg/jI1| ,Z ! Z;一| I - -I -/输出信息voidoutput(Student*r) intm; I system("cls");/ 清屏 L if(num>0) FILE*fp;if(fp=fopen("student.txt","r")=NULL)/r只读 cout<<"文件

33、不能打开"<<endl; exit(0);for(intn=0;n<num;n+) fscanf(fp,"%d%s%f%f%f%d%f%f",&rn.num,,&rn.mark1,&rn.mark2,&rn.mark3,&rn.term,&rn.sum,&rn.average);fclose(fp);/ 关闭文件cout<<"文件已经读入"<<endl;cout<<">学生信息如下 <"&l

34、t;<endl;设置输cout<<"学号"<<setw(6)<<"姓名"<<setw(10)<<"高等数学"<<setw(10)<<" 数据结构"<<setw(10)/setw(6) 出宽度<<"大学英语"<<setw(6)<<"学期"<<setw(6)<<"总分"<<setw(8)&

35、lt;<" 平均分"<<endl;cout<<""<<endl;for(m=0;m<num;m+)cout<<rm.num<<setw(6)<<<<setw(7)<<rm.mark1<<setw(10)<<rm.mark2<<setw(10)<<rm.mark3<<setw(8)<<rm.term<<setw(6)<<rm.sum<&

36、lt;setw(6)<<rm.average<<endl;cout<<"00"<<endl;elsecout<<"未输入任何信息! ! "<<endl;/按学号及学期查找voidsearchnum(Student*r)intn,k;system("cls");/ 清屏if(num>0)cout<<"请输入要查找学生的学号:";cin>>n;cout<<"请输入学期号:"cin>

37、>k;for(intm=0;m<num;m+)if(rm.num=n&&rm.term=k)/如果找到了输出并跳出循环icout<<endl;cout<<">要查找的信息如下 <"<<endl;cout<<"学号"<<setw(6)<<"姓名"<<setw(10)<<"高等数学"<<setw(10)<<"数据结构"<<setw

38、(10)<<"大学英语"<<setw(6)<<"学期"<<setw(6)<<"总分"<<setw(8)<<"平均分"<<endl;cout<<rm.num<<setw(6)<<<<setw(7)<<rm.mark1<<setw(10)<<rm.mark2<<setw(10)<<rm.mark3<

39、<setw(8)<<rm.term<<setw(6)<<rm.sum<<setw(8)<<rm.average<<endl; break;' if(rm.num!=n&&rm.term!=k)/ 若没找到提示不存在cout<<"该学号不存在,或没有这个学期的成绩!"<<endl; elsecout<<"未输入任何信息! ! "<<endl;/按姓名及学期查找 voidsearchname(Student*r

40、) charn12;intk;system("cls");/ 清屏if(num>0)/如果没输入就查找提示(cout<<"请输入要查找学生的姓名:"cin>>n;cout<<"请输入学期号:"cin>>k;for(intm=0;m<num;m+)(if(0=n0)&&(rm.term=k)如果找到了 输出并跳出循环( cout<<endl;cout<<">要查找的信息如下 <"<<

41、;endl;cout<<"学号"<<setw(6)<<"姓名"<<setw(10)<<"高等数学"<<setw(10)<<"数据结构"<<setw(10)<<"大学英语"<<setw(6)<<" 学期"<<setw(6)<<"总分"<<setw(8)<<"平均分&quo

42、t;<<endl;cout<<rm.num<<setw(6)<<<<setw(7)<<rm.mark1<<setw(10)<<rm.mark2 I -. . , ' <<setw(10)<<rm.mark3<<setw(8)<<rm.term<<setw(6)<<rm.sum<<setw(8)<<rm.average<<endl;break;if(0!=n0

43、&&rm.term!=k)/ 若没找到提示不存在cout<<"该姓名不存在,或没有这个学期的成绩!"<<endl;elsecout<<"未输入任何信息! ! "<<endl;/按学号及学期修改信息voidchange(Student*r)(FILE*fp;intn=0;charchiose='Y'if(num>0)(intn,k;intt=0;system("cls");/ 清屏cout<<"输入要修改成绩的学生学号:"

44、;;cin>>n;cout<<"所需修改的学期:"cin>>k;for(intm=0;m<num;m+)(if(rm.num=n&&rm.term=k)intj;cout<<endl;cout<<">修改前的彳'言息如下 <"<<endl;cout<<"学号"<<setw(6)<<"姓名"<<setw(10)<<"高等数学"

45、<<setw(10)<<"数据结构"<<setw(10)<<"大学英语"<<setw(6)<<"学期"<<setw(6)<<"总分"<<setw(8)<<"平均分"<<endl;cout<<rm.num<<setw(6)<<<<setw(7)<<rm.mark1<<setw(10)

46、<<rm.mark2<<setw(10)<<rm.mark3<<setw(8)<<rm.term<<setw(6) <<rm.sum<<setw(8)<<rm.average<<endl;cout<<endl;while(chiose='Y'|chiose='y')cout<<"ttt>可以修改的项目如下 <n"<<endl;cout<<"ttt1.修改学

47、生的高等数学成绩记录n"<<endl;cout<<"ttt2.修改学生的数据结构成绩记录n"<<endl;cout<<"ttt3.修改学生的大学英语成绩记录n"<<endl;cout<<"请选择:"j I /I .z / J /I 1,cin>>j;switch(j) (case1:cout<<"输入新的高等数学成绩cin>>rm.mark1;Ibreak;case2:cout<<"输入

48、新的数据结构成绩cin>>rm.mark2;break;case3:cout<<"输入新的大学英语成绩cin>>rm.mark3;break;仅供个人学习参考t=1;cout<<"是否要继续修改此学生的其他成绩记录?fflush(stdin);(Y/N)"/清空输入缓冲区,通常是为了确保不影响后面的数据读取cin>>chiose;elsecout<<"未输入任何信息! ! "<<endl;if(fp=fopen("student.txt",&

49、quot;w")=NULL) (cout<<"文件不能打开"<<endl; exit(0); for(n=0;n<num;n+) fprintf(fp,"%d%s%.1f%.1f%.1f%d%.1f%.1f",rn.num,,rn.mark1,rn.mark2,rn.mark3,rn.term,rn.s um,rn.average);fprintf(fp,"n"); fclose(fp); cout<<"文件已修改并写入"<<endl;

50、/插入 Student*insert(Student*r) FILE*fp; |z''-"n"i'intm; charn; doif(fp=fopen("student.txt","r")=NULL) I cout<<"文件不能打开"<<endl; exit(0); for(into=0;o<num;o+) fscanf(fp,"%d%s%f%f%f%d%f%f",&ro.num,,&r回.mark1,&

51、ro.mark2,&ro.mark3,&ro.term,&ro.sum,&r o.average); Student*y=(Student*)newStudentnum+1;/定义另一个数组,用于存放新添加的记录for(m=0;m<num;m+) ym=rm; r=y; cout<<"请输入学期:" cin>>rnum.term; cout<<"请输入学号:" cin>>rnum.num; cout<<"请输入姓名:" cin>&g

52、t;; cout<<"请输入高等数学成绩:"; cin>>rnum.mark1; cout<<"请输入数据结构成绩:"; 仅供个人学习参考cin>>rnum.mark2;cout<<"请输入大学英语成绩:";cin>>rnum.mark3;rnum.sum=rnum.mark1+rnum.mark2+rnum.mark3;/ 计算总分rnum.average=(rnum.mark1+rnum.mark2+rnum.mark3)/3;num+;co

53、ut<<"是否继续输入?(继续,输入 y,否则输入其他)"<<endl;cin>>n;while(n='y');if(fp=fopen("student.txt","w+")=NULL) cout<<"文件不能打开"<<endl;exit(0);for(n=0;n<num;n+)I / yJ. 1'fprintf(fp,"%d%s%.1f%.1f%.1f%d%.1f%.1f",rn.num,,

54、rn.mark1,rn.mark2,rn.mark3,rn.term,rn.s um,rn.average);fprintf(fp,"n");fclose(fp);.Icout<<"文件已经写入"<<endl;I returnr;I'L _1 .X f/按学号及学期删除信息voidshanchu(Student*r)FILE*fp;if(num>0)if(fp=fopen("student.txt","r")=NULL) cout<<"文件不能打开&quo

55、t;<<endl;exit(0);for(into=0;o<num;o+) fscanf(fp,"%d%s%f%f%f%d%f%f",&r回.num,,&r回.mark1,&ro.mark2,&ro.mark3,&ro.term,&ro.sum,&r o.average);intn,k,t=0;cout<<"请输入要删除学生的学号:";cin>>n;cout<<"请输入要删除成绩的学期:";仅供个人学习参考cin

56、>>k;for(intm=0;m<num;m+)if(rm.num=n&&rm.term=k)for(intk=m;k<num;k+)rk=rk+1;num-;t=1;if(fp=fopen("student.txt","w+")=NULL) cout<<"对不起,文件不能打开! exit(0);for(n=0;n<num;n+)/循环把后一位的信息提前一位/整体数量减一/标志变量1为找到0为未找到<<endl;fprintf(fp,"%d%s%.1f%.1f%.1

57、f%d%.1f%.1f",rn.num,,rn.mark1,rn.mark3,rn.mark3,rn.term,rn.s um,rn.average);fprintf(fp,"n"); I fclose(fp);cout<<"文件已经写入"<<endl;if(t=0) cout<<"对不起,该学号不存在!"<<endl;elsecout<<"未输入任彳信息! "<<endl;/按数据结构成绩冒泡降序排序I voidmao

58、pao(Student*r)FILE*fp;if(num>0) if(fp=fopen("student.txt","r")=NULL)cout<<"对不起,文件不能打开!"<<endl;exit(0);for(intn=0;n<num;n+)fscanf(fp,"%d%s%f%f%f%d%f%f",&rn.num,,&rn.mark1,&rn.mark2,&rn.mark3,&rn.term,&rn.sum,&

59、;rn.average);/算法for(intk=0;k<num-1;k+)for(intm=0;m<num-k;m+)Studentmax;if(rm.mark2<rm+1.mark2)max=rm+1;rm+1=rm;rm=max;cout<<"排序完毕"<<endl;if(fp=fopen("student.txt","w")=NULL)| i 一| i 1-r ' - -_cout<<"对不起,文件不能打开! "<<endl;% /

60、I I / J 占 / *' jexit(0);for(n=0;n<num;n+) .I I I . 1 I .fprintf(fp,"%d%s%.1f%.1f%.1f%d%.1f%.1f",rn.num,,rn.mark1,rn.mark2,rn.mark3,rn.term,rn.s um,rn.average);fprintf(fp,"n");fclose(fp);cout<<"文件已经写入"<<endl;elsecout<<"对不起,未输入任何信息!"<<endl;/按总分选择降序排序voidxuanze(Student*r)FILE*fp;if(num>0)if(fp=fopen("student.txt","r")=

温馨提示

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

评论

0/150

提交评论