火车票订票系统Word格式文档下载.docx

上传人:b****5 文档编号:16782117 上传时间:2022-11-26 格式:DOCX 页数:37 大小:736.53KB
下载 相关 举报
火车票订票系统Word格式文档下载.docx_第1页
第1页 / 共37页
火车票订票系统Word格式文档下载.docx_第2页
第2页 / 共37页
火车票订票系统Word格式文档下载.docx_第3页
第3页 / 共37页
火车票订票系统Word格式文档下载.docx_第4页
第4页 / 共37页
火车票订票系统Word格式文档下载.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

火车票订票系统Word格式文档下载.docx

《火车票订票系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《火车票订票系统Word格式文档下载.docx(37页珍藏版)》请在冰豆网上搜索。

火车票订票系统Word格式文档下载.docx

火车票退票:

可退票,退票后修改相关数据;

客户资料有姓名,证件号,订票数量及车次情况,订单要有编号。

要求:

根据以上功能说明,设计火车票订票系统订票环节涉及的信息,订票信息的存储结构,设计程序完成功能。

2概要介绍

2.1系统总体设计

首先考虑好选用链表结构存储通讯录。

经过对程序设计题目的分析可知,整个程序的设计实现大致分为六个模块,每一个模块对应一个函数。

这些函数分别为:

火车信息录入函数,火车车次查询函数,火车票订票函数,火车票退票函数,显示火车信息函数,主函数(包括菜单控制程序函数)。

2.2各子模块设计

2.2.1主函数模块:

实现程序最初运行时的菜单界面,以及对其他模块的调用。

同时建立火车信息单链表。

其中采用switch函数实现对菜单目录的每个模块的运行。

结构框图:

2.2.2火车信息录入模块:

主要实现程序最初运行时火车信息的录入。

用头插入法建立带有头结点的单链表。

结构框图:

2.2.3火车订票模块:

实现的功能是查询到火车信息后,客户购买火车票,输入客户的姓名、手机号、身份证号等基本信息并依次保存到客户链表位置。

2.2.4火车票退票模块:

实现的是查询已订票的客户,然后退票并输出订单号。

2.2.5火车车次查询模块:

实现的是查询目前链表里火车的信息。

该模块又细分为3个小模块,分别是按编号查询、按出发站查询、按终点站查询,用if选择语句实现对这三个小模块的运行选择。

查询功能用strcmp比较函数实现,

Strcmp函数比较原理:

例如:

strcmp(str1,str2);

比较的结果由函数值带回。

如果字符串1=字符串2,则函数值为0.

如果字符串1>

字符串2,则函数值为一个正整数.

如果字符串1<

字符串2,则函数值为一个负整数.

流程图:

2.2.6显示火车信息模块:

实现功能为显示链表中所有的火车信息。

原理是遍历链表,并输出所有信息。

3详细设计

3.1主函数模块所涉及的函数分析

源代码:

#include<

stdio.h>

stdlib.h>

conio.h>

//使用getch()

string.h>

structtrain

{

charnum[10];

//火车编号

charltime[10];

//出发时间

charatime[10];

//到达时间

charleave[10];

//出发站

chararrive[10];

//到达站

charthrough[10];

//途径大站

charprice[10];

//票价

charshengpiao[10];

//剩余票数

structtrain*next;

};

//火车信息单链表

structman

charname[10];

//姓名

charphone[11];

//手机号

charnumber[18];

//身份证号

structman*next;

//客户信息单链表

voidmain()//主函数,菜单程序

train*head=(train*)malloc(sizeof(train));

man*h=(man*)malloc(sizeof(man));

head->

next=NULL;

h->

charchoice;

printf("

\n----------------------------------------------\n"

);

----------------------------------------------\n"

------\n"

---欢迎进入火车票管理系统---\n"

----------------------------------------------\n\n"

\n--------------请输入选项-------------\n"

\1.火车信息录入\n"

\2.火车信息查询\n"

\3.购票\n"

\4.退票\n"

\5.显示火车信息\n"

\6.退出管理系统\n"

\请按键选择\n"

while(true)

{

请按键选择操作:

\n"

fflush(stdin);

//清除缓冲区

choice=getch();

switch(choice)

case'

1'

:

**********************************\n"

*火车信息的录入*\n"

insert(head);

//调用录入函数

break;

2'

***********************************\n"

*查询火车信息*\n"

find(head);

//调用查询函数

3'

*购买火车票*\n"

printf("

***请查询火车信息***\n"

find(head);

buy(h);

//调用买票函数

4'

*退票*\n"

nam(h);

//调用查询客户函数

tui(h);

//调用退票函数

5'

************************************\n"

*显示火车信息*\n"

show(head);

6'

exit(0);

default:

输入错误\n"

}

}

3.2录入火车信息模块所涉及的函数分析

voidinsert(train*head)//录入火车信息

train*p=head;

//申请头结点

train*newrecord=(train*)malloc(sizeof(train));

//申请存空间

输入火车信息\n"

编号:

"

scanf("

%s"

newrecord->

num);

出发时间:

ltime);

到达时间:

atime);

出发站:

leave);

到达站:

arrive);

途径大站:

through);

票价:

price);

剩余票数:

shengpiao);

while(p->

next!

=NULL)

if(strcmp(p->

num,newrecord->

num)==0)

此编号的列车已存在!

return;

p=p->

next;

p->

next=newrecord;

newrecord->

添加成功\n"

3.3火车票订票模块所涉及的函数分析

voidbuy(man*h)//订票函数

inti,j,k,a,b,c;

a=1;

b=1;

c=1001;

是否订票(1/0):

%d"

&

i);

if(i==1)

请输入订票数量\n"

scanf("

j);

for(k=0;

k<

j;

k++)

man*p=h;

man*newrecord=(man*)malloc(sizeof(man));

输入客户信息\n"

姓名:

%s\n"

name);

手机号:

phone);

身份证号:

number);

==================\n"

购票成功\n"

车厢号:

%d\n"

a);

座位号:

b);

订单号:

c);

b=b+1;

c=c+1;

}

3.4退订火车票模块所涉及的函数分析

voidtui(man*h)//退票函数

{intn,m;

m=1000;

是否退票(1/0):

n);

if(n==1)

{printf("

退票成功\n"

订单号为:

m);

m=m+1;

voidnam(man*h)//查询客户信息函数

man*p=h->

charname[10];

请输入要查询的名字:

\n"

p=h->

name);

while(p!

name,name)==0)

客户信息:

p->

3.5查询成员模块所涉及的函数分析

voidfind(train*head)//查询

train*p=head->

inty;

1.按编号查询\n"

2.按出发站查询\n"

3.按到达站查询\n"

请选择:

"

p=head->

y);

if(y==1)

请输入要查找的编号:

num);

num,num)==0)

p->

途经城市:

剩票:

elseif(y==2)

{printf("

请输入要查找的出发站:

leave);

leave,leave)==0)

不存在此出发站的车次\n"

elseif(y==3)

{

请输入要查找的到达站:

arrive);

arrive,arrive)==0)

不存在此终点站的车次\n"

voidshow(train*head)//显示列车所有信息

;

3.6显示成员模块所涉及的函数分析

4软件测试

4.1主程序运行界面

4.2功能测试

4.2.1火车信息录入功能模块运行结果截图

在录入模块中输入火车基本信息,并进行后续的功能测试。

在录入后采用模块功能5输出链表中目前所有的火车信息,以此可以检验是否录入成功。

录入截图:

显示截图:

4.2.2火车票订票功能模块运行结果截图

继续火车信息录入功能后进行订票功能模块运行。

首先调用查询模块查询所需求的列车信息,然后订票输入订票人基本信息。

查询截图:

订票客户信息截图:

4.2.3退票功能模块运行结果截图

继订票模块功能测试后,进行退票功能测试。

首先查询已经订票客户的信息,然后退票。

退票截图:

4.2.4查询功能模块运行结果截图

查询功能模块分为三部分,以下分别为三个功能的截图。

1.按编号查询:

2.按出发站查询:

3:

按终点站查询:

如果没有该列车的截图:

4.2.5显示功能模块运行结果截图

5总结

5.1设计中出现的问题以及解决的办法汇总(调试过程记录)

没有解决的问题:

设计中有一些问题没有在软件中得以实现,比如老师要求的在火车票订票模块中,如果该车次已经无票,可以提供相关可选择车次,该系统中没有实现这一功能;

没有折扣等列车基本信息。

在订票模块中,输入客户信息时,信息错位,如下图:

在输入客户信息时有错,输入名字后本应该输入手机号,但是系统没有弹出手机号而是需要继续输入,这样就导致后边退票时查询的客户信息发生错位,问题原因所在应该是指针的问题。

完成订票后,没有将单链表中火车剩余票数修改,没有将俩个单链表联系起来所以没有实现这一功能。

实现车厢号和座位号时,原计划是车厢号从1开始,每节车厢30个座位,座位满30后车厢号加一,然后座位号从一号重新开始,但是代码一直没有编译通过。

已经解决的问题:

在录入信息输入后,一开始输出的页面是说有信息在一行,后面运行后发现会发生错位现象,后来在每输完一个信息后就换行,输出也同样如此,这样就可以更加直观的浏览到信息,不会错位。

而且一开始的输出方法录入信息时必须制定信息长度,比如编号是四位,手机号是十一位,时间地点等都有输入字数限制,后来发现这一弊端后进行改进,在换成了换行输入输出后,都不用规定长度。

但是这样有个缺陷就是数据输错后不容易发现,而且不符合常理,比如手机号只有11位,身份证号应该是18位。

5.2课程设计心得体会

本来一开始做的时通讯录系统,后来又在假期重新做的火车票订票系统。

如今系统还不是很完善,就如上文所说,有部分小细节还不能实现,而且还有点问题没有解决。

经过这次课程设计的训练,我的编程能力有了较明显的提高,尤其是对顺序表和链表的认识和使用有了显著的提高。

然而,虽然只是编写这么一个小小的程序,却是我意识到自己的不足以及需要提高的地方。

程序语句的不熟练使我在编程初期工作效率相当的低下。

不断地翻书让我很痛苦,而且浪费了很多时间。

最后,通过这两周的编程,我感觉到了程序的来之不易。

平时惯用的免费软件没觉得有什么,但通过本次的编程后我感觉到了编程者的艰辛。

这次编程我学到了很多,也懂得了很多。

我的C语言又有了新的提高,质的升华。

所有源代码:

charlea

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 日语学习

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

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