数据结构课程设计 火车订票系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件课程设计--C语言设计火车票订票系统之源代码(模拟数据库功

能)(需求分析+可行性分析)

设计题目:火车订票系统

小组成员:

指导教师:

完成时间:

一.需求设计:

1.每条线路所涉及的信息有:起点、终点、站名、车次、、票价、时间、座位号。

2.作为示意系统,全部数据可以只放在内存中。

3.系统能实现的功能和操作如下:

①.查询路线:根据旅客提出的终点站名输入下列信息:车次、车站名。

②.承办订票业务:根据客户提出的要求查询该车次票额的情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新查询客户要求,若需要可登记排队候补。

③.承办退票业务:根据客户提供的情况(车次、时间、座位号)为客户办理退票手续,然后查询该车次是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。

④登记旅客情况:包括旅客姓名,性别,年龄,家庭住址,联系方式等。

⑤统计功能:将每次车的订票,退票结果统计出来。

⑥管理功能:列车管理员可以通过调用函数来查看车票极其用户情况.

⑦.查询功能:用户可以查询自己需要的车辆信息.

二.总体设计

1.程序流程图:

按2键

按3键

按4键

进入in函数

进入book函数

进入inquire函数

进入cancel函数

按5键

进入you函数

2.总体设计说明:

①.数据结构设计:

程序=数据结构+算法,一个好的程序必定有一个好的数据结构.本设计主要考虑车票信息和用户信息的数据结构.

车票信息采用半十字链表.横向链表中的每一个结点包含以下内容:车次,起始站,发车时间,指向下一个结点的指针,指向中途站的指针.纵向链表中每一个结点包含以下内容:从始发站开始的依次到站,票价,到达时间,是否已被购买标识,才用mark标识,当mark为1时车票已售出,当mark为0时车票还未售出.以及指向下一个结点的指针.纵向链表采用循环链表,尾指针指向首指针.

未购票用户信息使用队列来保存,因为考虑到用户会预订票,所以把用户以来订票的时间早晚排在队中.先来先买,后来后买.队列中的每个元素包含以下内容:用户姓名,身份证号码,想要购票的车次,起始站,要到的站,时间.

已经购票用户信息使用一个单链表来保存,链表中的没个结点包含以下内容:用户姓名,身份证号码,已购车票的车次,出发时间,到达时间.

车票信息链表示意图:

车次

起始站

发车时间

downn

next

到站时间

票价

mark

next

座位号

未购票用户信息队列:

用户姓名

购票的车次

起始站

要到的站

达到时间

用户姓名

购票的车次

起始站

要到的站

达到时间

注:座位号包含在车次号中

已购票用户信息链表示意图: 用户姓名

身份证号码

已购车票的车次号

出发时间

到达时间

注:座位号包含在车次号中

②算法的设计:

主函数:

利用case语句实现用户界面,用户输入需要的服务的数字代码,程序就会转到相应的函数,实现相应的功能。在主函数开始处做下First标识,以便在其他函数中使用goto语句返回主函数的用户界面。

In()函数:

In()函数负责输入各种信息,链表中车票信息的初始值.

Book()函数:

Book()函数负责订票功能.主要是遍历整个链表,查找到需要订票的结点后修改其mark 值.

Inquire()函数:

Inquire()函数主要负责查询功能.主要是遍历整个链表查找到需要的结点,然后输出.

Cancel()函数:

Cancel()函数主要负责退票功能.主要是遍历整个链表查找到需要的结点,然后修改mark的值.

You()函数:

You()函数主要负责输入用户信息,主要是创建一个单链表,将用户信息放入.并提供管理人员的查询功能.

Find()函数:

Find()函数主要负责查询用户信息,遍历整个单链表后,输出需要的信息.

Total()函数:

Total()函数主要负责统计整个订票系统的情况.

三.详细设计:

1. 主函数:

①程序代码:

Main()

{ int *t;

int c;

First: printf(“welcome to our ticket system!\n”);

printf(“1.intput the data.\n”);/*按1键输入数据*/

printf(“2.book the ticket.\n”);/*按2键订车票*/

printf(“3.inquire the ticket.\n”);/*按3键查询车票*/

printf(“4.cancel the ticket.\n”);/*按4键退车票*/

printf(“5.input your own data.\n”);/*按5键输入个人信息*/

scanf(“%d”,&c);

switch(c)

{case ‘1’: t=in(); break;

case ‘2’: book(); break;

case ‘3’: inquire(); break;

case ‘4’: cancel(); break;

case ‘5’: you(); break;

default : printf(“you enter an error number\n”);}}

②功能说明:

通过printf语句,输出提示用户选择的信息.用户看到后,按下自己需要功能的代号.然后程序进入实现该功能函数完成用户所需要的功能.

2. In()函数:

①程序流程图:

建立横向链表头结点

输入m,n的值

For循环,m是否为0

相关文档
最新文档