




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计报告(2014/2015学年 第 一 学期)题 目:票务管理系统 专 业 理工科强化班 组长 学号姓名 组员 学号姓名 指 导 教 师 指 导 单 位 计算机学院软件教学中心日 期 2014 年 10月 23日 成员分工组长() 主要负责类的建立、车票类链表及链表相关功能的实现和主函数主题的构建,扩展功能的实现,撰写设计报告。组员() 主要负责输入输出流的控制以及文件流的实现,及相关资料的查找与收集,撰写设计报告。组员() 主要负责购票、售票、及改签功能的实现,及对应数据的读写,撰写设计报告。评分细则评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度 简短评语 教师签名: 年 月 日评分等级备注评分等级共五种:优秀、良好、中等、及格、不及格票务管理系统的实现一、 课题容和要求票务管理系统一 课题内容和要求(1)录入班次信息(信息用文件保存number.dat),可随时增加新车次数据(2)浏览班次信息,可显示出所有车次当前状况(显示车辆是否发出的提示信息)。(3)查询路线:可按班次号、终点站查询售票情况。(4)根据发车时间给出顺序的发车时间表,存入文件保存(sort.dat)。(5)售票和退票功能当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新余票数量。退票时,输入退票的班次,当本车次发出前半小时才可以退票,自动更新已售票人数。(6)改签功能改签时,输入改签目标班次,退原来的票,功能实现见上。2、扩展功能要求(1)角色区分:以上的功能(1)只有管理员凭密码才能操作;其余所有的功能管理员和普通访客均可操作。(2)管理员提供密码找回服务。(3)每人限购买一张。二、需求分析票管理系统的功能框架图如图1、2所示。( 1 )提供一个入口,针对用户和管理员,可分别选择登录方式并进行操作。( 2 )通过数据库文件对车票信息与提示信息进行管理、储存、输入和输出;车票管理系统(用户)主菜单浏览总班次信息按发车时间和目的地查询班次按发车时间顺序显示班次购票、退票、改签按目的地查询班次图1功能框架图车票管理系统(管理员)主菜单增加班次信息图2功能框架图三、概要设计 1 主要的类内变量的定义和函数的声明:class chepiaopublic: string CC,QD,ZD; /车票类的数据成员车次,起点站,终点站 int FCSJh,FCSJm,XCSJ,EDZL,YPSL;/车票类的数据成员发车时间(小时)、(分钟)、行车时间、额定载量、余票数量chepiao* left; /链表的指针 chepiao(string A,int AA,int AA2,string AAA,string AAAA,int AAAAA,int AAAAAA,int AAAAAAA) CC=A;FCSJh=AA;FCSJm=AA2;QD=AAA;ZD=AAAA;XCSJ=AAAAA;EDZL=AAAAAA;YPSL=AAAAAAA;left=NULL; chepiao()left=NULL;函数:void Output(); /输出number.dat内容void Output2(); /输出sort.dat内容void Write(chepiao *start); /把内存中的车票信息写入number.datvoid Write2(chepiao *start); /把内存中的车票信息写入sort.datvoid Find(chepiao *start); /按目的地和车次查询车票信息void Sort(chepiao *start); /按发车时间排序车票信息void Buy(chepiao *start); /购票操作void Buy2(chepiao *start); /改签中的购票操作void Refund(chepiao *start); /退票操作void Refund2(chepiao *start); /改签中退票操作void Delete(chepiao *start); /释放内存中车票所占空间void Show1(); /输出欢迎的选择界面void Show2(); /输出用户的选择界面void Shout(); /防“熊孩子”设定void Getpassword(); /读入文件中的密码void Resetpassword(); /将修改的密码重新读入文件储存bool Check(); /是否买过票检查void Setnumber(); /记录买过票的身份证号码string innumber; /记录身份证号bool mp=false; /判断是否能购买string password; /临时储存读入的密码和修改的新密码int sj; /当前的小时数*60+分钟数,用于时间比较int sj2; /车票的发车时间的小时数*60+分钟数,用于时间比较bool gq=false; /用于传递改签过程中第一步购票是否成功的信息string name=admin; /默认的管理员账号string Q1=中国江苏找南邮; /默认的管理员密保问题2 主要函数流程图四、源程序代码 /车票类.h#include #include using namespace std;int sum=0;class chepiaopublic: string CC,QD,ZD; /车票类的数据成员车次,起点站,终点站 int FCSJh,FCSJm,XCSJ,EDZL,YPSL;/车票类的数据成员发车时间(小时)、(分钟)、行车时间、额定载量、余票数量chepiao* left; /链表的指针 chepiao(string A,int AA,int AA2,string AAA,string AAAA,int AAAAA,int AAAAAA,int AAAAAAA) CC=A;FCSJh=AA;FCSJm=AA2;QD=AAA;ZD=AAAA;XCSJ=AAAAA;EDZL=AAAAAA;YPSL=AAAAAAA;left=NULL; chepiao()left=NULL;#include 车票类.h#include #include using namespace std;void Output(); /输出number.dat内容void Output2(); /输出sort.dat内容void Write(chepiao *start) ; /把内存中的车票信息写入number.datvoid Write2(chepiao *start); /把内存中的车票信息写入sort.datvoid Find(chepiao *start); /按目的地和车次查询车票信息void Sort(chepiao *start); /按发车时间排序车票信息void Buy(chepiao *start); /购票操作void Buy2(chepiao *start) ; /改签中的购票操作void Refund(chepiao *start); /退票操作void Refund2(chepiao *start); /改签中退票操作void Delete(chepiao *start); /释放内存中车票所占空间void Show1(); /输出欢迎的选择界面void Show2(); /输出用户的选择界面void Shout(); /防“熊孩子”设定void Getpassword(); /读入文件中的密码void Resetpassword(); /将修改的密码重新读入文件储存bool Check(); /是否买过票检查void Setnumber(); /记录买过票的身份证号码string innumber; /记录身份证号bool mp=false; /判断是否能购买string password; /临时储存读入的密码和修改的新密码int sj; /当前的小时数*60+分钟数,用于时间比较int sj2; /车票的发车时间的小时数*60+分钟数,用于时间比较bool gq=false; /用于传递改签过程中第一步购票是否成功的信息string name=admin; /默认的管理员账号string Q1=中国江苏找南邮;/默认的管理员密保问题int main()Getpassword();int ways;/登陆方式Show1();cinways;if(ways=1) string inname; /键盘输入的管理员账号string inpassword; /用于键盘输入管理员密码string inQ1; /用于键盘输入管理员密保问题char bbb=N; /用于键盘输入是否使用密保问题int aaa=1; /用于循环,每三次密码错误,提示一次是否使用密保问题bool judge=false; /用于判断是否输入正确coutinname;if (inname=name)judge=true;elsewhile(!judge)coutinname;if (inname=name)judge=true;judge=false;coutinpassword;if (inpassword=password)judge=true;elsewhile(!judge)if(aaa%3=0)coutbbb;if(bbb=Y|bbb=y)cout编程技术哪家牛?inQ1;if(inQ1=Q1)cout回答正确!请输入新密码password;Resetpassword();cout请牢记密码endl;break;elsecout密保问题验证失败。endl;coutinpassword;aaa+;/*分割线*/*分割线*ofstream fout(number.dat,ios:out|ios_base:app);/定义输出数据流,以输出方式打开,打开位于文件尾 if(!fout) cerropen error!endl; exit(1); /*分割线*/*分割线*string a,b,c; /用于储存即将输入的车票的车次、起点和重点int d1,d2,e,f,g; /用于储存即将输入的发车时间小时、分钟、行车时间、额定载量、余票数量cout请输入需要增加的车票数i;cout请逐个输入车票的如下信息endl;cout车次发车时间(小时)发车时间(分钟)起点站终点站行车时间额定载量余票数量endl;for(x=0;xad1d2b;cincefg;fouta;fout;foutd1;fout;foutd2;fout;foutb;fout;foutc;fout;foute;fout;foutf;fout;foutg;fout;cout录入成功tm_hour;/得到当前时间的小时int m = newtime-tm_min;/得到当前时间的分钟 sj=60*h+m;/*分割线*/*分割线*ifstream infile(number.dat,ios:out);/定义输入数据流,以输入方式打开if(!infile)cerropen error!y)break;elseq-left=new chepiao 1;sum+;q=q-left;q-CC=y;switch(num%8)case 2:infileq-FCSJh;break;case 3:infileq-FCSJm;break;case 4:infileq-QD;break;case 5:infileq-ZD;break;case 6:infileq-XCSJ;break;case 7:infileq-EDZL;break;case 0:infileq-YPSL;break;infile.close();/关闭文件/*分割线*/*分割线*int yh;/用于读入用户需要的操作的序号while(1)Show2();cinyh;switch (yh)case 1:Output();break;case 2:Find(start);break;case 3:;Sort(start);Write2(start);Output2();break;case 4:if(Check()Buy(start);if(mp)Setnumber();Write(start);break;case 5:Refund(start);Write(start);break;case 6:Buy2(start);if(gq)Refund2(start);Write(start);gq=false;break;case 7:break;default:Shout();system(pause);return 0;if(yh=7)Delete(start);break; return 0;elseShout();system(pause);return 0;/*分割线*/*分割线*void Write(chepiao *start)chepiao *p=start-left; /用于对链表进行操作ofstream fout(number.dat,ios:out|ios:trunc); /定义输出数据流,清空并打开if(!fout)cerropen error!endl;exit(1);while(p!=NULL)foutCCFCSJhFCSJmQDZDXCSJEDZLYPSLleft; fout.close();/关闭文件/*分割线*/*分割线*void Write2(chepiao *start) /本函数内各变量作用同前chepiao *p=start-left;ofstream fout(sort.dat,ios:out|ios:trunc);/定义输入数据流,清空并打开if(!fout)cerropen error!endl;exit(1);while(p!=NULL)foutCCFCSJhFCSJmQDZDXCSJEDZLYPSLleft; fout.close();/关闭文件/*分割线*/*分割线*void Sort(chepiao *start)chepiao* L; /用于链表排序的交换步骤chepiao* M; /用于chepiao* N; /用于int i,j; /用于排序L=start;M=start-left;N=M-left;for(i=0;isum-2;i+)for(j=0;jFCSJh*60)+M-FCSJm)(N-FCSJh*60)+N-FCSJm)if(N-left!=NULL)L-left=N;M-left=N-left;N-left=M;L=N;M=L-left;N=M-left;elseL-left=N;N-left=M;M-left=NULL;continue;elseif(N-left!=NULL)L=M;M=L-left;N=M-left;elsecontinue;L=start;M=L-left;N=M-left;/*分割线*/*分割线*void Output()int j=1,a,b; /j用于记录输出的是第几个数据,用于判断类型;a,b为时间的小时数和分钟数string temp; /用于逐个读出数据ifstream infile(number.dat,ios:out); /定义输入数据流,以输入方式打开if(!infile)cerropen error!temp)break;if(j%8=2)infilea;infileb;j+;couta:;if(b10)cout0;coutb;if(a*60+bsj)cout(此车已发出);elsecout(此车未发出);elsecouttemp;/输出显示if(j%8=0)coutendl;j+;infile.close(); /关闭文件/*分割线*/*分割线*void Find(chepiao *start)chepiao *o;/用于对车票链表操作bool c=false;/用于记录是否找到相应车次string Cc;/用于输入需要寻找的车次或终点站cout请输入车次或终点站:Cc;o=start;o=o-left;while(o)if(o-CC=Cc|o-ZD=Cc)coutCCFCSJhFCSJm10)cout0;coutFCSJm;if(o-FCSJh*60+o-FCSJm)sj)cout(此车已发出);elsecout(此车未发出);coutQDZDXCSJEDZLYPSLleft;if(!c)cout未找到目标车次或终点站。endl;/*分割线*/*分割线*void Output2()/同Output();int j=1,a,b;string temp;ifstream infile(sort.dat,ios:out); /定义输入数据流,以输入方式打开if(!infile)cerropen error!temp)break;if(j%8=2)infilea;infileb;j+;couta:;if(b10)cout0;coutb;if(a*60+bsj)cout(此车已发出);elsecout(此车未发出);elsecouttemp; /输出显示if(j%8=0)coutendl;j+;infile.close(); /关闭文件/*分割线*/*分割线*void Buy(chepiao *start)chepiao *o;/用于对车票链表进行操作string Cc;/用于输入车次bool c=false;/用于记录购买是否成功cout请输入需要买票的车次 Cc;o=start;o=o-left;while(o)if(o-CC=Cc)if(o-FCSJh*60+o-FCSJm)sj)cout发车时间已过,购买失败YPSL=0)cout票已售空,购买失败YPSL=o-YPSL-1;cout购买成功left;if(!c)mp=false;cout未找到目标车次,购买失败endl;/*分割线*/*分割线*void Buy2(chepiao *start)chepiao *o;/用于对车票链表进行操作bool c=false;/用于记录购买是否成功string Cc;/用于输入车次cout请输入需要改签的目标车次 Cc;o=start;o=o-left;while(o)if(o-CC=Cc)if(o-FCSJh*60+o-FCSJm)sj)cout发车时间已过,无法改签YPSL=0)cout目标车次票已售空,无法改签YPSL=o-YPSL-1;cout改签成功,请退原车次车票left;if(!c)cout未找到目标车次tm_hour; /得到当前时间的小时int m = newtime-tm_min; /得到当前时间的分钟int sj=60*h+m; /记录时间的小时数*60+分钟数,用于比较chepiao *o; /用于对车票类链表的操作string Cc; /用于输入退票的车次cout请输入需要退票的车次 Cc;o=start;o=o-left;while(o)if(o-CC=Cc)if(o-FCSJh*60+o-FCSJm)sj+30)cout需要提前半小时办理退票,本次退票失败YPSL=o-YPSL+1;cout退票成功left;/*分割线*/*分割线*void Refund2(chepiao *start)/同Refund()struct tm *newtime;time_t long_time;time( &long_time ); /Get time as long integernewtime = localtime( &long_time ); int h = newtime-tm_hour; /得到当前时间的小时int m = newtime-tm_min; /得到当前时间的分钟int sj=60*h+m;chepiao *o;string Cc;cout请输入需要改签的原车票车次 Cc;o=start;o=o-left;while(o)if(o-CC=Cc)if(o-FCSJh*60+o-FCSJm)sj+30)cout需要提前半小时办理退票,本次退票失败,购票金额无法退还,请使用新车次车票乘车YPSL=o-YPSL+1;cout退票成功left;/*分割线*/*分割线*void Delete(chepiao *start)chepiao *a1;/用于对车票类链表的逐个释放a1=start;for(;start-left=NULL;)for(a1=start;a1-left-left=NULL;)if(a1-left-left!=NULL)a1=a1-left;delete a1-left;/*分割线*/*分割线*void Show1()cout*endl;cout*endl;cout*| 欢迎使用车票管理系统 |*endl;cout*| |*endl;cout*| 请输入登录方式对应的序号: |*endl;cout*| |*endl;cout*| 管理员登陆 |*endl;cout*| |*endl;cout*| 用户登
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 古代文人的社会责任与角色试题及答案
- 2025年执业药师考试核心知识体系及备考策略分析试题及答案
- 学习与实践的结合执业医师考试试题及答案
- 神经内科常见疾病试题及答案
- 全景式学习主管护师试题及答案
- 自考行政管理专科社会责任履行试题答案
- 行政法学新观点分析与试题答案归纳
- 行政管理专业考试准备清单:试题及答案
- 2025年药师考试护理心理学应用试题及答案
- 助力2025年考试的行政法学复习试题及答案
- 2025年云计算与大数据技术考试试题及答案
- 纳西族文化课件
- 水利水电工程技术术语全
- 2024-2025教科版科学一年级下册第二单元测试卷及答案
- 中国共产主义青年团纪律处分条例试行解读学习
- 医疗器械研究报告医疗器械产业现状及未来发展趋势分析报告(2025年)
- 数字孪生技术在智慧能源系统中的挑战与机遇
- 抛石专项施工方案
- 电力增材再造技术的创新与发展
- 话剧导演合同协议
- 客服代理合同协议
评论
0/150
提交评论