学习目标:
折腾
学习内容:
c语言
学习时间:
暑假
学习产出:
火车票管理系统: 要求用面向对象的方法实现火车票管理系统, 车票信息包
括车次号、 发车时间、 到站时间、 出发地、 到达地、 行车时间、 剩余车票
数、 票价等, 如:
车次 | 发车时间 | 到站时间 | 出发地 | 到达地 | 行车时间 | 剩余车票数 | 票价 |
G6714 | 6:40 | 8:30 | 石家庄站 | 北京西站 | 1时50分 | 9 | 129 |
Z50 | 7:28 | 10:05 | 石家庄站 | 北京西站 | 2时37分 | 18 | 43.5 |
T146 | 7:48 | 11:18 | 石家庄站 | 北京西站 | 3时30分 | 17 | 43.5 |
...... | ...... | ...... | ...... | ...... | ...... | ...... | ...... |
具体实现的管理功能如下:
(1) 录入车次信息(文本文件保存) , 可随机地增加车次数据。
(2) 浏览车次信息, 途径站。
(3) 查询车票: 按照出发地、 到达地查询车次.
(4) 售票功能: 自动更新剩余车票数。
程序所显示的菜单内容如下:
请选择下面的菜单:
1.录入车次信息
2.浏览车次信息
3.查询车票信息
4.售票
5.退出
请选择
#include <iostream>
#include<string.h>
#include<fstream>
using namespace std;
int number;//功能键
int n;//车次的个数
class Ticket
{
public:
char no[10];//车次号
int month;//发车时间
int day;//发车时间
int hour;//发车时间
int minute;//发车时间
char start_station[20];//出发地
char last_station[20];//到达地
float time;//行车时间
int price;//票价
int last_ticket;//剩余车票数
char tu_station[20];//途径站
};
Ticket t[1000];
void menu();//菜单
void chose(int);//功能的选择
void input(Ticket t[]);//录入车次信息,可随机地增加车次数据
void show(Ticket t[]);//浏览车次信息,途径站。
void findtic(Ticket t[]);//查询车票:按照出发地、到达地查询车次.
void selltic(Ticket t[]);//售票功能,自动更新剩余车票数
int main()
{
cout<<"输入车次数:"<<endl;
cin>>n;
while(1)
{
menu();
cin>>number;
chose(number);
}
return 0;
}
void chose(int number)
{
switch(number)
{
case 1:
input(t);// 录入车次信息
break;
case 2:
show(t);//可在最后追加一批学生信息
break;
case 3:
findtic(t);//查询车票信息
break;
case 4:
selltic(t);//售票功能
break;
case 5:
exit(0);//退出
break;
default:
break;
}
}
void menu()//菜单
{
cout<<"\n***********请选择下面的菜单:***********\n";
cout<<"\t 1.录入车次信息\n";//
cout<<"\t 2.浏览车次信息\n";//可在最后追加一批学生信息
cout<<"\t 3.查询车票信息\n";//输入数据
cout<<"\t 4.售票\n";// 按总分降序进行排序
cout<<"\t 5.退出\n";//任意输入一个学号,能显示该学生的基本信息。
cout<<"\t 请选择";
cout<<"\n***************************************\n";
}
void input(Ticket t[])//录入车次信息
{
int k;
cout<<" 录入输1 增加输2 "<<endl;
cin>>k;
if(k==1)
{
for(int i=0; i<n; i++)
{
cout<<"请输入车次号:"<<endl;
cin>>t[i].no;
cout<<"请输入发出时间:"<<endl;
cout<<"月:"<<endl;
cin>>t[i].month;
cout<<"日:"<<endl;
cin>>t[i].day;
cout<<"时:"<<endl;
cin>>t[i].hour;
cout<<"分:"<<endl;
cin>>t[i].minute;
cout<<"请输入始发站:"<<endl;
cin>>t[i].start_station;
cout<<"请输入途径站:"<<endl;
cin>>t[i].tu_station;
cout<<"请输入终点站:"<<endl;
cin>>t[i].last_station;
cout<<"请输入行车时间:"<<endl;
cin>>t[i].time;
cout<<"请输入票价:"<<endl;
cin>>t[i].price;
cout<<"请输入剩余车票数"<<endl;
cin>>t[i].last_ticket;
}
}
if(k==2)
{
int x;
cout<<"请输入要添加的车次数:"<<endl;
cin>>x;
for(int i=n; i<(n+x); i++)
{
cout<<"请输入车次号:"<<endl;
cin>>t[i].no;
cout<<"请输入发出时间:"<<endl;
cin>>t[i].month>>t[i].day>>t[i].hour>>t[i].minute;
cout<<"请输入始发站:"<<endl;
cin>>t[i].start_station;
cout<<"请输入途径站:"<<endl;
cin>>t[i].tu_station;
cout<<"请输入终点站:"<<endl;
cin>>t[i].last_station;
cout<<"请输入行车时间:"<<endl;
cin>>t[i].time;
cout<<"请输入票价:"<<endl;
cin>>t[i].price;
cout<<"请输入剩余车票数"<<endl;
cin>>t[i].last_ticket;
}
n=n+x;
}
char c;
cout<<"你要保存到文本文件中吗(y/n)"<<endl;
cin>>c;
if(c=='y')
{
ofstream ofs;//写到文本文件当中去
ofs.open("ticket.txt",ios::out);
for(int i=0; i<n; i++)
{
ofs<<"车次号:"<<t[i].no<<endl;
ofs<<"发出时间:"<<t[i].month<<"月"<<t[i].day<<"日"<<t[i].hour<<"时"<<t[i].minute<<"分"<<endl;
ofs<<"始发站:"<<t[i].start_station<<endl;
ofs<<"途径站:"<<t[i].tu_station<<endl;
ofs<<"终点站:"<<t[i].last_station<<endl;
ofs<<"行车时间:"<<t[i].time<<endl;
ofs<<"票价:"<<t[i].price<<endl;
ofs<<"剩余车票数:"<<t[i].last_ticket<<endl;
}
cout<<"保存成功!"<<endl;
}
}
void show(Ticket t[])//浏览车次信息,
{
for(int i=0; i<n; i++)
{
cout<<"车次号:"<<t[i].no<<endl;
cout<<"发出时间:"<<t[i].month<<"月"<<t[i].day<<"日"<<t[i].hour<<"时"<<t[i].minute<<"分"<<endl;
cout<<"始发站:"<<t[i].start_station<<endl;
cout<<"途径站:"<<t[i].tu_station<<endl;
cout<<"终点站:"<<t[i].last_station<<endl;
cout<<"行车时间:"<<t[i].time<<endl;
cout<<"票价:"<<t[i].price<<endl;
cout<<"剩余车票数:"<<t[i]. last_ticket<<endl;
cout<<endl;
}
}
void findtic(Ticket t[])//查询功能:
{
// int i;//按时间的
// int m,d;
// cout<<"请输入发车时间(*月*日):"<<endl;
// cin>>m>>d;
// for( i=0;i<n;i++)
// {
// if((t[i].month==m)&&(t[i].day==d))
// {
// cout<<"车次号:"<<t[i].no<<endl;
// cout<<"发出时间:"<<t[i].hour<<":"<<t[i].minute<<endl;
// cout<<"始发站:"<<t[i].start_station<<endl;
// cout<<"终点站:"<<t[i].last_station<<endl;
// cout<<"行车时间:"<<t[i].time<<endl;
// cout<<"票价:"<<t[i].price<<endl;
// cout<<"剩余车票数:"<<t[i].last_ticket<<endl;
// }
//
// }
char startplace[20];
char getplace[20];
cout<<"请输入出发站:"<<endl;
getchar();
gets(startplace);
cout<<"请输入到达站"<<endl;;
getchar();
gets(getplace);
for(int i=0; i<n; i++)
{
if((strcmp(startplace,t[i].start_station)==0)&&(strcmp(getplace,t[i].last_station)))
{
cout<<"车次号:"<<t[i].no<<endl;
cout<<"发出时间:"<<t[i].month<<"月"<<t[i].day<<"日"<<t[i].hour<<"时"<<t[i].minute<<"分"<<endl;
cout<<"始发站:"<<t[i].start_station<<endl;
cout<<"途径站:"<<t[i].tu_station<<endl;
cout<<"终点站:"<<t[i].last_station<<endl;
cout<<"行车时间:"<<t[i].time<<endl;
cout<<"票价:"<<t[i].price<<endl;
cout<<"剩余车票数:"<<t[i].last_ticket<<endl;
cout<<endl;
}
}
}
void selltic(Ticket t[])//售票功能
{
char cc[20];
int k;
cout<<"请输入你要买的车次号:"<<endl;
getchar();
gets(cc);
cout<<"你要买几张:"<<endl;
cin>>k;
cout<<"购买成功!"<<endl;
for(int i=0; i<n; i++)
{
if(strcmp(cc,t[i].no)==0)
{
t[i].last_ticket-=k;
}
}
}