管理系统, 2021-06-07 09:14 采纳率: 25%
浏览 32
已采纳

课堂上要求设计这个程序

应该如何设计呢

  • 写回答

4条回答 默认 最新

  • qfl_sdu 2021-06-07 10:12
    关注

    参考代码如下:

    如有帮助,请采纳一下,谢谢。

    #include <iostream>
    #include <list>
    #include <string>
    using namespace std;
    struct Date
    {
    	int year;
    	int month;
    	int day;
    };
    struct StTickInfo
    {
    	char id[16];     //订单号
    	Date date;       //订票日期
    	char name[16];   //航空公司名称
    	char hangban[16];//航班号
    	char src[16];   //出发地
    	char dst[16];   //目的地
    	int price;
    	char guest[20];  //订票人名
    	char guId[20];   //订票人身份证号
    };
    
    //添加订单
    void add(list<StTickInfo> &info)
    {
    	StTickInfo st;
    	cout << "订   单   号:";
    	cin >> st.id;
    	cout << "订 票 日 期 :";
    	cin >> st.date.year >> st.date.month >> st.date.day;
    	cout << "航空公司名称:";
    	cin >> st.name;
    	cout << "航   班   号:";
    	cin >> st.hangban;
    	cout << "出   发   地:";
    	cin >> st.src;
    	cout << "目   的   地:";
    	cin >> st.dst;
    	cout << "价        格:";
    	cin >> st.price;
    	cout << "订票人姓名  :";
    	cin >> st.guest;
    	cout << "订票人身份证:";
    	cin >> st.guId;
    	info.push_back(st);
    }
    
    //删除订单(根据姓名或者身份证号删除,假设一个人只有一张票)
    void dele(list<StTickInfo> &info)
    {
    	string p;
    	cout << "请输入需要删除的订单信息(订票人姓名或者身份证号):";
    	cin >> p;
    	list<StTickInfo>::iterator it= info.begin();
    	for (; it != info.end();it++)
    	{
    		if(strcmp(it->guest,p.c_str()) == 0 || strcmp(it->guId,p.c_str()) == 0)
    		{
    			info.erase(it);
    			break;
    		}
    	}
    }
    
    //查找订单
    void find(list<StTickInfo> &info)
    {
    	string p="";
    	bool b = false;
    	cout << "请输入航班或航空公司名称或订票人姓名或订票人身份证号查找" << endl;
    	cin >> p;
    	list<StTickInfo>::iterator it= info.begin();
    	for (; it != info.end();it++)
    	{
    		//根据航班、航空公司名称、订票人姓名、订票人身份证号查找
    		if (strcmp(it->hangban,p.c_str()) == 0 || strcmp(it->name,p.c_str())==0 || strcmp(it->guest,p.c_str())==0 || strcmp(it->guId,p.c_str())==0)
    		{
    			b = true;
    			cout << "订   单   号:" << it->id << endl;
    			cout << "订 票 日 期 :" << it->date.year << "-" << it->date.month <<"-" << it->date.day << endl;
    			cout << "航空公司名称:" << it->name << endl;
    			cout << "航   班   号:" << it->hangban << endl;
    			cout << "出   发   地:" << it->src << endl;
    			cout << "目   的   地:" << it->dst << endl;
    			cout << "价        格:" << it->price << endl;
    			cout << "订票人姓名  :" << it->guest << endl;
    			cout << "订票人身份证:" << it->guId << endl;
    		}
    	}
    	cout <<endl;
    	if (!b)
    		cout << "未查找到结果"<< endl;
    	
    }
    
    //按日期和航班号显示订票人
    void Show(list<StTickInfo> &info)
    {
    	Date dd;
    	string p;
    	bool b = false;
    	cout << "请输入航班号和日期:" ;
    	cin >> p >> dd.year >> dd.month >> dd.day;
    	list<StTickInfo>::iterator it= info.begin();
    	for (; it != info.end();it++)
    	{
    		if (strcmp(it->hangban,p.c_str()) == 0 && it->date.year == dd.year && it->date.month == dd.month && it->date.day == dd.day)
    		{
    			b = true;
    			cout << "订票人:" << it->guest << "  " << it->guId << endl;
    		}
    	}
    	cout <<endl;
    	if (!b)
    		cout << "未查找到结果"<< endl;
    }
    
    int main(void)
    {
    	int opt;
    	list<StTickInfo> info;
    	bool isWork = true;
    	while(isWork)
    	{
    		cout << "----------订票管理系统-----------------|"<< endl;
    		cout << "|         1.添加订单                   |"<< endl;
    		cout << "|         2.删除订单                   |"<< endl;
    		cout << "|         3.查找订单                   |"<< endl;
    		cout << "|         4.按日期和航班号输出订票人   |"<< endl;
    		cout << "|         9.退出系统                   |"<< endl;
    		cout << "----------请输入您的操作---------------|"<< endl;
    		cin >> opt;
    		switch(opt)
    		{
    		case 1:
    			add(info);
    			break;
    		case 2:
    			dele(info);
    			break;
    		case 3:
    			find(info);
    			break;
    		case 4:
    			Show(info);
    			break;
    		case 9:
    			isWork = false;
    			break;
    		}
    	}
    	
    	return 0;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题