ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:736.53KB ,
资源ID:3875894      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3875894.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(火车票订票系统.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

火车票订票系统.docx

1、火车票订票系统 软件技术基础课程设计说明书题目: 火车订票系统的设计 学生姓名: 学 号: 院 (系): 电气与信息工程学院 专 业: 电子信息科学与技术指导教师: 杨帆 2015 年 06月26日课程设计报告1 课程设计介绍 1.1 课程设计内容 软件技术基础课程是非计算机本科专业学习计算机软件基础知识的综合性基础课程。学习本课程,要求学生对软件技术的各个组成部分的基础知识、发展趋势有全面、系统的了解;掌握基本数据结构,达到能熟练运用解决实际问题的程度;掌握操作系统基本原理和类型,了解系统各种管理功能。通过自学了解软件工程的基本概念,软件设计开发的过程和相关技术。 实践环节具体任务:设计、开

2、发一种火车订票系统。通过此系统可以实现如下功能:火车车次信息录入、车次信息查询、火车票订票、火车票退票等。1.2 课程设计要求 系统应该至少提供以下模块: 火车车次信息录入: 可以录入车次情况(包含车次编号、出发时间、出发站、到达站、到达时间、途经主要大站(需要考虑如何保存这些信息)等信息) 车次信息查询: 可以查询某个车次的情况(如,输入车次号,查询出站、到站时间,票价,票价折扣,确定车次是否满员);可以输入出发站点、到达站点城市,查询火车车次情况; 火车票订票: 可以订票,如果该车次已经无票,可以提供相关可选择车次(同样到达点、途经出发站的其他火车)订票时需要提供时间、车次、车厢号、座位号

3、、票价、订票人姓名、订票人联系方式、证件号码、订票数量、订单号等,只能比这个多,不能少于这些信息; 火车票退票: 可退票,退票后修改相关数据;客户资料有姓名,证件号,订票数量及车次情况,订单要有编号。 要求: 根据以上功能说明,设计火车票订票系统订票环节涉及的信息,订票信息的存储结构,设计程序完成功能。2 概要介绍 2.1系统总体设计 首先考虑好选用链表结构存储通讯录。经过对程序设计题目的分析可知,整个程序的设计实现大致分为六个模块,每一个模块对应一个函数。这些函数分别为:火车信息录入函数,火车车次查询函数,火车票订票函数,火车票退票函数,显示火车信息函数,主函数(包括菜单控制程序函数)。 2

4、.2各子模块设计2.2.1主函数模块: 实现程序最初运行时的菜单界面,以及对其他模块的调用。同时建立火车信息单链表。其中采用switch函数实现对菜单目录的每个模块的运行。 结构框图:2.2.2火车信息录入模块: 主要实现程序最初运行时火车信息的录入。用头插入法建立带有头结点的单链表。结构框图:2.2.3火车订票模块: 实现的功能是查询到火车信息后,客户购买火车票,输入客户的姓名、手机号、身份证号等基本信息并依次保存到客户链表位置。 结构框图:2.2.4火车票退票模块: 实现的是查询已订票的客户,然后退票并输出订单号。结构框图:2.2.5火车车次查询模块: 实现的是查询目前链表里火车的信息。该

5、模块又细分为3个小模块,分别是按编号查询、按出发站查询、按终点站查询,用if选择语句实现对这三个小模块的运行选择。查询功能用strcmp比较函数实现,Strcmp函数比较原理:例如:strcmp(str1,str2); 比较的结果由函数值带回。如果字符串1=字符串2,则函数值为0.如果字符串1字符串2,则函数值为一个正整数.如果字符串1字符串2,则函数值为一个负整数.流程图:2.2.6显示火车信息模块: 实现功能为显示链表中所有的火车信息。原理是遍历链表,并输出所有信息。结构框图:3 详细设计 3.1主函数模块所涉及的函数分析源代码:#include#include#include/使用get

6、ch()#includestruct train char num10; /火车编号 char ltime10; /出发时间 char atime10;/到达时间 char leave10;/出发站 char arrive10; /到达站 char through10;/途径大站 char price10;/票价 char shengpiao10;/剩余票数 struct train *next;/火车信息单链表struct manchar name10; /姓名 char phone11; /手机号 char number18;/身份证号struct man *next;/客户信息单链表vo

7、id main()/主函数,菜单程序 train *head=(train*)malloc(sizeof(train); man *h=(man*)malloc(sizeof(man); head-next=NULL; h-next=NULL; char choice; printf(n-n); printf(-n); printf(- -n); printf(- 欢迎进入火车票管理系统 -n); printf(- -n); printf(-n); printf(-nn); printf( n - 请输入选项 -n); printf( 1.火车信息录入n); printf( 2.火车信息查询n

8、); printf( 3.购票n); printf( 4.退票n); printf( 5.显示火车信息n); printf( 6.退出管理系统n); printf( 请按键选择n); while(true) printf(请按键选择操作:n); fflush(stdin); /清除缓冲区 choice=getch(); switch(choice) case 1: printf(*n); printf(* 火 车 信 息 的 录 入 *n); printf(*n); insert(head);/调用录入函数 break; case 2: printf(*n); printf(* 查 询 火 车

9、 信 息 *n); printf(*n); find(head);/调用查询函数 break; case 3: printf(*n); printf(* 购 买 火 车 票 *n); printf(*n); printf(*请查询火车信息*n); find(head);/调用查询函数 buy(h);/调用买票函数 break; case 4: printf(*n); printf(* 退 票 *n); printf(*n); nam(h);/调用查询客户函数 tui(h);/调用退票函数 break; case 5: printf(*n); printf(* 显 示 火 车 信 息 *n);

10、printf(*n); show(head); break; case 6: exit(0); default: printf(输入错误n); 流程图:3.2录入火车信息模块所涉及的函数分析源代码:void insert(train* head)/录入火车信息 train *p=head;/申请头结点 train *newrecord=(train*)malloc(sizeof(train);/申请存空间 printf(输入火车信息n); printf(编号:); scanf(%s,newrecord-num); printf(出发时间:); scanf(%s,newrecord-ltime)

11、; printf(到达时间:); scanf(%s,newrecord-atime); printf(出发站:); scanf(%s,newrecord-leave); printf(到达站:); scanf(%s,newrecord-arrive); printf(途径大站:); scanf(%s,newrecord-through); printf(票价:); scanf(%s,newrecord-price); printf(剩余票数:); scanf(%s,newrecord-shengpiao); while(p-next!=NULL) if(strcmp(p-num,newreco

12、rd-num)=0) printf(此编号的列车已存在!n); return; p=p-next; p-next=newrecord; newrecord-next=NULL; printf(添加成功n);流程图:3.3火车票订票模块所涉及的函数分析源代码:void buy(man* h)/订票函数 int i,j,k,a,b,c; a=1;b=1;c=1001; printf(是否订票(1/0):); scanf(%d,&i); if(i=1) printf(请输入订票数量n); scanf(%d,&j); for(k=0;kname); printf(手机号:); scanf(%sn,ne

13、wrecord-phone); printf(身份证号:); scanf(%sn,newrecord-number); printf(=n); printf(购票成功n); printf(车厢号:%dn,&a); printf(座位号:%dn,&b); printf(订单号:%dn,&c); printf(=n); while(p-next!=NULL) p=p-next; b=b+1; c=c+1; p-next=newrecord; newrecord-next=NULL; 流程图:3.4退订火车票模块所涉及的函数分析源代码:void tui(man* h)/退票函数 int n,m; m

14、=1000; printf(是否退票(1/0):); scanf(%d,&n); if(n=1) printf(退票成功n); printf(订单号为:%d,&m); m=m+1; void nam(man* h)/查询客户信息函数 man *p=h-next; char name10; printf(请输入要查询的名字: n); p=h-next; scanf(%s,name); while(p!=NULL) if(strcmp(p-name,name)=0) printf(客户信息:n); printf(姓名:%sn,p-name); printf(手机号:%sn,p-phone); pr

15、intf(身份证号:%sn,p-number); return; p=p-next; 流程图:3.5查询成员模块所涉及的函数分析源代码:void find(train *head)/查询 train *p=head-next; char num10; char leave10; char arrive10; int y; printf(=n); printf( 1. 按编号查询 n); printf( 2. 按出发站查询 n); printf( 3. 按到达站查询 n); printf(=n); printf( 请 选 择: ); p=head-next; scanf(%d,&y); if (

16、y=1) printf(请输入要查找的编号:); scanf(%s,num); while(p!=NULL) if(strcmp(p-num,num)=0) printf(编号:%sn,p-num); printf(出发时间:%sn,p-ltime); printf(到达时间:%sn, p-atime); printf(出发站:%sn,p-leave); printf(到达站:%sn,p-arrive); printf(票价:%sn,p-price); printf(途经城市:%sn,p-through); printf(剩票:%sn,p-shengpiao); return; p=p-nex

17、t; else if(y=2) printf( 请输入要查找的出发站:); scanf(%s,leave); while(p!=NULL) if(strcmp(p-leave,leave)=0) printf(编号:%sn,p-num); printf(出发时间:%sn,p-ltime); printf(到达时间:%sn, p-atime); printf(出发站:%sn,p-leave); printf(到达站:%sn,p-arrive); printf(票价:%sn,p-price); printf(途经城市:%sn,p-through); printf(剩票:%sn,p-shengpia

18、o); return; p=p-next; printf(不存在此出发站的车次n);else if(y=3) printf( 请输入要查找的到达站:); scanf(%s,arrive); while(p!=NULL) if(strcmp(p-arrive,arrive)=0) printf(编号:%sn,p-num); printf(出发时间:%sn,p-ltime); printf(到达时间:%sn, p-atime); printf(出发站:%sn,p-leave); printf(到达站:%sn,p-arrive); printf(票价:%sn,p-price); printf(途经城

19、市:%sn,p-through); printf(剩票:%sn,p-shengpiao); return; p=p-next; printf(不存在此终点站的车次n);void show(train *head)/显示列车所有信息 train *p=head-next; while(p!=NULL) printf(编号:%sn,p-num); printf(出发时间:%sn,p-ltime); printf(到达时间:%sn, p-atime); printf(出发站:%sn,p-leave); printf(到达站:%sn,p-arrive); printf(票价:%sn,p-price);

20、 printf(途经城市:%sn,p-through); printf(剩票:%sn,p-shengpiao); p=p-next; 流程图: 3.6显示成员模块所涉及的函数分析源代码:void show(train *head)/显示列车所有信息 train *p=head-next; while(p!=NULL) printf(编号:%sn,p-num); printf(出发时间:%sn,p-ltime); printf(到达时间:%sn, p-atime); printf(出发站:%sn,p-leave); printf(到达站:%sn,p-arrive); printf(票价:%sn,

21、p-price); printf(途经城市:%sn,p-through); printf(剩票:%sn,p-shengpiao); p=p-next; 流程图:4 软件测试4.1主程序运行界面4.2功能测试4.2.1火车信息录入功能模块运行结果截图 在录入模块中输入火车基本信息,并进行后续的功能测试。在录入后采用模块功能5输出链表中目前所有的火车信息,以此可以检验是否录入成功。录入截图:显示截图:4.2.2火车票订票功能模块运行结果截图 继续火车信息录入功能后进行订票功能模块运行。首先调用查询模块查询所需求的列车信息,然后订票输入订票人基本信息。查询截图:订票客户信息截图:4.2.3退票功能模

22、块运行结果截图 继订票模块功能测试后,进行退票功能测试。首先查询已经订票客户的信息,然后退票。退票截图:4.2.4查询功能模块运行结果截图 查询功能模块分为三部分,以下分别为三个功能的截图。1.按编号查询:2.按出发站查询:3:按终点站查询:如果没有该列车的截图: 4.2.5显示功能模块运行结果截图5 总结5.1设计中出现的问题以及解决的办法汇总(调试过程记录)没有解决的问题: 设计中有一些问题没有在软件中得以实现,比如老师要求的在火车票订票模块中,如果该车次已经无票,可以提供相关可选择车次,该系统中没有实现这一功能;没有折扣等列车基本信息。在订票模块中,输入客户信息时,信息错位,如下图: 在

23、输入客户信息时有错,输入名字后本应该输入手机号,但是系统没有弹出手机号而是需要继续输入,这样就导致后边退票时查询的客户信息发生错位,问题原因所在应该是指针的问题。 完成订票后,没有将单链表中火车剩余票数修改,没有将俩个单链表联系起来所以没有实现这一功能。 实现车厢号和座位号时,原计划是车厢号从1开始,每节车厢30个座位,座位满30后车厢号加一,然后座位号从一号重新开始,但是代码一直没有编译通过。已经解决的问题: 在录入信息输入后,一开始输出的页面是说有信息在一行,后面运行后发现会发生错位现象,后来在每输完一个信息后就换行,输出也同样如此,这样就可以更加直观的浏览到信息,不会错位。而且一开始的输

24、出方法录入信息时必须制定信息长度,比如编号是四位,手机号是十一位,时间地点等都有输入字数限制,后来发现这一弊端后进行改进,在换成了换行输入输出后,都不用规定长度。但是这样有个缺陷就是数据输错后不容易发现,而且不符合常理,比如手机号只有11位,身份证号应该是18位。5.2课程设计心得体会 本来一开始做的时通讯录系统,后来又在假期重新做的火车票订票系统。如今系统还不是很完善,就如上文所说,有部分小细节还不能实现,而且还有点问题没有解决。经过这次课程设计的训练,我的编程能力有了较明显的提高,尤其是对顺序表和链表的认识和使用有了显著的提高。然而,虽然只是编写这么一个小小的程序,却是我意识到自己的不足以及需要提高的地方。程序语句的不熟练使我在编程初期工作效率相当的低下。不断地翻书让我很痛苦,而且浪费了很多时间。 最后,通过这两周的编程,我感觉到了程序的来之不易。平时惯用的免费软件没觉得有什么,但通过本次的编程后我感觉到了编程者的艰辛。这次编程我学到了很多,也懂得了很多。我的C语言又有了新的提高,质的升华。所有源代码:#include#include#include/使用getch()#includestruct train char num10; /火车编号 char ltime10; /出发时间 char atime10;/到达时间 char lea

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1