c語(yǔ)言課程設(shè)計(jì) 圖書(shū)管理系統(tǒng) 高校教師人事管理系統(tǒng)_第1頁(yè)
c語(yǔ)言課程設(shè)計(jì) 圖書(shū)管理系統(tǒng) 高校教師人事管理系統(tǒng)_第2頁(yè)
c語(yǔ)言課程設(shè)計(jì) 圖書(shū)管理系統(tǒng) 高校教師人事管理系統(tǒng)_第3頁(yè)
c語(yǔ)言課程設(shè)計(jì) 圖書(shū)管理系統(tǒng) 高校教師人事管理系統(tǒng)_第4頁(yè)
c語(yǔ)言課程設(shè)計(jì) 圖書(shū)管理系統(tǒng) 高校教師人事管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、圖書(shū)借閱管理系統(tǒng) 圖書(shū)借閱管理是圖書(shū)館一個(gè)最根本的工作,這里用C語(yǔ)言的知識(shí)設(shè)計(jì)開(kāi)發(fā)一個(gè)簡(jiǎn)單的圖書(shū)借閱管理系統(tǒng),系統(tǒng)主要實(shí)現(xiàn)圖書(shū)信息和學(xué)生信息的管理,圖書(shū)查詢(xún)及圖書(shū)借閱管理。 系統(tǒng)設(shè)計(jì)要求 系統(tǒng)主要實(shí)現(xiàn)以下六個(gè)功能: 用戶(hù)登錄。系統(tǒng)用戶(hù)分為管理員和學(xué)生。管理員登錄時(shí)必須輸入密碼,密碼正確才能進(jìn)入系統(tǒng);學(xué)生登錄時(shí)無(wú)需密碼,輸入學(xué)號(hào)即可。 圖書(shū)信息管理。圖書(shū)信息包括:書(shū)號(hào)、書(shū)名、作者、圖書(shū)分類(lèi)、出版社、出版時(shí)間、單價(jià)、總量和庫(kù)存量。圖書(shū)信息管理包括:輸入圖書(shū)信息從鍵盤(pán)或從文件、保存圖書(shū)信息、修改圖書(shū)信息、增加圖書(shū)信息、刪除圖書(shū)信息和輸出圖書(shū)信息。 學(xué)生信息管理。學(xué)生信息包括:學(xué)號(hào)、姓名、借書(shū)卡借閱標(biāo)

2、記、書(shū)號(hào)、借閱時(shí)間。學(xué)生信息管理包括:輸入學(xué)生信息從鍵盤(pán)或從文件、保存學(xué)生信息、修改學(xué)生信息、增加學(xué)生信息、刪除學(xué)生信息和輸出學(xué)生信息。 圖書(shū)查詢(xún)功能。圖書(shū)查詢(xún)分為:按書(shū)名查詢(xún)、按作者查詢(xún)、按圖書(shū)分類(lèi)查詢(xún)、按出版社查詢(xún)和按出版時(shí)間查詢(xún)。 借書(shū)功能。借書(shū)時(shí),先判斷學(xué)生是否有空閑的借書(shū)卡,假設(shè)沒(méi)有那么應(yīng)輸出提示信息;假設(shè)有空閑的借書(shū)卡,那么要求學(xué)生輸入所借圖書(shū)的書(shū)號(hào),假設(shè)該書(shū)庫(kù)存量不為0,那么將該書(shū)借出,同時(shí)在借書(shū)卡上記錄該書(shū)的書(shū)號(hào)和借閱時(shí)間,并修改該書(shū)的庫(kù)存量。 還書(shū)功能。還書(shū)時(shí),先檢查學(xué)生的借書(shū)卡,假設(shè)借書(shū)卡都為空,那么不能進(jìn)行還書(shū)操作,假設(shè)有借書(shū)卡不為空,那么可以還書(shū),此時(shí)要求學(xué)生輸入所還圖

3、書(shū)的書(shū)號(hào),將對(duì)應(yīng)借書(shū)卡上的記錄清零,并修改該書(shū)的庫(kù)存量。 系統(tǒng)總體設(shè)計(jì) 1. 功能模塊圖用戶(hù)登錄管理模塊圖書(shū)借閱管理系統(tǒng)圖書(shū)信息管理模塊學(xué)生信息管理模塊圖書(shū)信息查詢(xún)模塊圖書(shū)借閱管理模塊系統(tǒng)功能模塊圖管理員登錄學(xué)生登錄輸入圖書(shū)信息保存圖書(shū)信息修改圖書(shū)信息增加圖書(shū)信息刪除圖書(shū)信息輸出圖書(shū)信息輸入學(xué)生信息保存學(xué)生信息修改學(xué)生信息增加學(xué)生信息刪除學(xué)生信息輸出學(xué)生信息按書(shū)名查詢(xún)按作者查詢(xún)按圖書(shū)分類(lèi)查詢(xún)按出版社查詢(xún)按出版時(shí)間查詢(xún)借書(shū)管理還書(shū)管理2. 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)系統(tǒng)共定義了四個(gè)結(jié)構(gòu)體類(lèi)型,包括日期類(lèi)型、借書(shū)卡類(lèi)型、圖書(shū)類(lèi)型和學(xué)生類(lèi)型,其中在圖書(shū)類(lèi)型中要使用日期類(lèi)型,而在學(xué)生類(lèi)型中要使用日期和借書(shū)卡類(lèi)型,定

4、義如下:typedef struct date /日期類(lèi)型 short year; /年 short month; /月 short day; /日 SDATE;typedef struct library_card /借書(shū)卡類(lèi)型 Short flag; /是否借閱標(biāo)記 Char ISBN20; /所借圖書(shū)的書(shū)號(hào) SDATE bor_time; /借閱時(shí)間SLCARD;typedef struct student /學(xué)生類(lèi)型 char num15; /學(xué)號(hào) char name20; /姓名 SLCARD card5; /借書(shū)卡規(guī)定每人最多有5張SSTUD;typedef struct book

5、 /圖書(shū)類(lèi)型 char ISBN20; /書(shū)號(hào) char bookname40; /書(shū)名 char author20; /作者 char publisher30; /出版社 char bookclass20; /圖書(shū)分類(lèi) short total_num, stock_num; /總量,庫(kù)存量 float price; /單價(jià) SDATE publish_time; /出版時(shí)間 SBOOK;系統(tǒng)定義了兩個(gè)全局變量數(shù)組,分別存放圖書(shū)信息和學(xué)生信息,因數(shù)組大小是固定的,為使用方便在系統(tǒng)中定義兩個(gè)符號(hào)常量,具體定義如下:#define BOOKNUM 1000 / BOOKNUM為系統(tǒng)允許的最大圖書(shū)數(shù)

6、量#define STUDNUM 100 / STUDNUM為系統(tǒng)允許的最多學(xué)生人數(shù)SSTUD studentSTUDNUM=0; /學(xué)生數(shù)組,初始化為0SBOOK bookBOOKNUM=0; /圖書(shū)數(shù)組,初始化為03. 功能模塊設(shè)計(jì)(1) main函數(shù)的設(shè)計(jì):由于圖書(shū)信息和學(xué)生信息都保存在文件中,系統(tǒng)運(yùn)行的第一個(gè)工作是從文件中將圖書(shū)信息和學(xué)生信息讀入到內(nèi)存數(shù)組book和數(shù)組student中,在讀入信息的過(guò)程中同時(shí)統(tǒng)計(jì)出目前圖書(shū)的數(shù)量和學(xué)生的人數(shù),并將數(shù)據(jù)分別存放在整型變量bn和sn中,bn為圖書(shū)數(shù)量,sn為學(xué)生人數(shù)。如果bn=0或sn=0,系統(tǒng)會(huì)輸出提示信息,讓管理員輸入圖書(shū)信息和學(xué)生信息

7、。然后系統(tǒng)會(huì)顯示主菜單,用戶(hù)必須登錄后才能使用系統(tǒng)提供的各種效勞。(2) 用戶(hù)登錄管理模塊包括2個(gè)函數(shù):ManagerLogin()和StudentLogin(),該模塊由main函數(shù)調(diào)用。函數(shù)ManagerLogin()用來(lái)完成管理員登錄工作,首先要求管理員用戶(hù)輸入密碼,假設(shè)密碼錯(cuò)誤,那么直接返回主菜單界面;密碼正確時(shí)將顯示管理員用戶(hù)的功能菜單,輸入數(shù)字可執(zhí)行相應(yīng)的功能。函數(shù)StudentLogin()用來(lái)完成學(xué)生登錄工作,要求學(xué)生輸入學(xué)號(hào),假設(shè)學(xué)號(hào)錯(cuò)誤那么要求學(xué)生重新輸入學(xué)號(hào);輸入學(xué)號(hào)正確那么顯示學(xué)生用戶(hù)的功能菜單,輸入數(shù)字可執(zhí)行相應(yīng)的功能。(3) 圖書(shū)信息管理模塊包括11個(gè)函數(shù):Inpu

8、tOnebook()、LoadBooks()、SaveOnebook()、SaveAllbooks()、OriginalBook()、ModifyBook()、AddBook()、DelBook()、OutputOnebook()、OutputAllbooks()和OutputBrief ()。只有管理員用戶(hù)可以調(diào)用圖書(shū)信息管理模塊。函數(shù)InputOnebook()用來(lái)實(shí)現(xiàn)從鍵盤(pán)輸入一本圖書(shū)的全部信息。函數(shù)LoadBooks()用來(lái)實(shí)現(xiàn)從文件“book.dat中輸入全部圖書(shū)的信息,并將這些數(shù)據(jù)存放到內(nèi)存數(shù)組book中。函數(shù)SaveOnebook()用來(lái)實(shí)現(xiàn)將一本圖書(shū)的信息保存到文件“book.

9、dat中。函數(shù)SaveAllbooks()用來(lái)實(shí)現(xiàn)將全部圖書(shū)的信息保存到文件“book.dat中。函數(shù)OriginalBook()用來(lái)實(shí)現(xiàn)圖書(shū)信息的初始化,在程序第1次運(yùn)行時(shí)必須調(diào)用該函數(shù),輸入假設(shè)干本圖書(shū)的信息,并將這些信息保存在文件中。該函數(shù)是通過(guò)循環(huán)屢次調(diào)用InputOnebook()函數(shù)實(shí)現(xiàn)多本圖書(shū)信息的輸入,然后調(diào)用SaveAllbooks()函數(shù)將已輸入的所有圖書(shū)的信息保存在文件“book.dat中。函數(shù)ModifyBook()用來(lái)實(shí)現(xiàn)對(duì)圖書(shū)信息的修改,用戶(hù)首先輸入書(shū)號(hào),書(shū)號(hào)錯(cuò)誤那么輸出提示信息,要求用戶(hù)重新輸入;書(shū)號(hào)正確那么用戶(hù)可以選擇要修改的數(shù)據(jù)項(xiàng)對(duì)圖書(shū)信息進(jìn)行修改用switc

10、h結(jié)構(gòu)實(shí)現(xiàn),一本圖書(shū)的信息修改完畢后,調(diào)用SaveOnebook()函數(shù),將修改后的信息保存到文件中。然后詢(xún)問(wèn)用戶(hù)是否繼續(xù)修改其他圖書(shū)的信息,用戶(hù)選擇y,那么重復(fù)上述的修改正程;用戶(hù)選擇n,那么結(jié)束函數(shù),返回到管理員菜單界面。函數(shù)AddBook()用來(lái)實(shí)現(xiàn)添加圖書(shū)信息,通過(guò)調(diào)用InputOnebook()函數(shù),從鍵盤(pán)輸入一本圖書(shū)的信息,然后將該信息寫(xiě)入文件。然后詢(xún)問(wèn)用戶(hù)是否繼續(xù)添加其他圖書(shū)的信息,用戶(hù)選擇y,那么重復(fù)上述過(guò)程;用戶(hù)選擇n,那么結(jié)束函數(shù),返回到管理員菜單界面。函數(shù)DelBook()用來(lái)實(shí)現(xiàn)刪除圖書(shū)信息,用戶(hù)首先輸入書(shū)號(hào),書(shū)號(hào)錯(cuò)誤那么輸出提示信息,要求用戶(hù)重新輸入;書(shū)號(hào)正確那么會(huì)先

11、輸出該書(shū)號(hào)對(duì)應(yīng)圖書(shū)的信息,然后詢(xún)問(wèn)用戶(hù)是否確定要?jiǎng)h除該書(shū)的信息,用戶(hù)選擇y才能真正刪除該書(shū)信息。最后詢(xún)問(wèn)用戶(hù)是否繼續(xù)刪除其他圖書(shū)的信息,用戶(hù)選擇y,那么重復(fù)上述過(guò)程;用戶(hù)選擇n,那么結(jié)束函數(shù),返回到管理員菜單界面。函數(shù)OutputOnebook()用來(lái)實(shí)現(xiàn)輸出一本圖書(shū)的全部信息。函數(shù)OutputAllbooks()通過(guò)屢次調(diào)用OutputOnebook()函數(shù)來(lái)實(shí)現(xiàn)輸出全部圖書(shū)的信息。函數(shù)OutputBrief()用來(lái)實(shí)現(xiàn)以列表方式輸出全部圖書(shū)的簡(jiǎn)要信息,簡(jiǎn)要信息包括:書(shū)號(hào)、書(shū)名、作者和總量。(4) 學(xué)生信息管理模塊包括10個(gè)函數(shù):InputOnestud()、LoadStuds()、Save

12、Onestud()、SaveAllstuds()、OriginalStud()、ModifyStud()、AddStud()、DelStud()、OutputOnestud()和OutputAllstuds()。 管理員用戶(hù)可以使用學(xué)生信息管理模塊的全部功能,學(xué)生用戶(hù)只能使用該模塊中的一個(gè)功能,即OutputOnestud()函數(shù)輸出一個(gè)學(xué)生的信息。學(xué)生信息管理模塊中函數(shù)的實(shí)現(xiàn)方法與圖書(shū)信息管理中的類(lèi)似,以下僅作簡(jiǎn)單說(shuō)明。函數(shù)InputOnestud()用來(lái)實(shí)現(xiàn)從鍵盤(pán)輸入一個(gè)學(xué)生的信息。函數(shù)LoadStuds()用來(lái)實(shí)現(xiàn)從文件“stud.dat中輸入全部學(xué)生的信息,并將這些數(shù)據(jù)存放到內(nèi)存數(shù)組s

13、tudent中。函數(shù)SaveOnestud()用來(lái)實(shí)現(xiàn)將一各學(xué)生的信息保存到文件“stud.dat中。函數(shù)SaveAllstuds()用來(lái)實(shí)現(xiàn)將全部學(xué)生的信息保存到文件“stud.dat中。函數(shù)OriginalStud()用來(lái)實(shí)現(xiàn)學(xué)生信息的初始化,在程序第1次運(yùn)行時(shí)必須調(diào)用該函數(shù)。該函數(shù)是通過(guò)循環(huán)屢次調(diào)用InputOnestud()函數(shù)實(shí)現(xiàn)多個(gè)學(xué)生信息的輸入,然后調(diào)用SaveAllstuds()函數(shù)將已輸入的所有學(xué)生的信息保存在文件“stud.dat中。函數(shù)ModifyStud()用來(lái)實(shí)現(xiàn)學(xué)生信息的修改。函數(shù)AddStud()用來(lái)實(shí)現(xiàn)添加學(xué)生信息。函數(shù)DelStud()用來(lái)實(shí)現(xiàn)刪除學(xué)生信息。函

14、數(shù)OutputOnestud()用來(lái)實(shí)現(xiàn)輸出一個(gè)學(xué)生的全部信息。函數(shù)OutputAllstuds()用來(lái)實(shí)現(xiàn)輸出全部學(xué)生的根本信息即學(xué)號(hào)和姓名。(5) 圖書(shū)信息查詢(xún)模塊包括6個(gè)函數(shù):SearchMenu()、SearcBname()、SearchAuthor()、SearchBclass()、SearchPublisher()、SearchPubtime()。管理員和學(xué)生都可以使用圖書(shū)信息查詢(xún)模塊。 函數(shù)SearchMenu()用來(lái)顯示圖書(shū)查詢(xún)效勞菜單,用戶(hù)輸入數(shù)字可執(zhí)行相應(yīng)的查詢(xún)效勞。函數(shù)SearcBname()用來(lái)實(shí)現(xiàn)按書(shū)名進(jìn)行圖書(shū)信息的查詢(xún)。用戶(hù)可以輸入完整的書(shū)名進(jìn)行精確查詢(xún)?nèi)巛斎搿癈語(yǔ)

15、言程序設(shè)計(jì),精確查詢(xún)是使用字符串比擬函數(shù)strcmp(),將輸入的書(shū)名與已有圖書(shū)的書(shū)名逐一進(jìn)行比擬,當(dāng)該函數(shù)的返回值等于0,表示這兩個(gè)書(shū)名完全相同,即找到要查詢(xún)的圖書(shū)。另外,用戶(hù)也可以輸入書(shū)名中的幾個(gè)字進(jìn)行模糊查詢(xún)?nèi)巛斎搿癈語(yǔ)言,或輸入“程序設(shè)計(jì),模糊查詢(xún)是使用求子串函數(shù)strstr(),在已有圖書(shū)的書(shū)名中尋找輸入的字符串,如果該函數(shù)的返回值不為空,那么說(shuō)明該書(shū)名中包含這個(gè)字符串,那么就應(yīng)該輸出這本圖書(shū)的信息。通常,模糊查詢(xún)會(huì)列出多個(gè)查詢(xún)結(jié)果。函數(shù)SearchAuthor()用來(lái)實(shí)現(xiàn)按作者姓名進(jìn)行圖書(shū)信息的查詢(xún)。用戶(hù)可以輸入完整的姓名進(jìn)行精確查詢(xún)?nèi)巛斎搿白T浩強(qiáng),也可以只輸入姓氏進(jìn)行模糊查詢(xún)?nèi)缰?/p>

16、輸入“張,具體方法與按書(shū)名查詢(xún)類(lèi)似。函數(shù)SearchBclass()用來(lái)實(shí)現(xiàn)按圖書(shū)分類(lèi)進(jìn)行圖書(shū)信息的查詢(xún)。考慮到用戶(hù)可能不能輸入完全正確的圖書(shū)分類(lèi)名稱(chēng),所以在該函數(shù)中只采用模糊查詢(xún)方式。函數(shù) SearchPublisher()用來(lái)實(shí)現(xiàn)按出版社名稱(chēng)進(jìn)行圖書(shū)信息的查詢(xún)。用戶(hù)在輸入出版社名稱(chēng)時(shí),一般不會(huì)輸入“出版社這三個(gè)字如想查詢(xún)清華大學(xué)出版社的圖書(shū),通常用戶(hù)會(huì)輸入“清華大學(xué),所以在該函數(shù)中也是只采用模糊查詢(xún)方式。函數(shù) SearchPubtime()用來(lái)實(shí)現(xiàn)按出版日期進(jìn)行圖書(shū)信息的查詢(xún)。使用該函數(shù)必須注意要按系統(tǒng)規(guī)定的格式輸入日期,假設(shè)想查詢(xún)2004年5月份出版的圖書(shū),那么應(yīng)輸入“2004.5;假設(shè)

17、想查詢(xún)2004年出版的圖書(shū),那么應(yīng)輸入“2004。假設(shè)輸入日期為“2004.5,進(jìn)行查詢(xún)時(shí),先判斷輸入的年份與出版日期中的年份是否相等,假設(shè)不相等那么結(jié)束本次循環(huán),假設(shè)相等那么用變量k記錄其下標(biāo),然后再判斷月份是否相等,月份假設(shè)不相等那么用continue結(jié)束本次循環(huán),月份假設(shè)相等那么可輸出這本書(shū)即第k本書(shū)的信息,然后再繼續(xù)判斷下一本圖書(shū)。(6) 圖書(shū)借閱管理模塊包括2個(gè)函數(shù):BorrowBook()和ReturnBook()函數(shù)。 函數(shù)BorrowBook()用來(lái)實(shí)現(xiàn)借書(shū)管理。由學(xué)生類(lèi)型定義可知,每個(gè)學(xué)生有5張借書(shū)卡,借書(shū)卡的信息包括:借閱標(biāo)記flag、所借圖書(shū)的書(shū)號(hào)ISBN和借閱時(shí)間bor

18、_time。借書(shū)時(shí),首先查找學(xué)生是否有空閑的借書(shū)卡即判斷該生借書(shū)卡的借閱標(biāo)記flag是否為0,假設(shè)flag為0,那么可以借書(shū),這時(shí)要求學(xué)生輸入要借圖書(shū)的書(shū)號(hào),然后在圖書(shū)數(shù)組book中查找該書(shū),假設(shè)在數(shù)組book中沒(méi)找到該書(shū),那么提示“輸入的書(shū)號(hào)有誤,請(qǐng)重新輸入?。患僭O(shè)找到該書(shū),那么先判斷該書(shū)的庫(kù)存量是否為0,假設(shè)庫(kù)存量為0那么提示抱歉!該書(shū)庫(kù)存量為0,無(wú)法借閱!。假設(shè)庫(kù)存量大于0,那么將該書(shū)借給學(xué)生,此時(shí)需要進(jìn)行以下6步操作:step1 將該書(shū)的庫(kù)存量減1;step2 學(xué)生借書(shū)卡的借閱標(biāo)記flag置1;step3 學(xué)生借書(shū)卡的書(shū)號(hào)填寫(xiě)上該書(shū)的書(shū)號(hào);step4 學(xué)生借書(shū)卡的借閱時(shí)間賦值為系統(tǒng)時(shí)間

19、;為了提取系統(tǒng)時(shí)間,首先定義一個(gè)結(jié)構(gòu)體變量d:struct tm d; 結(jié)構(gòu)體類(lèi)型struct tm定義在文件“time.h中,具體定義如下:struct tm int tm_sec; / seconds after the minute - 0,59 int tm_min; / minutes after the hour - 0,59 int tm_hour; / hours since midnight - 0,23 int tm_mday; / day of the month - 1,31 int tm_mon; / months since January - 0,11 int t

20、m_year; / years since 1900 int tm_wday; / days since Sunday - 0,6 int tm_yday; / days since January 1 - 0,365 int tm_isdst; / daylight savings time flag ;這里我們需要使用其中的3個(gè)成員:tm_year、tm_mon和tm_mday。通過(guò)調(diào)用函數(shù)_getsystime(&d); 可以得到系統(tǒng)時(shí)間,假設(shè)用下面語(yǔ)句輸出日期:printf(%d.%d.%d, d.tm_year, d.tm_mon, d.tm_mday); 假設(shè)借書(shū)日期是,那么會(huì)輸出

21、,假設(shè)借書(shū)日期為,那么會(huì)輸出,這樣的輸出結(jié)果顯然不好,為了正確輸出或,必須對(duì)成員tm_year和tm_mon進(jìn)行處理,對(duì)于tm_mon的處理比擬簡(jiǎn)單,直接加1即可d.tm_mon+1,對(duì)于tm_year按下面方法處理:如果年份整除100等于0即年份=2000, 那么年份=2000+d.tm_year%100。step5 保存修改正的圖書(shū)信息和學(xué)生信息;step6 提示用戶(hù)借書(shū)成功。最后詢(xún)問(wèn)學(xué)生是否繼續(xù)借書(shū)嗎?(y/n),假設(shè)學(xué)生輸入y,那么重復(fù)上面的借書(shū)過(guò)程;假設(shè)輸入n,那么返回到學(xué)生功能選擇菜單界面。函數(shù)ReturnBook()用來(lái)實(shí)現(xiàn)還書(shū)管理。還書(shū)時(shí),首先統(tǒng)計(jì)該生有幾張已使用的借書(shū)卡,將數(shù)

22、據(jù)存放在變量t中,假設(shè)t為0,說(shuō)明該生目前根本沒(méi)有借閱的圖書(shū),無(wú)法進(jìn)行還書(shū)操作;假設(shè)t大于0,那么可進(jìn)行還書(shū)操作,先輸入書(shū)號(hào),在學(xué)生的借書(shū)卡中尋找,假設(shè)沒(méi)找到該書(shū)號(hào),那么提示輸入的書(shū)號(hào)有誤,請(qǐng)重新輸入?。患僭O(shè)找到該書(shū)號(hào),那么通過(guò)以下6個(gè)步驟進(jìn)行還書(shū):step1 學(xué)生借書(shū)卡的借閱標(biāo)記flag置0;step2 學(xué)生借書(shū)卡的書(shū)號(hào)置空;step3 學(xué)生借書(shū)卡的借閱時(shí)間清0;step4 變量t減1;step5 在數(shù)組book中尋找該書(shū)號(hào),找到后其庫(kù)存量加1;step6保存修改正的圖書(shū)信息和學(xué)生信息。最后詢(xún)問(wèn)學(xué)生是否繼續(xù)還書(shū)嗎?(y/n),假設(shè)學(xué)生輸入y,那么重復(fù)上面的還書(shū)過(guò)程;假設(shè)輸入n,那么返回到學(xué)生

23、功能選擇菜單界面。局部源程序代碼#include#include#include#include#include/ 結(jié)構(gòu)體類(lèi)型的定義typedef struct date /日期類(lèi)型 short year; /年 short month; /月 short day; /日 SDATE;typedef struct library_card /借書(shū)卡類(lèi)型 short flag; /是否借閱標(biāo)記 char ISBN20; /所借圖書(shū)的書(shū)號(hào) SDATE bor_time; /借閱時(shí)間SLCARD;typedef struct stud /學(xué)生類(lèi)型 char num15; /學(xué)號(hào) char name2

24、0; /姓名 SLCARD card5; /借書(shū)卡SSTUD;typedef struct book /圖書(shū)類(lèi)型 char ISBN20; /書(shū)號(hào) char bookname40; /書(shū)名 char author20; /作者 char publisher30; /出版社 char bookclass20; /圖書(shū)分類(lèi) short total_num, stock_num; /總量,庫(kù)存量 float price; /單價(jià) SDATE publish_time; /出版時(shí)間SBOOK;#define SDATE_LEN sizeof(SDATE) /SDATE_LEN為日期類(lèi)型占用存儲(chǔ)空間的大

25、小#define SLCARD_LEN sizeof(SLCARD) /SLCARD_LEN為借書(shū)卡類(lèi)型占用存儲(chǔ)空間的大小#define SSTUD_LEN sizeof(SSTUD) /SSTUD_LEN為學(xué)生類(lèi)型占用存儲(chǔ)空間的大小#define SBOOK_LEN sizeof(SBOOK) /SBOOK_LEN為圖書(shū)類(lèi)型占用存儲(chǔ)空間的大小#define BOOKNUM 1000 /圖書(shū)總數(shù),可按需要更改其數(shù)值#define STUDNUM 100 /學(xué)生總數(shù),可按需要更改其數(shù)值SSTUD studentSTUDNUM=0; /學(xué)生數(shù)組(全局變量)SBOOK bookBOOKNUM=0;

26、/圖書(shū)數(shù)組(全局變量)/函數(shù)聲明void ManagerLogin(int *pbn, int *psn); /管理員登錄函數(shù)void StudentLogin(int bn, int sn); /學(xué)生登錄函數(shù)void InputOnebook(int i); /輸入一本圖書(shū)信息的函數(shù)int LoadBooks(void); /從文件載入全部圖書(shū)信息的函數(shù)void SaveOnebook(int i); /保存一本圖書(shū)信息的函數(shù)void SaveAllbooks(int bn); /保存全部圖書(shū)信息的函數(shù)int OriginalBook(void); /圖書(shū)信息初始化的函數(shù)void Modif

27、yBook(int bn); /修改圖書(shū)信息的函數(shù)int AddBook(int bn); /添加圖書(shū)信息的函數(shù)int DelBook(int bn); /刪除圖書(shū)信息的函數(shù)void OutputOnebook(int i); /輸出一本圖書(shū)信息的函數(shù)void OutputAllbooks(int bn); /輸出全部圖書(shū)詳細(xì)信息的函數(shù)void OutputBrief(int bn); /輸出全部圖書(shū)簡(jiǎn)要信息的函數(shù)void InputOnestud(int i); /輸入一個(gè)學(xué)生信息的函數(shù)int LoadStuds(void); /從文件載入全部學(xué)生信息的函數(shù)void SaveOnestud(

28、int i); /保存一個(gè)學(xué)生信息的函數(shù)void SaveAllstuds(int sn); /保存全部學(xué)生信息的函數(shù)int OriginalStud(void); /學(xué)生信息初始化的函數(shù)void ModifyStud(int sn); /修改學(xué)生信息的函數(shù)int AddStud(int sn); /添加學(xué)生信息的函數(shù)int DelStud(int sn); /刪除學(xué)生信息的函數(shù)void OutputOnestud(int i); /輸出一個(gè)學(xué)生信息的函數(shù)void OutputAllstuds(int sn); /輸出全部學(xué)生信息的函數(shù)void SearchMenu(int bn); /圖書(shū)查

29、詢(xún)函數(shù)void SearcBname (int bn); /按書(shū)名查詢(xún)函數(shù)void SearchAuthor(int bn); /按作者查詢(xún)函數(shù)void SearchBclass(int bn); /按圖書(shū)分類(lèi)查詢(xún)函數(shù) void SearchPublisher(int bn); /按出版社查詢(xún)函數(shù)void SearchPubtime(int bn); /按出版時(shí)間查詢(xún)函數(shù)void BorrowBook(int bn,int m); /借書(shū)函數(shù)void ReturnBook(int bn,int m); /還書(shū)函數(shù)void main(void) / main函數(shù)定義 int select, bn

30、, sn; bn=LoadBooks(); /調(diào)用LoadBooks(),返回值為圖書(shū)數(shù)量,將其賦值給bn if(bn=0) printf( 圖書(shū)信息為空!nn); sn=LoadStuds(); /調(diào)用LoadStuds(),返回值為學(xué)生人數(shù),將其賦值給sn if(sn=0) printf( 學(xué)生信息為空!nn); while(1) printf(n); printf(t-n); printf(t* *n); printf(t* 圖書(shū)借閱管理系統(tǒng) *n); printf(t* *n); printf(t-nn); printf(t 1. 管理員n); printf(t 2. 學(xué)生n); pr

31、intf(t 0. 退出系統(tǒng)nn); printf(t 請(qǐng)選擇用戶(hù):); scanf(%d, & select); getchar(); /該函數(shù)用于讀取回車(chē)符,消除對(duì)以后數(shù)據(jù)輸入的影響 switch(select) case 1: ManagerLogin(&bn,&sn); break; case 2: StudentLogin(bn,sn); break; case 0: printf(n 謝謝使用!再見(jiàn)n); exit(1); default: printf(n 按鍵錯(cuò)誤,請(qǐng)重新選擇!n); /end switch /end while/用戶(hù)登錄模塊的函數(shù)定義/=/ 功能:實(shí)現(xiàn)管理員登

32、錄, 顯示管理員用戶(hù)的菜單,進(jìn)行功能選擇/ 參數(shù):pbn、psn分別為main函數(shù)中變量bn、sn的地址/ 返回:無(wú)/ 主要思路:用strcmp函數(shù)實(shí)現(xiàn)密碼驗(yàn)證,用switch結(jié)構(gòu)實(shí)現(xiàn)菜單功能選擇/=/void ManagerLogin(int *pbn, int *psn) int select, flag=0; char password11; /密碼最多為10位 printf(n 請(qǐng)輸入密碼:); gets(password); if(strcmp(password, 123)!=0) /密碼按需要事先設(shè)置好,這里假設(shè)為“123” printf(n 密碼錯(cuò)誤!n); return; /假

33、設(shè)密碼錯(cuò)誤,返回主菜單 while(1) printf(n); printf( 管理員,您好!n); printf(-n); printf( 1. 圖書(shū)信息初始化 7. 學(xué)生信息初始化n); printf( 2. 修改圖書(shū)信息 8. 修改學(xué)生信息n); printf( 3. 增加圖書(shū)信息 9. 增加學(xué)生信息n); printf( 4. 刪除圖書(shū)信息 10. 刪除學(xué)生信息n); printf( 5. 輸出圖書(shū)信息 11. 輸出學(xué)生信息n); printf( 6. 圖書(shū)信息查詢(xún) 0. 返回主菜單n); printf(n 請(qǐng)選擇您需要的效勞(0-11):); scanf(%d, & select);

34、 getchar(); switch(select) case 1: *pbn=OriginalBook(); break; case 2: ModifyBook(*pbn); break; case 3: *pbn=AddBook(*pbn); break; case 4: *pbn=DelBook(*pbn); break; case 5: printf( 輸出詳細(xì)信息請(qǐng)按1, 輸出簡(jiǎn)要信息請(qǐng)按2:); scanf(%d, &flag); getchar(); if(flag=1) OutputAllbooks(*pbn); if(flag=2) OutputBrief(*pbn); br

35、eak; case 6: SearchMenu(*pbn); break; case 7: *psn=OriginalStud(); break; case 8: ModifyStud(*psn); break; case 9: *psn=AddStud(*psn); break; case 10: *psn=DelStud(*psn); break; case 11: OutputAllstuds(*psn); break; case 0: return; default: printf(n 按鍵錯(cuò)誤,請(qǐng)重新選擇!n); /end switch /end while/=/ 功能:實(shí)現(xiàn)學(xué)生登錄

36、, 顯示學(xué)生用戶(hù)菜單,進(jìn)行功能選擇/ 參數(shù):bn表示圖書(shū)數(shù)量,sn表示學(xué)生人數(shù)/ 返回:無(wú)/ 主要思路:用strcmp函數(shù)實(shí)現(xiàn)學(xué)號(hào)驗(yàn)證,用switch結(jié)構(gòu)實(shí)現(xiàn)菜單功能選擇/=/void StudentLogin(int bn, int sn) int select, j, m=-1; char snum15; /數(shù)組snum用來(lái)存放登錄學(xué)生的學(xué)號(hào) if(sn=0) printf(n 學(xué)生信息為空,無(wú)法執(zhí)行操作!n); return; while(1) printf(n 請(qǐng)輸入你的學(xué)號(hào):); gets(snum); for(j=0; jsn; j+) /在學(xué)生數(shù)組中查找輸入的學(xué)號(hào) if(strc

37、mp(studentj.num, snum)=0) m=j; /找到該學(xué)號(hào)后記錄其下標(biāo) break; if(m0) /m小于0表示數(shù)組中沒(méi)有找到輸入的學(xué)號(hào)printf(n 學(xué)號(hào)錯(cuò)誤,請(qǐng)重新輸入!n); else /m大于等于0,表示存在這個(gè)學(xué)生的信息while(1) printf(n); printf( 同學(xué),你好!n); printf(-n); printf( 1. 輸出個(gè)人借書(shū)信息n); printf( 2. 圖書(shū)信息查詢(xún)n); printf( 3. 借書(shū)n); printf( 4. 還書(shū)n); printf( 0. 返回主菜單n); printf(n 請(qǐng)選擇你需要的效勞(0-4):);

38、scanf(%d, & select); getchar(); switch(select) case 1: OutputOnestud(m); break; case 2: SearchMenu(bn); break; case 3: BorrowBook(bn, m); break; case 4: ReturnBook(bn, m); break; case 0: return; default: printf(n 按鍵錯(cuò)誤,請(qǐng)重新選擇!n); /end switch /圖書(shū)信息管理模塊的函數(shù)定義/=/ 功能:從鍵盤(pán)輸入一本圖書(shū)的全部信息/ 參數(shù):i表示對(duì)第i本圖書(shū)進(jìn)行輸入操作/ 返回:

39、無(wú)/ 主要思路:按提示信息用scanf輸入圖書(shū)的各項(xiàng)信息,存放到數(shù)組book中 /=/void InputOnebook(int i) printf( 書(shū)號(hào):); gets(booki.ISBN); printf( 書(shū)名:); gets(booki.bookname); printf( ); gets(booki.author); 略 /=/ 功能:從文件“book.dat中載入全部圖書(shū)的信息 / 參數(shù): 無(wú)/ 返回:返回文件中圖書(shū)的數(shù)量/ 主要思路:用while循環(huán)從文件中讀取圖書(shū)信息到數(shù)組book,同時(shí)統(tǒng)計(jì)圖書(shū)數(shù)量/=/int LoadBooks(void) FILE *fb; int b

40、n=0; /變量bn用來(lái)記錄圖書(shū)的數(shù)量 if(fb=fopen(book.dat, rb+)=NULL) /以二進(jìn)制讀、寫(xiě)方式翻開(kāi)文件 printf(cant open file book.datn); return(bn); /文件翻開(kāi)失敗時(shí),返回值為0 while(!feof(fb) /文件沒(méi)有結(jié)束時(shí)進(jìn)行讀數(shù)據(jù)操作 if(fread(&bookbn, SBOOK_LEN,1,fb) bn+; /從文件中每讀一本圖書(shū),圖書(shū)數(shù)量加1 fclose(fb); /關(guān)閉文件 return(bn); /返回圖書(shū)數(shù)量,即bn的值/=/ 功能:將一本圖書(shū)的信息保存到文件“book.dat中/ 參數(shù):i表示

41、將第i本圖書(shū)的信息保存到文件中/ 返回:無(wú)/ 主要思路:先用fseek函數(shù)定位,再用fwrite函數(shù)寫(xiě)入第i本圖書(shū)的信息/=/void SaveOnebook(int i) 略/=/ 功能:將全部圖書(shū)的信息保存到文件“book.dat中/ 參數(shù):bn表示圖書(shū)的數(shù)量/ 返回:無(wú)/ 主要思路:用fwrite函數(shù)將數(shù)組book中的數(shù)據(jù)一次性寫(xiě)入文件/=/void SaveAllbooks(int bn) 略 /=/ 功能:實(shí)現(xiàn)圖書(shū)信息的初始化 / 參數(shù):無(wú) / 返回:輸入圖書(shū)的數(shù)量/ 主要思路:用for循環(huán)實(shí)現(xiàn)輸入多本圖書(shū)信息,并寫(xiě)入文件/=/int OriginalBook(void) int n

42、; char c=y; for(n=0; c=y|c=Y; n+) printf(n 輸入圖書(shū)%d的信息:n, n+1); InputOnebook(n); /調(diào)用函數(shù),輸入第n本圖書(shū) printf(n 繼續(xù)輸入請(qǐng)按y, 停止請(qǐng)按n:); c=getchar(); getchar(); SaveAllbooks(n); /將輸入的n本圖書(shū)的數(shù)據(jù)保存至文件 return(n); /返回n的值,即輸入圖書(shū)的數(shù)量 /=/ 功能:修改圖書(shū)信息/ 參數(shù):bn表示圖書(shū)的數(shù)量 / 返回:無(wú)/ 主要思路:通過(guò)switch實(shí)現(xiàn)修改圖書(shū)的任意信息項(xiàng),并將修改后的信息寫(xiě)入文件/=/void ModifyBook(i

43、nt bn) int select, k=-1; char isbn20, c1=y, c2; if(bn=0) printf(n 圖書(shū)信息為空,無(wú)法執(zhí)行操作!n); return; /返回到管理員功能選擇菜單while(c1=y|c1=Y) c2=y; printf(n 請(qǐng)輸入要修改的圖書(shū)的書(shū)號(hào):); gets(isbn); for(int i=0; ibn; i+) if(strcmp(booki.ISBN, isbn )=0) k=i; break; if(kbookk.total_num) bookk.stock_num=bookk.total_num; break; case 8:

44、printf( 單價(jià):); scanf(%f, &bookk.price); getchar(); break; case 9: printf( 出版時(shí)間年.月:); scanf(%d.%d, &booki.publish_time.year,&booki.publish_time.month); getchar(); break; default: printf(n 按鍵錯(cuò)誤,請(qǐng)重新輸入!n); /end switch printf(n 還要修改此圖書(shū)的其他信息嗎?(y/n):); c2=getchar(); getchar(); /end while(c2) SaveOnebook(k);

45、 /保存修改后的圖書(shū)信息 printf(n 還需要修改其它圖書(shū)的信息嗎?(y/n):); c1=getchar(); getchar(); /end while(c1);printf(n 按任意鍵繼續(xù)!n); getch(); /=/ 功能:添加圖書(shū)信息/ 參數(shù):bn表示添加前的圖書(shū)數(shù)量/ 返回:添加后的圖書(shū)數(shù)量/ 主要思路:調(diào)用InputOnebook函數(shù)輸入要添加的圖書(shū)信息,再用fwrite將其寫(xiě)入文件/=/int AddBook(int bn) char c=y; FILE *fb; if(fb=fopen(book.dat,ab)=NULL) / 以二進(jìn)制追加方式翻開(kāi)文件 printf

46、(cant open file book.datn); exit(1); while(c=y|c=Y) printf(n 請(qǐng)輸入新增圖書(shū)的信息:n); InputOnebook(bn); /調(diào)用函數(shù),輸入第bn本圖書(shū)的信息 fwrite(&bookbn,SBOOK_LEN,1,fb); /將第bn本圖書(shū)的信息保存至文件 bn+; /圖書(shū)數(shù)量加1 printf(n 繼續(xù)輸入其它新圖書(shū)的信息嗎?(y/n):); c=getchar(); getchar(); printf(n 按任意鍵繼續(xù)!n); getch(); fclose(fb); return(bn); /返回添加圖書(shū)后的圖書(shū)數(shù)量/=/

47、功能:刪除圖書(shū)信息/ 參數(shù):bn表示刪除前的圖書(shū)數(shù)量 / 返回:刪除后的圖書(shū)數(shù)量/ 主要思路:先輸入要?jiǎng)h除圖書(shū)的書(shū)號(hào),找到該書(shū)后進(jìn)行刪除操作,再調(diào)用SaveAllbooks/ 函數(shù)將刪除后的圖書(shū)信息寫(xiě)入文件/=/int DelBook(int bn) int i, k=-1; char isbn20, c1=y, c2; if(bn=0) printf(n 圖書(shū)信息為空,無(wú)法執(zhí)行操作!n); return(bn); while(c1=y|c1=Y) c2=n; printf(n 請(qǐng)輸入要?jiǎng)h除的圖書(shū)的書(shū)號(hào):); gets(isbn); for(i=0; ibn; i+) if(strcmp(bo

48、oki.ISBN, isbn)=0) k=i; break; /找到要?jiǎng)h除的圖書(shū),用k記錄其下標(biāo) if(k0) /k小于0,表示沒(méi)找到輸入書(shū)號(hào)所對(duì)應(yīng)的圖書(shū)printf(n 輸入的書(shū)號(hào)有誤,請(qǐng)重新輸入!n);else printf(n 顯示該圖書(shū)的信息:n); OutputOnebook(k); printf(n 確定要?jiǎng)h除該圖書(shū)的全部信息嗎?(y/n):); c2=getchar(); getchar(); if(c2=y) /c2為y,表示確定進(jìn)行刪除操作 for(i=k; ibn; i+) booki=booki+1; /從數(shù)組中刪除第k本圖書(shū) bn-; /圖書(shū)數(shù)量減1 printf(n

49、成功刪除!n); else /c2為n,表示不進(jìn)行刪除操作printf(n 取消刪除!n); printf(n 繼續(xù)刪除其它圖書(shū)的信息嗎?(y/n):); c1=getchar(); getchar(); /end whileSaveAllbooks(bn); /保存刪除后的全部圖書(shū)信息 printf(n 按任意鍵繼續(xù)!n); getch();return(bn); /返回刪除后的圖書(shū)數(shù)量/=/ 功能:輸出一本圖書(shū)的全部信息 / 參數(shù):i表示對(duì)第i本圖書(shū)進(jìn)行輸出操作 / 返回:無(wú)/ 主要思路:用printf函數(shù)輸出一本圖書(shū)的全部信息/=/void OutputOnebook(int i) 略

50、/=/ 功能:輸出全部圖書(shū)的詳細(xì)信息/ 參數(shù):bn表示圖書(shū)的數(shù)量 / 返回:無(wú)/ 主要思路:通過(guò)for循環(huán)屢次調(diào)用OutputOnebook函數(shù)輸出全部圖書(shū)的信息/=/void OutputAllbooks(int bn) 略/=/ 功能:以列表方式輸出全部圖書(shū)的簡(jiǎn)要信息/ 參數(shù):bn表示圖書(shū)的數(shù)量 / 返回:無(wú)/ 主要思路:用for循環(huán)輸出全部圖書(shū)的簡(jiǎn)要信息書(shū)號(hào)、書(shū)名、作者、庫(kù)存量/=/void OutputBrief(int bn) int i; printf(n 全部圖書(shū)的簡(jiǎn)要信息:n);printf(n 序號(hào) 書(shū)號(hào) 書(shū)名 作者 庫(kù)存量 n);for(i=0;ibn;i+) printf

51、( %2d %-18s %-20s, i+1, booki.ISBN, booki.bookname); printf( %-8s %2dn, booki.author, booki.stock_num); printf(n 按任意鍵繼續(xù)!n); getch();/學(xué)生信息管理模塊的函數(shù)定義/=/ 功能:輸入一個(gè)學(xué)生信息/ 參數(shù):i表示對(duì)第i個(gè)學(xué)生進(jìn)行輸入操作/ 返回:無(wú)/ 主要思路:用gets函數(shù)輸入學(xué)生的學(xué)號(hào)和姓名/=/void InputOnestud(int i) 略 /=/ 功能:從文件“stud.dat中載入全部學(xué)生的信息 / 參數(shù): 無(wú)/ 返回:返回文件中學(xué)生的人數(shù)/ 主要思路:

52、用while循環(huán)從文件中讀取學(xué)生信息到數(shù)組student,同時(shí)統(tǒng)計(jì)學(xué)生人數(shù)/=/int LoadStuds(void) 參考LoadBooks函數(shù) /=/ 功能:保存一個(gè)學(xué)生信息/ 參數(shù):i表示將第i個(gè)學(xué)生的信息保存到文件中/ 返回:無(wú)/ 主要思路:先用fseek函數(shù)定位,再用fwrite函數(shù)寫(xiě)入第i個(gè)學(xué)生的信息/=/void SaveOnestud(int i) FILE *fs; if(fs=fopen(stud.dat,rb+)=NULL) /以二進(jìn)制讀、寫(xiě)方式翻開(kāi)文件 printf(cant open file stud.datn); exit(1); fseek(fs, SSTUD_

53、LEN*i, 0); /文件指針定位到第i個(gè)學(xué)生 fwrite(&studenti, SSTUD_LEN, 1, fs); /將第i個(gè)學(xué)生的信息寫(xiě)入文件 fclose(fs);/=/ 功能:將全部學(xué)生信息保存到文件“stud.dat中/ 參數(shù):sn表示學(xué)生人數(shù)/ 返回:無(wú)/ 主要思路:用fwrite函數(shù)將數(shù)組student中的數(shù)據(jù)一次性寫(xiě)入文件/=/void SaveAllstuds(int sn) 略/=/ 功能:實(shí)現(xiàn)學(xué)生信息的初始化 / 參數(shù):無(wú)/ 返回:學(xué)生人數(shù)/ 主要思路:用for循環(huán)屢次調(diào)用InputOnestud函數(shù)實(shí)現(xiàn)輸入多個(gè)學(xué)生信息,并寫(xiě)入文件/=/int OriginalSt

54、ud(void) int n; char c=y; for(n=0; c=y|c=Y; n+) printf(n 輸入學(xué)生%d的信息:n, n+1); InputOnestud(n); /調(diào)用函數(shù),輸入第n個(gè)學(xué)生的信息 printf(n 繼續(xù)輸入請(qǐng)按y; 停止請(qǐng)按n:); c=getchar(); getchar(); SaveAllstuds(n); /將輸入的n個(gè)學(xué)生的信息保存到文件中 return(n); /返回學(xué)生人數(shù),即n的值/=/ 功能:修改學(xué)生信息 / 參數(shù):sn表示學(xué)生人數(shù)/ 返回:無(wú)/ 主要思路:通過(guò)switch實(shí)現(xiàn)修改學(xué)生的任意信息項(xiàng),并將修改后的信息寫(xiě)入文件/=/void

55、 ModifyStud(int sn) 修改方法與ModifyBook函數(shù)類(lèi)似,代碼略。/=/ 功能:添加學(xué)生信息 / 參數(shù):sn表示添加前的學(xué)生人數(shù)/ 返回:添加后的學(xué)生人數(shù)/ 主要思路:調(diào)用InputOnestud函數(shù)輸入要添加的學(xué)生信息,再用fwrite將其寫(xiě)入文件/=/int AddStud(int sn) 添加方法與AddBook函數(shù)類(lèi)似,代碼略。/=/ 功能:刪除學(xué)生信息/ 參數(shù):sn表示刪除前的學(xué)生人數(shù)/ 返回:刪除后的學(xué)生人數(shù)/ 主要思路:先輸入要?jiǎng)h除學(xué)生的學(xué)號(hào),找到該學(xué)生后進(jìn)行刪除操作,再調(diào)用SaveAllstuds/ 函數(shù)將刪除后的學(xué)生信息寫(xiě)入文件/=/int DelStu

56、d(int sn) 刪除方法與DelBook函數(shù)類(lèi)似,代碼略。/=/ 功能:輸出一個(gè)學(xué)生信息/ 參數(shù):i表示輸出第i個(gè)學(xué)生的信息/ 返回:無(wú)/ 主要思路:輸出一個(gè)學(xué)生信息,并輸出目前所借圖書(shū)的書(shū)號(hào)和借閱時(shí)間/=/void OutputOnestud(int i) 略/=/ 功能:輸出全部學(xué)生信息/ 參數(shù):sn表示學(xué)生人數(shù)/ 返回:無(wú)/ 主要思路:用for循環(huán)輸出全部學(xué)生的信息/=/void OutputAllstuds(int sn) int i, j, t; printf(n 全部學(xué)生的信息:n); printf(n 序號(hào) 學(xué)號(hào) 姓名 所借圖書(shū)書(shū)號(hào) 借閱時(shí)間n); for(i=0; isn;

57、 i+) printf( %2d %10s %6s , i+1, studenti.num, ); for(j=0,t=0; j5; j+) if(studenti.cardj.flag) if (t) printf(n%26c, ); /輸出空格 printf( %-20s,studenti.cardj.ISBN); printf(%d.%d.%d, studenti.cardj.bor_time.year, studenti.cardj.bor_time.month,studenti.cardj.bor_time.day); t=1; printf(nn); pr

58、intf(n 按任意鍵繼續(xù)!n); getch();/圖書(shū)查詢(xún)模塊的函數(shù)定義/=/ 功能:顯示圖書(shū)查詢(xún)菜單,實(shí)現(xiàn)功能選擇 / 參數(shù):bn表示圖書(shū)的數(shù)量/ 返回:無(wú)/ 主要思路:采用switch結(jié)構(gòu)實(shí)現(xiàn)圖書(shū)查詢(xún)功能的選擇/=/void SearchMenu(int bn) /函數(shù)功能是顯示圖書(shū)查詢(xún)菜單 int select; while(1) printf(n 歡送使用圖書(shū)查詢(xún)效勞n); printf(-n); printf( 1. 按書(shū)名查詢(xún) 2. 按作者查詢(xún)n); printf( 3. 按出版社查詢(xún) 4. 按出版時(shí)間查詢(xún)n); printf( 5. 按圖書(shū)分類(lèi)查詢(xún) 0. 退出查詢(xún)效勞n);

59、printf(n 請(qǐng)選擇查詢(xún)方式(0-5):); scanf(%d, & select); getchar(); switch(select) case 1: SearcBname (bn); break; case 2: SearchAuthor(bn); break; case 3: SearchPublisher(bn); break; case 4: SearchPubtime(bn); break; case 5: SearchBclass(bn); break; case 0: return; default: printf(n 按鍵錯(cuò)誤,請(qǐng)重新選擇!n); /=/ 功能:按書(shū)名進(jìn)

60、行圖書(shū)查詢(xún)/ 參數(shù):bn表示圖書(shū)的數(shù)量/ 返回:無(wú)/ 主要思路:輸入書(shū)名,先用strcmp函數(shù)進(jìn)行精確查詢(xún),假設(shè)無(wú)查詢(xún)結(jié)果,再用strstr函數(shù)/ 進(jìn)行模糊查詢(xún)/=/void SearcBname (int bn) int i, j, k; char bname40, c=y; while(c=y|c=Y) k=-1; printf(n 請(qǐng)輸入書(shū)名:); gets(bname); for(i=0,j=1; ibn; i+) if(strcmp(booki.bookname, bname)=0) /精確查詢(xún) k=i; printf(n 圖書(shū)%d的信息:n, j+); OutputOnebook(

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論