/*
这个课题的重点有以下几点,把这些搞清楚了,你的课程应该是100分。
1、你要学会什么是类?比如你的 BUS_infor?什么是成员变量?什么成员函数?
2、什么是实例化?什么是实例变量?什么是构造函数?什么是析构函数?
3、什么是函数形参?什么是实参?什么是临时变量?什么是指针?什么是指向指针的指针?
4、什么是链表?链表有哪些操作?(如何添加、修改、删除、查找?)
5、怎样操作文件?(如何保存、访问?)
6、都有哪些循环语句,其各有什么不同?if-else、switch-case、while、do-while?
7、break是用来干什么的?exit?return?等等又是用来干什么的?
老弟加油,不过也不着急,路漫漫,其修远矣!答辩前把以上这些概念搞清楚就可以了。
/*
/*
课程设计名称:车票管理系统
一车站每天有n个发车班次,每个班次都有一班次号(1、2、3、…、n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如:
班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数
1 8:00 郫县 广汉 2 45 30
2 6:30 郫县 成都 0.5 40 40
3 7:00 郫县 成都 0.5 40 20
4 10:00 郫县 成都 0.5 40 2
……
(一)功能要求:用C/C++设计一系统,能提供以下服务:
(1)录入班次信息(信息用文件保存),可不定时地增加班次数据;
(2)浏览班次信息,可显示出所有班次当前状况(如果当前系统时间超过了某班次的发车时间,则显示"此班已发出"的提示信息);
(3)查询路线:可按班次号查询 ,也可按终点站查询;
(4)售票和退票功能。
A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数;
B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。
(二)其他要求:
(1)只能使用C/C++语言,源程序要有适当的注释,使源程序容易阅读
(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)
(3)学生可自动增加新功能模块
(4)写出课程设计报告
*/
#include<iostream>//数据流输入/输出
#include<fstream> //文件输入/输出
#include<string>
#include<iomanip> //参数化输入/输出
#include <stdio.h>
using namespace std;/*std是c++的标准,定义了很多类,string等等,
为了防止和其他的类库重名,定义了名字空间std,
如果要使用std定义的类,就在程序中加入using namespace std,
如果只使用其中的一个或者几个类,也可以直接这样写: std::string*/
/*这个类是描述车次信息的类,主要功能是实现某一车次的信息的描述(称为类的成员变量),如车次、起始结束时间、起点/终点站等;
同时提供了接口供外部获取、修改这些成员变量,如:当前的车次的获取、修改等;*/
class Bus_infor
{
int No;
static int Bus_No;
char start[20];
char end[20];
int Bus_order;
int all_tickted;
int tickted;
int Hour_start,Minute_start,Hour_end,Minute_end;
int Hour;
int Minute;
public:
Bus_infor *next;
Bus_infor();
~Bus_infor();
int Get_no();
int Get_all_tickted();
int Get_tickted();
int Get_bus_order();
char *Get_start();
char *Get_end();
void addr();
void Order_tickt(int n);
void Unorder_tickt(int n);
void GetTime_start();
void GetTime_end();
void ShowTime();
void GetTime();
void Show_infor();
void input()
{
cout<<"\t\t\t按提示输入:"<<endl;
cout<<"\t\t输入车次: ";
cin>>Bus_order;
cout<<"请输入车的额定座位数: ";
cin>>all_tickted;
GetTime_start();
GetTime_end();
addr();
char a;
cout<<"是否清空售票(y/n)?"<<endl;cin>>a;
if(a=='y') tickted=0;
}
void input(ifstream & is)
{
is>>Bus_order>>start>>end>>all_tickted>>tickted>>Hour_start>>Minute_start>>Hour_end>>Minute_end;
is.get();
}
void output()
{cout<<"客车基本信息如下:"<<endl;
cout<<"车次:"<<Bus_order
<<" 始发站:"<<start
<<" 终点站:"<<end
<<" 额定人数:"<<all_tickted
<<"已售票"<<tickted
<<"始发时间"<<Hour_start<<":"<< Minute_start<<"到站时间"<< Hour_end<<":"<< Minute_end<<endl<<endl;
}
void output(ofstream & os)
{
os<<setw(6)<<Bus_order
<<setw(15)<<start
<<setw(6)<<end
<<setw(15)<<all_tickted
<<setw(15)<<tickted
<<setw(15)<<Hour_start
<<setw(15)<<Minute_start
<<setw(15)<<Hour_end
<<setw(15)<<Minute_end
<<endl;
}
};
int Bus_infor::Bus_No=1;
void Bus_infor::GetTime_start(){
int NewH=0,NewM=0;
cout<<"请输入始发时间:"<<endl;
cin>>NewH>>NewM;
Hour_start=NewH;
Minute_start=NewM;
}
void Bus_infor::GetTime_end(){
int NewH=0,NewM=0;
cout<<"请输入到站时间:"<<endl;
cin>>NewH>>NewM;
Hour_end=NewH;
Minute_end=NewM;
}
void Bus_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); }
}
void Bus_infor::ShowTime(){
cout<<Hour_start<<":"<<Minute_start<<" ";
cout<<Hour_end<<":"<<Minute_end<<" ";
cout<<Hour<<":"<<Minute<<endl;
}
Bus_infor::Bus_infor(){
No=Bus_No++;
tickted=0;
}
Bus_infor::~Bus_infor(){ Bus_No--; }
//set the addr
void Bus_infor::addr(){
cout<<"请输入起始站与终点站:"<<endl;
char a[20];char b[20];
cin>>a;cin>>b;
strcpy(start,a);strcpy(end,b);
}
//Get the start addr
char *Bus_infor::Get_start(){
return start;
}
//Get the end addr
char *Bus_infor::Get_end(){
return end;
}
//Get the no
int Bus_infor::Get_no(){
return No;
}
int Bus_infor::Get_all_tickted(){
return all_tickted;
}
int Bus_infor::Get_tickted(){
return tickted;
}
int Bus_infor::Get_bus_order(){
return Bus_order;
}
//order the tickt
void Bus_infor::Order_tickt(int n){
tickted=tickted+n;
}
void Bus_infor::Unorder_tickt(int n){
tickted=tickted-n;
};
/*这个类主要是用来描述车次信息的链表,包括了链表的相关操作:添加、修改、查找、删除、清空等*/
class Bus_link{
public:
Bus_link(){head=new Bus_infor;head->next=NULL;key=0;}
//~Bus_link(){delete head;}
void input();
void mend();
void del();
int find(Bus_infor **p,int num,char *pn);
int find1(Bus_infor **p,int num,char *pn);
void found();
void show();
void Order();
void Unorder();
void save();
void begin();
void clear();
char mainmenu();
int getkey(){ return key;}
void setkey(int k){ key=k; }
private:
Bus_infor *head;
int key;
};
//录入函数
void Bus_link::input()
{
Bus_infor *p,*p2=NULL;
p=head;
int n;
while(p->next)
p=p->next;
while(n)
{
p2=new Bus_infor;
p2->input();
p->next=p2;
p2->next=NULL;
p=p->next;
Bus_link::setkey(1);
cout<<"\t\t\t按1继续,按0返回 : ";
cin>>n;
}
}
//定票函数
void Bus_link::Order(){
Bus_infor *p;
cout<<"确定购票(y/n)?"<<endl;
char X;cin>>X;
if(X=='y'){
int num;
cout<<"\t\t\t输入车次号: ";
cin>>num;
if( !find1(&p,num,"^") )
{
cout<<"\t\t找不到你要定票的车辆的内容!"<<endl;
return;
}
cout<<"输入要定的票数 ";
int n;cin>>n;
p=p->next;
if((p->Get_tickted()+n)<=p->Get_all_tickted())
p->Order_tickt(n);
else cout<<"对不起,没有足够的票数。"<<endl;
}
else if(X=='n') cout<<"谢谢使用"<<endl;
else cout<<"输入字符不确定"<<endl;
Bus_link::setkey(1);
}
//退票函数
void Bus_link::Unorder(){
Bus_infor *p;
cout<<"确定退票(y/n)?"<<endl;
char X;cin>>X;
if(X=='y'){
int num;
cout<<"\t\t\t输入车次号: ";
cin>>num;
if( !find1(&p,num,"^") )
{
cout<<"\t\t找不到你要定票的车辆的内容!"<<endl;
return;
}
cout<<"输入要退的票数 ";
int n;cin>>n;
p=p->next;
if((p->Get_tickted()-n)>=0)
p->Unorder_tickt(n);
else cout<<"对不起,数据出错!。"<<endl;
}
else if(X=='n') cout<<"谢谢使用"<<endl;
else cout<<"输入字符不确定"<<endl;
Bus_link::setkey(1);
}
//查找函数
void Bus_link::found()
{
Bus_infor *p;
int num=-1,n=9;
char name[20]="^";
do
{
cout<<"\t\t1:按车次查找,2:按终点站查找: ";
cin>>n;
}while(n<1||n>2);
车票管理系统c++语言
需积分: 27 16 浏览量
2008-08-30
22:52:50
上传
评论
收藏 4KB RAR 举报
feilong16
- 粉丝: 35
- 资源: 13
最新资源
- C语言基础-C语言编程基础之Leetcode编程题解之第30题串联所有单词的子串.zip
- C语言基础-C语言编程基础之Leetcode编程题解之第29题两数相除.zip
- C语言基础-C语言编程基础之Leetcode编程题解之第28题找出字符串中第一个匹配项的下标.zip
- 实验报告模板(1).docx
- C语言基础-C语言编程基础之Leetcode编程题解之第26题删除有序数组中的重复项.zip
- C语言基础-C语言编程基础之Leetcode编程题解之第25题K个一组翻转链表.zip
- hnu计算机系统作业-计算机系统基础课程大作业.zip
- 树莓派app.apk
- C++的基于同态加密技术的匿名电子投票系统源码.zip
- SW建模格式图.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈