C++火车票课设.docx

上传人:b****5 文档编号:6102386 上传时间:2023-01-03 格式:DOCX 页数:52 大小:416.41KB
下载 相关 举报
C++火车票课设.docx_第1页
第1页 / 共52页
C++火车票课设.docx_第2页
第2页 / 共52页
C++火车票课设.docx_第3页
第3页 / 共52页
C++火车票课设.docx_第4页
第4页 / 共52页
C++火车票课设.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

C++火车票课设.docx

《C++火车票课设.docx》由会员分享,可在线阅读,更多相关《C++火车票课设.docx(52页珍藏版)》请在冰豆网上搜索。

C++火车票课设.docx

C++火车票课设

面向对象课程设计

火车票务管理系统

一.题目及要求.............................................................................................

2.需求分析

 

1.题目及要求

1.题目

火车票包括硬座硬卧和软卧,实现火车票信息的增加删除修改销售统计查询灯捻功能,程序需以菜单方式工作

2.要求

(1)源文件采用多文件的工程结构

(2)数据存储采用文件形式

(3)标准的C++输入输出

(4)功能完善,适当的注释

(5)关于文件的内容需要自学

 

2.需求分析

系统的要求如下:

需求描述:

1.系统功能

(1)火车信息录入。

包括车次、日期、级别起点、终点、开车时间、行车时间、票价额定载量已订票人数。

数据存入数据文件huoche.txt中。

(2)火车信息浏览

(3)火车信息查询。

按照车次查询

按终点查询

按起点查询

(4)删除火车票信息

(5)修改火车票信息

(6)订购火车票

(7)退还火车票

(8)保存火车票信息

(9)统计

按终点统计车次

按起点统计车次

2.系统主界面应有以下功能选项

录入火车时刻信息

火车信息浏览

查询火车时刻信息

删除火车票信息

修改火车票信息

订购火车票

退还火车票

保存火车票信息

统计火车车次

退出

3.概要设计

1./*头文件*/

#include

#include

#include

#include

#include

2.火车票信息录入类和函数的定义

classTrian_infor

{

intNo;//信息个数

staticintTrian_No;//车次

charjibie[20];//级别

charstart[20];//起点

charend[20];//终点

intdata;//日期

intTrian_order;//订票

intall_tickted;//额定载量

inttickted;//已订票人数

intHour_start,Minute_start,Hour_end,Minute_end;//开车时间(时分)行车时间(时分)

intHour;//时

intMinute;//分

intprice;//票价

public:

Trian_infor*next;

Trian_infor();

~Trian_infor();

intGet_no();

intGet_trian_order();

intGet_data();

intGet_price();

char*Get_jibie();

char*Get_start();

char*Get_end();

intGet_all_tickted();

intGet_tickted();

voidaddr();

voidOrder_tickt(intn);//订票

voidUnorder_tickt(intn);//退票

voidGetTime_start();

voidGetTime_end();

voidShowTime();

voidGetTime();

voidShow_infor();//信息浏览

3.火车票信息实现功能的类

classTrian_link//链表

{

public:

Trian_link(){head=newTrian_infor;head->next=NULL;key=0;}

voidinput();//录入

voidmend();//修改

voidsee();

voiddel();//删除

intfind(Trian_infor**p,intnum,char*pn);

intfind1(Trian_infor**p,intnum,char*pn);

voidfound();//查询

voidtongji();//统计

voidshow();//浏览

voidOrder();//订票

voidUnorder();//退票

voidsave();//保存信息

voidbegin();

voidclear();

charmainmenu();//菜单

intgetkey(){returnkey;}

voidsetkey(intk){key=k;}

private:

Trian_infor*head;

intkey;

};

 

4.详细设计

#include

#include

#include

#include

#include

usingnamespacestd;

classTrian_infor

{

intNo;//信息个数

staticintTrian_No;//车次

charjibie[20];//级别

charstart[20];//起点

charend[20];//终点

intdata;//日期

intTrian_order;//订票

intall_tickted;//额定载量

inttickted;//已订票人数

intHour_start,Minute_start,Hour_end,Minute_end;//开车时间(时分)行车时间(时分)

intHour;//时

intMinute;//分

intprice;//票价

public:

Trian_infor*next;

Trian_infor();

~Trian_infor();

intGet_no();

intGet_trian_order();

intGet_data();

intGet_price();

char*Get_jibie();

char*Get_start();

char*Get_end();

intGet_all_tickted();

intGet_tickted();

voidaddr();

voidOrder_tickt(intn);//订票

voidUnorder_tickt(intn);//退票

voidGetTime_start();

voidGetTime_end();

voidShowTime();

voidGetTime();

voidShow_infor();//信息浏览

voidinput()//信息输入

{

cout<<"按提示输入:

"<

cout<<"输入车次:

";

cin>>Trian_order;

cout<<"输入日期:

";

cin>>data;

cout<<"请输入级别:

";

cin>>jibie;

cout<<"输入票价:

";

cin>>price;

GetTime_start();

GetTime_end();

addr();

cout<<"请输入车的额定载量:

";

cin>>all_tickted;

chara;

cout<<"是否清空售票(y/n)?

"<

cin>>a;

if(a=='y')tickted=0;

}

voidinput(ifstream&is)

{

is>>Trian_order>>data>>jibie>>price>>Hour_start>>Minute_start>>Hour_end>>Minute_end>>start>>end>>all_tickted>>tickted;

is.get();

}

voidoutput()//信息的输出

{

cout<<"\t\t\t列车基本信息如下:

"<

cout<<"车次:

"<

<<"\t日期:

"<

<<"\t级别:

"<

<<"\t票价:

"<

<<"\t发车时间:

"<

"<

<<"\t行车时间"<

"<

<<"\t起点站:

"<

<<"\t终点站:

"<

<<"\t额定载量"<

"<

}

voidoutput(ofstream&os)

{

os<

<

<

<

<

<

<

<

<

<

<

<

<

}

};

intTrian_infor:

:

Trian_No=0;

voidTrian_infor:

:

GetTime_start()//开车时间的输入

{

intNewH=0,NewM=0;

cout<<"请输入开车时间:

"<

cin>>NewH>>NewM;

Hour_start=NewH;

Minute_start=NewM;

}

voidTrian_infor:

:

GetTime_end()//行车时间的输入

{

intNewH=0,NewM=0;

cout<<"请输入行车时间:

"<

cin>>NewH>>NewM;

Hour_end=NewH;

Minute_end=NewM;

}

voidTrian_infor:

:

GetTime()//得时间

{

if(Minute_end>=Minute_start){Minute=(Minute_end-Minute_start);Hour=(Hour_end-Hour_start);}

else{Minute=(Minute_end-Minute_start+60);Hour=(Hour_end-Hour_start-1);}

}

voidTrian_infor:

:

ShowTime()//显示时间

{

cout<

"<

cout<

"<

cout<

"<

}

voidTrian_infor:

:

Show_infor()//显示火车信息

{

cout<

cout<

cout<

cout<

cout<

"<

cout<

"<

cout<

"<

cout<

cout<

cout<

cout<

}

Trian_infor:

:

Trian_infor()//火车信息的个数的加

{

No=Trian_No++;

tickted=0;

}

Trian_infor:

:

~Trian_infor()//火车信息的个数的减

{Trian_No--;}

voidTrian_infor:

:

addr()//输入起点和终点

{

cout<<"请输入起点站:

"<

chara[20];

cin>>a;

strcpy(start,a);

cout<<"请输入终点站:

"<

charb[20];

cin>>b;

strcpy(end,b);

}

intTrian_infor:

:

Get_no()//获得信息个数

{

returnNo;

}

intTrian_infor:

:

Get_trian_order()//获得订票信息

{

returnTrian_order;

}

intTrian_infor:

:

Get_data()//获得日期信息

{

returndata;

}

char*Trian_infor:

:

Get_jibie()//获得级别信息

{

returnjibie;

}

intTrian_infor:

:

Get_price()//获得票价信息

{

returnprice;

}

char*Trian_infor:

:

Get_start()//获得起点信息

{

returnstart;

}

char*Trian_infor:

:

Get_end()//获得终点信息

{

returnend;

}

intTrian_infor:

:

Get_all_tickted()//获得额定载量信息

{

returnall_tickted;

}

intTrian_infor:

:

Get_tickted()//获得已订票认数信息

{

returntickted;

}

voidTrian_infor:

:

Order_tickt(intn)//订票数

{

tickted=tickted+n;

}

voidTrian_infor:

:

Unorder_tickt(intn)//退票数

{

tickted=tickted-n;

};

classTrian_link//链表

{

public:

Trian_link(){head=newTrian_infor;head->next=NULL;key=0;}

voidinput();//录入

voidmend();//修改

voidsee();

voiddel();//删除

intfind(Trian_infor**p,intnum,char*pn);

intfind1(Trian_infor**p,intnum,char*pn);

voidfound();//查询

voidtongji();//统计

voidshow();//浏览

voidOrder();//订票

voidUnorder();//退票

voidsave();//保存信息

voidbegin();

voidclear();

charmainmenu();//菜单

intgetkey(){returnkey;}

voidsetkey(intk){key=k;}

private:

Trian_infor*head;

intkey;

};

voidTrian_link:

:

input()//链接输入

{

Trian_infor*p,*p2=NULL;

p=head;

intn=1;

while(p->next)

p=p->next;

while(n)

{

p2=newTrian_infor;

p2->input();

p->next=p2;

p2->next=NULL;

p=p->next;

Trian_link:

:

setkey

(1);

cout<<"\t\t\t按1继续,按0返回:

";

cin>>n;

}

}

voidTrian_link:

:

Order()//连接订票

{

Trian_infor*p;

cout<<"确定购票(y/n)?

"<

charX;cin>>X;

if(X=='y'){

intnum;

cout<<"\t\t\t输入车次号:

";

cin>>num;

if(!

find1(&p,num,"^"))

{

cout<<"\t\t找不到你要定票的火车的内容!

"<

return;

}

cout<<"输入要定的票数 ";

intn;cin>>n;

p=p->next;

if((p->Get_tickted()+n)<=p->Get_all_tickted())

{p->Order_tickt(n);

cout<<"谢谢使用"<

elsecout<<"对不起,没有足够的票数。

"<

}

elseif(X=='n')cout<<"谢谢使用"<

elsecout<<"输入字符不确定"<

Trian_link:

:

setkey

(1);

}

voidTrian_link:

:

Unorder()//链接退票

{

Trian_infor*p;

cout<<"确定退票(y/n)?

"<

charX;cin>>X;

if(X=='y'){

intnum;

cout<<"\t\t\t输入车次号:

";

cin>>num;

if(!

find1(&p,num,"^"))

{

cout<<"\t\t找不到你要定票的火车的内容!

"<

return;

}

cout<<"输入要退的票数 ";

intn;cin>>n;

p=p->next;

if((p->Get_tickted()-n)>=0)

p->Unorder_tickt(n);

elsecout<<"对不起,数据出错!

"<

}

elseif(X=='n')cout<<"谢谢使用"<

elsecout<<"输入字符不确定"<

Trian_link:

:

setkey

(1);

}

voidTrian_link:

:

found()//查询链接

{

Trian_infor*p;

intnum=-1,n=9;

charname1[20]="";

charname2[20]="";

do

{

cout<<"\t\t1:

按车次查找,2:

按起点点站查找,3:

按终点站查找:

";

cin>>n;

}while(n<1||n>3);

if(n==1)

{

cout<<"\t\t\t输入车次:

";

cin>>num;

}

if(n==2)

{

cout<<"\t\t\t输入起点站:

";

cin>>name1;

}

if(n==3)

{

cout<<"\t\t\t输入终点站:

";

cin>>name2;

}

if(!

find(&p,num,name1))

{

cout<<"\t\t找不到你要查找的内容!

"<

return;

}

}

voidTrian_link:

:

tongji()//统计链接

{

Trian_infor*p;

intnum=-1,n=10;

charname[20]="^";

do

{

cout<<"\t\t1:

按起点统计车次数,2:

按终点统计车次数:

";

cin>>n;

}while(n<1||n>2);

if(n==1)

{

cout<<"\t\t\t输入起点站:

";

cin>>name;

}

if(n==2)

{

cout<<"\t\t\t输入终点站:

";

cin>>name;

}

if(!

find(&p,num,name))

{

cout<<"\t\t找不到你要查找的内容!

"<

return;

}

}

intTrian_link:

:

find(Trian_infor**p1,intnum,char*pn)//查找车次起点终点

{

Trian_infor*p;

p=head;

intt=1;

while(p->next)

{

(*p1)=p;if((p->next)->Get_trian_order()==num||!

strcmp((p->next)->Get_start(),pn)||!

strcmp((p->next)->Get_end(),pn))

{

(p->next)->output();

t=1;

}

p=p->next;

}

returnt;

}

intTrian_link:

:

find1(Trian_infor**p1,intnum,char*pn)//查找车次起点终点

{

Trian_infor*p;

p=head;

intt=0;

while(p->next)

{

(*p1)=p;

if((p->next)->Get_trian_order()==num||!

strcmp((p->next)->Get_start(),pn)||!

strcmp((p->next)->Get_end(),pn))

{return1;}

p=p->next;

}

return0;

}

voidTrian_link:

:

del()//删除链接

{

Trian_infor*p,*p2;

intnum;

cout<<"\t\t\t输入车次号:

";

cin>>num;

if(!

find(&p,num,"^"))

{

cout<<"\t\t找不到你要删除的内容!

"<

return;

}

p2=p->next;

p->next=p2->next;

deletep2;

Trian_link:

:

setkey

(1);

}

voidTrian_link:

:

show()//浏览链接

{

Trian_infor*p;

p=head;

while(p->next)

{

(p->next)->output();

p=p->next;

}

}

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1