订票咨询管理系统
设计编制一个订票管理系统,考虑旅客不同的要求。例如,选择不同的交通工具,希望在旅途中的时间尽可能地短,期望旅费尽可能省,或要求中转次数最少等。为旅客提供两种或三种最优决策。车票基本信息包括:车次、出发站、终点站、额定票数、已订票人数、金额、座位号、发车时间、到站时间等。
基本功能与技术要求
1、 数据文件管理功能:创建新文件、打开文件、保存文件。
2、计算与统计功能:完成记录中相关数据的最优计算与分析;
1)能够打开已存在的数据表文件,根据出发站和到达站计算需要多长时间才能到达及需要多少旅费及中转次数。
2)分析提供旅客最佳选择方案。
3、记录管理功能:记录的管理采用链表或者指针数组实现。
1)输入/添加/插入记录,并保存到数据文件中。
2)查询、显示记录,根据用户要求按所给发车时间、票数、金额等记录关键字排序,查询一个或多个相关联记录的各项信息。
3)修改记录:能够打开已存在的数据表文件,并对确定的任意记录进行修改,在修改过程中,应显示记录信息,给出确认提示,并对更新的记录信息进行文件保存。
4)删除记录:能够打开已存在的数据表文件,可以删除数据表中的任一记录,要求具备逻辑删除(具有恢复功能)和物理删除功能,并对新的数据表信息进行文件保存。
一.需求分析
考虑旅客的不同需求,比如乘坐不同的交通工具,有什么紧急的事情要求时间尽可能短,或则为零追去舒适度而去选择尽可能少的中转,或则考虑经济能力选择所需费用最少的等,根据旅客的不同需求为他们推荐最适合他们的出行路线。
二.总体设计
流程图为:
三.详细设计
1.模块总览
void IO_read();//将文件中内容读出来
void ex_pre();//建图
void IO_write();//把建好的图写到line.txt文件里
void Init();//初始化航班和车次
void function1();//录入与删除信息
void function2();//浏览所有信息
void function3();//用户咨询(包括购买票的操作)
void show_all();//显示当前所有航班及车次的信息
void change_plane();//修改航班
void change_train();//修改车次
void add_plane();//增加航班
void add_train();//增加车次
void del_plane();//删除航班(包括物理删除和逻辑删除)
void del_train();//删除车次(包括物理删除和逻辑删除)
int min_money(string s,string t);//起点到终点的最小费用及其路线
int min_trans(string s,string t);//起点到终点的最少中转次数用及其路线
int min_time(string s,string t);//起点到终点的最小时间用及其路线
void reset_del();//恢复被逻辑删除的航班或车次
- 模块说明
void IO_write(); 这个函数主要调用C++输出流将指定文件里面的内容读出,然后赋值给相应的变量,从而实现后面的操作。
void IO_read(); 这个函数也是使用C++输入流将内容写到指定文建中,然后保存,方便用户查询。
void ex_pre();这个函数是用从文件中读出的航班以及车次信息建立一张有向网络图。
(a). 其中对于城市的处理采用map将每个城市映射为一个数字,然后再后面查询时,只要将起点在,终点线映射数字后,只要求对应网上的数字之间的信息即可。
(b).对于城市数量,将他放在set(具有自动去重的功能)容器里面,这样方便查询城市相关信息。
void Init();这个函数是对交通网络的初始化,就是当你需从文件里面读入的时候,可以自己创建一张交通网路,里面可以添加航班,车次(包含 班次,起点,终点,起始时间,终止时间,价格,额定票数,已售票数,并将该信息创建为网络图存到相应文件里面。
void function1();这是一个界面里面有 录入与删除信息的选项供用户选择。
void function2();这是一个界面会有选项显示当前所有信息
void function3();用户咨询界面里面有查询航班,车次选项,以及给出起点,终点,以及想要的出行方式,然后会转入到对应程序里面。
void show_all();这个函数是用来显示当前所有航班及车次的信息。
int min_money(string s,string t);计算起点到终点的最小费用及其路线,用Dijkstra(堆优化),来实现。
int min_trans(string s,string t);//起点到终点的最少中转次数用及其路线,用
Dijkstra(堆优化),来实现。
int min_time(string s,string t);起点到终点的最小时间用及其路线,用深度优先搜索来搜索最短时间,并记录路径。
void change_plane();修改航班,这里面会有增加和删除航班的操作,然后根据选择转到对应的程序里面。
void change_train();修改车次,这里面会有增加和删除车次的操作,然后根据选择转到对应的程序里面。
void add_plane();增加航班,当用户选择这个操作后,会会转入到这个程序。这个程序会让你将将要增加的航班的班次,起点,终点,起始时间,终止时间,费用。
void add_train();增加车次,当用户选择这个操作后,会会转入到这个程序。这个程序会让你将将要增加的火车的班次,起点,终点,起始时间,终止时间,费用。
void del_plane();//删除航班(包括物理删除和逻辑删除)。对于物理删除:我们将管理员输入的类型及其班次对应的一条线路从文件里面删除,逻辑删除:则是对相应的线路打标记,并不删除,只是当前不可以用。
void del_train();//删除车次(包括物理删除和逻辑删除) 。对于物理删除:我们将管理员输入的类型及其班次对应的一条线路从文件里面删除,逻辑删除:则是对相应的线路打标记,并不删除,只是当前不可以用。
void reset_del();恢复被逻辑删除的航班或车次,就是讲管理员输入类型班次的线路的标记取消,也就恢复了。
参考代码:
1 #include
2 #include
3 #include<string>
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include<set>
10 #include
11 #include
View Code