c++课程设计-车票管理系统
- 格式:doc
- 大小:530.00 KB
- 文档页数:15
c++课程设计-车票管理系统
-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII 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;
}
}
#include
#include
#include
#include
#include
using namespace std; //命名空间
class Bus_infor
{
private:
static int Bus_No; //静态数据成员,统计当前所有的Bus_infor对象的数目
char start[20]; //起点站
char end[20]; //终点站
int Bus_order; //班次号
int all_tickted; //额定载量
int tickted; //已定票人数
int Hour_start,Minute_start; //发车时间
float GoHour; //行车时间
public:
Bus_infor();
~Bus_infor();
Bus_infor *next;
void input(); //录入函数 void input(ifstream & is); //读取函数
void output(); //输出函数
void output(ofstream & os); //写入函数
void Order_tickt(int n); //定票函数
void Unorder_tickt(int n); //退票函数
void GetTime_start(); //获取发车时间函数
bool GetTime(); //判断当前班次状况函数
int Get_all_tickted() { return all_tickted; } //内联函数,返回额定载量
int Get_tickted() { return tickted; } //返回已定票人数
int Get_bus_order() { return Bus_order; } //返回班次号
string Get_end()const; //返回终点站的字符串
};
int Bus_infor::Bus_No=1;
Bus_infor::Bus_infor()
{
Bus_No++;
tickted=0;
}
Bus_infor::~Bus_infor()
{
Bus_No--;
}
void Bus_infor::input()
{
cout<<"\t\t\t按提示输入:"< cout<<"输入班次: "; while(1) { cin>>Bus_order; if (cin.fail()) //判断输入的数据类型是否有错 { cout << "\n班次输入错误,请重新输入:"; cin.clear(); cin.get(); } else break; } cout<<"请输入车的额定座位数: "; while(1) { cin>>all_tickted; if (cin.fail()) //判断输入的数据类型是否有错 { cout << "\n座位数输入错误,请重新输入:"; cin.clear(); cin.get(); } else break; } GetTime_start(); cout<<"请输入行车时间:"; while(1) { cin>>GoHour; if (cin.fail()) //判断输入的数据类型是否有错 { cout << "\n行车时间输入错误,请重新输入:"; cin.clear(); cin.get(); } else break; } cout<<"请输入起始站与终点站:"; cin>>start;cin>>end; cout<<"是否清空售票(y/n) "; char a;cin>>a; if(a=='y'||a=='Y') tickted=0; } void Bus_infor::input(ifstream & is) { is>>Bus_order>>Hour_start>>Minute_start>>start>>end>>GoHour>>all_tickted>>tickted; is.get(); } void Bus_infor::output() { cout<<" "< if(Minute_start==0) //判断发车时的分钟时刻,若为分则在后面多显示个,以符合时间格式 { cout< } else { cout< } cout< if(!GetTime()) cout<<"\t 此班已出发"< else cout<<"\t 此班未出发"< } void Bus_infor::output(ofstream & os) { os< < < < < < < < < } void Bus_infor::GetTime_start() { cout<<"请输入始发时间(时分):"; while(1) { cin>>Hour_start>>Minute_start; if (cin.fail()) //判断输入的数据类型是否有错 { cout << "\n时间输入错误,请重新输入:"; cin.clear(); cin.get(); } else if(Hour_start<0||Hour_start>24||Minute_start<0||Minute_start>60) cout<<"\n时间格式出错,请重新输入:"; ////判断时间格式是否出错,小时不能小于大于,分钟不能小于大于 else break; } } bool Bus_infor::GetTime() { struct tm *local; time_t t; t=time(NULL); local=localtime(&t); //获取当前系统时间 if(local->tm_hour else return 0; //返回表示班次已出发 } void Bus_infor::Order_tickt(int n) { tickted=tickted+n; } void Bus_infor::Unorder_tickt(int n) { tickted=tickted-n; } string Bus_infor::Get_end()const { string s=end; return s; } 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); //查找函数 void found(); //查询车票信息 void show(); //显示车票信息 void Order(); //定购车票信息 void Unorder(); //退还车票信息 void save(); //保存车票信息 void begin(); //初始化车票信息 void clear(); //清除函数 void about(); //关于车票信息 char mainmenu(); //主菜单函数 void setkey(int k){ key=k; } //设置系统修改标志 int getkey(){ return key;} //返回系统修改标志 private: Bus_infor *head; //链表指针 int key; //系统修改标志 int password; //管理员登陆标志 }; void Bus_link::input()