代码:
#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; }