C铁路订票系统的设计

上传人:ths****59 文档编号:57632359 上传时间:2018-10-23 格式:DOCX 页数:4 大小:20.06KB
返回 下载 相关 举报
C铁路订票系统的设计_第1页
第1页 / 共4页
C铁路订票系统的设计_第2页
第2页 / 共4页
C铁路订票系统的设计_第3页
第3页 / 共4页
C铁路订票系统的设计_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《C铁路订票系统的设计》由会员分享,可在线阅读,更多相关《C铁路订票系统的设计(4页珍藏版)》请在金锄头文库上搜索。

1、 C 语言设计火车票订票系统 设计题目:火车订票系统 一: 需求设计: 1.每条线路所涉及的信息有:起点,终点,站名.车次.票价,时间,座位号. 2.作为示意系统,全部数据可以只放在内存中. 3.系统能实现的功能和操作如下: 1.查询路线:根据旅客提出的终点站输入下列信息:车次,车站名. 2.承办订票业务:根据客户提出的要求查询车次票额的情况,若有余票,则为客户办理 订票手续,输出座位号;若已满员或余票额少于订票额,则需重新查询客户要求,若需 要可登记排队候补. 3.承办退票业务:根据客户提供的情况(车次,时间,座位号)为客户办理退票手续,然后 查询车次是否有人排队候补,首先询问排在第一的客户

2、,若所退票额能满足他的要 求,则为他办理订票手续,否则依次询问其他排队候补的客户. 4.登记旅客情况:包括旅馆姓名,性别,年龄,家庭住址,联系方式等. 5.统计功能:将每次车的订票,退票结果统计出来. 6.管理功能:列车管理员可以通过调用函数来查看车票及其用户情况. 7.查询功能:用户可以查询自己需要的车辆信息.二:总体设计 1.程序流程图: 按 1 键 按 2 键 按 3 键 按 4 键 进入 in 函数 进入 book 函数 进入 inquire 函数 进入 cancel 函数 按 5 键 进入 you 函数2。总体设计说明1 数据结构设计:程序=数据结构+算法,一个好的程序必定有一个好的

3、数据结构,本设计主要考虑 车票信息和用户信息的数据结构。车票信息采用半十字链表。横向链表中的每一个结点包含以下内容:车次,起始 站,发车时间,指向下一个结点的指针,指向中途站的指针,纵向链表中每一个结点 包 含以下内容:从始发站开始的依次到站,票价,到达时间,是否已购买标识,才 用 mark 标识,当 mark 为 1 时车票已售出,当 mark 为 0 时车票还未售出,以及 指向下一个结点的指针,纵向链表采用循环链表,尾指针指向首指针。未购票用 户信息使用队列来保存,因为考虑到用户会预定票,所以把用户以来订票的时间 早晚排在队中,先来先买,后来后买,队列中的每个元素包含以下内容:用户姓 名,

4、身份证号码,想要购票的车次,起始 站,要到的站,列车时间。 已经购票用户信息使用一个单链表来保存,链表中的每个结点包含以下内容:用 户姓名,身份证号码,已购车票的车次,出发时间,到达时间。车票信息链表示意图: 车次 起始站 发车时间 Down Next下一站名 到站时间 票价 Mark Next座位号 未购票用户信息队列 用户姓名 购票的车次 起始站 要到的站 达到时间 注:座位号包含在车次号中 已购票用户信息链表示意图: 用户姓名 身份证号码 已购车票的车次号 出发时间 到达时间 注:座位号包含再车次号中 算法的设计: 主函数:利用 case 语句实现用户界面,用户输入需要的服务的数字代码,

5、程序就会转 到相应的函数,实现相应的功能.在主函数开始做下 First 标识,以便在其他函数中使 用 goto 语句返回主函数的用户界面. In()函数:In()函数负责输入各种信息,链表中车票信息的初始值. Book()函数:Book()函数负责订票功能,主要是遍历整个链表,查找到需要订票的节点 后修改其 mark 值。 Inquire()函数:Inquire()函数主要负责查询功能,主要是整个遍历整个链表查找到所需要的 结点,然后输出。 Cancel()函数:Cancel()函数主要负责退票功能,主要是遍历整个链表查找到雪要的结点, 然后修改 mark 的值。 You()函数: You()

6、函数主要负责输入用户信息,主要是创建一个单链表,将用户信息放入, 并提供管理人员的查询功能。Find()函数:Find()函数主要负责查询用户信息,遍历整个单链表后,输出需要的信息 。Total()函数:Total()函数主要负责统计整个订票系统的情况。 三 :详细设计1.主函数: A 程序代码: Main() int*t; Int c; First: printf ( “welcome to your ticket system!n”);Printf(“1.input the data.n”); /*按 1 键输入数据*/ Printf(“2book the ticket.n”) /*按 2

7、 键订车票*/ Printf(“3.inquire the ticket.n);/*按 3 键查询车票*/ Printf(“4.cancel the ticket.n”);/*按 4 键退车票 */ Printf(“5.input your own data.n”); /*按 5 键输入个人信息*/ Sanf(“%d. Switch(c) case1: t=int():break;Case2:book(:)break;Case3:inquire():break;Case4:cancel():break;Case5:you():break; Default:printf(“you enter a

8、n error numbern”);B 功能说明: 通过 printf 语句,输出提示用户选择的信息,用户看到后,按下自己需要功能的代号,然 后程序进入实现该功能函数,完成用户所需要的功能 2 .IN()函数: A 程序流程图: 建立横向链表头结点 输入 m,n 的值 For 循环,m 是否为 0 否 建立结点 向结点输入数据 For 循环,n 是否为 0 否 建立纵向结点 向结点输入数据 是 返回指针 Goto 到用户界面 B 程序代码: Struct ticket*in() /*一个返回指针形的函数*/Struct ticket*head; /*头结点*/Struct ticket *p1

9、,*p2; Struct station *s1,*s2;Int m,n;Int i;P1=p2=(struct ticket*)malloc(len); /*建立横向链表的头结点*/ Scanf(“%d, /*输入一共所需的车票信息总数*/Scanf(“%d, /*输入一共所需的车票信息总数*/ Scanf(“%d, /*输入从始发站到终点站共有几站*/Head=null;For(i=0;inext=p1;P2=p1;P1=(struct ticket)*malloc(len);S1=s2(struct ticket*malloc(len); /*建立纵向链表的头结点*/ Head=s1=s2;P1-down=s1=s2; /*指向纵向链表的头结点*/ Scanf(“%d”, “%d”, “%d”, /*输入横向链表的数据 */For (i=0;inext=s2;S2=s1S1=(struct ticket)*malloc (len) /*建立纵向链表*/Scanf(“%s”, “%d” ,“%d” ,“%d” ,“%d”,s1-name, /*输入纵向链表的数据*/S1-next=head1; /*纵向链表为循环链表*/ P2-next=null;Return(head); /*返回头指针*/ Goto first; /*返回头指针*/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号