手撸线上订票系统--版本0

大一课设的水平,没有数据库永久存储数据,没有多线程,没有网络连接,没有信息核验
好处:基本有了对票务系统类与类之间的交互。完成了一个主函数周期的系统。对成员函数的参数调用,初始化以及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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张学灿@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值