《圖書館管理系統(tǒng)》word版.doc
《《圖書館管理系統(tǒng)》word版.doc》由會員分享,可在線閱讀,更多相關(guān)《《圖書館管理系統(tǒng)》word版.doc(56頁珍藏版)》請在裝配圖網(wǎng)上搜索。
需求說明 大功能模塊及其小功能模塊說明 1.圖書查找模塊。依據(jù)書名,作者,出版社,類別,編號中的一個,查詢這本書的其它信息。每一種查詢方式為一個小模塊; 2.圖書借閱。實現(xiàn)圖書借還,預(yù)約功能。包括兩個小模塊:借書(預(yù)約功能包括在了借書模塊中),還書。 3.信息查詢管理。包括以下幾三個小模塊:查詢管理自身或其他用戶的信息(不同的帳號類型能查詢?nèi)巳翰煌?,查詢所得的信息有用戶基本信息,用戶歷史借閱記錄,用戶是否被封號。管理用戶信息僅管理員有該權(quán)限,管理員可手動封號),更改個人賬戶密碼,查看圖書借閱率; 4.圖書購入。僅有一個模塊。 還有部分功能的實現(xiàn)未劃分在這四大模塊中,單獨用函數(shù)實現(xiàn)。如:用戶登錄,新用戶注冊,系統(tǒng)根據(jù)用戶是否有借書逾期未還封號(有則封號,若用戶還了逾期未還的書則系統(tǒng)會解封) 詳細(xì)請見各模塊設(shè)計說明。 開發(fā)環(huán)境:DevC++,windows 7(32位) 若一直在登錄界面未登錄,時間向前推進(jìn) 選擇是否登錄錄界面 總體結(jié)構(gòu): 若選擇登錄,輸入帳號,密碼 登錄失?。艽a錯誤),重新登錄 (登錄成功), 選擇要進(jìn)行的操作 退出登錄 信息查詢管理 圖書購入 借書還書 圖書查詢 數(shù)據(jù)文件說明: “information.txt”:存儲圖書基本信息,程序運行時將文件中的信息導(dǎo)入到鏈表head中,以便使用。每一行的格式相同,否則在將文件中信息導(dǎo)入到鏈表時會出錯。每一行保存一本書的信息,按照順序分別為:圖書編號,書名,作者,出版社,類別,時間,價格。 在執(zhí)行了添加圖書這一操作后,更新這個文件。 “users.txt”:存儲用戶基本信息,登錄信息.程序運行時將文件中的信息導(dǎo)入到鏈表“head2”中,以便使用。每一行保存一個用戶的信息,分別為帳號,密碼。若用戶更改了密碼,則該文件會相應(yīng)的更新。 “Completereord.txt”:存儲已完成的借閱記錄,程序運行時將文件中的信息導(dǎo)入到“headcomplete”這個鏈表中,以便使用。每一行為一本書的記錄,依次表示書的編號,借書的人的帳號,借書時間,還書時間。在還書時,會生成一條新紀(jì)錄,并更新到文件中。 “Uncompletereord.txt”:存儲未完的借書記錄。程序運行時將文件中的信息導(dǎo)入到“headUncomplete”這個鏈表中,以便使用。每一行為一條未完成的借閱記錄,一次表示借出去的書的編號,借書人帳號,借書時間,是否有人預(yù)約,預(yù)約者帳號(即預(yù)約者編號)。每借出一本書,會生成包括借書人帳號,書的編號,日期的借書記錄,并更新到文件中。每還一本書,會依據(jù)書的編號找到對應(yīng)的“未完成記錄”,刪除。對應(yīng)的文件作處理(將文件中第一行全賦值為0),避免要刪除的記錄恰好在頭節(jié)點上. “Userstate.txt”:存儲用戶狀態(tài)。程序運行時將文件中的信息導(dǎo)入到“headuserstate”這個鏈表中,以便使用。每一行為一個用戶的狀態(tài),依次為這個帳號是否被封,帳號,現(xiàn)在借了幾本書,是否預(yù)約書,預(yù)約書的編號。若用戶借的書逾期不還,則會被封號,封號后不能再借書。若預(yù)約的書被還,則用戶在登錄時會收到提醒,但這本被預(yù)約的書可以被其他人借走 “rate.txt”:存儲每本書的歷史借閱次數(shù)。程序運行時將文件中的信息導(dǎo)入到“headrate”這個鏈表中,以便使用。每一行為一本書的借閱次數(shù),依次表示書的編號,這本書的借閱次數(shù)。每借出一本書,變會讓這本書的借閱次數(shù)加一。在查看借閱率時會將借閱次數(shù)最多的前五本書輸出。若是新購入的圖書,在第一次借出時會添加到鏈表中。 各模塊設(shè)計說明 先說明用戶登錄功能的實現(xiàn),登錄的實現(xiàn)是圖書查找模塊,圖書添加模塊,圖書購入,圖書借閱模塊實現(xiàn)的前提。 分為三類用戶:管理員,教師,學(xué)生。帳號(即學(xué)生學(xué)號,教師管理員的工號)的長度為10位,第一位用以區(qū)分用戶類別,1:管理員,2:教師,3:學(xué)生。第二到五位為入學(xué)年份(或參加工作年份),第六到七位為所屬學(xué)院,最后三位為院內(nèi)編號。 登陸過程:在main函數(shù)中定義兩個變量int accounts,char passwords[10],要登陸時先提示用戶輸入帳號及密碼,經(jīng)登錄函數(shù)int login處理,若返回1,則登陸成功,再進(jìn)行下一步動作;若返回0,說明登陸失敗,此時會提示登陸失敗的原因:密碼錯誤,并提示用戶重新輸入帳號密碼。 參考學(xué)校圖書館系統(tǒng)新用戶注冊機(jī)制,本系統(tǒng)注冊機(jī)制為:輸入學(xué)生學(xué)號(或工號),若是第一次登陸,則密碼默認(rèn)為學(xué)號(或工號的后六位),登錄成功后會提示用戶是第一次登錄并建議用戶更改帳號密碼。第一次登陸后該用戶信息會添加到對應(yīng)的文件中,下次登錄時身份為已注冊用戶。 1. 圖書查找模塊 將圖書的基本信息保存在一個名為information的文本文件中,程序運行時,先將文件中圖書的信息導(dǎo)入到鏈表head中。 查詢圖書信息時,用戶先選擇按哪種方式查詢,每種查詢的完成通過遍歷鏈表head完成,并輸出其他信息。下面說明具體查找算法。判斷搜索的類型,然后轉(zhuǎn)到相應(yīng)的條件處。若是按書名搜索,先將要搜索的內(nèi)容存放到數(shù)組里面;然后從存放書本信息的文件里讀取書名,采用BF算法,即樸素模式匹配算法,在書名里查找輸入的子串。若是按作者、出版社、類別、圖書編號來查找的話,則用全匹配的方法,只有輸入的信息與文件內(nèi)容的完全相同,才會輸出所要搜索的圖書信息,否則顯示為無所要查找的圖書信息。 圖書編碼說明:圖書的編碼為六位,前兩位代表圖書類別,01:educate,02:novels,03:history,04:musics(當(dāng)前就只有這么幾種圖書類別,之后會添加),最多可以有99中類型的書。中間兩位為同一類型中的不同書,同一類別下的圖書最多可以有99本不同的書。最后兩位表示同一本書的不同編號,圖書館中同樣的一本書有許多本,編上不同的編號,同一本書最大數(shù)量為99本。 2.圖書購入 購入添加新的圖書時,編碼方式:前兩位代表圖書類別,01:educate,02:novels,03:history,04:musics,中間兩位按照這類圖書中已有多少本編碼,若已有20本,則中間兩位為21.最后兩位依據(jù)圖書的數(shù)量編碼,若有10本,則最后兩位從01到10.添加時提示用戶先選擇添加的圖書是庫中已有的還是庫中沒有的。 若是庫中已有的書,則輸入庫中這本書最大的編號max,添加的數(shù)量。添加的第一本書的ID為max+1,第二本為max+2,以此類推,書的其它信息不用輸入,直接賦值就行。 若添加的書庫中沒有,則需輸入書名,類別,作者出版社等基本信息。書的編號的生成方式為:前兩位為書的類別;中間兩位,若這類書已有3本,則中間兩位為04,若這類書有5本,則為06;最后兩位從01開始,有多少本書就編碼到幾。添加完后書的信息保存在鏈表中,并更新到文件中。 每添加一本書,會在鏈表head中添加一個節(jié)點(若是已有的書,在鏈表中部添加這這節(jié)點,且上一個節(jié)點保存的書的ID比這本書恰好小1;若是庫中沒有的書,則在鏈表尾部添加節(jié)點)以保存它的信息。在添加完畢后會將鏈表中的信息重新寫進(jìn)Information.Txt。 3. 信息查詢管理。 執(zhí)行此功能之前已登錄,按照用戶帳號的編碼方式可自動區(qū)分用戶是學(xué)生還是教師或者是管理員。對于學(xué)生,只能查詢自己的信息,如:學(xué)院,年級,借閱了幾本書,;對于老師,則可查詢自身和學(xué)生的信息;管理員則可以查詢所有老師學(xué)生的信息。查詢其它用戶信息時先輸入要查詢的人的帳號,遍歷鏈表head2及headUserstate以找到對應(yīng)的用戶,找到后輸出相關(guān)信息。特別的,管理員具有封號的權(quán)限,若一個帳號被封,則該賬戶無法再借書,直至被解封。封號的實現(xiàn),通過修改headUserstate中節(jié)點的信息實現(xiàn)。鏈表headUserstate中的信息會更新到文件Userstate.txt中。 改密碼,改密碼需兩次輸入新密碼,若兩次的輸入有不同,會提示用戶兩次輸入的密碼不一樣,要求用戶重新輸入新密碼。改密碼會改變鏈表head2中對應(yīng)的節(jié)點中的password『10』。鏈表head2中的信息會及時更新到文件Users中。 三種類型用戶都可以查看借閱率。通過遍歷鏈表headrate實現(xiàn)。 4.圖書借閱 借書預(yù)約:進(jìn)入系統(tǒng)時已登錄,借書時用戶需輸入借幾本書。若借完這些書后未超過借書上限,則進(jìn)入下一步,否則會讓用戶超過個人借書上限,需重新輸入要借書的數(shù)量。 若未超過上限,則輸入每本書的ID。對每一本書進(jìn)行判斷,判斷是否能借。判斷一本書是否能借的方法為遍歷未完成的借書記錄(即鏈表headUncomplete),若在記錄中沒有這本書說明這本書可以借(沒被借出,或借出但已經(jīng)歸還)。每借一本書會生成一條未完成的借閱記錄,依據(jù)書的編號創(chuàng)建,包括借書人編號,借閱時間,是否有人預(yù)約,(若預(yù)約)預(yù)約者編號。若記錄中有這本書則說明這邊書已經(jīng)借出,用戶可選擇是否預(yù)約。選擇預(yù)約,會修改未完成記錄中這本書對應(yīng)的記錄。將是否有人預(yù)約該成有(當(dāng)一條未完成記錄生成時默認(rèn)沒有人預(yù)約),并修改預(yù)約者編號(默認(rèn)狀態(tài)下為00000000).當(dāng)預(yù)約的書被還,預(yù)約者登錄時,用戶會收到提示。 還書:還書時輸入還書的數(shù)量及每本書的編號。每還一本書,會刪除未完成記錄中這本書對應(yīng)的記錄(若這本書被預(yù)約,刪除之前會修改用戶狀態(tài)中表示已預(yù)約的書的狀態(tài)的變量,從而在用戶登錄時能收到提醒)。在已完成記錄(即鏈表headComplete)中添加一條,包括書的編號,借閱者編號,借閱日期,還書日期。 鏈表中的信息會及時更新到對應(yīng)的文件中。 系統(tǒng)自動封號功能說明:遍歷未完成的借書記錄,若有逾期未還的書,則系統(tǒng)會自動封了這本書的借書人的帳號,這本書被還時會解封對應(yīng)的帳號 Main函數(shù)中變量及數(shù)據(jù)結(jié)構(gòu)體說明: int choice,choice2,exist;//作用:功能選擇 int account;//存儲用戶帳號 int i=0,ss=0,de=0;//計數(shù)變量 int Time;//系統(tǒng)時間 char password[10];//存儲用戶登錄時輸入的密碼 FILE *timefile;//保存系統(tǒng)時間的文件指針 下面的指針都是指向?qū)?yīng)鏈表的頭節(jié)點。 struct Information *head=NULL;//保存圖書信息 struct Users *head2=NULL;//保存用戶帳號,密碼 struct UncompleteRecords *headUncomplete=NULL;//保存未完成的借閱記錄 struct Userstate *headUserstate=NULL;//保存用戶帳號信息 struct CompleteRecords *headComplete=NULL;//保存已完成借閱記錄 struct rate *headrate=NULL;//保存每本書的借閱次數(shù)。 1.struct Information//圖書基本信息 { int number;//圖書編號 char name[30];//書名 char writer[30];//作者 char press[30];//出版社 char kinds[20];//類別 int time;//出版時間 float price;//圖書價格 int amount;//備注:這個變量沒用 struct Information *next; }; 2.struct Users用戶基本信息 { int account;//用戶帳號,也就是用戶ID char password[10]; //登錄密碼 struct Users *next2; };/ 3.struct CompleteRecords//已完成的借閱記錄 { int booknumber;//已經(jīng)完成的借還,包括書的編號 int userID;//借閱人ID int borrowtime;//借閱時間 int returntime;//還書時間 struct CompleteRecords *Completenext; };//每還一本書,在鏈表尾添加一個節(jié)點。 4.struct UncompleteRecords// 未完成的借閱記錄 { // int bookID;//于借出狀態(tài)的圖書的編號 int user;// 借書人 int time;// 借閱日期 int reserve;//reserve=1 有人預(yù)約,0 無人預(yù)約.有 int reserveID;// struct UncompleteRecords *Uncompletenext; };//借一本,在鏈表尾添加一個節(jié)點,還一本,刪除對應(yīng)的節(jié)點 設(shè)置reserve及reserveID以實現(xiàn)圖書預(yù)約。有人預(yù)約書時修改reserve的值,并將預(yù)約人的帳號保存在reserveID中。在這本書被還,這條“未完成的借書記錄”被刪除之,修改用戶狀態(tài)信息,在用戶登錄時會提示預(yù)約的書可以借了。 5.struct Userstate//用戶狀態(tài) { int ban;//用來判斷帳號是否被封,被封則無法借書,0 表示此號被封,1 表示此號未被封,正常使用中 int ID;//用戶ID int numbers;//用戶已經(jīng)借閱的圖書的數(shù)量(上限:學(xué)生5本,老師10本,管理員10本) int reserve;//值為0 表示沒有預(yù)約,值為1表示預(yù)約了,值2表示預(yù)約的書可以借 int reserveID;//預(yù)約書的編號 struct Userstate *Userstatenext; }; 6.struct rate//每本書的歷史借閱次數(shù) { int bookID; int times; struct rate *ratenext; }; 范例執(zhí)行過程及結(jié)果 運行后的選擇登錄界面,若不登錄時間則推進(jìn)。 進(jìn)入登錄界面,輸入帳號,按回車,再輸入密碼 輸入的帳號為第一次登錄,即新用戶,密碼為帳號的后六位,若密碼輸入錯誤,則給出提示并重新輸入 登錄成功,選擇要進(jìn)行的操作。由于是第一次操作,對用戶給出提示。 輸入1,選擇了圖書查詢,再選擇查詢方式。選擇了按書名查詢,輸入的是Gone,由于Gone_With_The_Wind這個書名和輸入最相似,因此輸出這本書的信息。若按照其它依據(jù)查詢,用的是完全匹配算法,輸入字符串的一部分只會打印出庫中沒有。 圖書查詢操作執(zhí)行完畢后,轉(zhuǎn)回功能選擇界面。選擇借書,回車,輸入要借書的數(shù)量,回車,會提示輸入要借的書的編號。010103這本書已經(jīng)被借出,選擇預(yù)約,另一本書借閱成功。 借書操作執(zhí)行完畢后,返回上一級,再進(jìn)入信息查詢管理界面查看個人信息,查看借閱率,修改個人帳號密碼 該用戶是學(xué)生,若該用戶選擇了自己沒有權(quán)限執(zhí)行的操作,系統(tǒng)會提示。 退出登錄,帳號120001001(管理員)登錄,還010103這本書。 該管理員進(jìn)入信息查詢管理界面,先查詢自己的信息 管理員查詢其它用戶信息 管理員封號,封號后再次查詢所封號的信息 管理員執(zhí)行圖書添加操作 管理員退出登錄,帳號320133003登錄(即本文檔開頭登錄的那個帳號),預(yù)約的書被還,系統(tǒng)提示用戶。 在未完成的借書記錄中有一本書是5月16號借的(期限30天),此時是6月18號,以超越期限.系統(tǒng)自動封號。 說明:圖書編號,用戶信息均存于txt文件中,若txt文件被更改或損壞,則范例無法正常執(zhí)行。 #include- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 圖書館管理系統(tǒng) 圖書館 管理 系統(tǒng) word
鏈接地址:http://www.hcyjhs8.com/p-7885439.html