第一篇:火车票售票系统 需求分析报告
三、需求规格说明书
三、需求规格说明书
1.引言...........................................................................................................................1 1.1编写目的.............................................................................................................1 1.2项目背景.............................................................................................................2 1.3定义....................................................................................................................2 1.4参考资料.............................................................................................................2 2.任务概述....................................................................................................................2 2.1目标....................................................................................................................2 2.2运行环境.............................................................................................................3 2.3条件与限制..........................................................................................................3 3.数据描述....................................................................................................................3 3.1静态数据.............................................................................................................3 3.2动态数据.............................................................................................................3 3.3数据库介绍..........................................................................................................4 3.4数据词典.............................................................................................................4 3.5数据采集.............................................................................................................8 4.功能需求....................................................................................................................8 4.1功能划分.............................................................................................................8 4.2功能描述.............................................................................................................9 5.性能需求....................................................................................................................9 5.1数据精确度..........................................................................................................9 5.2时间特性.............................................................................................................9 5.3适应性.................................................................................................................9 6.运行需求....................................................................................................................9 6.1用户界面.............................................................................................................9 6.2硬件接口...........................................................................................................10 6.3软件接口...........................................................................................................10 6.4故障处理...........................................................................................................10 7.其它需求..................................................................................................................10
1.引言
1.1编写目的
本需求分析报告的目的是规范化本软件的编写,旨在于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,同时提出了本火车售票系统的软件开发过程,便于程
三、需求规格说明书
序员与客户之间的交流、协作,并作为工作成果的原始依据,同时也表明了本软件的共性,以期能够获得更大范围的应用。本文档供项目经理、设计人员、开发人员参考。
1.2项目背景
a.项目的委托单位:中国铁路局 b.开发单位:xx大学 c.主管部门:计算机学院 d.软件名称:火车售票系统 e.软件开发者:
1.3定义
a.铁路售票应用系统软件:基本元素为构成铁路售票及相关行为所必须的各种部分。
b.需求:用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。
c.需求分析:包括提炼,分析和仔细审查已收集到的需求,以确保所有的风险承担者都明其含义并找出其中的错误,遗憾或其它不足的地方。
d.模块的独立性:是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的。
1.4参考资料
a.《实用软件工程》(第二版)郑人杰,殷人昆,陶永雷。清华大学出版社,1997。b.《JAVA网络高级编程》金勇华,曲俊生。人民邮电出版社,2001。
c.《JBUILDER培训教程》Borland software corporation。机械工业出版社,2002。
2.任务概述
2.1目标
(1)完善目前火车售票系统,使之能跟上时代的发展。同时通过实践来提高自己的动手能
三、需求规格说明书
(2)应用范围:理论上能够实现于铁路部门的售票系统,其目的在于在原有的系统基础使得火车售票便捷化,以期实现完善日常生活中火车售票的各种缺陷。
(3)可实现旅客对于火车票的查询与购买功能,售票员则可实现查询、添加和删除等功能;对于所查询的车次结果提供列表显示输出;有一定的安全机制,普通旅客不能对车次信息随意删改,只有授权的售票员可通过密码识别进行维护。
2.2运行环境
操作系统:Microsoft Windows 2000 Advanced Server 支持环境:IIS 5.0 数 据 库:Microsoft SQL Server 2000 2.3条件与限制
一个更完善的火车票售票系统,应提供更为便捷与强大的查询购买功能,如相应的网络操作及服务,由于开发时间和计算机数量有限,该系统并未提供这一功能,对于信息的保护手段仅限制于设置用户级别,以记名提供数据文件的备份,比较简单,不能防止恶意的破坏,安全性能有待进一步完善。
3.数据描述
3.1静态数据
火车票:列车车号
(int SerialNumber)
列车始发时间(struct time SetOut)
列车始发站(char DeparturePoint)
列车终点站(char TerminalPoint)
票务:列车车号
(int SerialNumber)
已售出车票票数(int FixedNumber)
额定载量(int FixNumber)
售票员:用户名(char name)
密码(char password)3.2动态数据
输入数据:根据界面提示,键盘输入操作;
查询方式:查询车次、查询始发站;
三、需求规格说明书
旅客购买时的票务信息,售票员添加、购票、退票时的票务信息;
售票员备份数据恢复所需的数据备份文件;
售票员操作需密码,旅客操作受限; 输出信息:查询车次确定的数据库记录的子集;
统计结果;
车次信息录入、删除(成功或失败);
车次信息查询、购买的操作结果;
数据备份输出的数据备份文件; 内部数据:查询操作建立的索引;
3.3数据库介绍
数据库采用Microsoft Access数据库
3.4数据词典
《火车售票系统》的总体功能如下: 车票的售出; 车票的退还; 车票信息的查询;
车票的增删改;
售票员查询统计车票信息; 售票系统数据备份; 售票管理者口令修改; 1.售票员登陆系统:(1)数据流图
售票退票选择检验错误售票员选择用户名密码身份验证售票员信息密码正确登陆系统选择选择选择授权信息表查询录入新的班次信息
(2)数据词典
数据源点及汇点描述: ① 名称:售票员
简要描述:管理售票员信息
有关数据流:用户名、密码、系统选择:售票系统、退票系统、查询系统、录入信息系统 数目:1
三、需求规格说明书
加工逻辑词条描述: ① 加工名:身份检验
加工编号:1
简要描述:检验用户身份 输入数据流:用户名、密码
输出数据流:密码正确、身份验证错误 加工逻辑: IF 用户名为空 THEN
发出“用户名为空错误”
ELSE IF 密码为空 THEN
发出“密码为空错误”
ELSE IF 用户名和密码不符 THEN
发出“用户名和密码不匹配错误”
ENDIF
ENDIF
ENDIF
ENDIF 数据流名词条描述: ① 数据流名:用户名
说明:售票员姓名
数据流来源:售票员 数据流去向:身份检验
数据流组成:用户名=字符型字符串 ② 数据流名:密码
说明:与用户名相匹配的密码 数据流来源:售票员
数据流去向:身份检验
数据流组成:密码=短整型字符串 每个数据量流通量: ③ 数据流名:出错信息
说明:用于指示身份验证错误的信息
数据流来源:身份检验 数据流去向:售票员
数据流组成:出错信息=任意字符串 ④ 数据流名:系统名称
说明:系统的名称 数据流来源: 数据流去向:选择 数据流组成: 数据文件词条描述: ① 数据文件名:授权信息表
简述:存放售票员信息
输入数据:
输出数据:售票员信息
数据文件组成:授权信息表由“售票员信息”组成
三、需求规格说明书
2.售票员相关操作(售票、退票、查询、录入)
票务信息表车票信息车票信息售票退票选择检验错误售票员选择用户名密码身份验证售票员信息密码正确登陆系统选择选择选择授权信息表查询车票信息录入新的班次信息车票信息列车信息表
(2):数据词典:
数据源点及汇点描述: 1 名称:售票员 ○简要描述:管理售票员信息 有关数据流:用户名、密码
数目:1 加工逻辑词条描述: 1加工名:身份检验 ○加工编号:1
简要描述:检验用户身份
输入数据流:用户名、密码
输出数据流:密码正确、身份验证错误 2加工名:售票 ○加工编号:2 简要描述:根据所读入的操作信息,售出火车票
输入数据流:操作信息,火车票信息
输出数据流:火车票信息
加工逻辑:根据所读入的操作信息,售出火车票
数据流名词条描述: 数据流名:用户名 ○
三、需求规格说明书
说明:售票员的姓名
数据流来源:售票员 数据流去向:身份检验
数据流组成:用户名=字符型字符串 2数据流名:密码 ○说明:与职工名称相匹配的密码 数据流来源:售票员 数据流去向:身份检验
数据流组成:密码=短整型字符串 每个数据量流通量: 3数据流名:车票信息 ○说明:车票信息
数据流来源:售票员
数据流去向:列车信息表
数据文件词条描述:
① 数据文件名:列车信息表
简述:车票信息
输入数据:车票信息
输出数据:
数据文件组成:列车信息表由“车票信息”组成 存储方式:关键码 存取频率:频繁 2数据文件名:票务信息表 ○简述:票务信息
输入数据:票务信息 输出数据:
数据文件组成:票务信息表由“列车号、已售票、剩余票”组成 存储方式:关键码 存取频率:频繁
3.旅客查询购票过程:(1)数据流图
三、需求规格说明书
旅客 登录系统选择选择选择选择订票退票查询
(2)数据词典:
● 数据源点及汇点描述: 名称:旅客
简要描述:订票,退票,查询
有关数据流:系统选择:订票系统、退票系统、查询系统 ●数据流名词条描述:
⑤ 数据流名:系统名称
说明:系统的名称 数据流来源:
数据流去向:选择
数据流组成:
3.5数据采集
数据采集采用键盘输入
4.功能需求
4.1功能划分
该软件具有如下主要功能: 1.浏览功能 2.查询功能 3.添加功能 4.修改功能 5.删除功能
三、需求规格说明书
6.授权功能
4.2功能描述
1.浏览功能
列出当前数据库文件中车票的所有记录 可选定一项纪录,显示说有域 2.查询功能
车次信息匹配查询 始发站信息匹配查询 3.添加功能
增加一条车票的信息 4.修改功能
修改某一已存在的记录内容,提供确认机制 5.删除功能
删除一条记录,提供确认机制 6.授权功能
授权票务管理人员修改数据的权限
5.性能需求
5.1数据精确度
查询时应保证查全率,所有在相应域中包含查询车次的记录都应能查到,同时保证查准率。
5.2时间特性
一般操作的相应时间应在1~2秒内
5.3适应性
满足运行环境在允许操作系统之间的安全转换和雨其它又能够用软件的独立运行要求。
6.运行需求
6.1用户界面
采取对话框方式,多功能窗口运行
三、需求规格说明书
6.2硬件接口
(1)硬件接口:支持x86系列PC机
(2)网络硬件接口要求:现实中要求具有高速以太网组网一实现联网销售,但是在理论实验验证软件本身的目的来看,无需网络通讯接口。
6.3软件接口
运行于Windows2000及更高版本并装有JAVA虚拟机的操作系统之上。
6.4故障处理
正常使用时不用出错,对于用户的输入错误应及时给出适当的改正信息提示,若运行遇到不可恢复的系统错误,也必须保证数据库完好无损。
7.其它需求
(1)可用性:该软件也可以通过单步跟踪的操作进行检查处理。
(2)安全性:由于软件运行数据放在数据库中,所以参数不容易被错改、破坏,万一参数受到破坏也不会影响源程序。
(3)可维护性:该软件利用数据库进行编程,系统结构由程序基本确定,大量的参数及文本内容全部放于数据库中。修改、更新数据只要在数据库进行修改添加,而不需要对系统结构进行修改,这样系统维护性、升级都十分方便。
(4)兼容性:由于尚未测试,故无法对兼容性进行评析。
第二篇:课程设计火车票售票系统的需求分析
二.需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为八个模块,每一个模块对应一个函数。在这些函数当中,添加车次数据函数、售票函数、查询总额函数的实现严格按照题目的要求,而显示时间函数和显示车次函数属于附加功能。读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。
1.添加车次函数
主要实现程序最初运行时车次的录入 2.旅客买票函数
实现的功能是按照旅客所需车次几所购买车票的数目 3.查询车票总额
按照题目的具体要求实现的是总额的查询 4.显示函数
实现的是显示目前所有的有效车次信息
除上面介绍的功能之外,程序还具有显示当地时间,以及退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个车次都包含车次、日期,始发、终点以及所受票数和所需费用,在程序当中,将车次类型定义为结构体类型,添加的车次信息直接写入E盘的train.txt文件中,其它函数每次对车次记录的访问,其数据来源都是train.txt文件,这样做不但可以保证学生数据的一致性,而且可以对车次数据进行永保存,保证每次运行程序都可以采用原来的数据
近年来,中国乃至世界的人口急剧增加,人口流动量也随之增加,火车作为一种便捷且相对 比较便宜的交通工具也受到广大出行者的青睐,为了减轻铁道部售票的压力,特此编写此程序,便于乘客在网上购票。
3.1.2 软件项目概述
本系统拥有四大功能,分别是查询、订票、改签和退票。在使用不能系统之前,用户必须注 册用户名,用户名必须包括乘客的身份证号,这样可以实行实名制购票,防止在购票高峰,非法 分子以高价倒卖火车票,以此来保证乘客的利益。用户在利用用户名登陆本系统以后,方可经行 查询、订票、改签和退票的相关操作。其中,查询允许乘客对自己所需乘坐的列车经行查询,来 判断是否有票,如果有票,乘客则可以选择订票,订票以后,用户的信息将被修改,用户信息将 会添加刚才购买的火车票的列车车次以及起始地和目的地。如果乘客已经购票,需要换票,则必 须先查询是否有需要换的票,如果有票,则可以经行换票操作,同样,用户信息将也会被修改。
当乘客已经订票,需要退票,点击退票,则可以退票,但同时会弹出
需要用户支付手续费的窗
口,用户支付完手续费后,退票成功,用户信息将被修改,推掉的车票对应的列车号以及相关信 息将从用户信息中删除。
3.2 订票流程设计
3.2.1 订票流程描述
乘客在使用系统之前,首先注册新用户,需要输入自己相关个人信息,包括自己的身份证号 码,名称,登陆密码等。当已经注册好用户以后,用户可以利用自己的证件号码和登陆密码登陆 火车票订票系统,乘客需先查询自己所需要乘坐的列车,看是否有票,如果有票则可以选择订票,进行订票;如果用户已经购票,需要换票,则需要查询目标票看其是否有剩余,如果有剩余,则 可以进行换票,当用户输入已拥有的火车票的列车号点击退票,则可以经行退票。当然,以上操 作都必须建立在用户已登录的基础上
阶段通过对系统目标的初步调研和分析,提出可行性方案并进行论证。我们在这 里主要从技术可行性、经济可行性和操作可行性三方面进行分析。2.1.1 经济可行性
本系统其他应用软件、硬件系统也易于获得.因此 , 开发成本较低。而引进使用本系
统后,与传统方式相比,具有高效率、低成本、高质量的特点,可以节省不少人力、物 力及财力。所以,从经济的角度来看,该系统可行。2.1.2 技术可行性
开发工具: VS2005
数据库环境: SQL Server 2005 系统环境:
Microsoft Windows 2000 或以上版本。
系统实现依靠相对熟悉的 c 语言和 SQL Server2008 数据库系统,其基本操作实质还
是对数据库进行添加、删除、查找等操作。2.1.3 操作可行性
系统采用菜单式,实现用户与数据库的交互,界面简洁友好,操作方便。2.2 需求分析
需求分析是软件设计的一个重要的环节。本阶段对订票系统的应用情况作全面调
查,以确定系统目标,并对系统所需要的基础数据以及数据处理要求进行分析,从而确 定用户的需求。用户对系统的需求我们从以下几方面进行分析。2.2.1 功能需求
本网上售票系统应该具备如下功能: 1.查询
分为对车次信息的查询和客户对已订车票信息的查询。要求: 1)对车次的查询,可以按照发车车次进行查询; 2)车次信息包括:车号、出发 地、目的地、发车日期、开出时刻、票价。3)座位类型设定。4)车次信息只允许用户查询,不能修改。2.添加车票
通过查询系统,客户根据自己的需求找到满意的车次,再输入个人信息后直接通过 网上售票确定已预订选中的车票。要求 :
售票记录应包括:会员名、车号、发车日期、订购票数、总价。3.退票
可退票,通过查询系统,客户可以根据自己的名字找到自己的订票信息,通过退票 模块退去已购车票。2.2.2 数据需求 信息需求,即在系统中需要处理哪些数据。根据对火车站网上订票系统的分析,本 系统的信息需求如表 2-1 所示。表 2-1 信息输入输出 信息输 入 信息 处理 信息 输出 用户输 入所需车次 检索 系统数据库 符合 用户需求的车次及相关 信息 用户输
入个人信息及所需 购的车 票信息 更新
系统中的订票信息,将新
信息存入系统数据库 操作
反馈(如找零)2.2.3 性能需求
为了保证系统能够长期、安全、稳定、可靠、高效的运行,本系统应该满足以下的 性能需求。1.准确性和及时性
系统处理的准确性和及时性是系统的必要性能。系统应能及时而且准确的根据用户 权限及所输入的信息做出响应。
由于本系统的查询功能对于整个系统的功能和性能完成
举足轻重。作为系统的很多数据来源,而车票的数量和时间又影响用户的决策活动,其 准确性和及时性很大程度上决定了系统的成败。在系统开发过程中,必须采用一定的方 法保证系统的准确性和及时性。2.易用性
本系统是直接面对用户的,而用户往往对计算机并不是非常熟悉。这就要求系统能 够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使 用用户熟悉的术语和中文信息的界面,从而保证系统的易用性。
第三篇:火车站售票系统需求分析
火车票销售系统需求分析
一、引言
随着科学技术的发展,计算机领域不断取得日新月异的研究成果。计算机在代替和延伸脑力劳动方面发挥越来越重要的作用,在日常生活中随处都离不开计算机。尤其是在交通发达的今天,新时代的人们越来越依赖于方便、快捷的网络购票,计算机优势更加体现出来。在数字化的今天,为了使旅客更方便地购票、使火车售票系统更加利于管理,开发火车票销售系统更加显得重要,我们结合本次课程设计开发以下的火车票销售系统方案。
二、编写目的
本系统主要为了更好地实现火车票的自动化销售,给旅客提供一个方便快捷的购票平台。同时也为系统管理员提供一个井然有序的管理平台, 防止手工管理混乱,避免一些人为的错误。
三、功能需求
通过对火车票销售系统所需要实现的功能的分析:一个火车站售票系统主要由管理员管理系统和用户系统两部分组成。划分如下图:
四. 数据流图 顶
层
:
0层:
1层:
五. E-R图
六、数据字典
1.用户信息数据流,包括用户信息表,属性(ER图小框框里的)主要操作:用户注册后将用户信息添加进去,用户申请修改信息,管理员审核后修改数据表等。
2.火车票信息数据流,包括火车票数据表、售票数据表,属性的基本操作:用户购买、预定、退票等操作,管理员对火车票信息的修改、更新等操作,站点与火车票是一对多关系。
3.站点信息数据流,包括站点数据表,主要操作:管理员根据路况情况(维修、建造等)及时更新站点信息等操作,与火车票是一对多关系。
七、接口要求
硬件接口:无特别要求;
网络硬件接口要求:现实中要求具有高速以太网组网一实现联网销售,但是在理论实验验证软件本身的目的来看,无需网络通讯接口。
软件接口要求:无
八、软件属性
可用性:本软件也可以通过单步跟踪的操作进行检查处理。
安全性:由于软件运行数据放在数据库中,所以参数不容易被错改、破坏,万一参数受到破坏也不会影响源程序。
可维护性:本软件利用数据库进行编程,系统结构由程序基本确定,大量的参数及文本内容全部放于数据库中。修改、更新数据只要在数据库进行修改添加,而不需要对系统结构进行修改,这样系统维护性、升级都十分方便。
兼容性:由于尚未测试,故无法对兼容性进行评析。
九、支持信息及运行环境
软件支持:本系统网页端采用Myeclipes软件编写,手机端采用android stdio软件编写
设备支持:推荐配置:Windows8及以上版本、android4.0及以上版本;
数 据 库:Mysql。
十、参考资料
《数据库设计》Stephens著 机械工业出版社 《数据库系统概论》(第三版)萨师煊、王珊著 高教出版社
《数据库原理、编程与性能》作者:(美)Patrick O'Neil Elizabeth O'Neil 译者: 周傲英 俞荣华 季文赟 钱卫宁 等
《数据库系统基础教程》清华大学出版社等
第四篇:一个简单的火车票售票管理系统
一个简单的火车票售票管理系统(原创)#include
typedef struct time
//时间类型 {
int x,y,z;
//分别对应年,月,日 }TIME;
typedef struct cnode
//票信息类型 {
int no;
//票号
int id;
//购票人证件号
TIME date;
//购票日期
struct cnode *next;}CNODE;
typedef struct tnode
//车次信息类型 {
char data;
//车次编号
struct tnode *lchild,*rchild;
CNODE *head;}TNODE;
void create();
//按车次建立二叉排序树
void insert(int);
//增加新的车次(二叉排序树的插入)void del();
//取消车次(二叉排序树节点删除)
void inorder(TNODE *);
//中序遍历车次二叉排序树(仅显示车次信息)void inorder_all(TNODE *);
//中序遍历车次二叉排序树(显示车次及售票信息)void preorder(TNODE *);
//先序遍历车次二叉排序树(仅显示车次信息)TNODE *search();
//按车次编号搜索
CNODE *insert_c(CNODE *);
//插入新的售票信息(单张)CNODE *insert_c_more(CNODE *);
//插入新的售票信息(批量)CNODE *del_c(CNODE *,CNODE *);
//退票处理(删除售票信息)CNODE *search_c(CNODE *,int);
//按票号查询
void search_c_id(CNODE *,int);
//按购票人证件号搜索(限定某车次)void search_c_id_all(TNODE *,int);
//按购票人证件号搜索(所有车次)void search_date(CNODE *,TIME);
//按购票日期搜索(限定某车次)void search_date_all(TNODE *,TIME);
//按购票日期搜索(所有车次)void print_c(CNODE *);
//输出售票纪录(单张)void print_c_all(CNODE *);
//输出售票纪录(批量)
TNODE *root=NULL;
void main(){
int i,func,no,ok;
TNODE *t;
CNODE *c;
TIME d;
printf(“nnn”);
for(i=0;i<15;i++)printf(“=”);
printf(“列车售票信息管理系统”);
for(i=0;i<15;i++)printf(“=”);
printf(“n”);
printf(“t1.车次信息管理n”);
printf(“t2.售票记录管理n”);
printf(“t3.售票记录查询n”);
printf(“t4.售票记录一览n”);
printf(“t5.退出系统n”);
for(i=0;i printf(“n请选择您所需要的功能:”); fflush(stdin); scanf(“%d”,&func); switch(func){ case 1: printf(“nn车次信息管理>>>>n”); for(i=0;i printf(“nt1.增加新的车次”); printf(“nt2.取消车次”); printf(“nt3.返回上级菜单n”); for(i=0;i printf(“n请选择您所需要的功能:”); fflush(stdin); scanf(“%d”,&func); switch(func){ case 1: create(); printf(“n售票信息更新成功!nn”); break; case 2:del();break; case 3:main();break; default:printf(“n[错误]功能号输入有误!请重新输入!”); } break; case 2: printf(“nn售票记录管理>>>>n”); for(i=0;i printf(“nt1.增加新的售票记录”); printf(“nt2.退票”); printf(“nt3.返回上级菜单n”); for(i=0;i printf(“n请选择您所需要的功能:”); fflush(stdin); scanf(“%d”,&func); switch(func){ case 1: t=search(); if(t!=NULL)t->head=insert_c_more(t->head); break; case 2: t=search(); printf(“需要退票的票号:”); scanf(“%d”,&no); t->head=del_c(t->head,search_c(t->head,no)); break; case 3:main();break; default:printf(“n[错误]功能号输入有误!请重新输入!”); } break; case 3: printf(“nn售票记录查询>>>>n”); for(i=0;i printf(“nt1.按票号搜索”); printf(“nt2.按购票者证件号搜索”); printf(“nt3.按购票日期搜索”); printf(“nt4.返回上级菜单n”); for(i=0;i printf(“n请选择您所需要的功能:”); fflush(stdin); scanf(“%d”,&func); switch(func){ case 1: t=search(); if(t!=NULL){ printf(“n请输入您所要查询的票号:”); scanf(“%d”,&no); c=search_c(t->head,no); if(c==NULL)printf(“[错误]没有该票号的纪录!该票还未售出或为废票!自动返回上级菜单n...”);} break; case 2: printf(“n请输入您所要查询的购票者证件号:”); scanf(“%d”,&no); search_c_id_all(root,no); printf(“搜索完毕!自动返回上级菜单n...”); break; case 3: do{ printf(“n请输入您所要查询的日期(格式: yy-mm-dd):”); scanf(“%d-%d-%d”,&d.x,&d.y,&d.z); if(d.y<13&&d.y>0){ if(d.y==1||d.y==3||d.y==5||d.y==7||d.y==8||d.y==10||d.y==12) if(d.z<32&&d.z>0)ok=1; else if(d.z==2) if(d.z<30&&d.z>0)ok=1; else if(d.z<31&&d.z>0)ok=1; } else ok=0; if(!ok)printf(“n[错误]日期输入有误!请重新输入!”); }while(!ok); printf(“n指定车次吗?(1->是,0->否):”); scanf(“%d”,&ok); if(ok)search_date(search()->head,d); else search_date_all(root,d); break; case 4:main();break; default:printf(“n[错误]功能号输入有误!自动返回上级菜单n...”); } break; case 4: printf(“nn售票记录一览>>>>n”); for(i=0;i printf(“nt1.仅浏览车次”); printf(“nt2.指定车次已售票记录”); printf(“nt3.所有车次已售票记录”); printf(“nt4.测试:先序遍历车次”); printf(“nt5.返回上级菜单n”); for(i=0;i printf(“n请选择您所需要的功能:”); fflush(stdin); scanf(“%d”,&func); switch(func){ case 1: printf(“n+++仅浏览车次n”); if(root==NULL)printf(“[错误]无车次纪录!”); else{inorder(root);printf(“n”);} break; case 2: printf(“n+++指定车次已售票记录n”); t=search(); if(t!=NULL){ print_c_all(t->head); printf(“n”); } break; case 3: printf(“n+++所有车次已售票记录n”); if(root==NULL)printf(“[错误]无车次纪录!”); else{inorder_all(root);printf(“n”);} break; case 4: printf(“n+++测试:先序遍历车次n”); if(root==NULL)printf(“[错误]无车次纪录!”); else{preorder(root);printf(“n”);} break; case 5:main();break; default:printf(“n[错误]功能号输入有误!自动返回上级菜单n...”); } break; case 5:exit(0); default:printf(“n[错误]功能号输入有误!请重新输入!”); } main();} void inorder_all(TNODE *ptr){ if(ptr!=NULL) { inorder_all(ptr->lchild); printf(“%d:n”,ptr->data); print_c_all(ptr->head); printf(“n”); inorder_all(ptr->rchild); } } void inorder(TNODE *ptr){ if(ptr!=NULL) { inorder(ptr->lchild); printf(“%dt”,ptr->data); inorder(ptr->rchild); } } void preorder(TNODE *ptr){ if(ptr!=NULL) { printf(“%dt ”,ptr->data); preorder(ptr->lchild); preorder(ptr->rchild); } } void print_c(CNODE *tkt){ if(tkt!=NULL)printf(“t%dt%dt%d-%d-%dn”,tkt->no,tkt->id,tkt->date.x,tkt->date.y,tkt->date.z);} void print_c_all(CNODE *head){ int i=0,j=0; if(head==NULL){printf(“n记录为空!n”);return;} for(i=0;i printf(“nNOt票号t购票者证件号t购票日期(年-月-日)n”); for(i=0;i for(j=0;head!=NULL;j++){ printf(“n%d”,j); print_c(head); head=head->next; } printf(“n”); for(i=0;i printf(“n总计 %d 条记录n”,j); for(i=0;i printf(“n”);} void create(){ int n,i;int k[MAX];printf(“n您所希望增加车次的数量:”);scanf(“%d”,&n);for(i=0;i printf(“新增第%d列车次:”,i+1); scanf(“%d”,&k[i]);} for(i=0;i insert(k[i]);} void insert(int m){ TNODE *p1,*p2;if(root==NULL) { root=(TNODE *)malloc(sizeof(TNODE)); root->data=m; root->lchild=root->rchild=NULL; root->head=NULL; } else { p1=root; while(m!=p1->data) { if((m data)&&(p1->lchild!=NULL))p1=p1->lchild; else if((m>p1->data)&&(p1->rchild!=NULL))p1=p1->rchild; else if((m data)&&(p1->lchild==NULL)) { p2=(TNODE *)malloc(sizeof(TNODE)); p2->data=m; p2->lchild=p2->rchild=NULL; p2->head=NULL; p1->lchild=p2; return; } else if((m>p1->data)&&(p1->rchild==NULL)) { p2=(TNODE *)malloc(sizeof(TNODE)); p2->data=m; p2->lchild=p2->rchild=NULL; p2->head=NULL; p1->rchild=p2; return; } } printf(“n[错误]未能成功增加车次%d,车次号 %d 已存在!”,m,m); } } TNODE *search(){ int key; TNODE *p; p=root; printf(“n输入您所要查找的车次编号:”); scanf(“%d”,&key); while(p!=NULL&&p->data!=key){ if(key data){p=p->lchild;} else if(key>p->data){p=p->rchild;} } if(p==NULL)printf(“n该车次不存在!”); return(p);} void del(){ int key; TNODE *p1,*p2,*p3,*temp; p1=p2=root; p3=temp=NULL; printf(“n请输入您想要取消的车次编号:”); scanf(“%d”,&key); while(p2!=NULL&&p2->data!=key){ if(key data){p1=p2;p2=p2->lchild;} else if(key>p2->data){p1=p2;p2=p1->rchild;} } if(p2==NULL){printf(“n[错误]该车次不存在!返回上级菜单n...”);return;} else if(p2->lchild==NULL&&p2->rchild==NULL) { if(p1->lchild==p2)p1->lchild=NULL; if(p1->rchild==p2)p1->rchild=NULL; temp=p2; if(root==p2){temp=root;root=NULL;} } else{ if(p2->rchild==NULL){ temp=p2->lchild; p2->data=temp->data; p2->lchild=temp->lchild; p2->rchild=temp->rchild; } else if(p2->lchild==NULL){ temp=p2->rchild; p2->data=temp->data; p2->lchild=temp->lchild; p2->rchild=temp->rchild; } else{ p3=p2; temp=p2->lchild; while(temp->rchild!=NULL){p3=temp;temp=temp->rchild;} p2->data=temp->data; if(p3==p2)p3->lchild=temp->lchild; else p3->rchild=temp->lchild; } } free(temp); printf(“车次 %d 已取消!nn”,key);} CNODE *insert_c(CNODE *head){ CNODE *k,*p; k=(CNODE *)malloc(sizeof(CNODE)); do{ printf(“n车票编号:”); scanf(“%d”,&k->no); p=search_c(head,k->no); if(p!=NULL)printf(“n[错误]该票已被购买!请重新选择!n”); }while(p!=NULL); printf(“购票者证件号:”); scanf(“%d”,&k->id); printf(“购票日期(格式:yy-mm-dd):”); scanf(“%d-%d-%d”,&k->date.x,&k->date.y,&k->date.z); k->next=head; head=k; return(head);} CNODE *insert_c_more(CNODE *head){ int n,i; printf(“n请输入批量新增售票记录数:”); fflush(stdin); scanf(“%d”,&n); for(i=0;i printf(“n售票记录更新成功!n”); return(head);} CNODE *search_c(CNODE *head,int id){ CNODE *temp,*s; s=temp=head; while(temp!=NULL&&temp->id!=id){s=temp;temp=temp->next;} print_c(temp); if(temp!=NULL)return(s); else return NULL;} void search_c_id(CNODE *head,int id){ CNODE *s,*head_s; s=head_s=NULL; if(head==NULL)printf(“无该证件号纪录!n”); while(head!=NULL){ if(head->id==id){ s=(CNODE *)malloc(sizeof(CNODE)); s->no=head->no;s->id=head->id;s->date=head->date; s->next=head_s;head_s=s; } head=head->next; } print_c_all(head_s); printf(“n”);} void search_c_id_all(TNODE *ptr,int id){ if(ptr!=NULL){ search_c_id_all(ptr->lchild,id); printf(“n车次:%dn”,ptr->data); search_c_id(ptr->head,id); search_c_id_all(ptr->rchild,id); } } void search_date(CNODE *head,TIME t){ CNODE *s,*head_s; s=head_s=NULL; while(head!=NULL){ if(t.x==head->date.x) if(t.y==head->date.y) if(t.z==head->date.z) { s=(CNODE *)malloc(sizeof(CNODE)); s->no=head->no;s->id=head->id;s->date=head->date; s->next=head_s;head_s=s; } head=head->next; } print_c_all(head_s); printf(“n”);} void search_date_all(TNODE *ptr,TIME t){ if(ptr!=NULL){ search_date_all(ptr->lchild,t); printf(“n车次:%dn”,ptr->data); search_date(ptr->head,t); search_date_all(ptr->rchild,t); } } CNODE *del_c(CNODE *head,CNODE *p){ CNODE *temp; if(p==NULL)printf(“[错误]该票未售出或为废票!返回上级菜单n...”); else if(p==head){head=NULL;free(p);} else{ temp=p->next; p->next=temp->next; free(temp); } return(head);} 系统需求分析报告 目录 目录.............................................................................................................I 1、项目描述...............................................................................................1 1.1 背景................................................................................................1 1.2研究意义........................................................................................1 2、需求分析...............................................................................................1 2.1功能需求分析................................................................................2 2.1.1 系统管理功能......................................................................2 2.1.2 流量劫持功能....................................................................2 2.2性能需求分析................................................................................2 I 1、项目描述 1.1 背景 随着网络的普及,网络业务应用向深度和广度不断发展,方便用户的同时,也因用户终端存在网络安全漏洞或用户网络安全意识的疏忽,使得网络上涉及如:电子商务、在线游戏、DNS授权服务、网银支付系统、社交网站、论坛、博客、门户网站等在线业务受到黑客及网络犯罪份子的攻击,对个人用户信息(网银、支付钱包账号密码等)的保密和对国家互联网信息管理与审计构成严重威胁。 1.2研究意义 本项目针对以上问题,主要利用了以下两种技术:僵尸网络反制技术及HTTP/HTTPS协议通信的监控技术。 网络攻击已严重威胁着网络的安全,及时的发现网络攻击并在必要的时候劫持与反制网络攻击,成为保障互联网正常运行、保障在线业务系统正常访问的重要方法。 2、需求分析 经过与项目委托方多次讨论,设计系统的目的是为实现对特定非法用户Web(HTTP/HTTPS协议)通信进行监控及反制,具体要求实现的功能有:监控系统远程控制、针对特定非法用户上网流量劫持、针对特定非法用户Web通信进行JS脚本注入、获取非法用户账号和密码、获取非法用户访问某些网站的Cookie。 第 1 页 2.1功能需求分析 根据监控系统的要求对系统的功能进行分析,明确了系统需要实现的功能。系统的功能结构模块:系统管理功能、流量劫持功能、监控与反制功能。 2.1.1 系统管理功能 系统管理模块主要负责系统登录、系统远程控制、黑名单库配置、数据存储和展示。数据展示包含数据存储和数据展示,数据存储负责接收后端和前端JS探针采集的数据并存储到数据库,数据展示负责提取数据库数据并显示。 2.1.2 流量劫持功能 本文流量劫持指DNS协议劫持,主要由四个部分组成:报文捕获、协议解析、IP及域名查找匹配、DNS协议欺骗。 2.2性能需求分析 1.DNS流量劫持成功率 为了达到项目委托单位的要求,需要对特定用户访问特定网站的流量进行准确监控,同时保证流量劫持的成功率(90%以上)。 2.监控与反制系统并发量 监控与反制系统服务器的并发性能直接决定同时能够监听的用户数。当被监控用户数过大,监控与反制系统并发处理能力到极大挑战。 3.系统运行稳定性 第 2 页 系统稳定性是系统最基本也是最重要的要求,运行稳定性关系到系统能否长时间稳定运行。系统的稳定性体现在:随着运行时间的增加,系统并不会出现内存泄露、甚至系统崩溃等情况。其中内存泄露可通过内存消耗、CPU使用率指标度量。 第 3 页第五篇:系统需求分析报告