计划周记进度检查表.xls

基于.NET的航空订票系统设计与开发【带程序】

收藏

压缩包内文档预览:
预览图 预览图
编号:273417    类型:共享资源    大小:19.54MB    格式:RAR    上传时间:2014-04-28 上传人:上*** IP属地:江苏
45
积分
关 键 词:
基于net 航空订票 系统 设计 开发 程序
资源描述:

基于.NET的航空订票系统设计与开发

75页 26000字数+说明书+任务书+开题报告+订票系统设计

基于.Net的航空订票系统设计与开发.zip

基于.NET的航空订票系统设计与开发开题报告.doc

基于.NET的航空订票系统设计与开发论文.doc

相关资料.doc

计划周记进度检查表.xls

任务书.doc


摘  要


   随着计算机科学技术的日益发展及信息化技术向各个领域的不断深入,人们的学习生活已越来越趋向于信息化。为跟上时代的要求及人们生活的步伐,航空订票业务也日益发展了起来。它的发展不仅给人们带来了很大的便利性,还在很大程度上减轻了其管理人员的工作压力。

   在航空订票系统的开发过程中遵循了软件的生命周期:问题的定义、需求分析、软件设计、程序编码、软件测试这五个阶段。本系统前台,新客户可进行注册;若老客户忘记密码,可在忘记密码页面重置密码;老客户登录进入本系统后,可进行航班的查询,机票的预定、取消订单、支付、退票;可进行订单的查询及客户密码的修改;客户在帮助中心可进行留言。本系统后台,管理人员对客户信息、留言可进行查询;对航班可进行查增删改操作;对客户订单可查询及定期进行删除;高级管理员可对所有管理员进行查询及增删改操作,普通管理员只能对自身信息进行操作。

   本航空订票系统是利用ASP.NET技术及C#编程语言来实现的,用数据库SQL Server 2000来存储信息,并采用基于XML的三层浏览器/服务器体系结构。


   关键词:ASP.NET;C#;SQL Server 2000;航空订票系统



目  录

摘  要III

AbstractIV

目  录V

1 绪论1

1.1 航空订票系统的研究内容和意义1

1.2 国内外的发展概况1

1.3 本系统应达到的要求1

1.4 系统运行环境2

1.5 论文主要结构2

2 相关技术3

2.1 ASP.NET技术3

2.2 C#技术3

2.3 SQL Server 2000技术4

2.4 本章小结5

3 航空订票系统系统分析7

3.1 可行性研究7

3.2 系统需求分析7

3.2.1 系统需求分析描述7

3.2.2 数据流分析8

3.2.3 数据字典10

3.2.4 系统功能需求11

3.2.5 系统性能需求12

3.3 本章小结12

4 航空订票系统功能设计13

4.1 系统功能描述13

4.2 系统数据流程图13

4.3 系统功能描述及模块示意图15

4.3.1 系统功能总描述及总模块图15

4.3.2 系统详细功能描述及功能模块图16

4.4 本章小结19

5 航空订票系统数据库设计21

5.1 数据库概念结构设计21

5.2 数据库逻辑结构设计23

5.3 数据库物理结构设计24

5.5 本章小结30

6 航空订票系统界面及主要程序31

6.1 航空订票系统前台界面31

6.1.1 主界面31

6.1.2 登录界面34

6.1.3 注册界面36

6.1.4 忘记密码界面39

6.1.5 查询航班界面39

6.1.6 预定航班界面41

6.1.7 退票服务界面46

6.1.8 我的订单界面48

6.1.9 帮助中心界面50

6.2 航空订票系统后台界面50

6.2.1 管理员登录界面50

6.2.2 用户管理界面51

6.2.3 航班管理界面53

6.2.4 订单管理界面55

6.2.5 管理信息界面55

6.3 本章小结58

7 软件模块集成测试59

7.1 航空订票系统前台集成测试59

7.2 航空订票系统后台集成测试61

7.3 本章小结62

8 帮助信息及使用说明63

8.1 系统前台的帮助信息及使用说明63

8.2 系统后台的帮助信息及使用说明63

9 结论与展望65

9.1 结论65

9.2 不足之处及未来展望65

致  谢67

参考文献68

1.3 本系统应达到的要求

   在我们开发软件时,并不是一味的在系统中添加功能等,因为不论我们把系统做的有多完美,不能满足用户的需求之前做的也都是徒然的。所以,在开发本软件之前我们一定要对用户的需求足够了解。这样才可以在完成本系统时,在用户满意的同时,自己也能因此得到一定得促进。

   系统前台,新客户要能进行注册;老客户忘记密码,要能重置密码;老客户登录进入系统,要能进行航班的查询,机票的预定、取消订单、支付、退票;能进行订单的查询及客户密码的修改;用户能留言。系统后台,管理人员对用户信息、留言能查询及删除;对航班要能查询、增加、删除及更改;对客户订单要能查询及定期进行删除;高级管理员能更改所有管理员的信息,能增加或删除某个管理人员;普通管理员只能对自己的信息进行更改。比较系统地对航空订票的信息及各项服务进行管理,使数据管理更人性化、自动化、智能化、自动化、现代化人性化。

   从Web兴起后就形成了一种新的网络结构模式Browser/Web 模式,并且客户端最主要的应用软件也是Web浏览器,这种B/S模式统一了客户端,将系统的开发、维护和使用简化了,将系统功能实现的核心部分集中到服务器上。

   航空订票系统的软件必需要不断更新,不断自我完善的。所以,利用网络和数据库的结合,应用基于Browser/Web 模式及ASP.NET技术来设计航空订票系统。

1.4 系统运行环境

   ⑴ 服务器端

   操作系统:Windows XP

   数据库服务器:SQL Server 2000

   浏览器:Google Chrome

   ⑵ 客户端

   浏览器:Google Chrome

1.5 论文主要结构

   本论文是“基于.NET的航空订票系统开发与设计”,论文的内容是根据软件工程的开发理论,系统地对本课题进行讲解。

   整篇论文包含9个章节,具体内容如下:

   绪论。介绍了航空订票系统的开发背景意义、国内外的发展概况、本课题应该达到的要求及系统运行的环境。

   相关技术。介绍了ASP.NET技术、C#技术、SQL Server 2000,为下面的学习提供了基础。

   航空订票系统的系统分析。介绍了系统的可行性研究及需求分析。

   航空订票系统的功能设计。介绍了系统的详细功能描述、系统流程分析、系统功能模块的详细描述及功能模块图。

   航空订票系统的数据库设计。介绍了数据库的概念结构(E-R设计)、逻辑结构、物理结构及数据字典。

   航空订票系统的实现。介绍了每个界面的实现及功能和系统使用到控件的具体用法。

   系统测试。对系统的每个模块机功能进行详细的测试,去发现系统中的错误。

   帮助信息及使用说明。主要讲述了整个系统每个模块的操作流程。

   结论与展望。讲述对本次设计的总结,与对本次设计不足之处的说明。

内容简介:
无锡太湖学院信 机系 计算机科学与技术 专业毕 业 设 计论 文 任 务 书一、题目及专题:1、题目 基于.NET的航空订票系统设计与开发 2、专题 二、课题来源及选题依据课题来源:导师指定 选题依据:计算机与互联网技术的日益成熟为航空带来了全新的售票方式:网络航空订票方式。网上订票系统是一种新兴的现代商务方式,显示了巨大的现代商业价值,它将逐渐方便社会生活,也将成为数字化社会的一种重要体现。 通过航空订票系统这个平台,可以解决手工操作机票订购高峰时刻的大量数据处理问题,使得机票订购与日常管理工作得以改善,同时顾客可以享受到更便利更快捷的航空服务。此系统是一个高效率、低成本、高质量的系统,节省了不少的人力、物力、财力。 三、本设计(论文或其他)应达到的要求:技术要求:技术的选择:使用.NET和数据库技术完成; 数据库的选择:SQL Server 2000。 系统前台功能要求: 客户能进行注册、登录、重置密码及密码修改的操作; 能查询航班信息,查询后可进行订票、退票等操作; 若客户有建议或是意见,能进行留言操作。 系统后台功能要求: 客户管理,能查询客户的基本信息,能查询和删除留言信息; 航班管理,能查询及增删改航班信息; 订单管理,能查询及删除航班信息; 能更改管理员信息;能查询及增删改公告信息、旅游咨询。 四、接受任务学生: 计科94 班 姓名 包培培 五、开始及完成日期:自2012年11月12日 至2013年5月25日六、设计(论文)指导(或顾问):指导教师签名 签名 签名教研室主任学科组组长研究所所长签名 系主任 签名2012年11月12日编号无锡太湖学院毕业设计(论文)题目: 基于.NET的航空订票系统 设计与开发 信机 系 计算机科学与技术 专业学 号: 学生姓名: 指导教师: (职称:副教授 ) (职称: )2013年5月25日III无锡太湖学院本科毕业设计(论文)诚 信 承 诺 书本人郑重声明:所呈交的毕业设计(论文) 基于.NET的航空订票系统设计与开发 是本人在导师的指导下独立进行研究所取得的成果,其内容除了在毕业设计(论文)中特别加以标注引用,表示致谢的内容外,本毕业设计(论文)不包含任何其他个人、集体已发表或撰写的成果作品。 班 级: 计科94 学 号: 0921131 作者姓名: 2013 年 5 月 25 日摘 要随着计算机科学技术的日益发展及信息化技术向各个领域的不断深入,人们的学习生活已越来越趋向于信息化。为跟上时代的要求及人们生活的步伐,航空订票业务也日益发展了起来。它的发展不仅给人们带来了很大的便利性,还在很大程度上减轻了其管理人员的工作压力。在航空订票系统的开发过程中遵循了软件的生命周期:问题的定义、需求分析、软件设计、程序编码、软件测试这五个阶段。本系统前台,新客户可进行注册;若老客户忘记密码,可在忘记密码页面重置密码;老客户登录进入本系统后,可进行航班的查询,机票的预定、取消订单、支付、退票;可进行订单的查询及客户密码的修改;客户在帮助中心可进行留言。本系统后台,管理人员对客户信息、留言可进行查询;对航班可进行查增删改操作;对客户订单可查询及定期进行删除;高级管理员可对所有管理员进行查询及增删改操作,普通管理员只能对自身信息进行操作。本航空订票系统是利用ASP.NET技术及C#编程语言来实现的,用数据库SQL Server 2000来存储信息,并采用基于XML的三层浏览器/服务器体系结构。关键词:ASP.NET;C#;SQL Server 2000;航空订票系统AbstractWith the increasing development of the computer science and information technology to every field in-depth, peoples learning life has more and more tend to information. To keep pace with the times and the pace of peoples life, airline reservation business is also growing up. Its development not only brings a lot of convenience to people, also reduces the pressure on its management staff.In the development process in the airline reservation systems follows the software life cycle: problem definition, requirements analysis, software design, program coding, the five stages in software testing. This system foreground, new customers can register. If the old customers forget a password, the password can be found in the forgetting password page. After Old customers log in the system, they can carry out querying flights, booking tickets, canceling the order, paying and returning tickets. And customers can query orders and modify the customer password. The customer can leave messages in the center of the help message. This system background, managers can query customers information and messages being leaved by customers. The flight can be queried, be added, be deleted and be modified. Managers can query and delete customers orders. Senior managers can query and update all managers information; general managers can only to operate their own information.The airline reservation system is using ASP.NET, C # programming language, SQL Server 2000 database to store information, and the use of XML-based three-tier Browser / Web architecture.Key words: ASP.NET; C#; SQL Server 2000; Airline reservation system目 录摘 要IIIAbstractIV目 录V1 绪论11.1 航空订票系统的研究内容和意义11.2 国内外的发展概况11.3 本系统应达到的要求11.4 系统运行环境21.5 论文主要结构22 相关技术32.1 ASP.NET技术32.2 C#技术32.3 SQL Server 2000技术42.4 本章小结53 航空订票系统系统分析73.1 可行性研究73.2 系统需求分析73.2.1 系统需求分析描述73.2.2 数据流分析83.2.3 数据字典103.2.4 系统功能需求113.2.5 系统性能需求123.3 本章小结124 航空订票系统功能设计134.1 系统功能描述134.2 系统数据流程图134.3 系统功能描述及模块示意图154.3.1 系统功能总描述及总模块图154.3.2 系统详细功能描述及功能模块图164.4 本章小结195 航空订票系统数据库设计215.1 数据库概念结构设计215.2 数据库逻辑结构设计235.3 数据库物理结构设计245.5 本章小结306 航空订票系统界面及主要程序316.1 航空订票系统前台界面316.1.1 主界面316.1.2 登录界面346.1.3 注册界面366.1.4 忘记密码界面396.1.5 查询航班界面396.1.6 预定航班界面416.1.7 退票服务界面466.1.8 我的订单界面486.1.9 帮助中心界面506.2 航空订票系统后台界面506.2.1 管理员登录界面506.2.2 用户管理界面516.2.3 航班管理界面536.2.4 订单管理界面556.2.5 管理信息界面556.3 本章小结587 软件模块集成测试597.1 航空订票系统前台集成测试597.2 航空订票系统后台集成测试617.3 本章小结628 帮助信息及使用说明638.1 系统前台的帮助信息及使用说明638.2 系统后台的帮助信息及使用说明639 结论与展望659.1 结论659.2 不足之处及未来展望65致 谢67参考文献68III基于.NET的航空订票系统开发与设计1 绪论1.1 航空订票系统的研究内容和意义近年来,计算机与互联网的发展日益成熟,人们已看到它们在功能上所发挥的强大之处,它们在人类生活中扮演着越来月重要的角色,逐渐深入人类社会的各个领域。并且,在世界经济迅猛发展的前提下,人们对于利用飞机出行的需求在不断的在增加,然传统的售票方式已经不能满足人们的要求了。因此,通过航空订票系统这个平台,可以解决机票订购高峰时期大量数据的处理问题,提高工作人员的工作效率,使得管理人员的工作方便简洁很多,使得机票订购与日常管理能够得以改善。同时,乘客也能享受到更便利更快捷的航空服务。更是给航空公司带来了无限的商机。航空订票是一个非常复杂的过程,它涉及客户基本信息的管理、航班的的基本信息管理、每一条订单与客户间的联系、每一条订单与航班见的联系,因此,航空订票系统是一个涉及管理内容众多,数据关系复杂的系统。本航空系统的开发主要分为程序软件的开发及对数据库的建立两部分。对程序软件的前台开发,对用户的需求要有完整性,并且得让用户使用起来方便;对数据库的后台建立,要使得数据库具备一致性、完整性、安全性、独立性、易扩展性等功能。1.2 国内外的发展概况从迈入21世纪开始,在这个新的历史时期电子商务探索发展了十多年,电子商务让更多的商家找到了新的平台。网上订票也是一种电子商务,近年来网上订票日渐流行,其优越性使得国内外着手研制自己的网上订票系统的航空公司越来越多,因为它具有巨大的现代商业价值。它打破了常规的买卖方式,为客户提供了全天候的服务。国内近几年随着人们生活质量的提高,更多的人选择使用飞机作为长途出行的交通工具,在加上计算机技术及网络的迅速发展,航空订票业务也就随着发展了起来。随着旅游业的日益成熟,航空客运量在大幅度的提高,国内的各大航空公司都在不断的增加航班,这些都对航空管理系统提出了更高的要求,因此航空订票系统要不断的完善及更新,从而提高航空订票的工作效率故而,航空订票系统在国内的发展日渐成熟。相对于国外而言,他们的计算机技术及网络技术都比我国发展的快发展的成熟,对于旅游业来说,也比我国的发展来的成熟,所以他们在网络应用这一方面比我国成熟,技术与应用领域也比我们来的成熟与广泛。在1994年,率先推出网上售票系统的是美国联合航空公司。发展至今,国外的航空订票业务在功能上做的越来越完善。1.3 本系统应达到的要求在我们开发软件时,并不是一味的在系统中添加功能等,因为不论我们把系统做的有多完美,不能满足用户的需求之前做的也都是徒然的。所以,在开发本软件之前我们一定要对用户的需求足够了解。这样才可以在完成本系统时,在用户满意的同时,自己也能因此得到一定得促进。系统前台,新客户要能进行注册;老客户忘记密码,要能重置密码;老客户登录进入系统,要能进行航班的查询,机票的预定、取消订单、支付、退票;能进行订单的查询及客户密码的修改;用户能留言。系统后台,管理人员对用户信息、留言能查询及删除;对航班要能查询、增加、删除及更改;对客户订单要能查询及定期进行删除;高级管理员能更改所有管理员的信息,能增加或删除某个管理人员;普通管理员只能对自己的信息进行更改。比较系统地对航空订票的信息及各项服务进行管理,使数据管理更人性化、自动化、智能化、自动化、现代化人性化。从Web兴起后就形成了一种新的网络结构模式Browser/Web 模式,并且客户端最主要的应用软件也是Web浏览器,这种B/S模式统一了客户端,将系统的开发、维护和使用简化了,将系统功能实现的核心部分集中到服务器上。航空订票系统的软件必需要不断更新,不断自我完善的。所以,利用网络和数据库的结合,应用基于Browser/Web 模式及ASP.NET技术来设计航空订票系统。1.4 系统运行环境 服务器端操作系统:Windows XP 数据库服务器:SQL Server 2000浏览器:Google Chrome 客户端浏览器:Google Chrome1.5 论文主要结构本论文是“基于.NET的航空订票系统开发与设计”,论文的内容是根据软件工程的开发理论,系统地对本课题进行讲解。整篇论文包含9个章节,具体内容如下:第1章 绪论。介绍了航空订票系统的开发背景意义、国内外的发展概况、本课题应该达到的要求及系统运行的环境。第2章 相关技术。介绍了ASP.NET技术、C#技术、SQL Server 2000,为下面的学习提供了基础。第3章 航空订票系统的系统分析。介绍了系统的可行性研究及需求分析。第4章 航空订票系统的功能设计。介绍了系统的详细功能描述、系统流程分析、系统功能模块的详细描述及功能模块图。第5章 航空订票系统的数据库设计。介绍了数据库的概念结构(E-R设计)、逻辑结构、物理结构及数据字典。第6章 航空订票系统的实现。介绍了每个界面的实现及功能和系统使用到控件的具体用法。第7章 系统测试。对系统的每个模块机功能进行详细的测试,去发现系统中的错误。第8章 帮助信息及使用说明。主要讲述了整个系统每个模块的操作流程。第9章 结论与展望。讲述对本次设计的总结,与对本次设计不足之处的说明。2 相关技术2.1 ASP.NET技术ASP.NET是由Microsoft公司提出的一个统一的WEB开发模型。ASP.NET不仅仅是Active Server Page的下一个版本,还是一种建立在通用语言上的程序架构,能在WEB服务器上建立强大的WEB应用程序。ASP.NET的开发模式比现在的WEB开发模式强大1。 简单性和易学性ASP.NET使运行一些平常的任务如客户端的身份验证、表单的提交、网站配置和分布系统变得很简单。另外,通用语言的简化开发使得把代码结合成软件简单得就像装配电脑1。 强大性和适应性可以在WEB应用软件开发者的几乎所有平台上运行。通用语言的数据接口的处理、基本库、消息机制都能无缝整合到ASP.NET的WEB应用中。ASP.NET也是language-independent语言独立化的,所以可以选择一种最适合自己的语言来编写程序,也可以使用多种语言来编写,现在已经支持的有C#、VB、JScript等1。 世界级的工具支持在Microsoft公司的产品Visual Studio.NET环境中ASP.NET架构可以进行开发,WYSIWYG的编辑1。 大幅度提高执行效率ASP.NET是程序放在服务器上运行。和以前即时解释程序的ASP不同,ASP.NET将程序首次在服务器端运行时就进行了编译,这样的执行效果比即时解释程序要强得多1。 可扩展性和自定义性ASP.NET设计时考虑了让网站程序员可以在代码中自己定义plug-in模块。这和原来的包含关系不同,ASP.NET能加入通过自己定义的所有控件1。 安全性基于应用程序的配置和Windows认证技术,可以保证源程序的绝对安全1。2.2 C#技术C#作是Microsoft 公司为其全新的.NET框架专门创建的编程语言。不但结合了Java语言简洁和C+强大灵活的特性,而且吸取了Visual Basic和Delphi具有的易用性,因而是一种表达力丰富、使用简单、功能强大的语言2。C#简单易学,而且语法表现力强。C#语法简化了C+的诸多复杂性,并提供了很强大的功能,例如可为直接内存访问、委托、null的值类型、枚举、lambda表达式,这些都是Java没有的。C#支持范型类型和方法,从而提供了更出色的类型性能和安全3。C#是面向对象的语言,支持多态性、封装和继承的概念。所有的方法和变量,包括Main方法,都封装在类的定义中。类从一个父类可能直接继承,但它能实现任意数量的接口。重写父类中的虚方法的各种方法要求override关键字作为一种避免意外重定义的方法。在C#中,结构类似于一个轻量类;它是一种堆栈分配的类型,可以实现接口,但不支持继承3。C#还通过几种创新的语言构造简化了软件组织的开发,这些结构包括3: 语言集成查询(LINQ),提供了跨各种数据源的内置查询功能。 封装的方法签名(称为“委托”),它实现了类型安全的事件通知; 属性(Property),充当私有成员变量的访问器; 属性(Attribute),提供关于运行时类型的声明性元数据; 内联XML文档注释;在C#中,如果必须与其他Windows软件交互,则可以通过一个称为“互操作”的过程来实现。互操作使C#程序能够完成本机C+应用程序可以完成的几乎任何任务。在直接内存访问必不可少的情况下,C#甚至支持指针和“不安全”代码的概念3。C#的生成过程比C、C+和Java简单灵活。没有单独的头文件,也不要求按照特定顺序声明类型和方法。C#源文件能定义任意数量的事件、类、结构和接口3。2.3 SQL Server 2000技术在SQL Server 7.0的基础上推出了SQL Server 2000,SQL Server 2000继承了7.0版本的高性能、可靠性、易用性和可扩充性的优点,同时又增加了一些新的特性,使其成为一种领先的数据库管理系统,可用于大规模联机事务处理(OLTP)、数据仓库及电子商务等4。SQL Server 2000包含管理工具SQL Server Management Studio , Management Studio将Enterprise Manager,Query Analyzer 及Analysis Manager 的功能结合为一整个管理工具,并支持SQL Server Reporting Services,XML及SQL Server 2000 Mobile Edition4。 客户机/服务器体系结构SQL Server采用客户机/服务器体系结构,客户机负责界面描述、界面显示,向服务器提出处理要求;服务器负责数据管理、程序处理,并将处理结果返回客户机;在这种体系结构中数据资源是集中存储在数据库服务器里,而不是分别存储在各个客户机内,有效的实现数据共享4。 图形化的用户界面SQL Server 2000的图形化用户界面使数据库管理和系统管理更加简单直观。特别是SQL Server 2000在查询分析器、日志存储和事件探查器的图形操作界面上做了较大的改进。对日志存储的改进可以使用户可以连续不断地将事务日志进行备份并装载到另一台服务器上的目标数据库;对事件探查器的改进可以使用户使用基于时间和基于空间的跟踪,同时增加了许多可以跟踪的事件;查询分析器增加了对象浏览器组件,使用户可以浏览并获取服务器上数据库对象的信息4。 兼容性好在Windows占操作系统主导地位的情况下,选择SQL Server在兼容性方面一定会有优势多的。然,SQL Server 2000除有扩展性及可靠性外,还具有迅速开发新因特网系统的功能。特别是它可以直接存储xml数据,有利于构建异构系统的互操作性。这些在.NET中发挥这重要作用4。 电子商务在使用SQL Server 2000数据库引擎的情况下,xml数据在关系表中进行存储,而查询则能以xml格式将其结果返回。此外,xml支持还简化后端系统的集成,并实现了跨越防火墙的无缝数据传输4。 支持数据仓库SQL Server 2000的分布式查询允许用户同时引用多处数据源,但其友好的界面却使用户始终以为是在操作同一个数据源。为了满足现代企业对大规模数据进行有效分析和使用的要求,SQL Server 2000提供了一系列提取、分析、总结数据的根据,从而可以实现联机分析处理4。2.4 本章小结本章节主要讲了在系统设计过程中所涉及到的相关技术。对于本章中讲到的ASP.NET技术、SQL Server技术等对于本系统的设计是相当重要的。设计者只有真正了解及掌握了这些技术,才能更好的完成本系统要实现的功能。这里也只是大概讲解了一下所涉及技术的特性,若要仔细了解可以查看相应的参考资料。3 航空订票系统系统分析 3.1 可行性研究航空订票系统最基本及最重要的就是客户的订票及退票功能,及管理员对航班的更新及录入。由它们组成了航空订票系统的前台服务与后台管理。在现代社会航空订票系统是必须的。下面是对航空订票系统从技术、经济、管理上进行的可行性分析。 技术可行性:三层逻辑体系结构是WEB项目较为流行的开发模式。采用最新技术B/S架构,降低了客户端电脑的负荷,减轻了系统升级与维护的工作量和成本。ASP.NET开发技术是微软力推的主流开发技术,与Windows操作系统无缝集成、扩展性好,使用ASP结合ActiveX组件、HTML网页和ASP指令可以快速地建立高效、动态、且交互的Web服务器应用程序6。 经济可行性:航空公司采用网上订票系统全天后为客户服务,方便客户随时随地购票,这样就给其公司带来了更大的经济效益;本系统实施后,也可以节省航空公司购买客户端服务机的成本,使得资金可以加速周转。这样就能节省大量的人力、时间及财力。所以,本系统在经济上是可行的。 管理可行性:本系统带有后台管理,对于客户信息、航班基本信息、订单信息、客户留言信息、管理员信息等都有详细的管理。根据管理员的权限不同,所能管理的范围也是有所差别的。3.2 系统需求分析 3.2.1 系统需求分析描述航空订票系统用于提高订票服务和管理的效率。首先,分析使用这个系统的应是客户和管理人员,所以把系统整体分为前台、后台两部分。因此,应提供客户查询、订票、购票、退票的服务,客户对于订单的查询及对网站的留言;管理人员对客户、航班、订单等的管理。减少了手工输入的过程,界面尽量做到友好,使客户和管理员易学易懂。本系统在设计还要充分考虑系统的可扩展性和商业活动特有的流程,一个良好的前期设计会使系统具有优秀的扩展能力并且便于维护7。本系统主要处理的数据有:客户的基本信息,如用户编号(id)、用户名(username)、用户密码(password)、电子邮件(email_add)、联系方式(telephone)等;航班信息,如航班号(hanBan)、出发地(chuFa)、目的地(muDi)、日期(flag)等;订单信息,如订单号(id)、用户名(username)、乘客(xingming)、证件(shengfen)、证件号(shengfenzhenghao)等。客户登录后可以看到以上信息,并可以对他们进行查询。还有后台管理员的数据信息,如管理员编号(id)、管理员(adminName)、密码(password)、权限(flag)等。后台管理人员可以对以上信息进行查询及增删改。基于以上系统涉及的数据处理,B/S模式实现的航空订票系统具体涉及以下几个方面: 能方便客户对机票进行查询、预定、购买及退票; 能实现对航班的基本查询; 能实现对本网站的留言; 能实现后台管理员对航班的录入、查询、更改、删除等; 实现订单查询的主从表; 系统具有操作方便、简洁等功能。B/S系统的数据间是密切联系、紧密依赖与联动的,数据库存放在企业服务器上的SQL Sever 2000数据库管理系统中。3.2.2 数据流分析在调研和分析航空订票系统过程的基础上,发现航空订票系统的流程是至关重要的,所以分析数据得出了数据流图。 管理员对客户信息的管理,在逻辑功能上可以分为:“产生客户信息”、“接受客户信息”、“处理客户信息”三个步骤,如图3.1所示。图3.1 用户管理数据流图 管理员对航班信息的管理,在逻辑功能上可以分为:“产生航班信息”、“处理航班信息”、“查询航班信息”三个步骤,如图3.2所示。图3.2 航班管理数据流图 管理员对订单信息的管理,在逻辑功能上可以分为:“产生订单信息”、“接受订单信息”、“处理订单信息”三个步骤,如图3.3所示。图3.3 订单管理数据流图 管理员对管理员信息、公告信息、旅游资讯的管理,在逻辑功能上可以分为:“产生信息”、“处理信息”两个步骤,如图3.4所示。图3.4 管理员信息及公告信息数据流图 总的数据流图,如图3.5所示。图3.5 系统总数据流图3.2.3 数据字典数据流图表达了数据和处理的关系,数据字典则是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程5个部分10。以下面数据字典的卡片来举例说明。 数据结构。以“usernameTable”为例。 名字:usernameTable; 别名:客户信息; 描述:航空订票系统的注册信息; 定义:客户信息=客户编号+客户名+密码+性别+电话+邮箱+提示问题+提示答案+注册时间; 位置:保存到usernameTable表中。 数据项。以数据结构“usernameTable”的数据项“username”为例。 名字:username; 别名:客户名; 描述:唯一标识客户的编号; 定义:字符型; 位置:在usernameTable,dingDanTable,messageTable中。 数据流。以数据结构“usernameTable”在系统内的流动为例。 数据流名:客户注册信息; 说明:“usernameTable”数据结构在系统内的流向; 数据流来源:客户注册处理; 数据流去向:usernameTable表; 平均流量:不定; 高峰期流量:不定。 数据存储。以数据结构“usernameTable”在系统内的存储为例。 数据存储名:usernameTable表; 说明:客户注册信息及管理员审核信息; 编号:每个客户有一个唯一的识别客户名; 输入的数据流:客户注册信息; 输出的数据流:管理员审核的信息; 数据结构:usernameTable; 数据量:不定; 存取频率:不定; 存取方法:联机处理、查询与更新、顺序查询与随机查询。 处理过程。以“客户注册”为例。 处理过程名:客户注册; 说明:客户提交注册信息; 输入:客户编号、客户名、密码; 输出:保存到usernameTable表中; 处理:对用户名进行唯一性验证,密码和确认密码性验证。以上通过示例说明了数据字典的基本表示方法,只是起到引导的作用。完整详尽的数据字典应根据实际的系统需求分析,在充分调研、分析、讨论的基础上建立,并将在数据库设计过程中不断修改、充实、完善。3.2.4 系统功能需求经研究分析系统分为前台服务和后台管理。前台服务系统分为以下几大功能: 新客户进行注册,老客户可以直接登录,若忘记密码可以进行密码重置; 客户进入系统可以查询到航班信息,然后可以进行机票的预定、购买,对购买的票要进行退票,必须在航班起飞前两个小时之前进行退票操作; 在我的订单中,客户可以查询到未完成支付的订单、十天之内的所有订单、客户的基本信息及可进行密码修改的操作; 在帮助信息中,说明了客户如何对本网站进行操作及对本网站客户的一些要求,客户若对本航空网站或是航空公司有什么意见或建议可以进行留言操作。后台管理系统分为以下几大功能: 管理员可以查询到客户的信息及留言信息,对留言信息还可进行定期的删除; 对航班的信息,管理员可以进行查询、增加、删除、更改; 对客户的订单信息,管理员可以进行查询、删除操作; 对管理员自身的信息,可以进行删除及更改操作;权限最高的管理员可对所有管理员信息进行曾删改查;所有管理员对公告信息和旅游资讯的查询、增加、删除及更改操作。3.2.5 系统性能需求 数据的准确性与精准性一个完善的订票系统是每个航空公司都应拥有的。一个订票系统必须能够及时的将航班信息反映在系统中,以便能够安排新的航班。并且,应能及时地将航班信息反馈给客户,以便客户进行查询了解。尤其是在购票高峰期时,更能体现出一个完善的订票系统的重要性。对于这个系统的实现,数据的准确性要求是非常高的,任何细小的误差都会导致整个航空业务出现严重的问题。 系统的可扩充性和开放性订票系统在设计与开发过程的时候,系统以后的可扩充性应充分考虑。例如,查询方式的改进,要求系统能够进行功能的扩充及调整。而要实现着一点,就要求系统有很好的开放性,只要符合这点,系统就可以简单的减少或加入功能模块。通过对软件的维护、修补完成系统的更新升级。3.3 本章小结本章讲述了对整个系统的可行性研究及需求分析。在可行性研究方面,主要是从技术、经济、管理三个角度出发进行研究调查的。在需求分析方面,主要是从数据流、功能、及性能方面进行分析的。本章节对功能进行了分析,下一章节将对功能模块进行详细的阐述说明。4 航空订票系统功能设计4.1 系统功能描述在上一章节已经对系统功能进行过分析,这里将对系统功能做更加详细的描述。前台服务系统分为以下几大功能: 新客户可以进行注册操作,若注册的用户名已存在,有提示信息,对于客户注册的用户名、密码、电子邮箱、密码、提示问题、提示答案都要有验证信息,若不达要求应该会有提示信息;老客户可以直接登录系统,在登录时密码错误或是用户名错误都应该有提示信息;若老客户忘记密码可以进行密码重置。 客户进入系统可以看到十天的航班信息,在客户输入出发地、目的地及出发时间后,可以查询到相应的航班信息,然后可以进行机票的预定,在机票预订过程中会有订单信息反馈给客户,以便客户进行确认。退票服务是必须在航班起飞两个小时之前才可以进行的操作,并且只能单张退票。 在我的订单中,客户可以看到未完成支付的订单,能够按照订单日期或航班日期查询到十天之内的所有订单,可以看到客户的基本信息,并且客户可进行密码修改的操作,当密码修改完毕后,必须要重新登录。 在帮助信息中,说明客户如何对本网站进行操作及对本网站客户的一些要求,客户若对本航空网站或是航空公司有什么意见或建议能进行留言操作,但留言内容不能超过1000个字。后台管理系统分为以下几大功能: 对客户的信息及留言信息,管理员按照客户的注册日期可以查询到客户的基本信息,对留言信息管理员可按照留言日期进行查询,可以看到详细的留言内容,可以删除某条留言内容,也能批量删除留言内容。 对航班的信息,管理员可以根据航班、航班日期、出发地、目的地查询航班的信息,可以对某条航班信息进行细节更改;管理员还可以增加删除某一航班;还可对某一天的航班更改为另外一天的航班,然后在进行航班的细节更改。 对客户的订单信息,管理员可以按照订单日期和航班日期进行查询;但删除的时候只能删除按照航班日期查询的订单。 权限最高的管理员可对所有管理员信息进行增删改查;所有管理员都可对旅游资讯和公告信息进行查询、增加、删除及更改操作。4.2 系统数据流程图图4.1是对本系统前台即客户端的流程介绍。客户进入本系统的网站,首先进入的是网站首页,新用户可以进行注册,然后登录本网站;老用户可以直接登录进入本系统,然后在本网站进行查询航班、预定机票、退票服务、订单查询、修改密码及留言等,还可以在登录后的首页看到本网站的公告信息、旅游景点的介绍等;若老用户忘记密码,可在进行密码重置操作。图4.1 系统前台总流程图图4.2是对本系统后台即本航空订票系统管理流程的介绍。管理员登录进入后台管理界面后,在用户管理中,可对用户信息进行查询、对客户留言信息进行查询、增删改;在航班管理中,对航班可以进行查询、增加、删除、某个航班的细节更改及航班的批量更改;在订单管理中,管理员可以查询客户的订单、删除客户的某条订单记录、删除某天所有客户的订单及删除某个日期前的所有客户的订单;在管理员信息中,权限最高的管理员可以查询某个管理员的信息、增删改管理员,普通管理员只能对自己的信息进行修改,对网站的公告信息需要每天都进行更新,还可进行查询、增加、删除等操作,对旅游资讯可进行上传及查询、删除等操作。图4.2 系统后台总流程图4.3 系统功能描述及模块示意图4.3.1 系统功能总描述及总模块图根据航空订票系统的特点,可以将其分为前台服务模块和后台管理模块进行系统设计。前台服务模块是面向Internet上的客户,主要包括首页、航班查询、航班预定、退票服务、我的订单及帮助中心等模块;后台管理模块则是用于对网站及其信息进行管理和维护,主要包括用户管理、航班管理、订单管理、管理员信息管理、公告管理、旅游资讯信息管理模块。系统的总功能模块结构如图4.3所示,体现了整个系统的功能实现。图4.3 系统功能总模块图4.3.2 系统详细功能描述及功能模块图 前台模块详细功能描述及功能模块图 客户登录模块在首页1,客户可以进行登录,或是进入这侧页面进行注册操作,若忘记密码了,可以密码重置,然后进行登录到首页2界面。图4.4 客户登录功能模块图 航班预定模块首先,客户可以在航班预定中查询所要预定的班次,如需预定就要进行登录操作,登录后点击预定,确认航班信息后,填写要订票的客户信息,提交订单后再次确认航班信息及客户信息等,若信息有所差错可以取消订单,若确定购买就进行支付操作。图4.5 航班预定功能模块图 退票服务模块首先,客户需要登录本网站才可以进行此操作,客户可以按照订单日期或航班日期对已支付的订单进行查询,并且退票操作必须在航班起飞前两个小时才可以进行,若确定退票就必须扣除一定的手续费。图4.6 航班退票服务功能模块图 我的订单模块首先,客户需要进行登录才能进行此操作。在此模块中,客户可以查询到尚未支付的订单,可以去进行支付;可以查询到十天前的所有订单;也可进行退票操作,和上述的退票服务模块一样;客户还可以查看到自己的基本信息;此模块最后一个功能是客户可以修改自己的登录密码,若密码修改成功,就需重新登录。图4.7 我的订单功能模块图 帮助中心模块在帮助中心,客户可以查看购票所要知道的内容及操作;若客户想要留言,就必须进行登录,登录后方可以进行留言操作。图4.8 帮助中心功能模块图 后台模块详细功能描述及功能模块图 用户管理模块 管理员登录,对客户的信息可以进行查询,但不能进行增删改;对客户的留言可以进行查询,可以查看到详细的留言内容,可以删除某条留言信息或是某个日期的所有留言或是某个日期前的所有留言。图4.9 用户管理功能模块图 航班管理模块管理员可以查询航班,对某条航班信息进行详情更改;可以增加某个航班;可以删除某个航班;还可以批量更改航班信息。图4.10 航班管理功能模块图 订单管理模块管理员在进行订单管理时,可以查询某个日期内的所有订单;可以删除某天订单记录或是删除 查询日期间的所有订单。图4.11 订单管理功能模块图 管理员信息模块高级管理员可以对所有管理员进行查询、增加、删除、更改操作,普通管理员只能对自己的用户名及密码进行修改操作;所有管理员都可以对公告信息进行查询及增删改。图4.12 管理员信息管理功能模块图4.4 本章小结本章主要介绍了系统的功能模块的设计,涉及到了对系统功能的详细描述、对系统流程的描述、对系统每个功能模块的描述。对流程图及功能模块的描述采用了与图结合的方式,使得功能设计更有说服力。 5 航空订票系统数据库设计5.1 数据库概念结构设计在分析设计出的数据流程图的基础上,得出系统所要处理的实体及其联系,在确定实体及其联系的主要属性后,结合系统的功能处理要求后,采用自底向上的设计方法得出局部E-R图和全局E-R图8。 客户查询航班的E-R设计。客户信息实体的属性包括:客户编号、客户名、密码、性别、电话、邮箱、提示问题、提示答案、注册时间;航班信息实体的属性包括:航班编号、航班日期、航班号、出发地、出发时间、目的地、到达时间、头等舱、头等票价、经济舱、经济票价、历时、总时间;上述实体存在如下联系:一个客户可以查询多个航班,一个航班可以被多个客户查询。根据上述约定,可以得到客户查询航班的局部E-R图,如图5.1所示。图5.1 客户查询航班的E-R 客户预定及退票的E-R设计。客户信息实体的属性包括:客户编号、客户名、密码、性别、电话、邮箱、提示问题、提示答案、注册时间;订单编号、客户名、姓名、电话、证件类型、证件号、订单日期、航班日期、航班号、席别、票种、票价、状态编号、订票时间;订单状态实体的属性包括:状态编号、状态值;上述实体存在如下联系: 一个客户可以预定多个订单,一个订单只属于一个客户; 一个订单只有一个状态,一个状态可以属于多个订单。根据上述约定,可以得到客户预定及退票的局部E-R图,如图5.2所示。图5.2 客户预定及图票的E-R 客户留言的E-R设计。客户信息实体的属性包括:客户编号、客户名、密码、性别、电话、邮箱、提示问题、提示答案、注册时间;留言实体的属性包括:留言编号、客户名、留言时间、留言内容;上述实体存在如下联系:一个客户可以留言多条,一个留言值可能属于一个客户。根据上述约定,可以得到客户留言的局部E-R图,如图5.3所示。图5.3 客户留言的E-R 管理员管理客户信息、航班信息、订单信息、留言、公告、旅游资讯的E-R设计。管理员信息实体的属性包括:管理员编号、管理员名、密码、权限编号;权限实体的属性包括:权限编号、权限值;客户信息实体的属性包括:客户编号、客户名、密码、性别、电话、邮箱、提示问题、提示答案、注册时间;客户订单实体的属性包括:订单编号、客户名、姓名、电话、证件类型、证件号、订单日期、航班日期、航班号、席别、票种、票价、状态编号、订票时间;航班信息实体的属性包括:航班编号、航班日期、航班号、出发地、出发时间、目的地、到达时间、头等舱、头等票价、经济舱、经济票价、历时、总时间;留言实体的属性包括:留言编号、客户名、留言时间、留言内容;公告实体的属性包括:公告编号、当前日期、公告信息;旅游资讯的实体属性包括:资讯编号、上传管理员、图片名称、图片相对路径、图片绝对路径、上传时间;上述实体存在如下联系: 一个管理员值可能有一种权限,一个权限可能属于多个管理员; 一个管理员可以管理每张表的很多信息,每张表的信息也可由多个管理员管理。根据上述约定,可以得到管理员管理客户信息、航班信息、订单信息、留言、公告、旅游资讯的局部E-R图,如图5.4所示(仅以管理员管理客户为例)。图5.4 管理员权限E-R图 全局E-R模型设计。各个局部视图即分E-R图建立好后,还需对它们进行合并,集成为一个整体的概念数据结构即全局E-R图,如图5.5所示。图5.5 全局E-R图5.2 数据库逻辑结构设计根据E-R图转换成关系模式规则(多对多联系均采用转化为一个独立的关系规则),很容易得到如下关系模式: 客户信息(客户编号、客户名、密码、性别、电话、邮箱、提示问题、提示答案、注册时间); 航班信息(航班编号、航班日期、航班号、出发地、出发时间、目的地、到达时间、头等舱、头等票价、经济舱、经济票价、历时、总时间); 订单信息(订单编号、客户名、姓名、电话、证件类型、证件号、订单日期、航班日期、航班号、席别、票种、票价、状态编号、订票时间); 订单状态(状态编号、状态值); 留言信息(留言编号、客户名、留言时间、留言内容); 管理员信息(管理员编号、管理员名、密码、权限编号); 管理员权限(权限编号、权限值); 公告信息(公告编号、发布管理员、当前日期、公告信息); 旅游资讯(图片编号、上传管理员、图片名称、图片相对路径、图片绝对路径、上传时间)。表名与属性名转化为相应的英文,则9个关系模式为: usernameTable(id,username,password,sex,telephone,email_add,question,answer,registerTime); hangBanTable( id.flag,hanBan,chuFa,chuFaSJ,muDi,daoDaSJ,touDeng,touDengPJ, jingJi,jingJiPJ,liShi,zTime ); dingDanTable(id,username,xingming,telephone,shenfengleixing,shenfengzhenghao, dangQianRiQi,riQi,hangban,xibie,piaozhong,piaojia,flag,dqtime); zhiFuZhuangTaiTable(id,flag_); messageTable(id,username,liuyanTime,content); adminTable(id,adminName,password,flag); adminFlagTable(id,adminFlag); noticeTable(id,admin,date_,notice); lvYouTable(id,admin,mingChen,tupian,tupian_,add_time) 9。5.3 数据库物理结构设计本航空订票系统共涉及9张表:客户信息表usernameTable、航班信息表hangBanTable、订单信息表dingDanTable、订单状态表dingDanZhuangTaiTable、留言信息表messageTable、管理员信息表adminTable、管理员权限内表adminFlagTable、公告表noticeTable、旅游资讯表lvYouTable。本系统数据库表的物理设计通过创建表的T-SQL命令及数据库关系图来呈现10。 创建数据库表的T-SQL命令 CREATE DATABASE Management-创建数据库 GO -以下为创建各表的SQL命令 客户信息表用来记录客户的一些基本信息,其结构如表5-1所示。CREATE TABLE usernameTable( idint(4) NOT NULL, usernamevarchar(50)NOT NULL, passwordvarchar(50) NOT NULL, sexchar(10) NOT NULL, telephonechar(20) NOT NULL, email_addvarchar(50) NOT NULL, questionvarchar(50) NOT NULL, answervarchar(50) NOT NULL, registerTimevarchar(50) NOT NULL,COMSTRAINT PK_usernameTablePRIMARY KEY CLUSTERED(username) 11;表5-1 客户信息表序号含义列名数据类型长度允许空备注1客户编号idint4否自增2客户名usernamevarchar50否主键3密码passwordvarchar50否4性别sexchar10否5电话telephonechar20否6邮箱email_addvarchar50否7提示问题questionvarchar50否8提示答案answervarchar50否9注册时间registerTimevarchar50否 航班信息表记录航班的基本信息,其结构如表5-2所示。CREATE TABLE hangBanTable( idint(4) NOT NULL, flagvarchar(50)NOT NULL, hanBanvarchar(50) NOT NULL, chuFavarchar(50) NOT NULL, chuFaSJvarchar(50) NOT NULL, muDivarchar(50) NOT NULL, daoDaSJvarchar(50) NOT NULL, touDengint(4) NOT NULL, touDengPJfloat(8) NOT NULL, jingJiint(4) NOT NULL, jingJiPJfloat(8) NOT NULL, liShivarchar(50) NOT NULL, zTimevarchar(50) NOT NULL,COMSTRAINT PK_hangBanTablePRIMARY KEY CLUSTERED(id);表5-2 航班信息表序号含义列名数据类型长度允许空备注1航班编号idint4否自增,主键2航班日期flagvarchar50否3航班号hanBanvarchar50否4出发地chuFavarchar50否5出发时间chuFaSJvarchar50否6目的地muDivarchar50否7到达时间daoDaSJvarchar50否8头等舱touDengint4否9头等票价touDengPJfloat8否10经济舱jingJiint4否11经济票价jingJiPJfloat8否12历时liShivarchar50否13总时间zTimevarchar50否 留言表用来记录客户的建议和意见,其表结构如表5-3所示。CREATE TABLE messageTable( idint(4) NOT NULL, usernamevarchar(50)NOT NULL, liuyanTimevarchar(50) NOT NULL, contentvarchar(50) NOT NULL,COMSTRAINT PK_messageTablePRIMARY KEY CLUSTERED(id);表5-3 留言信息表序号含义列名数据类型长度允许空备注1留言编号idint4否自增,主键2客户名usernamevarchar50否3留言时间liuyanTimevarchar50否4留言内容contentvarchar1000否 支付状态表用来表示不同订单的状态分类,其表结构如表5-4所示。CREATE TABLE zhiFuZhuangTaiTable( idint(4) NOT NULL, flag_varchar(50)NOT NULL,COMSTRAINT PK_zhiFuZhuangTaiTablePRIMARY KEY CLUSTERED(id);表5-4 支付状态表序号含义列名数据类型长度允许空备注1状态编号idint4否自增,主键2状态值flag_varchar50否 订单信息表用来记录客户的预定信息,其表结构如表5-5所示。CREATE TABLE dingDanTable( idint(4) NOT NULL, usernamevarchar(50)NOT NULL, xingmingvarchar(50) NOT NULL, telephonevarchar(50) NOT NULL, shenfengleixingvarchar(50) NOT NULL, shenfengzhenghaovarchar(50) NOT NULL, dangQianRiQivarchar(50) NOT NULL, riQivarchar(50) NOT NULL, hangbanvarchar(50) NOT NULL, xibievarchar(50) NOT NULL, piaozhongvarchar(50) NOT NULL, piaojiavarchar(50) NOT NULL, flagint(4) NOT NULL, dqtimevarchar(50) NOT NULL,COMSTRAINT PK_dingDanTablePRIMARY KEY CLUSTERED(id);表5-5 订单信息表序号含义列名数据类型长度允许空备注1订单编号idint4否自增,主键2客户名usernamevarchar50否3姓名xingmingvarchar50否4电话telephonevarchar50否5证件类型shenfengleixingvarchar50否6证件号shenfengzhenghaovarchar50否7订单日期dangQianRiQivarchar50否8航班日期riQivarchar50否9航班号hangbanvarchar50否10席别xibievarchar50否11票种piaozhongvarchar50否12票价piaojiavarchar50否13状态编号flagint4否14订票时间dqtimevarchar50否 管理员信息表类似与客户表,用来保存管理员的基本信息,其表结构如表5-6所示。CREATE TABLE adminTable( idint(4) NOT NULL, adminNamevarchar(50)NOT NULL, passwordvarchar(50) NOT NULL, flagint(4) NOT NULL,COMSTRAINT PK_adminTablePRIMARY KEY CLUSTERED(adminName);表5-6 管理员信息表序号含义列名数据类型长度允许空备注1管理员编号idint4否自增2管理员名adminNamevarchar50否主键3密码passwordvarchar50否4权限编号flagint4否 管理员权限表用来表示管理员的角色类别,其表结构如表5-7所示。CREATE TABLE adminFlagTable( idint(4) NOT NULL, adminFlagvarchar(50)NOT NULL,COMSTRAINT PK_adminFlagTablePRIMARY KEY CLUSTERED(id);表5-7 管理员权限表序号含义列名数据类型长度允许空备注1管理员编号idint4否自增,主键2管理员名adminFlagvarchar50否 公告信息表用来存放网站的公告信息,其表结构如表5-8所示。CREATE TABLE noticeTable( idint(4) NOT NULL, adminvarchar(50)NOT NULL, date_varchar(50)NOT NULL, noticevarchar(500)NOT NULL,COMSTRAINT PK_noticeTablePRIMARY KEY CLUSTERED(id);表5-8 公告信息表序号含义列名数据类型长度允许空备注1公告编号idint4否自增,主键2发布管理员adminvarchar50否3当前日期Date_varchar50否3公告内容noticevarchar500否 公告信息表用来存放网站的公告信息,其表结构如表5-9所示。CREATE TABLE lvYouTable( idint(4) NOT NULL, adminvarchar(50)NOT NULL, mingChenvarchar(50)NOT NULL, tupianvarchar(50)NOT NULL, tupian_varchar(50)NOT NULL, add_timevarchar(50)NOT NULL,COMSTRAINT PK_noticeTablePRIMARY KEY CLUSTERED(id);表5-9 旅游资讯表序号含义列名数据类型长度允许空备注1图片编号idint4否主键2上传管理员adminvarchar50否3图片名称mingChenvarchar50否4图片相对路径tupianvarchar50否5图片绝对路径Tupian_varchar50否6上传日期Add_timevarchar50否 数据库关系图 客户表、航班表、订单表、订单状态表及留言表间的关系图。图5.6 五表间的联系 管理员信息表、权限表、公告表、旅游资讯表的关系图。图5.5 四表间的联系5.5 本章小结本章节主要讲解了对系统数据库的设计,主要从数据库的概念结构、逻辑结构、物理结构及数据字典进行设计研究的。数据库的设计对于一个系统设计是非常重要的,数据库设计的好坏,直接影响到系统的设计开发。好的数据库设计,能给系统的开发减轻很大的负担。上面的章节讲述了系统开发的背景、系统的需求分析、系统的功能设计、系统的数据库设计,这些都是系统进行开发前所要完成的,接下来就进行入真正的开发实现过程。6 航空订票系统界面及主要程序6.1 航空订票系统前台界面6.1.1 主界面 系统首页1图6.1 系统首页1如图6.1所示,是整个系统登录前的首页面。整个页面都是用div容器承载的,背景画面是以div的背景色放入的。界面上的网站标题“无锡航空”是用flash做的特效,然后用div容器及object把.swf格式的文件插入。页面头部的“登录”、“注册”都是用LinkButton做的,在LinkButton的OnClick事件中放入页面跳转代码,就可以点击链接到相应的页面。导航按钮同样都是用LinkButton做的,可以链接到相应的服务模块。左侧的登录服务模块中,验证码的代码是放在另一个.aspx中,然后用image控件的url去链接。右侧的旅游景点的介绍是存放在table容器中结合js技术来实现一直往右循环移动的效果。右侧最下面的文本是一直往右循环移动的,是用marquee来实现的。页面最下面的“关于我们”、“帮助中心”是用超文本链接指针完成的链接操作。对于页面的头部及底部,之后将不做多余的声明。 Flash特效代码: 验证码的后台cs代码: Random rnd = new Random();/随机数定义 int n = rnd.Next(1000, 9999);/取1000到9999的随机数 Sessionyanzheng = n.ToString();/把取到的随机数放在Session中 Response.CookiesCheckCode.Value = n.ToString();System.Drawing.Bitmap btp = new System.Drawing.Bitmap(62, 29);/用于处理由像素数据定义的图像的对象System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(btp);/封装绘图图面g.Clear(System.Drawing.Color.Snow);/图面背景色g.DrawString(n.ToString(), new System.Drawing.Font(宋体, 19), System.Drawing.Brushes.Cyan, 2, 1);/图面字体定义System.IO.MemoryStream ms = new System.IO.MemoryStream();/创建其支持存储区为内存的流btp.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);/指定图像的格式Response.BinaryWrite(ms.ToArray();/将一个二进制字符串写入HTTP输出流 文字向上循环移动的前台代码: /写入要移动的文字,若想要文字往左或往右移动,则只要改变direction的值 每有一个用户登录就对数据库里未支付订单进行扫描,看是否比当前时间减去45分钟还要来的早,若是就取消订单和更新数据库里航班余票。 DateTime datetime = DateTime.Now.AddMinutes(-45); string time = datetime.ToString(yyyy-MM-dd HH:mm); SqlConnection sqlConnection = new SqlConnection(Data Source = localhost;Initial Catalog=毕业设计;Integrated Security=True); string ConnectionString = Data Source=localhost;Initial Catalog=毕业设计;Integrated Security=True; SqlConnection myconnection = new SqlConnection(ConnectionString); SqlCommand myCommand_ = new SqlCommand(); myCommand_.CommandText = select count(flag) from dingDanTable where dqtime = + + time + + and flag = 1; myCommand_.Connection = myconnection; myCommand_.Connection.Open(); SqlDataReader myDataReader = null;/读取数据库中数据 myDataReader = myCommand_.ExecuteReader(CommandBehavior.CloseConnection); int count=0; while (myDataReader.Read() count = myDataReader.GetInt32(0); SqlConnection myConnection = new SqlConnection(Data Source=localhost;Initial Catalog=毕业设计;Integrated Security = True); int j = Convert.ToInt32(count); for (int i = 1; i = j; i+) string strSQL = select * from dingDanTable where dqtime 0) string strconn = Data Source=localhost;Initial Catalog=毕业设计;Integrated Security=True; string SQL = select * from hangBanTable where hanBan= + + myDS.TablesdingDanTable.Rows0hangban.ToString() + + and flag = + + myDS.TablesdingDanTable.Rows0riQi.ToString() + ; SqlConnection myconn = new SqlConnection(strconn); SqlDataAdapter myda = new SqlDataAdapter(SQL, myconn); DataSet myds = new DataSet(); myda.Fill(myds, hangBanTable); if (myDS.TablesdingDanTable.Rowsi-1xibie.ToString() = 头等舱) int a = Convert.ToInt32(myds.TableshangBanTable.Rows0touDeng); a = a + 1; sqlConnection.Open(); SqlCommand comm1 = new SqlCommand(); comm1.CommandText = update hangBanTable set touDeng = + a + where hanBan= + + myDS.TablesdingDanTable.Rows0hangban.ToString() + + and flag = + + myDS.TablesdingDanTable.Rows0riQi.ToString() + ; comm1.Connection = sqlConnection; comm1.ExecuteNonQuery(); sqlConnection.Close(); else if (myDS.TablesdingDanTable.Rowsi-1xibie.ToString() = 经济舱) /代码类似上面经济舱 sqlConnection.Open(); SqlCommand comm = new SqlCommand(); comm.CommandText = delete from dingDanTable where dqtime 0 & nameTxt.Text != & passwordTxt.Text != & yanZhengTxt.Text = Sessionyanzheng.ToString() Sessionname = myds.TablesuserTable.Rows0username.ToString(); Response.Redirect(MainWindow.aspx); else if (nameTxt.Text = | passwordTxt.Text = ) Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(用户名和密码不能为空!); yanZhengImage.ImageUrl = YanZhengMa.aspx; else if (yanZhengTxt.Text != Sessionyanzheng.ToString() Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(验证码错误!); nameTxt.Text = ; passwordTxt.Text = ; yanZhengTxt.Text = ; yanZhengImage.ImageUrl = YanZhengMa.aspx; else Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(用户名或密码错误!); nameTxt.Text = ; passwordTxt.Text = ; yanZhengTxt.Text = ; yanZhengImage.ImageUrl = YanZhengMa.aspx; 6.1.3 注册界面图6.4 注册界面如图6.4所示,在这个注册界面上,基本控件用到了Label、TextBox、CheckBox、DropDownList及ImageButton控件,验证控件用到了RequiredFieldValidator、RegularExpressionValidator、CompareValidator、CustomValidator控件12。 RequiredFieldValidator验证控件的使用: RegularExpressionValidator验证控件的使用: CompareValidator验证控件的使用: CustomValidator控件的使用:/自定义的验证程序 protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) string cName = args.Value; SqlConnection sqlConnection = new SqlConnection(Data Source=localhost;Initial Catalog=毕业设计;Integrated Security=True); sqlConnection.Open(); SqlCommand comm = new SqlCommand(); comm.CommandText = select Count(*) from userTable where username= + cName + ; comm.Connection = sqlConnection; comm.ExecuteNonQuery(); int count = Convert.ToInt32(comm.ExecuteScalar(); if (count 0) args.IsValid = false; else args.IsValid = true; sqlConnection.Close(); 注册后台代码:string strconn = Data Source=localhost;Initial Catalog=毕业设计;Integrated Security=True; string str = + txtname.Text + ; string SQL = select * from userTable where username= + str.Trim(); SqlConnection myconn = new SqlConnection(strconn); SqlDataAdapter myda = new SqlDataAdapter(SQL, myconn); DataSet myds = new DataSet(); DataRow myrow;/创建新行 myda.Fill(myds, userTable); /建立更新对象 SqlCommandBuilder dacomm = new SqlCommandBuilder(myda); /判断表中是否已存在所要增加的用户名 if (myds.TablesuserTable.Rows.Count = 0 & Page.IsValid = true & CheckBox1.Checked = true) myrow = myds.TablesuserTable.NewRow(); myrowusername = txtname.Text.Trim(); myrowpassword = HashString(Encoding.UTF8, txtpassword.Text); myrowtelephone = txtelephone.Text.Trim(); myrowemail_add = txtemail.Text.Trim(); myrowsex = txtsex.SelectedValue; myrowquestion = txtquestion.Text.Trim(); myrowanswer = txtanswer.Text.Trim(); myrowregisterTime = DateTime.Now.ToString(yyyy-MM-dd); myds.TablesuserTable.Rows.Add(myrow); /更新数据库中的数据表 myda.Update(myds, userTable); Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(注册成功!);window.location.href=Login.aspx;); md5(信息摘要技术算法),可以防止用户密码的泄露。 using System.Text; using System.Security.Cryptography; #region MD5 public static string HashString(Encoding encode, string sourceString) MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte source = md5.ComputeHash(encode.GetBytes(sourceString); StringBuilder sBuilder = new StringBuilder(); for (int i = 0; i source.Length; i+) sBuilder.Append(sourcei.ToString(x); return sBuilder.ToString(); #endregion string ps=HashString(Encoding.UTF8, rpassword.Text);6.1.4 忘记密码界面图6.5 忘记密码界面如图6.5所示,进入本界面时,只有用户名的TextBox及确定ImageButton,若用户名输入框为空,则有“用户名不能为空!”的提示,若用户名输入错误,则会有“您输入的用户名不存在”的提示,若输入正确,则会跳出提示问题及提示答案的输入框;在问题答案输入框中输入答案,若答案不正确,则会有“抱歉,您的答案不正确”的提示,若输入正确,则会跳出密码信息。6.1.5 查询航班界面图6.6 查询界面如图6.6所示,在查询时,出发地、目的地、及出发日期的输入框是必须输入的,若没有输入,则会有“不能为空”的信息提示。在选中出发日期输入框时,会自动弹跳出一个日历选择表,是用借鉴的js文件完成的。显示的航班信息表是GridView控件。GridView控件的使用: 前台代码: /绑定的数据 后台代码:/分页 protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) GridView1.PageIndex = e.NewPageIndex; BindData();/gridview绑定数据/数据绑定 public void BindData() DateTime datetime = DateTime.Now.AddHours(2); string time = datetime.ToString(yyyy-MM-dd HH:mm); SqlConnection myConnection = new SqlConnection(Data Source=localhost;Initial Catalog=毕业设计;Integrated Security=True); string strSQL = select * from hangBanTable where zTime + + time + +order by flag; SqlCommand myCommand = new SqlCommand(strSQL, myConnection); SqlDataAdapter myDA = new SqlDataAdapter(); myDA.SelectCommand = myCommand; DataSet myDS = new DataSet(); myDA.Fill(myDS); GridView1.DataSource = myDS.Tables0; GridView1.DataBind(); 查询按钮代码: DateTime datetime = DateTime.Now.AddHours(2); string time = datetime.ToString(yyyy-MM-dd HH:mm); string strconn = Data Source=localhost;Initial Catalog=毕业设计;Integrated Security=True; string SQL = select * from hangBanTable where chuFa= + + startxt.Text.Trim() + + and muDi = + + dimtxt.Text.Trim() + + and flag = + + datetxt.Text.Trim() + + and zTime + + time + +order by flag; SqlConnection myconn = new SqlConnection(strconn); SqlDataAdapter myda = new SqlDataAdapter(SQL, myconn); DataSet myDS = new DataSet(); myda.Fill(myDS, hangBanTable); if (myDS.TableshangBanTable.Rows.Count 0) GridView1.DataSource = myDS.Tables0; GridView1.DataBind(); else if (startxt.Text = ) Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(出发站不能为空!); else if (dimtxt.Text = ) Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(目的站不能为空!); else if (datetxt.Text = ) Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(出发时间不能为空!); else Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(没有此航班!);6.1.6 预定航班界面 预定界面图6.7 订票界面如图6.7所示,此订票界面与上述的查询界面类似,值需在GridView控件最后加上预定操作即可。这里的预定操作是用LinkButton来完成的,若某航班的机票没有时,会有“此航班机票已售完”的提示信息。预定按钮在GridView中的前台代码: asp:LinkButton ID=LinkButton1 runat=server CommandArgument= OnClick=LinkButton1_Click预定 预定按钮后台代码:int id = Convert.ToInt32(LinkButton)sender).CommandArgument);Sessionid = id.ToString();string strconn = Data Source=localhost;Initial Catalog=毕业设计;Integrated Security=True;string SQL = select * from hangBanTable where id=+id;SqlConnection myconn = new SqlConnection(strconn);SqlDataAdapter myda = new SqlDataAdapter(SQL, myconn);DataSet myDS = new DataSet();myda.Fill(myDS, hangBanTable);if ( Convert.ToInt16(myDS.TableshangBanTable.Rows0touDeng.ToString() 0 | Convert.ToInt16(myDS.TableshangBanTable.Rows0jingJi.ToString() 0) Response.Redirect(YuDingZhong.aspx); else Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(此航班机票已售完!);); 预定中界面图6.8 预定进行中界面图6.9 确认航班信息界面如图6.8所示,航班信息表显示的航班信息还是用GridView控件做的,在刚才点击预定按钮的时候,把预定航班的id值用Session暂时保存起来,此页面的GridView控件就可以到数据库中取出相应的信息。此界面中,本是只能输入一个乘客信息的,当点击添加按钮时,就会增加一个乘客输入信息,即同时可以购买两张票。乘客信息的输入框都不能为空,否则会有提示信息的出现,同一个人同一航班也只能购买一张票。对于填写证件号码及手机号的输入框有验证信息,若输入错误就会有验证信息显示。选择不同的席别与票种票价就会有相应的不同,当点击提交订单按钮时,会跳出如图6.9所示的界面,对航班信息进行再次确认。点击取消,就会回到图6.8的界面,点击确定会跳到图6.10的确认订单信息界面,这时订单信息也会在数据库中存在了。确定按钮中的代码和注册代码类似,都是把界面数据存放到数据库中,在此不做多的讲述。 确认预定界面图6.10 确认订单界面如图6.10所示,本界面GridView中显示的是刚预定的两条信息,总计金额中可以显示买的票价总额,若点击取消订单,则刚才的订单就会在数据库中删除,航班信息中的余票也将自动更新回来,若点击网上支付,则会进入到支付页面。因为系统45分钟后会自动取消订单,所以本界面还设定了一个时间实时更新的Label,界面上可以看到时间的倒流。 取消订单代码:/ 航班余票的更新 string time = Convert.ToString(Sessiondatetime); SqlConnection sqlConnection = new SqlConnection(Data Source = localhost;Initial Catalog=毕业设计;Integrated Security=True); SqlConnection myConnection = new SqlConnection(Data Source=localhost;Initial Catalog=毕业设计;Integrated Security = True); string strSQL = select * from dingDanTable where dqtime = + + time + + and username = + + Sessionname.ToString() + ; SqlCommand myCommand = new SqlCommand(strSQL, myConnection); SqlDataAdapter myDA = new SqlDataAdapter(); myDA.SelectCommand = myCommand; DataSet myDS = new DataSet(); myDA.Fill(myDS,dingDanTable); string strconn = Data Source=localhost;Initial Catalog=毕业设计;Integrated Security=True; string SQL = select * from hangBanTable where hanBan= + + myDS.TablesdingDanTable.Rows0hangban.ToString() + + and flag = + + myDS.TablesdingDanTable.Rows0riQi.ToString() + ; SqlConnection myconn = new SqlConnection(strconn); SqlDataAdapter myda = new SqlDataAdapter(SQL, myconn); DataSet myds = new DataSet(); myda.Fill(myds, hangBanTable); if (myDS.TablesdingDanTable.Rows0xibie.ToString() = 头等舱) int a = Convert.ToInt32(myds.TableshangBanTable.Rows0touDeng); if (Sessionbool.ToString() = yes) a = a + 2; else if (Sessionbool.ToString() = no) a = a + 1; sqlConnection.Open(); SqlCommand comm1 = new SqlCommand(); comm1.CommandText = update hangBanTable set touDeng = + a + where hanBan= + + myDS.TablesdingDanTable.Rows0hangban.ToString() + + and flag = + + myDS.TablesdingDanTable.Rows0riQi.ToString() + ; comm1.Connection = sqlConnection; comm1.ExecuteNonQuery(); sqlConnection.Close(); else if (myDS.TablesdingDanTable.Rows0xibie.ToString() = 经济舱) /与头等舱代码相似/删除订单 sqlConnection.Open(); SqlCommand comm = new SqlCommand(); comm.CommandText = delete from dingDanTable where dqtime = + + time + + and username = + + Sessionname.ToString() + ; comm.Connection = sqlConnection; comm.ExecuteNonQuery(); sqlConnection.Close(); 时间比较代码: public string dateDiff() DateTime time = Convert.ToDateTime(Sessionhour); DateTime dqtime = Convert.ToDateTime(DateTime.Now.ToString(HH:mm:ss); string dateDiff = null; TimeSpan ts1 = new TimeSpan(time.Ticks); TimeSpan ts2 = new TimeSpan(dqtime.Ticks); TimeSpan ts = ts1.Subtract(ts2).Duration(); dateDiff = ts.Minutes.ToString();/分钟的比较值 /秒的比较值dateDiff = ts.Seconds.ToString() return dateDiff; 实时更新代码: /实时更新 ,第一个参数为方法,在方法里写时间的倒流,第二个参数为每秒更新 setTimeout(time, 1000); 支付界面图6.11 支付界面如图6.11所示,此界面上的每个银行图片用的都是ImageButton控件,当点击每个图片按钮时,本应跳转到相应银行的支付端界面的,但因条件受限,只能出现支付成功的信息提示框,并且在后台数据库中订单的状态会变成已支付状态,当点击确定时,就会自动跳转到预定页面。6.1.7 退票服务界面图6.12 退票服务界面如图6.12所示,原本是没有GirdView控件构成的订单表的,当输入查询日期点击查询按钮后,就会在GirdView控件中出现符合查询信息的订单信息。起始日期和结束日期是不能为空的,若为空,就会有相应的提示信息。也可以查询到具体某个航班或是某位乘客的订单信息。当点击退票操作的时候,会有“你确认要删除吗?将扣除票价的5%手续费!”的提示信息,若确定,则退票成功,在数据库中相应航班的票数将更新,订单状态也将更新;若取消,则退票失败。“退票”按钮使用的是GridView中CommandField的DeleteButton,并在GridView中设置 OnRowDataBound=GridView1_RowDataBoundOnRowDeleting=GridView1_RowDeleting DataKeyNames=id。退票代码13: protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) int id = Convert.ToInt32(GridView1.DataKeyse.RowIndex.Value.ToString(); /更新数据库中的订单状态 SqlConnection sqlConnection = new SqlConnection(Data Source=localhost;Initial Catalog=毕业设计;Integrated Security=True); sqlConnection.Open(); SqlCommand comm = new SqlCommand(); comm.CommandText = update dingDanTable set flag = + 3 + where id = + id; comm.Connection = sqlConnection; comm.ExecuteNonQuery(); sqlConnection.Close(); BindData(); /更新数据库中的航班余票 SqlConnection myConnection = new SqlConnection(Data Source=localhost;Initial Catalog=毕业设计;Integrated Security = True); string strSQL = select * from dingDanTable where id = + id; SqlCommand myCommand = new SqlCommand(strSQL, myConnection); SqlDataAdapter myDA = new SqlDataAdapter(); myDA.SelectCommand = myCommand; DataSet myDS = new DataSet(); myDA.Fill(myDS, dingDanTable); string strconn = Data Source=localhost;Initial Catalog=毕业设计;Integrated Security=True; string SQL = select * from hangBanTable where hanBan= + + myDS.TablesdingDanTable.Rows0hangban.ToString() + + and flag = + + myDS.TablesdingDanTable.Rows0riQi.ToString() + ; SqlConnection myconn = new SqlConnection(strconn); SqlDataAdapter myda = new SqlDataAdapter(SQL, myconn); DataSet myds = new DataSet(); myda.Fill(myds, hangBanTable); if (myDS.TablesdingDanTable.Rows0xibie.ToString() = 头等舱) int a = Convert.ToInt32(myds.TableshangBanTable.Rows0touDeng); a = a + 1; sqlConnection.Open(); SqlCommand comm1 = new SqlCommand(); comm1.CommandText = update hangBanTable set touDeng = + a + where hanBan= + + myDS.TablesdingDanTable.Rows0hangban.ToString() + + and flag = + + myDS.TablesdingDanTable.Rows0riQi.ToString() + ; comm1.Connection = sqlConnection; comm1.ExecuteNonQuery(); sqlConnection.Close(); else if (myDS.TablesdingDanTable.Rows0xibie.ToString() = 经济舱) /代码与头等舱类似 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) /如果是绑定数据行 if (e.Row.RowType = DataControlRowType.DataRow) if (e.Row.RowState = DataControlRowState.Normal | e.Row.RowState = DataControlRowState.Alternate) (LinkButton)e.Row.Cells12.Controls0).Attributes.Add(onclick, javascript:return confirm(你确认要删除吗?将扣除票价的5%手续费!);6.1.8 我的订单界面在我的订单中包括未完成订单、订单查询、退票、个人资料、密码修改这五个部分。因为五个部分的框架都是一样的,所以在这里采用了母版页及内容页结合的方法13,使得程序简便易懂。左边部分都是用LinkButton来链接每个页面的,右边部分显示的是每个内容页中的内容。因退票页面与退票服务页面是一样的功能,所以下面不再对其进行详细阐述了。个人资料页面显示的是一些客户的基本信息,也将不对其进行详细阐述。 未完成订单界面图6.13 未完成订单界面如图6.13所示,此界面是未完成订单界面,用的还是GridView控件来显示信息,在每个未完成订单信息最后都有一个支付操作,点击支付就会跳转到支付页面,进行支付。 订单查询界面图6.14 订单查询界面如图6.14所示,此界面是订单查询界面,用的还是GridView控件来显示信息。可以选择查询日期类型,来对订单进行查询。下面只对按订票日期查询的代码进行说明。查询代码: if (DropDownList1.SelectedValue = 按订票日期查询) if (sTextBox.Text != & eTextBox.Text != & hangbanTextBox.Text = & nameTextBox.Text = ) SqlConnection myConnection = new SqlConnection(Data Source=localhost;Initial Catalog=毕业设计;Integrated Security = True); string strSQL = select * from dingDanTable,hangBanTable,zhiFuZhuangTaiTable where zhiFuZhuangTaiTable.id=dingDanTable.flag and hangBanTable.hanBan=dingDanTable.hangban and hangBanTable.flag=dingDanTable.riQi and username = + + name + + and dangQianRiQi = + + sTextBox.Text.Trim() + + and dangQianRiQi = + + eTextBox.Text.Trim() + ; SqlCommand myCommand = new SqlCommand(strSQL, myConnection); SqlDataAdapter myDA = new SqlDataAdapter(); myDA.SelectCommand = myCommand; DataSet myDS = new DataSet(); myDA.Fill(myDS, dingDanTable); GridView1.DataSource = myDS.Tables0; GridView1.DataBind(); 修改密码界面图6.15 修改密码界面如图6.15所示,此界面时修改密码界面,每个输入框都不能为空,若为空则会有提示信息;若输入的原密码有误,则会有“原密码输入错误”的提示信息;若输入正确,则会有“密码修改成功!请重新登录的提示!”,点击确定就会跳转到登录页面,让客户重新登录。6.1.9 帮助中心界面帮助中心分为客户留言和购票须知两部分,下面只对客户留言进行简单阐述。图6.16 留言界面如图6.16所示,如客户对本网站或本航空公司有意见或建议可以进行留言,管理员会及时处理客户所提出的问题。6.2 航空订票系统后台界面6.2.1 管理员登录界面图6.17 后台登录界面如图6.17所示,用户名、密码、验证码的输入框都不能为空,若为空,则会有相应的提示信息;若输入有误,则会提示信息输入有误;若输入正确,则会进入管理中心。6.2.2 用户管理界面 用户信息查询界面图6.18 用户信息界面如图6.18所示,右边使用TreeView控件做的导航,在TreeView的属性NavigationUrl中链接一下要页面即可。本界面可以按照注册时间对客户信息进行查询。客户信息的显示和前台一样也是用GridView控件显示的,在这不做多的阐述。页面上“扫描数据库”的按钮是用来扫描数据库未支付订单及更新航班余票的,需要管理员每半个小时扫描一次。 留言界面图6.19 留言界面图6.20 留言详情界面如图6.19所示,按照留言日期可以进行查询,点击GridView中的详情可以看到具体的留言内容,如图6.20所示。可以在详情页面直接进行删除,也可以返回到前一页再进行删除操作。在图6.19中,可以逐一删除,可以删除某一天的所有留言,也可以删除此日期前的所有留言。因为GirdView表的显示有限,所以需要对信息过长的列内容用省略号来代替。删除代码: SqlConnection sqlConnection = new SqlConnection(Data Source = localhost;Initial Catalog=毕业设计;Integrated Security=True); sqlConnection.Open(); SqlCommand comm = new SqlCommand(); comm.CommandText = delete from messageTable where liuyanTime = + + timeTxt.Text.Trim() + ; comm.Connection = sqlConnection; comm.ExecuteNonQuery(); sqlConnection.Close();GirdView中用省略号代替过长内容的代码:/在数据绑定后添加下列代码 for (int i = 0; i = GridView1.Rows.Count - 1; i+) string gIntro; if (GridView1.PageIndex = 0) gIntro = myDS.TablesmessageTable.Rowsicontent.ToString(); GridView1.Rowsi.Cells1.Text = SubStr(gIntro, 2); else gIntro = myDS.TablesmessageTable.Rowsicontent.ToString(); GridView1.Rowsi.Cells1.Text = SubStr(gIntro, 2); public string SubStr(string sString, int nLeng) if (sString.Length = nLeng) return sString; string sNewStr = sString.Substring(0, nLeng); sNewStr = sNewStr + .; return sNewStr;6.2.3 航班管理界面 航班查询界面图6.21 航班查询界面图6.22 航班详情更改界面如图6.21所示,查询的时候四个输入框不能全为空,但只要输入一个就可以进行查询信息;当点击详情按钮时,此航班的信息就会出现在如图6.22所示的界面,可以对航班信息的进行更改,然后保存。保存代码: SqlConnection sqlConnection = new SqlConnection(Data Source=localhost;Initial Catalog=毕业设计;Integrated Security=True); sqlConnection.Open(); SqlCommand comm = new SqlCommand(); string ztime = TextBox1.Text.ToString() + + TextBox4.Text.ToString(); comm.CommandText = update hangBanTable set flag =+ TextBox1.Text.Trim() +,hanBan =+ TextBox2.Text.Trim() +,chuFa =+ TextBox3.Text.Trim() +,chuFaSJ =+ TextBox4.Text.Trim() +,muDi =+ TextBox5.Text.Trim() +,daoDaSJ =+ TextBox6.Text.Trim() +,liShi =+ TextBox7.Text.Trim()+,touDeng =+ TextBox8.Text.Trim() +,touDengPJ =+ TextBox9.Text.Trim() +,jingJi =+ TextBox10.Text.Trim() +,jingJiPJ =+ TextBox11.Text.Trim() +,zTime=+ ztime +where id=+id +; comm.Connection = sqlConnection; comm.ExecuteNonQuery(); sqlConnection.Close(); Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(保存成功!); 删除航班界面图6.23删除航班界面如图6.23所示,可以直接进行删除某条航班,或是在查询后进行删除某条航班。航班的信息不需要进行大量的删除,因为每天的航班基本上是差不多的,所以在更新航班的时候就不需要再逐一插入,只需把某一天的航班改成需要的,然后再进行细节更改。在删除的时候,会有提示“确定删除吗?”,当删除完某条信息的时候,界面表上的信息也会进行重新绑定。 更新航班界面图6.24 更新航班界面如图6.24所示,航班的更新是可以进行批量更新的,可以把5月1日的航班信息更改为5月21日的,然后再进行细节上的修改。更新的SQL语句:update hangBanTable set flag = + TextBox2.Text.Trim() + where flag= + TextBox1.Text.Trim() + + order by flag;6.2.4 订单管理界面订单管理的两个界面功能类似于航班管理的查询与删除界面,在此不做更多的叙述。6.2.5 管理信息界面 管理员信息界面图6.25 管理员信息界面如图6.25所示,在GridView表中,可以进行编辑、更新、取消、及删除操作。只有高级管理员才可以对所有的管理员进行增删改查的操作,普通管理员只可以对自己的信息进行操作。 编辑代码:protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) GridView1.EditIndex = e.NewEditIndex; if (a = 0) BindData();/gridview绑定数据 else BindDate(); 更新代码: protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) (TextBox)(GridView1.Rowse.RowIndex.Cells2.Controls0).Enabled = true; int id = Convert.ToInt32(GridView1.DataKeyse.RowIndex.Value.ToString(); SqlConnection sqlConnection = new SqlConnection(Data Source=localhost;Initial Catalog=毕业设计;Integrated Security=True); sqlConnection.Open(); SqlCommand comm = new SqlCommand(); /where id=+GridView1.DataKeyse.RowIndex.Value.ToString() + ; if (TextBox)(GridView1.Rowse.RowIndex.Cells2.Controls0).Text.ToString().Trim() != 高级管理员) comm.CommandText = update adminTable set adminName = + (TextBox)(GridView1.Rowse.RowIndex.Cells0.Controls0).Text.ToString().Trim() + , password= + (TextBox)(GridView1.Rowse.RowIndex.Cells1.Controls0).Text.ToString().Trim() + ,flag = 2 where adminTable.id= + id + ; else if (TextBox)(GridView1.Rowse.RowIndex.Cells2.Controls0).Text.ToString().Trim() = 高级管理员) comm.CommandText = update adminTable set adminName = + (TextBox)(GridView1.Rowse.RowIndex.Cells0.Controls0).Text.ToString().Trim() + , password= + (TextBox)(GridView1.Rowse.RowIndex.Cells1.Controls0).Text.ToString().Trim() + ,flag = 1 where adminTable.id= + id + ; comm.Connection = sqlConnection; comm.ExecuteNonQuery(); sqlConnection.Close(); if (a = 0) BindData();/gridview绑定数据 else BindDate(); 取消代码:protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) GridView1.EditIndex = -1; if (a = 0) BindData();/gridview绑定数据 else BindDate(); 公告信息界面图6.26 公告信息界面如图6.26所示,可以根据公告时间查询公告信息。点击详情的时候,在下面的文本框中就会显示详细信息,若此信息无用,可以进行删除操作。在下面的文本框中可以输入新的公告信息,然后点击添加公告按钮就可以添加当天新的公告了。本界面的功能代码在前面都有涉及到,所以就不多加阐述了。 旅游资讯界面图6.27 旅游资讯界面如图6.27所示,可以添加新的旅游资讯,浏览用的是FileUpload控件,获取其图片路径。当选择表中前面的CheckBox时,点击删除选中,会删除所有选中的内容。当点击“全部选中”的CheckBox控件时,列表中所有的内容都会被选中。对于表中的信息还可以进行编辑及逐一删除的操作。 “全部选中”CheckBox的代码: protected void CheckBox2_CheckedChanged(object sender, EventArgs e) for (int i = 0; i = GridView1.Rows.Count - 1; i+) /表中最前面的CheckBox CheckBox cbox = (CheckBox)GridView1.Rowsi.FindControl(CheckBox1); if (CheckBox2.Checked = true) cbox.Checked = true; else cbox.Checked = false; 滚动条代码: /GridView控件6.3 本章小结本章讲了整个系统的具体实现,把整个系统分为前台和后台两部分来讲述。介绍了Web控件及相应的控件对象、数据库的连接以及系统的整个界面的设置。7 软件模块集成测试在软件完成后,软件测试是必须要的。软件测试的目的与前面所讲阶段的目的都是相反的。前面的阶段都是“建设性”的:从抽象概念出发,一步步设计出具体的软件系统,写出可执行的程序代码。但。测试阶段的目的却是为了“破坏”已建好的软件系统,证明程序的错误。软件测试的方法有很多,如单元测试、集成测试、验收测试等,本系统的测试主要通过集成测试来完成15。集成测试是测试和组装软件的系统化技术。例如,一个模块对另一模块可能由于疏忽而造成有害的影响,把子功能组合起来可能不产生预期的主功能。由模块组装成程序时有两种方法。一种是先对每个模块一一进行测试,再把所有模块组合成设计要求所要的程序,这种测试方法称为非渐增式测试方法;另一种是把已经测试好的那些模块和下一测试模块结合起来,这种测试方法称为渐增式测试方法15。7.1 航空订票系统前台集成测试 登录界面的测试当客户名或密码为空时,会有图7.1(a)所示的提示;当客户名或密码有误时,会有如图7.1(b)所示的提示;若验证码输入有误时,会有图7.1(c)所示的提示;输入全都正确,则进入本系统,回到首页。 (a) (b) (c) 图7.1 登录测试图 注册界面的测试当没有输入注册信息就点击“提交”按钮,就会出现“不能为空”的验证信息;当输入不符合规则时,会出现“注意要求”的验证信息。 忘记密码界面的测试在用户输入框为空的时候,会有不能为空的提示信息,当输入错误怎会有“您输入的用户不存在的!”的提示,输入正确后,会出现提示问题,若提示问题回答错误,则会有“抱歉!您的答案不正确”的提示,若输入正确则会找到密码。提示错误类型类似图7.1。 查询界面的测试当出发站、目的地或出发日期为空时,会有“不能为空”的提示信息。 预定流程的测试 若没有登录,点击“预定”按钮会有如图7.2(a)的提示;当某航班的经济舱与头等舱的余票都为0时,点击“预定”会有如图7.2(b)的提示。 (a) (b)图7.2 预定界面测试图 在点击预定时,进入预定中界面,在这个界面上会显示刚才点击预定的航班信息,如图7.3所示。进入预定中,选择席别及填写乘客信息时,若选择的席别余票没有了,则会有如图7.4所示的提示。若是乘客信息没有填写完整或是填写的信息格式有错误,都会有相应的提示信息。图7.3 预定中测试图图7.4 预定中信息提示测试图 当客户填完乘客信息点击“确定”时,进入确认订单页面,页面上会显示刚才的订单信息,如图7.5所示。图7.5 确认订单测试 当点击“网上支付”时,进入网上支付页面
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:基于.NET的航空订票系统设计与开发【带程序】
链接地址:https://www.renrendoc.com/p-273417.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2024  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!