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