圖書管理系統(tǒng)設(shè)計報告_第1頁
圖書管理系統(tǒng)設(shè)計報告_第2頁
圖書管理系統(tǒng)設(shè)計報告_第3頁
圖書管理系統(tǒng)設(shè)計報告_第4頁
圖書管理系統(tǒng)設(shè)計報告_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 堅持就是勝利!HUNAN UNIVERSITY程序設(shè)計訓練報 告學生姓名 學生學號 專業(yè)班級 指導老師 起 止 時 間 2009年11月8日-2009年11月20日 實訓一 圖書管理系統(tǒng)實訓目的:1. 掌握結(jié)構(gòu)化程序設(shè)計的基本思想;2. 熟練掌握結(jié)構(gòu)以及指針的設(shè)計和應用;3. 熟練掌握文件的存取方法;4. 了解綜合系統(tǒng)設(shè)計的基本原理;5. 提高C語言程序設(shè)計的綜合應用能力。實訓任務:開發(fā)一個簡單的圖書管理系統(tǒng),具體功能要求如下:1 圖書管理:增加圖書、修改圖書、刪除圖書、統(tǒng)計圖書;2 借閱管理:查找圖書、借閱圖書、歸還圖書、借閱圖書統(tǒng)計;3 讀者管理:申請讀者卡、刪除讀者卡、修改讀者卡;4

2、館員管理:添加管理員、修改管理員信息、刪除管理員。根據(jù)以上功能說明,設(shè)計館員信息、讀者信息、讀者卡信息、圖書信息的存儲結(jié)構(gòu),數(shù)據(jù)存儲在文件中,界面要求有合理的提示,每個功能可以設(shè)立菜單,根據(jù)提示可以完成相關(guān)的功能要求。實訓設(shè)計:1 基本數(shù)據(jù)結(jié)構(gòu)設(shè)計:考慮到本程序有很多增刪工作,故采用鏈表存儲結(jié)構(gòu)。在主函數(shù)中創(chuàng)建四個空鏈表:2系統(tǒng)結(jié)構(gòu)設(shè)計:系統(tǒng)結(jié)構(gòu)設(shè)計說明了整個系統(tǒng)的功能模塊結(jié)構(gòu)以及調(diào)用關(guān)系,本設(shè)計采用自頂向下的結(jié)構(gòu)化方法,將每個模塊自頂向下展開。3. 模塊設(shè)計:(1) 主控模塊在該模塊中,提供系統(tǒng)的主菜單,通過主菜單用戶選擇圖書管理、借閱管理、讀者管理、館員管理和退出系統(tǒng)。而這些功能,我沒有寫

3、成大函數(shù),只是多寫了幾個界面顯示函數(shù),即二級菜單顯示,再在二級菜單中選擇,實現(xiàn)相應的功能。其中退出系統(tǒng)的實現(xiàn)很簡單,在主函數(shù)main()中用return 0 語句退出main()函數(shù)即可。choiceone=1?choiceone=2?choiceone=3?choiceone=4?choiceone=0?進入圖書管理模塊進入借閱管理模塊進入讀者管理模塊進入館員管理模塊(2) 圖書管理模塊在該模塊中,提供子菜單供用戶選擇增加圖書、修改圖書、刪除圖書、統(tǒng)計圖書、返回主菜單。增加圖書通過提示輸入,完成一條記錄輸入后,可以返回上一級菜單,再選擇進行圖書管理模塊的操作。刪除、修改通過圖書,通過編號查找

4、到該書,然后再進行刪除、修改。做完一條記錄的刪除、修改后可以返回上一級菜單。choicetwo=1?choicetwo=2?choicetwo=3?choicetwo=4?choicetwo=0? 返回主菜單統(tǒng)計圖書,對存書進行統(tǒng)計輸出顯示圖書編號、書名、作者、出版社、狀態(tài)(0表示在館,1表示已借出),顯示完成后按任意鍵返回到圖書管理模塊,可以再進行相關(guān)操作。(3) 借閱管理模塊在該模塊中,提供子菜單,供用戶選擇查找圖書、借閱圖書、歸還圖書、借閱圖書統(tǒng)計和返回主菜單的操作。查找圖書可以通過圖書編號、圖書作者進行查找,然后將查找的結(jié)果輸出。借閱圖書首先輸入讀者卡號,然后輸入所借圖書編號或圖書作者

5、,找到圖書后,進行借閱登錄。歸還圖書,首先輸入所還圖書編號,然后在圖書庫中找到這本書,并將其狀態(tài)設(shè)置為0,表示此書在館。借閱圖書統(tǒng)計,把已經(jīng)借出的圖書的信息輸出,具體實現(xiàn)即找到書的狀態(tài)為1的圖書,然后將結(jié)果輸出。返回主菜單,我是直接在主函數(shù)中用了goto語句,直接跳到主菜單。choicetwo=1?choicetwo=2?choicetwo=3?choicetwo=4?choicetwo=0? 返回主菜單 返回主菜單(4) 讀者管理模塊choicetwo=1?choicetwo=2?choicetwo=3?choicetwo=4?choicetwo=0?在該模塊中,提供子菜單供用戶選擇申請讀者

6、卡、刪除讀者卡、修改讀者卡、借閱情況統(tǒng)計和返回主菜單。申請讀者卡通過數(shù)據(jù)錄入向?qū)е痦椵斎耄瓿梢粭l記錄輸入后,添加到讀者鏈表中。刪除、修改讀者卡通過讀者卡號查找到該記錄,然后再進行刪除、修改,返回讀者鏈表的頭指針。借閱情況統(tǒng)計。則是對圖書的狀態(tài)為1的圖書逐一進行統(tǒng)計,并輸出統(tǒng)計結(jié)果。 返回主菜單(5) 館員管理模塊choicetwo=1?choicetwo=2?choicetwo=3?choicetwo=4?choicetwo=0? 返回主菜單在該模塊中,提供子菜單供用戶選擇增加館員、刪除館員、修改館員、館員統(tǒng)計和返回主菜單的操作。增加館員通過數(shù)據(jù)錄入向?qū)е痦椵斎耄瓿梢粭l記錄輸入后,添加到館

7、員鏈表中;刪除、修改館員通過館員號編號查找到該記錄,然后再進行刪除、修改,并將修改后的結(jié)果保存到館員鏈表中;館員統(tǒng)計對全體館員進行逐項統(tǒng)計,并輸出統(tǒng)計結(jié)果。具體實現(xiàn): 設(shè)計好思路后,接下來就是具體寫函數(shù)實現(xiàn)了,在這里我就不一一對函數(shù)進行說明了,只說說圖書管理模塊的addbook、modbook、delbook、countbook幾個函數(shù)。addbook這個函數(shù),就是在鏈表中增加新結(jié)點的操作,把頭指針作為參數(shù)傳進來,進行增加后再把頭指針返回: modbook這個函數(shù),就是修改鏈表中某一結(jié)點的內(nèi)容,先通過編號找到要修改的圖書,然后選擇要修改的內(nèi)容,再對其進行修改即可。同樣把頭指針作為參數(shù)傳進來,進

8、行修改后再把頭指針返回:delbook這個函數(shù)是刪除鏈表中的某一個結(jié)點,鏈表的刪除操作用兩個指針即可,要注意的是,要對刪除點位于頭結(jié)點和尾結(jié)點進行討論。同樣把頭指針作為參數(shù)傳進來,進行刪除后再把頭指針返回:countbook這個函數(shù),就是將鏈表中的節(jié)點的內(nèi)容一一輸出,用個循環(huán)即可:其他幾個模塊的函數(shù),跟這幾個函數(shù)有些類似,所以就不再一一解說了。軟件使用說明:主菜單:選擇后便可進入相應的管理模塊。圖書管理菜單:選擇后,便可進行相應操作。借閱管理菜單:選擇后,便可進行相應操作。讀者管理菜單:選擇后,便可進行相應操作。館員管理菜單:選擇后,便可進行相應操作。心得體會: 在做這個圖書管理系統(tǒng)的過程中,

9、遇到了很多問題,正是在這些問題中,我的編程能力得到了一定的提高。現(xiàn)對一些問題進行總結(jié):(1) 最開始,我想按照老師所說的,把要包含的庫函數(shù)、數(shù)據(jù)結(jié)構(gòu)的定義和函數(shù)申明都用一個頭文件tsgl.h ,各函數(shù)的具體實現(xiàn)則用一個tsgl.cpp文件,main()函數(shù)則放在main.cpp里。在tsgl.cpp 和 main.cpp 包含自定義的頭文件tsgl.h即可。開始我用了#include<tsgl.h>,可是調(diào)試時老報錯,實在不理解后向老師請教的,才發(fā)現(xiàn)原來對于自定義的頭文件是不能用<>的,只能這樣寫:#include “tsgl.h”。(2) 在寫delbook函數(shù)的時候

10、,一開始并沒有考慮到刪除結(jié)點若位于頭結(jié)點或尾結(jié)點的情況,只是籠統(tǒng)的寫在一起。在編譯運行后才發(fā)現(xiàn),如果刪除頭結(jié)點或尾結(jié)點,再進行圖書統(tǒng)計就會發(fā)現(xiàn)出現(xiàn)了問題。(3) 對鏈表進行操作,我是用的指針,而在指針進行移動往往會出現(xiàn)不可預料的問題: 對于這種問題,經(jīng)常出現(xiàn),而我解決的辦法就是進行調(diào)試,看是哪個地方出錯了,而這種錯誤往往是在對指針進行下移的地方,然后再進行修改。像這種問題是要一遍一 遍地調(diào)試的,多了就知道道兒了。(4) 如何把系統(tǒng)當前的日期(年月日)自動加載到借書日期里去?對于獲得系統(tǒng)當前的時間,以前在學MFC的時候好像遇到過,但具體的忘了,所以只得上網(wǎng)查查。在庫函數(shù)time.h里,就有相關(guān)的

11、函數(shù)。time_t currenttime; struct tm *timer; time(&currenttime); timer=localtime(&currenttime);可是這樣得到的時間既有年月日也有時分秒,而我只需要年月日,所以只取年月日部分:c2->lenddate0=1900+timer->tm_year; /tm_year 從1900年計算,/所以要加1900c2->lenddate1=1+timer->tm_mon; / 月tm_mon,從0計算,/所以要加1 c2->lenddate2=timer->tm_mday;

12、附錄1:參考資料 (1)C語言程序設(shè)計 李麗娟主編 人民郵電出版社 (2) (獲取系統(tǒng)當前時間)附錄2:程序清單 工程TSGL tsgl.h (自定義頭文件) tsgl.cpp (除main函數(shù)外的所有函數(shù)的實現(xiàn)) main.cpp (main()函數(shù)的實現(xiàn))各個函數(shù):void display(); /主界面void display1(); /圖書管理界面void display2(); /借閱管理界面void display3(); /讀者管理界面void display4(); /館員管理界面struct Book *addbook(struct Book *bookhead); /增加圖

13、書struct Book *delbook(struct Book *bookhead); /刪除圖書struct Book *modbook(struct Book *bookhead); /修改圖書void countbook(struct Book *bookhead); /統(tǒng)計圖書struct Book *findbook(struct Book *bookhead); /查找圖書struct Card *lendbook(struct Book *bookhead,struct Card *cardhead);/借閱圖書struct Book *returnbook(struct B

14、ook *bookhead); /歸還圖書void countlend(struct Book *bookhead,struct Card *cardhead);/借閱統(tǒng)計struct Card *addcard(struct Card *cardhead); /增加讀者卡struct Card *delcard(struct Card *cardhead); /刪除讀者卡struct Card *modcard(struct Card *cardhead); /修改讀者卡void countcard(struct Card *cardhead,struct Book *bookhead);/統(tǒng)計讀者卡struct Librari

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論