已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
源程序阅读与调试课程设计报告题 目:学生成绩管理系统班 级:统专软件1001班 小组成员:常永恒 孙东升吴春亮 李 强完成时间:2011年12月13日目录1 需求分析12概要设计23 详细设计33.1 文件合并33.2 自动检索33.3 数据排序33.4 信息查询34 代码设计55 系统测试115.1 黑盒测试功能测试115.2边界值测试健壮性测试146 总结15源程序阅读与调试课程设计报告1 需求分析现有学生成绩信息文件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) 实现对两个文件数据进行合并,生成新文件3.txt2) 抽取出三科成绩中有补考的学生并保存在一个新文件4.txt3) 对合并后的文件3.txt中的数据按总分降序排序4) 输入一个学生姓名后,能查找到此学生的信息并输出结果5) 要求使用结构体,链或数组等实现上述要求.6) 采用多种方法且算法正确者,可适当加分.2 概要设计 3 详细设计3.1 文件合并已知:文件1.txt、文件2.txt、id、name、chinese、math、english。求:调用函数来实现 1.txt和2.txt合并为新生成文件3.txt算法:1.函数以读的方式打开1.txt文件和2.txt文件,以写的方式打开3.txt文件; 2.从1.txt读入一个数据并写入3.txt文件,直到遇到1.txt文件结束; 3.用上述方式把数据写入3.txt直到遇到2.txt文件结束; 4.关闭1.txt,2.txt,3.txt文件,实现对于文件的合并。3.2 自动检索已知:文件3.txt、id、name、chinese、math、english。求:chinese、math、english中小于60的成绩,并显示名字、学号。算法:1.读取3.txt; 2.创建4.txt;3.读取3.txt里面的成绩,应用studd.chinese60|stud.english60|stud.math60找出不及格的成绩; 4.将不及格成绩写入4.txt; 5.关闭3.txt;4.txt。3.3 数据排序已知:文件3txt 、id、name、chinese、math、english。求:各个学生的总分并按照降序排序算法:1.读取3.txt; 2.求出文件3.txt各个学生的总分; 3.用选择排序的方法将学生的总分进行排序; 4.关闭文件3.txt。3.4 信息查询已知:文件3.txt、id、name、chinese、math、english。求:输入一个学生姓名后,能查找到此学生的信息并输出结果算法:1.读取3.txt; 2.从表的一端开始至尾端,顺序扫描线性表; 3.依次将线性表中的信息和输入的信息(姓名)进行比较; 4.若相等则查找成功,并输出该元素。4 代码设计#includeusing namespace std;#define SIZE 100 /*存放学生数据的结构体*/typedef struct char name10;int id;int chinese;int math;int english;int sum;Student;Student studSIZE;int i;int sign=0,sign1=0,sign2=0,sign3=0;void Unitedfile() /*合并1.txt和2.txt为3.txt*/FILE *fp,*p;Student studd;fp=fopen(1.txt,r); /*以读的方式打开1.txt*/p=fopen(3.txt,w); /*以写的方式打开3.txt*/ fscanf(fp,%*n%*c); /*跳过一行字符串*/fprintf(p,姓名 学号 语文 数学 英语 n); while(fscanf(fp,%s%d%d%d%d,,&studd.id,&studd.chinese,&studd.math,&studd.english )!=EOF)fprintf(p,%-6s %2d %d %d %dn,,studd.id,studd.chinese,studd.math,studd.english ); /*读取1.txt的数据进入结构体中,写入3.txt,继续读取直结束*/fclose(fp); /*关闭文件1.txt*/fp=fopen(2.txt,r); /*以写的方式打开2.txt*/fscanf(fp,%*n%*c); /*跳过一行字符串*/while(fscanf(fp,%s%d%d%d%d,,&studd.id,&studd.chinese,&studd.math,&studd.english )!=EOF)fprintf(p,%-6s %2d %d %d %dn,,studd.id,studd.chinese,studd.math,studd.english ); /*读取2.txt的数据进入结构体中,写入3.txt,继续读取直结束*/ fclose(fp); /*关闭文件2.txt*/fclose(p); /*关闭文件3.txt*/void findout() /*抽取出三科成绩中有补考的学生并保存在一个新文件4.txt*/FILE *fp,*p;Student studd;fp=fopen(3.txt,r); /*以读的方式打开3.txt*/p=fopen(4.txt,w); /*以写的方式打开4.txt*/fscanf(fp,%*n%*c); /*跳过一行字符串*/fprintf(p,姓名 学号 语文 数学 英语n); while(fscanf(fp,%s%d%d%d%d,,&studd.id,&studd.chinese,&studd.math,&studd.english )!=EOF)if(studd.chinese60|studd.english60|studd.math60)fprintf(p,%-6s %2d %d %d %dn,,studd.id,studd.chinese,studd.math,studd.english ); /*从3.txt中读入学生数据进结构体,判断是否有不及格的课程,如果有,则写入文件4.txt中*/fclose(fp); /*关闭文件3.txt*/fclose(p); /*关闭文件4.txt*/void Selectsort() /*对合并后的文件3.txt中的数据按总分降序排序*/int j,k,max1,sum1,sum2,q;i=0;Student temp;FILE *fp;fp=fopen(3.txt,r); /*以读的方式打开3.txt*/i=0;fscanf(fp,%*n%*c); /*跳过一行字符串*/while(fscanf(fp,%s%d%d%d%d,,&studi.id,&studi.chinese,&studi.math,&studi.english )!=EOF)i+; /*从3.txt中读入数据进结构体数组stud中*/fclose(fp);for(j=0;ji;j+) /*对结构体数组中的数据进行选择排序*/ /*每趟是选出一个最值确定其在结果序列中的位置,确定元素的位置是从前往后,而每趟最多进行一次交换,其余元素的相对位置不变。可进行降序排序*/max1=j;sum1=studj.math+studj.english+studj.chinese;for(k=j+1;ki+1;k+)sum2=studk.math+studk.english+studk.chinese;if(sum1sum2)max1=k;sum1=sum2;if(max1!=j)temp=studmax1;studmax1=studj;studj=temp;studj.sum=sum1;fp=fopen(3.txt,w); /*将排序后的数据写入3.txt中*/fprintf(fp,姓名 学号 语文 数学 英语 总分n);for(q=0;qNAME;while(fscanf(fp,%s%d%d%d%d%d,,&stud1.id,&stud1.chinese,&stud1.math,&stud1.english,&stud1.sum )!=EOF)if(strcmp(,NAME)=0) /*如果输入的姓名达到要求*/ /*输出显示其相对应的信息*/flag=1;cout-姓名-学号-语文-数学-英语-总分-endl;cout stud1.id ;coutstud1.chinese stud1.math stud1.english stud1.sumendl;break;if(flag=0) cout无此学生相关信息endl; /*如无法找到,则显示无此学生相关信息*/fclose(fp); /*关闭文件3.txt*/*主程序*/ int main() system(color 79); /*背景为白色,字体为淡蓝色*/int choice; while(1) /*主菜单*/if(sign3=0)printf(-学生成绩管理系统-n);printf(1. 合并1.txt和2.txt为3.txtn); printf(2. 抽取出三科成绩中有补考的学生并保存在一个新文件4.txtn); printf(3. 对合并后的文件3.txt中的数据按总分降序排序n); printf(4. 输入一个学生姓名,查找到此学生的信息并输出结果n);printf(5. 退出n);printf(请选择(1-5):); sign3=1;scanf(%d,&choice); /*输入功能数字,颜色按照定义颜色*/switch(choice) case 1: Unitedfile();sign=1;cout操作1成功!endl;break; /*输入1,使用Unitedfile函数。并显示操作1成功!*/case 2: if(sign=0)cout请执行操作1后再执行此项操作!endl;break;cout操作2成功!endl;findout();break; /*输入2,如果sign=0输出请执行操作1后再执行此项操作!。否则输出操作2成功!*/case 3:if(sign=0)cout请执行操作1后再执行此项操作!endl;break;Selectsort();cout操作3成功!endl;sign1=1;break; /*输入3,如果sign=0输出请执行操作1后再执行此项操作!。否则输出操作3成功!*/case 4:while(1)char c;cout按姓名查找:endl;derectfindoutstudent();cout继续查找请输入Y:endl;cout返回主菜单请输入N:c; /*输入4,启用derectfindoutstudent函数*/if(c=N|c=n)break;/N=n=csystem(cls); /*清屏*/sign3=0;break;case 5:exit(0);break; /*输入5,关闭程序*/ return 0;5 系统测试5.1 黑盒测试功能测试图1 源文件1.txt图2 源文件2.txt 图3 生成文件3.txt 图4 生成文件4.txt图5 程序运行图(查找) 图6 程序运行图(不按顺序执行,进行提示)图7 程序运行图(不按顺序执行,进行提示)图8 程序运行图(合并,抽取补考的,排序)图9 程序运行图(查找)5.2 边界值测试健壮性测试没有1.txt和2.txt 出现错误 图10 错误提示6 总结通过了这次的课程设计,加深了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 雨课堂学堂在线学堂云《材料力学(暨南 )》单元测试考核答案
- 2026年设备监理师之质量投资进度控制考试题库200道含完整答案【典优】
- 2026宁夏面向北京理工大学招录选调生历年真题汇编带答案解析
- 2026重庆轻工职业学院招聘20人备考题库含答案解析(夺冠)
- 瑞金市2025年公开招聘城市社区工作者【46人】历年真题汇编附答案解析
- 上海建科咨询集团“城市未来生”暑期实习暨2026届秋招提前批备考题库附答案
- 浙江国企招聘-2025浙江智慧信息产业有限公司招聘2人历年真题汇编附答案解析
- 2026年上海市莘光学校编外人员、实习生招聘参考题库附答案解析
- 2025福建漳州市长泰区医院招聘编外收费人员1人参考题库附答案解析
- 2025江苏南通海安市部分卫生健康事业单位冬季招聘研究生及紧缺岗位人才33人备考公基题库带答案解析
- 2025及未来5-10年高速插秧机项目投资价值市场数据分析报告
- 企业财务制度规范范本合集
- 2025年广东省继续教育公需课《人工智能赋能制造业高质量发展》满分答案
- 学校管理经验介绍材料
- 学校用电安全教育课件
- 2025考评员考试题及答案
- 1.《社会历史的决定性基础》课件+2025-2026学年统编版高二语文选择性必修中册
- 注塑件外观不良
- 2026届浙江杭州市高三一模英语读后续写解析课件(含范文)
- 2026年中国飞机MRO软件项目经营分析报告
- 2025年考研英语二真题及答案解析(完整版)
评论
0/150
提交评论