票务管理系统程序的设计说明.docx
《票务管理系统程序的设计说明.docx》由会员分享,可在线阅读,更多相关《票务管理系统程序的设计说明.docx(44页珍藏版)》请在冰豆网上搜索。
票务管理系统程序的设计说明
程序设计报告
(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主要的类内变量的定义和函数的声明:
classchepiao
{
public:
stringCC,QD,ZD;//车票类的数据成员车次,起点站,终点站
intFCSJh,FCSJm,XCSJ,EDZL,YPSL;//车票类的数据成员发车时间(小时)、(分钟)、行车时间、额定载量、余票数量
chepiao*left;//链表的指针
chepiao(stringA,intAA,intAA2,stringAAA,stringAAAA,intAAAAA,intAAAAAA,intAAAAAAA)
{
CC=A;FCSJh=AA;FCSJm=AA2;QD=AAA;ZD=AAAA;XCSJ=AAAAA;EDZL=AAAAAA;YPSL=AAAAAAA;left=NULL;
}
chepiao()
{
left=NULL;
}
};
函数:
voidOutput();//输出number.dat内容
voidOutput2();//输出sort.dat内容
voidWrite(chepiao*start);//把内存中的车票信息写入number.dat
voidWrite2(chepiao*start);//把内存中的车票信息写入sort.dat
voidFind(chepiao*start);//按目的地和车次查询车票信息
voidSort(chepiao*start);//按发车时间排序车票信息
voidBuy(chepiao*start);//购票操作
voidBuy2(chepiao*start);//改签中的购票操作
voidRefund(chepiao*start);//退票操作
voidRefund2(chepiao*start);//改签中退票操作
voidDelete(chepiao*start);//释放内存中车票所占空间
voidShow1();//输出欢迎的选择界面
voidShow2();//输出用户的选择界面
voidShout();//防“熊孩子”设定
voidGetpassword();//读入文件中的密码
voidResetpassword();//将修改的密码重新读入文件储存
boolCheck();//是否买过票检查
voidSetnumber();//记录买过票的身份证号码
stringinnumber;//记录身份证号
boolmp=false;//判断是否能购买
stringpassword;//临时储存读入的密码和修改的新密码
intsj;//当前的小时数*60+分钟数,用于时间比较
intsj2;//车票的发车时间的小时数*60+分钟数,用于时间比较
boolgq=false;//用于传递改签过程中第一步购票是否成功的信息
stringname="admin";//默认的管理员账号
stringQ1="中国江苏找南邮";//默认的管理员密保问题
2主要函数流程图
四、源程序代码
//车票类.h
#include
#include
usingnamespacestd;
intsum=0;
classchepiao
{
public:
stringCC,QD,ZD;//车票类的数据成员车次,起点站,终点站
intFCSJh,FCSJm,XCSJ,EDZL,YPSL;//车票类的数据成员发车时间(小时)、(分钟)、行车时间、额定载量、余票数量
chepiao*left;//链表的指针
chepiao(stringA,intAA,intAA2,stringAAA,stringAAAA,intAAAAA,intAAAAAA,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
usingnamespacestd;
voidOutput();//输出number.dat内容
voidOutput2();//输出sort.dat内容
voidWrite(chepiao*start);//把内存中的车票信息写入number.dat
voidWrite2(chepiao*start);//把内存中的车票信息写入sort.dat
voidFind(chepiao*start);//按目的地和车次查询车票信息
voidSort(chepiao*start);//按发车时间排序车票信息
voidBuy(chepiao*start);//购票操作
voidBuy2(chepiao*start);//改签中的购票操作
voidRefund(chepiao*start);//退票操作
voidRefund2(chepiao*start);//改签中退票操作
voidDelete(chepiao*start);//释放内存中车票所占空间
voidShow1();//输出欢迎的选择界面
voidShow2();//输出用户的选择界面
voidShout();//防“熊孩子”设定
voidGetpassword();//读入文件中的密码
voidResetpassword();//将修改的密码重新读入文件储存
boolCheck();//是否买过票检查
voidSetnumber();//记录买过票的身份证号码
stringinnumber;//记录身份证号
boolmp=false;//判断是否能购买
stringpassword;//临时储存读入的密码和修改的新密码
intsj;//当前的小时数*60+分钟数,用于时间比较
intsj2;//车票的发车时间的小时数*60+分钟数,用于时间比较
boolgq=false;//用于传递改签过程中第一步购票是否成功的信息
stringname="admin";//默认的管理员账号
stringQ1="中国江苏找南邮";//默认的管理员密保问题
intmain()
{
Getpassword();
intways;//登陆方式
Show1();
cin>>ways;
if(ways==1)
{
stringinname;//键盘输入的管理员账号
stringinpassword;//用于键盘输入管理员密码
stringinQ1;//用于键盘输入管理员密保问题
charbbb='N';//用于键盘输入是否使用密保问题
intaaa=1;//用于循环,每三次密码错误,提示一次是否使用密保问题
booljudge=false;//用于判断是否输入正确
cout<<"请输入管理员账号:
";
cin>>inname;
if(inname==name)
judge=true;
else
{
while(!
judge)
{
cout<<"输入错误,请重新输出管理员账号:
";
cin>>inname;
if(inname==name)
judge=true;
}
}
judge=false;
cout<<"请输入管理员密码:
";
cin>>inpassword;
if(inpassword==password)
judge=true;
else
{
while(!
judge)
{
if(aaa%3==0)
{
cout<<"是否使用密保问题重置密码?
(Y/N)";
cin>>bbb;
if(bbb=='Y'||bbb=='y')
{
cout<<"编程技术哪家牛?
"<cin>>inQ1;
if(inQ1==Q1)
{
cout<<"回答正确!
请输入新密码"<cin>>password;
Resetpassword();
cout<<"请牢记密码"<bre