机票预订系统可行性研究报告

机票预订系统

可行性研究报告

拟 制 人______*****________________

审 核 人_____*****______________

批 准 人_____**********________

[二零##年三月二十七日]

 

1. 引言

1.1 编写目的

     

       可行性研究的目的`是为了对问题进行研究,以最小的代价`在最短的时间内确定问题是否可解。经过对此项目进行详细调查研究,初拟系统实现报告,对软件开发中将要面临的问题及解决方案进行初步设计集合安排。明确开发风险及其所带来的经济效益。本报告经审核后,交软件经理审查。

1.2 背景

     建议使用名称:机票预订系统

       项目任务提出者:计算机学院11级计算机应用技术(1)班

       项目开发者:熊柳强、刘培、吴莉、李伟鹏

       用户:民航机国际旅游开发公司

       项目于其他软件,系统的关系:

             本项目采用C/S:客户机/服务器原理,客户端的程序是建立在Windows NT 系统上以Microsoft Visual C++为开发软件的应用程序,服务器端采用Linux为操作系统的工作站,是采用Oracle 8的开发软件的数据库服务程序。

1.3 定义

SQL Server:系统服务器所使用的数据管理系统(DBMS)

SQL:一种用于访问查询数据库的语言

事务流:数据进入模块后可能有多种路径进行处理

主键:数据库表中的关键域值互不相同

外部主键:数据库表中与其他主键关联的域

ROLLBACK:数据库的错误恢复机制

1.4 参考资料

      《软件工程导论》,张海藩,清华大学出版社

       《使用软件工程》,郑人杰等,清华大学出版社

2. 可行性研究的前提

2.1 要求

主要功能:为旅客提供机票预订服务,方便旅游局售票工作,提高旅游局的服务质量和效率

性能要求:机场提供的信息必须及时的反映在旅游局的工作平台上。售票上。售票系统的定单必须无差错的存储在机场的主服务器上。对服务器上的数据必须进行及时正确的刷新。

输出要求:数据完整,详实。

输入要求:简洁,快捷,实时。

安全与保密要求:服务器的管理员享有对机场航班信息库和订票信息库的管理与修改。售票员只有享有对订票信息库的部分修改权。

完成期限:预计六个月,即截至20##年9月27日。

2.2 目标

       系统实现后,大大提高旅游局的机票预定服务效率。降低售票服务中的错误发生率,减少信息交流的繁琐过程及项目带来的开销。

2.3 条件、假定和限制

      建议软件寿命:5年。

      经费来源:计算机学院

      硬件条件:服务器sun工作站,终端为pc机。

      运行环境:Linux

      数据库:Oracle8

      投入运行最迟时间:2013/10/10

2.4 进行可行性研究的方法

      1、澄清系统规模和目标

      2、研究现有的系统

      3、导出高层逻辑模型

      4、进一步确定系统的规模和目标

      5、导出供选择的解法

      6、推荐最佳方案

      7、草拟开发计划

      8、写出文档提交审核

2.5 评价尺度

      成本/效益分析结果,小姨,成本。

      技术可行性,现有技术是否可完全承担开发任务

      操作的可行性,软件能否被原有工作人员快捷接受

3. 对现有系统的分析

    在旅游局中的终端是安装了Windows 2000的pc机,主要目的是向机场传送数据,当顾客在旅游局进行咨询时,终端向服务器发出查询请求,服务器根据航班信息库的实时数据,向终端发送数据,现实在终端屏幕上。当顾客向售票员订票时,终端向服务器发出详尽的一份订单,服务器核对后,存入订票信息库,并修改机票信息库。当顾客再次来取票时,终端向服务器发出查询订票请求,服务器接收后,查询订票信息库,核对后,传送机票确认表单,终端打印机票。

3.1 处理流程和数据流程

 


3.2 工作负荷

     1.  该机票预订系统是对整体数据库的一个访问,对于收集的客户信息和输出的信息,都是从这个数据库中来,这样会使这个数据库系统共工作量很大

    2.  数据流程十多个售票员进行操作,这样在无形中减慢了数据流向下一个处理的时间,但是在输出时可以同时进行。     

3.3 费用开支

基础投资:

终端PC机10台:8000*10=8万

网络设备:6万

辅助配置:6万

共计:20万

其他一次性投资:

Oracle 8.0:20万

Windows NT:10万

操作员培训费:5万

共计35万

经常性支出:

     人工费用:6(月)*10(人)*5000(元)=30万

其他不可知额外支出:20万

共计:50万

支出共计:105万

3.4 人员

项目负责人一人

项目开发人员三人

项目审核人员三人

项目测试人员三人

3.5 设备

     终端PC机10台

网络设备

辅助配置

3.6 局限性

        在旅游局只设立终端,在机场设立服务器,数据注入由终端输入,所有数据都由服务器处理并在终端上显示数据结果。

        此设计简化了数据处理,但加重了服务器的数据处理。而是用客户端/服务器机理,简化数据加快数据处理。   

4. 所建议的系统

4.1 对所建议系统的说明

      系统中采用多数据库存储模式,进行多信息交互输入方式,批量处理收集信息,完成多收集多处理多输出的预订取票功能。

在现有的系统上有的很大的信息处理能力的提高。

4.2 处理流程和数据流程

 

实体:

     1、旅客:姓名,性别,工作单位,旅行时间,生份证号码,旅行目的地。

     2、机票:序列号,取票时间,航班编号,乘机时间,类型。

旅客通过机票预订系统,与机票产生预订的关系。

 


4.3 改进之处

     1.数据库采用双数据库模式,数据库之间进行数据处理后交换共享。

     2.数据手机采用多项单路收集方式,分类存储在数据库中。

     3.系统处理数据后,同样采用多项单路输出方式输出处理后数据的加工信息,并在同一台终端计算机上显示和打印相关的了内容

     4.在工作量上,缩短了信息的采集时间,双数据库存储模式加快了数据单块处理的速度,同时信息间的交互,让信息之间长身必要的联系,相互影响,是数据达到正确无误的目的。输出数据,同样也是减少了工作计算机,加快了数据间的交互运算的时间,减少了工作量。

4.4 影响

     4.4.1.对设备的影响

        数据收集采用的是多项单路数据采集,因此对工作的计算机要求系统配置要高。

     4.4.2.对软件的影响

        主要影响软件的运行环境,和稳定性。

     4.4.3.对用户单位机构的影响

        该系统是在原有的系统上进行更新换代的,因此具有较强的可移植性,可以很好的运行在用户单位机构的终端上。

     4.4.4.对系统运行过程的影响

        在运行此系统时,客户机运行流畅,不会有数据因延时性所造成的错误。   

     4.4.5.对开发的影响

        开发时因为是基于原有系统的模型来机型开发,但是由于系统所运用的结构与数据采集与输出的工作模式的有所,使得开发是不是较为轻松。有些地方但还是可以按照现有的系统设定相应的模式。

     4.4.6.对地点和设施的影响

        该系统是一个十分稳定的系统,但是由于该系统在配置上要高于原有的系统,因此在低点和环境的选择上要谨慎。

     4.4.7.对经费开支的影响

        在系统维护上基本上不需要太多的经费,因为该系统的稳定性很高。但是在开发的时候,却因为系统的架构较为复杂,因此开发经费要交原有的系统高很多。

     4.5 技术条件方面的可能性

        该系统完全采用享有的用户/服务器模式,现有的数据库语言完全可以胜任。

5. 可选择的其他系统方案

5.1 可选择的系统方案1

       采用多路多数据采集,多项单路输出的机票预订系统   

5.2 可选择的系统方案2

     采用单路多数据采集,单项多路输出的机票预订系统

6. 投资及效益分析

6.1 支出

     6.1.1 基本建设投资

           终端PC机20台:8000*20=16万

         网络设备:10万

         除主配置:10万 

         共计:36万     6.1.2 其他一次性支出

     6.1.2 其他一次性支出

         Oracle 8.0:20万

         Windows NT:10万

         操作员培训费:5万

      共计:35万

     6.1.3 非一次性支出

         经常性支出:

              人员费用:6(月)*20(人)*5000(元)=60万

              其他不可知额外支出:20万

       共计:80万

           

6.2 收益

     6.2.1 一次性收益

       一次性收益3万  

6.2.2 非一次性收益

      经常性收益(按银行利率:1%):

          减少员工20人(1000圆/人)五年收益:

               1000*(1.1++(1.1)+...........+)*20*12*5=120万

          工作效率提高收益(工作效率提高30%):

               30*(1.1+(1.1)+..........+)*(30%)*5=45万

      经常性收益共计:160万

     

6.2.3 不可定量的收益

     因服务质量提高增加旅客量10%:

1000万*10%*(90%+(90%)+(90%)+(90%)+(90%)=360万

6.3 收益/投资比

     520万/151万=344%

6.4 投资回收周期

     2、3年

6.5 敏感性分析

     设计系统周期为五年,估计最长可达10年

     处理书速度:一般查询速度〈4秒

     关键数据查询速度:〈2秒

7. 社会因素方面的可能性

7.1.[法律方面的可行性]

       所有软件都选用正版

     所有技术资料都由提出方保管

     合同制定确定违约责任

7.2.[使用方面的可行性]

     使用本软件人员要求有一定计算机基础的人员,系统管理人员,

系统管理员有球有计算机的专业知识,所有人员都经过本公司培训

管理人员也需经一般培训

     经过培训人员将会熟练使用本软件

     两名系统管理员,一名审计员进行专业培训将熟练管理系统

    

8. 结论

  由于投资效益比远大于100%,技术、经济、操作都有可行性,可以进行开发。

 

 

第二篇:机票预订系统详细设计

软件工程实验报告

设计题目: 机票预订系统(详细设计部分)

机票预订系统详细设计

1 引言

1.1 编写目的

在前一阶段(概要设计说明书)中,已解决了实现该系统需求的程序类设计问题。包括如何把该系统划分成若干个类、决定各类之间的接口、类之间传递的信息,以及数据结构、类结构的设计等。在以下的详细设计报告中将对在本阶段中对系统所做的所有详细设计进行说明。

在本阶段中,确定应该如何具体地实现所要求的系统,从而在编码阶段可以 这个描述直接翻译成用具体的java程序语言书写的程序。主要的工作有:根据在《需求分析说明书》中所描述的数据、功能、运行、性能需求,并依照《概要设计说明书》所确定的处理流程、总体结构、数据结构设计和类设计,逐个类的进行尽可能详尽的程序描述(包括各方法的功能、性能、输入、输出、算法、程序逻辑、接口等等),尽可能的减少编码时间。

1.2 背景

软件系统的名称:机票预订系统

项目由A3小组负责开发.

项目分两个部分:

面向客户的客户终端程序

部署在服务器上的Java服务程序

1.3 定义

Socket:网络通信模式。

Server:机票预订系统的服务器端。

Client:机票预定系统的客户端。

1.4 参考资料

1.机票预订系统项目开发计划书

2.机票预订系统需求分析说明书

3.《软件工程——实践者的研究方法》2 程序系统的结构

以类图形式展示:

Server类图:

机械工程出版社

机票预订系统详细设计

Client类图:

机票预订系统详细设计

3 Server端程序说明:

3.1类ServerStart设计说明

3.1.1ServerStatrt()方法 调用窗口显示方法ServerGUI(),显示服务器主界面,Server

3.1.1.1 功能

启动服务器。

3.1.1.2 测试计划

be ready。

能顺利启动服务器

3.1.2ServerLogon()方法

用于服务器管理员登录。

3.1.2.1 功能

直接访问数据库,验证输入的用户名密码,如正确则进入服务器管理界面。

3.1.2.2 输入项

用户名 String

密码 String

3.1.2.3 输出项

是否正确 bool

3.1.2.4 算法

1.用getText()从管理员登陆界面读取用户名与密码。

2.将信息传递到方法中到数据库中查找。

3.返回查找情况,找到true,未找到false。

3.1.2.5 测试计划

能正确识别输入的用户名与密码。输入正确的用户名与密码可跳转至服务器管理员界面,输入错误的则发出提示,不允许进入。

3.1.3ServerGUI()方法

用于编辑管理员界面并显示。

3.1.3.1 功能

编辑管理员界面,传递参数给ServerLongON(),并显示界面。

3.1.3.2 算法

使用控件的监听事件达到上述效果

3.1.3.3 测试计划

界面能否正确显示,SeverLogON()方法能否正常运行。

3.2 database类设计说明

3.2.1 database()方法

用于建立与数据库的链接,可被继承。

3.2.1.1 功能

建立与数据库的链接,可被继承,使其他类在访问数据库时不必再次建立连接。

3.2.2.2 性能

为提升数据传输的效率,访问数据库时间应尽量短。

3.3 Userdb类设计说明

3.3.1 Userdb()方法

Userdb的构造方法。

3.3.1.1 功能

继承父类database()的构造方法,从而建立起与数据库的链接。

3.3.2 isExit()方法

判断数据是否出现,可被其他方法调用。

3.3.2 .1 功能

在查询函数中可被调用,用于判断所查询的数据是否出现。

3.3.2 .2 输出项

输出bool变量,若存在,则为true,or 则为false

3.3.3 updatedata()方法

更新当前行数据

3.3.3.1 功能

更新当前行数据为修改过的数据,修改数据库内内容。

3.3.3.2 输入项

要修改数据所在的列名 String

修改后的数据 Object

3.3.3.3 输出项

数据内的内容被修改。

3.3.4 InsertNew(User user)

向数据库加入一行数据

3.3.4.1 功能

读入User数据,将这行数据加入数据库中

3.3.4.2 输入项

用户信息 User

3.3.4.3 输出项

用户信息加入数据库

3.3.5 QueryData()

查询数据是否存在。

3.3.5.1 功能

接收数据,到数据库中查询数据数据是否存在。

3.3.5.2 输入项

用户名String

密码String

余额 double

航班号String

票数int

查询种类int

查询种类必须输入,其他可根据需要选择性的输入。

3.3.5.3 输出项

查询得到的信息加入游标数组。

3.3.6 CloseAll()

关闭链接。

3.3.6.1 功能

关闭服务器与数据库之间的链接

3.4 Flightdb类设计说明

3.4.1 Flightdb()方法

Flightdb的构造方法。

3.4.1.1 功能

继承父类database()的构造方法,从而建立起与数据库的链接。

3.4.2 isExit()方法

判断数据是否出现,可被其他方法调用。

3.4.2 .1 功能

在查询函数中可被调用,用于判断所查询的数据是否出现。

3.4.2 .2 输出项

输出bool变量,若存在,则为true,or 则为false

3.4.3 updatedata()方法

更新当前行数据

3.4.3.1 功能

更新当前行数据为修改过的数据,修改数据库内内容。

3.4.3.2 输入项

要修改数据所在的列名 String

修改后的数据 Object

3.4.3.3 输出项

数据内的内容被修改。

3.4.4 InsertNew(Flight flight)

向数据库加入一行数据

3.4.4.1 功能

读入flight数据,将这行数据加入数据库中

3.4.4.2 输入项

航班信息 Flight

3.4.4.3 输出项

航班信息加入数据库

3.4.5 QueryData()

查询数据是否存在。

3.4.5.1 功能

接收数据,到数据库中查询数据数据是否存在。

3.4.5.2 输入项

航班号 String

起飞地点String

到达地点String

起飞时间String

到达时间String

票价 double

查询类型int

查询种类必须输入,其他可根据需要选择性的输入。

3.4.5.3 输出项

查询得到的信息加入游标数组。

3.4.6 CloseAll()

关闭链接。

3.4.6.1 功能

关闭服务器与数据库之间的链接

3.5 UserServer类设计说明

3.5.1 UserServer ()方法

UserServer的构造方法。

3.5.1.1 功能

继承JFrame,建立界面用于把存放用户信息的数据库中的信息显示出来,便于管理员查看管理

3.5.2 Query()方法

遍历数据库中信息。

3.5.2 .1 功能

点击刷新时,遍历User数据库,将数据信息重新显示。

3.5.2.2 算法

1.建立足够大的存储空间

2.与User数据库建立连接

3.遍历数据库,把数据加入存储空间

4.数据加入显示界面,显示出来。

3.6 FlightServer类设计说明

3.6.1 FlightServer ()方法

FlightServer的构造方法。

3.6.1.1 功能

继承JFrame,建立界面用于把存放航班信息的数据库中的信息显示出来,便于管理员查看管理。

3.6.2 Query()方法

遍历数据库中信息。

3.6.2 .1 功能

点击刷新时,遍历Flight数据库,将数据信息重新显示。

3.6.2.2 算法

1.建立足够大的存储空间

2.与Flight数据库建立连接

3.遍历数据库,把数据加入存储空间

4.数据加入显示界面,显示出来。

3.7 User类设计说明

3.7.1 User()方法

User的构造方法,建立方便调用用户数据的数据结构。

3.7.2 getID()方法

得到用户名。

3.7.2 .1 功能

调用时,可返回用户名

3.7.2.2 输出项

用户名 String

3.7.3 setID()方法

修改用户名。

3.7.3 .1 功能

调用时,可修改用户名为指定值

3.7.2.2 输入项

用户名 String

3.7.3 其他类似方法

getpassword()

setpassword()

getmoney()

setmoney

getflight()

setflight

getnum()

setflight

不再赘述。

3.8 Flight类设计说明

3.8.1 Flight()方法

Flight类的构造方法,建立方便调用航班数据的数据结构。

3.8.2 getnumofF()方法

得到航班号。

3.8.2 .1 功能

调用时,可返回航班号

3.8.2.2 输出项

航班号 String

3.8.3 setnumofF()方法

修改航班号。

3.8.3 .1 功能

调用时,可修改航班号为指定值

3.8.2.2 输入项

航班号 String

3.8.3 其他类似方法

getnumofF()

setnumofF()

getstartp()

setstartp()

getendp()

setendp()

getstartt()

setstartt()

getendt()

setendt()

getprice()

setprice()

getnum()

setnum()

不再赘述。

3.9 Administrator类设计说明

3.9.1 addUserData ()方法

添加用户信息。

3.9.1.1功能

管理员可以通过这个方法跳过注册直接添加用户。

3.9.1.2 输入项

用户名String

密码String

余额 double

3.9.1.3 输出项

用户信息被加到User数据库中

3.9.3.4 测试计划

建立服务器与数据库的链接,使需要添加的用户信息如预料添加。

3.9.2 delateUserData ()方法

删除用户信息。

3.9.2.1功能

管理员可以通过这个方法删除用户。

3.9.2.2 输出项

用户信息被从User数据库中删除

3.9.2.3 测试计划

建立服务器与数据库的链接,使需要删除的用户信息如预料删除。

3.9.3 addFlightLine ()方法

添加新航线。

3.9.3.1功能

管理员可以通过这个方法添加新航线。

3.9.3.2 输入项

航班号 String

起飞地点String

到达地点String

起飞时间String

到达时间String

票价 double

3.9.3.3 输出项

新航线被加到Flight数据库中

3.9.3.4 测试计划

建立服务器与数据库的链接,使需要添加的航线如预料添加。

3.9.4 delateFlightLine ()方法

删除废弃航线。

3.9.4.1功能

管理员可以通过这个方法删除废弃航线。

3.9.4.2 输出项

航线被从Flight数据库中删除

3.9.4.3 测试计划

建立服务器与数据库的链接,使需要删除的航线如预料删除。

3.10 serverThread类设计说明

3.10.1 serverThread ()方法

serverThread类的构造方法

3.10.1.1 功能

建立Socket与端口,使客户端可以与服务器连接。

3.10.2 run ()方法

启动多线程

3.10.2.1 功能

启动多线程,调用DealRequest()处理客户端发送的各种请求。

3.10.3 WriteControl()方法

写控制台。

3.10.3.1 功能

把各个客户端的请求处理过程写进控制台,方便管理员查看。

3.10.3.2 输出项

客户请求信息写入控制台。

3.10.3.3 测试计划

建立服务器与客户端的链接,客户端发送请求,确保服务器可以在控制台上写出正确的处理过程。

3.10.4 DealRequest()方法

处理客户端请求。

3.10.4.1 功能

多线程接受客户端发送的请求,调用DealRequest()方法处理。

DealRequest()根据具体情况调用getAllMessage类中getInformation()方法处理,把结果发送至客户端。

3.10.4.2 测试计划

建立服务器与客户端的链接,客户端发送请求,确保服务器可以调用正确的 getInformation()方法

3.11 getAllMessage类设计说明

3.11.1 getInformation ()方法

服务器端最终要的方法,客户端与服务器交互的核心。

3.11.1.1 功能

处理客户端传递的一切请求,并得出相应的处理结果传递给客户端。

3.11.1.2输入项

请求类型 int

3.11.1.3输出项

处理结果 String

3.11.1.4算法

1.客户端发出请求。

2.多线程接受请求,调用DealRequest()处理请求。

3.DealRequest()调用getinformation()处理具体请求,并将结果发送至客户端。

3.11.1.5 测试计划

建立服务器与客户端的链接,客户端发送请求,确保服务器可以返回正确的处理结果至客户端。

4 client端程序说明:

4.1类Customer设计说明

4.1.1login()方法

用于用户登陆系统。

4.1.1.1 功能

用于用户登陆系统。

4.1.1.2 测试计划

能顺利登录系统

4.1.2register()方法

用于用户注册系统。

4.1.2.1 功能

用于用户注册系统。

4.1.2.2 输入项

用户名 String

密码 String

确认密码 String

4.1.2.3 输出项

提示:是否注册成功

4.1.2.4 测试计划

能正确识别输入的用户名与密码。如果该用户名已被使用,那么不能注册,如果

输入的密码和确认的密码不统一,则输出提示。

4.1.3exit()方法

用于用户退出系统。

4.1.3.1 功能

用于用户退出系统。

4.1.3.2 测试计划

能正确辨认用户是否已经登录,若已经登录,则可以退出系统。

4.1.4queryFlights()方法

用于用户查询航班。

4.1.4.1 功能

用于用户查询航班。

4.1.4.2 输入项

起始地 String

目的地 String

4.1.4.3 输出项

符合条件的各航班的信息。

4.1.4.4算法

机票预订系统详细设计

4.1.4.4 测试计划

能正确识别输入的起始地和目的地,根据这两个数据进行查询。

4.1.5 orderFlight()方法

用于用户预定机票。

4.1.5.1 功能

用于用户预订机票。

4.1.5.2算法

机票预订系统详细设计

4.1.5.3 测试计划

能正确识别用户是否选择相应的航班,若用户没选择,则会提示用户请选择你所需要的航班。

4.1.6queryOrders()方法

用于用户查询已定机票。

4.1.6.1 功能

用于用户查询已定机票。

4.1.6.2算法

机票预订系统详细设计

4.2类order设计说明

4.2.1clearOrder()方法

用于清除某个用户的订单。

4.2.1.1 功能

用于清除某个用户的订单。

4.2.1.2 测试计划

能顺利清除订单

4.2.2deleteFlight()方法

用于用户取消某一航班。

4.2.2.1 功能

用于用户取消某一航班。

4.2.2.2 测试计划

能按要求正确删除航班

4.2.3addFlight()方法

用于用户预定航班后,加入到用户的订单中。

4.2.3.1 功能

用于用户预定航班后,加入到用户的订单中。

4.2.3.2 测试计划

能正确添加航班。

4.3类account设计说明

4.3.1decreaseMoney()方法

用于用户账户的扣钱。

4.3.1.1 功能

用于用户账户的扣钱。

4.3.1.2 测试计划

用户订票后,能根据所定的机票,扣除相应的钱。

4.3.2addMoney()方法

用于用户往账户里充钱。

4.3.2.1 功能

用于用户往账户里充钱。

4.3.2.2 测试计划

能正确往账户里充钱。

4.3.3getID()方法

得到账户的用户名

4.3.3.1 功能

得到账户的用户名

4.3.3.2 测试计划

能得到正确的用户名

补充:其余类flight和airport已在server中得到了解释,在这就不一一列举了啦。

实验小结

这次试验,让我更深一层次的了解到了团队的重要性,我不敢说我们的团队是最优秀的,但我可以肯定的说我们一直在变得更优秀!实验中我们分工合作,每个人都参与到了实验的整个过程,并且有自己主要负责的部分,这样既学到了知识又节省了时间。实验中我们相互鼓励、彼此沟通,当遇到问题时我们互相交流,进行探讨,真正感受到了合作的乐趣与沟通所产生的效率。这个实验让我从深层次理解了好的团队为什么会产生1+1>2的效果。

不过通过程此次的实验,我不仅拓宽了自己的常识面,还在实践过程当中巩固和加深了自己所学的定见常识,使自己的技术素质有了进一步的提高,同时我的专业水平也有了很大的进步。

相关推荐