C铁路订票系统的设计.docx_第1页
C铁路订票系统的设计.docx_第2页
C铁路订票系统的设计.docx_第3页
C铁路订票系统的设计.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C 语言设计火车票订票系统 设计题目:火车订票系统 一: 需求设计:1. 每条线路所涉及的信息有:起点,终点,站名.车次.票价,时间,座位号.2. 作为示意系统,全部数据可以只放在内存中.3. 系统能实现的功能和操作如下:1. 查询路线:根据旅客提出的终点站输入下列信息:车次,车站名.2. 承办订票业务:根据客户提出的要求查询车次票额的情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新查询客户要求,若需要可登记排队候补.3. 承办退票业务:根据客户提供的情况(车次,时间,座位号)为客户办理退票手续,然后查询车次是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户.4. 登记旅客情况:包括旅馆姓名,性别,年龄,家庭住址,联系方式等.5. 统计功能:将每次车的订票,退票结果统计出来.6. 管理功能:列车管理员可以通过调用函数来查看车票及其用户情况.7. 查询功能:用户可以查询自己需要的车辆信息. 二:总体设计1. 程序流程图:按1键 按2键 按3键 按4键 进入in函数 进入book函数 进入inquire函数 进入cancel函数 按5键 进入you函数 2。总体设计说明 1 数据结构设计: 程序=数据结构+算法,一个好的程序必定有一个好的数据结构,本设计主要考虑 车票信息和用户信息的数据结构。 车票信息采用半十字链表。横向链表中的每一个结点包含以下内容:车次,起始站, 发车时间,指向下一个结点的指针,指向中途站的指针,纵向链表中每一个结点包含以下内容:从始发站开始的依次到站,票价,到达时间,是否已购买标识,才用mark标识,当mark为1时车票已售出,当mark为0时车票还未售出,以及指向下一个结点的指针,纵向链表采用循环链表,尾指针指向首指针。未购票用户信息使用队列来保存,因为考虑到用户会预定票,所以把用户以来订票的时间早晚排在队中,先来先买,后来后买,队列中的每个元素包含以下内容:用户姓名,身份证号码,想要购票的车次,起始 站,要到的站,列车时间。已经购票用户信息使用一个单链表来保存,链表中的每个结点包含以下内容:用户姓名,身份证号码,已购车票的车次,出发时间,到达时间。 车票信息链表示意图:车次起始站发车时间DownNext下一站名到站时间票价MarkNext座位号未购票用户信息队列用户姓名购票的车次起始站要到的站达到时间注:座位号包含在车次号中已购票用户信息链表示意图:用户姓名身份证号码已购车票的车次号出发时间到达时间注:座位号包含再车次号中算法的设计:主函数:利用case语句实现用户界面,用户输入需要的服务的数字代码,程序就会转到相应的函数,实现相应的功能.在主函数开始做下First标识,以便在其他函数中使用goto语句返回主函数的用户界面.In()函数: In()函数负责输入各种信息,链表中车票信息的初始值.Book()函数: Book()函数负责订票功能,主要是遍历整个链表,查找到需要订票的节点后修改其mark值。Inquire()函数: Inquire()函数主要负责查询功能,主要是整个遍历整个链表查找到所需要的结点,然后输出。Cancel()函数: Cancel()函数主要负责退票功能,主要是遍历整个链表查找到雪要的结点,然后修改mark的值。You()函数:You()函数主要负责输入用户信息,主要是创建一个单链表,将用户信息放入,并提供管理人员的查询功能。 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键订车票*/Printf(“3.inquire the ticket.n);/*按3键查询车票*/Printf(“4.cancel the ticket.n”);/*按4键退车票 */Printf(“5.input your own data.n”); /*按5键输入个人信息*/Sanf(“%d.&c);Switch(c) case1: t=int():break; Case2:book(:)break; Case3:inquire():break; Case4:cancel():break; Case5:you():break;Default:printf(“you enter an 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,*p2;Struct station *s1,*s2; Int m,n;Int i;P1=p2=(struct ticket*)malloc(len); /*建立横向链表的头结点*/Scanf(“%d,&m); /*输入一共所需的车票信息总数*/ Scanf(“%d,&m); /*输入一共所需的车票信息总数*/Scanf(“%d,&n); /*输入从始发站到终点站共有几站*/ 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”,&p1-num,&p1-num2,&p1-time); /*输入横向链表的数据*/ For (i=0;inext=s2; S2=s1 S1=(struct ticket)*malloc (len) /*建立纵向链表*/ Scanf(“%s”, “%d” ,“%d” ,“%d” ,“%d”,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论