软件工程机票预定系统.docx
《软件工程机票预定系统.docx》由会员分享,可在线阅读,更多相关《软件工程机票预定系统.docx(33页珍藏版)》请在冰豆网上搜索。
软件工程机票预定系统
福建农林大学
课程设计报告
课程名称:
软件工程
课程设计题目:
机票预定系统
姓名:
系:
专业:
年级:
学号:
承担角色:
同组组长:
同组其他成员:
实验地点:
指导教师:
职称:
副教授
完成起止日期:
2011.11.23-2011.12.23
2011年11月23日
福建农林大学
课程设计结果评定
评价内容
评价指标
评分权值
评定成绩
业务水平
有扎实的基础理论知识和课程知识;能正确设计实验方案;独立进行实验工作;能运用所学课程知识和技能去发现与解决实际问题
0.2
设计质量
实验正确,分析处理科学;设计结果有应用价值;图纸绘制符合国家标准,质量符合要求;计算及测试结果准确;工作中有创新意识;对前人工作有改进或突破,或有独特见解;
0.4
工作量、
工作态度
按期完成规定的任务,工作量饱满,难度较大;工作努力,遵守纪律;工作作风严谨务实
0.2
报告质量
文字通顺,技术用语准确,符号统一,编号齐全,书写工整规范,图表完备、整洁、正确;
0.2
合计
1.0
指导教师签字:
评定日期:
1课程设计概述…………………………………………………………1页码
1.1目的……………………………………………………………………1页码
1.2任务……………………………………………………………………1页码
1.3运行环境………………………………………………………………1页码
2项目的可行性研究与需求分析………………………………………1页码
2.1、可行性分析……………………………………………………1页码
2.2.需求分析………………………………………………………3页码
3项目设计的基本原理和采用的主要方法与技术……………………8页码
3.1、系统构架设计…………………………………………………8页码
4本人实现项目的过程与步骤…………………………………………页码
4.1、浏览航班信息模块………………………………………………10页码
4.2、修改航班信息模块………………………………………………11页码
4.3、退票模块…………………………………………………………14页码
5.个人遇到的困难与获得的主要成果……………………………15页码
5.1、接口问题………………………………………………………15页码
5.2、其他问题………………………………………………………16页码
6测试与运行记录……………………………………………………16页码
6.1、测试浏览航班信息功能…………………………………………16页码
6.2、测试修改航班信息功能…………………………………………16页码
6.3、测试退票功能……………………………………………………17页码
7课程设计完成结果分析与个人小结…………………………………17页码
8附录……………………………………………………………………17页码
9参考文献…………………………………………………………………35页码
机票预定系统
1.课程设计概述(目的、任务、开发环境、参考资料)
1.1、目的:
航空公司为给旅客乘机提供方便,需要开发一个机票预定系统。
各个旅行社把预定机票的旅客信息输入到系统中,系统为旅客安排航班。
当旅客交付了预订金后,系统打印出取票通知和帐单给旅客,旅客在飞机起飞前一天凭取票通知和帐单交款取票,系统核对无误即打印出机票给旅客。
此外航空公司为随时掌握各个航班飞机的乘载情况,需要定期进行查询统计,以便适当调整。
1.2、任务:
“机票预定系统”的主要功能是帮助航空公司对乘客的信息进行统计,更新。
并对自己的航班做出相应的调整,来达到最好的运输效果。
其功能描述如下:
(1)旅行社将乘客的信息传输到该系统,并在系统中注册。
(2)系统为乘客安排航班。
(3)旅客交付了预定金后,系统印出取票通知和帐单给旅客
(4)旅客在飞机起飞的前一天凭取票通知和帐单交款取票,系统核对无误即印出机票给旅客
(5)航空公司为随时掌握各航向飞机的乘载情况,系统定期进行查询统计,以便适当调整。
(6)系统对旅客延误了取票时间的处理
(7)系统对班机取消后的处理
(8)旅客临时更改机票班次的处理
1.3、开发环境:
系统Window7
平台VisualStudio2010
2.项目的可行性研究与需求分析
2.1、可行性分析
2.1.1可行性研究的前提
(1)要求:
a.功能:
能自动的预订出乘客的机票,安排好航班。
b.输出如报告、文件或数据:
取票通知和账单
(2)目标:
a.人力与设备费用的减少;
b.处理速度的提高;
c.管理信息服务的改进;
d.自动决策系统的改进;
e.人员利用率的改进。
2.1.2技术上可行性
使用现有的技术能不能实现这个系统。
由于本管理系统的对象单一,仅对航空公司机票进行管理。
因此,这个管理系统比较适合采用数据库来设计。
在计算机硬件和软件快速发展的今天,计算机硬件和软件已经远远满足本管理系统的要求。
在数据库编程工具方面,各种可视化编程方法的出现,一改过去程序设计的概念和方法,用户用鼠标就可以快速、简捷地创建应用程序,极大地提高了编程效率。
如图2-1所示。
2.1.3经济上可行性
这个系统的经济效益能不能超过它的开发成本。
本“机票预订系统”是小型数据库应用程序,不需要多少人力和物力就可以设计的。
但本系统一旦投入使用,将大大减少航空公司理人员的工作量,提高了工作效率,其经济效益是显而易见的。
2.1.4操作上可行性
系统的操作方式在这个用户组织内能不能行得通。
在进行需求分析时,就对用户组织进行了调查,针对他们的情况,设计出适合这个用户组织的人机界面,使操作方式简单明了。
在加上本系统并不是很复杂,所以早操作方面不应有很大的问题。
2.1.5法律上可行性
因为本管理系统是:
航空公司对机票进行信息管理和航班信息管理的数据库系统。
因此,航空公司应在乘客安全,信息保密,证件合法等方面加以控制。
2.2.需求分析
2.2.1目标
机票预订系统的总目标是:
在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的机票预定系统,实现航空公司的机票销售的自动化的计算机系统,为企业的决策层提供准确、精细、迅速的机票销售信息。
根据可行性研究的结果和客户的要求,分析现有情况及问题,采用Client/Server结构,将机票预定系统划分为两个子系统:
客户端子系统,服务器端子系统。
2.2.2机票预订系统的功能要求
根据航空公司的需要,系统应当包含基本的功能有:
用户注册、用户登录和管理员登录,航班查看等。
用户则划分为基本乘客和管理员两大类,管理员还兼具有管理职能
当旅客需要订票时,旅行社把旅客的信息做一个备份,再把旅客的订票信息传给航空公司,航空公司则帮旅客安排航班,然后把安排好了的航班机票信息传回给旅行社,旅行社再通过对旅客订票记录的核实,产生取票通知,然后把取票通知发给旅客。
具体流程如图3-1所示。
当旅客获得取票通知后,就可以拿着取票通知到航空公司去取票。
但首先航空公司会对旅客的信息进行查询,其中会用到旅客的订票清单。
当系统检测到已售出机票的信息后,就会打印机票给旅客。
具体流程如图3-2所示。
2.2.3客户端功能要求
在客户端的功能要求实现上,可以分为以下几个部分:
(1)旅客信息的输入和统计
旅行社把旅客要求订票的信息由专人负责输入。
这部分功能是客户端子系统的基本部分,这个功能是以后各个部分的基础。
系统要求做到即能够从其它子系统中共享一部分信息,又有方便的操作界面手工输入旅客信息。
这部分要求对输入的数据进行简单的统计,供航空公司进行查询和宏观调控。
(2)旅客信息的存储:
将旅客的信息存储到旅行社的客户端系统中,以备以后的取票确认以及查询。
(3)机票信息的传递及接收:
将旅客所须的机票信息由旅行社客户端由网络传到航空公司的服务器上,并且接受航空公司返回的航班信息,然后存储起来。
(4)取票通知及账单的生成和打印:
把已存储的从航空公司返回的航班机票信息打印出来,并且生成账单打印出来一起交给旅客。
印出机票给已经订票的旅客:
根据旅客的取票通知及账单,经过确认无误后,接受旅客的付款后把机票印出来交给旅客。
(5)机票销售情况的核算
这一功能是在上一功能的基础上,对机票销售额进行单项核算,得到该旅行社的销售情况并把核算结果作为企业报表输出。
2.2.4服务器端功能要求
通过计算机网络将客户端与服务器的数据库相连,将从客户端得到的信息进行处理,实现航班查询,机票生成,销售统计,综合信息查询等子系统。
以计算机成本核算为中心,实现销售业务的计算机自动化,为航空公司降低成本、提高销售额、经营决策提供及时精确的依据。
在客户端系统的功能实现上,可以分为以下几个部分:
(1)接收由旅行社客户端发回的所需机票信息:
通过网络接收机票信息并存入到服务器的数据库中。
(2)生成航班信息:
根据所需机票信息(时间,地点),在数据库中查询并得到正确的航班的信息(价格,时间,等级),分配所需的机票数并在数据库中做出已售出的标记。
(3)传递航班信息到客户端(旅行社):
把得到的航班信息通过网络传递到旅行社。
(4)接收旅行社的反馈信息:
对旅行社的反馈信息进行分析,把已经售出的机票进行统计,对被旅客所退掉的机票要进行数据库的恢复。
(5)印出机票给已经订票的旅客:
根据旅客的取票通知及账单,经过确认无误后,接受旅客的付款后把机票印出来交给旅客。
2.2.5机票预订系统的性能要求
为了保证系统能够长期、安全、稳定、可靠、高效的运行,机票预订系统应该满足以下的性能要求:
(1)系统处理的准确性和及时性
系统处理的准确性和及时性是系统的必要性能。
在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足企业对信息处理的需求。
由于机票预订系统的查询功能对于整个系统的功能和性能完成举足轻重。
作为系统的很多数据来源,而机票数量和时间又影响企业的决策活动,其准确性很大程度上决定了机票预订系统的成败。
在系统开发过程中,必须采用一定的方法保证系统的准确性。
(2)系统的开放性和系统的可扩充性
机票预订系统在开发过程中,应该充分考虑以后的可扩充性。
例如订票系统的方式的改变(网上订票),用户查询的需求也会不断的更新和完善。
所有这些,都要求系统提供足够的手段进行功能的调整和扩充。
而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。
通过软件的修补、替换完成系统的升级和更新换代。
(3)系统的易用性和易维护性
机票预订系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。
这就要求系统能够提供良好的用户接口,易用的人机交互界面。
要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。
机票预订系统中涉及到的数据是航空公司的相当重要的信息,系统要提供方便的手段供系统维护人员进行数据的备份,日常的安全管理,系统意外崩溃时数据的恢复等工作。
(4)系统的标准性
系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。
所有这些都要符合主流国际、国家和行业标准。
例如在开发中使用的操作系统、网络系统、开发工具都必须符合通用标准。
如规范的数据库操纵界面、作为业界标准的TCP/IP网络协议及ISO9002标准所要求的质量规范等;同时,在自主开发本系统时,要进行良好的设计工作,制订行之有效的软件工程规范,保证代码的易读性、可操作性和可移植性。
(5)系统的先进性
目前计算系统的技术发展相当快,作为机票预订系统工程,应该保证系统在下个世纪仍旧是先进的,在系统的生命周期尽量做到系统的先进,充分完成企业信息处理的要求而不至于落后。
这一方面通过系统的开放性和可扩充性,不断改善系统的功能完成。
另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的产品。
(6)系统的响应速度
机票预订系统在日常处理中的响应速度为秒级,达到实时要求,以及时反馈信息。
在进行统计分析时,根据所需数据量的不同而从秒级到分钟级,原则是保证操作人员不会因为速度问题而影响工作效率。
2.2.6机票预订系统的数据要求
机票预订系统的数据要求包括如下几点:
(1)据录入和处理的准确性和实时性
数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。
数据的输入来源是手工输入。
手工输入要通过系统界面上的安排系统具有容错性,并且对操作人员要进行系统的培训。
在系统中,数据的输入往往是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据。
(2)数据的一致性与完整性
由于系统的数据是共享的,在不同的旅行社中中,机票是共享数据,所以如何保证这些数据的一致性,是系统必须解决的问题。
要解决这一问题,要有一定的人员维护数据的一致性,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。
对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据。
(3)数据的共享与独立性
整个机票预订系统的数据是共享的。
然而,从系统开发的角度上看,共享会给设计和调试带来困难。
因此,应该提供灵活的配置,使各个分系统能够独立运行,而通过人工干预的手段进行系统数据的交换。
这样,也能提供系统的强壮性。
3.项目设计的基本原理和采用的主要方法与技术
“机票预定系统”的系统设计,主要包括系统构架设计、详细页面设计和文件、数据库设计。
3.1、系统构架设计
在对机票预定系统进行系统设计的时候,第一步先对机票预订系统逻辑模加以设计。
本系统应该最少包括3个实体,包括:
旅客,旅行社和航空公司。
其中旅客包括:
姓名、性别、旅行时间、旅行地点、工作单位、身份证号码这些属性。
旅行社包括:
订票旅客信息、售出机票信息和可售机票这些属性。
而航空公司的属性主要是航班机票信息。
而航班机票又包括:
航班、航班起点、航班终点、时间、等级这些属性。
具体设计如图4-1所示。
分析了逻辑模块图后,就应该来设计系统结构图来描述机票预订系统的软件总体结构。
而本系统的结构图又要从两部分进行设计,先是客户端是结构图。
客户端最基本的功能应该有接收输入数据、输出数据和联络服务器。
框内注明了模块的名字;方框之间的直线表示模块的调用关系。
具体设计如图4-2所示。
在分析了本系统的逻辑模型图和结构图后,我们就应该对本系统的具体功能流程图进行分析,首先是功能的总体描述。
如图4-4所示。
4.本人实现项目的过程与步骤
4.1、浏览航班信息模块
根据乘客的要求,购买机票时必须浏览航班信息才可订购。
所以系统必须实现这一功能。
在该模块中必须调用读取文件,数据库中读取文件里面的航班信息将其调用出来。
代码如下:
voidprint(){
read();//调用读取文件函数
if(m==0)
printf("--->航班数据库无航班信息!
\n");
else
{
printf("航班号起始站终点站时间机票数\n");
for(i=0;i{
printf(PRINT);//打印信息
printf("\n");
}
//printf("--->请按0键结束返回上层菜单以:
");
}
//scanf("%d",w);
}
4.2、修改航班信息模块
航班会发生调动,管理员需将其消息告知订购者。
所以管理员要在系统中修改航班信息。
修改航班信息可通过航班号修改、航线修改。
将其要修改的航班号输入或航线输入,将其中一项替换(航班号、起始站、终点站、时间)修改后必须保存,其中调用保存模块。
代码如下:
voidxiugai()
{
structxiu//定义结构体
{
intno;
charname1[20];
charname2[20];
chartime[20];
intcount;
}x;
charj[10];
charf[]="2011hb";//设置密码
intn;
printf("--->请输入密码并以回车键结束:
");
scanf("%s",f);//读取密码
if(strcmp(f,"2011hb")==0)//判定是否出错
{
read();//调用读取模块
do
{
printf("\n-------->请选择修改方式:
<--------\n"
"-------->1,按航班号修改:
<--------\n"
"-------->2,按航线修改:
<--------\n"
"-------->0.退出<--------\n");
printf("================================================================================\n");
printf("--->请在1---2中修改以回车键结束:
");
scanf("%d",&n);//读取修改方式
if(n==0)
break;
switch(n)
{
case1:
printf("请输入航班号:
");
scanf("%d",&x.no);//读取航班号
break;
case2:
printf("请输入起始站:
");
scanf("%s",x.name1);//读取起始站
printf("请输入终点站:
");
scanf("%s",x.name2);//读取终点站
break;
}
for(i=0;i{
if(strcmp(s[i].over,x.name1)==0&&strcmp(s[i].over,x.name2)==0)//判定输出条件
{
printf("航班号起始站终点站时间机票数\n");
printf(PRINT);
printf("\n");
break;
}
if(s[i].num==x.no)//判定输出条件
{
printf("航班号起始站终点站时间机票数\n");
printf(PRINT);
printf("\n");
break;
}
}
x.no=0;//将结构体中的号为零
printf("请输入新航班号、起始站、终点站、时间(星期几)、机票数:
\n");
scanf("%d%s%s%s%d",&x.no,x.name1,x.name2,x.time,&x.count);//定义输入格式
s[i].num=x.no;//替换航班号
strcpy(s[i].start,x.name1);//替换其始站
strcpy(s[i].over,x.name2);//替换终点站
strcpy(s[i].time,x.time);//替换时间
s[i].count=x.count;//替换机票数
save();//调用保存模块
printf("--->是否继续?
(请键入yes或no以回车键结束)");
scanf("%s",j);
}while(strcmp(j,"yes")==0);//判定结束
}
else
printf("--->对不起密码错误!
您不是治理员,不能使用此项功能!
谢谢!
");
}
4.3、退票信息模块
根据乘客的要求,要将其订购的票退还。
系统要进行查询,该航班是否可退。
调用查询模块,查询该航班的信息再进行退票。
代码如下:
voidtuipiao()
{
intn;
chara[10];
do
{
search();//调用查询模块
printf("--->请输入您要退的机票数目:
");
scanf("%d",&n);//输入所退票数
if(n<0)//判定票数是否有效
printf("请输入有效的机票数!
");
s[i].count=s[i].count+n;
save();//调用保存模块
printf("--->退票成功!
\n");
printf("--->是否继续?
(请键入yes或no以回车键结束)");//判定是否继续退票
scanf("%s",a);
}while(!
strcmp(a,"yes"));//判定并跳出循环getchar();
}
5.个人遇到的困难与获得的主要成果
5.1、接口问题
在执行浏览航班信息模块时,必须与系统中数据进行连接,使原有的数据能够顺利的运用在此基础上还要保证文件的安全性。
所以在编写程序时必须考虑到这一问题。
同时也考虑到如可能够更简单的将其功能表现出来,而不是用复杂的代码。
节省资源。
如果没有将这些问题考虑在内可能会出现一些不必要的错误,是系统无法正确运行,无法达到预定的功能要求。
决绝这一问题,各模块之间可采用函数调用、参数传递、返回值的方式进行信息的传递。
浏览航班信息的模块采用了函数调用、参数传递,在此模块中调用了查询模块,将查询信息模块与浏览信息模块进行传递。
同时退票模块也调用了查询模块。
修改信息模块需与保存信息模块进行信息传递,将所要修改的信息传递到保存信息模块,后将其保存,能够让订购者知道信息的变更。
通过这几个模块的编写,让我了解到了接口问题,从中学到了如何决绝接口的问题,更熟悉了函数调用与参数调用的方法。
能够更深一层的体会其他的意义。
5.2、其他问题
各模块中,需对运行控制进行正确的判断,选择正确的运行控制路径。
在客户机发送数据后,将等待服务器确认收到信息,受大盘黄埔,再次等待服务器发送回答数据,然后对数据进行确认。
服务器在接到数据后发送确认信号,在对数据处理、访问数据库后,将返回信息送回客户机,并等待确认。
这些就考虑如何节省时间,减少系统的空间资源,让程序能够更好更快的运行。
在编写修改与退票模块时,没有很好的考虑将会写出很多无关性的代码。
这样的浪费了系统的空间资源。
同时在编写时也会出一些小问题。
可是对于本人是很难发现。
经过同组人员的指出,对其进行认真的修改与运行确定其中的无误。
编写代码,不是只为了能够让程序运行起来,而是如何能够让该程序较快较好的运行。
不乱占系统的资源。
节能软件。
编写中也要认真严谨,不要出现一些不必要的错误,在其中浪费时间。
同时小组的合作也是非常重要的。
要有合作精神,各模块之间要进行连接,所以各成员之间的交流的一定的。
将各自的看法与想法表达出来,在将其落实在系统上,彼此间的模块能够进