版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录IITOC\o"1-5"\h\z\o"CurrentDocument"1题目内容及设计要求 1 !I\o"CurrentDocument"2总体设计 1 :I2.1总体功能框图 1 :II2.2类的设计说明 2 =II2.3主要算法流程图 3 :II\o"CurrentDocument"3程序清单及注释 4 :II\o"CurrentDocument"4运行结果与分析 15 !II5总结 16 :II6参考文献 16 :I1题目内容及设计要求IIIII设计一个实用的小型学生成绩管理程序。它有查询和检索等功能,并且能够对指定文件操作,也可以将多个文件组成一个文件。(1) 建立文件:可以使用默认文件名或指定文件名将记录存储文件。设置适当的标志位,作为对记录进行操作的信息。写同名文件将覆盖原来文件的内容。(2) •增加学生记录:可在已有记录后面追加新的记录。可以随时增加新的记录,它们仅保存在向量数组中。可以将一个文件读入,追加在已有记录之后。采取文件追加方式时,在没有保存到文件之前,将继续保持文件追加状态,以便实现连续文件追加操作方式。如果没有记录存在,给出提示信息。(3) 新建学生信息文件:用来重新建立学生信息记录。如果已经有记录存在可以覆盖原记录或者在原记录后面追加,也可以将原有记录信息保存到一个指定文件然后重新建立记录。给出相应的提示信息。(4) 显示、删除、修改、查询记录。II2总体设计 i2.1总体功能框图图2-1总体功能框图2.2类的设计说明先定义一个Tstu类来进行数据的录入,内含getsum()和getaver()两个构造函数,对应的功能分别为求总分,求平均分。再将主函数定义为友元函数,方便访问其中的成员。ClassTstu{Private:charname[20];intnumber;floatmath,cpp,english,average,sum;public:Tstu(){};Tstu(charn[20],intnum,floatma,floatcj,floateng);floatgetsum();〃得到总分的函数floatgetaver();//得到平均分的函数friendintmain();//将主函数定义为友元函数,方便访问类中的成员};2.3主要算法流程图图2-2算法流程图3程序清单及注释#include<iostream>#include<string>#include<fstream>#include<sstream>#include<iomanip>usingnamespacestd;classTstu//通过定义一个类来定义数据录入的函数{charname[20];intnumber;floatmath,cpp,english,average,sum;public:Tstu(){};Tstu(charn[20],intnum,floatma,floatcj,floateng);floatgetsum();〃得到总分的函数floatgetaver();//得到平均分的函数friendintmain();//将主函数定义为友元函数,方便访问类中的成员};Tstu::Tstu(charn[20],intnum,floatma,floatcj,floateng){strcpy(name,n);//得到姓名number=num;//得到学号math=ma;//得到数学成绩cpp=cj;〃得到C++成绩english=eng;//得到英语成绩}floatTstu::getsum()//得到总分的函数{sum=cpp+english+math;returnsum;}floatTstu::getaver()//得到平均分的函数{average=getsum()/3;returnaverage;}intmain(){coutvv"*****************欢迎来到学牛成绩查询系统****************coutvv"请选择您需要的操作!"vvendl;〃菜单的输出coutvv"操作:"vvendl;coutvv"(l)数据录入"vvendl;coutvv"(2)增加学生"vvendl;coutvv"(3)删除学生"vvendl;coutvv"(4)修改数据"vvendl;coutvv"查询:"vvendl;coutvv"(5)按总成绩查询"vvendl;coutvv"(6)按姓名查询"vvendl;coutvv"(7)输出所有学生的数据"vvendl;coutvv"成绩统计:"vvendl;coutvv"(8)每个学生的平均成绩"vvendl;coutvv"(9洛科不及格人数"vvendl;coutvv"排名:"vvendl;coutvv"(10)按总分查询排名"vvendl;coutvv"(11)退出"vvendl;coutvv"选择相关操作请输入相对的括号里的阿拉伯数字及字母!"vvendl;intp=0;//全局变量,用于选择菜单时的输入charw;〃全局变量,用于在大项中选择是否继续操作Tstu*s[100];//类定义的指针将所录入的数据按类中的形式分别存储ofstream*file[100];inti=0;//全局变量,用于做每个录入数据的下标intj=0;intchris1=0;〃用于判断do-while语句do//判断输入是否正确{cin>>p;if((p>=1&&pv=11))chris1=1;else coutvv"指令错误!请重新输入:"vvendl;}while(chris1==0);do{switch(p){case1://数据的录入{charc;//用于在小项中选择是否继续操作charname[20];intnumber;floatmath,cpp,english;
do{coutvv"请输入姓名:"vvendl;cin>>name;coutvv"请输入学号:"vvendl;cin>>number;coutvv"请输入数学成绩:"vvendl;cin>>math;coutvv"请输入C++成绩:"vvendl;cin>>cpp;coutvv"请输入英语成绩:"vvendl;cin>>english;fstreamoutfile,infile;//作一个文本文档在文件夹中用于显示所录入的数据outfile.open("f1.txt",ios::out|ios::app);if(!file){coutvv"f1.txtcannotopen.\n";return0;}outfilevvnamevv" "vv"学号:"vvnumbervv" "vv"数学成绩:"vvmathvv""vv"C++成绩:"vvcppvv""vv"外语成绩:"vvenglishvvendl;outfile.close();infile.open("f1.txt",ios::in);if(!file)//判断文件是否打开{coutvv"f1.txtcannotopen.\n";return0;}charch;while(infile.get(ch))coutvvch;coutvvendl;infile.close();j++;s[i]=newTstu(name,number,math,cpp,english);i++;coutvv"数据录入成功,想继续录入吗(y/n)"vvendl;cin>>c;chris1=0;do{if(c!='y'&&c!='n')
{cout<<"指令错误!请重新输入!cin>>c;}elsechris1=1;}while(chris1==0);}while(c=='y');//重复输入break;}case2://增加学生数据{charname[20];intnumber;floatmath,cpp,english;charc;do{coutvv"请输入您要增加的学生的姓名:"vvendl;cin>>name;coutvv"请输入你要增加的学生的学号:"vvendl;cin>>number;coutvv"请输入数学成绩:"vvendl;cin>>math;coutvv"请输入C++成绩:"vvendl;cin>>cpp;coutvv"请输入英语成绩:"vvendl;cin>>english;fstreamoutfile,infile;outfile.open("f1.txt",ios::out|ios::app);if(!file){coutvv"f1.txtcannotopen.\n";return0;}outfilevvnamevv""vv"学号:"vvnumbervv""vv"绩:"vvmathvv""vv"C++成绩:"vvcppvv""vv"外语成绩:"vvenglishvvendl;outfile.close();infile.open("f1.txt",ios::in);if(!file){"vvendl;数学成coutvv"f1.txtcannotopen.\n";return0;
"vvendl;数学成}charh;while(infile.get(h))cout<<h;cout<<endl;infile.close();j++;s[i]=newTstu(name,number,math,cpp,english);i++;coutvv"数据录入成功,想继续录入吗(y/n)"vvendl;cin>>c;if(c!='y'&&c!='n'){coutvv"指令错误!请重新输入!"vvendl;cin>>c;}}while(c=='y');break;}case3://删除学生信息{charc;stringxingming,line,str,name;do{ifstreamfin("f1.txt");fstreamoutfile("f2.txt",ios::trunc|ios::out);//作一个文本文档在文件夹中用于显示所录入的数据coutvv"请输入您要删除的学生的姓名:"vvendl;cin>>xingming;while(!fin.eof()){getline(fin,line);istringstreamstream(line);name=line.substr(0,line.find("",0));//找到名字,判断是否相等if(name!=xingming)outfilevvlinevvendl;}outfile.close();fin.close();fstreamf("f1.txt",ios::trunc|ios::out);ifstreamoutf("f2.txt");f<<outf.rdbuf();outf.close();f.close();coutvv"数据删除成功,想继续删除吗(y/n)"vvendl;cin>>c;if(c!='y'&&c!='n'){coutvv"指令错误!请重新输入!"vvendl;cin»c;}}while(c=='y');break;}case4://修改数据{stringsname,line,str,name;intnu;floateng,ma,com;intflag;charc;if(i==0){coutvv"系统中没有输入数据,请先输入数据!"vvendl;break;}do{flag=0;coutvv"请输入您要修改的学生的姓名:";cin>>name;fstreamfin("f1.txt",ios::in);ofstreamoutfile("f.txt",ios::trunc|ios::out);coutvvendl;while(!fin.eof())//在文件中查找{getline(fin,line);istringstreamstream(line);sname=line.substr(0,line.find("",0));if(name!=sname){outfilevvlinevvendl;}elseflag=1;fin.close();if(flag=1){coutvv"请输入修改学生姓名及其新学号,数学,C++和英语成绩:";cin>>name>>nu>>ma>>com>>eng;cout<<endl;outfile<<name<<""<<"学号:"<<nu<<" "<<"数学成绩:"vvmavv""<<endl;"<<"C++成绩:"vvcomvv""<<"外语成绩绩:"vvmavv""<<endl;outfile.close();fstreamoutf("f1.txt",ios::trunc|ios::out);fstreaminf("f.txt",ios::in);outf<<inf.rdbuf()<<endl;outf.close();inf.close();}if(flag=0)coutvv,对不起,您要修改的学生不存在!请查证后输入!coutvv"想继续修改吗(y/n):";cin>>c;coutvvendl;if(c!='y'&&c!='n'){coutvv"指令错误!请重新输入!"vvendlvv"";cin>>c;}}while(c=='y');break;}case5://按总分查询{intj=0;floatSUM;charc;intflag;if(i==0){coutvv"系统中没有输入数据,请先输入数据!"vvendl;break;}do{flag=0;coutvv"请输入您要查询的学生的总成绩:"vvendl;cin>>SUM;for(intj=0;j<i;j++){if(s[j]->getsum()==SUM){flag=1;coutvv"您要查询的学生是:"vv(*s[j]).namevvendl;coutvv"该生的信息为:"vvendl;cout<<"学号:"<<(*s[j]).number<<"数学分数:"vv(*s[j]).mathvv"c++分数:"vv(*s[j]).cppvv"英语分数"vv(*s[j]).englishvvendl;}}if(flag==0)coutvv"对不起!您要查询的学生不存在!"vvendl;coutvv"是否继续查?(y/n):";cin>>c;if(c!='y'&&c!='n'){coutvv"指令错误!请重新输入!"vvendl;cin>>c;};}while(c=='y');break;}case6://按姓名查询{charn[20];charc;intj=0;intflag;if(i==0){coutvv"系统中没有输入数据,请先输入数据!"vvendl;break;}do{flag=0;coutvv"请输入要查询的名字:"vvendl;cin>>n;for(intj=0;jvi;j++){if(strcmp(n,(*s[j]).name)==0){flag=1;coutvv"您要查询的学生是:"vv(*s[j]).namevvendl;coutvv"该生的信息是:学号:"vv(*s[j]).numbervv"数学分数:"vv(*s[j]).mathvv"c++分数:"vv(*s[j]).cppvv"英语分数:"vv(*s[j]).englishvvendl;}}if(flag==0)coutvv"对不起您要查询的学生不存在,请查证后再输入!"vvendl;coutvv"您想继续查询吗?(y/n):";cin>>c;if(c!='y'&&c!='n'){coutvv'指令错误!请重新输入:"vvendl;cin>>c;}}while(c=='y');break;}case7://输出所有学生数据{coutvv"所有学生数据如下:"vvendl;ifstreamfile;file.open("f1.txt",ios::in);coutvvfile.rdbuf();file.close();break;}case8://统计每个学生的平均成绩{if(i==0){coutvv"系统中没有输入数据,请先输入数据!"vvendl;break;}for(intm=0;mvi;m++){coutvv(*s[m]).namevv"学号:"vv(*s[m]).numbervv"总分:"vv(*s[m]).getsum()vv"均分:"vv(*s[m]).getaver()vvendl;}break;}case9://统计各学科不及格人数{if(i==0){coutvv"系统中没有输入数据,请先输入数据!"vvendl;break;}intm,n,k,j;m=0;n=0;k=0;for(j=0;j<i;j++){if(s[j]->math<60)m++;if(s[j]->cpp<60)n++;if(s[j]->english<60)k++;}coutvv"数学不及格人数为:"vvmvvendl;coutvv"c++不及格人数为:"vvnvvendl;coutvv"英语不及格人数为:"vvkvvendl;break;}case10://按总分排名{if(i==0){coutvv"系统中没有输入数据,请先输入数据!"vvendl;break;}inth,g,n;intj=0;floata[100],temp;for(g=0;gvi;g++){a[j]=(*s[g]).getsum();j++;}for(h=0;hvi;h++){for(n=0;nvi-h;n++)if(a[n]>a[n+1]){temp=a[n];a[n]=a[n+1];a[n+1]=temp;}}for(n=1;nv=i;n++)coutvva[n]vvendl;break;}}coutvv"您想继续进行其他操作吗?(y/n):";intflag=0;do{cin>>w;cout<<endl;if(w!='y'&&w!='n')coutvv"指令错误!请重新输入!"vvendl;elseflag=1;}while(flag==0);if(w=='y'){coutvv"*****************欢迎来到学牛成绩杳询系统****************coutvv"请选择您需要的操作!"vvendl;//菜单的输出coutvv"操作:"vvendl;coutvv"(l)数据录入"vvendl;coutvv"(2)增加学生"vvendl;coutvv"(3)删除学生"vvendl;c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《竞业禁止协议》
- 中小学电采暖系统优化方案
- 餐饮行业服务员合同范本
- 智能家居产品售后服务方案
- 医疗机构员工调薪方案优化建议
- 个人讲师网络课程录制协议
- 城市公共设施零星维修施工方案
- 人教版一年级数学上学习准备
- 老年患者脑血管造影术应急处理预案
- 校园活动社会实践报告
- SPSS期末统计分析报告
- 液化气站反恐防暴演练方案
- 2014cad入门基础课件
- 2023关爱残疾人关爱残疾日帮残助残知识讲座
- 2016新编过盈量与装配力计算公式
- 《建筑施工高处作业安全技术规范》(-)-全文
- 妊娠患者非产科手术麻醉专家讲座
- 家具制造业生产管理制度大全
- 金融科技创新对金融服务的影响研究
- 停送电工作票制度
- YY/T 0612-2022一次性使用人体动脉血样采集器(动脉血气针)
评论
0/150
提交评论