




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1系统概述1.1功能简介本软件是一个简单的学校学生信息管理系统,软件窗口为DOS页面。学生信息管理系统的功能主要是实现学校学生的信息化管理。通过学生信息管理系统,教学管理人员可以实现对学生信息的增加、删除、修改和查询等操作。本系统最大的优点就是操作简便快捷等。1.2设计思路将学生信息定义为一个student类,在类中包含私有数据成员char stuNo10; /学号char name20; /姓名int age; /年龄float Math; /数学float English; /英语float Physics; /物理float total; /总成绩然后定义了一个( ) 菜单函数,使功能菜
2、单显示在运行窗口以提示用户如何进行操作。主函数是一个程序必不可少的,在主函数中,使用一个switch语句来选择调用主菜单中的各个功能函数。1.3 结构图 主菜单查看某个学生成绩查看成绩单修改学生成绩登记学生成绩查找学生信息浏览学生信息删除学生信息修改学生信息创建或录入学生信息2系统功能的分析和设计2.1初始录入功能此函数实现的功能主要是,对学生信息的初始化录入功能,在初始时,文件中没有任何数据,可以通过此函数输入任意个学生的信息,输入信息之前需先输入学生的个数在此函数中使用文件处理的方式,先建立一个文件输出流对象,以写的方式打开stu.txt文件,使输入的学生信息都写入文件。2.2添加函数此函
3、数实现的功能主要是,添加学生的信息,调用一次这个函数可以选择添若干个学生的信息。在此函数中也使用文件处理的方式,但使用的是以追加的方式打开文件,使输入的学生信息写在文件里原有信息的后面。2.3删除函数 此函数实现的功能主要是,删除一个学生的信息。在此函数中,先以读的方式打开文件,读出文件里的信息在显示在屏幕上,用户再根据提示信息输入想要删除第几个人的信息,关闭文件。再以写的方式打开文件,以一个if条件语句控制,再重新将学生信息写入文件(除了打算删除的那个学生的信息),由于是以写的方式打开的文件,所以文件里原有的输入就都没有了,存入的新的数据。2.4修改函数 此函数实现的功能主要是,修改一个学生
4、的信息。此函数的设计方法和删除函数的设计思想相类似,应用的思想都是将学生信息重新写入文件的方法,将原有数据覆盖。2.5查询函数 在查询功能中,可以按多条件查询,本系统分为两个查询条件,即按学号查询和按姓名查询。使用if语句来选择查询条件。 2.5.1按学号查询 根据提示信息输入学号后,然后使用一个for循环语句,从第一个学生开始检索,如果该学生的学号和输入的学号相等,则输出该学生的信息,由于学生的学号是唯一固定的,所以并使用break语句跳出循环。 当无查询结果时,会输出一条提示信息“无此人信息!” 。 2.5.2按姓名查询 根据提示信息输入姓名后,然后使用一个for循环语句,从第一个学生开始
5、检索,如果该学生的姓名和输入的姓名一样,则输出该学生的信息,由于学生的姓名有可能重复出现,所以不能使用break语句跳出循环,应该从第一个学生开始检索直到最后一名学生。 当无查询结果时,会输出一条提示信息“无此人信息!” 。2.6显示函数 此函数实现的功能主要是,显示所有学生的信息。先是从文件中读取学生信息,然后在输出到显示窗口中。用一个for循环语句,来把所有学生的信息都输出。2.7退出系统 当输入“0”时,就能退出系统,这是通过while语句来控制实现的。3调试及运行结果3.1 主菜单3.2创建或录入学生信息3.3修改学生信息3.4删除学生信息3.5浏览学生信息3.6查找学生信息3.7登记
6、成绩3.8修改成绩3.9查看成绩单3.10查看某个学生成绩总结4.1遇到的问题及解决方法 首先,是对文件的处理不够熟练,通过看书和搜集一些资料解决了这个问题;其次,是在编写程序的过程中出现了一些语法错误,后通过调试逐一解决。4.2收获和体会此次c+面向对象课程设计,在指导教师的精心教导下,我们学会了如何用C+编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对
7、C+语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献 1元芳,王亮编著c+程序设计,北京,清华大学出版社,2013年。附录#include"iostream"#include"iomanip"/它是I/O流控制头文#include"stdio.h"#include"stdlib.h"/包含了C语言的一些函数#include"string.h&q
8、uot;# define SPACE " "using namespace std;struct studentRecord char stuNo20; /学号 char name20; /姓名 int age; /年龄 float Math; /数学 float English; /英语 float Physics; /物理 float total; /总成绩*p;void shujucharu ();/数据插入void shujuxiugai ();/数据修改void shujushanchu ();/数据删除void shujuliulan ();/数据浏览(按学号排
9、序)void chengjidengji ();/学生成绩登记void chengjixiugai ();/学生成绩修改void viewTable ();/学生成绩查看(按成绩排名)void inquiry ();/成绩查询void write ();/文件写入void read ();/文件读取int line ();/文件中记录学生的数目int i,n;bool y;void main()int a,b;cout<<SPACE<<"-欢迎登陆学生成绩管理系统-"<<endl<<endl<<endl;cout&
10、lt;<"请选择功能模块:"<<endl;cout<<endl;cout<<"=<菜单>="<<endl;cout<<endl; cout<<SPACE<<" 1 创建或录入学生信息 "<<endl;cout<<SPACE<<" 2 修改学生信 息 "<<endl;cout<<SPACE<<" 3 删除学生信 息 "<
11、<endl;cout<<SPACE<<" 4 浏览学生信 息 "<<endl;cout<<SPACE<<" 5 查找学生信 息 "<<endl;cout<<SPACE<<" 6 登 记 成 绩 "<<endl;cout<<SPACE<<" 7 修 改 成 绩 "<<endl;cout<<SPACE<<" 8 查 看成 绩 单 &quo
12、t;<<endl; cout<<SPACE<<" 9 查看某个学生成绩 "<<endl; cout<<SPACE<<" 0 退出 "<<endl;cout<<"-"<<endl;cout<<"请输入您的选择:"cin>>a;system("cls");if(a=1|a=0) y=1; if(y=0) cout<<"请先录入学生信息,才能进行下面
13、的操作!"<<endl;a=1;y=1;while(a)switch(a)case 1: shujucharu(); break; case 2: shujuxiugai (); break; case 3: shujushanchu (); break; case 4: cout<<"=<浏览学生信息>="<<endl;cout<<endl;cout<<SPACE<<" 1、按学号排序浏览 "<<endl;cout<<SPACE<
14、<" 2、按成绩排序浏览 "<<endl;cout<<SPACE<<" 3、退出 "<<endl;cout<<"-"<<endl;cin>>b;system("cls");while(b!=3)switch(b)case 1: shujuliulan(); break;case 2: viewTable(); break;default: cout<<"请输入1-3之内的数!"<<e
15、ndl;cout<<endl<<endl<<"按任意数字键返回浏览界面."<<endl;int k;cin>>k;system("cls");cout<<"=<浏览学生信息>="<<endl;cout<<endl;cout<<SPACE<<" 1、按学号排序浏览 "<<endl;cout<<SPACE<<" 2、按成绩排序浏览 "
16、<<endl;cout<<SPACE<<" 3、退出 "<<endl;cout<<"-"<<endl;cin>>b;system("cls");break;case 5: inquiry (); break; case 6: chengjidengji(); break;case 7: chengjixiugai (); break; case 8:cout<<"=<查看成绩单>="<<endl;
17、cout<<endl;cout<<SPACE<<" 1、按学号排序浏览 "<<endl;cout<<SPACE<<" 2、按成绩排序浏览 "<<endl;cout<<SPACE<<" 3、退出 "<<endl;cout<<"-"<<endl;cin>>b;system("cls");while(b!=3)switch(b)case 1: sh
18、ujuliulan(); break;case 2: viewTable(); break;default: cout<<"请输入1-3之内的数!"<<endl;cout<<endl<<endl<<"按任意数字键返回浏览界面."<<endl;int k;cin>>k;system("cls");cout<<"=<查看成绩单>="<<endl;cout<<endl;cout<<
19、;SPACE<<" 1、按学号排序浏览 "<<endl;cout<<SPACE<<" 2、按成绩排序浏览 "<<endl;cout<<SPACE<<" 3、退出 "<<endl;cout<<"-"<<endl;cin>>b;system("cls");break;case 9: inquiry (); break;default: cout<<"
20、;输入无效,请输入0-9之内的数!"<<endl;cout<<endl<<endl<<"按任意数字键返回菜单界面."<<endl;int k;cin>>k;system("cls");cout<<"=<菜单>="<<endl;cout<<endl; cout<<SPACE<<" 1 创建或录入学生信息 "<<endl;cout<<SPACE
21、<<" 2 修改学生信 息 "<<endl;cout<<SPACE<<" 3 删除学生信 息 "<<endl;cout<<SPACE<<" 4 浏览学生信 息 "<<endl;cout<<SPACE<<" 5 查找学生信 息 "<<endl;cout<<SPACE<<" 6 登 记 成 绩 "<<endl;cout<<
22、SPACE<<" 7 修 改 成 绩 "<<endl;cout<<SPACE<<" 8 查 看成 绩 单 "<<endl; cout<<SPACE<<" 9 查看某个学生成绩 "<<endl; cout<<SPACE<<" 0 退出 "<<endl;cout<<"-"<<endl;cout<<"请输入您的选择:"
23、;cin>>a;system("cls");/1.文件写入void write ()FILE * fp;if(fp=fopen("stu.txt","w")!=NULL) for(i=0;i<n;i+)fprintf(fp,"%s %s %d %f %f %f %fn",pi.stuNo,,pi.age,pi.Math,pi.English,pi.Physics,pi.total);fclose(fp);elseprintf("文件打开或创建发生错误。n");/2
24、.文件读取void read ()FILE * fp;if(fp=fopen("stu.txt","r")!=NULL)n=line();p=new struct studentRecord n;for(i=0;i<n;i+)fscanf(fp,"%s %s %d %f %f %f %f",pi.stuNo,,&pi.age,&pi.Math,&pi.English,&pi.Physics,&pi.total);fclose(fp);elsecout<<"
25、;文件打开或创建发生错误!"<<endl;/3.文件中记录学生的数目int line ()char c; int h=0;FILE * fp; if(fp=fopen("stu.txt","r")!=NULL) while(c=fgetc(fp)!=EOF)if(c='n')h+;fclose(fp);elsecout<<"文件打开或创建发生错误n"return h;/4.成绩查询void inquiry ()read();char b20;int m;cout<<&quo
26、t;请选择查询方式"<<endl;cout<<SPACE<<"1.学号查询"<<endl;cout<<SPACE<<"2.姓名查询"<<endl;cin>>m;if(m=1|m=2)if(m=1)cout<<"请输入学号:"cin>>b;system("cls");for(i=0;i<n;i+)if(strcmp(pi.stuNo,b)=0) cout<<endl<
27、;<" 学号:"<<pi.stuNo<<"n"<<" 姓名:"<<<<"n"<<" 年龄:"<<pi.age<<"n"<<" 数学:"<<pi.Math<<"n"<<" 英语:"<<pi.English<<"n"
28、<<" 物理:"<<pi.Physics<<"n"<<" 总分:"<<pi.total<<endl;break;if(m=2)cout<<endl<<SPACE<<"请输入姓名进行查询:"cin>>b;system("cls");for(i=0;i<n;i+) if(strcmp(,b)=0)cout<<endl<<" 学号
29、:"<<pi.stuNo<<"n" <<" 姓名:"<<<<"n" <<" 年龄:"<<pi.age<<"n" <<" 数学:"<<pi.Math<<"n" <<" 英语:"<<pi.English<<"n" <<&
30、quot; 物理:"<<pi.Physics<<"n" <<" 总分:"<<pi.total<<endl;elsecout<<"输入错误,请输入1或2"<<endl;/5.数据插入void shujucharu ()FILE * fp;if(fp=fopen("stu.txt","a+")!=NULL)/以追加方式打开stu.txt文档int n;cout<<"请输入需要插入的学生
31、数目:"cin>>n;p=new struct studentRecord n;/建立新节点if(n=0)cout<<SPACE<<"没有进行数据插入"<<endl;for(int i=0;i<n;i+)cout<<"请输入插入的第"<<i+1<<"个学生的学号:" /输入cin>>pi.stuNo; cout<<endl<<SPACE<<" 姓名:" cin>&
32、gt;; cout<<endl<<SPACE<<" 年龄:"cin>>pi.age; pi.Math=0;pi.English=0; pi.Physics=0; pi.total=0;for(i=0;i<n;i+) /输出fprintf(fp,"%s %s %d %f %f %f %fn",pi.stuNo,,pi.age, pi.Math,pi.English,pi.Physics,pi.total);fclose(fp);delete p;/程序用delete 删除数组
33、并释放内存elseprintf("文件打开或创建时发生错误.n");/6.数据修改void shujuxiugai ()read();shujuliulan();char b20;cout<<endl<<SPACE<<"请输入需要修改信息学生的学号:" /按学号查找进行修改cin>>b;for(i=0;i<n;i+)if(strcmp(pi.stuNo,b)=0) / 判断字符串b和字符串pi.stuNo是否相等cout<<"该学生原始信息如下:"<<end
34、l; cout<<endl<<pi.stuNo<<"t"<<"姓名:"<<<<"t"<<"数学成绩:"<<pi.Math<<"t"<<"英语成绩:"<<pi.English<<"t"<<"物理成绩:"<<pi.Physics<<"t&q
35、uot;<<"总分:"<<pi.total<<endl;cout<<endl<<"请重新输入该学生的信息:"<<endl;cout<<endl<<SPACE<<" 学号:" cin>>pi.stuNo;cout<<endl<<SPACE<<" 姓名:" cin>>;cout<<endl<<SPACE<<
36、;" 年龄:" cin>>pi.age;cout<<"修改成功!"<<endl;break;if(i>=n&&(strcmp(pi.stuNo,b)!=0)cout<<endl<<SPACE<<"该学号不存在!"<<endl;cout<<endl<<SPACE<<"请输入需要修改信息学生的姓名进行查找修改!"<<endl; /按姓名查找进行修改cout<&l
37、t;endl<<SPACE<<"请输入姓名:"cin>>b;for(i=0;i<n;i+)if(strcmp(,b)=0) cout<<endl<<SPACE<<"该学生原始信息如下:"<<endl; cout<<endl<<pi.stuNo<<"t"<<"姓名:"<<<<"t"<<"数
38、学成绩:"<<pi.Math<<"t"<<"英语成绩:"<<pi.English<<"t"<<"物理成绩:"<<pi.Physics<<"t"<<"总分:"<<pi.total<<endl;cout<<endl<<"请重新输入该学生的信息:"<<endl;cout<<e
39、ndl<<" "<<" 学号:"cin>>pi.stuNo; cout<<endl<<SPACE<<" 姓名:" cin>>; cout<<endl<<SPACE<<" 年龄:" cin>>pi.age; cout<<endl<<SPACE<<"数学成绩:" cin>>pi.Math; cout<&
40、lt;endl<<SPACE<<"英语成绩:" cin>>pi.English; cout<<endl<<SPACE<<"物理成绩:" cin>>pi.Physics; pi.total=pi.Math+pi.English+pi.Physics;cout<<"修改成功!"<<endl; break;if(i>=n&&(strcmp(pi.stuNo,b)!=0)cout<<endl<&l
41、t;SPACE<<"该学生姓名不存在!"<<endl;write();/7.按学号排序进行数据浏览void shujuliulan()read ();for(i=0;i<n-1;i+) int k=i;for(int j=i+1;j<n;j+)if(strcmp(pi.stuNo,pj.stuNo)>0)k=j;struct studentRecord t;t=pi;pi=pk;pk=t; cout<<setw(20)<<"学号"<<setw(20)<<"
42、姓名"<<setw(6)<<"年龄"<<setw(6)<<"数学"<<setw(6)<<"英语"<<setw(6)<<"物理"<<setw(8)<<"总分"<<endl;for(i=0;i<n;i+)cout<<setw(15)<<pi.stuNo<<setw(18)<<<<s
43、etw(6)<<pi.age<<setw(6)<<pi.Math <<setw(6)<<pi.English<<setw(6)<<pi.Physics<<setw(8)<<pi.total<<endl;if(i+1)%10=0)cout<<endl<<SPACE<<"按任意数字键继续显示下一屏."<<endl<<endl;int y;cin>>y;system("cls&qu
44、ot;);/8.学生成绩登记void chengjidengji () read();for(i=0;i<n;i+)cout<<endl<<endl<<pi.stuNo<<"t"<<setw(20)<<<<"t"<<"数学成绩:" cin>>pi.Math; cout<<endl<<"t"<<"t"<<"t&qu
45、ot;<<"t"<<"英语成绩:" cin>>pi.English; cout<<endl<<"t"<<"t"<<"t"<<"t"<<"物理成绩:" cin>>pi.Physics; pi.total=pi.Math+pi.English+pi.Physics;if(i+1)%3=0)system("cls");if(
46、i+1)%5=0)cout<<endl<<"是否停止输入Y/N"<<endl; char c; cin>>c; if(c='Y'|c='y') break; if (c='N'|c='n') ;write(); /9.成绩修改void chengjixiugai() read();shujuliulan();char b20;cout<<endl<<"请输入需要修改成绩的学生的学号:" cin>>b;for(
47、i=0;i<n;i+)if(strcmp(pi.stuNo,b)=0)cout<<"该学生的原有成绩如下:"<<endl<<endl;cout<<endl<<pi.stuNo<<"t"<<<<"t"<<"数学成绩:"<<pi.Math<<"t"<<"英语成绩:"<<pi.English<<&
48、quot;t"<<"物理成绩:"<<pi.Physics<<endl;cout<<endl<<"请重新输入该学生的数学成绩:" cin>>pi.Math; cout<<endl<<" "<<"英语成绩:" cin>>pi.English; cout<<endl<<" "<<"物理成绩:" cin>>pi.Physics; pi.total=pi.Math+pi.English+pi.Physics;cout<<"修改成功!"<<endl; break;if(i>=n&&(strcmp(pi.stuNo,b)!=0)cout<<endl<<SPACE<<SPACE<<"该学号不存在!"<<endl;write();/10.按成绩排序进行成绩查看void viewTable()read ();for(i=0;i<n-1;i+) i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 胶合板企业的投资效益分析考核试卷
- 灯具维修与故障排除技巧考核试卷
- 矿石提炼工艺中的安全措施考核试卷
- 《东坡易传》与青年读者的易学文化探索
- 2025网约车租赁合同模板
- 2025年度活动策划合同书模板
- 2025租房合同房屋转租协议书
- 宿迁市第一人民医院物业管理采购项目招标文件
- 素质教育概论题库(完全版答案)
- 全新电影演员合同
- 《消防器材使用教程》课件
- 《小儿静脉穿刺》课件
- DB11-T 212-2024 园林绿化工程施工及验收规范
- 托盘贸易合作合同范例
- 劳动节安全教育家长会
- 品类运营管理
- 用工单位与劳务派遣公司合同
- 我的家乡浙江衢州
- 国家开放大学国开电大《儿童心理学》形考任务+大作业答案
- 股骨下端骨折的临床特征
- 学前儿童卫生与保健-期末大作业:案例分析-国开-参考资料
评论
0/150
提交评论