




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、圖書借閱管理系統(tǒng) 圖書借閱管理是圖書館一個(gè)最基本的工作,這里用C語(yǔ)言的知識(shí)設(shè)計(jì)開發(fā)一個(gè)簡(jiǎn)單的圖書借閱管理系統(tǒng),系統(tǒng)主要實(shí)現(xiàn)圖書信息和學(xué)生信息的管理,圖書查詢及圖書借閱管理。 系統(tǒng)設(shè)計(jì)要求 系統(tǒng)主要實(shí)現(xiàn)以下六個(gè)功能: 用戶登錄。系統(tǒng)用戶分為管理員和學(xué)生。管理員登錄時(shí)必須輸入密碼,密碼正確才能進(jìn)入系統(tǒng);學(xué)生登錄時(shí)無需密碼,輸入學(xué)號(hào)即可。 圖書信息管理。圖書信息包括:書號(hào)、書名、作者、圖書分類、出版社、出版時(shí)間、單價(jià)、總量和庫(kù)存量。圖書信息管理包括:輸入圖書信息(從鍵盤或從文件)、保存圖書信息、修改圖書信息、增加圖書信息、刪除圖書信息和輸出圖書信息。 學(xué)生信息管理。學(xué)生信息包括:學(xué)號(hào)、姓名、借書卡(
2、借閱標(biāo)記、書號(hào)、借閱時(shí)間)。學(xué)生信息管理包括:輸入學(xué)生信息(從鍵盤或從文件)、保存學(xué)生信息、修改學(xué)生信息、增加學(xué)生信息、刪除學(xué)生信息和輸出學(xué)生信息。 圖書查詢功能。圖書查詢分為:按書名查詢、按作者查詢、按圖書分類查詢、按出版社查詢和按出版時(shí)間查詢。 借書功能。借書時(shí),先判斷學(xué)生是否有空閑的借書卡,若沒有則應(yīng)輸出提示信息;若有空閑的借書卡,則要求學(xué)生輸入所借圖書的書號(hào),若該書庫(kù)存量不為0,則將該書借出,同時(shí)在借書卡上記錄該書的書號(hào)和借閱時(shí)間,并修改該書的庫(kù)存量。 還書功能。還書時(shí),先檢查學(xué)生的借書卡,若借書卡都為空,則不能進(jìn)行還書操作,若有借書卡不為空,則可以還書,此時(shí)要求學(xué)生輸入所還圖書的書號(hào)
3、,將對(duì)應(yīng)借書卡上的記錄清零,并修改該書的庫(kù)存量。 系統(tǒng)總體設(shè)計(jì) 1. 功能模塊圖用戶登錄管理模塊圖書借閱管理系統(tǒng)圖書信息管理模塊學(xué)生信息管理模塊圖書信息查詢模塊圖書借閱管理模塊系統(tǒng)功能模塊圖管理員登錄學(xué)生登錄輸入圖書信息保存圖書信息修改圖書信息增加圖書信息刪除圖書信息輸出圖書信息輸入學(xué)生信息保存學(xué)生信息修改學(xué)生信息增加學(xué)生信息刪除學(xué)生信息輸出學(xué)生信息按書名查詢按作者查詢按圖書分類查詢按出版社查詢按出版時(shí)間查詢借書管理還書管理2. 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)系統(tǒng)共定義了四個(gè)結(jié)構(gòu)體類型,包括日期類型、借書卡類型、圖書類型和學(xué)生類型,其中在圖書類型中要使用日期類型,而在學(xué)生類型中要使用日期和借書卡類型,定義如下:
4、typedef struct date /日期類型 short year; /年 short month; /月 short day; /日 SDATE;typedef struct library_card /借書卡類型 Short flag; /是否借閱標(biāo)記 Char ISBN20; /所借圖書的書號(hào) SDATE bor_time; /借閱時(shí)間SLCARD;typedef struct student /學(xué)生類型 char num15; /學(xué)號(hào) char name20; /姓名 SLCARD card5; /借書卡(規(guī)定每人最多有5張)SSTUD;typedef struct book /
5、圖書類型 char ISBN20; /書號(hào) char bookname40; /書名 char author20; /作者 char publisher30; /出版社 char bookclass20; /圖書分類 short total_num, stock_num; /總量,庫(kù)存量 float price; /單價(jià) SDATE publish_time; /出版時(shí)間 SBOOK;系統(tǒng)定義了兩個(gè)全局變量數(shù)組,分別存放圖書信息和學(xué)生信息,因數(shù)組大小是固定的,為使用方便在系統(tǒng)中定義兩個(gè)符號(hào)常量,具體定義如下:#define BOOKNUM 1000 / BOOKNUM為系統(tǒng)允許的最大圖書數(shù)量#
6、define STUDNUM 100 / STUDNUM為系統(tǒng)允許的最多學(xué)生人數(shù)SSTUD studentSTUDNUM=0; /學(xué)生數(shù)組,初始化為0SBOOK bookBOOKNUM=0; /圖書數(shù)組,初始化為03. 功能模塊設(shè)計(jì)(1) main函數(shù)的設(shè)計(jì):由于圖書信息和學(xué)生信息都保存在文件中,系統(tǒng)運(yùn)行的第一個(gè)工作是從文件中將圖書信息和學(xué)生信息讀入到內(nèi)存數(shù)組book和數(shù)組student中,在讀入信息的過程中同時(shí)統(tǒng)計(jì)出目前圖書的數(shù)量和學(xué)生的人數(shù),并將數(shù)據(jù)分別存放在整型變量bn和sn中,bn為圖書數(shù)量,sn為學(xué)生人數(shù)。如果bn=0或sn=0,系統(tǒng)會(huì)輸出提示信息,讓管理員輸入圖書信息和學(xué)生信息。然
7、后系統(tǒng)會(huì)顯示主菜單,用戶必須登錄后才能使用系統(tǒng)提供的各種服務(wù)。(2) 用戶登錄管理模塊包括2個(gè)函數(shù):ManagerLogin()和StudentLogin(),該模塊由main函數(shù)調(diào)用。函數(shù)ManagerLogin()用來完成管理員登錄工作,首先要求管理員用戶輸入密碼,若密碼錯(cuò)誤,則直接返回主菜單界面;密碼正確時(shí)將顯示管理員用戶的功能菜單,輸入數(shù)字可執(zhí)行相應(yīng)的功能。函數(shù)StudentLogin()用來完成學(xué)生登錄工作,要求學(xué)生輸入學(xué)號(hào),若學(xué)號(hào)錯(cuò)誤則要求學(xué)生重新輸入學(xué)號(hào);輸入學(xué)號(hào)正確則顯示學(xué)生用戶的功能菜單,輸入數(shù)字可執(zhí)行相應(yīng)的功能。(3) 圖書信息管理模塊包括11個(gè)函數(shù):InputOneboo
8、k()、LoadBooks()、SaveOnebook()、SaveAllbooks()、OriginalBook()、ModifyBook()、AddBook()、DelBook()、OutputOnebook()、OutputAllbooks()和OutputBrief ()。只有管理員用戶可以調(diào)用圖書信息管理模塊。函數(shù)InputOnebook()用來實(shí)現(xiàn)從鍵盤輸入一本圖書的全部信息。函數(shù)LoadBooks()用來實(shí)現(xiàn)從文件“book.dat”中輸入全部圖書的信息,并將這些數(shù)據(jù)存放到內(nèi)存數(shù)組book中。函數(shù)SaveOnebook()用來實(shí)現(xiàn)將一本圖書的信息保存到文件“book.dat”中。
9、函數(shù)SaveAllbooks()用來實(shí)現(xiàn)將全部圖書的信息保存到文件“book.dat”中。函數(shù)OriginalBook()用來實(shí)現(xiàn)圖書信息的初始化,在程序第1次運(yùn)行時(shí)必須調(diào)用該函數(shù),輸入若干本圖書的信息,并將這些信息保存在文件中。該函數(shù)是通過循環(huán)多次調(diào)用InputOnebook()函數(shù)實(shí)現(xiàn)多本圖書信息的輸入,然后調(diào)用SaveAllbooks()函數(shù)將已輸入的所有圖書的信息保存在文件“book.dat”中。函數(shù)ModifyBook()用來實(shí)現(xiàn)對(duì)圖書信息的修改,用戶首先輸入書號(hào),書號(hào)錯(cuò)誤則輸出提示信息,要求用戶重新輸入;書號(hào)正確則用戶可以選擇要修改的數(shù)據(jù)項(xiàng)對(duì)圖書信息進(jìn)行修改(用switch結(jié)構(gòu)實(shí)現(xiàn)
10、),一本圖書的信息修改完畢后,調(diào)用SaveOnebook()函數(shù),將修改后的信息保存到文件中。然后詢問用戶是否繼續(xù)修改其他圖書的信息,用戶選擇y,則重復(fù)上述的修改過程;用戶選擇n,則結(jié)束函數(shù),返回到管理員菜單界面。函數(shù)AddBook()用來實(shí)現(xiàn)添加圖書信息,通過調(diào)用InputOnebook()函數(shù),從鍵盤輸入一本圖書的信息,然后將該信息寫入文件。然后詢問用戶是否繼續(xù)添加其他圖書的信息,用戶選擇y,則重復(fù)上述過程;用戶選擇n,則結(jié)束函數(shù),返回到管理員菜單界面。函數(shù)DelBook()用來實(shí)現(xiàn)刪除圖書信息,用戶首先輸入書號(hào),書號(hào)錯(cuò)誤則輸出提示信息,要求用戶重新輸入;書號(hào)正確則會(huì)先輸出該書號(hào)對(duì)應(yīng)圖書的
11、信息,然后詢問用戶是否確定要?jiǎng)h除該書的信息,用戶選擇y才能真正刪除該書信息。最后詢問用戶是否繼續(xù)刪除其他圖書的信息,用戶選擇y,則重復(fù)上述過程;用戶選擇n,則結(jié)束函數(shù),返回到管理員菜單界面。函數(shù)OutputOnebook()用來實(shí)現(xiàn)輸出一本圖書的全部信息。函數(shù)OutputAllbooks()通過多次調(diào)用OutputOnebook()函數(shù)來實(shí)現(xiàn)輸出全部圖書的信息。函數(shù)OutputBrief()用來實(shí)現(xiàn)以列表方式輸出全部圖書的簡(jiǎn)要信息,簡(jiǎn)要信息包括:書號(hào)、書名、作者和總量。(4) 學(xué)生信息管理模塊包括10個(gè)函數(shù):InputOnestud()、LoadStuds()、SaveOnestud()、Sa
12、veAllstuds()、OriginalStud()、ModifyStud()、AddStud()、DelStud()、OutputOnestud()和OutputAllstuds()。 管理員用戶可以使用學(xué)生信息管理模塊的全部功能,學(xué)生用戶只能使用該模塊中的一個(gè)功能,即OutputOnestud()函數(shù)(輸出一個(gè)學(xué)生的信息)。學(xué)生信息管理模塊中函數(shù)的實(shí)現(xiàn)方法與圖書信息管理中的類似,以下僅作簡(jiǎn)單說明。函數(shù)InputOnestud()用來實(shí)現(xiàn)從鍵盤輸入一個(gè)學(xué)生的信息。函數(shù)LoadStuds()用來實(shí)現(xiàn)從文件“stud.dat”中輸入全部學(xué)生的信息,并將這些數(shù)據(jù)存放到內(nèi)存數(shù)組student中。函
13、數(shù)SaveOnestud()用來實(shí)現(xiàn)將一各學(xué)生的信息保存到文件“stud.dat”中。函數(shù)SaveAllstuds()用來實(shí)現(xiàn)將全部學(xué)生的信息保存到文件“stud.dat”中。函數(shù)OriginalStud()用來實(shí)現(xiàn)學(xué)生信息的初始化,在程序第1次運(yùn)行時(shí)必須調(diào)用該函數(shù)。該函數(shù)是通過循環(huán)多次調(diào)用InputOnestud()函數(shù)實(shí)現(xiàn)多個(gè)學(xué)生信息的輸入,然后調(diào)用SaveAllstuds()函數(shù)將已輸入的所有學(xué)生的信息保存在文件“stud.dat”中。函數(shù)ModifyStud()用來實(shí)現(xiàn)學(xué)生信息的修改。函數(shù)AddStud()用來實(shí)現(xiàn)添加學(xué)生信息。函數(shù)DelStud()用來實(shí)現(xiàn)刪除學(xué)生信息。函數(shù)Outpu
14、tOnestud()用來實(shí)現(xiàn)輸出一個(gè)學(xué)生的全部信息。函數(shù)OutputAllstuds()用來實(shí)現(xiàn)輸出全部學(xué)生的基本信息(即學(xué)號(hào)和姓名)。(5) 圖書信息查詢模塊包括6個(gè)函數(shù):SearchMenu()、SearcBname()、SearchAuthor()、SearchBclass()、SearchPublisher()、SearchPubtime()。管理員和學(xué)生都可以使用圖書信息查詢模塊。 函數(shù)SearchMenu()用來顯示圖書查詢服務(wù)菜單,用戶輸入數(shù)字可執(zhí)行相應(yīng)的查詢服務(wù)。函數(shù)SearcBname()用來實(shí)現(xiàn)按書名進(jìn)行圖書信息的查詢。用戶可以輸入完整的書名進(jìn)行精確查詢(如輸入“C語(yǔ)言程序
15、設(shè)計(jì)”),精確查詢是使用字符串比較函數(shù)strcmp(),將輸入的書名與已有圖書的書名逐一進(jìn)行比較,當(dāng)該函數(shù)的返回值等于0,表示這兩個(gè)書名完全相同,即找到要查詢的圖書。另外,用戶也可以輸入書名中的幾個(gè)字進(jìn)行模糊查詢(如輸入“C語(yǔ)言”,或輸入“程序設(shè)計(jì)”),模糊查詢是使用求子串函數(shù)strstr(),在已有圖書的書名中尋找輸入的字符串,如果該函數(shù)的返回值不為空,則說明該書名中包含這個(gè)字符串,那么就應(yīng)該輸出這本圖書的信息。通常,模糊查詢會(huì)列出多個(gè)查詢結(jié)果。函數(shù)SearchAuthor()用來實(shí)現(xiàn)按作者姓名進(jìn)行圖書信息的查詢。用戶可以輸入完整的姓名進(jìn)行精確查詢(如輸入“譚浩強(qiáng)”),也可以只輸入姓氏進(jìn)行模
16、糊查詢(如只輸入“張”),具體方法與按書名查詢類似。函數(shù)SearchBclass()用來實(shí)現(xiàn)按圖書分類進(jìn)行圖書信息的查詢??紤]到用戶可能不能輸入完全正確的圖書分類名稱,所以在該函數(shù)中只采用模糊查詢方式。函數(shù) SearchPublisher()用來實(shí)現(xiàn)按出版社名稱進(jìn)行圖書信息的查詢。用戶在輸入出版社名稱時(shí),一般不會(huì)輸入“出版社”這三個(gè)字(如想查詢清華大學(xué)出版社的圖書,通常用戶會(huì)輸入“清華大學(xué)”),所以在該函數(shù)中也是只采用模糊查詢方式。函數(shù) SearchPubtime()用來實(shí)現(xiàn)按出版日期進(jìn)行圖書信息的查詢。使用該函數(shù)必須注意要按系統(tǒng)規(guī)定的格式輸入日期,若想查詢2004年5月份出版的圖書,則應(yīng)輸入
17、“2004.5”;若想查詢2004年出版的圖書,則應(yīng)輸入“2004”。假設(shè)輸入日期為“2004.5”,進(jìn)行查詢時(shí),先判斷輸入的年份與出版日期中的年份是否相等,若不相等則結(jié)束本次循環(huán),若相等則用變量k記錄其下標(biāo),然后再判斷月份是否相等,月份若不相等則用continue結(jié)束本次循環(huán),月份若相等則可輸出這本書(即第k本書)的信息,然后再繼續(xù)判斷下一本圖書。(6) 圖書借閱管理模塊包括2個(gè)函數(shù):BorrowBook()和ReturnBook()函數(shù)。 函數(shù)BorrowBook()用來實(shí)現(xiàn)借書管理。由學(xué)生類型定義可知,每個(gè)學(xué)生有5張借書卡,借書卡的信息包括:借閱標(biāo)記flag、所借圖書的書號(hào)ISBN和借閱
18、時(shí)間bor_time。借書時(shí),首先查找學(xué)生是否有空閑的借書卡(即判斷該生借書卡的借閱標(biāo)記flag是否為0),若flag為0,則可以借書,這時(shí)要求學(xué)生輸入要借圖書的書號(hào),然后在圖書數(shù)組book中查找該書,若在數(shù)組book中沒找到該書,則提示“輸入的書號(hào)有誤,請(qǐng)重新輸入!”;若找到該書,則先判斷該書的庫(kù)存量是否為0,若庫(kù)存量為0則提示抱歉!該書庫(kù)存量為0,無法借閱!”。若庫(kù)存量大于0,則將該書借給學(xué)生,此時(shí)需要進(jìn)行以下6步操作:step1 將該書的庫(kù)存量減1;step2 學(xué)生借書卡的借閱標(biāo)記flag置1;step3 學(xué)生借書卡的書號(hào)填寫上該書的書號(hào);step4 學(xué)生借書卡的借閱時(shí)間賦值為系統(tǒng)時(shí)間;
19、為了提取系統(tǒng)時(shí)間,首先定義一個(gè)結(jié)構(gòu)體變量d:struct tm d; 結(jié)構(gòu)體類型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。通過調(diào)用函數(shù)_getsystime(&d); 可以得到系統(tǒng)時(shí)間,假設(shè)用下面語(yǔ)句輸出日期:printf(%d.%d.%d, d.tm_year, d.tm_mon, d.tm_mday); 若借書日期是,則會(huì)輸出,若
21、借書日期為,則會(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 保存修改過的圖書信息和學(xué)生信息;step6 提示用戶借書成功。最后詢問學(xué)生是否繼續(xù)借書嗎?(y/n),若學(xué)生輸入y,則重復(fù)上面的借書過程;若輸入n,則返回到學(xué)生功能選擇菜單界面。函數(shù)ReturnBook()用來實(shí)現(xiàn)還書管理。還書時(shí),首先統(tǒng)計(jì)該生有幾張已使用的借書卡,將數(shù)據(jù)存放在變
22、量t中,若t為0,說明該生目前根本沒有借閱的圖書,無法進(jìn)行還書操作;若t大于0,則可進(jìn)行還書操作,先輸入書號(hào),在學(xué)生的借書卡中尋找,若沒找到該書號(hào),則提示輸入的書號(hào)有誤,請(qǐng)重新輸入??;若找到該書號(hào),則通過以下6個(gè)步驟進(jìn)行還書:step1 學(xué)生借書卡的借閱標(biāo)記flag置0;step2 學(xué)生借書卡的書號(hào)置空;step3 學(xué)生借書卡的借閱時(shí)間清0;step4 變量t減1;step5 在數(shù)組book中尋找該書號(hào),找到后其庫(kù)存量加1;step6保存修改過的圖書信息和學(xué)生信息。最后詢問學(xué)生是否繼續(xù)還書嗎?(y/n),若學(xué)生輸入y,則重復(fù)上面的還書過程;若輸入n,則返回到學(xué)生功能選擇菜單界面。部分源程序代碼
23、#include#include#include#include#include/ 結(jié)構(gòu)體類型的定義typedef struct date /日期類型 short year; /年 short month; /月 short day; /日 SDATE;typedef struct library_card /借書卡類型 short flag; /是否借閱標(biāo)記 char ISBN20; /所借圖書的書號(hào) SDATE bor_time; /借閱時(shí)間SLCARD;typedef struct stud /學(xué)生類型 char num15; /學(xué)號(hào) char name20; /姓名 SLCARD ca
24、rd5; /借書卡SSTUD;typedef struct book /圖書類型 char ISBN20; /書號(hào) char bookname40; /書名 char author20; /作者 char publisher30; /出版社 char bookclass20; /圖書分類 short total_num, stock_num; /總量,庫(kù)存量 float price; /單價(jià) SDATE publish_time; /出版時(shí)間SBOOK;#define SDATE_LEN sizeof(SDATE) /SDATE_LEN為日期類型占用存儲(chǔ)空間的大小#define SLCARD_
25、LEN sizeof(SLCARD) /SLCARD_LEN為借書卡類型占用存儲(chǔ)空間的大小#define SSTUD_LEN sizeof(SSTUD) /SSTUD_LEN為學(xué)生類型占用存儲(chǔ)空間的大小#define SBOOK_LEN sizeof(SBOOK) /SBOOK_LEN為圖書類型占用存儲(chǔ)空間的大小#define BOOKNUM 1000 /圖書總數(shù),可按需要更改其數(shù)值#define STUDNUM 100 /學(xué)生總數(shù),可按需要更改其數(shù)值SSTUD studentSTUDNUM=0; /學(xué)生數(shù)組(全局變量)SBOOK bookBOOKNUM=0; /圖書數(shù)組(全局變量)/函數(shù)聲明
26、void ManagerLogin(int *pbn, int *psn); /管理員登錄函數(shù)void StudentLogin(int bn, int sn); /學(xué)生登錄函數(shù)void InputOnebook(int i); /輸入一本圖書信息的函數(shù)int LoadBooks(void); /從文件載入全部圖書信息的函數(shù)void SaveOnebook(int i); /保存一本圖書信息的函數(shù)void SaveAllbooks(int bn); /保存全部圖書信息的函數(shù)int OriginalBook(void); /圖書信息初始化的函數(shù)void ModifyBook(int bn); /
27、修改圖書信息的函數(shù)int AddBook(int bn); /添加圖書信息的函數(shù)int DelBook(int bn); /刪除圖書信息的函數(shù)void OutputOnebook(int i); /輸出一本圖書信息的函數(shù)void OutputAllbooks(int bn); /輸出全部圖書詳細(xì)信息的函數(shù)void OutputBrief(int bn); /輸出全部圖書簡(jiǎn)要信息的函數(shù)void InputOnestud(int i); /輸入一個(gè)學(xué)生信息的函數(shù)int LoadStuds(void); /從文件載入全部學(xué)生信息的函數(shù)void SaveOnestud(int i); /保存一個(gè)學(xué)生信
28、息的函數(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ù)void SearcBna
29、me (int bn); /按書名查詢函數(shù)void SearchAuthor(int bn); /按作者查詢函數(shù)void SearchBclass(int bn); /按圖書分類查詢函數(shù) void SearchPublisher(int bn); /按出版社查詢函數(shù)void SearchPubtime(int bn); /按出版時(shí)間查詢函數(shù)void BorrowBook(int bn,int m); /借書函數(shù)void ReturnBook(int bn,int m); /還書函數(shù)void main(void) / main函數(shù)定義 int select, bn, sn; bn=LoadBoo
30、ks(); /調(diào)用LoadBooks(),返回值為圖書數(shù)量,將其賦值給bn if(bn=0) printf( 圖書信息為空!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* 圖書借閱管理系統(tǒng) *n); printf(t* *n); printf(t-nn); printf(t 1. 管理員n); printf(t 2. 學(xué)生n); printf(t 0. 退出系統(tǒng)nn
31、); printf(t 請(qǐng)選擇用戶:); scanf(%d, & select); getchar(); /該函數(shù)用于讀取回車符,消除對(duì)以后數(shù)據(jù)輸入的影響 switch(select) case 1: ManagerLogin(&bn,&sn); break; case 2: StudentLogin(bn,sn); break; case 0: printf(n 謝謝使用!再見n); exit(1); default: printf(n 按鍵錯(cuò)誤,請(qǐng)重新選擇!n); /end switch /end while/用戶登錄模塊的函數(shù)定義/=/ 功能:實(shí)現(xiàn)管理員登錄, 顯示管理員用戶的菜單,進(jìn)行
32、功能選擇/ 參數(shù):pbn、psn分別為main函數(shù)中變量bn、sn的地址/ 返回:無/ 主要思路:用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; /若密碼錯(cuò)誤,返回主菜單 while
33、(1) printf(n); printf( 管理員,您好!n); printf(-n); printf( 1. 圖書信息初始化 7. 學(xué)生信息初始化n); printf( 2. 修改圖書信息 8. 修改學(xué)生信息n); printf( 3. 增加圖書信息 9. 增加學(xué)生信息n); printf( 4. 刪除圖書信息 10. 刪除學(xué)生信息n); printf( 5. 輸出圖書信息 11. 輸出學(xué)生信息n); printf( 6. 圖書信息查詢 0. 返回主菜單n); printf(n 請(qǐng)選擇您需要的服務(wù)(0-11):); scanf(%d, & select); getchar(); switc
34、h(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); break; case 6: Sear
35、chMenu(*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é)生登錄, 顯示學(xué)生用戶菜單,進(jìn)行功能選擇
36、/ 參數(shù):bn表示圖書數(shù)量,sn表示學(xué)生人數(shù)/ 返回:無/ 主要思路:用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用來存放登錄學(xué)生的學(xué)號(hào) if(sn=0) printf(n 學(xué)生信息為空,無法執(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(strcmp(studentj.num,
37、snum)=0) m=j; /找到該學(xué)號(hào)后記錄其下標(biāo) break; if(m0) /m小于0表示數(shù)組中沒有找到輸入的學(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è)人借書信息n); printf( 2. 圖書信息查詢n); printf( 3. 借書n); printf( 4. 還書n); printf( 0. 返回主菜單n); printf(n 請(qǐng)選擇你需要的服務(wù)(0-4):); scanf(%d, & selec
38、t); 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ù):i表示對(duì)第i本圖書進(jìn)行輸入操作/ 返回:無/ 主要思路:按提示信息用scanf輸入圖書的各項(xiàng)信息,存放到數(shù)組book中 /=/void InputOnebook(int i) printf( 書號(hào):); gets(booki.ISBN); printf( 書名:); gets(booki.bookname); printf( ); gets(booki.author); 略 /=/ 功能:從文件“book.dat”中載入全部圖書的信息 / 參數(shù): 無/ 返回:返回文件中圖書的數(shù)量/ 主要思路:用while循環(huán)從文件中讀取圖書信息到數(shù)組book,同時(shí)統(tǒng)計(jì)圖書數(shù)量/=/int LoadBooks(void) FILE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024廣東廣州市弘盈置業(yè)有限公司招聘1人筆試參考題庫(kù)附帶答案詳解
- 2025年八氟戊醇項(xiàng)目合作計(jì)劃書
- 粵教版高中信息技術(shù)選修3教學(xué)設(shè)計(jì)-2.3.1 域名與域名系統(tǒng)
- 2025年湖北水利水電職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及參考答案
- 第二單元《探秘物聯(lián)網(wǎng)》第7課 傳感器的應(yīng)用 教學(xué)設(shè)計(jì) 2023-2024學(xué)年浙教版(2023)初中信息技術(shù)七年級(jí)下冊(cè)
- 2025年廣西經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)含答案
- 2025年湖北城市建設(shè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)完整
- 第二單元第10課《物聯(lián)系統(tǒng)原型搭建》-教學(xué)設(shè)計(jì) 2023-2024學(xué)年浙教版(2023)初中信息技術(shù)七年級(jí)下冊(cè)
- 2025年合肥信息技術(shù)職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)必考題
- 2024年12月湖北十堰市丹江口市第二次事業(yè)單位公開招聘71人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 石油采油井場(chǎng)水土保持方案報(bào)告書
- 湘少版六年級(jí)英語(yǔ)下冊(cè)《全冊(cè)課件》
- 2024-2030年中國(guó)護(hù)眼臺(tái)燈行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 《土壤肥料學(xué)通論》課程教學(xué)大綱
- 第十四屆全國(guó)交通運(yùn)輸行業(yè)職業(yè)技能競(jìng)賽(公路收費(fèi)及監(jiān)控員)賽項(xiàng)題庫(kù)-下(多選題-共3部分-2)
- 集合功能的測(cè)定(雙眼視檢查)
- 2024年農(nóng)村自建房裝修合同
- 2024年《高等教育心理學(xué)》考前輔導(dǎo)必背習(xí)題庫(kù)(300題)
- 2024年江蘇農(nóng)牧科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)完美版
- 2024年廣西職業(yè)院校技能大賽中職組《智慧物流作業(yè)》模塊MC競(jìng)賽樣題
- 人事專員簡(jiǎn)歷模板
評(píng)論
0/150
提交評(píng)論