ic飯卡模擬系統(tǒng)課程設計報告_第1頁
已閱讀1頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  摘 要</b></p><p>  通過軟件工程課程設計,鍛煉了對整個軟件開發(fā)過程的能力,能切實體會到軟件工程在實踐中的指導作用,并按軟件工程的要求完成規(guī)范的各項軟件開發(fā)文檔,為參加大型軟件開發(fā)項目打下堅實的理論基礎。</p><p>  IC飯卡模擬系統(tǒng)是一個完整的企業(yè)管理信息系統(tǒng),由多個模塊有機結合而成,包括增加管理員、增加用戶、

2、查詢管理員、查詢用戶、查詢用戶續(xù)費記錄、查詢用戶消費記錄、查余、須費、消費和退出軟件模塊。本系統(tǒng)能夠模擬學校食堂總管理系統(tǒng)及終端消費系統(tǒng),實現學校食堂IC飯卡的使用周期內的所有功能。所本設計是產品管理子系統(tǒng),說明傳統(tǒng)生命周期法在軟件開發(fā)中的應用,內容包括:需求分析、概要設計、詳細設計、實現與調試分析、測試分析,用戶手冊,最后是心得體會。</p><p>  關鍵詞:軟件工程; 管理系統(tǒng); 模塊;分析設計; &l

3、t;/p><p><b>  目 錄 </b></p><p><b>  1.引言1</b></p><p><b>  2.需求分析1</b></p><p><b>  2.1系統(tǒng)現狀1</b></p><p><

4、b>  2.2用戶需求2</b></p><p>  2.3系統(tǒng)功能需求2</p><p><b>  2.4數據描述4</b></p><p>  2.4 數據采集………………………………………………………………………………………5</p><p>  3 概要設計……………………………………

5、…………………………………………………5</p><p>  3.1總體設計…………………………………………………………………………5</p><p>  3.2接口設計…………………………………………………………………………7</p><p>  3.3數據結構設計……………………………………………………………………8</p><p>  

6、3.4運行設計…………………………………………………………………………9</p><p>  3.5出錯處理設計……………………………………………………………………9</p><p>  3.6安全設計………………………………………………………………………10</p><p>  3.7維護設計………………………………………………………………………10</p&

7、gt;<p>  4 詳細設計………………………………………………………………………………………10</p><p>  4.1程序設計說明……………………………………………………………………10</p><p>  4.2主要模塊內部設計………………………………………………………………13</p><p>  5 實驗于調試分析……………………………

8、…………………………………………………22</p><p>  5.1實現環(huán)境…………………………………………………………………………22</p><p>  5.2語言選擇…………………………………………………………………………22</p><p>  5.3調試分析…………………………………………………………………………22</p><p&g

9、t;  6 測試分析………………………………………………………………………………………24</p><p>  6.1測試用例…………………………………………………………………………24</p><p>  6.2測試結果…………………………………………………………………………24</p><p>  7 用戶手冊……………………………………………………………………

10、…………………27</p><p>  8 總結……………………………………………………………………………………………28</p><p>  參考文獻…………………………………………………………………………………………29</p><p><b>  1.引言</b></p><p>  隨著生產規(guī)模的擴大、自動化技術

11、的應用,以及市場經濟體系的培育,使得我校食堂管理的性質和環(huán)境都發(fā)生了巨大的變化。食堂的組織機構更加龐大,管理功能更為復雜,食堂及用戶之間的聯系越來越緊密,所采用的決策對總體運營的影響越來越復雜,因而管理決策問題不僅數量多,而且復雜程度高,難度大。管理信息系統(tǒng)在企業(yè)生產、管理中的應用越來越廣泛和重要,一套好的管理信息系統(tǒng)直接影響到企業(yè)的生存和發(fā)展。IC飯卡模擬系統(tǒng),就是針對學校食堂的管理實際開發(fā)的軟件系統(tǒng),以期對食堂的生產、管理等活動進行

12、科學、高效的管理。</p><p>  IC飯卡模擬系統(tǒng)是一個完整的管理信息系統(tǒng),由多個模塊有機結合而成,包括增加管理員、增加用戶、查詢管理員、查詢用戶、查詢用戶續(xù)費記錄、查詢用戶消費記錄、查余、須費、消費和退出等軟件模塊。本說明書介紹的是IC飯卡模擬系統(tǒng)中的管理子系統(tǒng)的開發(fā)過程。</p><p><b>  2.需求分析</b></p><p&g

13、t;<b>  2.1系統(tǒng)現狀</b></p><p>  通過對學校食堂進行深入的調查,我們發(fā)現原系統(tǒng)產品管理過程中主要存在以下幾方面的問題。1.由于沒有系統(tǒng)化的充值、消費記錄,食堂的資金管理很成問題,由于管理不規(guī)范,食堂的的收入和支出與統(tǒng)計值并不一致,非常不易于食糖的 管理和發(fā)展;2.由于由于沒有嚴格的資金管理規(guī)范,資金出現小額不明的現象,甚至被充值管理員私自帶走的現象發(fā)生;3.沒有定期

14、的充值、消費報表,食堂的運營領導人不能清晰的掌握具體的數據,不利于進一步的決策。這些問題或多或少地長期存在于食堂的管理過程中,直接影響食堂的效益和正常運行,是管理者們所面臨的棘手問題。隨著現代信息技術的發(fā)展,傳統(tǒng)的管理模式已經不適應現代管理的實際。必須通過建立現代的信息管理制度,采用現代管理手段參與管理,才可能通過各種措施降低成本,提高質量,使食堂能夠取得進一步的發(fā)展。</p><p><b>  2.

15、2用戶需求</b></p><p>  為了將資金管理納入規(guī)范化、現代化管理的軌道,針對食堂資金管理中存在的問題和管理的實際需要,我們將理順管理體制、建立各種管理規(guī)范與開發(fā)信息系統(tǒng)有機地結合起來。通過建立專門的資金管理系統(tǒng)來實施對食堂進行統(tǒng)一管理,要求成品管理子系統(tǒng)滿足以下幾個方面的要求:</p><p>  1.從根本上理順食堂管理體系,明晰管理員操作子系統(tǒng)和終端消費子系統(tǒng)各

16、模塊在系統(tǒng)中的功能; </p><p>  2.食堂管理要求按照現代管理的要求進行管理,從飯卡的申請建立、正常的消費使用、必要的充值記錄和最終的信息統(tǒng)計要求作到帳帳相符;</p><p>  4.規(guī)范資金管理過程的信息流。根據管理的實際需要規(guī)范充值記錄和消費記錄。通過資金管理子系統(tǒng)的開發(fā),實現對資金的動態(tài)管理,及時提供管理過程中所需的各種信息。</p><p>  

17、總之,希望通過系統(tǒng)的開發(fā),解決資金遺失、被盜、成本不實等內部管理中存在的問題。</p><p><b>  2.3系統(tǒng)功能需求</b></p><p>  1.待開發(fā)軟件的功能需求</p><p>  產成品管理信息系統(tǒng)必須能夠完成對公司產成品入庫、出庫數據的錄入、更新、統(tǒng)計、查詢、打印等工作,進行高效、準確的管理。產生以下信息:</p&

18、gt;<p> ?。?)產品須費記錄表:隨時(定期/不定期)報告飯卡充值情況;</p><p>  (2)產品消費記錄表:按要求定期/不定期報告飯卡使用消費情況;</p><p>  以上二表,滿足了食堂資金的籠集和使用等各方面管理的需要。</p><p>  2.待開發(fā)軟件的功能</p><p>  按照用戶需求,要滿足以上功

19、能,我們設計出了管理系統(tǒng)的結構。見圖1 。</p><p>  圖1 飯卡管理系統(tǒng)層次方框圖</p><p>  結合系統(tǒng)需求,對圖1所示的系統(tǒng)功能解釋如下:</p><p>  增加管理員:提供增設管理員的功能,在實際利于食堂的人事管理。</p><p>  增加用戶:提供增設用戶的功能,在實際使用中即飯卡的辦理功能。</p>

20、<p>  查詢管理員:提供管理員查詢功能,可對管理員的基本信息進行查詢。</p><p>  查詢用戶:提供用戶查詢功能,可對用戶的基本信息進行查詢,實際中可用于對掛失時的信息核對過程。</p><p>  查詢用戶須費記錄:提供即時生成須費記錄報表的功能,可供管理者隨時查閱。</p><p>  查詢用戶消費記錄:提供即時生成消費記錄報表的功能,可供

21、管理者隨時查閱。</p><p>  查余:提供給用戶的查詢余額的功能。</p><p>  須費:提供給用戶的飯卡充值功能,用戶通過管理員將實際的錢幣充值到系統(tǒng)的記錄中,以便正常的使用。</p><p>  消費:提供飯卡的最基本的正常消費使用功能,用戶通過扣除記錄中的數額購買飯菜。</p><p>  退出:提供系統(tǒng)的正常使用功能。<

22、;/p><p>  同時,通過分析,我們給出了飯卡管理系統(tǒng)的頂層數據流圖。見圖2。</p><p>  圖2 飯卡管理系統(tǒng)頂層數據流圖</p><p><b>  2.4數據描述</b></p><p>  1.靜態(tài)數據及其數據字典</p><p>  待開發(fā)軟件的功能已經用層次方框圖和頂層數據流圖表

23、示出來了,其中涉及到的靜態(tài)數據及其數據字典如下:</p><p>  表1 用戶須費記錄(或產成品臨時入庫單)</p><p>  表2 用戶消費記錄(或產成品臨時出庫單)</p><p><b>  2.動態(tài)數據</b></p><p>  輸入數據:菜單命令、查詢條件、統(tǒng)計條件、記錄等。</p><

24、;p>  輸出數據:查詢結果、統(tǒng)計結果、生成報表等。</p><p>  內部數據:操作所產生的中間數據。</p><p><b>  2.5數據采集</b></p><p>  通過鍵盤向軟件系統(tǒng)輸入數據。</p><p><b>  3 概要設計</b></p><p

25、>  本軟件將輔助管理人員完成全食堂產成品須費、消費等方面的管理,可以進行查詢、打印報表等工作,提高食堂對資金的管理效率。在分析階段,我們已經提出了系統(tǒng)的結構、頂層數據流圖和數據字典。本節(jié)我們將對系統(tǒng)的硬件環(huán)境作簡要介紹,并對待開發(fā)系統(tǒng)作概要設計。</p><p><b>  3.1總體設計</b></p><p><b>  1.處理流程</b

26、></p><p><b> ?。?)系統(tǒng)啟動。</b></p><p> ?。?)初始化系統(tǒng),讀入記錄。</p><p> ?。?)進入消息循環(huán)狀態(tài),通過事件驅動激活各模塊,執(zhí)行各任務。</p><p> ?。?)一任務執(zhí)行完畢后重新進入消息循環(huán)狀態(tài)。</p><p> ?。?)通過事件驅

27、動退出系統(tǒng)。</p><p>  2.系統(tǒng)總體結構和模塊設計。</p><p>  通過以上分析,我們進一步設計出了產成品管理系統(tǒng)的總體結構模塊圖(見圖3)。</p><p>  圖3 系統(tǒng)總體結構圖</p><p><b>  各模塊設計如下:</b></p><p>  表3 系統(tǒng)模塊結構表

28、</p><p>  各模塊功能分配如下:</p><p>  (1) 系統(tǒng)控制功能:初始化模塊(M1)、關閉系統(tǒng)模塊(M2)、系統(tǒng)功能模塊(M3)。</p><p>  (2) 數據維護功能:管理員數據添加模塊(M4.1)、出用戶數據添加模塊(M4.2)、消費管理模塊(M8)、須費管理模塊(M9)、用戶查余模塊(M11)。</p><p>

29、  (3) 查詢統(tǒng)計功能:管理員數據查詢模塊(M5.1)、用戶數據查詢模塊(M6.2)。</p><p>  (5) 打印功能:用戶須費報表打印模塊(M7.1)、用戶消費報表打印模塊(M7.2)。</p><p>  (6)數據情況統(tǒng)計功能:數據情況統(tǒng)計模塊(M6)。</p><p><b>  3.程序流圖:</b></p>&

30、lt;p><b>  圖 4 :程序流圖</b></p><p><b>  3.2接口設計</b></p><p><b>  1.外部接口</b></p><p><b>  (1) 用戶界面</b></p><p>  采用控制臺窗口界面。&l

31、t;/p><p><b>  (2) 軟件接口</b></p><p>  軟件運行于windows操作系統(tǒng)上。</p><p><b>  (3) 硬件接口</b></p><p>  運行于IBM PC386及兼容機以上。</p><p><b>  2.內部接口&

32、lt;/b></p><p>  (1) 初始化模塊(M1):系統(tǒng)初始時由操作系統(tǒng)調用,之后進入消息循環(huán)狀態(tài)。</p><p>  (2) 關閉系統(tǒng)模塊(M2):由系統(tǒng)功能模塊調用,之后退出系統(tǒng)。</p><p>  (3) 系統(tǒng)功能模塊(M3):接受各事件驅動消息,啟動管理員數據添加模塊、用戶數據添加模塊、消費管理模塊、須費管理模塊、用戶查余模塊等模塊。&l

33、t;/p><p>  (4) 管理員數據添加模塊(M4.1):由相應事件驅動消息激活,完成添加管理員基本信息功能,之后進入消息循環(huán)狀態(tài)。</p><p>  (5) 用戶數據添加模塊(M4.2):由相應事件驅動消息激活,完成添加用戶基本信息功能,之后進入消息循環(huán)狀態(tài)。</p><p>  (6) 管理員數據查詢模塊(M5.1):由相應事件驅動消息激活,完成管理員基本信息

34、查詢功能,之后進入消息循環(huán)狀態(tài)。</p><p>  (7) 用戶數據查詢模塊(M5.2):由相應事件驅動消息激活,完成用戶基本信息查詢功能,之后進入消息循環(huán)狀態(tài)。</p><p>  (8) 數據情況統(tǒng)計模塊(M6):由相應事件驅動消息激活,完成查詢統(tǒng)計入庫情況功能,之后進入消息循環(huán)狀態(tài)。</p><p>  (9) 用戶須費報表打印模塊(M7.1):由相應事件驅

35、動消息激活,完成打印用戶須費情況記錄功能,之后進入消息循環(huán)狀態(tài)。</p><p>  (10) 用戶消費報表打印模塊(M7.2):由相應事件驅動消息激活,完成打印用戶消費情況記錄功能,之后進入消息循環(huán)狀態(tài)。</p><p>  (11) 消費管理模塊(M8):由相應事件驅動消息激活,完成消費管理功能,之后進入消息循環(huán)狀態(tài)。</p><p>  (12) 須費管理模塊

36、(M9):由系統(tǒng)功能模塊調用,完成須費管理功能。</p><p>  (13) 系統(tǒng)啟動模塊(M10):由初始化模塊調用。</p><p>  (14) 用戶查余模塊(M11):由相應事件驅動消息激活,完成用戶查余功能,之后進入消息循環(huán)狀態(tài)。</p><p><b>  3.3數據結構設計</b></p><p><

37、;b>  1.邏輯結構設計</b></p><p>  在重新設計了用戶消費/須費情況記錄單,并對兩單的結構、所用數據類型、總長、數長、顯長等方面進行全面的分析后,我們設計出了系統(tǒng)所用到的數據庫的數據字典如下。</p><p>  表4 用戶消費情況記錄單(或產成品臨時入庫單)數據字典</p><p>  表5 產成品出庫單(或產成品臨時出庫單)數

38、據字典</p><p><b>  2.物理結構設計</b></p><p>  數據庫中各表的文件物理結構采用順序的記錄文件。</p><p><b>  3.4運行設計</b></p><p><b>  1.運行模塊的命名</b></p><p>

39、  模塊命名為Mx.y,x相同則為同一功能的模塊。</p><p><b>  2.運行模塊控制</b></p><p>  (1) 操作系統(tǒng)啟動M1。</p><p> ?。?) M1啟動M10。</p><p>  (3) M10啟動M3。</p><p> ?。?) 進入消息驅動狀態(tài),M3通

40、過事件驅動啟動相應的功能模塊,包括M9和M11。</p><p> ?。?) 在消息驅動狀態(tài)下,M3通過事件驅動啟動M2,退出系統(tǒng)。</p><p>  3.運行模塊時間響應</p><p>  各模塊運行時間控制在1至2秒內。</p><p><b>  3.5出錯處理設計</b></p><p&g

41、t;  1.系統(tǒng)應具有相當健壯性,避免或降低由系統(tǒng)錯誤所造成的數據庫損壞。</p><p>  2.對關鍵性操作,如查詢失敗等提供警告和確認機制。</p><p><b>  3.6安全設計</b></p><p>  系統(tǒng)提供嚴格的管理員身份驗證機制,在每個時間段的事物的記錄都有相應的記載,做到專人定時管理。</p><p

42、><b>  3.7維護設計</b></p><p>  系統(tǒng)嚴格按照設計規(guī)范進行設計,并保持各階段文檔的完整性,為以后對軟件的維護打好基礎。</p><p><b>  4 詳細設計</b></p><p>  在以上工作的基礎上,我們對有輸出要求的全部數據進行屬性分析、存儲分析、關聯分析、查詢統(tǒng)計分析、數據分類與

43、處理功能分析,進一步研究了整個系統(tǒng)的人—機接口,提出了系統(tǒng)細化后的數據流圖和系統(tǒng)的層次方框圖。見圖5、圖6。</p><p><b>  4.1程序設計說明</b></p><p><b>  1.模塊描述</b></p><p> ?。?)系統(tǒng)詳細功能模塊如圖7、圖8。</p><p> ?。?)

44、模塊設計如下:</p><p>  表6 產成品庫存數據數據字典</p><p><b> ?。?)功能分配:</b></p><p>  (1) 初始化模塊(M1):系統(tǒng)初始時由操作系統(tǒng)調用,之后進入消息循環(huán)狀態(tài)。</p><p>  (2) 關閉系統(tǒng)模塊(M2):由系統(tǒng)功能模塊調用,之后退出系統(tǒng)。</p>

45、<p>  (3) 系統(tǒng)功能模塊(M3):接受各事件驅動消息,啟動管理員數據添加模塊、用戶數據添加模塊、消費管理模塊、須費管理模塊、用戶查余模塊等模塊。</p><p>  (4) 管理員數據添加模塊(M4.1):由相應事件驅動消息激活,完成添加管理員基本信息功能,之后進入消息循環(huán)狀態(tài)。</p><p>  (5) 用戶數據添加模塊(M4.2):由相應事件驅動消息激活,完成添

46、加用戶基本信息功能,之后進入消息循環(huán)狀態(tài)。</p><p>  (6) 管理員數據查詢模塊(M5.1):由相應事件驅動消息激活,完成管理員基本信息查詢功能,之后進入消息循環(huán)狀態(tài)。</p><p>  (7) 用戶數據查詢模塊(M5.2):由相應事件驅動消息激活,完成用戶基本信息查詢功能,之后進入消息循環(huán)狀態(tài)。</p><p>  (8) 數據情況統(tǒng)計模塊(M6):由

47、相應事件驅動消息激活,完成查詢統(tǒng)計入庫情況功能,之后進入消息循環(huán)狀態(tài)。</p><p>  (9) 用戶須費報表打印模塊(M7.1):由相應事件驅動消息激活,完成打印用戶須費情況記錄功能,之后進入消息循環(huán)狀態(tài)。</p><p>  (10) 用戶消費報表打印模塊(M7.2):由相應事件驅動消息激活,完成打印用戶消費情況記錄功能,之后進入消息循環(huán)狀態(tài)。</p><p>

48、;  (11) 消費管理模塊(M8):由相應事件驅動消息激活,完成消費管理功能,之后進入消息循環(huán)狀態(tài)。</p><p>  (12) 須費管理模塊(M9):由系統(tǒng)功能模塊調用,完成須費管理功能。</p><p>  (13) 系統(tǒng)啟動模塊(M10):由初始化模塊調用。</p><p>  (14) 用戶查余模塊(M11):由相應事件驅動消息激活,完成用戶查余功能,之

49、后進入消息循環(huán)狀態(tài)。</p><p>  圖 5 :細化后的IC飯卡模擬系統(tǒng)數據流圖</p><p>  4.2主要模塊內部設計</p><p>  4.2.1模塊M3設計</p><p>  模塊M3的設計主要是實現飯卡信息管理的基本功能,包括對管理員和用戶的基本信息的查詢以及用戶的消費與須費功能。通過對每個功能模塊化設計,方便實現整個系統(tǒng)

50、的管理。</p><p>  4.2.1.1 模塊算法</p><p>  (1)對管理員和用戶的基本信息的添加</p><p>  class user *user::creat1(void)//構建鏈表及用戶信息的添加</p><p>  { class user *head1;</p><p>  class u

51、ser *p1,*p2;</p><p>  int n,bal=100;</p><p>  time_t it;</p><p>  struct tm *st;</p><p><b>  n=0;</b></p><p>  int m,b,h;</p><p> 

52、 ifstream calfile("d:rjgc\\calculate.txt",ios::in);</p><p>  if(!calfile) {system("cls");// 清屏</p><p>  cout<<"\n\n\n\n\n\n\n\n\n\t\t\t\tOpen for read error!"

53、;<<endl;</p><p><b>  getch();</b></p><p><b>  exit(1);}</b></p><p>  calfile>>m;</p><p>  calfile>>b;</p><p>  ca

54、lfile>>h;</p><p>  calfile.close();</p><p>  system("cls");// 清屏</p><p>  p1=p2=(class user *)malloc(LEN2);</p><p>  { cout<<"\n\n\t\t\t請輸入用

55、戶的工號(輸入0結束):";</p><p>  cin>>p1->no1;</p><p>  cout<<"\n\n\t\t\t請輸入用戶的姓名:";</p><p>  cin>>p1->name1;</p><p>  p1->balance=bal;

56、</p><p>  time(&it); </p><p>  st=localtime(&it);</p><p>  p1->year1=1900+st->tm_year;</p><p>  p1->mon1=1+st->tm_mon;</p><p>  p1->

57、;day1=st->tm_mday;</p><p>  p1->hour1=st->tm_hour;</p><p>  p1->min1=st->tm_min;</p><p>  p1->sec1=st->tm_sec;</p><p><b>  h++;</b><

58、/p><p><b>  }</b></p><p>  head1=NULL;</p><p>  while(p1->no1!=0)</p><p><b>  {n=n+1;</b></p><p>  if(n==1) head1=p1;</p>&l

59、t;p>  else p2->next=p1;</p><p><b>  p2=p1;</b></p><p>  p2->next=0;</p><p>  p1=(class user *)malloc(LEN2);</p><p>  { cout<<"\n\n\t\t\t

60、請輸入用戶的工號(輸入0結束):";</p><p>  cin>>p1->no1;</p><p>  if(p1->no1==0) goto hg;//如果輸入為0,就不再輸入個后面的了</p><p>  cout<<"\n\n\t\t\t請輸入用戶的姓名:";</p><p

61、>  cin>>p1->name1;</p><p>  p1->balance=bal;</p><p>  time(&it); </p><p>  st=localtime(&it);</p><p>  p1->year1=1900+st->tm_year;</p&g

62、t;<p>  p1->mon1=1+st->tm_mon;</p><p>  p1->day1=st->tm_mday;</p><p>  p1->hour1=st->tm_hour;</p><p>  p1->min1=st->tm_min;</p><p>  p1-&

63、gt;sec1=st->tm_sec;</p><p><b>  h++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  hg: p2->next=NULL;</p><p> 

64、 ofstream callfile("d:rjgc\\calculate.txt",ios::trunc);</p><p>  if(!callfile) {system("cls");// 清屏</p><p>  cout<<"\n\n\n\n\n\n\n\n\n\t\t\t\tOpen for write error

65、!"<<endl;</p><p><b>  getch();</b></p><p><b>  exit(1);}</b></p><p>  callfile<<m<<" ";</p><p>  callfile<&l

66、t;b<<" ";</p><p>  callfile<<h<<" ";</p><p>  callfile.close();</p><p>  return(head1);</p><p><b>  }</b></p>&

67、lt;p>  void admin::add1(class admin *head)//增加管理員到鏈表里,做成系統(tǒng)后可調用store把新信息存入文件</p><p>  { class admin *p0,*p1;</p><p>  system("cls");// 清屏</p><p>  p0=(class admin *)mal

68、loc(LEN1);</p><p>  cout<<"\n\n\t\t\t請輸入新增管理員的工號:";</p><p>  cin>>p0->no;</p><p>  cout<<"\n\n\t\t\t請輸入新增管理員的姓名:";</p><p>  cin

69、>>p0->name; </p><p><b>  p1=head;</b></p><p>  while(p1->next!=NULL)</p><p>  p1=p1->next;</p><p>  p1->next=p0;</p><p>  p0-

70、>next=NULL;</p><p><b>  }</b></p><p>  void admin::store(class admin *head)//把鏈表內容存入到文件里</p><p>  { class admin *p;</p><p>  ofstream jhfile("d:rjgc

71、\\admin.txt",ios::trunc);</p><p>  if(!jhfile) {system("cls");// 清屏</p><p>  cout<<"\n\n\n\n\n\n\n\n\n\t\t\t\tOpen for write error!"<<endl;</p><p

72、><b>  getch();</b></p><p>  exit(1); }</p><p><b>  p=head;</b></p><p><b>  do</b></p><p>  { jhfile<<p->no<<'

73、';</p><p>  jhfile<<p->name<<' ';</p><p>  p=p->next;</p><p>  }while(p!=NULL);</p><p>  jhfile<<'0';</p><p>  

74、jhfile.close();</p><p><b>  }</b></p><p>  (2)對管理員和用戶基本信息的查詢</p><p>  void admin::display1(class admin *head)//顯示鏈表管理員信息</p><p>  { class admin *p1;</p&g

75、t;<p><b>  p1=head;</b></p><p><b>  while(p1)</b></p><p>  { cout<<"管理員的工號:"<<p1->no<<endl;</p><p>  cout<<"

76、管理員的姓名:"<<p1->name<<endl;</p><p>  p1=p1->next;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void admin::display11()//顯示文

77、件里內容</p><p>  { int num;</p><p>  char nam[20];</p><p>  system("cls");// 清屏</p><p>  ifstream jhfile("d:rjgc\\admin.txt",ios::in);</p><

78、p>  if(!jhfile) {system("cls");// 清屏</p><p>  cout<<"\n\n\n\n\n\n\n\n\n\t\t\t\tOpen for read error!"<<endl;</p><p><b>  getch();</b></p>&l

79、t;p><b>  exit(1);}</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  jhfile>>num;</p><p>  if(num==0) goto dsd;</p>

80、<p>  jhfile>>nam;</p><p>  cout<<"\n\n\t\t\t工號:"<<num;</p><p>  cout<<" 姓名:"<<nam<<endl;</p><p>  }while(num!=NULL);&

81、lt;/p><p>  dsd: jhfile.close();</p><p><b>  getch();</b></p><p><b>  }</b></p><p> ?。?)用戶的消費和須費</p><p>  void user::addmoney(class us

82、er *head1)//用戶須費函數,執(zhí)行完此函數后再調用store_balance函數,更新余額</p><p>  { class user *p,*p1;</p><p>  int number,bal,k=0,m,n,h;</p><p>  time_t it;</p><p>  struct tm *st;</p>

83、<p>  system("cls");// 清屏</p><p>  cout<<"\n\n\t\t\t請輸入帳號:";</p><p>  cin>>number;</p><p><b>  p=head1;</b></p><p>&

84、lt;b>  do</b></p><p>  { if(p->no1==number) {cout<<"\n\n\t\t\t請輸入須費金額:";</p><p><b>  cin>>bal;</b></p><p>  p->balance=p->balance

85、+bal;</p><p><b>  p1=p;</b></p><p><b>  k=1;} </b></p><p>  p=p->next;</p><p>  }while(p!=NULL);</p><p>  if(k==0) {system("

86、;cls");// 清屏</p><p>  cout<<"\n\n\n\n\n\n\n\n\n\t\t\t\t對不起!該用戶不存在!"<<endl;</p><p><b>  getch();</b></p><p><b>  exit(1);}</b><

87、/p><p>  ifstream calfile("d:rjgc\\calculate.txt",ios::in);</p><p>  if(!calfile) {system("cls");// 清屏</p><p>  cout<<"\n\n\n\n\n\n\n\n\n\t\t\t\tOpen fo

88、r read error!"<<endl;</p><p><b>  getch();</b></p><p><b>  exit(1);}</b></p><p>  calfile>>m;</p><p>  calfile>>n;</p&

89、gt;<p>  calfile>>h;</p><p>  calfile.close();</p><p>  m=m+1;//用于指導讀記錄須費的文件</p><p>  ofstream usaddfile("d:rjgc\\useraddmoney.txt",ios::app);</p><

90、p>  if(!usaddfile) {system("cls");// 清屏</p><p>  cout<<"\n\n\n\n\n\n\n\n\n\t\t\t\tOpen for write error!"<<endl;</p><p><b>  getch();</b></p>

91、<p><b>  exit(1);}</b></p><p>  time(&it); //把續(xù)費的時間記錄下來</p><p>  st=localtime(&it);</p><p>  p1->year1=1900+st->tm_year;</p><p>  p1-&

92、gt;mon1=1+st->tm_mon;</p><p>  p1->day1=st->tm_mday;</p><p>  p1->hour1=st->tm_hour;</p><p>  p1->min1=st->tm_min;</p><p>  p1->sec1=st->tm_s

93、ec;</p><p>  { usaddfile<<p1->no1<<" "; </p><p>  usaddfile<<p1->name1<<" "; </p><p>  usaddfile<<p1->balance<<"

94、; "; </p><p>  usaddfile<<p1->year1<<" "; </p><p>  usaddfile<<p1->mon1<<" ";</p><p>  usaddfile<<p1->day1<<&qu

95、ot; ";</p><p>  usaddfile<<p1->hour1<<" ";</p><p>  usaddfile<<p1->min1<<" ";</p><p>  usaddfile<<p1->sec1<<&qu

96、ot; ";</p><p>  usaddfile<<bal<<" ";//只是記錄須費的金額和時間</p><p><b>  }</b></p><p>  usaddfile.close();</p><p>  ofstream callfile("

97、;d:rjgc\\calculate.txt",ios::trunc);</p><p>  if(!callfile) {system("cls");// 清屏</p><p>  cout<<"\n\n\n\n\n\n\n\n\n\t\t\t\tOpen for write error!"<<endl;<

98、/p><p><b>  getch();</b></p><p><b>  exit(1);}</b></p><p>  callfile<<m<<" ";</p><p>  callfile<<n<<" "

99、;</p><p>  callfile<<h<<" ";</p><p>  callfile.close();</p><p><b>  }</b></p><p>  void user::spend(class user *head1)//用戶消費函數,執(zhí)行完此函數后

100、再調用store_balance函數,更新余額</p><p>  { class user *p,*p1;</p><p>  int number,bal,k=0,m,n,h;</p><p>  time_t it;</p><p>  struct tm *st;</p><p>  system("

101、cls");// 清屏</p><p>  cout<<"\n\n\t\t\t請輸入帳號:";</p><p>  cin>>number;</p><p><b>  p=head1;</b></p><p><b>  do</b><

102、/p><p>  { if(p->no1==number) {cout<<"\n\n\t\t\t請輸入消費金額:";</p><p><b>  cin>>bal;</b></p><p>  p->balance=p->balance-bal;</p><p>

103、<b>  p1=p;</b></p><p><b>  k=1;} </b></p><p>  p=p->next;</p><p>  }while(p!=NULL);</p><p>  if(k==0) {system("cls");// 清屏</p&g

104、t;<p>  cout<<"\n\n\n\n\n\n\n\n\n\t\t\t\t對不起!該用戶不存在!"<<endl;</p><p><b>  getch();</b></p><p><b>  exit(1);}</b></p><p>  ifstrea

105、m calfile("d:rjgc\\calculate.txt",ios::in);</p><p>  if(!calfile) {system("cls");// 清屏</p><p>  cout<<"\n\n\n\n\n\n\n\n\n\t\t\t\tOpen for read error!"<<

106、;endl;</p><p><b>  getch();</b></p><p><b>  exit(1);}</b></p><p>  calfile>>m;</p><p>  calfile>>n;</p><p>  calfile>

107、;>h;</p><p>  calfile.close();</p><p>  n=n+1;//用于指導讀記錄消費的文件</p><p>  ofstream usspendfile("d:rjgc\\userspendmoney.txt",ios::app);</p><p>  if(!usspendfile

108、) {system("cls");// 清屏</p><p>  cout<<"\n\n\n\n\n\n\n\n\n\t\t\t\tOpen for write error!"<<endl;</p><p><b>  getch();</b></p><p><b>

109、  exit(1);}</b></p><p>  time(&it); //把消費的時間記錄下來</p><p>  st=localtime(&it);</p><p>  p1->year1=1900+st->tm_year;</p><p>  p1->mon1=1+st->tm_

110、mon;</p><p>  p1->day1=st->tm_mday;</p><p>  p1->hour1=st->tm_hour;</p><p>  p1->min1=st->tm_min;</p><p>  p1->sec1=st->tm_sec;</p><p

111、>  { usspendfile<<p1->no1<<" "; </p><p>  usspendfile<<p1->name1<<" "; </p><p>  usspendfile<<p1->balance<<" "; <

112、/p><p>  usspendfile<<p1->year1<<" "; </p><p>  usspendfile<<p1->mon1<<" ";</p><p>  usspendfile<<p1->day1<<" &quo

113、t;;</p><p>  usspendfile<<p1->hour1<<" ";</p><p>  usspendfile<<p1->min1<<" ";</p><p>  usspendfile<<p1->sec1<<"

114、; ";</p><p>  usspendfile<<bal<<" ";//只是記錄消費的金額和時間</p><p><b>  }</b></p><p>  usspendfile.close();</p><p>  ofstream callfile(&qu

115、ot;d:rjgc\\calculate.txt",ios::trunc);</p><p>  if(!callfile) {system("cls");// 清屏</p><p>  cout<<"\n\n\n\n\n\n\n\n\n\t\t\t\tOpen for write error!"<<endl;&l

116、t;/p><p><b>  getch();</b></p><p><b>  exit(1);}</b></p><p>  callfile<<m<<" ";</p><p>  callfile<<n<<" &quo

117、t;;</p><p>  callfile<<h<<" ";</p><p>  callfile.close();</p><p><b>  }</b></p><p>  void user::store_balance(class user *head1)</p

118、><p>  { class user *p;</p><p>  ofstream usfile("d:rjgc\\userbalance.txt",ios::trunc);</p><p>  if(!usfile) {system("cls");// 清屏</p><p>  cout<<

119、;"\n\n\n\n\n\n\n\n\n\t\t\t\tOpen for write error!"<<endl;</p><p><b>  getch();</b></p><p><b>  exit(1);}</b></p><p><b>  p=head1;</b

120、></p><p><b>  do</b></p><p>  { usfile<<p->no1<<" ";</p><p>  usfile<<p->name1<<" ";</p><p>  usfile<

121、;<p->balance<<" ";</p><p>  p=p->next;</p><p>  }while(p!=NULL);</p><p>  usfile<<'0';</p><p>  usfile.close();</p><p&

122、gt;<b>  }</b></p><p><b>  5.實現與調試分析</b></p><p><b>  5.1.實現環(huán)境</b></p><p>  以Microsoft VC++6.0為平臺編寫代碼</p><p>  用txt文檔存儲/提取信息和記錄報表</

123、p><p><b>  5.2.語言選擇</b></p><p>  計算機高級編譯語言:C++</p><p><b>  5.3.調試分析</b></p><p>  程序總體運轉良好,不過因為涉及到文本文件的讀寫,路徑的確定與程序的正常運行直接相關,因而程序在運行時可能會經常遇見下圖問題:<

124、/p><p>  圖 6 :程序運行出錯圖</p><p>  經過單步調試分析,可以清楚的看見文件存放的位置:</p><p>  ifstream jhfile("d:rjgc\\admin.txt",ios::in);</p><p>  if(!jhfile) {system("cls");//

125、清屏</p><p>  cout<<"\n\n\n\n\n\n\n\n\n\t\t\t\tOpen for read error!"<<endl;</p><p><b>  getch();</b></p><p><b>  exit(1);}</b></p>

126、<p>  由此可見,程序運行所需要的文檔是存放在電腦d盤根目錄下的rjgc文件夾中的,于是將此文件夾放入如圖所示位置,程序即可正常運行。</p><p>  圖7: 程序文件夾存放位置示意圖</p><p>  此外,由于程序是采用鏈表式存儲結構,在空間的使用上需注意,編寫過程中會出現一些小問題,不過經過調試都能正確的發(fā)現問題并解決。</p><p>

127、<b>  6.測試分析</b></p><p><b>  6.1.測試用例</b></p><p>  表 7 :管理員信息測試用例表</p><p>  表8 :用戶信息測試用例表</p><p><b>  6.2.測試結果</b></p><p&g

128、t; ?。?)程序界面如圖:</p><p><b>  圖8:程序主界面</b></p><p><b>  (2)管理員界面</b></p><p>  圖9:管理員功能界面</p><p><b> ?。?)記錄查詢:</b></p><p>  

129、圖10:須費記錄查詢界面</p><p><b>  (4)用戶界面</b></p><p>  圖11:用戶功能界面</p><p><b> ?。?)消費功能:</b></p><p>  圖12:消費功能界面</p><p><b>  7.用戶手冊</

130、b></p><p>  程序文件夾內包括名為IC飯卡模擬系統(tǒng).exe的應用程序和一個名為rjgc的文檔文件夾,使用時請先將整個文件夾放在電腦的D盤根目錄下,否者程序將無法正常運行。</p><p>  程序啟動后對應的有功能提示選項,用戶根據自己的身份選擇進入的模塊,然后在根據提示選擇相應的功能選項即可實現相應的功能,操作進行后程序會自動將數據保存到rjgc中的對應的文件中。整個程

131、序功能明確清晰,操作簡單,可用性較強。</p><p><b>  8.總結</b></p><p>  通過本次課程設計,本人掌握軟件工程的基本概念、基本原理、開發(fā)軟件項目的工程化的方法和技術及在開發(fā)過程中應遵循的流程、準則、標準和規(guī)范等;通過IC飯卡模擬子系統(tǒng)的設計,提高了對整個軟件開發(fā)過程的能力,讓能切實體會到軟件工程在實踐中的指導作用。通過課程設計,學會了按軟

132、件工程的要求完成規(guī)范的各項軟件開發(fā)文檔,對提高軟件開發(fā)能力和項目管理能力有重要的現實意義。</p><p>  在這次軟件工程的課程設計整個過程中,包括了需求分析、概要設計、詳細設計、實現與調試、測試、正式運行等階段,每個階段我都嚴格的按照軟件工程的思想進行操作,同時也在每個階段收獲了很多。通過此次軟件工程課程設計,讓我了解到其實代碼的編寫在整個軟件開發(fā)過程中所占的比重并不重要,軟件開發(fā)的思想中心在工程項目上,良

133、好的軟件設計習慣可以大大提高整個過程的效率。因此在今后的學習過程中,隨著眼界思路的打開,我會努力的朝著更廣闊的方向發(fā)展自己,并不再把思路局限于程序的編寫上,以便收獲更多。</p><p><b>  參考文獻 </b></p><p>  [1] 張海藩. 軟件工程導論,清華大學出版社,2004</p><p>  [2] 陳明. 實用軟件工程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論