1、课程设计说明书 长途汽车站车票订票系统设计与实现(顺序表实现) 摘 要 数据结构中,主要讲解的是典型的数据结构:线性表,树与二叉树,图等的存储及基本操作。《数据结构》在计算机科学中是一门综合性的专业基础课。本课程程介绍如何组织数据在计算机中的存储、传递和转换。内容包括:数组、链接表、栈和队列、树与森林、图、查找、排序等。课程采用Turbo C语言作为算法的描述工具,强化数据结构基本知识和程序设计基本能力的双基训练,为后续计算机专业课程的学习打下坚实的基础。数据结构的研究不仅涉及到计算机硬件(特别是编码理论、存储装置和存取方法等)的研究范围,而且和计算机软件的研究有着更密切的关
2、系,无论是编译程序还是操作系统,都涉及到数据元素在存储器中的分配问题。在研究信息检索时也必须考虑如何组织数据,以便查找和存取数据元素更为方便。因此,可以认为数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程,在计算机科学中,数据结构不仅是一般程序设计(特别是非数值计算的程序设计)的基础,而且是设计和实现编译程序、操作系统、数据系统及其它系统程序和大型应用程序的重要基础。 本次课程设计的题目是长途汽车站车票订票系统,是通过访问主页,可以实现车次车票价格的查询,在线订票退票等基本功能,为用户提供方便快捷的订票服务。 本文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点
3、说明了系统的设计思路、总体设计、各个功能模块的设计与实现方法。 关键词:学生成绩, C语言, 数据结构 本章叙述了系统的总体设计 6 2.1 系统模块划分 6 2.2 系统模块结构图 7 3.1系统主界面设计 8 3.2插入新乘客 9 3.3按信息查询 11 3.4修改信息 14 3.5退票 15 3.6票存 16 3.7退出 17 总 结 1 参考文献 1 本章叙述的是系统概述 1 系统概述 1.1现状描述 目前我国各地区的汽车售
4、票信息化水平差异较大,虽然大部分二级以上的客运站实现了区域内联网售票,但在经济不发达地区和大多数三级以下客运站,还是采用传统的售票方式。在没有实现联网售票的地区,旅客购票是十分不便的。互相之间的发车信息沟通缺乏渠道,互相之间不能实现互售。出行者购票,并不知道各站的具体班次,也不知道去哪个站可以买到,加之公路客运的特点是一段时期内变化较大,班次和发班时间往往根据季节和客流量大小有所调整,出行人更是难以把握。而在南方一些城市密集地区,客运比较发达,售票的信息化水平相对较高。 汽车售票管理系统主要用于车站日常的票务处理。车售票管理系统在正常运行中需要对使用该系统的主要是汽车站售票人员、汽车站售票工
5、作的管理人员与系统管理员。现今的社会发展迅速,汽车成为了人们在交通方面不可缺少的交通工具为了给人们带来方便快捷的交通环境,公路系统采取提高汽车的速度,增加客运汽车等等从而来满足大量的旅客的乘车需求。如此的情况之下,售票系统的需要自然是相当必要的。目前,售票系统在国内外都已经得到了广泛的应用,无论是在飞机场,火车站,还是汽车站,都是借助于售票系统进行售票的。 1.2系统目标实现 方便、快速售票;使汽车客运中心管理手段现代化,减轻工作人员的工作强度,提高工作效率,减少在售票工作中的人为差错;保证售票员和售票窗口可灵活增减;帮助工作人员掌握每天的客票收入情况实现对业务信息的高效管理。
6、 1.3系统可行性分析 a.经济可行性 在一定程度上讲汽车票预定系统对汽车运输公司而言在长期利益上看是有很大的收益的,故在某种意义上讲经济上是可行的。 b.社会可行性 汽车票预定系统是一个广大旅客出行的系统,它为旅客提供了便捷的服务, 为汽车运输公司减少工作量,故在社会可行性方面是毋庸置疑的。 1.4系统设计目的 设计人员设计售票管理系统的最终目标是使汽车客运中心管理手段现代化,减轻工作人员的工作强度,提高工作效率,减少在售票工作中的人为差错;保证售票员和售票窗口可灵活增减;帮助工作人员掌握每天的客票收入情况实现对业务信息的高效管理;方便旅客对车次、票价等
7、信息的查询,帮助旅客及时了解发车时间、票价、车次等情况。本系统的总体设计原则是:“立足现在,着眼未来;总体规划,分步实施”。即在方案总体的设计和选型中要充分考虑技术的发展,力求所用技术在今后相当长的一段时间内不落后;系统除具有较高的可靠性外,还将有良好的灵活性和可伸缩性,以利于以后系统的扩展;考虑到硬件更新换代周期短,因此所选设备应可靠、经济、实用;软件开发除采用新的开发工具外,还要设计良好的接口,以利于功能模块的增加。总之,系统的设计应遵循科学性、安全性、可靠性、灵活性、实用性和经济性相结合的原则。 1.5研究意义 随着我国交通行业的快速发展, 各种业务量快速发展, 不断出
8、现新的业务与服务, 售票系统的作用日益凸显。 然而当前的汽车客运站普遍存在的一个现象是所有与车票购买、 改签、 查询、 退票等一系列业务只能在车站进行。 甚至有的汽车客运站根本就不能进行车票的预定, 只能购买当天的车票。 面对如此巨大的旅客运输量, 却缺少完善的售票系统来管理车票的发售。 这不仅使车站的管理工作变得复杂, 而且不方便旅客的购票与出行。 因此, 设计一个新的网上售票系统来简化车站的售票工作并提高旅客的购票体验具有非常广泛的经济意义与社会意义 交通运输的发展水平直接反映了一个国家的经济发展水平, 在我国经济快速发展的阶段, 保持经济持续健康发展, 必须要有高度发达的交
9、通运输体系来保障。健全的售票系统这时就显得尤为重要, 然而当前的汽车客运站的售票具有: 实时性差、 交易时间长、 运营成本高、 数据统计繁杂、 购票体验差等显著特点。 因此,设计新的售票系统来弥补老旧售票系统的诸多不足, 既提高的售票的服务质量,又简化了车站进行数据统计的复杂程度, 优化了管理流程, 这无疑是大大提高自身的市场竞争力。 本课程设计提出构建网上售票系统的概念, 是综合考虑了当前汽车客运站售票环节的缺陷与电子商务技术的发展形势。 将车票的预定、 查询、 改签、 退票等活动在网上售票系统中进行。 旅客通过互联网就能随时随地惊醒车票的预定、 查询、 改签、 退票等, 满足了旅客“足不出
10、户, 提前购票的迫切愿望” 。 网上售票系统能未旅客带来更加快捷舒适的购票体验, 从而提高了购票的服务质量, 提高了车站的社会竞争力。 通过开展网上售票系统的研究与建设, 以此营造公平、 公正、 公开、 方便的购票环境。 本章叙述了系统的总体设计 2系统总体设计 2.1 系统模块划分 本系统主要是对订票信息的管理,包括了有关订
11、票的录入信息,信息输出,终点站查询,车号查询,价格,车号修改,插入乘客,退票,等功能。整个系统分为以下几个模块。(本章由苗东柯) 1、主系统界面模块 本模块提供车票信息管理系统的主菜单界面,供管理员选择与执行各项车票信息管理工作。 2、创建模块 本模块用于创建长途汽车车票的信息,包括车号、终点、价格、时间、票存。 3、查询模块 本模块用于查询车票信息,按车号或终点查询等。 4、修改模块 本模块用于根据输入要查询的车票来修改其相应的信息。 5、输出模块 本模块主要用于输出库中车票信息。
12、 2.2 系统模块结构图 根据系统功能设计,对应的系统模块结构图如图2.1所示: 汽车订票系统 修改信息 退票 订票 查询 车号查询 终点查找 修改车号 修改终点 订票成功 退票成功 图2.1系统模块结构图
13、 3详细设计及实现 3.1系统主界面设计 长途汽车订票系统的主界面提供进入系统其他功能模块的方法,使用者能方便地调用插入新信息、 修改、 查询、退出。代码如下: B shuru( ) { B L; int i; printf("请输入要汽车信息\n"); scanf("%d",&L.len); for(i=1;i<=L.len;i++) { printf("车号 价格 票存 时间 终点\n",i); printf("请输入车号\n"); scanf("%d",&L.data[i-1].chehao); printf("请输入终点\
14、n"); scanf("%s",L.data[i-1].zhongdian); printf("请输入价格\n"); scanf("%d",&L.data[i-1].jiage); printf("请输入时间\n"); scanf("%d",&L.data[i-1].shijian); printf("请输入票存\n"); scanf("%d",&L.data[i-1].piaocun); } return L; } 长
15、途汽车订票系统的应用程序主界面设计成如图3.1所示的界面。 图3.1 登录界面 3.2插入新乘客 在插入新乘客选项中从键盘上输入进入信息录入界面首先输入此次要录入数据的条数 其代码如下: int zhao(B L,int n) { int i=1; while(L.data[i-1].chehao!=n&&i<=L.len) i++; if(i>L.len) return L.len; else return -1; } B charu(B L) { int n,x; printf("请
16、输入该车的车号:\n"); scanf("%d",&n); x=zhao(L,n); if(x>0) { L.data[x].chehao=n; printf("请输入基本信息\n"); printf("请输入终点\n"); scanf("%s",L.data[x].zhongdian); printf("请输入价格\n"); scanf("%d",&L.data[x].jiage); printf("请输入时间\n"); scanf("%d",&L.data[x].shijian); printf("
17、请输入票存\n"); scanf("%d",&L.data[x].piaocun); L.len++;} else printf("请重新输入该车的车号:\n"); return L; } 图 3.2插入乘客界面 3.3按信息查询 在更新界面中从键盘上输入2按回车键进入按车号查找界面进入更新界面首先要输入您要查询该车的车号,然后进入查询界面,在更新界面中从键盘上输入3按回车键进入按站点查找界面进入更新界面,进入查询界面,如图 图3.3 车号查找界面 其代码如下: void
18、chehaozhao(B L) { int j=1; int n; printf("输入要查询的车号:\n"); scanf("%d",&n); while(L.data[j-1].chehao!=n&&j<=L.len) j++; if(L.data[j-1].chehao==n) { printf("车号:%d",L.data[j-1].chehao); printf("终点:%s",L.data[j-1].zhongdian); printf("价格:%d",L.data[j-1].jiage); printf("时间:%d",L.data[j-1].shiji
19、an); printf("票存:%d\n",L.data[j-1].piaocun); } else printf("没有!"); } 图3.4按终点查找界面 其代码如下: void zhongdianzhao(B L) { int j=1; char n[N]; printf("输入要查询的终点:\n"); scanf("%s",n); while(strcmp(L.data[j-1].zhongdian,n)&&j<=L.len) j++; if(strcmp(L.data[j-1].zhongdia
20、n,n)==0) { printf("车号:%d",L.data[j-1].chehao); printf("终点:%s",L.data[j-1].zhongdian); printf("价格:%d",L.data[j-1].jiage); printf("时间:%d",L.data[j-1].shijian); printf("票存:%d\n",L.data[j-1].piaocun); } else printf("没有!"); } 3.4修改信息 用户输入信息后发现信息有误或临时有事情,这时就可以使用修改功能。选择4进入修改界面,然后进行要修改的信息其代码如下:
21、 B xiugai(B L) { int i=1; int n; printf("输入要修改的车号:\n"); scanf("%d",&n); while(L.data[i-1].chehao!=n&&i<=L.len) i++; if(L.data[i-1].chehao==n) {printf("请输入要修改的信息\n"); printf("请输入价格\n"); scanf("%d",&L.data[i-1].jiage); printf("请输入时间\n"); scanf("%d",&L.data[i-1].shijian); printf("请输入票存\n"
22、); scanf("%d",&L.data[i-1].piaocun); } return L; } 3.5退票 在更新界面中从键盘上输入5按回车键进入按车号退票界面进入更新界面,然后选择要退票的车号从而进行退票: 图3.5 查询图 其代码如下: int shan(B L,int n) { int i=1; while(L.data[i-1].chehao!=n&&i<=L.len) i++; if(i>L.len) return -1; else return i; } B chehaoshanchu(B L) { int n,x,j; p
23、rintf("请输入要退票车号:\n"); scanf("%d",&n); x=shan(L,n); if(x>0) { for(j=x+1;j<=L.len;j++) { L.data[j-2].chehao=L.data[j-1].chehao; strcpy(L.data[j-2].zhongdian,L.data[j-1].zhongdian); L.data[j-2].jiage=L.data[j-1].jiage; L.data[j-2].shijian=L.data[j-1].shijian; L.data[j-2].piaocun=L.data[j-1].pi
24、aocun;
}
L.len--;}
return L;
}
3.6票存
在更新界面中从键盘上输入8按回车键进入按票存量报警界面进入更新界面,然可以查看车票的剩余量,可以更好地管理车辆的信息代码如下:
B baojing(B L)
{int i,j,k=0;
printf("检查票存量是否超出!\n");
printf("输入最小票存量:");
scanf("%d",&i);
for(j=0;j 25、"终点:%s\t\t",L.data[j-1].zhongdian);
printf("价格:%d\t\t",L.data[j-1].jiage);
printf("时间:%d\t\t",L.data[j-1].shijian);
printf("票存:%d\t\t",L.data[j-1].piaocun);
k++;}
if(k==0) printf(" 没有!");
}
return L;
}
3.7退出
按任意键即可退出订票界面,欢迎使用订票系统:
附录
源代码:
// 6666666 26、6666.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include "conio.h"
#include 27、ian,piaocun;
} A;
typedef struct B
{A data[M];
int len;
}B;
/*1录入信息*/
B shuru( )
{ B L;
int i;
printf("请输入要汽车信息\n");
scanf("%d",&L.len);
for(i=1;i<=L.len;i++)
{ printf("车号 价格 票存 时间 终点\n",i);
printf("请输入车号\n");
scanf("%d",&L.data[i-1].chehao);
printf("请输入终点\n");
scanf("%s",L.da 28、ta[i-1].zhongdian);
printf("请输入价格\n");
scanf("%d",&L.data[i-1].jiage);
printf("请输入时间\n");
scanf("%d",&L.data[i-1].shijian);
printf("请输入票存\n");
scanf("%d",&L.data[i-1].piaocun);
}
return L;
}
/*2信息输出*/
void shuchu(B L)
{int i;
printf(" 车号 终点 作者 价格 时间 票存 \n");
for(i=1;i<=L 29、len;i++)
{printf(" %d\t ",L.data[i-1].chehao);
printf("%s\t ",L.data[i-1].zhongdian);
printf("%d\t",L.data[i-1].jiage);
printf("%d\t",L.data[i-1].shijian);
printf("%d\n ",L.data[i-1].piaocun);
}
}
/*3按照终点查找*/
void zhongdianzhao(B L)
{
int j=1;
char n[N];
printf("输入要查询的终点:\n");
sca 30、nf("%s",n);
while(strcmp(L.data[j-1].zhongdian,n)&&j<=L.len)
j++;
if(strcmp(L.data[j-1].zhongdian,n)==0)
{
printf("车号:%d",L.data[j-1].chehao);
printf("终点:%s",L.data[j-1].zhongdian);
printf("价格:%d",L.data[j-1].jiage);
printf("时间:%d",L.data[j-1].shijian);
printf("票存:%d\n",L.data[j-1].piaocun) 31、
}
else
printf("没有!");
}
/*4按照车号查找*/
void chehaozhao(B L)
{
int j=1;
int n;
printf("输入要查询的车号:\n");
scanf("%d",&n);
while(L.data[j-1].chehao!=n&&j<=L.len)
j++;
if(L.data[j-1].chehao==n)
{
printf("车号:%d",L.data[j-1].chehao);
printf("终点:%s",L.data[j-1].zhongdian);
printf("价格:%d",L. 32、data[j-1].jiage);
printf("时间:%d",L.data[j-1].shijian);
printf("票存:%d\n",L.data[j-1].piaocun);
}
else
printf("没有!");
}
/*5按照车号修改*/
B xiugai(B L)
{
int i=1;
int n;
printf("输入要修改的车号:\n");
scanf("%d",&n);
while(L.data[i-1].chehao!=n&&i<=L.len)
i++;
if(L.data[i-1].chehao==n)
{printf("请 33、输入要修改的信息\n");
printf("请输入价格\n");
scanf("%d",&L.data[i-1].jiage);
printf("请输入时间\n");
scanf("%d",&L.data[i-1].shijian);
printf("请输入票存\n");
scanf("%d",&L.data[i-1].piaocun);
}
return L;
}
/*6插入乘客*/
int zhao(B L,int n)
{ int i=1;
while(L.data[i-1].chehao!=n&&i<=L.len)
i++;
if(i>L.len)
34、return L.len;
else
return -1;
}
B charu(B L)
{ int n,x;
printf("请输入该车的车号:\n");
scanf("%d",&n);
x=zhao(L,n);
if(x>0)
{ L.data[x].chehao=n;
printf("请输入基本信息\n");
printf("请输入终点\n");
scanf("%s",L.data[x].zhongdian);
printf("请输入价格\n");
scanf("%d",&L.data[x].jiage);
printf("请输入时间\n");
sc 35、anf("%d",&L.data[x].shijian);
printf("请输入票存\n");
scanf("%d",&L.data[x].piaocun);
L.len++;}
else
printf("请重新输入该车的车号:\n");
return L;
}
/*7按车号退票*/
int shan(B L,int n)
{ int i=1;
while(L.data[i-1].chehao!=n&&i<=L.len)
i++;
if(i>L.len)
return -1;
else
return i;
}
B chehaoshanchu(B L 36、)
{ int n,x,j;
printf("请输入要退票车号:\n");
scanf("%d",&n);
x=shan(L,n);
if(x>0)
{ for(j=x+1;j<=L.len;j++)
{ L.data[j-2].chehao=L.data[j-1].chehao;
strcpy(L.data[j-2].zhongdian,L.data[j-1].zhongdian);
L.data[j-2].jiage=L.data[j-1].jiage;
L.data[j-2].shijian=L.data[j-1].shijian;
L.data[j-2].piao 37、cun=L.data[j-1].piaocun;
}
L.len--;}
return L;
}
/*8.票存量报警*/
B baojing(B L)
{int i,j,k=0;
printf("检查票存量是否超出!\n");
printf("输入最小票存量:");
scanf("%d",&i);
for(j=0;j 38、rintf("价格:%d\t\t",L.data[j-1].jiage);
printf("时间:%d\t\t",L.data[j-1].shijian);
printf("票存:%d\t\t",L.data[j-1].piaocun);
k++;}
if(k==0) printf(" 没有!");
}
return L;
}
void main()
{ B L;
int a,j=1;
while(j)
{
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 39、>>>>梦幻豪华巴士订票系统<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \n");
printf(" (1)初始化 \n");
printf(" (2)根据车号找 \n");
printf(" (3)根据终点找 \n");
printf(" 40、 (4)修改信息 \n");
printf(" (5)根据车号退票 \n");
printf(" (6)插入乘客 \n");
printf(" (8)票存量报警 \n");
printf(" (0)退出系统 \n");
printf("选择你要的操作:");
scanf 41、"%d",&a);
getchar();
switch(a)
{
{
case 1:
printf("**********************************\n");
printf("* 汽车订票系统初始化 *\n");
printf("**********************************\n");
L=shuru();
break;
}
case 2:
{
printf("**********************************\n");
printf("* 车号查找 42、 *\n");
printf("**********************************\n");
chehaozhao(L);
break;
}
case 3:
{
printf("**********************************\n");
printf("* 按终点查找 *\n");
printf("**********************************\n");
zhongdianzhao(L);
break;
}
case 4:
{
printf("* 43、\n");
printf("* 信息修改 *\n");
printf("**********************************\n");
xiugai(L);
break;
}
case 5:
{
printf("**********************************\n");
printf("* 退票 *\n");
printf("**********************************\n"); 44、
chehaoshanchu(L);
break;
}
case 6:
{
printf("**********************************\n");
printf("* 乘客的插入 *\n");
printf("**********************************\n");
charu(L);
break;
}
case 7:
{
printf("**********************************\n");
printf("* 图书的票存排序 45、 *\n");
printf("**********************************\n");
piaocunpaixu(L);
break;
}
case 8:
{
printf("**********************************\n");
printf("* 票存报警 *\n");
printf("**********************************\n");
baojing(L);
break;
}
case 9:
{
printf("********** 46、\n");
printf("* 票存输出 *\n");
printf("**********************************\n");
shuchu(L);
break;
}
case 0:
printf("是否退出(y/n)?");
a=getchar();
if(a=='y'||a=='Y')
{
j=0;
system("cls");
printf("\n\n\n\n\t\t\t========谢谢使用!=========");
printf("\n按任意键退出.. 47、");
getchar();
}
break;
default:
printf("\t\t\n 输入有错,请重新输入!\n");
printf("\n按任意键继续...");
getchar();
system("cls");
break;
}
}
}
29
总 结
二十一世纪是一个高速、 快捷的年代。 在这个高速发展的年代里, 速度成了我们追求的目标; 二是提高工作效率; 三是降低成本。 因此, 办公自动化的高速度、 高效率、 高便捷、低成本便成了我们的目的, 为此开发了这个汽车网上订票系统。本系统可以大大简化退票、订票、 查询等十分繁琐的 48、工作, 简化办公环节, 提高工作效率, 而且易学、 易用, 满足客户需求。 这次系统的设计从最开始的可行性研究, 需求分析, 到系统的总体设计, 详细设计, 再到编码、 测试等的一个整体过程, 使我真正明白了要做一个软件的难度, 特别是要做一个真正可用的软件, 就更难了。 在老师和同学的帮助下, 我把以往所学的软件工程、 数据库知识结合起来, 完成了本毕业设计, 尽量使它能满足各个方面的要求。 当然, 我的个人能力有限, 还有很多不足的地方, 敬请谅解。 在这次课程设计过程中我遇到了不少的难题, 比如数据库操作问题, 界面设计问题, 函数使用与实现问题, 消息处理问题等等。 其中, 最关键的是 49、在最初对系统的需求分析做的不透彻, 导致后续设计工作乃至编码时的修改工作量变大。 所以, 通过这次课程设计我深刻体会到软件工程还是必须学精通点、 学透彻点。 通过这次课程设计, 我学会了如何对所学课程综合运用, 巩固了软件工程的一般规范,对数据库的使用也有了更进一步了解。
在这次设计过程中,我得到了代文征老师的精心指导,在此,我由衷地感谢代老师!
参考文献
[1] 谭浩强.C程序设计[M].北京:清华大学出版社. 2005
[2] 严蔚敏. 数据结构(C语言版) [M]. 北京:清华大学出版社. 2008
[3] 陈雁.数据结构 [M].北京:高等教育出版社,2004.
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818