票务管理系统程序设计.docx

上传人:b****2 文档编号:11700193 上传时间:2023-06-02 格式:DOCX 页数:49 大小:474.72KB
下载 相关 举报
票务管理系统程序设计.docx_第1页
第1页 / 共49页
票务管理系统程序设计.docx_第2页
第2页 / 共49页
票务管理系统程序设计.docx_第3页
第3页 / 共49页
票务管理系统程序设计.docx_第4页
第4页 / 共49页
票务管理系统程序设计.docx_第5页
第5页 / 共49页
票务管理系统程序设计.docx_第6页
第6页 / 共49页
票务管理系统程序设计.docx_第7页
第7页 / 共49页
票务管理系统程序设计.docx_第8页
第8页 / 共49页
票务管理系统程序设计.docx_第9页
第9页 / 共49页
票务管理系统程序设计.docx_第10页
第10页 / 共49页
票务管理系统程序设计.docx_第11页
第11页 / 共49页
票务管理系统程序设计.docx_第12页
第12页 / 共49页
票务管理系统程序设计.docx_第13页
第13页 / 共49页
票务管理系统程序设计.docx_第14页
第14页 / 共49页
票务管理系统程序设计.docx_第15页
第15页 / 共49页
票务管理系统程序设计.docx_第16页
第16页 / 共49页
票务管理系统程序设计.docx_第17页
第17页 / 共49页
票务管理系统程序设计.docx_第18页
第18页 / 共49页
票务管理系统程序设计.docx_第19页
第19页 / 共49页
票务管理系统程序设计.docx_第20页
第20页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

票务管理系统程序设计.docx

《票务管理系统程序设计.docx》由会员分享,可在线阅读,更多相关《票务管理系统程序设计.docx(49页珍藏版)》请在冰点文库上搜索。

票务管理系统程序设计.docx

票务管理系统程序设计

 

程序设计报告

(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<<"请牢记密码"<

break;

}

else

{

cout<<"密保问题验证失败。

"<

}

}

}

cout<<"密码错误,请重新输入管理员密码:

";

cin>>inpassword;

aaa++;

}

}

//*****************************分割线**********************************

//*****************************分割线**********************************

ofstreamfout("number.dat",ios:

:

out|ios_base:

:

app);//定义输出数据流,以输出式打开,打开位于文件尾

if(!

fout)

{

cerr<<"openerror!

"<

exit

(1);

}

//*****************************分割线**********************************

//*****************************分割线**********************************

stringa,b,c;//用于储存即将输入的车票的车次、起点和重点

intd1,d2,e,f,g;//用于储存即将输入的发车时间小时、分钟、行车时间、额定载量、余票数量

cout<<"请输入需要增加的车票数"<

intx,i;//用于循环判断是否输入完毕

cin>>i;

cout<<"请逐个输入车票的如下信息"<

cout<<"车次发车时间(小时)发车时间(分钟)起点站终点站行车时间额定载量余票数量"<

for(x=0;x

{

cin>>a>>d1>>d2>>b;

cin>>c>>e>>f>>g;

fout<

fout<<"";

fout<

fout<<"";

fout<

fout<<"";

fout<

fout<<"";

fout<

fout<<"";

fout<

fout<<"";

fout<

fout<<"";

fout<

fout<<"";

}

cout<<"录入成功"<

//*****************************分割线**********************************

//*****************************分割线**********************************

fout.close();//关闭文件

return0;

}

elseif(ways==2)

{

chepiaocp;//车票类链表的第一个空链对象,仅为了便操作,无实际意义

chepiao*start=&cp;//用于储存链表头

chepiao*p=start;//用于对链表进行操作

//*****************************分割线**********************************

//*****************************分割线**********************************

structtm*newtime;//时间类对象

time_tlong_time;

time(&long_time);//Gettimeaslonginteger

newtime=localtime(&long_time);

inth=newtime->tm_hour;//得到当前时间的小时

intm=newtime->tm_min;//得到当前时间的分钟

sj=60*h+m;

//*****************************分割线**********************************

//*****************************分割线**********************************

ifstreaminfile("number.dat",ios:

:

out);//定义输入数据流,以输入式打开

if(!

infile)

{

cerr<<"openerror!

"<

exit

(1);

}

chepiao*q=start;//用于对链表进行操作

intnum=1;//用于记录这是读入的第N个数据,用于判断数据类型

stringy;//用于记录第一个读入的车次

for(;;num++)

{

if(num%8==1)

if(!

(infile>>y))

break;

else

{

q->left=newchepiao[1];

sum++;

q=q->left;

q->CC=y;

}

switch(num%8)

{

case2:

infile>>q->FCSJh;break;

case3:

infile>>q->FCSJm;break;

case4:

infile>>q->QD;break;

case5:

infile>>q->ZD;break;

case6:

infile>>q->XCSJ;break;

case7:

infile>>q->EDZL;break;

case0:

infile>>q->YPSL;break;

}

}

infile.close();//关闭文件

//*****************************分割线**********************************

//*****************************分割线**********************************

intyh;//用于读入用户需要的操作的序号

while

(1)

{

Show2();

cin>>yh;

switch(yh)

{

case1:

Output();break;

case2:

Find(start);break;

case3:

;Sort(start);Write2(start);Output2();break;

case4:

if(Check()){Buy(start);}if(mp){Setnumber();}Write(start);break;

case5:

Refund(start);Write(start);break;

case6:

Buy2(start);if(gq){Refund2(start);}Write(start);gq=false;break;

case7:

break;

default:

Shout();system("pause");return0;

}

if(yh==7)

{

Delete(start);

break;

}

}

return0;

}

else

{

Shout();

system("pause");

}

return0;

}

//*****************************分割线**********************************

//*****************************分割线**********************************

voidWrite(chepiao*start)

{

chepiao*p=start->left;//用于对链表进行操作

ofstreamfout("number.dat",ios:

:

out|ios:

:

trunc);//定义输出数据流,清空并打开

if(!

fout)

{

cerr<<"openerror!

"<

exit

(1);

}

while(p!

=NULL)

{

fout<CC<<""<FCSJh<<""<FCSJm<<""<QD<<""<ZD<<""<XCSJ<<""<EDZL<<""<YPSL<

p=p->left;

}

fout.close();//关闭文件

}

//*****************************分割线**********************************

//*****************************分割线**********************************

voidWrite2(chepiao*start)//本函数各变量作用同前

{

chepiao*p=start->left;

ofstreamfout("sort.dat",ios:

:

out|ios:

:

trunc);//定义输入数据流,清空并打开

if(!

fout)

{

cerr<<"openerror!

"<

exit

(1);

}

while(p!

=NULL)

{

fout<CC<<""<FCSJh<<""<FCSJm<<""<QD<<""<ZD<<""<XCSJ<<""<EDZL<<""<YPSL<

p=p->left;

}

fout.close();//关闭文件

}

//*****************************分割线**********************************

//*****************************分割线**********************************

voidSort(chepiao*start)

{

chepiao*L;//用于链表排序的交换步骤

chepiao*M;//用于

chepiao*N;//用于

inti,j;//用于排序

L=start;

M=start->left;

N=M->left;

for(i=0;i

{

for(j=0;j

{

if(((M->FCSJh*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;

}

else

{

L->left=N;

N->left=M;

M->lef

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2