版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高铁车票订票系统一前台设计摘要本文是针对高铁车票订票实际情况,按照软件工程的结构化设计思想,经过项目 的可行性研究和需求分析、数据库设计、总体设计、详细设计,以及代码的实现和测 试等步骤设计开发了高铁车票订票系统。运用了数据流图和数据字典、E-R图和数据 库逻辑结构、层次图、系统流程图以及程序流程图,对该系统的数据需求、数据库、 系统软件结构、系统流程、以及处理过程等进行了分析和设计。软件工具应用了 asp. net ft Microsoft SQL Server 2005数据库来开发这个高铁 车票订票系统。该系统可以解决的是高铁车票订票系统所要解决的问题,可以基本满 足高铁车票订票的基本要求
2、,包括会员注册、车次查询、车票预订、费用在线支付、 订单查询/修改、个人信息维护模块、留言板、订票须知、信息公告,其中主要实现 了查询、订票、退票等三个方面的功能。该系统能运用到高铁的订票工作中,可以根 据用户的需求设者其权限,方便快捷的为用户提供服务。关键词:信息管理;高铁售票;asp. net ; Microsoft SQL Server 2005High iron ticket system -front desk designAbstractThis article focuses on the actual situation of high-speed rail ticket bo
3、oking, structured according to the software engineering design, talked about the project feasibility study and needs analysis、Overall Design, Database Design, detailed design, and code implementation and testing procedures designed and developed high-speed railway ticket booking system o The use of
4、a data flow diagram and ER diagrams and data dictionary、 logical stiucture or hierarchy database、 system flow chart diagram and process flow chart, the data needs of the system software、 database structure or system processes、 and processing were analyzed And design oThe application software develop
5、ment tools and Microsoft SQL Server 2005 database to develop the high-speed railway ticket booking system o The system can solve the problem of high-speed rail ticket booking system to solve the problem o You can basically meet the high-speed rail ticket booking, the basic requirements, including me
6、mbership registration, train number, ticket booking, for online payment, order inquiry / modification Personal information maintenance module, message board, booking instructions, information bulletin, mainly to achieve the query, ticketing, refunds and other three functionso The system can be appli
7、ed to work in high-speed rail bookings, according to the needs of users who set their permissions to provide users with convenient and efficient service.Keywords:information management high-speed rail ticketing ; ;Microsoft SQL Server 2005第1章绪论5L1引言51.2 国内外现状51.3 课题意义61.4 应用范围6第2章系统地可行性研究与需求分析72.1 可
8、行性分析72.1.1 法律方面的可行性72.1.2 使用方面的可行性72.1.3 经济可行性72.1.4 技术可行性72.1.5 操作可行性72.2 需求分析7221功能需求7222数据需求9223性能需求92.2.4数据流图10225数据字典10226实体-联系图11第3章数据库设计133.1 SQL Server 2005 数据库简介133.2 系统数据库结构设计13321车次表13322订单表13323售票表14324系统表14325退票表14第4章系统的总体设计154.1 系统软件的结构设计154.1.1 软件结构154.1.2 模块算法154.2 系统流程图17第5章系统的详细设计1
9、95.1 用户操作业务流程图195.1.1 用户系统主程序流程图。如图5.1所示:195.1.2 次信息查询业务流程图.如图5.2所示:205.1.3 订票处理流程图.如图5.3所示:215.1.4 订票信息查询处理流程图.如图54所示:225.1.5 退票处理流程图.如图5.5所示:235.2 接口设计245.2.1 用户接口24522外部接口24523内部才妾口245.3 详细页面设计245.4 物理结构设计要点245.4.1 系统登录主界面255.4.2 售票车票系统的主界面255.4.3 车票预定系统主界面265.4.4 退票系统主界面27第6章测试286.1 数据与数据库完整性的测试
10、286.2 功能的测试286.3 业务周期测试286.4 用户界面的测试29结论30致谢31参考文献32附录A译文33附录B外文原文40第1章绪论1.1 引言1969年,美国IBM公司首次宣布除操作系统继续随计算机配送外,其余软件一 律计价出售,从此开创了软件成为独立商品的先河。短短四十几年的时间,计算机软 件的重要性与日俱增。从PC机到笔记本电脑,从因特网到移动电话,从先进的武器 到现代的家电,计算机软件几乎无处不在,无时不在。世界上最大的软件公司微软公 司及其创始人,已成为全球知名度最高的企业之一。在很多发达国家,软件产业已成 为社会的支柱产业,软件工程师也成为最受青睐的一种职业。正是由于
11、软件的发展,使计算机应用逐步渗透到社会生活的各个角落,使各行各 业都发生了很大的变化。这同时也促使人们对软件的品利J数量,功能和质量等提出 了越来越高的要求。然而,软件的规模越大,越复杂,人们的软件开发能力越显得力 不从心。于是,人们开始重视软件开发过程,方法,工具和环境的研究,软件工程应 运而生。软件工程技术历经四十多年的发展,目前已进入成熟期。软件过程改善的热潮使 软件企业对软件工程技术的认识有了质的飞跃,正在被越来越广泛地接收。过程改善 和技术提升的结合是软件产业发展的趋势。软件复用和软件构件技术,再工程技术及 领域工程技术正逐步成为主流软件技术,是软件工程化,工业化生产技术的核心技术。
12、 也推动了一些行业的发展,比如说票务方面,本次设计我选择了具有比较典型的并且 有一定实际应用价值的课题一一高铁车票订票系统。1.2 国内外现状“目前,从技术上看,软件开发的主要模式仍以手工作坊式为住,但工程化技术 的采用呈稳步上升趋势。软件企业的过程改善,规范化,规模化正成为一种趋势。推 行软件的工程化,工业化生产技术和模式是软件企业发展并形成规模经济的必由之 路,这已成为学术界和产业界的共识。”当前,学术界和产业界的共识是:在注重软件工程技术研究的同时应注重软件过 程的研究;软件开发单位不仅需要技术创新(采用先进技术),更需要将其过程改善 放在首位。过程改善和技术的紧密结合才是完善的软件开发
13、解决方案。进入九十年代以来,软件过程研究及企业过程改善成为热潮,和软件工程技术研 究及企业技术创新受到同等重视,两方面都得到了长足的发展。在技术方面,软件工 程技术不断发展,软件工具市场不断扩大。我国政府支持的国家重点科技攻关项目青鸟工程长期从事对软件工程技术的研 究,在上述几方面及其集成上均有卓有成效的成果,保持了和国际前沿同步,同时, 为我国软件产业基础设施建设以及软件工程学科建设做出了积极贡献。1.3 课题意义随着高铁的兴起,火车站市场的管理和规范问题,已经是困扰我们多年的一个老 问题,也是政府部门管理中的一个重点、难点.订票是客运业务中的一个最最基本的业 务,从表面上来看,它只是高铁业
14、务中的一个简单部分,但是它涉及到管理与客户服务 等多方面的问题,因此,过去传统的售票方式远远不能够满足现代客运业务流量急速 增长的趋势,这就要求研发出一种全新的订票方式来满足客户的需要,那就是网上订 票,这种方式可以大大地缓解车票订购高峰时期的客运压力,并可以为用户提供方便 快捷的订票服务.1.4 应用范围高铁车票的管理和规范问题,是困扰我们多年的一个老问题,也是政府管理中的 一个难点,订票是客运业务中的一个最基本的业务,表面上看,它只是长途客运业 务的一个简单的部分,但是它涉及到管理与客户服务等多方面,因此,过去传统的 售票方式已经不能满足现代客运业务流量剧增的客观要求,这就要求一种全新的订
15、 票方式一一网上订票,来缓解订票高峰时期的客运压力,并为用户提供方便快捷的 订票服务。本次设计便是利用开发工具asp和SQL Server 2005数据库共同开发的 一个高铁车票订票系统,它能方便快捷地运用在订票业务的营运之中。本系统设讣主要是根据订票业务的基本流程进行的,系统功能主要包括如下几个 方面:查询:分为对信息的查询和客户对已订车票信息的查询订票:通过查询系统, 客户根据自己的需求找到满意的车次,直接通过网上订票确定已预订选中的高铁车 票。第2章系统地可行性研究与需求分析1 .1可行性分析该阶段主要通过对系统目标地初步调研和分析,从而提出可行性方案并进行研究 论证.我在这主要从法律方
16、面的可行性、使用方面的可行性、经济可行性、技术可行 性、操作可行性五方面进行分析论证。1.1.1 法律方面的可行性该系统的开发和研制,将不会侵犯他人、集体和国家的利益,不会违反国家的相 关政策和法律。1.1.2 使用方面的可行性该系统操作简单,需要高铁售票人员熟悉业务流程,一般的工作人员即可胜任。1.1.3 经济可行性由于本系统是为了高铁车票订票所使用的系统,安装该应用程序,即可马上使用 此系统,系统成本主要集中在系统软件的开发上,当系统投入运行后,可以节省大量的 人力、财力、物力,所带来的经济效益是远远大于系统软件的开发成本。所以,从经济 的角度来看,是完全可行的。1.1.4 技术可行性开发
17、工具:数据库环境:Microsoft SQL Server 2005系统环境:Microsoft Windows 2005或以上版本系统实现依靠开发工具asp. net和Microsoft SQL Server 2005数据库系统,其 基本操作实质还是对数据库进行查找、删除、添加等操作,暂时没有技术问题。1.1.5 操作可行性界面设计时,充分考虑了使用人员的习惯,界面友好简洁,操作方便;数据输入简 单、迅速、规范、可靠;统计、计算准确等优点。2 . 2需求分析需求分析是软件设计的一个极其重要的环节。本阶段将对高铁车票订票系统的应 用情况作出全面了解,以确保系统的目标,并对系统所需要的相关数据以
18、及数据处理 要求进行分析,从而确保用户的需求。用户对系统的需求我将从以下几方面进行分析。 2. 2.1功能需求本高铁车票订票系统应该具备如下功能:(1)会员注册此系统通过注册会员成为本系统的会员,来获得用户名和密码,才能进入本 系统。(2)车次查询车次查询分为对车次信息的查询和客户对已订车票信息的查询.要求: 1)对车次的查询,可以按照发车车次进行查询。2)车次信息包括:车号、出发地、目的地、发车日期、开出时刻、票价。3)座位类型设定:软座和硬座。4)车次信息只允许用户查询,不能修改。(3)预定车票通过查询系统,客户根据自己的需求找到满意并适合自己的车次,再输 入个人信息后直接通过网上订票确定
19、并预定选中的车票.要求:订票记录包括:车号、种类、开车时间、车票价格。(4)取消预订由于某些原因,或者突发情况,无法赶到预定车票的时间,客户通过退 回车票,可以找到预定的车票,可以通过取消预定来退去已购车票。(5)留言板通过留言板你可以发表心中的疑惑,对高铁的一切情况,也可以发表自 己的见解.对售票人员的服务满意度,对高铁上服务人员的看法等问题都可 以通过留言板来留言,让管理人员及时了解情况,以便迅速做出调整,做到每 一个乘客满意放心。(6)订票须知通过订票须知,可以回答你一些简单的疑惑,如高铁上不允许带的违禁 物品,坐高铁要注意的事项,多少升高以下的儿童可以免票等相应的情况, 你可以通过订票
20、须知知道.因此,在订票之前,不妨仔细阅读一下须知,详细 了解乐坐高铁的种种事项后,再开始订票。(7)信息公告通过信息公告,可以让乘客知道高铁是否运行,有时可能由于天气原因 等情况,火车站会采取停止高铁的运行,这些信息可以通过信息公告来知道, 以便乘客能够及时知晓,对订票有很大的帮助。2. 2. 2数据需求数据需求,即在系统中需要处理的数据.根据对高铁车票订票系统的分析,本系统 的数据需求。如表2.1所示:信息输入信息处理信息输出用户输入所需车次检索系统数据库显示出符合用户需求的车次 及相关 信息用户输入个人信息及所需订 购的车票信息更新系统中的订票信息, 将新信息存入系统数据库操作反馈(如订票
21、成功)用户输入自己的名字、身份 证号:或交易的订单号检索系统数据库符合用户需求的订票信息用户输入自己的名字检索系统数据库以得到订票 记录,删除用户请求的订票 记录,更新系统数据库显示出操作反馈(如退票成 功等)表2.1信息输入输出2. 2. 3性能需求为了保证系统能够长期、安全、稳定、可靠、高效的运行,本系统应该满足以下 的性能需求。(1)准确性和及时性系统处理的准确性和及时性是系统的必要性能。系统应能及时而且准确的根据用 户权限及所输入的信息做出响应。由于本系统的查询功能对于整个系统的功能和性能 完成举足轻重。作为系统的很多数据来源,而车票的数量和时间乂影响用户的决策活 动,其准确性和及时性
22、很大程度上决定了系统的成败。在系统开发过程中,必须采用 一定的方法保证系统的准确性和及时性。(2)易用性本系统是直接面对用户的,而用户往往对计算机并不是非常熟悉。这就要求系统 能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽 量使用用户熟悉的术语和中文信息的界面,从而保证系统的易用性。(3)安全性网上订票系统中涉及到的数据是客运公司相当重要的信息,系统要保证用户的权 限,对于车次等信息用户只享有查询服务,不得更改;系统还要提供方便的手段供系 统维护人员进行数据备份、日常安全管理、以及系统意外崩溃时数据的恢复等工作。 同时系统还要保证对数据库进行及时更新,保证数据一致性
23、。2. 2. 4数据流图225数据字典如图2.32. 5所示:图2.2数据流图名字:车次信息别名:描述:存放车次信息的文件,以供用户查询定义:车次信息二车号+出发地+目的地+发车日期+开出时刻+到达时刻+坐位类型+票价位置:输出到CRT终端或类似的显示部件图2.3车次信息数据字典名字:订票信息别名:订单信息描述:存放订单信息的文件,以供用户查询,并作相应操作定义:订票记录二用户名+车号+发车日期+订购日期+订购票数+总价 位置:输出到CRT终端或类似的显示部件图2.4订票信息数据字典名字:会员信息别名:用户信息描述:存放会员信息的文件,以供会员方便的查询订单信息,进而做出相应的操 作定义:会员
24、信息:真实姓名+身份证号+性别+籍贯+联系电话位置:输出到CRT终端或类似的显示部件图2.5会员信息数据字典2.2.6实体-联系图用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充 分满足各种信息的输出和输入。针对火车站网上订票系统,通过对网上订票工作的过程、内容以及数据流程分析,设计 如下所示的数据项和数据结构:1)车次信息包括:车号、出发地、目的地、发车日期、开出时刻、剩余座位数、票价。2)订票记录包括:订单号、身份证号、车号、订购日期、订购票数、总价。3)会员信息包括:真实姓名、身份证号、性别、籍贯.、联系电话。E-R图如图2.2所示:图2.6实体-联系图(E-
25、R图)第3章数据库设计3.1 SQL Server 2005 数据库简介Microsoft的SQL Server作为众多数据库软件的一种,是网络世界的一个支撑。从20世纪80年代后期开发SQL Server,到2005年底SQL Server 2005的发布, Microsoft经历十几年的磨练,使SQL Server从无到有,从小到大,而且新一代的 SQL Server已经开始逐渐成为Windows操作系统未来的核心,成为主流数据库软 件。SQL Server是一个关系数据库管理系统。它最初是由Microsoft Sybase和 Ashton-Tate三家公司共同开发的,于1988年推出了笫
26、一个OS/2版本。在Windows NT推出后,Microsoft与Sybase在SQL Server的开发上就分道扬镶了。Microsoft 将SQL Server移植到Windows NT系统上,专注于开发推广SQL Server的 Windows NT版本。Sybase则较专注于SQL Server在UNIX操作系统上的应用。 到了 2005年底,Microsoft公司经过5年的努力,推出了其最新版本SQL Server 2005 o3. 2系统数据库结构设计高铁车票订票系统数据库忠各个表格的设计结果如下表所示.每个表格分别表 示在数据库中的一个表.3. 2.1车次表字段名数据类型是否可
27、空说明CidintNOT NULL车号(主键)oCarnamevarchar(50)NOT NULL车名CTypevarchar(50)NOT NULL车次类型表3. 1车次表3. 2. 2订单表字段名数据类型是否可空说明OidintNOT NULL订单号(主键)OCarvarchar(50)NOT NULL车号(外键)Oticketypevarchar(lO)NOT NULL订票类型ObuyTimedatetimeNOT NULL订单时间OusetimedatetimeNOT NULL发车时间OmoneymoneyNOT NULL价格Oadminvarchar(50)NOT NULL用户名表
28、3. 2订单表3. 2. 3售票表字段名数据类型是否可空说明SidintNOT NULL车号(主键)SCarvarchar(5O)NOT NULL车次(外键)SticketTypevarchar(lO)NOT NULL车次类型(外键)StimedatetimeNOT NULL发车日期(外键)S moneymoneyNULL价格SadminvarcharNULL用户名表3. 3售票表3. 2. 4系统表字段名数据类型是否可空说明SysidinNOT NULL车号(主键)SysBuyTimevarchar(50)NULL买票时间SysOrderTimevarchar(50)NULL订票时间Sysu
29、ipiaoTimeVarchar(50)NULL退票时间表3. 4系统表3. 2. 5退票表字段名数据类型是否可空说明TidintNOT NULL退票车号Tnamevarchar(50)NOT NULL退票类型TtimedatetimeNOT NULL退票时间TmoneymoneyNULL退票价格表3. 5退票表第4章系统的总体设计4.1 系统软件的结构设计4.1.1 软件结构本高铁车票订票系统可划分为信息查询、网上订票、取消订票三个部分。其 中信息查询乂可分为车次查询和订单查询两个部分。其层次图如图4.1所示。图4.1高铁车票订票系统层次图4.1.2 模块算法1 .各级别算法1)界面级算法处
30、理输入信息,产生相应任务。如图4.2所示:图4.2界面级算法示意图2)数据库级算法执行相应数据库操作,并直接返回信息反馈.如图4.3所示:图4.3数据库级算法示意图3)任务级算法执行所需功能,满足用户需求,如图4.4所示:图4.4任务级算法示意图2.调用关系1)界面模块调用任务模块2)任务模块调用数据模块3)数据模块调用界面模块显示4.2 系统流程图系统顶层流程图如图3.5所示。图4.6图4. 9为各模块详细系统流程图。图4.5系统顶层流程图图4.6车次信息查询系统流程图图4. 7订单信息查询系统流程图图4.8 ij票系统流程图图4.9退票系统流程图第5章系统的详细设计5用户操作业务流程图5.
31、L1用户系统主程序流程图。如图5所示:图5.1用户程序主流程图结束5.1.2车次信息查询业务流程图.如图5.2所示:图5.2车次信息查询业务流程图5.1.3订票处理流程图.如图5.3所示:图5.3订票处理流程图5.1.4订票信息查询处理流程图.如图5.4所示:图54订票信息查询处理流程图5.1.5退票处理流程图.如图5.5所示:开始退票界面图5.5退票处理流程图5.2接口设计1.1.1 用户接口用户通过界面接口来实现参数的输入,进入相应的界面后输入提示的信息即可 产生相应的任务;在用户登录时,如果用户输入的信息是非法的系统会提示有错误信 息。1.1.2 外部接口本系统得数据库是用SQL,然后在
32、计算机上创建OLEDB数据源,然后用的asp 的几个数据库连接来实现与数据库的连接。523内部接口本系统包括如下几个方面:登陆界面,订票,车票时刻信息查询。需要的数据 表有:Admin、Car、OrderTicket等表,这几个数据表都有自己的主键,表之间通过 主键实现连接。5.3 详细页面设计本身这个系统主要包括两个登录窗口 :一个乘客登录窗口,一个管理员登录窗口。当一个乘客访问这个页面的时候,他首先可看到的是主页面上有3个基本功能: 销售车票,预定车票,退回车票。你通过售票车票,可以查询车次,价格等信息。乘 客订票是需要乘客进行注册后才能拥有的功能,而第3个功能就是乘客订票,通过输 入车次
33、等信息,可以进行订票。管理员登录窗口,我们设为初始值,管理员登录后拥 有线路的添加,删改的功能。5.4 物理结构设计要点给出本系统内所使用的每个数据结构中的每个数据项的存储要求,访问方法、存 取单位、存取的物理关系(索引、设备、存储区域)、设计考虑和保密条件。设计系统界面,主要界面如下:5.4.1 系统登录主界面542售票车票系统的主界面543车票预定系统主界面0军当空军544退票系统主界面退票管理|选择退票主悟:预定的累你的车票类型是:预定的票车票的内容查找输入车.票编号检索车票车票价格;车次:。订/但息查通车禀类型:开车E寸间:。当进住军交通后台系统预定时间:第6章测试6.1数据与数据库完
34、整性的测试测试目标确保数据库访问和进程正常进行,数据不会遭到损坏技术调用各个数据库访问方法和进程,并在其中填充有效和无效的数据(或对数据的请求)。检查数据库,确保数据已按预期的方式填充, 并且所有的数据库事件已正常发生:或者检查所返回的数据,确保为 正当的理由检索到了正确的数据。完成标准所有的数据库访问和进程都按照设计的方式运行,数据没有遭到损坏。需考虑的特殊事进程应该以手工方式调用应使用小型或最小的数据库来使所有无法接受的事件具有更大的可视度6.2功能的测试测试目标 技术完成标准需考虑的特殊事项确保功能正常,其中包括导航,数据输入,处理和检索等功能 用有效的和无效的数据来执行各个用例。1在使
35、用有效的数据时得到预期的结果2在使用无效的数据时显示相应的错误信息和警告消息3各业务规则都得到了有效的应用所有计划的测试全部执行所发现的缺陷全部解决产品已完成功能的提交是否在测试的范围内6.3业务周期测试业务周期测试是模拟一段时间内系统的运行情况6.4用户界面的测试测试目标系统的界而美观,得体,功能正常,符合用户的要求,窗口的对象和特征符合标准。技术人工测试或自动化测试工具进行测试,模拟用户的操作,确保界面能够正确的浏览,在不同的浏览器下显示正常。完成标准核实页而达到用户的标准需考虑的特殊事不同浏览器,不同的窗口大小的显示。结论二十一世纪是一个高速、快捷的年代。在这个高速发展的年代里,速度成了
36、我们 追求的目标;二是提高工作效率;三是降低成本。因此,办公自动化的高速度、高效 率、高便捷、低成本便成了我们的目的,为此开发了这个高铁车票订票系统。本系统 可以大大简化退票、订票、查询等十分繁琐的工作,简化办公环节,提高工作效率, 而且易学、易用,满足客户需求。这次系统的设计从最开始的可行性研究,需求分析,到系统的总体设计,详细设 计,再到编码、测试等的一个整体过程,使我真正明白了要做一个软件的难度,特别 是要做一个真正可用的软件,就更难了。在老师和同学的帮助下,我把以往所学的软 件工程、数据库知识结合起来,利用asp开发工具,加上SQL Server 2005数据库系 统,完成了本次课程设
37、计,尽量使它能满足各个方面的要求。当然,我的个人能力有 限,还有很多不足的地方,敬请谅解。在这次课程设计过程中我遇到了不少的难题,比如数据库操作问题,界面设计问 题,函数使用与实现问题,消息处理问题等等。其中,最关键的是在最初对系统的需 求分析做的不透彻,导致后续设计工作乃至编码时的修改工作量变大。以至于为了能 按时完成设计任务,我一连度过了几个通宵。尤其,越接近结束,就越是时常出现问 题。所以,通过这次课程设计我深刻体会到软件工程还是必须学精通点、学透彻点。通过这次课程设计,我学会了如何对所学课程综合运用,巩固了软件工程的一般 规范,对数据库的使用也有了更进一步了解。总体来说,课程设计让我学
38、了不少知识。我认为课程设计是我们学习生涯中相当重要的一课,除了验证学生的学习成果外, 也是训练一个人独立思考及解决问题的能力.在这里,我要感谢指导老师和同学在这 次课程设计中对我的帮助。在论文完成之际,我要特别感谢我的指导老师李月峰老师的热情关怀和悉心指 导。在我撰写论文的过程中,李老师倾注了大量的心血和汗水,无论是在论文的选题、 构思和资料的收集方面,还是在论文的研究方法以及成文定稿方面,我都得到了李老 师悉心细致的教诲和无私的帮助,特别是他广博的学识、深厚的学术素养、严谨的治 学精神和一丝不苟的工作作风使我终生受益,在此表示真诚地感谢和深深的谢意。在论文的写作过程中,也得到了许多同学的宝贵
39、建议,同时还得到许多在工作 过程中许多同事的支持和帮助,在此一并致以诚挚的谢意。感谢所有关心、支持、帮助过我的良师益友。最后,向在白忙中抽出时间对本文进行评审并提出宝贵意见的各位老师表示衷 心地感谢!参考文献1张孝祥;徐明华等著.ASP.NET基础与案例开发详解.第1版.北京:清华大学出版社,20092康会光,王俊伟,张瑞萍.SQL Server 2005中文版标准教程.第1版.北京:清华大学出版 社,20073四维科技,曹衍龙.数据库开发实用工程案例精选.北京:人民邮电出版社,20044飞思科技产品研发中心.NET核心技术一一高级特性.第1版.北京:电子工业出版社,20025陈豫龙.DELP
40、HI 6数据库系统开发实例导航.J第I版.北京:人民邮电出版社,2002,20(11):35-366萨师娘,王珊.数据库系统概论.北京:高等教育出版社,2000年7张立厚等著,管理信息系统,世界图书出版公司,2002.28 (8): 38-408陈淑珍,杨涛.基于Internet的远程教学系统设计与实现.现代教育技术,2001,(36):34-359 胡延平,卢晓庆,冯明东,王慧;基于.Net架构的交通旅游售票系统的设计与实现J;计算机工程与设计;2005年01期10 邱岩,王庆玲;用.NET实现系统整合的关键技术J;计算机工程与应用;2003年24期11 于松涛.精通SQLServer 20
41、00数据库管理与开发M.北京:人民邮电出版社,2003. 1012 孙涌.现代软件工程.北京希望电子出版社,2003年8月:1-246附录A译文模拟测试模糊测试(Fuzz testing )是一项对代码质量有着深远影响的简单技术。在本文 中,Elliotte Rusty Harold故意将随机的坏数据插入应用程序,以观察发生的结果。他 也解释了如何使用如校验和、XML数据存储及代码验证等防护性编码技术,来加固 您的程序以抵制随机数据。他以一个练习进行总结,在练习中他以一个代码破坏者的 角度进行思考这是一种用于防护代码的至关重要的技术。多年来,我惊叹于有如此大量能够使Microsoft Word
42、崩溃的坏文件。少数字节 错位,会使整个应用程序毁于一旦。在旧式的、无内存保护的操作系统中,整个计算 机通常就这样崩溃掉了。Word为什么不能意识到它接收到了坏的数据,并发出一条 错误信息呢?为什么它会仅仅因为少数字节被损坏就破坏自己的栈、堆呢?当然, Word并不是惟一一个面对畸形文件时表现得如此糟糕的程序。本文介绍了一种试图避免这种灾难的技术。在模糊测试中,用随机坏数据(也称 做fuzz)攻击一个程序,然后等着观察哪里遭到了破坏。模糊测试的技巧在于,它 是不符合逻辑的:自动模糊测试不去猜测哪个数据会导致破坏(就像人工测试员那 样),而是将尽可能多的杂乱数据投入程序中。由这个测试验证过的失败模
43、式通常对 程序员来说是个彻底的震憾,因为任何按逻辑思考的人都不会想到这种失败。模糊测 试是一项简单的技术,但它却能揭示出程序中的重要bugo它能够验证出现实世界中 的错误模式并在您的软件发货前对潜在的应当被堵塞的攻击渠道进行提示。模糊测试的实现是一个非常简单的过程:1 .准备一份插入程序中的正确的文件。2 .用随机数据替换该文件的某些部分。3 .用程序打开文件。4 .观察破坏了什么。可以用任意多种方式改变该随机数据。例如,可以将整个文件打乱,而不是仅替 换其中的一部分,也可以将该文件限制为ASCII文本或非零字节。不管用什么方式测试基于c的应用程序 当字符串包含额外的零时,许 多用c编写的程序
44、都会出问 题这类问题太过频繁以 至于额外的零能够彻底隐藏代 码中其他的问题。一旦验证出 程序存在零字节问题,就可以 移除它们,从而让其他的问题 浮现出来。进行分割,关键是将大量随机数据放入应用程序并 观察出故障的是什么。可以手动进行初始化测试,但要想达到最佳的 效果则确实需要采用自动化模糊测试。在这种情况 下,当面临破坏输入时首先需要为应用程序定义适 当的错误行为。(如果当输入数据被破坏时,您发 现程序正常运行,且未定义发生的事件,那么这就 是第一个bugo )随后将随机数据传递到程序中直 到找到了一个文件,该文件不会触发适当的错误对 话框、消息、异常,等等。存储并记录该文件,这 样就能在稍后
45、重现该问题。如此重复。尽管模糊测试通常需要一些手动编码,但还有一些工具能提供帮助。例如,清单1显示了一个简单的Java类,该类随机更改 文件的特定长度。我常愿意在开始的几个字节后面启动模糊测试,因为程序似乎更可 能注意到早期的错误而不是后面的错误。(您的目的是想找到程序未检测到的错误, 而不是寻找已经检测到的。)清单1.用随机数据替换文件部分的类import java.io.*;import java.security.SecureRandom;import java.util.Random;public class Fuzzer private Random random = new Sec
46、ureRandoni();private int count = 1;public File fuzz(File in, int start, int length) throws lOExceptionbyte data = new byte(int) in.length();DatalnputStream din = new DataInputStream(new FilelnputStream(in);din.readFully(data);fuzz(data, start, length);String name = "fuzz_" + count + in.get
47、Name();File font = new File(name);FileOutputStream out = new FileOutputStream(fout);out.write(data);out.closeQ;din.close();count+;return font;)/ Modifies byte array in placepublic void fuzz(byte in, int start, int length) byte fuzz = new bytelength;random.nextBytes(fuzz);System.arraycopy(fuzz, 0, in
48、, start, fuzz.length);)关于代码我可以用很多种方式优化适 单1中的代码。例如,有着 java.nio的内存映射文件是一 个相当不错的选择。我也能够 改进这个错误处理及可配置 性。因为不想让这些细节混淆 这里所要说明的观点,所以我 将代码保持了原样。模糊测试文件很简单。将其传至应用程序通常 不那么困难。如AppleScript或Perl脚本语言通 常是编写模糊测试的最佳选择。对于GUI程序, 最困难的部分是辨认出应用程序是否检测出正确 的故障模式。有时,最简单的方法是让一个人坐在 程序前将每一个测试通过或失败的结果都标记下 来。一定要将所有生成的随机测试用例单独地命名 并保
49、存下来,这样就能够重现这个过程中检测到的 任何故障。可靠的编码遵循了这样的基本原则:绝不会让 程序中插入未经过一致性及合理性验证的外部数据。如果从文件中读入一个数字并期望其为正数,那么,在使用其进行进一步处理前 对其先验证一下。如果期望字符串只包含ASCII字母,请确定它确实是这样。如果 认为文件包含一个四字节的整数倍的数据,请验证一下。一定不要假设任何外部提供 的数据中的字符都会如您所料。最常见的错误是做出这样的假设:因为程序将该数据写出,该程序就能不用验证 再一次将该数据读回去。这是很危险的!因为该数据很可能已经被另一个程序在磁盘 上复写过了。它也可能已经被一个故障磁盘或坏的网络传输所破坏
50、了或已经被另一个 带bug的程序更改过了。它甚至可能已经被故意更改过以破坏程序的安全性。所以 不要假设任何事,要进行验证。当然,错误处理及验证十分令人生厌,也很不方便,并被全世界程序员们所轻视。 计算机的诞生已进入了六十个年头,我们仍旧没有检查基本的东西,如成功打开一个 文件及内存分配是否成功。让程序员们在阅读一个文件时测试每一个字节和每一个不 变量似乎是无望的但不这样做就会使程序易被模糊攻击。幸运的是,可以寻求 帮助。恰当使用现代工具和技术能够显著减轻加固应用程序的痛苦,特别是如下三种 技术更为突出: 1.校验和2 .基于语法的格式,如XML3 .验证过的代码如Java不切实际的限定如果真想
51、要破坏一个XML 解析器,有几种方法可以试试。 例如,大多数XML解析器服 从于特定的最大尺寸。如果一 个元素名长度超过22亿字符 (Java String的最大尺寸),SAX解析器将失败。尽管如此,在实践中这 些极限值如此之高,以至于在 达到之前内存就已经耗尽。能够保护程序抵御模糊攻击的最简单的方法是将一个检验和添加到数据中。例 如,可以将文件中所有的字节都累加起来,然后取其除以256的余数。将得到的值 存储到文件尾部的一个额外字节中。然后,在输入数据前,先验证检验和是否匹配。 这项简单模式将未被发现的意外故障的风险降低到约1/256 o健壮的校验和算法如MD5和SHA并不仅仅取其除以256
52、的余数,它完成的 要多得多。在 Java 语言中,java.security.DigestlnputStream 和 java.security.DigestOutputStream类为将一个校验和附属到数据中提供了便捷的方式。 使用这些校验和算法中的一种可以将程序遭受意外破坏的机率降低到少于十亿分之 一(尽管故意攻击仍有可能)。将数据以XML形式存储是一种避免数据损坏的好方法。XML最初即着力于 Web页面、书籍、诗歌、文章及相似文档,它几乎在每个领域都获取了巨大的成功, 从金融数据到矢量图形到序列化对象等等。使XML格式抵制模糊攻击的关键特征是一 个对输入不做任何假设的解析器。这就是真正想
53、 在一个健壮的文件格式中所获得的。设计XML 解析器是为了让任何输入(格式良好的或无格式 的,有效的或无效的)都以定义好的形式处理。 XML解析器能够处理任何字节流。如果数据首 先通过了 XML解析器,则仅需要准备好接受解 析器所能提供的东西。例如,不需要检查数据是否 包含空字符,因为XML解析器绝不会传送一个 空值。如果XML解析器在其输入中看到一个空 字符,它就会发出异常并停止处理。当然还需要处 理这个异常,但编写一个catch块来处理检测到的 错误比起编写代码来检测所有可能的错误来说要简单得多。为使程序更加安全,可以用DTD和/或模式来验证文档。这不仅检查了 XML是 否格式良好,而且至
54、少与所预期更加接近。验证并不会告知关于文档所需了解的一切, 但它却使编写大量简单检查变得很简单。用XML,很明显能够将所接受的文档严格 地限定为能够处理的格式。尽管如此,还有多段代码不能用DTD或模式进行验证。例如,不能测试发票上 商品的价格是否和数据库中库存商品的价格一致。当从客户接收到一份包含价格的订 单文档时:不论其是XML格式或是其他格式,在提交前通常都会检查一下,以确 保客户并未修改价格。可以用定制代码实现这些最后的检查。使XML能够对模糊攻击具有如此的抵御能力的是其使用巴科斯-诺尔范式 (Backus-Naur Form, BNF)语法仔细且标准地定义的格式。许多解析器都是使用如 JavaCC或Bison等解析器-生成器工具直接从此语法中构建的。这种工具的实质是 阅读一个任意的输入流并确定其是否符合此语法。如果XML并不适合于您的文件格式,您仍可以从基
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冷却设备和装置产品供应链分析
- 动物辅助疗法行业相关项目经营管理报告
- 宠物推车产业链招商引资的调研报告
- 刺激益生菌生长的膳食补充剂产业链招商引资的调研报告
- 剃胡膏产品供应链分析
- 河南省豫西北教研联盟(许洛平)2024-2025学年高三第一次质量检测数学试题 含解析
- 厚纸板产业链招商引资的调研报告
- 电动锯产品供应链分析
- 数据处理设备用印刷电路接口卡产品供应链分析
- 创意雕塑艺术行业营销策略方案
- 汽车机械基础:汽车常用轴系零部件
- 麦当劳的企业发展战略
- 技能成才强国有我主题班会
- 民用建筑电线电缆防火技术规程DBJ-T 15-226-2021
- MOOC 信息安全导论-青岛大学 中国大学慕课答案
- 心房颤动诊断和治疗中国指南(2023) 解读
- 单孔胸腔镜手术肺结节
- 2024年返聘退休人员合同
- 中频炉停水停电应急专项预案
- 幼儿园主题探究活动
- MOOC 电气测量与信号处理-北京理工大学 中国大学慕课答案
评论
0/150
提交评论