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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

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

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

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

5、…………………………………………………5</p><p>  3.1總體設(shè)計…………………………………………………………………………5</p><p>  3.2接口設(shè)計…………………………………………………………………………7</p><p>  3.3數(shù)據(jù)結(jié)構(gòu)設(shè)計……………………………………………………………………8</p><p>  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

30、lt;p><b>  圖 4 :程序流圖</b></p><p><b>  3.2接口設(shè)計</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.內(nèi)部接口&

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

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

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

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

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

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

38、據(jù)字典</p><p><b>  2.物理結(jié)構(gòu)設(shè)計</b></p><p>  數(shù)據(jù)庫中各表的文件物理結(jié)構(gòu)采用順序的記錄文件。</p><p><b>  3.4運行設(shè)計</b></p><p><b>  1.運行模塊的命名</b></p><p>

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

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

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

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

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

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

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

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

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

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

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

50、的管理。</p><p>  4.2.1.1 模塊算法</p><p>  (1)對管理員和用戶的基本信息的添加</p><p>  class user *user::creat1(void)//構(gòu)建鏈表及用戶信息的添加</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結(jié)束):";</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結(jié)束):";</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)后可調(diào)用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)//把鏈表內(nèi)容存入到文件里</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> ?。?)對管理員和用戶基本信息的查詢</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、件里內(nèi)容</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>  (3)用戶的消費和須費</p><p>  void user::addmoney(class us

82、er *head1)//用戶須費函數(shù),執(zhí)行完此函數(shù)后再調(diào)用store_balance函數(shù),更新余額</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)//用戶消費函數(shù),執(zhí)行完此函數(shù)后

100、再調(diào)用store_balance函數(shù),更新余額</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.實現(xiàn)與調(diào)試分析</b></p><p><b>  5.1.實現(xiàn)環(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.調(diào)試分析</b></p><p>  程序總體運轉(zhuǎn)良好,不過因為涉及到文本文件的讀寫,路徑的確定與程序的正常運行直接相關(guān),因而程序在運行時可能會經(jīng)常遇見下圖問題:<

124、/p><p>  圖 6 :程序運行出錯圖</p><p>  經(jīng)過單步調(diào)試分析,可以清楚的看見文件存放的位置:</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>  此外,由于程序是采用鏈表式存儲結(jié)構(gòu),在空間的使用上需注意,編寫過程中會出現(xiàn)一些小問題,不過經(jīng)過調(diào)試都能正確的發(fā)現(xiàn)問題并解決。</p><p>

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

128、t; ?。?)程序界面如圖:</p><p><b>  圖8:程序主界面</b></p><p><b> ?。?)管理員界面</b></p><p>  圖9:管理員功能界面</p><p><b>  (3)記錄查詢:</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>  程序文件夾內(nèi)包括名為IC飯卡模擬系統(tǒng).exe的應(yīng)用程序和一個名為rjgc的文檔文件夾,使用時請先將整個文件夾放在電腦的D盤根目錄下,否者程序?qū)o法正常運行。</p><p>  程序啟動后對應(yīng)的有功能提示選項,用戶根據(jù)自己的身份選擇進入的模塊,然后在根據(jù)提示選擇相應(yīng)的功能選項即可實現(xiàn)相應(yīng)的功能,操作進行后程序會自動將數(shù)據(jù)保存到rjgc中的對應(yīng)的文件中。整個程

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

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

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

溫馨提示

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

評論

0/150

提交評論