ImageVerifierCode 换一换
你正在下载:

include.docx

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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

include.docx

1、include#include #include #include #include using namespace std;string str5 ; /定义一个str字符串来吸收文件2.txt中重复的标题int aNum=0; /使用全局变量定义学生的人数struct adent /构建结构体 char name10; /姓名 int id; int chinese; int math; int english; int sum;a50,temp;/实现对文件1.txt和文件2.txt数据的合并,生成文件3.txtvoid Merge() char* f1 = d:1.txt; char*

2、 f2 = d:2.txt;char* f3 = d:3.txt;ifstream inFile1( f1 ); /从磁盘读取文件1.txtifstream inFile2( f2 ); /从磁盘读取文件2.txtofstream outFile( f3 ); /写入信息到文件3.xtxoutFile inFile1.rdbuf(); /把文件1.txt中的数据写入到outfilefor(int i=0;!inFile2.eof()=true;i+) /遍历文件2.txt的所有数据 string str; getline(inFile2,str); /读取第一行信息放到str中 if(i=0)

3、continue; /跳过第一行 outFilestrendl; /把后面的信息放入到文件3.txtinFile1.close(); /关闭文件f1inFile2.close();outFile.close();ifstream f ( f3 );cout *文件已生成,合并后数据如下*endl;cout f.rdbuf(); /输出文件3.txt;/把文件3.txt中的数据读出到结构体中,便于对数据的操作void FillStruct(adent *p) int i=aNum, j=0; /这里让i = aNum,假如先添加数据,后合并,则结构体下标中人数i不是从0开始计,而是从先输入的数据

4、的个数aNum开始的ifstream infile(D:3.txt,ios:in); /以读的方式打开文件3.txt if(!infile) /测试是否成功打开 cerropen error!endl; exit(1); while(!infile.eof() /遍历infile,只把数据写入进去,过滤掉第一行的头标题 while(jstrj; j+; /把磁盘中的文件读出来写入到结构体中 infile pi.name pi.id pi.chinese pi.math pi.english; aNum+; i+; aNum=aNum-1; /数据读完后因光标移到下一行,等于是多读了一行,所以真

5、实的人数要比计数减一(不知道理解的对不?) infile.close(); /关闭文件 ;/抽取出三科成绩中有补考的学生并保存在一个新文件4.txtint FailList(adent *p) /*如果先开始进行的操作不是合并或者添加数据,那么其他的操作将无法进行,因为结构体中没有学生数据,返回主菜单*/ if(aNum=0) cout请先合并或者输入数据endl; return 0; ofstream in; in.open(d:4.txt,ios:trunc); /如不空则清空 in补考名单endl; /用插入器()从文件输入 for(int i=0;iaNum;i+) if(pi.chi

6、nese60|pi.english60|pi.math60) inpi.namet; ;void sum(adent *p) /求总和 for(int i=0;iaNum;i+) pi.sum=pi.chinese+pi.english+pi.math; void traversal(adent *p) /遍历输出学生数据 cout姓名t学号t语文t数学t英语t总分endl; for(int i=0;iaNum;i+) coutpi.nametpi.idtpi.chinesetpi.mathtpi.englishtpi.sumendl; /对学生总分按照从高到低的顺序排列int Sort(ad

7、ent *p) if(aNum=0) cout请先合并或者输入数据endl; return 3; sum(p); int flag=0; /设标识位 do cout请输入排序方式,输入“1”冒泡排序, 输入“2”直接插入排序flag; if(flag=1)/冒泡 for(int i=0;iaNum-1;+i) /外层循环 for(int k=i;kaNum-1;+k) /内层循环 if(pk.sum pk+1.sum) /按照从大到小的顺序进行排列 temp = pk; pk = pk+1; pk+1 = temp; traversal(p); /输出排序后的结果 return 1; if(f

8、lag=2)/直接插入 for(int i=1;i=0 & temp.sumpj.sum) /直到越界或者把哨兵的值和j的值进行比较 pj+1=pj; /如果J的值比哨兵的值小,则把j的值向后移动 j-; /j向前移,循环进行比较 pj+1=temp; /直到找到temp的值比j的值小,就把哨兵里的值放在j得后面 traversal(p); return 1; if(flag!=1 & flag!=2) cout输入错误,请重新输入; flag=3;while(flag=3);/输入一个学生姓名后,能查找到此学生的信息并输出结果int Select(adent *p) if(aNum=0) c

9、out请先合并或者输入数据endl; return 3; int i=0;coutsname; while(iaNum) if(strcmp(sname,pi.name)=0) /通过字符串的比较来搜索要查找的姓名 cout姓名t学号t语文t数学t英语endl; coutpi.nametpi.idtpi.chinesetpi.mathtpi.englishendl; return 1; else i+; if(i=aNum) cout无此学生返回主菜单endl; return 0; /while/统计输出各门课程的平均分,最高分、最低分/统计各门课程优秀、良好、中等、及格、不及格的人数及百分比

10、int Statistics(adent *p) if(aNum=0) cout请先合并或者输入数据endl; return 0; int flag=0; cout请输入您想进行统计的科目,语文输入“1”,数学输入“2”,英语输入“3”flag; if(flag=1) float tempmax=0,tempmin=100,tempsum=0,tempgood=0,tempnormal=0,tempbad=0; for(int i=0;itempmax)tempmax=pi.chinese; /找到最高分 if(pi.chinese=85)tempgood+; /找到优秀的人数 if(pi.c

11、hinese=60 &pi.chinese85)tempnormal+; /中等的人数 if(pi.chinese60)tempbad+; /不及格的人数 tempsum=tempsum+pi.chinese; /语文的总分 cout语文成绩平均分为:setprecision(4)tempsum/aNumt最高分为:tempmaxt最低分为:tempminendl; cout优秀的人数:tempgood 普通的人数:tempnormal 不及格的人数:tempbadendl; cout优秀(大于等于85)百分比为:setprecision(4)tempgood/aNum*100t中等(60到8

12、5之间)百分比为:tempnormal/aNum*100t不及格(小于60)百分比为:tempbad/aNum*100endl; if(flag=2) float tempmax=0,tempmin=100,tempsum=0,tempgood=0,tempnormal=0,tempbad=0; for(int i=0;itempmax)tempmax=pi.math; if(pi.math=85)tempgood+; if(pi.math=60 & pi.math85)tempnormal+; if(pi.math60)tempbad+; tempsum=tempsum+pi.math; c

13、out数学成绩平均分为:setprecision(4)tempsum/aNumt最高分为:tempmaxt最低分为:tempminendl; cout优秀的人数:tempgood 普通的人数:tempnormal 不及格的人数:tempbadendl; cout优秀(大于等于85)百分比为:setprecision(4)tempgood/aNum*100t中等(60到85之间)百分比为:tempnormal/aNum*100t不及格(小于60)百分比为:tempbad/aNum*100endl; if(flag=3) float tempmax=0,tempmin=100,tempsum=0,

14、tempgood=0,tempnormal=0,tempbad=0; for(int i=0;itempmax)tempmax=pi.english; if(pi.english=85)tempgood+; if(pi.english=60 &pi.english85)tempnormal+; if(pi.english60)tempbad+; tempsum=tempsum+pi.english; cout英语成绩平均分为:setprecision(4)tempsum/aNumt最高分为:tempmaxt最低分为:tempminendl; cout优秀的人数:tempgood 普通的人数:t

15、empnormal 不及格的人数:tempbadendl; cout优秀(大于等于85)百分比为:setprecision(4)tempgood/aNum*100t中等(60到85之间)百分比为:tempnormal/aNum*100t不及格(小于60)百分比为:tempbad/aNum*100endl; ;/添加数据void adda(adent *p) int aid=0,ac=0,am=0,ae=0;char aname10; cout请输入学号:aid; paNum.id=aid; cout请输入姓名:aname; strcpy(paNum.name,aname); cout请输入语文

16、成绩:ac; paNum.chinese=ac; cout请输入数学成绩:am; paNum.math=am; cout请输入英语成绩:ae; paNum.english=ae; cout录入成功endl; aNum+; /学生人数/删除数据int dela(adent *p) if(aNum=0) cout请先合并或者输入数据endl; return 3; int i=0,aid=0;cout请输入要删除学生的学号aid;while(iaNum) if(pi.id=aid) /找到要删除的id for(int j=i;jaNum-1;j+) pi=pi+1; /向前移动一位 aNum-; /

17、人数减一 cout删除成功endl; return 1; else i+; if(i=aNum) cout无此学生返回主菜单endl; return 0; /while/修改数据int altera(adent *p) if(aNum=0) cout请先合并或者输入数据endl; return 3; int aid=0,ac=0,am=0,ae=0,i=0;char aname10; cout请输入要修改学生的学号aid; while(iaNum) if(pi.id=aid) cout请输入新姓名:aname; strcpy(paNum.name,aname); cout请输入新语文成绩:ac

18、; paNum.chinese=ac; cout请输入新数学成绩:am; paNum.math=am; cout请输入新英语成绩:ae; paNum.english=ae; cout修改成功endl; return 1; else i+; if(i=aNum) cout无此学生返回主菜单endl; return 0; /while/菜单void menu()cout-学生成绩管理系统-endl;cout 1:对文件进行合并生成3.txt(在D盘下)endl;cout 2:添加数据endl;cout 3:修改数据endl;cout 4:删除数据endl;cout 5:按姓名查找某一学生成绩end

19、l;cout 6:生成需补考学生名单4.txt(在D盘下)endl; cout 7:对学生成绩进行排序endl;cout 8:进行各科成绩的统计(平均分,最高分,最低分,成绩层次分布)endl;cout 9:退出endl;cout-endl;/主函数void main()system(color 79); /系统颜色int choice;do menu(); cout请输入您需要操作对应阿拉伯数字(19)choice; switch(choice) case 1: Merge(); FillStruct(a); break; case 2: adda(a); break; case 3: al

20、tera(a); break; case 4: dela(a); break; case 5: Select(a); break; case 6: FailList(a); break; case 7: Sort(a); break; case 8: Statistics(a); break; case 9: exit(0); break; /switch while(1); #include #include #include #include using namespace std;string str5; /定义一个str字符串来吸收文件2.txt中重复的标题int aNum = 0;

21、/使用全局变量定义学生的人数struct adent /构建结构体 char name10; /姓名 int id; int chinese; int math; int english; int sum;a50, temp;/实现对文件1.txt和文件2.txt数据的合并,生成文件3.txtvoid Merge() char* f1 = d:1.txt; char* f2 = d:2.txt; char* f3 = d:3.txt; ifstream inFile1(f1); /从磁盘读取文件1.txt ifstream inFile2(f2); /从磁盘读取文件2.txt ofstream

22、 outFile(f3); /写入信息到文件3.xtx outFile inFile1.rdbuf(); /把文件1.txt中的数据写入到outfile for (int i = 0; !inFile2.eof() = true; i+) /遍历文件2.txt的所有数据 string str; getline(inFile2, str); /读取第一行信息放到str中 if (i = 0)continue; /跳过第一行 outFile str endl; /把后面的信息放入到文件3.txt inFile1.close(); /关闭文件f1 inFile2.close(); outFile.close(); ifstream f(f3); cout *文件已生成,合并后数据如下* endl; cout f.rdbuf(); /输出文件3.txt;/把文件3.txt中的数据读出到结构体中,便于对数据的操作void FillStruct(adent *p) int i = aNum, j = 0; /这里让i = aNum,假如先添加数据,后合并,则结构体下标中人数i不是从0开始计,而是从先输入的数据的个数aNum开始的 ifstream infile(D:3.txt, ios:in); /

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

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