资源描述
1 1 五详细设计说明书五详细设计说明书 1、引言:引言:1、1 编写目的:编写目的:在前一阶段(概要设计说明书)中,已解决了实现该系统需求的程序模块设计问题。包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等。在以下的详细设计报告中将对在本阶段中对系统所做的所有详细设计进行说明。在本阶段中,确定应该如何具体地实现所要求的系统,从而在编码阶段可以把这个描述直接翻译成用具体的 程序语言书写的程序。主要的工作有:根据在需求分析说明书中所描述的数据、功能、运行、性能需求,并依照概要设计说明书所确定的处理流程、总体结构和模块外部设计,设计软件系统的结构设计、逐个模块的程序描述(包括各模块的功能、性能、输入、输出、算法、程序逻辑、接口等等),解决如何 1接受:旅客信息及取票通知和帐单;2输出:取票通知和帐单及机票;3网络输出和加密,输入和解密;4分辨信息的种类并采取相应的处理步骤;5判断信息的正误并采取相应的处理步骤;6进行数据库的查询、修改工作;7接受并判断错误,输出相应的出错消息;在以下的各个阶段中,用户操作手册将与本阶段的工作紧密结合,努力作到 让用户易懂易学。测试报告和维护报告也将参考本说明书,检验本系统的各项性能指标,及时发现纰漏及时修补,一定要把功能强大、稳定可靠、便于维护的机票预定系统交到用户手中。1、2 项目背景:项目背景:本项目(机票预定系统)时由浙江航空公司委托,由软件开发小组负责开发。本 机票预定系统项目主要由两部分形成:1、各旅行社中的前台客户程序;2、航空公司中的数据库服务器程序;2 2 1、3 文中特殊的定义和缩写:文中特殊的定义和缩写:131 定义定义 SQL SERVER:系统服务器所使用的数据库管理系统(DBMS)。SQL:一种用于访问查询数据库的语言 事务流:数据进入模块后可能有多种路径进行处理。主键:数据库表中的关键域。值互不相同。外部主键:数据库表中与其他表主键关联的域。ROLLBACK:数据库的错误恢复机制。132 缩写缩写 系统:若未特别指出,统指本机票预定系统。SQL:Structured Query Language(结构化查询语言)。ATM:Asynchronous Transfer Mode(异步传输模式)。1、4 参考资料:参考资料:以下列出在概要设计过程中所使用到的有关资料:1 机票预定系统项目计划任务书机票预定系统项目计划任务书 浙江航空公司 2 机票预定系统项目开发计划机票预定系统项目开发计划 软件开发小组 3 需求规格说明书需求规格说明书 软件开发小组 4 概要设计说明书概要设计说明书 软件开发小组 4 用户操作手册(初稿)用户操作手册(初稿)软件开发小组 5 软件工软件工程及其应用程及其应用 周苏、王文等 天津科学技术出版社 6 软件工程软件工程 张海藩 清华大学出版社 7 Computer Network A.S.Tanenbaun Prentice Hall 文档所采用的标准是参照软件工程导论沈美明著 的“计算机软件开发文档编写指南”。3 3 2.总体设计:总体设计:2、1 需求概要:需求概要:浙江航空公司为方便旅客,需开发一个机票预定系统。为便于旅客由旅行社代替航空公司负责为旅客定票,旅行社把预定机票的旅客信息,包括姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地,输入机票预定系统的客户端程序,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班,印出取票通知。旅客在飞机起飞前一天凭取票通知和帐单交款后取票,系统校对无误后即印出机票给旅客。要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机的 界面要单明了,易于操作,服务器程序利于维护。2、2 软件结构:软件结构:各模块之间的关系已由概要设计给出。1、客户机、客户机接受接受信息信息模块结构图模块结构图:旅客信息输入界面 1 帐单和通知输入界面 2 PersInfoExam()CheckNoticeExam()IErrorHandle()PersInfoInput()CheckNoticeInput()PersInfoTempSave()CheckNoticeTempSave()JudgeOrderOrCash()4 4 网络接受和发送模块 2.客户机输出信息模块:客户机输出信息模块:网络接受和发送模块 错误输出的界面 3 帐单和取票通知的输出界面 1 机票的输出界面 2 OrderTransPre()CashTransPre()SetCSFlag()JudgeOrderOrCash()DBOperaCheck()PersInfoComp1()CheckNoticeOutput()CheckNoticeComp()OErrorHandle()PersInfoComp2()TicketOutput()CDataRecPre()5 5 3.网络接受和发送模块结构:网络接受和发送模块结构:客户机 接受信息模块 或 服务器输出信息模块 客户机 输出信息模块 服务器输入信息模块 NetReceive()NetDataPack()NetDataEncry()NetSend()NetCheck()RecPre()SendPre()NErrorHandle()NetDataDiscry()NetDataUnpack()NetMonitor()JudgeCSFlag()6 6 4.服务器模块服务器模块:网络接受和发送模块 网络接受和发送模块 JudgeOrderOrCash()TicketAvailable()InfoComp()DBErrorHandle()LockTicket()AddPers()GetoutCheck()DelItem()GetoutTicket()JudgeCheckTicket()CheckTransPre()TicketTransPre()SetCSFlag()DBErrorTransPre()SDataRecPre()7 7 3、程序描述:、程序描述:3、1 客户机接受信客户机接受信息模块息模块:1、PersInfoExam 过程:过程:对在旅客信息界面中输入的各项信息进行初步检验。若发现错误,令 PErrorAppear=T,判断错误类型,并将相应的 错误类型 PErrorType 或 PErrorRank 作为参数,转入IErrorHandle 过程。若未发现错误,转入 PersInfoInput 过程。其中的错误种类有:1.数据类型不匹配,PErrorType=T;否则=F;姓名 string 旅行目的地 string 性别 string 旅行时间 date 工作单位 string (年/月/日 yy/mm/dd)身份证号码 long int 定票/取票 boolean 2、数据超出规定范围 PErrorRank=T;否则=F;等等 性别只能是男或女;身份证号码按规定必须是 13 位;旅行时间必须在定票的当天过一天以后;等等 2、PersInfoInput 过程过程:经检验无误后,将输入界面表单中的数据输入到 Class PersInfo Class PersInfo /*伪码*/String name=姓名 ;String sex=性别;String company=工作单位;Long int idcode=身份证号码;Date stime=旅行时间;(syear/smonth/stime=年/月/日)String denist=目的地 Bool ocflag=定票/取票 8 8 3.PersInfoTempSave 过程:过程:将由 PersInfoInput 输入的旅客信息 保存在一个临时文件 PersInfoTemp.txt 中。以备与将来从服务器经网络传输过来的数据校验。此类 temp文件在每次软件的完全过程操作后,须删除。4.CheckNoticeExam过程过程:对在帐单和取票通知的信息界面中输入的各项信息进行初步检验。若发现错误,令 CErrorAppear=T,判断错误类型,并将相应的 错误类型 CErrorType 或 CErrorRank 作为参数,转入 IErrorHandle 过程。若未发现错误,转入 CheckNoticeInput 过程。其中的错误种类有:1.数据结构不匹配,CerrorType=T,否则=F;帐单号 long int 姓名 string 身份证号码 long int 付款金额 money 航班号 string 取票截止日期 date 目的地 string 2.数据超出规定范围 CErrorRank=T;否则=F;如帐单号不是规定的 15 位;金额为负;取票截止日期已过;等等 5.CheckNoticeInput 过程过程:经检验无误后,将输入界面表单中的数据输入到 Class CheckNotice Class CheckNotic Long int cncode=帐单号 String name=姓名 Long int idcode=身份证号码 Money bill=付款金额 String planecode=航班号 Date dtime=取票截止日期 9 9 String denist=目的地 6.CheckNoticeSave 过程过程:将由 CheckNoticeInput 输入的旅客信息 保存在一个临时文件 CheckNoticeTemp.txt 中。以备与将来从服务器经网络传输过来的数据校验。此类 temp文件在每次软件的完全过程操作后,须删除。7.IErrorHandle 过程过程:在 PersInfoExam或 CheckNoticeExam过程中若发现错误,就转入本过程,执行相应的处理,并输出相应的出错信息。If(PErrorType=T)输出“您的个人信息可能输错了位置。请重试。”If(PErrorRank=T)输出“您的个人信息不适应规定范围。请重试。”再转入旅客信息输入的界面中。If(CErrorType=T)输出“您的帐单信息可能输错了位置。请重试。”If(CErrorRank=T)输出“您的帐单信息不适应规定范围。请重试。”再转入帐单和取票通知信息的输入界面。8.JudgeOrderOrCash 过程:过程:根据 PersInfoInput 输入的 ocflag 判断本次操作是定票或取票,相应的设置标志,相应的转入 OrderTransPre或 CashTransPre过程.9.OrderTransPre 过程过程:定票要求传输前,作好各方面(硬件、软件)的准备。如准备好要传输的定票信息,包括旅客信息,客户机信息等等。客户机信息包括唯一序列号 c_id,并设置等待标志 waitflag=T和等待开始时间 waitstime,等等。转入网络模块后,此过程仍处于等待状态,并一直记时,当waitflag=T且系统时间超过 waitstime比如十分钟后,结束操作,输出操作超时的出错信息。当客户机接受到数据库的信息,客户机输入模块中的 DataRecPre过程会置 waitflag=F,这样本过程就会结束。10 10 10CashTranPre 过程:过程:取票要求传输前,作好各方面(硬件、软件)的准备。如准备好要传输的取票信息,包括帐单和取票通知的信息,客户机信息等等。客户机信息包括唯一序列号 c_id,并设置等待标志waitflag=T和等待开始时间 waitstime,等等。转入网络模块后,此过程仍处于等待状态,并一直记时,当 waitflag=T且系统时间超过 waitstime比如十分钟后,结束操作,输出操作超时的出错信息。当客户机接受到数据库的信息,客户机输入模块中的 DataRecPre过程会置waitflag=F,这样本过程就会结束。11.SetCSFlag 过程过程:设置客户机/服务器标志 CSFlag=T(表示将要进行的传输是从客户机到服务器)。以备网络模块中的 JudgeCSFlag过程使用。3.2 客户机输出信息模块:客户机输出信息模块:1 CDataRecPre 过程:过程:作好各方面(硬件、软件)的准备,以便接受网络传输来的数据。如设置服务器的空闲与否状态 s_idle=F,继承正在工作联系的客户机序列号 c_id。完成后转入下一个过程DBOperaCheck.2 DBOperaCheck过程:过程:检验网络传输过来的数据。若是出错信息,转入 OErrorHandle 过程。否则转入JudgeOrderOrCheck过程。3 JudgeOrderOrCheck过程:过程:根据网络传输来的数据中的 ocflag 判断本次操作是定票或取票,相应的设置标志,相应的转入 PersInfoComp或 CheckNoticeComp 过程.11 11 4.PersInfoComp1 过程:过程:将数据库中的旅客信息与临时文件 PersInfoTemp.txt 中的旅客信息进行比较,如果吻合,就转入 CheckNoticeOutput 过程。否则出错,转入 OErrorHandle 过程。5 CheckNoticeOutput 过程:过程:将帐单和取票通知输出到界面 1 中。注意格式。Long int cncode=帐单号;String name=姓名 ;String sex=性别;String company=工作单位;Long int idcode=身份证号码;Date stime=旅行时间;(syear/smonth/stime=年/月/日)String denist=目的地 Bool ocflag=定票/取票 6 CheckNoticeComp 过程:过程:将数据库中的帐单和取票通知信息与临时文件 CheckNoticeTemp.txt 中的旅客信息进行比较,如果吻合,就转入 PersInfoComp 过程。否则出错,转入 OErrorHandle过程。7PersInfoComp2 过程:过程:将数据库中的旅客信息与临时文件 PersInfoTemp.txt 中的旅客信息进行比较,如果吻合,就转入 TicketOutput 过程。否则出错,转入 OErrorHandle过程。8 TicketOutput 过程:过程:将机票输出到界面 2。注意格式。Long int planecode=航班号;Date/time stime=起飞时间;String name=姓名;Long int idcode=身份证号码;12 12 Int seatcode=座位号;Money price=票价;9 OErrorHandle 过程:过程:处理各个过程产生的错误,输出相应的出错信息到输出界面 3。由 DBErrorCheck过程转入的,是数据库操作失效,如:所需机票已被定光;数据库中无对应的帐单或旅客信息;等等。由 PersInfoComp 过程转入的,是数据库处理有误,返回的旅客信息无法与原先输入的旅客信息吻合。由 CheckNoticeComp过程转入的,是数据库处理有误,返回的帐单和取票通知信息无法与原先输入的帐单和取票通知信息吻合。3.3 网络接受和发送模块结构:网络接受和发送模块结构:1 NetCheck过程:过程:检查网路的工作状况。发送一些检验消息,接受一些反馈信息,查询要建立通路的终端是否有效,若有效就作好响应的准备,转入 RecPre和 SendPre过程;若无效就转入 NErrorHandle过程。如服务器要传输信息给某客户机,可先发检验消息,包括由服务器发送的 c_id可检验相应的客户机是否仍处于等待状态,客户机再将 waitflag反馈给服务器;客户机要传输信息给服务器,若服务器的 s_idle=T,由客户机发送的 c_id的值可赋予服务器中的 c_id,再将 s_idle反馈给客户机.2.RecPre 过程:过程:经过 NetCheck过程检验网路后,作好接受数据的准备。若是服务器客户机,应该只要相应 c_id的客户机做准备,激活客户机输出模块。若是客户机服务器,由于服务器始终处于活动状态,无须 激活。3.NetReceive 过程:过程:接受网络数据包。在分包接受的过程中,始终保持与 NetMonitor 过程联系,接受和反馈网络数据传输状况的 信息,根据这些信息继续接受数据包,或做相应的调整。13 13 4 NetDataDiscry 过程:过程:将由网络传输来的数据依据一定的算法解密。5 NetDataUnpack 过程:过程:将经解密后的数据(被压缩过的)依据一定的算法解压。6 SendPre 过程:过程:经过 NetCheck过程检验网路后,作好发送数据的准备。若是服务器客户机,应该只要相应 c_id的客户机做准备,激活客户机输出模块。若是客户机服务器,由于服务器始终处于活动状态,无须 激活。7 NetDataPack过程:过程:将由服务器模块传过来的数据依据一定的算法压缩,打包。8 NetDataEncry 过程:过程:将准备送网络发送的数据依据一定的算法加密。9 NetSend 过程:过程:发送经过压缩打包和加密的数据包。在分包发送的过程中,始终保持与 NetMonitor 过程联系,接受和反馈网络数据传输状况的 信息,根据这些信息继续发送数据包,或做相应的调整。10 NetMonitor 过程:过程:从服务器与某客户机建立网络联系开始,到数据传输完成,联系断开为止,NetMonitor 过程始终监视着网络状况。并将状况信息随时传给 NetReceive和 NetSend过程,同时从这两个过程接受数据接受和发送的状况信息。如果以上的状况信息反映出错误,就转入 NErrorHandle过程处理。14 14 11.NErrorHandle 过程:过程:网络模块的错误处理过程。主要的错误种类有:1。无法建立服务器与某客户机建立网络联系,由 NetCheck 过程转来;2。联系建立后,网络数据传输出现错误,由 NetMonitor 过程转来。12 JudgeCSFlag 过程:过程:本过程根据由客户机输入模块中的 SetCSFlag过程或服务器模块中的 SetCSFlag 过程来确定网络模块完成后应转入哪一个模块,客户机输出模块或服务器模块。3.4 服务器模块:服务器模块:1.SDataRecPre 过程过程:作好服务器各方面(硬件、软件)的准备,以便接受网络传输来的数据。如设置服务器的空闲与否状态 s_idle=F,继承正在工作联系的客户机序列号 c_id。完成后转入下一个过程JudgeOrderOrCash .2.JudgeOrderOrCash过程过程:根据网络输入的数据中的 ocflag 判断本次操作是定票或取票,相应的设置标志,相应的转入 TicketAvailable或 InfoComp过程.3.TicketAvailable 过程过程:根据旅客信息中的旅行时间(日期)查询数据库,若 Ticket表中在此日期仍有票剩余(未被定票或购票),就转入 LockTicket 过程;若无余票,就转入 DBErrorHandle 过程.4.LockTicket 过程过程:根据旅客信息中的旅行时间(日期),在 Ticket表中,把相应数量的起飞日期等于此日期的机票锁住,作为已定的机票.15 15 5.AddPers过程过程:把已定票的旅客信息添加到 PerInfo表中.姓名 性别 身份证 号码 工作单位 旅行目的地 旅行时间 6.GetoutCheck过程过程:把查询后许可的定票信息添加到 Check表中,同时准备把此信息向网络输出.帐单号 姓名 身份证号码 金额 航班号 截止日期 目的地 7.InfoComp 过程过程:检查输入的旅客信息、帐单和取票通知信息在数据库的 PersInfo和 Check 表中是否有对应的项。如果有,就转入 DelItem 过程;如果无,就转入 DBErrorHandle 过程。8 GetoutTicket 过程:过程:在 Ticket 表中取出并删除对应的被锁住的机票信息,准备把此信息向网络输出.9 DelItem 过程:过程:16 16 在数据库的 PersInfo 和 Check 表中,删除已取票的旅客信息、帐单和取票通知信息。10 JudgeCheckTicket 过程:过程:根据数据库输出的数据 判断本次输出是帐单和取票通知或机票,相应的设置标志,相应的转入 CheckTransPre或 TicketTransPre过程.11.CheckTransPre 过程:过程:帐单和取票通知 传输前,作好各方面(硬件、软件)的准备。如准备好要传输信息,包括帐单信息,要联系的客户机信息等等。客户机信息包括唯一序列号 c_id。12.TicketTransPre 过程:过程:机票 传输前,作好各方面(硬件、软件)的准备。如准备好要传输信息,包括机票信息,要联系的客户机信息等等。客户机信息包括唯一序列号 c_id。13.SetCSFlag 过程:过程:设置客户机/服务器标志 CSFlag=F(表示将要进行的传输是从服务器到客户机)。以备网络模块中的 JudgeCSFlag过程使用。14.DBErrorHandle 过程:过程:判断数据库操作中出现的错误,并处理和返回到客户机上。由 TicketAvailable过程转入的错误,是 Ticket 表中在相应日期无票剩余(全被定票或购票,或者飞机已起飞);由Infocomp 过程转入的错误,是输入的旅客信息、帐单和取票通知信息在数据库的 PersInfo和 Check 表中没有对应的项,说明取票信息和定票信息不符。15.DBErrorTransPre 过程:过程:错误信息 传输前,作好各方面(硬件、软件)的准备。如准备好要传输信息,包括错误类别信息,要联系的客户机信息等等。客户机信息包括唯一序列号 c_id。接着转入网络接受和发送模块。17 17 18 18
展开阅读全文