车票管理系统Word格式.docx
- 文档编号:18891262
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:22
- 大小:22.62KB
车票管理系统Word格式.docx
《车票管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《车票管理系统Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
//判断当前班次状况函数
intGet_all_tickted(){returnall_tickted;
}//返回额定载量
intGet_tickted(){returntickted;
}//返回已定票人数
intGet_bus_num(){returnnum;
}//返回班次号
stringGet_end();
//返回终点站的字符串
};
classBus_do//信息处理类
Bus_do(){head=newBus_infor;
head->
next=NULL;
g=0;
}//带参数的构造函数
~Bus_do(){deletehead;
}//析构函数
//录入车票信息
voidmend();
//修改车票信息
voiddel();
//删除车票信息
Bus_infor*find(intnum);
//查找函数
Bus_infor*find(stringgold);
voidfound();
//查询车票信息
voidshow();
//显示车票信息
voidOrder();
//定购车票信息
voidUnorder();
//退还车票信息
voidsave();
//保存车票信息
voidbegin();
//初始化车票信息
voidclear();
//清除函数
voidabout();
//关于车票信息
charmainmenu();
//主菜单函数
voidsetg(intk){g=k;
}//设置系统修改标志
intgetg(){returng;
}//返回系统修改标志
boolland();
//管理员登陆
voidselect(int);
//选择功能
private:
intg;
//系统修改标志
Bus_infor*head;
Bus_dod;
voidBus_do:
:
about()//系统说明
system("
cls"
);
//清屏
cout<
<
endl<
"
关于车票管理系统"
endl//以下输出说明内容
<
──────────────────────────────"
endl;
使用说明:
endl
\t1.请按照操作提示正确输入,以保证系统正常运行。
\t2.管理员登陆时,需输入密码。
<
\t3.车票信息保存于本程序目录下,可以参考。
\t4.如果密码输入错误三次则系统自动退出,防止他人乱改信息导致系统瘫痪。
\t5.录入信息后记得保存,系统不会自动保存。
\t6.本系统并非对所有的误输都有恰当的处理,还请按提示输入。
\t7.可以多次订票,班次也可以有多种。
\t8.作者水平不高,还请多提建议,以便日后改进。
}
boolBus_do:
land()//管理员登录
{
Bus_dob;
//定义处理类对象
b.about();
//输出系统说明
strings;
inti=0;
//计数变量
请输入管理员密码:
//输出提示信息
while
(1)
{
cin>
>
s;
if(s=="
123456"
)//输入正确
returntrue;
//返回正确
else//输错了
输入密码错误,请重新输入:
;
i++;
//计数变量自加
if(i>
=3)//连输三次错误
break;
//跳出循环
}
输入错误三次!
系统自动退出!
//提示将退出登录
pause"
//显示暂停
returnfalse;
//返回错误
begin()//文件初始化链表
Bus_infor*p,*p2;
//定义两信息类指针
p=head;
//p指向头结点
ifstreaminfile("
bus.txt"
ios:
in);
//文件以输入方式打开
if(!
infile)//文件打开失败
ofstreamoutfile("
out);
//若无此文件文件以输出方式打开为了建立新文档
outfile.close();
//关闭文件
return;
//函数调用结束
while(!
infile.eof())
{
p2=newBus_infor;
p2->
input(infile);
p->
next=p2;
p2->
p=p->
next;
infile.close();
while(p->
next)
p2=p;
}
select(intk)
chars;
d.begin();
while(k)
{
system("
s=d.mainmenu();
//调用主菜单函数
switch(s)
{
case'
1'
d.input();
//录入车票信息
2'
d.show();
//浏览车票信息
3'
d.found();
//查询车票信息
4'
d.del();
//删除车票信息
5'
d.mend();
//修改车票信息
6'
d.Order();
//保存车票信息
7'
d.Unorder();
//退还车票信息
8'
d.save();
9'
d.about();
break;
//关于车票系统
0'
return;
//退出系统
}
cout<
\n\t\t\t是否返回主菜单?
1┄是0┄不是:
"
cin>
k;
}
voidBus_infor:
input()//无参输入函数用于录入班次信息
请输入班次:
//设置班次
while
(1)
num;
//输入班次
if(cin.fail())//判断输入的数据类型是否有错
cout<
\n班次输入错误,请重新输入:
cin.clear();
//清除错误状态
cin.get();
//重输
elsebreak;
//输入正确则跳出循环
请输入车的额定座位数:
//设置额定座位
all_tickted;
//输入额定座位
\n座位数输入错误,请重新输入:
Go_start();
//调用始发时间函数设置始发时间
cout<
请输入行车时间:
//设置行车时间
GoHour;
\n行车时间输入错误,请重新输入:
请输入起始站:
//设置起始站
start;
\n起点输入错误,请重新输入:
请输入终点站:
//输入终点站
while
(1)
end;
\n终点站输入错误,请重新输入:
}
请输入已售票数:
//输入已售票数
while
(1)
tickted;
if(cin.fail()||tickted>
all_tickted)
\n已售票数输入错误,请重新输入:
input(ifstream&
infile)//带参录入函数向链表输入
infile>
num>
Hour>
Minute>
start>
end>
GoHour>
all_tickted>
output()
num<
\t"
//输出班次
setw
(2)<
setfill('
)<
Hour<
Minute<
//输出时间
start<
end<
GoHour<
\t"
all_tickted<
Go())//调用Go函数判断汽车状态
\t此班已出发"
else
\t此班未出发"
output(ofstream&
outfile)//向文件输出信息
outfile<
setw(6)<
num//setw()设置输出宽度
Hour
Minute
start
setw(8)<
end
GoHour
all_tickted
tickted
Go_start()//设置始发时间
请输入始发时间(时分24h制):
{
cin>
Minute;
if(cin.fail())//判断输入的数据类型是否有错
\n时间输入错误,请重新输入:
}
elseif(Hour<
0||Hour>
24||Minute<
0||Minute>
60)
\n时间格式出错,请重新输入:
//判断时间格式是否出错,小时不能小于0大于24,分钟不能小于0大于60
else
break;
boolBus_infor:
Go()//判断汽车是否发出
structtm*local;
//定义tm结构体指针
time_tt;
//定义time_t类型指针
t=time(NULL);
//初始化为空指针
local=localtime(&
t);
//获取当前系统时间,并赋值给local指针
if(local->
tm_hour<
Hour||(local->
tm_hour==Hour&
&
local->
tm_min<
=Minute))returntrue;
returnfalse;
//返回表示班次已出发
Order_tickt(intn)//订票处理函数
tickted=tickted+n;
//已定票数加上刚定票数
Unorder_tickt(intn)//退票处理函数
tickted=tickted-n;
//已定票数更改
stringBus_infor:
Get_end()//获取终点站
strings=end;
returns;
//返回end
input()//向链表尾部录入车票信息
当前车票销售信息:
Bus_do:
show();
//调用show函数显示当前车辆信息
Bus_infor*p1,*p2=NULL;
//定义对象指针
p1=head;
//将头指针赋给p1
intn=1;
//定义循环控制变量
while(p1->
next)//当头结点后有数据时执行循环,头结点为空也不会执行循环
p1=p1->
while(n){
p2=newBus_infor;
input();
p1->
p2->
p1=p1->
Bus_do:
setg
(1);
\t\t\t按1继续,按0返回:
cin>
n;
if(!
cin)
throwstring("
输入错误"
show()//显示车辆信息
客车基本信息如下:
endl//显示所有车辆信息
班次发车时间起点站终点站行车时间额定载量已定票人数当前状况"
Bus_infor*p;
//定义车辆信息类对象指针
//指向链表头部,启用链表信息
next)//只要下一结点不为空则执行循环
{//此循环功能在于输出所有车辆信息
//P指向下一节点
output();
//调用next所指对象的输出信息函数,头结点未存放数据只是初始化了next
found()//信息分类查找函数
intm,n;
//定义辅助变量
stringgold;
//定义字符串存放终点站
\t\t1:
按班次查找,2:
按终点站查找:
//输入选择
if(!
throwstring("
if(n==1)//表示按班次查找
\t\t\t输入班次:
m;
throwstring("
find(m))//调用find函数查找
\t\t找不到你要查找的内容!
//找不到的话输出相应提示信息
return;
return;
if(n==2)//表示按终点站查找
\t\t\t输入终点站:
gold;
find(gold))//调用find函数,完成查找和输出
{
//输出提示
Bus_infor*Bus_do:
find(intnum)
//定义辅助指针
//指向链表头结点
next)//当链表未至尾部时执行循环
if((p->
next)->
Get_bus_num()==num)//班次匹配上则输出所查到的车辆信息
{
endl//输出车辆信息
<
(p->
//调用输出函数
returnp;
//表示找到,返回的是目标结点的前一结点
//指向下一节点
returnNULL;
find(stringgold)
Get_end()==gold)//班次匹配上则输出所查到的车辆信息
del()//删除车辆信息函数
Bus_infor*p1,*p2,*p3;
//定义两对象指针用于链表操作
intm;
stringgold;
//定义相应变量
\t\t\t输入班次号:
p1=find(m);
//调用查找函数
p1)//判断函数返回值是否为NULL
\t\t找不到你要删除的内容!
//输出没找到的提示
return;
}
\n\t\t\t确定删除(y/n)?
//显示将要删除数据信息供用户核对
chara;
a;
//输入指示
if(a=='
y'
||a=='
Y'
)
{//因为头结点为空仅有next域所以只要考虑被删结点是中间结点和尾结点情况
if((p1->
next==NULL)//目标结点为尾结点时
p2=p1->
//p2指向目标结点
p1->
//p1连接目标结点的next域重新赋值为空指针
deletep2;
//释放目标空间
else
{//目标结点为中间节点时
p3=(p1->
//p3指向目标结点下一结点
next=p3;
//连接目标结点前后结点
//释放目标结点
//标记为修改
mend()//修改函数
cl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 车票 管理 系统