《同学录管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《同学录管理系统课程设计报告.docx(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 计算机系 软件工程课程设计报告题目: 同学录管理系统 班级: 学号: 姓名: 指导老师: 年月日 【实验一列车时刻查询系统注释 】 #include /标准库函数#include/是包含输入输出流的头文件 #include/是对字符串操作的头文件 #include/是包含I/O流控制头文件 #include /是出时间和日期处理函数的头文件#include/它包含了其他Windows头文件 using namespace std;/该指令涵盖了C+标准程序库的任何标识符 class train_infor/定义了一个train类private:/以下定义的为私有的函数 static int
2、train_No;/静态数据成员 char start20;/定义了起始站这个变量 char end20;/定义了终点站这个变量 int train_order; /定义车次这个函数 int Hour_start,Minute_start;/开车的时间 float GoHour;/行车时间 public:/ 以下为共有的函数train_infor();train_infor();train_infor *next;void input();/输入函数 void input(ifstream & is);/将输入的信息放入到文件中 void output();/输出函数 void output(
3、ofstream & os);/将输出的信息放入到文件中 void GetTime_start();/行车起始站函数 bool GetTime();/判断当前车次状况函数,值为true时输出1,值为false时输出0. int Get_train_order() return train_order; /返回班次号 string Get_end()const;/返回行车的终点站的字符串 ;int train_infor:train_No=1;/车辆数变量train_infor:train_infor()/车辆数增加 train_No+; /车辆数自加1 train_infor:train_in
4、for() / 车辆数减少 train_No-; / 车辆数自减1void train_infor:input() / 车次信息输入函数 coutttt按提示输入:endl;couttrain_order;/调用班次函数if (cin.fail()/判断输入的数据类型是否有错 cout n班次输入错误,请重新输入:;/在界面上提示“班次输入错误,请重新输入”cin.clear(); / 消除输入流缓冲区 cin.get(); / 输入字符串,并不从输入流中去掉终结符号 else break;GetTime_start();/行车时间函数coutGoHour;if (cin.fail()/如果输
5、入失败时 cout n行车时间输入错误,请重新输入:;cin.clear();/ 消除输入流缓冲区 cin.get();/ 输入字符串,并不从输入流中去掉终结符号else break;coutstart;cinend;void train_infor:input(ifstream & is) / 创建一个输入的文件类型的引用 istrain_orderHour_startMinute_startstartendGoHour;/将车次、发车时间写入到文件中这里的操作符是重载过的,是写入的功能。is.get(); / 获取文件指针 void train_infor:output()/车次信息输出函
6、数cout train_ordert;if(Minute_start=0) coutHour_start: Minute_start0t;/elsecoutHour_start: Minute_startt;/coutstarttend tGoHour; if(!GetTime()coutt 此班列车已出发endl;elsecoutt 此班列车未出发endl;void train_infor:output(ofstream & os) / 创建一个输出的文件类型的引用 ossetw(6)train_order/设置输出班次的宽度 setw(15)Hour_start / 设置输出开车时间/小时
7、的宽度setw(15)Minute_start / 设置 输出开车时间/分钟的宽度setw(15)start /设置输出起始站的宽度setw(6)end /设置输出终点站的宽度setw(15)GoHour / 设置输出运行时间的宽度endl; /setw()设置输出宽度void train_infor:GetTime_start()/ 类外定义成员函数GetTime_start()coutHour_startMinute_start;if (cin.fail()/判断输入的数据类型是否有错 cout n时间输入错误,请重新输入:;cin.clear();cin.get();else if(Ho
8、ur_start24|Minute_start60)/判断时间格式是否出错,小时不能小于0大于24,分钟不能小于0大于60couttm_hourtm_hour=Hour_start & local-tm_minnext=NULL;key=0;/带参数的构造函数train_link()delete head; / 析构函数 void input();/录入列车信息 void mend();/修改列车信息 void del();/删除列车信息 int find(train_infor *p,int num,char *pn); / 查找列车信息 void found();/查询列车信息 void
9、show();/显示列车信息 void save();/保存列车信息 void begin();/初始化列车信息 void clear();/清除函数 void about();/ 关于列车信息 char mainmenu();/主菜单函数 void setkey(int k) key=k; /设置系统修改标志 int getkey() return key;/ 返回系统修改标志 private: train_infor *head; /链表指针 int key;/系统修改标志 int password;/管理员登陆标志 ; void train_link:input() / 列车信息输入功能
10、菜单控制 if(password=1)/判断是否为管理员train_infor *p,*p2=NULL;p=head; int n=1; /int n;while(p-next)p=p-next;while(n)p2=new train_infor;p2-input();/P2指针指向input()p-next=p2;p2-next=NULL;p=p-next; / P2指针后移 train_link:setkey(1);coutn;if(!cin)throw string(数据输入错误);elsecoutntt对不起,游客不能录入车票信息endl;void train_link:show()
11、 / 浏览列车信息 cout列车基本信息如下:endl |班次 发车时间 起点站 终点站 行车时间 当前状况 |next)(p-next)-output();p=p-next;void train_link:found() / 查询列车信息的控制 train_infor *p;int num,n;char name20;docoutn;if(!cin)throw string(数据输入错误);while(n2);/设置输入只能为1或者2if(n=1)coutnum;if(!cin)/ 判断输入不为1或者2时throw string(数据输入错误);if(n=2)coutname;if(!fin
12、d(&p,num,name)couttt找不到你要查找的车次,请确定输入信息是否正确!next)(*p1)=p;if( (p-next)-Get_train_order()=num| (p-next)-Get_end()=pn )/cout列车基本信息如下:endl |班次 发车时间 起点站 终点站 行车时间 当前状况 |next)-output(); t=1;p=p-next;return t;void train_link:del() / 列车信息删除 if(password=1)/判断是否为管理员train_infor *p,*p2;int num;char name20;coutnum
13、;if(!cin)throw string(数据输入错误);if( !find(&p,num,name) )couttt对不起!找不到你要删除的内容,请确定输入信息是否正确!endl;return;couta;if(a=y|a=Y) p2=p-next;p-next=p2-next;delete p2;train_link:setkey(1);coutnttt信息已删除!;elsecoutnttt取消删除!;elsecoutntt对不起,游客不能删除车票信息endl;void train_link:mend() / 列车信息修改 if(password=1)/判断是否为管理员train_inf
14、or *p;int num;char name20;coutnum;if(!cin)throw string(数据输入错误);if( !find(&p,num,name) )couttt对不起!找不到你要修改的内容,请确认输入信息是否正确!next)-input();train_link:setkey(1);elsecoutntt对不起,游客不能修改车票信息next)(p-next)-output(os);p=p-next;coutttt文件已保存! endl;train_link:setkey(0);elsecoutntt对不起,游客无法保存车票信息endl;void train_link:
15、about() / 列车时刻查询系统说明 coutendl关于列车时刻查询系统endlendl;cout使用说明:endlt1.请按照操作提示输入正确的格式,以保证系统正常运行;endlt2.当使用管理员登陆时,需输入密码,可进行对系统的所有操作;endlt3.当使用游客身份登陆时,无需输入密码,但只能浏览和查询列车时刻信息;endlt4.车票信息用文本文档格式,文件名为train,保存在本程序文件夹目录下,可以直接打开查看.endlendl系统说明:endlt本系统为课程设计作品,可以简易的进行列车时刻查询,欢迎提出意见和建议endl t t endlnum;is.seekg(t);/移动到
16、原来位置 if(numinput(is); / 输入is对象内容 p-next=p2;p2-next=NULL;p=p-next;void train_link:clear()/ 清除班次信息train_infor *p,*p2;p=head-next;while( p )p2=p;p=p-next;delete p2;char train_link:mainmenu()/ 定义主菜单struct tm *local; char s1128;time_t t;t=time(NULL);local=localtime(&t);/获取当前系统时间strftime(s1,128,%Y-%m-%d %
17、H:%M ,local);/按照指定的格式,把时间保存在s1字符串里面string s;coutnn endlendl;cout endl endl 1. 录入列车信息 2. 浏览列车信息 endl 3. 查询列车信息 4. 删除列车信息 endl 5. 修改列车信息 6. 保存列车信息 endl 7. 关于列车时刻查询系统 0. 退出系统 endl endl endlttttt s1endlendl;while(password=0) /身份验证选择管理员或者游客,游客只能查看无其他功能 coutn;if(!cin)throw string(数据输入错误);if(n=1)/判断为管理员时co
18、utm;if(m=123456)/设置管理员登陆密码为123456password=1;coutendl;break;elsecoutntt密码输入不正确nendl;elsepassword=2;/为游客身份标志break;couts;if(s.length()!=1|s09) /s.length()返回字符串的长度,即字符个数 cout输入错误,请重新选择功能按钮: ;elsebreak;return s0;int main()/定义主函数SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
19、FOREGROUND_GREEN|BACKGROUND_BLUE); / 调用windows系统文件改变字体颜色和背景颜色 train_link pp;int k=1;string s;pp.begin();/初始化try while(k=1) system(cls);/清屏 s=pp.mainmenu(); / 调用主菜单函数 switch(s0) case 1:pp.input(); break; /录入列车信息 case 2:pp.show(); break; /浏览列车信息 case 3:pp.found(); break; /查询列车信息 case 4:pp.del(); break
20、; /删除列车信息 case 5:pp.mend(); break; /修改列车信息 case 6:pp.save(); break; /保存列车信息 case 7:pp.about();break; /关于列车时刻查询系统 case 0:k=0;break; /退出系统 if(k=1) coutk; if(!cin)throw string(数据输入错误); if(k=0) if(pp.getkey()=1) coutk; if(!cin)throw string(数据输入错误); if(k=1) pp.save(); pp.clear(); k=0; catch(string s)cout
21、s,为保护系统不崩溃,将自动退出系统!endl;system(pause); return 0; 【实验二同学录管理系统 】目录一实验内容及目的:16二系统设计目标16三实验原理:17四实验方案:171.设计思想172.设计原则173.设计策略18五实验过程:181.系统分析182 系统功能模块设计183 系统流程图19五编码设计22六试验结果与分析22七软件测试:26八实验中遇到的问题及解决方法:26九实验总结:26附录一:软件工程进度安排表26附录二:同学录程序源代码28一实验内容及目的:通过设计一个同学录管理系统,进一步熟悉C+中类的概念、基本知识和技能,类的封装、继承的实现方式。掌握面
22、向对象程序设计的基本思路和方法,并利用所学的基本知识和技能解决简单的面向对象的程序设计问题。了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C+的理解与Visual C+环境的使用:逐步熟悉程序设计的方法,并养成良好的编程习惯。二系统设计目标目标:方便毕业学生的联系,既方便通讯信息录入又方便通讯信息的管理1 从同学录信息录入者的观点看,要求系统能够达到以下目标:1) 对信息的收集和保存信息。例如:同学的基本信息,同学联系方式信息等。2)同学通讯信息的共享。对那些共享的数据要快速的传递,比较原先手写录入同学的通讯信息更为方便快捷。3)提供准确的信息。要求
23、比手工作业提供的更加准确和细致的数据,例如同学的电话等联系方式信息。2 从同学录信息管理者的观点看,要求系统能达到以下的目标:1)通讯信息管理者管理方便,较原先手写通讯录笔记本方便保存管理,数据信息不易丢失。2)有较高的可靠性,学生通讯录信息的输入较原先手写比较不会发生笔误等错误,并具有快速恢复的能力。3)具有较高的运行效率,比人工作业效率有所提高。4)实现学生通讯信息报表的自动生成。5)具有较强的可维护性和扩充性,同时更加方便查询所要查找的同学的通讯信息。三实验原理: C+中类的概念、基本知识和技能,类的封装、继承的实现方式。软件工程的基本设计概念。四实验方案:1.设计思想(1)系统分成几个
24、相对独立的模块,但这些模块都进行集中式管理。(2)分层的模块化程序设计思想,整个系统采用模块化结构设计。作为应用程序有较强的可操作性和扩展性。(3)合理的数据流设计,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。2.设计原则为了使本系统功能齐全完备,操作简便,最大限度的提高软件的质量,从而满足用户的实际需要,在设计开发过程中遵循了如下原则:(1)合法性原则:依据软件开发系统的工作规定以及要求,参照系统设计的工作情况,进行诸如数据录入、添加等工作。(2)实用性原则:适合通讯信息管理工作的实际需求,并能够处理一些特殊情况的要求,此外,尽可
25、能预留空间,以便扩充功能。(3)准确性原则:对输入的相关资料建立检错机制,及时报错,使用户能够及时准确的输入合法资料(如:类型匹配,长度不超限等)。(3)易操作原则:要求设计的系统功能齐全,界面友好,操作方便,必要的地方进行提示。(5)源程序可读性原则:为了便于其他设计,维护人员读懂代码或以后的代码修改,软件升级维护,即可能做好代码注释工作。(6)优化原则:为了达到优化的目的,自定义函数,减少不必要的重复性代码,使程序简介明了,也方便了将来的维护。3.设计策略本系统的设计的结构是采用分模块化的思想,将学生通讯录管理系统分为信息录入者和信息管理者两个大的方面,再在各个方面设计功能模块,具体实施对
26、系统功能的实现。对高层模块,将使用以事务为中心的设计策略,把一个的复杂的系统逐步分解成较小的相对简单,易操作的简便功能模块;对低层模块,采用以多要求为中心的设计策略即实现同一种功能可以采用不同的实现路径。此外,为了提高模块的可读性,对于部分功能代码注解和分块,从而既实现功能函数的独立性和程序的可读性,使系统具有很高的可修改性,得以系统能够更加的完善。五实验过程: 1.系统分析 根据设计需求,系统包括的功能模块有主菜单模块,新增信息,删除信息,修改信息,查询信息,保存信息,预览信息,清空同学录,统计信息 八个模块。各模块的功能描述:1.主菜单模块,是用于控制整个系统的正常运行。2.新增信息是用于在程序开始的时候输入学生的基本信息。3.删除信息是为了方便用户删除无用信息。4.修改信息是对已录入信息进行修改。5.查询信息是为了使用户方便的查询学生的各信息。6.保存信息是将新增的学生信息保存到同学录中,以方便其他功能的实现。 7.预览信息直观表述所有已输入信息。8.清空同学录是将所有已录入的学生信息删除。9.统计信息是将学生信息进行分类统计,方便用户查看。 2 系统功能模块设计系统的整体