第一篇:火車票售票系統 需求分析報告
三、需求規格說明書
三、需求規格說明書
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 頁第五篇:系統需求分析報告