火车票订票系统.docx

上传人:b****2 文档编号:2022301 上传时间:2023-05-02 格式:DOCX 页数:41 大小:761.60KB
下载 相关 举报
火车票订票系统.docx_第1页
第1页 / 共41页
火车票订票系统.docx_第2页
第2页 / 共41页
火车票订票系统.docx_第3页
第3页 / 共41页
火车票订票系统.docx_第4页
第4页 / 共41页
火车票订票系统.docx_第5页
第5页 / 共41页
火车票订票系统.docx_第6页
第6页 / 共41页
火车票订票系统.docx_第7页
第7页 / 共41页
火车票订票系统.docx_第8页
第8页 / 共41页
火车票订票系统.docx_第9页
第9页 / 共41页
火车票订票系统.docx_第10页
第10页 / 共41页
火车票订票系统.docx_第11页
第11页 / 共41页
火车票订票系统.docx_第12页
第12页 / 共41页
火车票订票系统.docx_第13页
第13页 / 共41页
火车票订票系统.docx_第14页
第14页 / 共41页
火车票订票系统.docx_第15页
第15页 / 共41页
火车票订票系统.docx_第16页
第16页 / 共41页
火车票订票系统.docx_第17页
第17页 / 共41页
火车票订票系统.docx_第18页
第18页 / 共41页
火车票订票系统.docx_第19页
第19页 / 共41页
火车票订票系统.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

火车票订票系统.docx

《火车票订票系统.docx》由会员分享,可在线阅读,更多相关《火车票订票系统.docx(41页珍藏版)》请在冰点文库上搜索。

火车票订票系统.docx

火车票订票系统

 

 

 

软件技术基础课程设计说明书

 

题目:

火车订票系统的设计

 

学生姓名:

学号:

院(系):

电气与信息工程学院

专业:

电子信息科学与技术

*******

2015年06月26日

课程设计报告

1课程设计介绍

1.1课程设计内容

软件技术基础课程是非计算机本科专业学习计算机软件基础知识的综合性基础课程。

学习本课程,要求学生对软件技术的各个组成部分的基础知识、发展趋势有全面、系统的了解;掌握基本数据结构,达到能熟练运用解决实际问题的程度;掌握操作系统基本原理和类型,了解系统各种管理功能。

通过自学了解软件工程的基本概念,软件设计开发的过程和相关技术。

实践环节具体任务:

设计、开发一种火车订票系统。

通过此系统可以实现如下功能:

火车车次信息录入、车次信息查询、火车票订票、火车票退票等。

1.2课程设计要求

系统应该至少提供以下模块:

火车车次信息录入:

可以录入车次情况(包含车次编号、出发时间、出发站、到达站、到达时间、途经主要大站(需要考虑如何保存这些信息)等信息)

车次信息查询:

可以查询某个车次的情况(如,输入车次号,查询出站、到站时间,票价,票价折扣,确定车次是否满员);可以输入出发站点、到达站点城市,查询火车车次情况;

火车票订票:

可以订票,如果该车次已经无票,可以提供相关可选择车次(同样到达点、途经出发站的其他火车)——订票时需要提供时间、车次、车厢号、座位号、票价、订票人姓名、订票人联系方式、证件号码、订票数量、订单号等,只能比这个多,不能少于这些信息;

火车票退票:

可退票,退票后修改相关数据;客户资料有姓名,证件号,订票数量及车次情况,订单要有编号。

要求:

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

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

#include

#include//使用getch()

#include

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->next=NULL;

charchoice;

printf("\n----------------------------------------------\n");

printf("----------------------------------------------\n");

printf("------\n");

printf("---欢迎进入火车票管理系统---\n");

printf("------\n");

printf("----------------------------------------------\n");

printf("----------------------------------------------\n\n");

printf("\n--------------请输入选项-------------\n");

printf("\1.火车信息录入\n");

printf("\2.火车信息查询\n");

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("*查询火车信息*\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");

printf("************************************\n");

show(head);

break;

case'6':

exit(0);

default:

printf("输入错误\n");

}

}

}

流程图:

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

源代码:

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

{

train*p=head;//申请头结点

train*newrecord=(train*)malloc(sizeof(train));//申请存空间

printf("输入火车信息\n");

printf("编号:

");

scanf("%s",newrecord->num);

printf("出发时间:

");

scanf("%s",newrecord->ltime);

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,newrecord->num)==0)

{

printf("此编号的列车已存在!

\n");

return;

}

p=p->next;

}

p->next=newrecord;

newrecord->next=NULL;

printf("添加成功\n");

}

流程图:

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

源代码:

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

{

inti,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;k

{

man*p=h;//申请头结点

man*newrecord=(man*)malloc(sizeof(man));//申请存空间

printf("输入客户信息\n");

printf("姓名:

");

scanf("%s\n",newrecord->name);

printf("手机号:

");

scanf("%s\n",newrecord->phone);

printf("身份证号:

");

scanf("%s\n",newrecord->number);

printf("==================\n");

printf("购票成功\n");

printf("车厢号:

%d\n",&a);

printf("座位号:

%d\n",&b);

printf("订单号:

%d\n",&c);

printf("==================\n");

while(p->next!

=NULL)

{

p=p->next;

b=b+1;

c=c+1;

}

p->next=newrecord;

newrecord->next=NULL;

}

}

}

流程图:

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

源代码:

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

{intn,m;

m=1000;

printf("是否退票(1/0):

");

scanf("%d",&n);

if(n==1)

{printf("退票成功\n");

printf("订单号为:

%d",&m);

m=m+1;

}

}

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

{

man*p=h->next;

charname[10];

printf("请输入要查询的名字:

\n");

p=h->next;

scanf("%s",name);

while(p!

=NULL)

{

if(strcmp(p->name,name)==0)

{

printf("客户信息:

\n");

printf("姓名:

%s\n",p->name);

printf("手机号:

%s\n",p->phone);

printf("身份证号:

%s\n",p->number);

return;

}

p=p->next;

}

}

流程图:

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

源代码:

voidfind(train*head)//查询

{

train*p=head->next;

charnum[10];

charleave[10];

chararrive[10];

inty;

printf("==================\n");

printf("1.按编号查询\n");

printf("2.按出发站查询\n");

printf("3.按到达站查询\n");

printf("==================\n");

printf("请选择:

");

p=head->next;

scanf("%d",&y);

if(y==1)

{

printf("请输入要查找的编号:

");

scanf("%s",num);

while(p!

=NULL)

{

if(strcmp(p->num,num)==0)

{

printf("编号:

%s\n",p->num);

printf("出发时间:

%s\n",p->ltime);

printf("到达时间:

%s\n",p->atime);

printf("出发站:

%s\n",p->leave);

printf("到达站:

%s\n",p->arrive);

printf("票价:

%s\n",p->price);

printf("途经城市:

%s\n",p->through);

printf("剩票:

%s\n",p->shengpiao);

return;

}

p=p->next;

}

}

elseif(y==2)

{printf("请输入要查找的出发站:

");

scanf("%s",leave);

while(p!

=NULL)

{

if(strcmp(p->leave,leave)==0)

{

printf("编号:

%s\n",p->num);

printf("出发时间:

%s\n",p->ltime);

printf("到达时间:

%s\n",p->atime);

printf("出发站:

%s\n",p->leave);

printf("到达站:

%s\n",p->arrive);

printf("票价:

%s\n",p->price);

printf("途经城市:

%s\n",p->through);

printf("剩票:

%s\n",p->shengpiao);

return;

}

p=p->next;

}

printf("不存在此出发站的车次\n");

}

elseif(y==3)

{

printf("请输入要查找的到达站:

");

scanf("%s",arrive);

while(p!

=NULL)

{

if(strcmp(p->arrive,arrive)==0)

{

printf("编号:

%s\n",p->num);

printf("出发时间:

%s\n",p->ltime);

printf("到达时间:

%s\n",p->atime);

printf("出发站:

%s\n",p->leave);

printf("到达站:

%s\n",p->arrive);

printf("票价:

%s\n",p->price);

printf("途经城市:

%s\n",p->through);

printf("剩票:

%s\n",p->shengpiao);

return;

}

p=p->next;

}

printf("不存在此终点站的车次\n");

}

}

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

{

train*p=head->next;

while(p!

=NULL)

{

printf("编号:

%s\n",p->num);

printf("出发时间:

%s\n",p->ltime);

printf("到达时间:

%s\n",p->atime);

printf("出发站:

%s\n",p->leave);

printf("到达站:

%s\n",p->arrive);

printf("票价:

%s\n",p->price);

printf("途经城市:

%s\n",p->through);

printf("剩票:

%s\n",p->shengpiao);;

p=p->next;

}

}

流程图:

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

源代码:

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

{

train*p=head->next;

while(p!

=NULL)

{

printf("编号:

%s\n",p->num);

printf("出发时间:

%s\n",p->ltime);

printf("到达时间:

%s\n",p->atime);

printf("出发站:

%s\n",p->leave);

printf("到达站:

%s\n",p->arrive);

printf("票价:

%s\n",p->price);

printf("途经城市:

%s\n",p->through);

printf("剩票:

%s\n",p->shengpiao);;

p=p->next;

}

}

流程图:

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语言又有了新的提高,质的升华。

 

 

所有源代码:

#include

#include

#include//使用getch()

#include

structtrain

{

charnum[10];//火车编号

charltime[10];//出发时间

charatime[10];//到达时间

charleave[10];//出发站

chararrive[10];//到达站

charthrough[10];

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2