学生信息管理系统c++课设报告_第1页
学生信息管理系统c++课设报告_第2页
学生信息管理系统c++课设报告_第3页
学生信息管理系统c++课设报告_第4页
学生信息管理系统c++课设报告_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录前言-2概要设计-3详细设计-4原程序清单和执行结果-61. 源程序-62. 执行结果-34 用户使用说明-36 调试与测试-36 总结与体会-36 参考资料-36前言学生信息管理系统,是针对学校人事处的大量业务处理工作而开发的管理软件,是典型的管理信息系统。它是一个教育单位不可缺少的部分,它的内容对于学校管理者来说是至关重要的,能有效的帮助学校和老师掌握学生的情况。在传统模式下利用人工进行学生信息管理,存在着较多的缺点,如:效率底,保密性差,时间一长将产生大量的文件和数据,更不便于查找,更新,维护等。诸如这些情况,令学校管理者对学生的信息管理带来了很大困难,严重影响了教育工作者的工作效率

2、。随着科学技术的不断提高,使用日趋成熟的计算机技术来代替传统的人工模式,来实现学生信息的现代化管理,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生信息进行管理,具有着手工管理所无法比拟的优点。例如:检索迅速、查找方便、易修改、可靠性高、存储量大、数据处理快捷、保密性好、寿命长、成本低等。这些优点能够极大地提高学生信息管理的效率,也是学校实现科学化、正规化管理的重要条件。因此,开发这样一套管理软件成为很有必要的事情。概要设计1、功能模块图学生信息管理系统小学生管理中学生管理中学生管理2、设计思路将学生信息定义为一个per

3、son类,在类中包含数据成员:int num;string name;string sex;int age;int banji;,分别表示学号、姓名、性别、年龄、班级。分别定义小、中、大学三个类为class xiaoxuesheng、class zhongxuesheng、class daxuesheng并继承person类,而后分别为它们一个管理类并定义公有成员函数void Add(); 实现数据添加功能void Show(); 实现数据显示功能 void Search(); 实现数据查询功能void Edit(); 实现数据修改功能void Delete(); 实现数据删除功能void T

4、otal(); 实现数据统计功能void Save(); 实现数据保存功能void Read(); 可从文件中将记录读取到该类的数组中;然后定义了一个主菜单函数和三个分菜单函数,使功能菜单显示在运行窗口以提示用户如何进行操作。主函数是一个程序必不可少的,在主函数中,使用一个switch语句来选择调用主菜单中的各个功能函数。详细设计1、 程序中函数及数据介绍class Person 学生类class zhongxuesheng 中学生类class daxuesheng 大学生类class xiaoxuesheng 小学生类class xiao_Manage 小学生管理类class zhong_M

5、anage 中学生管理类class da_Manage 大学生管理类void xiaoMenu() 小学生管理菜单函数void zhongMenu() 中学生管理菜单函数 void daMenu() 大学生管理菜单函数int main() 主函数2、函数功能介绍2.1显示函数显示保存的数据2.2 添加函数 此函数实现的功能主要是,添加一个学生的信息,也就是说调用一次这个函数只能添加一个学生的信息。在此函数中也使用文件处理的方式,但使用的是以追加的方式打开文件,使输入的学生信息写在文件里原有信息的后面。2.3 删除函数 此函数实现的功能主要是,删除一个学生的信息。在此函数中,先以读的方式打开文件

6、,读出文件里的信息在显示在屏幕上,用户再根据提示信息输入想要删除第几个人的信息,关闭文件。再以写的方式打开文件,以一个if条件语句控制,再重新将学生信息写入文件(除了打算删除的那个学生的信息),由于是以写的方式打开的文件,所以文件里原有的输入就都没有了,存入的新的数据。2.4 修改函数 此函数实现的功能主要是,修改一个学生的信息。此函数的设计方法和删除函数的设计思想相类似,应用的思想都是将学生信息重新写入文件的方法,将原有数据覆盖。2.5 查询函数 在查询功能中,可以按多条件查询,本系统分为两个查询条件,即按学号查询和按姓名查询。使用if语句来选择查询条件。 2.5.1 按学号查询 根据提示信

7、息输入学号后,然后使用一个for循环语句,从第一个学生开始检索,如果该学生的学号和输入的学号相等,则输出该学生的信息,由于学生的学号是唯一固定的,所以并使用break语句跳出循环。 当无查询结果时,会输出一条提示信息“无此人信息!” 。 2.5.2 按姓名查询 根据提示信息输入姓名后,然后使用一个for循环语句,从第一个学生开始检索,如果该学生的姓名和输入的姓名一样,则输出该学生的信息,由于学生的姓名有可能重复出现,所以不能使用break语句跳出循环,应该从第一个学生开始检索直到最后一名学生。 当无查询结果时,会输出一条提示信息“无此人信息!” 。2.6 显示函数 此函数实现的功能主要是,显示

8、所有学生的信息。先是从文件中读取学生信息,然后在输出到显示窗口中。用一个for循环语句,来把所有学生的信息都输出。2.7 退出系统 当输入“0”时,就能退出系统,这是通过while语句来控制实现的。2.8保存函数将输入程序的数据保存到文件中2.9统计函数 根据选择的统计方式,然后使用一个for循环语句,从第一个学生开始检索,如果该学生的信息和选择统计方式一样,则计数变量自增,应该从第一个学生开始检索直到最后一名学生。最后输出结果源程序清单和执行结果1、 源程序#include<iostream>#include<string>#include<fstream>

9、;#include<iomanip>/输入操纵const int TMAX=50;/定义常变量using namespace std;class Personpublic:int num;string name;string sex;int age;int banji;public:Person(int n=0,string nm="",string s="",int a=0,int b=0):num(n),name(nm),sex(s),age(a),banji(b);virtual void Input();/虚函数,派生类中重新定义vi

10、rtual void Output();int GetNum()return num;/获取编号string GetName()return name;/获取姓名;class zhongxuesheng:virtual public Person/声明为虚基类是因为在派生类中只继承一次public:string depart;int spec;int title; int yuwen;int shuxue;int yingyu;int choice1; int choice2;public:zhongxuesheng(int n=0,string nm="",string

11、s="男",int a=0,int b=0,string d="上海路",int sp=0,int t=0,int yw=0,int sx=0,int yy=0):Person(n,nm,s,a,b),depart(d),spec(sp),title(t),yuwen(yw),shuxue(sx),yingyu(yy);void Input()cout<<"请输入学生生学号"<<endl;cin>>num;cout<<"请输入学生名字"<<endl;cin

12、>>name;cout<<"选择性别"cout<<"(1.男 2.女)"<<endl;cout<<"请输入你的选择"<<endl;cin>>choice2;switch(choice2)case 1:sex="男"break;case 2:sex="女"break;default:cout<<"输入错误。"<<endl;break;cout<<"请

13、输入学生年龄"<<endl;cin>>age;cout<<"请输入学生班级"<<endl;cin>>banji;cout<<"选择地址"<<endl;cout<<setw(10)<<"1.上海路"<<setw(10)<<"2.北京东路"<<setw(10)<<"3.北京西路"<<setw(10)<<"

14、;4.顺外路"<<setw(10)<<"5.南京东路"<<setw(10)<<"6.南京西路"<<setw(10)<<"7.解放东路"<<setw(10)<<"8.解放西路"<<setw(10)<<"9.青山湖大道"<<endl;cout<<"请输入你的选择"<<endl;cin>>choice1;s

15、witch(choice1)case 1:depart="上海路"break;case 2:depart="北京东路"break;case 3:depart="北京西路"break;case 4:depart="顺外路"break; case 5:depart="南京东路"break; case 6:depart="南京西路"break; case 7:depart="解放东路"break; case 8:depart="解放西路"br

16、eak; case 9:depart="青山湖大道"break;default:cout<<"输入错误。"<<endl;break;cout<<"地理成绩 "<<endl;cin>>spec;cout<<"历史成绩"<<endl;cin>>title;cout<<"语文成绩 "<<endl;cin>>yuwen;cout<<"数学成绩"

17、;<<endl;cin>>shuxue;cout<<"英语成绩 "<<endl;cin>>yingyu;void Output()cout<<setw(10)<<"学号"<<setw(10)<<"姓名"<<setw(10)<<"性别"<<setw(10)<<"年龄"<<setw(10)<<"班级"

18、<<endl;cout<<setw(10)<<num<<setw(10)<<name<<setw(10)<<sex<<setw(10)<<age<<setw(10)<<banji <<endl;cout<<setw(10)<<"地址"<<setw(10)<<"地理"<<setw(10)<<"历史"<<setw(

19、10)<<"语文"<<setw(10)<<"数学"<<setw(10)<<"英语"<<endl; cout<<setw(10)<<depart<<setw(10)<<spec<<setw(10)<<title<<setw(10)<<yuwen<<setw(10)<<shuxue<<setw(10)<<yingyu<&

20、lt;endl;class daxuesheng:virtual public Person/大学生public:string zzmm;/家庭住址string zc;/专业int choice2;/性别选择int choice1; int yuwen;int shuxue;int yingyu;int dili;int lishi;string lianxi;public:daxuesheng(int n=0,string nm="",string s="男",int a=0,int b=0,string z="",string z

21、c="",int yw=0,int sx=0,int yy=0,int dl=0,int ls=0,string lx=""):Person(n,nm,s,a),zzmm(z),zc(zc),yuwen(yw),shuxue(sx),yingyu(yy),dili(dl),lishi(ls),lianxi(lx);void Input()cout<<"输入学号"<<endl;cin>>num;cout<<"输入名字"<<endl;cin>>na

22、me;cout<<"选择性别"cout<<"(1.男 2.女)"<<endl;cout<<"请输入你的选择"<<endl;cin>>choice2;switch(choice2)case 1:sex="男"break;case 2:sex="女"break;default:cout<<"输入错误。"<<endl;break;cout<<"输入年龄"&

23、lt;<endl;cin>>age;cout<<"请输入学生班级"<<endl;cin>>banji;cout<<"选择地址"<<endl;cout<<setw(10)<<"1.上海路"<<setw(10)<<"2.北京东路"<<setw(10)<<"3.北京西路"<<setw(10)<<"4.顺外路"&

24、lt;<setw(10)<<"5.南京东路"<<setw(10)<<"6.南京西路"<<setw(10)<<"7.解放东路"<<setw(10)<<"8.解放西路"<<setw(10)<<"9.青山湖大道"<<endl;cout<<"请输入你的选择"<<endl;cin>>choice1;switch(choice1

25、)case 1:zzmm="上海路"break;case 2:zzmm="北京东路"break;case 3:zzmm="北京西路"break;case 4:zzmm="顺外路"break; case 5:zzmm="南京东路"break; case 6:zzmm="南京西路"break; case 7:zzmm="解放东路"break; case 8:zzmm="解放西路"break; case 9:zzmm="青山湖大道&

26、quot;break;default:cout<<"输入错误。"<<endl;break;cout<<"输入专业"<<endl;cin>>zc;cout<<"地理成绩 "<<endl;cin>>dili;cout<<"历史成绩"<<endl;cin>>lishi;cout<<"语文成绩 "<<endl;cin>>yuwen;cou

27、t<<"数学成绩"<<endl;cin>>shuxue;cout<<"英语成绩 "<<endl;cin>>yingyu;cout<<"联系电话 "<<endl;cin>>lianxi;void Output()cout<<setw(10)<<"学号"<<setw(10)<<"姓名"<<setw(10)<<"性

28、别"<<setw(10)<<"年龄"<<endl;cout<<setw(10)<<num<<setw(10)<<name<<setw(10)<<sex<<setw(10)<<age<<endl;cout<<setw(10)<<"班级"<<setw(10)<<"地址"<<setw(10)<<"专业&quo

29、t;<<setw(10)<<"地理"<<setw(10)<<"历史"<<endl;cout<<setw(10)<<banji<<setw(10)<<zzmm<<setw(10)<<zc<<setw(10)<<dili<<setw(10)<<lishi<<endl;cout<<setw(10)<<"语文"<<se

30、tw(10)<<"数学"<<setw(10)<<"英语"<<setw(10)<<"联系电话"<<endl;cout<<setw(10)<<yuwen<<setw(10)<<shuxue<<setw(10)<<yingyu<<setw(12)<<lianxi<<endl;class xiaoxuesheng:virtual public Person/小学生p

31、ublic:int yuwen;/语文int yingyu;/英语int shuxue;/数学int choice2;/选择性别public:xiaoxuesheng(int n=0,string nm="",string s="男",int a=0,int b=0,int yw=0,int yy=0,int sx=0):Person(n,nm,s,a),yuwen(yw),yingyu(yy),shuxue(sx); void Input()cout<<"输入学号"<<endl;cin>>num;

32、cout<<"输入姓名"<<endl;cin>>name;cout<<"选择性别"cout<<"(1.男 2.女)"<<endl;cout<<"请输入你的选择"<<endl;cin>>choice2;switch(choice2)case 1:sex="男"break;case 2:sex="女"break;default:cout<<"输入错误。

33、"<<endl;break;cout<<"输入年龄"<<endl;cin>>age;cout<<"输入班级"<<endl;cin>>banji; cout<<"语文成绩"<<endl;cin>>yuwen; cout<<"英语成绩"<<endl;cin>>yingyu; cout<<"数学成绩"<<endl;

34、cin>>shuxue;void Output()cout<<setw(10)<<"职工编号"<<setw(10)<<"姓名"<<setw(10)<<"性别"<<setw(10)<<"年龄"<<setw(10)<<"班级"<<setw(10)<<"语文"<<setw(10)<<"英语&qu

35、ot;<<setw(10)<<"数学"<<endl;cout<<setw(10)<<num<<setw(10)<<name<<setw(10)<<sex<<setw(10)<<age<<setw(10)<<banji<<setw(10)<<yuwen<<setw(10)<<yingyu<<setw(10)<<yingyu<<endl;cl

36、ass xiao_Manage/小学生管理类 xiaoxuesheng zhongTMAX; /TMAX为常量,为数组中可存储的教师记录的最大数;int top; /top表示当前系统中存储的记录个数;public:xiao_Manage()top=0; /初始时记录的个数为0,所以设置top=0;void Add(); /添加;void Show(); /显示; void Search(); /查询;void Edit(); /修改;void Delete(); /删除;void Total(); /统计;void Save(); /保存void Read(); /可从文件中将记录读取到该类

37、的数组中;;void xiao_Manage:Add()/小学生if(top>=TMAX) cout<<"用户已满"<<endl;return; xiaoxuesheng t;/声明对象cout<<"输入新添加的人员的信息"<<endl;t.Input();for(int i=0;i<top;i+)if (t.GetNum()=zhongi.GetNum()/输入的编号与存在的编号比较cout<<"该编号的人员已存在"<<endl;return; zh

38、ongtop=t; top=top+1;cout<<"添加成功!"<<endl;void xiao_Manage:Show()/小学生if(top=0)cout<<"无数据!"<<endl;return;elsefor(int i=0;i<top;i+)zhongi.Output();void xiao_Manage:Search()/小学生if(top=0)cout<<"当前系统中没有存储记录"<<endl;return;int choice;cout&l

39、t;<"请选择查找方式:1.按编号查找 2.按姓名查找."<<endl;cin>>choice;switch(choice)case 1:cout<<"请输入要查找的编号:"<<endl; int num; cin>>num; for(int i=0;i<top;i+)if(zhongi.GetNum()=num) zhongi.Output(); return;cout<<"查无此人!"<<endl; break;case 2:cout&

40、lt;<"请输入要查找的姓名"<<endl; string name;cin>>name; for(int i=0;i<top;i+) if(zhongi.GetName()=name) zhongi.Output();for( i=0;i<top;i+)if(zhongi.GetName()=name)return;cout<<"查无此人!"<<endl; break;default :cout<<"无此选项!请重试!"<<endl;break

41、;void xiao_Manage:Edit()/小学生if(top=0)cout<<"当前系统中没有存储记录!"<<endl;return;int num;cout<<"请输入要查找的教编号:"<<endl;cin>>num; for(int i=0;i<top;i+)if(zhongi.GetNum()=num)cout<<"请对这位教师的信息进行修改:"<<endl;zhongi.Input();cout<<"修改成功

42、"<<endl;return; cout<<"查无此人"<<endl;void xiao_Manage:Delete()/小学生if(top=0) cout<<"当前系统中没有存储记录!"<<endl;return;cout<<"1、按编号查找删除 2、按姓名查找删除"<<endl;int choice;cin>>choice; switch(choice) case 1: cout<<"请输入编号:&quo

43、t;int num; cin>>num; for(int i=0;i<top;i+) if(num=zhongi.num) cout<<"是否确认删除? 1、是 2、否 "<<endl; int choice; cin>>choice; switch(choice) case 1: for(int j=i;j<top-1;j+) zhongj=zhongj+1; cout<<"删除成功!"<<endl; top-; ;break; case 2:return; defau

44、lt:cout<<"无此项,失败!"<<endl;break; return; cout<<"无此人!"<<endl; ;break; case 2: cout<<"请输入姓名:"string name; cin>>name; for(int i=0;i<top;i+) if(name=) cout<<"是否确认删除? 1、是 2、否 "<<endl; int choice; cin>&

45、gt;choice; switch(choice) case 1: for(int j=i;j<top-1;j+) zhongj=zhongj+1; cout<<"删除成功!"<<endl; top-; ;break; case 2:return; default:cout<<"无此项,失败!"<<endl;break; return; cout<<"无此人!"<<endl; break;default:cout<<"没有此项,失败:&

46、quot;<<endl;break;void xiao_Manage:Total()/小学生cout<<"1 按人数统计 2 按性别统计 "<<endl;int choice;cout<<"请输入你的选择"<<endl;cin>>choice;switch(choice)case 1:cout<<"小学生人数为:"<<top<<endl;break;case 2:int a=0,b=0;/分别用于统计男女的人数for(int i

47、=0;i<top;i+)if(zhongi.sex="男") a+;if(zhongi.sex="女") b+;cout<<"男性人数为"<<a<<endl;cout<<"女性人数为"<<b<<endl;break;default:cout<<"输入错误。请重新输入"<<endl;break;void xiao_Manage:Save()/小学生ofstream out("D:ying

48、1.txt",ios:out);/定义文件流对象,打开磁盘文件,ofstream用来支持从磁盘文件的输入if(!out)cout<<"打开失败!"<<endl;return;cout<<"打开成功!"<<endl;for(int i=0;i<top;i+)out<<zhongi.num<<" " <<<<" " <<zhongi.sex<<" &qu

49、ot; <<zhongi.age<<" " <<zhongi.yuwen<<" " <<zhongi.yingyu <<endl;/向磁盘文件输出数据cout<<"写入成功!"<<endl;out.close();void xiao_Manage:Read()/小学生ifstream in("D:ying1.txt",ios:in);/ifstream用来支持向磁盘文件的输出if(!in)cout<<&quo

50、t;打开失败!"<<endl;return;int i=0; while(in>>zhongi.num >>>>zhongi.sex>>zhongi.age >>zhongi.yuwen>>zhongi.yingyu)/当读取成功执行下面的语句zhongi.Output(); i+;top+;in.close();class zhong_Manage zhongxuesheng zhongTMAX; /TMAX为常量,为数组中可存储的教师记录的最大数;int top; /top表

51、示当前系统中存储的记录个数;public:zhong_Manage()top=0; /初始时记录的个数为0,所以设置top=0;void Add(); /添加;void Show(); /显示; void Search(); /查询;void Edit(); /修改;void Delete(); /删除;void Total(); /统计;void Save(); /保存到文件;void Read(); /读取到该类的数组中;;void zhong_Manage:Add()if(top>=TMAX) cout<<"用户已满"<<endl;ret

52、urn; zhongxuesheng t;cout<<"输入新添加的人员的信息"<<endl;t.Input();for(int i=0;i<top;i+)if (t.GetNum()=zhongi.GetNum()cout<<"该编号的人员已存在"<<endl;return; zhongtop=t; top=top+1;cout<<"添加成功!"<<endl;void zhong_Manage:Show()if(top=0)cout<<&quo

53、t;无数据!"<<endl;return;for(int i=0;i<top;i+)zhongi.Output();void zhong_Manage:Search()if(top=0)cout<<"当前系统中没有存储记录"<<endl;return; int choice;cout<<"请选择查找方式:1.按编号查找 2.按姓名查找."<<endl;cin>>choice;switch(choice)case 1:cout<<"请输入要查找的编

54、号:"<<endl; int num; cin>>num; for(int i=0;i<top;i+)if(zhongi.GetNum()=num) zhongi.Output(); return;cout<<"查无此人!"<<endl; break;case 2:cout<<"请输入要查找的姓名"<<endl; string name;cin>>name; for(int i=0;i<top;i+) if(zhongi.GetName()=name

55、) zhongi.Output();for( i=0;i<top;i+)if(zhongi.GetName()=name)return;cout<<"查无此人!"<<endl; break;default :cout<<"无此选项!请重试!"<<endl;break;void zhong_Manage:Edit()if(top=0)cout<<"当前系统中没有存储记录!"<<endl;return;int num;cout<<"请输入要

56、查找的教编号:"<<endl;cin>>num; for(int i=0;i<top;i+)if(zhongi.GetNum()=num)cout<<"请对该生信息进行修改:"<<endl;zhongi.Input();cout<<"修改成功"<<endl;return; cout<<"查无此人"<<endl;void zhong_Manage:Delete()if(top=0) cout<<"当前系统

57、中没有存储记录!"<<endl;return;cout<<"1、按编号查找删除 2、按姓名查找删除"<<endl;int choice;cin>>choice; switch(choice) case 1: cout<<"请输入编号:"int num; cin>>num; for(int i=0;i<top;i+) if(num=zhongi.num) cout<<"是否确认删除? 1、是 2、否 "<<endl; int

58、choice; cin>>choice; switch(choice) case 1: for(int j=i;j<top-1;j+) zhongj=zhongj+1; cout<<"删除成功!"<<endl; top-; ;break; case 2:return; default:cout<<"无此项,失败!"<<endl;break; return; cout<<"无此人!"<<endl; ;break; case 2: cout<&

59、lt;"请输入姓名:"string name; cin>>name; for(int i=0;i<top;i+) if(name=) cout<<"是否确认删除? 1、是 2、否 "<<endl; int choice; cin>>choice; switch(choice) case 1: for(int j=i;j<top-1;j+) zhongj=zhongj+1; cout<<"删除成功!"<<endl; top-; ;b

60、reak; case 2:return; default:cout<<"无此项,失败!"<<endl;break; return; cout<<"无此人!"<<endl; break;default:cout<<"没有此项,失败:"<<endl;break;void zhong_Manage:Total()cout<<"1 按人数统计 2 按性别统计 3 按地址统计 "<<endl;int choice;cout<<"请输入你的选择"<<endl;cin>>choice;switch(choice)case 1:cout<<"中学生人数为:"<&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论