大一课设的水平,没有数据库永久存储数据,没有多线程,没有网络连接,没有信息核验
好处:基本有了对票务系统类与类之间的交互。完成了一个主函数周期的系统。对成员函数的参数调用,初始化以及const有了进一步的认识。
先写最基础的0版本,可以实现基础订票,是一个单cpp、单线程级的tiny应用
//先写最基础的0版本,可以实现基础订票,是一个单cpp、单线程级的tiny应用
#include<iostream>
#include<string>
#include<vector>
using namespace std;
//票务信息
class TicketMessage {
private:
int flightnumber;
string departure;
string destination;
int seatavalible;
public:
TicketMessage(int flightnumber,const string & departure,const string& destination,int seatavalible)
:flightnumber(flightnumber), departure(departure), destination(destination), seatavalible(seatavalible){}//初始化
int getflightnumber()const
/*函数参数列表后加const,在C++中,将成员函数声明为const表示该函数不会修改对象的成员变量。这表示该成员函数被声明为const。
声明为const的成员函数有以下几点特征:
在函数体内部,不能修改该成员函数所属对象的非静态成员变量。
不能调用非const的成员函数,因为非const的成员函数可能会修改对象的状态。*/
{
return flightnumber;
}
string getdeparture() const{
return departure;
}
string getdestination () const {
return destination ;
}
int getseatavalible() const {
return seatavalible;
}
void decreaseseatsavailable() {
seatavalible--;
}
};
//订单信息
class order {
private:
int orderid;
string passengername;
int flightnumber;
public:
order(int orderid, int flightnumber, const string& passengername)
: orderid(orderid), flightnumber(flightnumber), passengername(passengername) {}
int getorderid() const {
return orderid;
}
int getflightnumber() const {
return flightnumber;
}
std::string getpassengername() const {
return passengername;
}
};
//服务器
class System
{
private:
vector<TicketMessage> Tickets;
vector<order> orders;
public:
void addtickets(int flightnumber,const string& departure, const string& destination, int seatavalible)
{
Tickets.push_back(TicketMessage(flightnumber, departure, destination, seatavalible));
}
void displaytickets()const
{
for (const TicketMessage& ticket : Tickets) {
cout << "flightnumber:" << ticket.getflightnumber() << endl;
cout << "seatavalible:"<<ticket.getseatavalible() <<endl;
cout << "departure: " <<ticket.getdeparture()<< endl;
cout << "destination:" <<ticket.getdestination()<< endl;
cout << endl;
}
}
void book( int flightnumber, const string& passengername) {
for ( TicketMessage& ticket : Tickets){
if (ticket.getflightnumber() == flightnumber && ticket.getseatavalible() > 0) {
ticket.decreaseseatsavailable();
orders.push_back(order(orders.size() + 1, flightnumber, passengername));
std::cout << "Ticket booked successfully!" << std::endl;
return;
}
}
std::cout << "Sorry, no available seats for the selected flight." << std::endl;
}
};
int main() {
System system;
int NO;
string name;
//添加航班
system.addtickets(1, "HaiNan", "BeiJing", 100);
system.addtickets(1, "HaiNan", "ZhangJiaJie", 109);
system.displaytickets();
cout << "Please enter the flightnumber you want to book:" ;
cin >> NO;
cout << "Please enter your name:";
cin >> name;
system.book(NO, name);
return 0;
}