电子客票系统的设计与开发.docx
《电子客票系统的设计与开发.docx》由会员分享,可在线阅读,更多相关《电子客票系统的设计与开发.docx(26页珍藏版)》请在冰点文库上搜索。
电子客票系统的设计与开发
电子客票系统的设计与开发
【摘要】本文详细描述了一个网上预订系统的设计与实现。
文章首先分析了电子客票系统的现状及未来发展趋势,分析了系统开发的可行性。
然后详细进行了系统的分析与设计,包括系统功能设计、数据库设计、物理设计等。
系统由电子客票查看子系统、电子客票预订子系统、预约子系统、数据库及维护子系统四部分组成。
系统的开发—使用了ASP、DreamveaverMX和Access等技术,并对其主要功能做了详尽的说明。
最后,文章比较详细地的介绍了系统开发的流程,并对系统的功能进行了评价。
【关键词】电子客票预订系统系统设计与开发数据库
一引言
互联网技术的应用,催生了商务活动的变革,一种新的商务模式——电子商务,在20世纪90年代诞生了。
这个信息技术革命的结晶,全面改写了市场竞争规则,使成本、效率、资金流动、创新等竞争要素发生了深刻的变化。
其中两个明显的优势:
低成本——大大降低物流、资金流和信息流有效传输和处理的成本;高效率——打破地域的分割,缩短信息流动的时间,使生产和消费更为贴近。
两大优势使得电子商务急剧膨胀,很快遍及世界。
网上预约是电子商务的一种应用形式,该系统的建立大大缩小了顾客预约的时间成本和所需费用,是21世纪预约方式的一个大的飞跃,也是21世纪经济的一个新的增长点。
传统的客票预订需要客户亲自到售票厅或指定地点进行预订,由于预约记录多是由人为完成,易于出现错误和漏洞,管理效率低,特别是现在的经济高速发展的情况下,传统的预约方式已经不能满足要求。
网上预约系统作为一种更为便利的预约方式应运而生。
远程预约是一种全新的网络租用方式,它通过互联网突破了时间和空间限制,实现了便捷快速的预约与管理功能。
这个系统实现了对信息数据的浏览、查询、编辑和管理等基本数据库操作,采取模块化的编写思路,提高了可读性、可移植性和一致性,同时提高了开发效率。
在对数据信息有效组织并整合了一定使用功能后,远程预约系统可以方便的实现预约与取消、场地资料查询、用户管理员双重管理等功能。
未来电子客票系统将改进目前系统的普遍缺陷,向着自动化程度更高、查询系统完备方便、系统安全性能好等的方向发展。
基于以上原因,本文将对这一新兴的网上预约系统的设计与开发作详细介绍。
二电子客票系统的系统规划
(一)系统设计思路
采用结构化系统开发方法---生命周期法,设计思路如图
系统规划
整体规划前台网页、后台数据库以及选择所使用软件及技术
系统分析
系统设计
系统实施
系统评价
可行性分析、绘制功能模块图、业务流程图及初分子系统
系统物理配置方案设计、代码设计以及输入输出设计
程序设计、程序和系统调试
总体评价其实施效果并进行必要修改
(二)系统设计思想
(1)页面模块化
本系统把页面中的一些常用代码编写为独立的单元,例如页面的头部和尾部代码、用户和管理员的身份确认代码,这样设计新的页面时如果有重复出现的部分,只需要将编写好的模块用include语句来组装就可以了。
这是程序设计的重要思想,应该重点掌握。
本实例分为用户部分和管理员部分,这两部分都会用到数据库中的信息并且对数据库进行读写操作,但是它们的操作是独立的,可以分开来设计和编写,提高模块聚性,降低耦合性。
(2)三层结构架构
本系统采用三层架构设计,它的工作原理如图所示:
用户界面功能代码数据存储
提交操作信息生成语句操作数据库
返回处理结果返回操作结果
采用三层结构,用户界面层通过统一的接口向业务层发送请求,业务层按自己的逻辑规则在请求处理之后进行数据库操作,然后将数据库返回的数据返回给用户界面层。
这样,用户界面与数据存储相互独立,用户界面层甚至可以不知道数据库的结构,而只是通过接口实现操作。
这种方式增加了数据库的安全性,同时也降低了对用户界面层的开发要求,因为它根本就不需要进行任何数据库操作。
(三)系统建立可行性分析
我们要解决的问题是为顾客一个可以在网上完成售票的系统。
这个网上售票系统最基本的功能是消费者可以在网上浏览客票的信息、预订客票,公司对相应的订购进行处理。
除了能够完成最基本的功能外,还要增加留言板、修改个人资料、用户注册和管理员维护等功能。
可以分为前台网上销售部分,和后台管理部分。
后台管理包括对数据库的添加、删除、更新等功能。
并且添加客票信息时,不会影响到整个系统的运行。
因此,整个设计的规模较大,使用ASP技术完全可以解决以上问题。
2.2可行性研究
可行性研究的目的就是用最小的代价在尽可能短的时间确定问题定义阶段描述的系统目标和规模是否可行,是否能够解决,是否值得解决这个阶段的关键问题是“对问题的定义阶段所确定的问题是否有行的通的解决办法”。
这需要结合当前的开发技术在较高层次上进行分析[9]。
这个阶段的主要任务不是用具体的技术解决具体的问题。
而是从整体上考虑要解决的,研究这个涉及的围,考虑是否有必要解决。
是否有解决的技术。
可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。
可行性研究主要包括技术可行性、经济可行性、操作可行性三个方面。
我对“网上售票系统”分别进行了以下三个方面的可行性研究:
1、技术方面的可行性
ASP是一种功能强大,专业的网络应用开发技术[10]。
ASP技术与网络联系紧密,是当前常用的网络开发技术。
而且它在数据库应用方面有着简便、快捷、功能齐全的特点。
用ASP技术,完全可以实现对数据库的查询、修改、更新、删除等操作。
因此,对网上电影票销售系统所要实现的功能,用ASP技术是可行的。
2、经济可行性
本系统的开发是在单机上进行的,其测试工作也可以在单机上模拟网络环境来进行。
所以系统的开发所需的费用是很少的。
因此,从经济上来说是可行的。
3、操作可行性
该系统开发的目的是发布到网上,以的形式运行,因此,首先需要一个固定IP地址,再者需要一台系统稳定服务器。
在一个简单的局域网络中就可以完成整个操作,操作是可行的。
三、系统分析
(一)系统流程图
(1)前台客户预订流程图
(2)后台管理员工作流程
(二)数据流程图
(三)数据字典
①数据流的描述
数据流编号:
A-01
数据流名称:
用户信息
数据流去向:
用户信息表
数据项组成:
用户号+用户密码+用户性别+用户年龄+用户联系方式+用户生日
数据流编号:
A-02
数据流名称:
管理员信息
数据流去向:
管理员信息表
数据项组成:
管理员名+管理员密码
数据流编号:
A-03
数据流名称:
客户信息
数据流去向:
客票查询
数据项组成:
客票编号+航班名称+航班类型+费用
数据流编号:
A-04
数据流名称:
预约信息
数据流去向:
预约信息表
数据项组成:
预约编号+用户名+客票编号+操作时间+费用+预约日期+是否付费
②数据处理的描述
逻辑处理编号:
B-01
处理逻辑名称:
用户登录处理
简述:
用户输入用户名和密码登录主页
输入的数据流:
用户名+密码
处理描述:
预定客票
输出的数据流:
客票预订信息
逻辑处理编号:
B-02
处理逻辑名称:
预订信息处理
简述:
将不合格的预约删除
输入的数据流:
删除不合格数据
处理描述:
将不合格的预约信息删除
输出的数据流:
预订信息
数据存储的描述
数据存储编号:
C-01
数据存储名称:
客票预订信息
简述:
各航空公司的预售情况
数据存储组成:
预订编号+用户名+客票编号+操作时间+费用+预约日期+是否付费
关键字:
预订编号
相关联的处理:
B-01,B-03
④外部实体的描述
外部实体编号:
S-01
外部实体名称:
管理员
输入的数据流:
客票信息
输出的数据流:
客票预订信息
四系统设计
(一)系统物理设计
(1)Web服务器建设
建设自己的web服务器时需要投人很大资金,包括架设网络、安装服务器,运转时需要投人很大资金租用通信网络。
因此,一般企业建设Web服务器时,都是采取服务器托管、虚拟主机、租用网页空间、委托网络服务公司代理等方式进行的。
本系统实际采用租用网页空间这种方式,即企业不需要申请正式域名,只需向网络服务商申请一个虚拟域名,将自己的网页存放在ISP的主机上,用户便可自行上载、维护网页容,自行发布网页信息。
计算机硬件的选择取决于数据的处理方式和要运行的软件。
管理对计算机的基本要速度快、容量大、通道能力强、操作灵活方便,但计算机的性能越高,其价格也就愈昂贵,因此,在计算机硬件的选择上应全面考虑。
一般来说,如果系统的数据处理是集中式的,系统应用的主要目的是利用计算机的强大计算能力,则可以采用主机一终端系统,以大型机或中小型机作为主机,可以使系统具有较好的性能。
路由器服务器
客户机
(2)准备站点资料
当web服务器选择好后,网络建设的重点是根据站点规划设计web主页(用HTML语言设计的包含多媒体信息的页面)。
建设一个能提供场地查询、场地预约、留言等功能,需要准备以下一些资料:
首先,要策划的整体形象,要统筹安排网页的风格和容;其次,场地租用情况只有注册会员和管理员可见。
第三,准备一些提供增值服务的信息资料,如与体育运动相关方面的信息。
准备资料时,要注意到上的网页是多媒体,它可以包含文字、图像、动画、声音、影视等信息。
(3)选择开发工具
自行开发设计时,必须准备相关工具软件进行开发设计。
一般说来,需要这样几种工具软件:
①主页设计工具软件采用微软的Macromedia的DreamveaverMX。
DreamweaverMX是Macromedia公司最新推出的主页编辑工具。
这是一个所见即所得主页编辑器,并带有站点管理功能,让你方便地设计和管理多个站点。
而它最棒的地方就是支持最新的DHTML和CSS标准,你可以用它设计出生动的DHTML动画、多层次的页面(layer)以及CSS样式表。
DreamweaverMX提供视觉化网页开发工具的生产力,同时不会降低HTML原始码的控制,Dreamweaver提供的RoundtripHTML功能,让您无误地切换于视觉模式与惯用的原始码编辑器,拖放式的表格与页框设计以及以透过资料库来管理的容更新。
DreamweaverMX支援跨浏览器的DynamicHTML,阶层式样式表单、绝对坐标定位以及JavaScript的动画让您更易编辑网页。
你用它搞的网页不用担心在nc里不能看!
它支持IE与NC。
②图像处理软件采用了Adobe公司的PhotoShop等;动画制作软件,如Macromedia公司的Flash等.
③声音、影视处理软件,采用交互式页面程序设计软件,如微软的ASP开发系统。
ASP是位于服务器端的脚本运行环境,通过这种环境,用户可以创建和运行动态的交互式Web服务器应用程序,如交互式的动态网页,包括使用HTML表单收集和处理信息,上传与下载等,利用它可以产生和执行动态的、互动的、高性能的Web服务应用程序,采用脚本语言VBScript作为自己的开发语言。
更重要的是,ASP使用的ActiveX技术基于开放设计环境,用户可以自己定义和制作组件加入其中,使自己的动态网页几乎具有无限的扩充能力,这是传统的Web编写工具所远远不及的地方。
ASP还可利用ADO(ActiveDataObject,微软的一种新的数据访问模型)方便快捷地访问数据库,从而使得开发基于WWW的应用系统成为可能具有如下特点:
A、无需编译,容易编写,可在服务端直接执行。
B、使用普通的编辑器即可进行编辑设计。
C、与浏览器无关,客户端所使用的浏览器只要可执行HTML码,即可浏览ASP所设计的网页容就行。
D、ASP能与任何ActiveXScript语言兼容。
E、可使用服务器端的脚本来产生客户端的脚本。
Asp含于IIS当中,提供一个服务器端(Server-side)的Scripting环境。
站点服务器会自动将Asp的程序码,解释为标准HTML格式的主页容,再送到用户端的浏览器上显示出来。
用户端只要使用常规可执行HTML码的浏览器即可浏览。
④IIS
Web服务器是Web应用程序的心脏。
IIS(InternetInformationServer)是微软推出的WindowsNTOptionPack的主要成员,作为Win2000server的扩展,自推出以来已经有了很大发展,其体系结构是当今市场上最受关注的Web服务器之一。
新推出的IIS4.0版本增强了系统安全性,具有服务器端脚本开发调试,容管理和站点分析,崩溃防护,置JAVA虚拟机及全面支持ASP等强大功能。
在过去,客户机/服务器结构的设计与Web的相关技术几乎处于平行线上,两者相互独立并无法做出集成性的设计。
可以利用IIS+ASP构成三层式Web结构的中间一层,将客户机/服务器结构与Web密切结合,完成前后端两者的集成输出功能,使得Web站点的开发更方便,实现的功能更强大。
⑤Access数据库
MicrosoftAccessforWindows是Microsoft公司推出的面向办公自动化、功能强大的关系数据库管理系统。
Access2000是一种关系数据库管理系统(RDBMS)。
顾名思义,关系数据库管理系统是数据库管理软件,它的职能是维护数据库、接受和完成用户提出的访问数据的各种请求。
Access2000关系数据库是数据库对象的集合。
数据库对象包括:
表(Table)、查询(Query)、窗体(Form)、报表(Report)、数据访问页(Page)、宏(Macro)和模块(Module)。
在任何时刻,Access2000只能打开并运行一个数据库。
但是,在每一个数据库中,可以拥有众多的表、查询、窗体、报表、数据访问页、宏和模块。
这些数据库对象都存储在同一个以MDB为扩展名的数据库文件中。
Access的特点:
A、Access是一个中、小型关系数据库管理系统。
B、Access又是一个完全面向对象,采用事件驱动机制的最新关系数据库管理系统,使得数据库的应用与开发更加便捷、灵活。
C、Access是一个同时面向数据库最终用户和数据库开发人员的关系数据库管理系统。
D、Access是一个典型的开放式数据库管理系统。
E、Access支持多媒体的应用与开发。
F、Access既可以在单用户环境下工作也可以在多用户环境下工作,并且具有完善的安全管理机制。
G、Access置了大量的函数。
H、Access提供了联机帮助功能。
(二)系统功能模块设计
这个电子客票系统应具有用户注册登录、查看客票信息、留言,管理员综合管理等功能。
根据对该系统的功能需求分析可以画出系统功能模块图。
该系统功能划分为用户和管理员两部分。
用户部分的功能如下:
(1)用户注册:
检测用户提供的信息并注册用户。
(2)用户登录:
检测用户名和密码,核实用户身份。
(3)电子客票的信息查询:
查询某一次航班的时间,票价等
(4)取消电子客票的预订:
取消所预订的某一航班
(5)查询客票的信息:
按照用户的要求列出所有的客票信息。
(6)给站长留言:
检测用户留言的正确性并保存。
(7)安全注销:
结束用户会话,保证安全。
管理员部分:
(1)阅读用户留言:
调用用户留言并显示。
(2)删除无用留言:
删除指定的留言。
(3)添加新的客票信息:
根据国家或航空公司提供的信息来添加。
(4)删除客票信息:
根据用户的预订信息删除多余的客票信息。
(5)修改客票信息:
对于重新修改的客票信息进行修改更新。
(6)确认已付款的用户:
当用户付款后对指定预订进行标记确认。
(7)删除无用或错误的预约信息:
删除指定的有效客票预订。
(8)场地预约统计和用户统计:
统计数据库中有关预订和用户的信息。
(9)安全注销:
结束管理员会话,保证安全.
(三)数据库设计
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率及实现的效果产生影响。
合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。
设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的及将来可能增加的需求。
数据库设计一般包括以下几个步骤:
(1)数据库需求分析
电子客票系统的数据库功能主要体现在对各种信息的提供、保存、更新和查询操作上,包括用户信息、管理员信息、电子客票信息、预订信息和留言容,各个部分的数据容又有在联系。
针对此系统的数据库特点,可以总结出如下的需求:
①用户和管理员具有不同身份。
②用户信息记录用户资料。
③客票有多种类型、费用等多种信息。
④预订有预订时间、预订人等多种信息。
⑤留言有留言标题、容等多种信息。
经过上述系统功能分析和需求总结,设计如下的数据项和数据结构:
①管理员信息:
管理员名、密码
②用户信息:
用户名、密码、电子等
③客票信息:
客票编号、名称、类型等
④预订信息:
预定的用户名、预订时间等
⑤留言信息:
留言用户名、留言标题、容等
(2)数据库概念结构设计
①用户信息实体的E—R图
②管理员信息实体的E—R图
③电子客票信息实体的E—R图
④预订信息实体的E—R图
⑤留言信息实体的E—R图
留言信息
留言内容
留言用户
留言时间
⑥系统整体E—R图
用户信息
预订信息
电子客票信息
留言信息
管理员
(4)数据库逻辑结构设计
电子客票系统数据库中表的设计如下:
1管理员信息表
2
电子客票信息表
3乘客信息表
4
预定信息表
5留言信息表
6建立视图查询
(四)前台界面设计
(1)登录界面
(2)用户注册界面
(五)后台界面设计
(1)管理员登录界面
(2)预订统计界面
(六)代码设计
(1)用户登录注册代码:
机票预订在线办理登机手续
varusertype="personal";
varlastClickTime=null;
varinternational=false;//国际查询标志
vardayOfWeek=newArray('星期日','星期一','星期二','星期三','星期四','星期五','星期六');
functioninitdate(){
document.form1.dayNum.value=dayOfWeek[newDate().getDay()];
vartoday=newDate();
varyear=(today.getFullYear()>1900)?
today.getFullYear():
today.getFullYear()+1900;
showstr(form1.year,form1.month,form1.date,year,today.getMonth()+1,today.getDate());
showstr(form1.back_year,form1.back_month,form1.back_date,year,today.getMonth()+1,today.getDate());
}
functionsetdepdate(cal1){
bdate=cal1.date;
showstr(form1.year,form1.month,form1.date,bdate.getFullYear(),bdate.getMonth()+1,bdate.getDate());
}
functionsetrtndate(cal2){
edate=cal2.date;
showstr(form1.back_year,form1.back_month,form1.back_date,edate.getFullYear(),edate.getMonth()+1,edate.getDate());
}
functionshowstr(yearObj,monthObj,dateObj,year,month,date){
for(vari=1;iif(yearObj.options[i].text.indexOf(year)>-1){
yearObj.options[i].selected=true;
break;
}
}
monthObj.options[month].selected=true;
dateObj.options[date].selected