还剩25页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
课程设计报告课程名称面向对象程序设计C++设计题目学生管理系统专业计算机科学与技术姓名学号指导教师李晓虹2016年1月6日目录TOC\o1-3\h\z\uHYPERLINK\l_Toc439880236一.系统需求分析3HYPERLINK\l_Toc439880237二.总体设计3HYPERLINK\l_Toc
4398802382.1目的3HYPERLINK\l_Toc
4398802392.2要求3HYPERLINK\l_Toc
4398802402.3信息描述3HYPERLINK\l_Toc
4398802402.4功能描述3
一、系统需求分析学生信息是学校管理中一项繁琐的工作,管理人员需要建立学生的详细情况,包括这些信息的增加、修改及对各项信息的变动都可以在这里进行操作,以及各位同学对以上录入的信息可以跟据自己的需要进行适当的查询为此,设计一套实用的学生信息管理系统就可以大大简化管理人员的工作,也方便学生查询自己的详细信息
二、总体设计
2.1目的
(1)基本掌握面向对象程序设计的基本思路和方法;
(2)达到熟练掌握C++语言的基本知识和技能;
(3)能够利用所学的基本知识和技能,解决简单的程序设计问题
2.2要求基本要求
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中至少要定义三个类,每个类中要有各自的属性和方法;
(4)在系统的设计中,至少要用到面向对象的一种机制创新要求在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能
2.3信息描述学生信息学号、姓名、专业、寝室等
2.4功能描述1使用继承的方法构造2个类(如人员类---基类,普通学生类和管理员类----派生类)使用相应的对象放置相应信息2录入学生信息并保存3按不同类别输出学生信息(如按性别、年龄等)4查询学生信息(以一种或多种方式,如按名字、学号等检索)5修改学生信息并保存6删除学生信息
三、详细设计总体结构我们采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理也可根据自己对题目的理解增加新的功能模块系统以菜单界面方式工作,运行界面友好,演示程序以用户和计算机的对话方式进行首先,看题目要求,每一条记录包括一个学生姓名,班级、性别,院系和各科成绩同时,应具备以下功能
(1)管理员登陆允许管理员登陆并包含如下内容
1、添加信息可以完成对一个学生的信息记录的输入
2、查看所有信息将所有的学生信息显示出来
3、删除信息对指定姓名的学生的信息进行删除
4、查询信息可以多种方式,显示出和输入名字相符的学生信息
5、修改信息对已有的信息进行修改
6、对信息进行存盘上述操作的结果自动存入文件中
7、关闭程序退出学生信息管理系统
(2)学生登陆允许学生登陆并包含如下内容
1、查询信息以登录的学号方式,显示出和输入名字相符的学生信息
2、关闭程序退出学生信息管理系统由于姓名、学号、性别、身份证等是共有的,可以抽取出来形成一个类,这里定义为Information类因此,设计出类和成员为���开始查找�选择查找方式存在�输入查找内容�显示学生信息�不存在时返回查找方式�结束�判断是否存在图3-1查询信息浏览图图3-2功能模块图主页面代码//Show.cpp:implementationoftheShowclass.////////////////////////////////////////////////////////////////////////#includeiostreamusingnamespacestd;#includeShow.h////////////////////////////////////////////////////////////////////////Construction/Destruction//////////////////////////////////////////////////////////////////////Show::Show{}Show::~Show{}/*显示主模版函数*/voidShow::showmain{intmflag=1n=0;do{cout\n\n\t\t学员管理系统平台;cout\n\n\t\t\t\t\t\t\t重庆师范大学endl;cout赵承志,张风采,舒瑞,邓诗杰,唐效益,陈黎俊endl;cout*******\t\t1教师信息\t\t***********endl;cout*******\t\t2学生信息\t\t***********endl;cout*******\t\t3退出\t\t***********endl;cout请选择;cinm;switchm{case1:Show::showT;break;case2:Show::showS;break;case3:flag=0;break;default:cout选项有误,请重新选择!!;}}whileflag;}/*显示学生模版函数*/voidShow::showS{intaflag=1;do{systemcls;cout\n\n\t\t学员管理系统平台;cout\n\n\t\t\t\t\t\t\t重庆工商职业学院;cout\n──────────────────────────────────;cout\n\n\t\t
1.学生信息endl;cout\n\n\t\t
2.成绩查询endl;cout\n\n\t\t
3.退出登录endl;cout\n──────────────────────────────────endl;cout请选择endl;cina;switcha{case1:;break;case2:;break;case3:flag=0;;break;default:cout选项有误,请重新选择!!;}}whileflag;systemcls;}/*显示教师模版函数*/voidShow::showT{intaflag=1;do{systemcls;cout\n\n\t\t学员管理系统平台;cout\n\n\t\t\t\t\t\t\t重庆工商职业学院;cout\n──────────────────────────────────;cout\n\n\t\t
1.教师信息endl;cout\n\n\t\t
2.查询信息endl;cout\n\n\t\t
3.排序endl;cout\n\n\t\t
4.修改信息endl;cout\n\n\t\t
5.退出登录endl;cout\n──────────────────────────────────endl;cout请选择endl;cina;switcha{case1:;break;case2:;break;case3:;break;case4:;break;case5:flag=0;break;default:cout选项有误,请重新选择!!;}}whileflag;systemcls;}学生页面代码//Student.cpp:implementationoftheStudentclass.////////////////////////////////////////////////////////////////////////#includeStudent.h#includeDefine.h#includefstream#includeiostream#includecstdio#includewindows.h#includestdlib.h#includeconio.h#includestringusingnamespacestd;#includeiostream#includefstreamusingnamespacestd;voidshowlook;voidshowS;voidshowinfo;stringuser;//保存用户名,设为全局变量,连接两个函数////////////////////////////////////////////////////////////////////////Construction/Destruction//////////////////////////////////////////////////////////////////////Student::Student{}Student::~Student{}voidStudent::display{cout\t学号\t姓名\t性别\t身份证\t年龄\t电话\t寝室\t专业endl;cout──────────────────────────────────endl;}voidStudent::disp//显示学生信息{cout\tnum\tname\tsex\tid\tage\ttel\tbedroom\tprofessionalendl;}voidStudent::show//显示所以信息{systemcls;cout\n\t\t\t学生信息\n\nendl;stu.display;ifstreamin;in.openstuinfo.txtios::in;whilein.good{innumnamesexidagetelbedroomprofessional;stu.disp;}in.close;cout\n按任意键返回上一层;getch;}voidStudent::dis{coutendl\t\t学号num;cout\t\t姓名name;coutendl\t\t性别sex;cout\t\t身份证id;coutendl\t\t年龄age;cout\t\t电话tel;coutendl\t\t寝室bedroom;cout\t\t专业professional;cout\n──────────────────────────────────endl;}voidStudent::showlogin//登录后的学生信息{systemcls;cout\n\n\t\t学员管理系统平台endl;cout\n\n\t\t\t\t\t\t\t重庆师范大学;cout\n学生信息;cout\n──────────────────────────────────endl;ifstreamin;in.openstuinfo.txtios::in;whilein.good//判断文件指针是否到文件尾{innumnamesexidagetelbedroomprofessional;ifnum==user//判断输入的字符是否与文件中的一样{stu.dis;}}in.close;//关闭文件cout\n按任意键返回上一层endl;getch;showS;}voidStudent::SetS//建立学生信息{charchoose;cout是否现在向文件写入数据(y/n);cinchoose;whilechoose==y||choose==Y{systemcls;ofstreamoutfile;outfile.openstuinfo.txtios::app;cout\t请输入学生信息:\nendl;cout学号;cinnum;cout姓名;cinname;cout性别;cinsex;cout身份证;cinid;cout年龄;cinage;cout电话;cintel;cout寝室;cinbedroom;cout专业;cinprofessional;outfile\nnum\tname\tsex\tid\tage\ttel\tbedroom\tprofessional;outfile.close;//关闭文件cout\n信息已经被保存endl;cout\n是否继续添加信息(y/n);cinchoose;}cout\n\n添加成功endl\n按任意键返回endl;getch;}voidStudent::searchname//按姓名查询{systemcls;cout\t请输入所要查询的学生姓名:;stringname2;cinname2;coutendlendl;ifstreamin;in.openstuinfo.txtios::in;//打开文件,指针在文件头stu.display;whilein.good//判断文件指针是否到文件尾{innumnamesexidagetelbedroomprofessional;ifstu.name==name2//判断输入的字符是否与文件中的一样stu.disp;//如一样的话,显示信息}in.close;//关闭文件cout\n\n按任意键返回上一层endl;getch;showlook;}voidStudent::searchbedroom//按寝室号查询{systemcls;cout\t请输入所要查询的宿舍号:;stringroomnum;cinroomnum;coutendlendl;ifstreamfile;file.openstuinfo.txtios::in;//打开文件,指针在文件头stu.display;whilefile.good//判断指针是否在文件尾{filenumnamesexidagetelbedroomprofessional;ifstu.bedroom==roomnum//判断输入宿舍号是否与文件中的宿舍号一样stu.disp;//如果一样的话,显示信息}file.close;//关闭文件cout\n\n按任意键返回上一层endl;getch;showlook;}voidStudent::searchnum//按学号查询{systemcls;cout\t请输入所要查询的学号:;stringnumber2;cinnumber2;//输入学号coutendlendl;ifstreamfile;file.openstuinfo.txtios::in;//二进制打开文件指针在文件头stu.display;whilefile.good//判断指针是否在文件尾{filenumnamesexidagetelbedroomprofessional;ifstu.num==number2//判断输入的学号是否与文件中的一样stu.disp;}file.close;//关闭文件cout\n\n按任意键返回上一层endl;getch;showlook;}/*voidStudent::paixun//成绩排序信息{intn;inttm;studentdd
[30];ifstreamfile;file.opengrade.txtios_base::in|ios_base::binary;forn=0;n30;n++{file.readreinterpret_castchar*dd[n]sizeofstudent;}file.close;forinti=0;i30;i++forintj=0;j30;j++{ifdd[i].xuefendd[j].xuefen{t=dd[i].xuefen;dd[i].xuefen=dd[j].xuefen;dd[j].xuefen=t;m=dd[i].number;dd[i].number=dd[j].number;dd[j].number=m;}}cout学号学分endl;fori=0;i30;i++coutdd[i].numberdd[i].xuefenendl;};*/voidStudent::Del//删除学生信息{stringno;fstreamfile;fstreamnewfile;/*file.openstuinfo.txtios::in;if!file{cerropenfileerror!;exit1;}cout\t学号\t姓名\t性别\t身份证\t年龄\t电话\t寝室\t专业endl;whilefile.good{filenumnamesexidagetelbedroomprofessional;cout\tnum\tname\tsex\tid\tage\ttel\tbedroom\tprofessionalendl;}file.close;*/cout请输入要删除学生的学号:endl;cinno;file.openstuinfo.txtios::in;newfile.opennewinfo.txtios::out;if!file{cerropenfileerror!\n;exit1;}whilefile.good{filenumnamesexidagetelbedroomprofessional;ifnum!=no{newfileendlnum\tname\tsex\tid\tage\ttel\tbedroom\tprofessional;}}file.close;newfile.close;ofstreamfile2;file
2.openstuinfo.txtios::out;newfile.opennewinfo.txtios::in;whilenewfile.good{newfilenumnamesexidagetelbedroomprofessional;file2endlnum\tname\tsex\tid\tage\ttel\tbedroom\tprofessional;}file
2.close;newfile.close;cout\n\n删除成功\n\n按任意键返回上一层;getch;}voidStudent::Change//修改学生信息{stringnamseiagteroomzyno;fstreamfile;fstreamnewfile;cout请输入要修改学生的学号:endl;cinno;file.openstuinfo.txtios::in;//以输出的方式打开目标文件newfile.opennewinfo.txtios::out;if!file{cerropenfileerror!\n;exit1;}whilefile.good{filenumnamesexidagetelbedroomprofessional;ifnum!=no{newfileendlnum\tname\tsex\tid\tage\ttel\tbedroom\tprofessional;}else{cout\t★请输入修改后的学号;cinno;cout\t★请输入修改后的姓名;cinnam;cout\t★请输入修改后的性别;cinse;cout\t★请输入修改后的身份证;cini;cout\t★请输入修改后的年龄;cinag;cout\t★请输入修改后的电话;cinte;cout\t★请输入修改后的寝室;cinroom;cout\t★请输入修改后的专业;cinzy;newfileendlno\tnam\tse\ti\tag\tte\troom\tzy;cout\n修改学生信息成功!endl;}}file.close;newfile.close;ofstreamfile2;file
2.openstuinfo.txtios::out;newfile.opennewinfo.txtios::in;whilenewfile.good{newfilenumnamesexidagetelbedroomprofessional;file2endlnum\tname\tsex\tid\tage\ttel\tbedroom\tprofessional;}file
2.close;newfile.close;cout\n\n按任意键返回上一层;getch;}voidStudent::login//登陆界面{charusername
[30];//保存用户名charpassword
[30];//保存密码intij;//循环变量intcount=0;//统计登录失败的次数do{systemcls;cout\n\n\t\t学员管理系统平台;cout\n\n\t\t\t\t\t\t\t重庆工商职业学院;cout\n管理员登陆;cout\n──────────────────────────────────;cout\n〖用户登录〗;cout\n\n\t\t用户名;cinusername;//记录用户输入的内容cout\n\n\t\t密码;forj=0;j20;j++{password[j]=getch;ifpassword[j]==\r{password[j]=\0;break;}putch*;}//记录用户输入的密码//验证用户名和密码是否正确ifstrcmpusernameadmin==0strcmppasswordadmin==0//如果用户名与密码都等于”admin”则进入系统的主界面{systemcls;cout\n\n\n\n\n\t\t\t\t正在登录学员管理系统,请稍后!\n;fori=0;i40;i++{Sleep100;cout;}systemcls;cout\n\n\n\n\n\t\t\t\t^_^恭喜您,登录成功!\n;Sleep2000;break;}else{systemcls;cout\n\n\n\n\n\t\t\t\t_对不起,您输入的用户名或密码错误!;Sleep1500;count++;systemcls;}ifcount=3//当错误的次数超过三次,系统自动退出{cout\n\n\t\t\t提示您输入错误的次数太多,请稍后再试!\n;exit0;}}while1;}voidStudent::logins//登陆学生界面{systemcls;charpassword
[20];//保存密码stringword;intijtabteg;//循环变量tab=1;teg=1;//控制循环的选择变量intcount=0;//统计登录失败的次数do{cout\n\n\t\t学员管理系统平台;cout\n\n\t\t\t\t\t\t\t重庆工商职业学院;cout\n学生系统登陆;cout\n──────────────────────────────────;cout\n〖用户登录〗;cout\n\n\t\t用户名;cinuser;//记录用户输入的内容cout\n\n\t\t密码;forj=0;j20;j++{password[j]=getch;ifpassword[j]==\r{password[j]=\0;break;}putch*;}word=password;ifstreamfile;file.openstuinfo.txtios::in;whilefile.good{filenumnamesexidagetelbedroomprofessional;//验证用户名和密码是否正确ifstu.num==userstu.num==word//如果用户名与密码都等于”admin”则进入系统的主界面{systemcls;cout\n\n\n\n\n\t\t\t\t正在登录学员管理系统,请稍后!\n;fori=0;i40;i++{Sleep100;cout;}systemcls;cout\n\n\n\n\n\t\t\t\t^_^恭喜您,登录成功!\n;Sleep2000;tab=0;teg=0;break;}}ifteg==1{systemcls;cout\n\n\n\n\n\t\t\t\t_对不起,您输入的用户名或密码错误!;Sleep1500;count++;systemcls;}file.close;ifcount=3//当错误的次数超过三次,系统自动退出{cout\n\n\t\t\t提示您输入错误的次数太多,请稍后再试!\n;exit0;}}whiletab;}教师页面代码//Teacher.cpp:implementationoftheTeacherclass.////////////////////////////////////////////////////////////////////////#includeTeacher.h#includefstream#includeiostream#includeconio.husingnamespacestd;////////////////////////////////////////////////////////////////////////Construction/Destruction//////////////////////////////////////////////////////////////////////Teacher::Teacher{}Teacher::~Teacher{}voidTeacher::SetT//建立老师信息{systemcls;ofstreamoutT;outT.openteainfo.txtios::out|ios::app;cout工号;cinnum;cout姓名;cinname;cout性别;cinsex;cout身份证;cinid;cout年龄;cinage
[3];cout电话;cintel;cout学历;cinxl;outTnum\tname\tsex\tid\tage\ttel\txlendl;outT.close;}voidTeacher::GetT//得到老师信息{systemcls;cout\n\n\t\t学员管理系统平台endl;cout\n\n\t\t\t\t\t\t\t重庆工商职业学院;cout\n教师信息;cout\n──────────────────────────────────endl;ifstreamfile;file.openteainfo.txtios::in;filenumnamesexidagetelxl;cout\n\t\t学号num;cout\t\t姓名name;cout\n\t\t性别sex;cout\t\t身份证id;cout\n\t\t年龄age;cout\t\t电话tel;cout\n\t\t学历xl;cout\n──────────────────────────────────endl;file.close;cout\n\n\t\t按任意键返回;getch;}
四、系统调试程序代码(查询信息代码)voidStudent::searchname//按姓名查询{systemcls;cout\t请输入所要查询的学生姓名:;stringname2;cinname2;coutendlendl;ifstreamin;in.openstuinfo.txtios::in;//打开文件,指针在文件头stu.display;whilein.good//判断文件指针是否到文件尾{innumnamesexidagetelbedroomprofessional;ifstu.name==name2//判断输入的字符是否与文件中的一样stu.disp;//如一样的话,显示信息}in.close;//关闭文件cout\n按任意键返回上一层endl;getch;showlook;}voidStudent::searchbedroom//按寝室号查询{systemcls;cout\t请输入所要查询的宿舍号:;stringroomnum;cinroomnum;coutendlendl;ifstreamfile;file.openstuinfo.txtios::in;//打开文件,指针在文件头stu.display;whilefile.good//判断指针是否在文件尾{filenumnamesexidagetelbedroomprofessional;ifstu.bedroom==roomnum//判断输入宿舍号是否与文件中的宿舍号一样stu.disp;//如果一样的话,显示信息}file.close;//关闭文件cout\n按任意键返回上一层endl;getch;showlook;}voidStudent::searchnum//按学号查询{systemcls;cout\t请输入所要查询的学号:;stringnumber2;cinnumber2;//输入学号coutendlendl;ifstreamfile;file.openstuinfo.txtios::in;//二进制打开文件指针在文件头stu.display;whilefile.good//判断指针是否在文件尾{filenumnamesexidagetelbedroomprofessional;ifstu.num==number2//判断输入的学号是否与文件中的一样stu.disp;}file.close;//关闭文件cout\n按任意键返回上一层endl;getch;showlook;}查询功能模块效果图:
五、结果分析在程序在录入数据和查询方面还是比较成功的,问题主要出现在修改和删除功能上面而删除则是因为没有了解文件的储存读取过程,无法实现对2个文件的同步操作原因是对文本文件,二进制文件混淆,对文件的录入还缺少理解不过通过实验发现自己的不足,我会去不断学习,加深对不足之处的理解
六、总结该系统是利用面向对象的方法以及C++的编程思想来完成的设计,系统基本要求还是达到的,如根据查询结果进行修改的功能,当然还有很多的不足之处,系统功能不完善首先,dos界面不美观,没windows程序好看,不然谁会对到黑白界面看派生类Teacherprotected:stringxl;//学历public:voidGetT;//得到老师信息voidSetT;//建立老师信息voidshow;//显示所以信息stringpassword;//16位的用户登录派生类Studentprotected:stringbedroom;//寝室号stringprofessional;//专业public:/*voidGetS;//得到学生信息*/voidSetS;//建立学生信息voidDel;//删除学生信息voidChange;//修改学生信息voidsearchname;//按姓名查询voidsearchbedroom;//按寝室查询voidsearchnum;//按学号查询voidpaixun;//对信息进行排序voiddisp;//显示学生信息voiddisplay;//显示导航voidshow;//显示所以信息stringpassword;//16位的用户登录基类Informationstringname;//姓名stringsex;//性别stringnum;//老师工号、学生学号stringid;//身份证stringage;//年龄stringtel;//电话号码stringpassword;//16位的用户登录。