版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課 程 設(shè) 計(jì) 報(bào) 告課程名稱(chēng) 面向?qū)ο蟪绦蛟O(shè)計(jì) 課題名稱(chēng) 圖書(shū)管理系統(tǒng) 專(zhuān) 業(yè) 計(jì)算機(jī)科學(xué)與計(jì)術(shù) 班 級(jí) 計(jì)算機(jī)1001 學(xué) 號(hào) 姓 名 指導(dǎo)教師 2011年 12 月 28 日湖南工程學(xué)院課 程 設(shè) 計(jì) 任 務(wù) 書(shū)課程名稱(chēng) 面向?qū)ο蟪绦蛟O(shè)計(jì) 課 題 圖書(shū)管理系統(tǒng) 專(zhuān)業(yè)班級(jí) 計(jì)算機(jī)1001 學(xué)生姓名 學(xué) 號(hào) 指導(dǎo)老師 審 批 任務(wù)書(shū)下達(dá)日期 2011 年 11 月 15 日任務(wù)完成日期 2011 年 12 月 28 日一、設(shè)計(jì)內(nèi)容與設(shè)計(jì)要求1.課程設(shè)計(jì)目的:面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)是集中實(shí)踐性環(huán)節(jié)之一,是學(xué)習(xí)完面向?qū)ο蟪绦蛟O(shè)計(jì)課程后進(jìn)行的一次全面的綜合練習(xí)。要求學(xué)生達(dá)到熟練掌握c+語(yǔ)言的基本
2、知識(shí)和技能;基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的思想和方法;能夠利用所學(xué)的基本知識(shí)和技能,解決簡(jiǎn)單的面向?qū)ο蟪绦蛟O(shè)計(jì)問(wèn)題,從而提高動(dòng)手編程解決實(shí)際問(wèn)題的能力。2.課題題目1)公司庫(kù)存管理系統(tǒng)2)高校學(xué)籍管理系統(tǒng)3)高校工資管理系統(tǒng)4)高校人事管理系統(tǒng)5)通訊錄程序設(shè)計(jì)6)學(xué)生成績(jī)管理系統(tǒng)7) 圖書(shū)管理系統(tǒng)8)文本編輯器的設(shè)計(jì)與實(shí)現(xiàn)9)學(xué)生考勤管理系統(tǒng)10)公司人員管理系統(tǒng)3設(shè)計(jì)要求: 設(shè)計(jì)課題題目:每位同學(xué)根據(jù)自己學(xué)號(hào)除以10所得的余數(shù)加1選擇相應(yīng)題號(hào)的課題。隨意換題者不記成績(jī)。 根據(jù)自己對(duì)應(yīng)的課題完成以下主要工作:完成系統(tǒng)需求分析:包括系統(tǒng)設(shè)計(jì)目的與意義;系統(tǒng)功能需求(系統(tǒng)流程圖);輸入輸出的要求。完
3、成系統(tǒng)總體設(shè)計(jì):包括系統(tǒng)功能分析;系統(tǒng)功能模塊劃分與設(shè)計(jì)(系統(tǒng)功能模塊圖)。完成系統(tǒng)詳細(xì)設(shè)計(jì):包括數(shù)據(jù)庫(kù)需求分析;數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)(er圖);數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì);類(lèi)層次圖;界面設(shè)計(jì)與各功能模塊實(shí)現(xiàn)。系統(tǒng)調(diào)試:調(diào)試出現(xiàn)的主要問(wèn)題,編譯語(yǔ)法錯(cuò)誤及修改,重點(diǎn)是運(yùn)行邏輯問(wèn)題修改和調(diào)整。使用說(shuō)明書(shū)及編程體會(huì):說(shuō)明如何使用你編寫(xiě)的程序,詳細(xì)列出每一步的操作步驟。關(guān)鍵源程序(帶注釋?zhuān)?按規(guī)定格式完成課程設(shè)計(jì)報(bào)告,將其打印稿(a4紙)上交給老師存檔。 不得抄襲他人程序、課程設(shè)計(jì)報(bào)告,每個(gè)人應(yīng)體現(xiàn)自己的個(gè)性設(shè)計(jì)。二、進(jìn)度安排第 17 周 星期一 8:0012:00 星期二 8:0012:00 星期四 8:00
4、12:00第 18 周 星期一 8:0012:00 星期二 14:3018:30 星期三 8:0012:00三、參考書(shū)籍1.c程序設(shè)計(jì)課程設(shè)計(jì) 劉振安編著 tp312c5632.c+ builder和delphi課程設(shè)計(jì)與系統(tǒng)開(kāi)發(fā)案例 伍俊良 清華大學(xué)出版社 7-302-06072-x 3.visual c+課程設(shè)計(jì)案例精編 嚴(yán)華峰 中國(guó)水利水電出版社 7-5084-2007-1 2004 4.visual c+課程設(shè)計(jì)與系統(tǒng)開(kāi)發(fā)案例 伍俊良 清華大學(xué)出版社 7-302-05968-3 20025.visual c+語(yǔ)言課程設(shè)計(jì) : 案例精選與編程指導(dǎo) 陳清華朱紅 東南大學(xué)出版社 7-8108
5、9-275-4 2003 6.visualc+課程設(shè)計(jì)案例精編 中國(guó)水利水電出版社 7-5084-1004-1 2002 7.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)案例精編 : 用c/c+描述 李建學(xué)李光元吳春芳 清華大學(xué)出版社 7-302-14536-9 2007 (編程平臺(tái)不限,vc+, c+ builder等等。)課題7:圖書(shū)管理系統(tǒng)(一)、課程設(shè)計(jì)題目:圖書(shū)管理系統(tǒng)(二)、目的與要求: 1、目的: (1)要求學(xué)生達(dá)到熟練掌握c+語(yǔ)言的基本知識(shí)和技能; (2)基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思路和方法; (3)能夠利用所學(xué)的基本知識(shí)和技能,解決簡(jiǎn)單的面向?qū)ο蟪绦蛟O(shè)計(jì)問(wèn)題。 2、基本要求: (1)要求利用面向?qū)ο?/p>
6、的方法以及c+的編程思想來(lái)完成系統(tǒng)的設(shè)計(jì); (2)要求在設(shè)計(jì)的過(guò)程中,建立清晰的類(lèi)層次; (3)在系統(tǒng)中至少要定義四個(gè)類(lèi),每個(gè)類(lèi)中要有各自的屬性和方法; (4)在系統(tǒng)的設(shè)計(jì)中,至少要用到面向?qū)ο蟮囊环N機(jī)制。 3、創(chuàng)新要求: 在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì),如根據(jù)查找結(jié)果進(jìn)行修改的功能。 4、寫(xiě)出設(shè)計(jì)說(shuō)明書(shū) (三)、設(shè)計(jì)方法和基本原理: 1、問(wèn)題描述(功能要求): 在圖書(shū)管理系統(tǒng)中,要為每個(gè)借閱者建立一個(gè)賬戶(hù),并給借閱者發(fā)放借閱卡(借閱卡可以提供借閱卡號(hào)、借閱者名),賬戶(hù)中存儲(chǔ)借閱者的個(gè)人信息、借閱信息以及預(yù)定信息。持有借閱卡的借閱者可以借閱書(shū)刊、返還書(shū)刊、查詢(xún)書(shū)刊信息、預(yù)定書(shū)刊并取消預(yù)定,但
7、這些操作都是通過(guò)圖書(shū)管理員進(jìn)行的,也即借閱者不直接與系統(tǒng)交互,而是圖書(shū)管理員充當(dāng)借閱者的代理與系統(tǒng)交互。在借閱書(shū)刊時(shí),需要輸入所借閱的書(shū)刊名,書(shū)刊的isbn/issn號(hào),然后輸入借閱者的圖書(shū)卡號(hào)和借閱者名,完成后提交所填表格,系統(tǒng)驗(yàn)證借閱者是否有效(在系統(tǒng)中存在賬戶(hù)),若有效,借閱請(qǐng)求被接受,系統(tǒng)查詢(xún)數(shù)據(jù)庫(kù)系統(tǒng),看借閱者所借閱的書(shū)刊是否存在,若存在,則借閱者可借出書(shū)刊,建立并在系統(tǒng)中存儲(chǔ)借閱記錄。借閱者還書(shū)后,刪除關(guān)于所還書(shū)刊的借閱記錄。如果借閱者所借的書(shū)刊已被借出,借閱者還可預(yù)定該書(shū)刊,一旦借閱者預(yù)定的書(shū)刊可以獲得,就將書(shū)刊直接寄給預(yù)定人(為了簡(jiǎn)化系統(tǒng),預(yù)定書(shū)刊可獲得時(shí)就不通知借閱者了)。另
8、外,為了簡(jiǎn)化系統(tǒng),也不考慮書(shū)刊的最長(zhǎng)借閱期限,假設(shè)借閱者可以無(wú)限期地保存所借閱的書(shū)刊。2、問(wèn)題的解決方案: 根據(jù)系統(tǒng)功能要求,可以將問(wèn)題解決分為以下步驟: (1)應(yīng)用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以及界面的組織和設(shè)計(jì);(2)分析系統(tǒng)中的各個(gè)實(shí)體及它們之間的關(guān)系包括屬性和行為; (3)根據(jù)問(wèn)題描述,設(shè)計(jì)系統(tǒng)的類(lèi)層次; (4)完成類(lèi)層次中各個(gè)類(lèi)的描述(包括屬性和方法); (5)完成類(lèi)中各個(gè)成員函數(shù)的定義; (6)完成系統(tǒng)的應(yīng)用模塊; (7)功能調(diào)試; (8)完成系統(tǒng)總結(jié)報(bào)告以及系統(tǒng)使用說(shuō)明書(shū)目 錄1. 系統(tǒng)需求分析12. 總體設(shè)計(jì)23. 詳細(xì)設(shè)計(jì)34. 系統(tǒng)調(diào)試105. 結(jié)果分析126. 總結(jié)
9、137. 附件141. 系統(tǒng)需求分析1. 系統(tǒng)設(shè)計(jì)目的與意義 設(shè)計(jì)該圖書(shū)管理系統(tǒng),要求學(xué)生達(dá)到熟練掌握c+語(yǔ)言的基本知識(shí)和技能,能夠基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思路和方法,能夠利用所學(xué)的基本知識(shí)和技能解決簡(jiǎn)單的面向?qū)ο蟪绦蛟O(shè)計(jì)的問(wèn)題。另外,通過(guò)該課程設(shè)計(jì)的實(shí)踐,來(lái)提高學(xué)生動(dòng)手編程解決實(shí)際問(wèn)題的能力,加深對(duì)c+語(yǔ)言及解決問(wèn)題方法的理解,為以后的學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。2. 系統(tǒng)功能需求分析由對(duì)圖書(shū)管理系統(tǒng)的問(wèn)題描述可知,該系統(tǒng)主要功能應(yīng)該包括借閱書(shū)刊,歸還書(shū)刊,取消書(shū)刊預(yù)約信息,錄入書(shū)刊,顯示用戶(hù)信息,查詢(xún)書(shū)刊信息,退出系統(tǒng)等功能。同時(shí),在借閱書(shū)刊和顯示用戶(hù)信息的功能中還應(yīng)有有注冊(cè)用戶(hù)信息的功能。
10、如果用戶(hù)在借閱書(shū)刊和顯示用戶(hù)信息的的時(shí)候,若用戶(hù)數(shù)據(jù)庫(kù)中沒(méi)有該用戶(hù),則提示用戶(hù)是否注冊(cè)用戶(hù)信息。并且,在借閱書(shū)刊時(shí),若該書(shū)刊已借,用戶(hù)可以預(yù)約該書(shū)刊。另外,在歸還書(shū)刊的功能中,應(yīng)該有預(yù)約該書(shū)刊的用戶(hù)可依預(yù)約時(shí)間的先后來(lái)獲得該書(shū)刊。在進(jìn)入取消書(shū)刊預(yù)約信息的時(shí)候,應(yīng)該根據(jù)用戶(hù)輸入的基本信息(借閱名,借閱卡號(hào))首先來(lái)顯示用戶(hù)基本信息,再根據(jù)基本信息是否來(lái)進(jìn)行取消已預(yù)約書(shū)刊記錄信息的功能。依以上對(duì)系統(tǒng)所需功能的分析,為了實(shí)現(xiàn)上述的各個(gè)功能,首先應(yīng)該要建立合適的數(shù)據(jù)結(jié)構(gòu),為實(shí)現(xiàn)以上各個(gè)功能的基本運(yùn)算而進(jìn)行合理的數(shù)據(jù)存儲(chǔ)及組織。顯然,在該系統(tǒng)中的基本運(yùn)算主要是數(shù)據(jù)元素的查找、刪除、插入等。數(shù)據(jù)元素應(yīng)該是賬
11、戶(hù)信息,賬戶(hù)信息內(nèi)又包括用戶(hù)的個(gè)人基本信息、借閱信息、以及預(yù)約信息。另外,為了能夠借閱書(shū)刊以及查詢(xún)書(shū)刊信息,應(yīng)該還要建立對(duì)圖書(shū)信息的存儲(chǔ)和組織的數(shù)據(jù)結(jié)構(gòu),在該數(shù)據(jù)結(jié)構(gòu)中,圖書(shū)信息即為該數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)元素。以下對(duì)數(shù)據(jù)元素進(jìn)行詳細(xì)的分析。對(duì)于賬戶(hù)信息,其包括個(gè)人信息、借閱信息、以及預(yù)約信息。這些信息可以定義類(lèi)來(lái)實(shí)現(xiàn),并把個(gè)人信息類(lèi)、借閱信息類(lèi)、預(yù)約信息類(lèi)嵌套在賬戶(hù)信息類(lèi)里,作為它的私有成員;對(duì)于圖書(shū)信息,則可定義圖書(shū)信息類(lèi)。賬戶(hù)信息和圖書(shū)信息僅僅只是針對(duì)單一對(duì)象的信息,如要存儲(chǔ)多個(gè)這樣對(duì)象的信息,則必須構(gòu)建一個(gè)合適的數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)和組織這些信息。由系統(tǒng)功能可知,應(yīng)該選用鏈表來(lái)存儲(chǔ)賬戶(hù)信息和圖書(shū)信息
12、比較合適。所以可以定義鏈表類(lèi)來(lái)對(duì)賬戶(hù)信息和圖書(shū)信息進(jìn)行存儲(chǔ)和組織。另外,某一個(gè)用戶(hù)借閱或預(yù)約的書(shū)刊可能有多本,故也可以定義鏈表類(lèi)來(lái)存儲(chǔ)和組織這些信息,在把鏈表類(lèi)嵌套到賬戶(hù)類(lèi)里。2. 總體設(shè)計(jì)1.系統(tǒng)功能分析 該系統(tǒng)主要功能包括借閱書(shū)刊、歸還書(shū)刊、取消書(shū)刊預(yù)約信息、錄入書(shū)刊,顯示用戶(hù)信息、查詢(xún)書(shū)刊信息、退出系統(tǒng)等。進(jìn)入該系統(tǒng)后,便出現(xiàn)選擇這些功能的菜單,可依選擇項(xiàng)進(jìn)入相應(yīng)的功能模塊。執(zhí)行某一功能(除了退出系統(tǒng))后又可返回功能選項(xiàng)菜單界面。所以在主函數(shù)中需要采用函數(shù)嵌套。 依系統(tǒng)功能分析有:功能模塊流程圖如下: 開(kāi)始 進(jìn)入圖書(shū)管理系統(tǒng)查詢(xún)書(shū)刊取消預(yù)約信息顯示用戶(hù)信息退出系統(tǒng)記錄書(shū)刊信息歸還書(shū)刊借閱
13、書(shū)刊 結(jié)束 圖7.1系統(tǒng)功能模塊流程圖 2.系統(tǒng)功能模塊劃分與設(shè)計(jì) 以下對(duì)各功能模塊進(jìn)行分析與設(shè)計(jì): (1)借閱書(shū)刊功能 首先輸入書(shū)刊名、書(shū)刊的isbn/issn號(hào)、借閱者名、借閱卡號(hào)。然后依借閱者名及借閱卡號(hào)在賬戶(hù)類(lèi)鏈表中查找該用戶(hù)是否存在。若不存在,則返回到注冊(cè)賬號(hào)。反之,則依isbn/issn號(hào)在圖書(shū)類(lèi)中查找并判斷該書(shū)是否已借閱。(書(shū)刊是否被借閱,可以在圖書(shū)類(lèi)中定義某一變量進(jìn)行標(biāo)記,以此來(lái)判斷該書(shū)刊是否被借閱)若借閱,用戶(hù)則可預(yù)約該書(shū)刊或結(jié)束借閱書(shū)刊功能,借閱書(shū)刊失敗。反之則借閱書(shū)刊成功,并作相應(yīng)的數(shù)據(jù)記錄。另外,在預(yù)約書(shū)刊后,若預(yù)約的書(shū)刊被歸還,則立即寄給預(yù)約人,并作相應(yīng)的數(shù)據(jù)記錄。(
14、若有多人預(yù)約同一本書(shū),應(yīng)按預(yù)約時(shí)間的先后,來(lái)確定寄給書(shū)刊的預(yù)定人)。 (2)歸還書(shū)刊功能 首先輸入用戶(hù)名及借閱卡號(hào),并依次在賬戶(hù)類(lèi)鏈表中查找到該賬戶(hù)。若未查找則提示用戶(hù)可能輸入信息錯(cuò)誤并要求重新輸入。若查找到,則輸入書(shū)刊名及書(shū)刊isnb/issn號(hào),并由此在圖書(shū)類(lèi)鏈表中查找該書(shū)刊是否存在,若未查找到則提示書(shū)刊信息輸入錯(cuò)誤并要求重新輸入。若書(shū)刊存在,則輸出歸還書(shū)刊成功,并作相應(yīng)的數(shù)據(jù)記錄。同時(shí),還要在賬戶(hù)類(lèi)鏈表中查找已預(yù)約該書(shū)刊的用戶(hù),并找到最早預(yù)約該書(shū)刊的用戶(hù),將書(shū)刊寄送給該用戶(hù),并對(duì)該用戶(hù)信息做相關(guān)的記錄。 (3)查詢(xún)書(shū)刊功能 查詢(xún)書(shū)刊應(yīng)根據(jù)書(shū)刊名在圖書(shū)類(lèi)鏈表中來(lái)查找該書(shū)刊。查找方法應(yīng)該為順
15、序查找。若圖書(shū)類(lèi)鏈表中無(wú)要查找的書(shū)刊,則輸出圖書(shū)館內(nèi)無(wú)該書(shū);反之,則輸出該書(shū)的基本信息,基本信息包括:書(shū)名、isnb/issn號(hào)、價(jià)格、是否借閱等信息。有時(shí)同名書(shū)刊不只一本,故每查找到一本該書(shū)刊則顯示該書(shū)刊信息,直至遍歷整個(gè)圖書(shū)類(lèi)鏈表。書(shū)刊是否被借閱可設(shè)定一變量來(lái)表記。 (4)取消書(shū)刊預(yù)約功能 首先輸入借閱者名及借閱卡號(hào),并依此在賬戶(hù)類(lèi)鏈表中查找該用戶(hù)是否存在。若未查到,則提示用戶(hù)可能輸入信息錯(cuò)誤并要求重新輸入。若查到則顯示用戶(hù)信息,并依此是否進(jìn)行書(shū)刊預(yù)約功能。若進(jìn)行,則輸入書(shū)刊名及書(shū)刊isnb/issn號(hào),并在圖書(shū)類(lèi)鏈表內(nèi)驗(yàn)證輸入信息是否正確。 (5)顯示用戶(hù)信息功能 首先輸入借閱者名及借閱
16、卡號(hào),并依此在賬戶(hù)類(lèi)鏈表里查找該用戶(hù)是否存在。若未查找的到,則提示用戶(hù)可能輸入信息有誤或該用戶(hù)未注冊(cè)。反之則顯示該用戶(hù)信息。 (6)錄入書(shū)刊信息功能 錄入書(shū)刊信息,首先要錄入書(shū)刊的數(shù)量,然后依次輸入書(shū)刊名、書(shū)刊isnb/issn號(hào)、書(shū)刊定價(jià)。這樣即可錄入書(shū)刊信息。3. 詳細(xì)設(shè)計(jì)1.數(shù)據(jù)類(lèi)型及類(lèi)層次圖 該系統(tǒng)所需數(shù)據(jù)類(lèi)型主要為字符數(shù)組類(lèi)型,即用字符串類(lèi)型來(lái)定義數(shù)據(jù)。用字符串定義數(shù)據(jù)可用string類(lèi)代替,定義成string類(lèi)型的數(shù)據(jù),對(duì)字符的操作更簡(jiǎn)單。在輸入string類(lèi)數(shù)據(jù)時(shí),用輸入流中的操作符來(lái)輸入字符串,這樣需特別注意在輸入某一字符串時(shí),其間不能輸入空格,否則該輸入的字符將會(huì)轉(zhuǎn)到下個(gè)將要
17、輸入的字符串變量,使輸入變得混亂。這是由于輸入流操作符在輸入數(shù)據(jù)時(shí),若遇到空格,則表示該輸入已結(jié)束。 該系統(tǒng)中定義的類(lèi)包括:日期類(lèi)、個(gè)人信息類(lèi)、借閱書(shū)刊信息類(lèi)、預(yù)約書(shū)刊信息類(lèi)、賬戶(hù)信息類(lèi)、圖書(shū)類(lèi)、借閱和預(yù)約、賬戶(hù)、圖書(shū)信息鏈表類(lèi)。其類(lèi)uml圖及類(lèi)層次圖如下所示: (1)日期類(lèi) date-year:int-month:int-day:int+date(y:int=0,m:int=0,d:int=0)+date(d:const date&)+getyear():int+getmonth():int+getday():int+dashow():void+dainput():date 圖7.2date
18、類(lèi)的uml圖 (2)個(gè)人信息類(lèi) unitinfo-name:string-reid:string-id:string-sex:string-d:date+unitinfo(n:string,re: string,id:string,s:string,d:date)+unitinfo()+unitinfo(u:const unitinfo&)+getname():string+getreid():string+unshow():void+uninput():unitinfo 圖7.3unitinfo類(lèi)的uml圖 (3)借閱信息類(lèi) lendinfo-bookname:string-isbn:str
19、ing-d:date-next:lendinfo*+lendinfo(n:string,isbn:string,d:date)+lendinfo()+lendinfo(l:const lendinfo&)+getinsb():string+getnext():lendinfo*+setnext(l:lendinfo*):void+leshow():void+leinput():lendinfo 圖7.4lendinfo類(lèi)的uml圖 (4)借閱信息鏈表類(lèi) lelist-front:lendinfo*-rear:lendinfo*-size:int+lelist()+insertrear(item
20、:const lendinfo&):void+seeklist(insb:const string):lendinfo*+deletecurr(insb:const string):bool+leshow():void 圖7.5lelist類(lèi)的uml圖 (5)預(yù)約信息類(lèi) trothinfo-bookname:string-isbn:string-d:date-next:trothinfo*+trothinfo(n:string,insb:string,d:date)+trothinfo()+trothinfo(t:const trothinfo&)+getinsb():string+setne
21、xt(t:trothinfo*):void+getnext():trothinfo*+trshow():void+trinput():trothinfo+getdate():date 圖7.6trothinfo類(lèi)的uml圖 (6)預(yù)約信息鏈表類(lèi) trlist-front:trothinfo*-rear:trothinfo*-size:int+trlist()+insertrear(itme:const trothinfo&):void+seeklist(insb:const string&):trothinfo*+deletecurr(insb:const string&):bool+trsh
22、ow():void+gettldate(insb:const string&):date 圖7.7trlist類(lèi)的uml圖 (7)賬戶(hù)類(lèi) account-u:unit-l:lelist-t:trlist-next:account*+account(u:unit,l:lelist,t:trlist)+account()+auinput():void+alinput(l:const lendinfo&):void+atinput(t:const trothinfo&):void+deleteleinfo(isnb:const string&):bool+deletetrinfo(isnb:cons
23、t string&):bool+acshow():void+acname():string+acreid():string+getnext():account*+setnext(a:account*):void+gettrdate(isnb:const string&):date+seektr(isnb:const string&):bool 圖7.8account類(lèi)的uml圖 (8)賬戶(hù)鏈表類(lèi) aclist-frist:account*-last:account*-size:int+aclist()+aclist()+getfront():account*+getlast():account
24、*+seekalist(n:const string,id:const string):account*+seekactr(isnb:const string &):account*+insertlast(item:const string &):void+comparetime(d1:date&,d2:date&):bool 圖7.9aclist類(lèi)的uml圖 (9)圖書(shū)類(lèi) library-bookname:string-insb:string-pointer:bool-prices:float-next:library*+library(n:string,insb:string,prices
25、:string)+library()+library(li:const library&)+liinput():library+lishow():void+getpointer():bool+getnext():library*+getbookname():string+getissn():string+setnext(li:library*):void+setpointer(t:const bool):void 圖7.10library類(lèi)的uml圖 (10)圖書(shū)鏈表類(lèi) lilist-front:library*-last:library*-size:int+lilist()+instrela
26、st(li:const library):void+getfront():library*+liseek(name:const string,insb:const string):library*+liseek(name:const string):void 圖7.11lilist類(lèi)的uml圖 aclist account trlist lelist unitinfo trothinfo lendinfo date library lilist 圖7.12圖書(shū)管理系統(tǒng)程序的uml圖4. 系統(tǒng)調(diào)試 在調(diào)試過(guò)程中出現(xiàn)了許多錯(cuò)誤,并經(jīng)過(guò)一系列分析后,終于把錯(cuò)誤改正。程序錯(cuò)誤主要出現(xiàn)在邏輯上。編譯無(wú)語(yǔ)
27、法錯(cuò)誤,而在運(yùn)行時(shí)出現(xiàn)異常,是程序不能繼續(xù)運(yùn)行下去,這是常見(jiàn)且難以解決的錯(cuò)誤,需要不斷的實(shí)踐且總結(jié)經(jīng)驗(yàn)。在該整個(gè)程序中,主要出現(xiàn)的錯(cuò)誤主要表現(xiàn)在指針?lè)矫?。尤其是?duì)鏈表中的結(jié)點(diǎn)的一系列的刪除操作中,結(jié)點(diǎn)的指針數(shù)據(jù)成員的指向確定非常重要,在鏈表的刪除中,若鏈表未定義頭結(jié)點(diǎn),則需分刪除鏈表第一個(gè)結(jié)點(diǎn)和不是第一個(gè)結(jié)點(diǎn)這兩種情形進(jìn)行編程。另外,對(duì)于數(shù)據(jù)成員的輸入,需要按一定的要求來(lái)輸入,雖然有一些輸入提示信息,但由于輸入操作符的限制,還是因輸入錯(cuò)誤而導(dǎo)致程序運(yùn)行出現(xiàn)不合理的結(jié)果。 程序調(diào)試結(jié)果如下: 進(jìn)入系統(tǒng)主界面: 圖7.13系統(tǒng)主界面 錄入書(shū)刊信息功能: 圖7.14錄入書(shū)刊信息 查詢(xún)圖書(shū)信息功能:
28、圖7.15查詢(xún)圖書(shū)信息 借閱書(shū)刊信息功能: 圖7.16借閱書(shū)刊 歸還書(shū)刊功能: 圖7.17歸還書(shū)刊 取消書(shū)刊預(yù)約功能: 圖7.18取消書(shū)刊預(yù)約5. 結(jié)果分析設(shè)計(jì)的該圖書(shū)管理系統(tǒng),其要求的基本功能能夠?qū)崿F(xiàn),且能夠動(dòng)態(tài)的錄入數(shù)據(jù),賬戶(hù)信息及圖書(shū)信息的錄入數(shù)量無(wú)限制。另外,在歸回圖書(shū)的功能中,預(yù)約該書(shū)刊的用戶(hù)可以依預(yù)約書(shū)刊的時(shí)間先后來(lái)獲得該書(shū)刊;在查詢(xún)圖書(shū)信息時(shí),能夠顯示該圖書(shū)是否可借閱,并能夠顯示同書(shū)刊名的所有該書(shū)刊。同時(shí),數(shù)據(jù)的保護(hù)機(jī)制較好,數(shù)據(jù)不易被破壞。但是,該系統(tǒng)的主要遺憾是未能使用文件進(jìn)行永久保持?jǐn)?shù)據(jù),這大大的降低了該系統(tǒng)的實(shí)際使用價(jià)值;程序代碼的復(fù)用性不是太好,程序的容錯(cuò)處理能力不是太
29、強(qiáng),還有很多值得改進(jìn)的地方。由于時(shí)間和水平的有限,這些問(wèn)題只能留在以后去進(jìn)一步解決,使系統(tǒng)更完美,實(shí)用。6. 總結(jié)通過(guò)此次課程設(shè)計(jì),更加深了對(duì)c+面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的知識(shí)和設(shè)計(jì)方法的理解,也深刻認(rèn)識(shí)了自己在這方面的不足之處。首先,在設(shè)計(jì)該系統(tǒng)時(shí),對(duì)問(wèn)題描述進(jìn)行了比較深的認(rèn)識(shí),并確定了系統(tǒng)所需的數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)的封裝模式,也應(yīng)用了一些面向?qū)ο蟪绦蛟O(shè)計(jì)的基本方法。特別在此次設(shè)計(jì)中對(duì)數(shù)據(jù)引用的認(rèn)識(shí)更加深刻,引用作為函數(shù)形參,能夠通過(guò)形參而該變實(shí)參值,這一技術(shù)的使用非常方便有效。同時(shí),通過(guò)這次系統(tǒng)的課程設(shè)計(jì)過(guò)程,更進(jìn)一步認(rèn)識(shí)了自己的在編程方面的一些不足的方面,尤其表現(xiàn)在邏輯思維不夠嚴(yán)密,這方面還需在以
30、后更多的訓(xùn)練中,來(lái)彌補(bǔ)這方面的不足。但在修改語(yǔ)法錯(cuò)誤方面,基本上還是能夠修改。然后,對(duì)課題進(jìn)行了分析并編寫(xiě)了程序,且進(jìn)行了調(diào)試。至此,由于在設(shè)計(jì)開(kāi)始,未為整個(gè)系統(tǒng)進(jìn)行整體及整個(gè)編寫(xiě)過(guò)程的詳細(xì)思考,使編寫(xiě)的程序的健壯性不是特別的強(qiáng),且代碼復(fù)用性做得不夠好,由于數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)比較直接,未能使用更好的算法,使程序代碼較為繁瑣,而難以用文件方式對(duì)數(shù)據(jù)進(jìn)行永久保存,這也就使系統(tǒng)的實(shí)際使用價(jià)值大大地降低了。所以,在設(shè)計(jì)某系統(tǒng)時(shí),不僅僅只是對(duì)其功能模塊進(jìn)行簡(jiǎn)單的分析,而且更要使功能模塊和設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)結(jié)合起來(lái),以此設(shè)計(jì)更好的算法,編寫(xiě)出更好,更實(shí)用的程序。于是,設(shè)計(jì)前的系統(tǒng)分析工作是非常重要的,這是程序設(shè)計(jì)
31、思路的來(lái)源。通過(guò)此次課程設(shè)計(jì),更加深了對(duì)c+面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的知識(shí)和設(shè)計(jì)方法的理解,也深刻認(rèn)識(shí)了自己在這方面的不足之處。首先,在設(shè)計(jì)該系統(tǒng)時(shí),對(duì)問(wèn)題描述進(jìn)行了比較深的認(rèn)識(shí),并確定了系統(tǒng)所需的數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)的封裝模式,也應(yīng)用了一些面向?qū)ο蟪绦蛟O(shè)計(jì)的基本方法。特別在此次設(shè)計(jì)中對(duì)數(shù)據(jù)引用的認(rèn)識(shí)更加深刻,引用作為函數(shù)形參,能夠通過(guò)形參而該變實(shí)參值,這一技術(shù)的使用非常方便有效。同時(shí),通過(guò)這次系統(tǒng)的課程設(shè)計(jì)過(guò)程,更進(jìn)一步認(rèn)識(shí)了自己的在編程方面的一些不足的方面,尤其表現(xiàn)在邏輯思維不夠嚴(yán)密,這方面還需在以后更多的訓(xùn)練中,來(lái)彌補(bǔ)這方面的不足。但在修改語(yǔ)法錯(cuò)誤方面,基本上還是能夠修改。然后,對(duì)課題進(jìn)行了分析并
32、編寫(xiě)了程序,且進(jìn)行了調(diào)試。至此,由于在設(shè)計(jì)開(kāi)始,未為整個(gè)系統(tǒng)進(jìn)行整體及整個(gè)編寫(xiě)過(guò)程的詳細(xì)思考,使編寫(xiě)的程序的健壯性不是特別的強(qiáng),且代碼復(fù)用性做得不夠好,由于數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)比較直接,未能使用更好的算法,使程序代碼較為繁瑣,而難以用文件方式對(duì)數(shù)據(jù)進(jìn)行永久保存,這也就使系統(tǒng)的實(shí)際使用價(jià)值大大地降低了。所以,在設(shè)計(jì)某系統(tǒng)時(shí),不僅僅只是對(duì)其功能模塊進(jìn)行簡(jiǎn)單的分析,而且更要使功能模塊和設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)結(jié)合起來(lái),以此設(shè)計(jì)更好的算法,編寫(xiě)出更好,更實(shí)用的程序。于是,設(shè)計(jì)前的系統(tǒng)分析工作是非常重要的,這是程序設(shè)計(jì)思路的來(lái)源。7. 附件#include#include#includeusing namespace
33、std;/定義日期類(lèi)class dateprivate:int year;int month;int day;public:date(int y=0,int m=0,int d=0):year(y),month(m),day(d)date(const date&d):year(d.year),month(d.month),day(d.day)int getyear()return year;int getmonth()return month;int getday()return day;void dashow();date dainput();date();date date:dainput
34、()int y,m,d;couty;coutm;coutd;return date(y,m,d);void date:dashow()coutyear 年 month 月 day 日endl;/個(gè)人信息類(lèi)class unitinfoprivate:string name; string reid; string id; string sex; date d; public:unitinfo(string n,string re,string id,string sex,date d):name(n), reid(re),id(id),sex(sex),d(d)unitinfo():name(
35、),reid( ),id( ),sex( ),d(0,0,0);unitinfo(const unitinf &info):name(i),reid(info.reid), id(info.id),sex(info.sex),d(info.d)string getname()return name;string getreid()return reid;void unshow();unitinfo uninput();unitinfo();unitinfo unitinfo:uninput()string n,r,i,s;date d;coutr;coutendl;coutn;
36、coutendl;couts;coutendl;couti;coutendl;cout 出生日期:endl;d=d.dainput(); return unitinfo(n,r,i,s,d);void unitinfo:unshow()cout 借閱卡號(hào):reidendl;cout 用戶(hù)姓名:nameendl;cout 性別 :sexendl;cout 身份證號(hào):idendl;cout 出生日期:;d.dashow();/借閱信息類(lèi)class lendinfoprivate:string bookname;string isbn; date d; lendinfo *next; public:
37、lendinfo(string n,string h,date d):bookname(n),isbn(h),d(d), next(null)lendinfo():bookname( ),isbn( ),next(0)lendinfo(const lendinfo&l):bookname(l.bookname),isbn(l.isbn), d(l.d),next(l.next)string getinsb()return isbn; void setnext( lendinfo*l)next=l;lendinfo* getnext()return next;void leshow();lend
38、info leinput();lendinfo lendinfo:leinput()string n,i;date d;coutn;couti;cout借閱日期:endl;d=d.dainput();return lendinfo(n,i,d);void lendinfo:leshow()cout 書(shū)名 :booknameendl;cout 書(shū)號(hào) :isbnendl;coutsetnext(currptr);rear=currptr;size+;lendinfo* lelist:seeklist(const string inbs)lendinfo*pointer=front;lendinfo
39、*ccurptr=0;while(pointer!=0)if(inbs=pointer-getinsb()ccurptr=pointer; break;pointer=pointer-getnext();if(pointer=0) cout 用戶(hù)沒(méi)有借閱這本書(shū)getnext(); delete pointer; mark=true;elsewhile(pointer-getnext()!=currptr)pointer=pointer-getnext();pointer-setnext(currptr-getnext();delete currptr;mark=true; size-;elsecout 用戶(hù)沒(méi)有該書(shū)的借閱信息!leshow(); pointer=pointer-getnext();else cout 用戶(hù)無(wú)任何借閱記錄!endl;lelist:lel
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年浙科版選修6地理下冊(cè)月考試卷含答案
- 2024年浙科版選修2化學(xué)上冊(cè)月考試卷
- 創(chuàng)業(yè)公司的融資策略與實(shí)戰(zhàn)
- 醫(yī)療環(huán)境優(yōu)化結(jié)合操場(chǎng)綠化的健康理念
- 2024年物業(yè)委托合同范本:綠色社區(qū)物業(yè)委托管理創(chuàng)新協(xié)議3篇
- 2024年度車(chē)輛租賃與智能交通系統(tǒng)接入合同3篇
- 2025中國(guó)鐵建大橋工程局集團(tuán)建筑工程公司招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)遠(yuǎn)洋海運(yùn)集團(tuán)內(nèi)部招聘中遠(yuǎn)海運(yùn)(上海)限公司招聘2人信息高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)石油工業(yè)出版社高校畢業(yè)生招聘11人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 可可粉行業(yè)相關(guān)投資計(jì)劃提議
- 中國(guó)天眼之父南仁東
- 《膽囊結(jié)石的護(hù)理》PPT
- 藥品質(zhì)量受權(quán)人管理規(guī)程
- 校本課程之《紅樓夢(mèng)詩(shī)詞曲賞析》教案
- 地產(chǎn)集團(tuán)石材幕墻工程系統(tǒng)課件
- GB/T 8993-1998核儀器環(huán)境條件與試驗(yàn)方法
- 馬工程-公共財(cái)政概論-課程教案
- GB/T 38058-2019民用多旋翼無(wú)人機(jī)系統(tǒng)試驗(yàn)方法
- GB/T 26158-2010中國(guó)未成年人人體尺寸
- GB/T 22638.2-2016鋁箔試驗(yàn)方法第2部分:針孔的檢測(cè)
- 外研版高一英語(yǔ)必修一全冊(cè)練習(xí)題(附答案)
評(píng)論
0/150
提交評(píng)論