票务管理方案计划系统程序设计_第1页
票务管理方案计划系统程序设计_第2页
票务管理方案计划系统程序设计_第3页
免费预览已结束,剩余33页可下载查看

下载本文档

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

文档简介

1、!-程序设计报告( 2014/2015 学年 第 一 学期)题目:票务管理系统专业组长学号姓名组员学号姓名理工科强化班指导教师指导单位 计算机学院软件教学中心日期 2014年10 月23 日!-票务管理系统的实现票务管理组长()成员组员()分工组员()一、课评分项遵守机房规章制度题上机时的表现容学习态度和程序准备情况程序设计能力要评团队合作精神分细课题功能实现情况求则算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简短评语评分等级主要负责类的建立、车票类链表及链表相关功能的实现和主函数主题的构建,扩展功能的实现,撰写设计报告。主要负责输入输出流的控制以及文件

2、流的实现,及相关资料的查找与收集,撰写设计报告。主要负责购票、售票、及改签功能的实现,及对应数据的读写,撰写设计报告。优秀良好中等差教师签名:年月 日备注评分等级共五种:优秀、良好、中等、及格、不及格!-系统一 课题内容和要求(1)录入班次信息 ( 信息用文件保存 number.dat),可随时增加新车次数据(2)浏览班次信息 , 可显示出所有车次当前状况( 显示车辆是否发出的提示信息) 。(3)查询路线:可按班次号、终点站查询售票情况。(4)根据发车时间给出顺序的发车时间表,存入文件保存(sort.dat)。(5)售票和退票功能当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售

3、票,自动更新余票数量。退票时,输入退票的班次, 当本车次发出前半小时才可以退票, 自动更新已售票人数。(6)改签功能改签时,输入改签目标班次,退原来的票,功能实现见上。2、扩展功能要求(1)角色区分:以上的功能(1)只有管理员凭密码才能操作;其余所有的功能管理员和普通访客均可操作。(2)管理员提供密码找回服务。(3)每人限购买一张。二、需求分析票管理系统的功能框架图如图1、2 所示。( 1 )提供一个入口,针对用户和管理员,可分别选择登录方式并进行操作。( 2 )通过数据库文件对车票信息与提示信息进行管理、储存、输入和输出;!-车票管理系统(用户)主菜单浏按按按购发目发票览车的车、总时地时退班

4、间查间票次和询顺、信目班序改息的次显签地示查班询次班图 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,intAAAAA,in

5、tAAAAAA,intAAAAAAA)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

6、 *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();/防“

7、熊孩子”设定void Getpassword();/读入文件中的密码void Resetpassword();/将修改的密码重新读入文件储存bool Check();/ 是否买过票检查void Setnumber();/记录买过票的身份证号码string innumber;/ 记录身份证号bool mp=false;/判断是否能购买string password;/临时储存读入的密码和修改的新密码int sj;/ 当前的小时数*60+ 分钟数,用于时间比较int sj2;/ 车票的发车时间的小时数*60+ 分钟数,用于时间比较bool gq=false;/用于传递改签过程中第一步购票是否成功的

8、信息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,

9、int AA,int AA2,string AAA,string AAAA,int AAAAA,int AAAAAA,intAAAAAAA)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(c

10、hepiao *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); / 改签中退票

11、操作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;int sj2;bool gq

12、=false;string name=admin;string Q1= 中国江苏找南邮/记录身份证号/ 判断是否能购买/ 临时储存读入的密码和修改的新密码/当前的小时数*60+ 分钟数,用于时间比较/车票的发车时间的小时数*60+ 分钟数,用于时间比较/用于传递改签过程中第一步购票是否成功的信息/默认的管理员账号;/ 默认的管理员密保问题int main()Getpassword();int ways;/ 登陆方式Show1();cinways;if(ways=1)string inname;string inpassword;string inQ1;char bbb=N;int aaa=1;

13、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;else!-if(aaa%3=0)coutbbb;if(bbb=Y|b

14、bb=y)coutinQ1;if(inQ1=Q1)endl;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;/用于储存即将输入的车票的车次、起

15、点和重点int d1,d2,e,f,g; / 用于储存即将输入的发车时间小时、分钟、行车时间、额定载量、余票数量cout 请输入需要增加的车票数i;cout 请逐个输入车票的如下信息!-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-t

16、m_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:infi

17、leq-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();

18、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

19、*p=start-left;/用于对链表进行操作ofstream fout(number.dat,ios:out|ios:trunc); / 定义输出数据流,清空并打开 if(!fout)cerropen error!endl;exit(1);while(p!=NULL)foutCC FCSJh FCSJm QD ZD XCSJ EDZL YPSLleft;fout.close();/ 关闭文件/*分割线 *!-/*分割线*void Write2(chepiao *start)/本函数内各变量作用同前chepiao *p=start-left;ofstream fout(sort.dat,io

20、s:out|ios:trunc);/ 定义输入数据流,清空并打开 if(!fout)cerropen error!endl;exit(1);while(p!=NULL)foutCC FCSJh FCSJm QD ZD XCSJ EDZL YPSLleft;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

21、(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用于记录输出的是第几个数据,用于判断类型

22、;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 (此车未发出);elsecouttempif(j%8=0)coutendl;/ 输出显示j+;infile.close();/关闭文件/*分割线*/*分割线*v

23、oid 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 (此车未发出);!-coutQDZD XCSJEDZLYPSLleft;if(!c)cout 未找到目标车次或终

24、点站。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+;!-inf

25、ile.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 未找到目标车次,购买失败e

26、ndl;/* /*分割线分割线*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;/ 得到当前

27、时间的小时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 =

温馨提示

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

评论

0/150

提交评论