ImageVerifierCode 换一换
格式:DOCX , 页数:40 ,大小:404.65KB ,
资源ID:1606094      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1606094.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(学生成绩管理系统38.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

学生成绩管理系统38.docx

1、学生成绩管理系统38软件综合课程设计 学生成绩管理系统稀疏矩阵应用 二一四 年 六 月学生成绩管理系统一、问题述现有学生成绩信息文件1(1.txt),容如下姓名 学号 语文 数学 英语 明明 01 67 78 82成友 02 78 91 88辉灿 03 68 82 56露 04 56 45 77东明 05 67 38 47. . . 学生成绩信息文件2(2.txt),容如下:姓名学号 语文 数学 英语 果 31 57 68 82华明 32 88 90 68明东 33 48 42 56 明国 34 50 45 87道亮 35 47 58 77. . . . 试编写一管理系统,要求如下:1)实现对

2、两个文件数据进行合并,生成新文件3.txt。2)抽取出三科成绩中有补考的学生并保存在一个新文件4.txt。3)合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序法实现)。4)输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找法实现)。5)要求使用结构体,链或数组等实现上述要求。6)采用多种法且算确者,可适当加分。二、需求分析本系统要现具体的五项功能,根据提供的这五项功能,运行时系统提供了相应的功能菜单,选择不同的选项来实现相应的功能。1采用了读文件和写文件的式,边读边写,合并两个文件成为一个文件。2.采用结构体数组存入从文件中读入的数据,再通过对于数据中的相关成绩

3、判断该学生是否需要补考,如果需要补考则将其信息写入另外一个文件。3.采用快速排序、选择排序、冒泡排序的法按总分对学生数据进行排序。4.采用了二种查找的法找到学生信息并输出。5.通过调用函数exit(0)退出程序。三、概要设计1、实现对文件1.txt和文件2.txt数据进行合并,生成新文件3.txt。调用函数Unitedfile()来实现,函数以读的式打开1.txt文件,以写的式打开3.txt文件,从1.txt读入一个数据并写入3.txt文件,直到遇到1.txt文件结束。关闭1.txt文件,再以读的式打开2.txt文件,用上述式直到遇到2.txt文件结束。关闭2.txt,3.txt文件。实现对于

4、文件的合并。2、抽取出三科成绩中有补考的学生并保存在一个新文件4.txt。调用函数findout()来实现。函数以读的式打开3.txt文件,以写的式打开4.txt文件。读入3.txt文件的一个数据到结构体stud中,判断学生信息中语文、数学和英语成绩中是否有不及格的,如果有,则将数据写入4.txt中,直至遇到3.txt文件结束。3、对合并后的文件3.txt中的数据按总分降序排序。调用函数sortfile()来实现。函数提供了三种排序法,通过调用函数kuaisu()来实现快速排序,通过调用函数xuanze()来实现选择排序,通过调用函数maopao()来实现冒泡排序。4、输入一个学生姓名后,能查

5、找到此学生的信息并输出结果。调用函数findoutstudent()来实现。函数也提供了两种查找法:(1) 通过调用函数derectfindoutstudent()实现从文件从3.txt中逐个读入数据,再进行查找判断,如果找到所需要的数据,则查找结束,否则继续查找直至文件结束。(2) autofindoutstudent()在进行第三步的过程中,已经把3.txt中的学生数据读入了结构体数组当中,调用函autofindoutstudent()直接从结构体中进行查找。5、通过调用函数exit()退出。mainfindout()sortfile()findoutstudent()exit()Unit

6、edfile()Kuaisu()Maopao()Xuanzhe()derectfindoutstudent()autofindoutstudent()四、详细设计1把1.txt和2.txt文件中的容放到3.txt文件中。调用Unitedfile()文件,打开文件1和文件3,从1.txt中读入学生数据进结构体,把结构体中学生数据放到文件3中。关闭文件1,从2.txt中读入学生数据进结构体,把结构体中学生数据放到文件3中。关闭文件2和文件3。void Unitedfile() FILE *fp,*p; Student stud; fp=fopen(d:1.txt,r); p=fopen(d:3.t

7、xt,w); while(fscanf(fp,%s%s%d%d%d,stud.name,stud.id,&stud.chinese,&stud.math,&stud.english )!=EOF) fprintf(p,%-6s %-6s %-6d %-6d %-6dn,stud.name,stud.id,stud.chinese,stud.math,stud.english ); fclose(fp); fp=fopen(d:2.txt,r); while(fscanf(fp,%s%s%d%d%d,stud.name,stud.id,&stud.chinese,&stud.math,&stud

8、.english )!=EOF) fprintf(p,%-6s %-6s %-6d %-6d %-6dn,stud.name,stud.id,stud.chinese,stud.math,stud.english ); fclose(fp); fclose(p);2. 抽取出三科成绩中有分数低于60分的学生并保存在一个新文件4.txt从3.txt中读入学生数据进结构体,判断是否有不及格的课程,如果有,则写入文件4.txt中void findout() FILE *fp,*p; Student stud; fp=fopen(d:3.txt,r); p=fopen(d:4.txt,w); whil

9、e(fscanf(fp,%s%s%d%d%d,stud.name,stud.id,&stud.chinese,&stud.math,&stud.english )!=EOF) if(stud.chinese60|stud.english60|stud.math60) fprintf(p,%-6s %-6s %-6d %-6d %-6dn,stud.name,stud.id,stud.chinese,stud.math,stud.english ); fclose(fp); fclose(p);3对文件3.txt中的数据按总分以降序进行排序(三种法:选择排序、快速排序、冒泡排序)void sor

10、tfile() char c; cout请选择排序法:endl; cout1.选择排序endl; cout2.快速排序endl; cout3.冒泡排序c; switch(c) case1: xuanze();/选择排序 break; case2: kuaisu();/快速排序 break; case3: maopao();/直接插入排序 break; 3.1选择排序void xuanze() int j,k,max1,sum1,sum2,q; i=0; Student temp; FILE *fp; fp=fopen(d:3.txt,r); i=0; while(fscanf(fp,%s%s%

11、d%d%d,studi.name,studi.id,&studi.chinese,&studi.math,&studi.english )!=EOF) i+; fclose(fp); for(j=0;ji;j+) studj.sum=studj.chinese +studj.math+studj.english; for(j=0;ji-1;j+)/对结构体数组中的数据进行选择排序 max1=j; sum1=studj.sum; for(k=j+1;ki;k+) sum2=studk.sum; if(sum1sum2) max1=k; sum1=sum2; if(max1!=j) temp=st

12、udmax1; studmax1=studj; studj=temp; studj.sum=sum1; fp=fopen(d:3.txt,w);/将排序后的数据写入3.txt中 for(q=0;qi;q+) fprintf(fp,%-8s %-8s %-8d %-8d %-8d %-8dn,studq.name,studq.id,studq.chinese,studq.math,studq.english,studq.sum ); fclose(fp);3.2 快速排序void kuaisu() int i,low,high; FILE *fp; fp=fopen(d:3.txt,r); i=

13、0; while(fscanf(fp,%s%s%d%d%d,studi.name,studi.id,&studi.chinese,&studi.math,&studi.english )!=EOF) studi.sum=studi.chinese+studi.math+studi.english; i+; fclose(fp); low=0; high=i-1; QSort(low,high);/快速排序 fp=fopen(d:3.txt,w);/将排序后的数据写入3.txt中 for(int j=0;ji;j+) fprintf(fp,%-8s %-8s %-8d %-8d %-8d %-8dn,studj.name,studj.id,studj.chinese,studj.math,studj.english,studj.sum ); fclose(fp); 3.3 冒泡排序void maopao() int j,k,q; Student temp; FILE *fp; fp=fopen(d:3.txt,r); i=0; while(fscanf(fp,%s%s%d%d%d,studi.name,st

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1