版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生信息管理分析系统(C+语言)实验报告实验目的和要求: 实验目的 1.巩固C基础知识; 2.熟练掌握指针的应用; 3.了解结构体的定义和基本操作; 4.能够链表对信息表进行设计。 5.锻炼学生编程能力,解决实际问题的能力。实验要求 1使用C语言进行程序编写 2采用函数对系统各个功能进行封装 3. 本次试验是一个综合试验,学生可以根据自己的能力选择大部分的功能予以实现。 实验内容与分析设计: 实验内容及步骤用链表的形式完成一个学生信息管理分析系统;使用结构体,定义相应的数据类型;实现链表的基本功能(例如:创建、插入、删除、更新、查找等操作)每一种链表操作必须使用函数封装;实现学生基本信息及成绩
2、所选科目成绩的录入修改和删除。实现基本信息的查询(分系、班级;分科目)。对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率);对所开课程的成绩分析(求其平均成绩,最高分和最低分);编写主函数进行测试。 实验步骤与调试过程: 1.打开Visual c+ 6.0编程环境;2.点击文件->新建、选择建立新的工程;选择Win32 Console Application选项建立工程名为“tian”的一个空工程。3.继续点击文件->新建、选择建立新的文件;选择C+ Source File选项建立在“tian”工程下的名为“tiantian”的文件。4.编辑源程序(使用结构体、定义相
3、应的数据类型、实现链表的基本功能)->调试;使用class stu建立一个学生类、实现基本的操作。使用double getsum() sum=chinese+english+math; return sum; 来构造计算总成绩的函数使用double getaver() average=getsum()/3; return average; 来构造计算平均成绩的函数5.在组建选项中点击执行【tian.exe】(或者Ctrl+F5)执行程序.6.程序没有错误,正常执行tian.exe,显示学生信息管理系统。 实验结果:调试无误,正常运行tian.exe,显示学生信息管理系统操作页面。可以实现
4、一下操作:1.输入学生信息2.查询信息3.浏览学生信息4.增加学生信息5.插入学生信息6.删除学生信息7.退出系统见打包文件。 疑难小结1.如何建立一个学生类实现基本地操作;解决方案:用class stu定义所需的学生类及实现基本地操作。2.如何定义指向结构体的指针;解决方案:用typedef struct node STD_DATE student; struct node *next; LINK_LIST;定义指向结构体的指针。通过此实验掌握了1.利用LINK_LIST *CreatLink()创建链表函数。2.利用void printfnode(LINK_LIST *thenode)输出
5、节点学生信息。3.利用void findnode(LINK_LIST *head)在头文件中查找匹配的学生信息节点。 主要算法和程序清单:#include<iostream.h> #include<string.h> #include<fstream.h> class stu/建立一个学生类、实现基本的操作 char name20;/定义名字长度不能超过20个字符double math,chinese,english,average,sum;/定义私有变量、存储名字以及学科成绩、平均分、总分等public: /构造成员函数stu() /空的构造函数 stu(
6、char n20,double ma,double chin,double eng)/这是带参数的构造函数、和前面的同名、实现了函数的重载 strcpy(name,n); math=ma; chinese=chin; english=eng; double getsum() /构造计算总成绩的函数 sum=chinese+english+math; return sum; double getaver() /构造计算平均成绩的函数 average=getsum()/3; return average; friend void main();/将主函数作为友元函数、可以在主函数中直接访问私有成员
7、; void main() cout<<" *欢迎使用学生信息管理系统*"<<endl; cout<<" * - *"<<endl;cout<<" *-管理操作-*"<<endl; cout<<" * (0)数据录入 *"<<endl; cout<<" * (1)增加人员 *"<<endl; cout<<" * (2)删除人员 *"<<
8、;endl; cout<<" * (3)修改数据 *"<<endl; cout<<" -用户查询-"<<endl; cout<<" * (4)按总成绩查询 *"<<endl; cout<<" * (5)按姓名查询 *"<<endl; cout<<" * (6)输出所有学生的数据 *"<<endl; cout<<" *成绩排名*"<<e
9、ndl; cout<<" * (7)按总分查询排名 *"<<endl; cout<<" * (8)按语文查询排名 *"<<endl; cout<<" * (9)按数学查询排名 *"<<endl; cout<<" * (y)按英语查询排名 *"<<endl; cout<<" *具体操作请输入相对应的数字*"<<endl; char p;char w; stu *s50; ofst
10、ream *file50; int i=0; int j=0; bool flag2=0; do /flag判断输入是否有效 cin>>p; if(p>='0'&&p<='10') flag2=1; else cout<<"指令错误!请重新输入:"<<endl; while(flag2=0); do/最外层循环switch(p)/接收功能选项 case '0': /输入数据功能 char c; char name20;double math,chinese,eng
11、lish; do cout<<"请输入姓名"<<endl; cin>>name; cout<<"请输入数学成绩:"<<endl; cin>>math; cout<<"请输入语文成绩:"<<endl; cin>>chinese; cout<<"请输入外语成绩:"<<endl; cin>>english; filej=new ofstream("d:document&
12、quot;,ios:ate); *filej<<"姓名"<<name<<"数学成绩"<<math<<"语文成绩"<<chinese<<"外语成绩"<<english<<endl; /文件输入j+; si=new stu(name, math, chinese, english); i+; cout<<"数据录入成功,是否继续录入?(y/n)"<<endl; cin&
13、gt;>c; flag2=0; do if(c!='y'&&c!='n') cout<<"指令错误!请重新输入!"<<endl; cin>>c; else flag2=1; while(flag2=0); while(c='y'); break; case '4':/增加数据功能 double t;char c; do int flag1=0; cout<<"请输入你要查询学生的总成绩"<<endl; cin&
14、gt;>t; for(int q=0;q<i;q+) if(sq->getsum()=t) flag1=1; cout<<"您要查询的学生是:"<<(*sq).name<<endl; if(flag1=0) cout<<"对不起!您要查询的学生不存在!"<<endl; cout<<"是否继续查询?(y/n)"<<endl; cin>>c; if(c!='y'&&c!='n')
15、 cout<<"指令错误!请重新输入!"<<endl; cin>>c; while(c='y'); break; case '5': /查询数据 char n20;int j=0;char c; do int flag=0; cout<<"请输入你要查询的学生姓名"<<endl; cin>>n; for(int j=0;j<i;j+) if(strcmp(n,(*sj).name)=0) flag=1; cout<<"您要查
16、询的学生是:"<<(*sj).name<<endl; cout<<(*sj).name<<"的总成绩是"<<(*sj).getsum()<<endl<<"平均成绩是:"<<(*sj).getaver()<<endl; if(flag=0) cout<<"对不起!您要查询的学生不存在!"<<endl; cout<<"是否继续查询?(y/n)"<<endl
17、; cin>>c; if(c!='y'&&c!='n') cout<<"指令错误!请重新输入!"<<endl; cin>>c; while(c='y'); break; case '1':/增加数据 char name20;double math,chinese,english; char c; do cout<<"请输入您要增加的学生的姓名:"<<endl; cin>>name; cout&
18、lt;<"请输入数学成绩:"<<endl; cin>>math; cout<<"请输入语文成绩:"<<endl; cin>>chinese; cout<<"请输入外语成绩:"<<endl; cin>>english; filej=new ofstream("d:document",ios:ate); /使用随机读写处理方式在d盘建立ate文件,使文件每次打开指针指向文件结尾*filej<<"姓
19、名"<<name<<"数学成绩"<<math<<"语文成绩"<<chinese<<"外语成绩"<<english<<endl; j+; si=new stu(name, math, chinese, english); i+; cout<<"数据录入成功,是否继续录入?(y/n)"<<endl; cin>>c; if(c!='y'&&c!=
20、39;n') cout<<"指令错误!请重新输入!"<<endl; cin>>c; while(c='y'); break; case '2': /删除数据功能 char name20;bool flag3=0;char c; do cout<<"请输入您要删除的学生姓名:"<<endl; cin>>name; for(int h=0;h<i;h+) if(strcmp(name,sh->name)=0) flag3=1; i-;
21、do sh=sh+1; h+; while(h<=i); if(flag3=0) cout<<"您所要删除的对象不存在,请检查后重新输入!" cout<<"是否继续删除?(y/n)"<<endl; cin>>c; if(c!='y'&&c!='n') cout<<"指令错误!请重新输入!"<<endl; cin>>c; while(c='y'); break; case '3
22、': /修改功能 char name20;double mat,chin,eng;flag2=0; char c; do cout<<"请输入您要修改的学生的姓名:"<<endl; cin>>name; for(int h=0;h<i;h+) if(strcmp(name,sh->name)=0) flag2=1; cout<<"请输入新的数学成绩:"<<endl; cin>>mat; cout<<"请输入新的语文成绩:"<&
23、lt;endl; cin>>chin; cout<<"请输入新的外语成绩:"<<endl; cin>>eng; sh->chinese=chin; sh->math=mat; sh->english=eng; cout<<"数据修改成功!" if(flag2=0) cout<<"您所要修改的学生不存在!请检查后重新输入!"<<endl; cout<<"想继续修改吗(y/n)"<<endl;
24、cin>>c; if(c!='y'&&c!='n') cout<<"指令错误!请重新输入!"<<endl; cin>>c; while(c='y'); break; case '6': /信息浏览 cout<<"本系统所有学生数据如下:"<<endl; if(i=0) cout<<"没有录入数据或者数据已被删除!"<<endl; for(int k=0;k<
25、;i;k+) cout<<k+1<<" "<<"姓名:"<<" "<<sk->name<< "语文:"<<" "<<sk->chinese<<"数学:"<<" "<<sk->math <<"外语:"<<" "<<sk->engl
26、ish<<"总分:"<<" "<<(*sk).getsum() <<"平均分:"<<" "<<(*sk).getaver()<<endl; break; case '7':/查看排名信息 int t;stu b; cout<<"所有学生排名如下:"<<endl; for(int x=0;x<i-1;x+) t=x; for(int y=x+1;y<i;y+) i
27、f(st->getsum()<(sy->getsum() t=y; if(t!=x) b=*sx; *sx=*st; *st=b; if(i=0) cout<<"没有录入数据或者数据已被删除!" for(int k=0;k<i;k+) cout<<k+1<<" "<<"姓名:"<<" "<<sk->name<< "语文:"<<" "<<sk
28、->chinese<<"数学:"<<" "<<sk->math <<"外语:"<<" "<<sk->english<<"总分:"<<" "<<sk->getsum() <<"平均分:"<<" "<<sk->getaver()<<endl; break;
29、case '8': int t;stu b; cout<<"所有学生语文排名如下:"<<endl; for(int x=0;x<i-1;x+) t=x; for(int y=x+1;y<i;y+) if(st->chinese)<(sy->chinese) t=y; if(t!=x) b=*st; *st=*sx; *sx=b; if(i=0) cout<<"没有录入数据或者数据已经被删除!" for(int k=0;k<i;k+) cout<<k+1&l
30、t;<" "<<"姓名:"<<" "<<sk->name<< "语文:"<<" "<<sk->chinese<<endl; break; case '9': int t;stu b; cout<<"所有学生数学排名如下:"<<endl; for(int x=0;x<i-1;x+) t=x; for(int y=x+1;y<i;y+) if(st->math)<(sy->math) t=y; if(t!=x) b=*st; *st=*sx; *sx=b; if(i=0) cout<<"没有录入数据或者数据已经被删除!" for(int k=0;k<i;k+) cout<<k+1<<" "<<"姓名:"<<" "<<sk->name<< "数学:"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 炭极生产工安全技能测试竞赛考核试卷含答案
- 2025年全国计算机等级考试一级计算机基础及MSOffice应用真题与答案
- 2025年监控证考试试题及答案
- 2025年规培结业考试真题及答案
- 2026及未来5年中国枣茶数据监测研究报告
- 2025计算机三级通关题库含完整答案详解(历年真题)
- 2013上半年幼儿教资考试《保教知识与能力》试题及答案-论述及案例分析
- 2025年(网络空间安全)云安全技术试题及答案
- 2026浙江省教师职称考试(数学)历年参考题库含答案详解3卷
- 2026浙江卫生系统招聘考试(中西医结合)历年参考题库含答案详解3卷
- 高磷血症科普
- 设备管理技术培训课件
- 管道焊接专项施工计划
- 集装箱活动板房施工方案
- 一体化消防泵房水池施工方案
- 脊柱骨折的急救处理措施
- 兼职安全员培训证课件
- 中国2型糖尿病运动治疗指南(2024版)
- CJ/T 283-2017偏心半球阀
- 2026届高中语文一轮复习板块五 文言文阅读 考点突破学案27 理解文言实词(一)-词分古今义究源流 (共107张) +学案+练习(含解析)
- 超市员工档案管理制度
评论
0/150
提交评论