數(shù)據(jù)結(jié)構(gòu) c語言 圖書管理系統(tǒng)_第1頁
數(shù)據(jù)結(jié)構(gòu) c語言 圖書管理系統(tǒng)_第2頁
數(shù)據(jù)結(jié)構(gòu) c語言 圖書管理系統(tǒng)_第3頁
數(shù)據(jù)結(jié)構(gòu) c語言 圖書管理系統(tǒng)_第4頁
數(shù)據(jù)結(jié)構(gòu) c語言 圖書管理系統(tǒng)_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計任務(wù)書 題目: 圖書管理系統(tǒng)學 號200912220280姓名張志濤專 業(yè)計算機應(yīng)用技術(shù)課 程數(shù)據(jù)結(jié)構(gòu)指導(dǎo)教師曾德藩職稱完成時間:20 年 月-20 年 月棗莊學院計算機科學系制29說明一、課程設(shè)計寫作框架(僅供參考)摘要目錄正文1、 基本設(shè)計任務(wù)及要求、所用儀器設(shè)備;2、 總體設(shè)計方案及主要設(shè)計原理;3、 實現(xiàn)技術(shù)及源程序代碼;4、 測試及分析5、 結(jié)束語(心得體會、改進方向)參考文獻二、寫作要求:課程設(shè)計寫作要求論點明確、論據(jù)充分、說明透徹,語言準確恰當,書面整潔,字跡工整。課程設(shè)計的篇幅本科一般為4000字左右,??埔话銥?000字左右。程設(shè)計任務(wù)書及成績評定課程設(shè)計的任務(wù)和具體

2、要求目的要求: 本課程設(shè)計任務(wù)的目地是要求學生按照分析、設(shè)計、編碼、調(diào)試和測試的軟件開發(fā)過程完成管理系統(tǒng)設(shè)計,以及c語言算法的掌握,并能最終實現(xiàn)本系統(tǒng)的功能要求,通過這個程序可以學到以前調(diào)試短程序沒有的經(jīng)驗.具體要求:1、 為各項操作功能設(shè)計一個菜單。應(yīng)用程序運行后,先顯示這個菜單,然后用戶通過選擇希望運行的操作項目;2、 要求以上功能分別用函數(shù)實現(xiàn)。并要求c語言的文件操作語句將以上所有結(jié)果保存在文件xx。out.指導(dǎo)教師簽字: 日期:指導(dǎo)教師評語成績:指導(dǎo)教師簽字: 日期:課程設(shè)計所需軟件、硬件等:Win-tc軟件 計算機 鼠標 鍵盤 課程設(shè)計進度計劃起至日期工作內(nèi)容備注1、 選擇合適的數(shù)據(jù)

3、結(jié)構(gòu)2、 結(jié)點結(jié)構(gòu)的設(shè)計3、 算法設(shè)計與分析4、 程序設(shè)計、實現(xiàn)、調(diào)試課程設(shè)計說明書參考文獻、資料索引序號文獻、資料名稱編著者出版單位1、c語言設(shè)計(第三版) 譚浩強 清華大學出版社2、數(shù)據(jù)結(jié)構(gòu)(C語言版) 嚴蔚敏 、吳偉民 清華大學出版社3、數(shù)據(jù)庫系統(tǒng)基礎(chǔ) 姚世斌圖書借閱管理是圖書館一個最基本的工作,這里用C語言的知識設(shè)計開發(fā)一個簡單的圖書借閱管理系統(tǒng),系統(tǒng)主要實現(xiàn)圖書信息和學生信息的管理,圖書查詢及圖書借閱管理。系統(tǒng)設(shè)計要求系統(tǒng)主要實現(xiàn)以下六個功能: 用戶登錄.系統(tǒng)用戶分為管理員和學生。管理員登錄時必須輸入密碼,密碼正確才能進入系統(tǒng);學生登錄時無需密碼,輸入學號即可。 圖書信息管理。圖書信

4、息包括:書號、書名、作者、圖書分類、出版社、出版時間、單價、總量和庫存量.圖書信息管理包括:輸入圖書信息(從鍵盤或從文件)、保存圖書信息、修改圖書信息、增加圖書信息、刪除圖書信息和輸出圖書信息。 學生信息管理。學生信息包括:學號、姓名、借書卡(借閱標記、書號、借閱時間).學生信息管理包括:輸入學生信息(從鍵盤或從文件)、保存學生信息、修改學生信息、增加學生信息、刪除學生信息和輸出學生信息。 圖書查詢功能。圖書查詢分為:按書名查詢、按作者查詢、按圖書分類查詢、按出版社查詢和按出版時間查詢。 借書功能.借書時,先判斷學生是否有空閑的借書卡,若沒有則應(yīng)輸出提示信息;若有空閑的借書卡,則要求學生輸入所

5、借圖書的書號,若該書庫存量不為0,則將該書借出,同時在借書卡上記錄該書的書號和借閱時間,并修改該書的庫存量。 還書功能。還書時,先檢查學生的借書卡,若借書卡都為空,則不能進行還書操作,若有借書卡不為空,則可以還書,此時要求學生輸入所還圖書的書號,將對應(yīng)借書卡上的記錄清零,并修改該書的庫存量.數(shù)據(jù)結(jié)構(gòu)設(shè)計系統(tǒng)共定義了四個結(jié)構(gòu)體類型,包括日期類型、借書卡類型、圖書類型和學生類型,其中在圖書類型中要使用日期類型,而在學生類型中要使用日期和借書卡類型,定義如下:typedef struct date /日期類型 short year; /年 short month; /月 short day; /日S

6、DATE;typedef struct library_card /借書卡類型 Short flag; /是否借閱標記 Char ISBN20; /所借圖書的書號 SDATE bor_time; /借閱時間SLCARD;typedef struct student /學生類型 char num15; /學號 char name20; /姓名 SLCARD card5; /借書卡(規(guī)定每人最多有5張)SSTUD;typedef struct book /圖書類型 char ISBN20; /書號 char bookname40; /書名 char author20; /作者 char publi

7、sher30; /出版社 char bookclass20; /圖書分類 short total_num, stock_num; /總量,庫存量 float price; /單價 SDATE publish_time; /出版時間SBOOK;系統(tǒng)定義了兩個全局變量數(shù)組,分別存放圖書信息和學生信息,因數(shù)組大小是固定的,為使用方便在系統(tǒng)中定義兩個符號常量,具體定義如下:#define BOOKNUM 1000 / BOOKNUM為系統(tǒng)允許的最大圖書數(shù)量#define STUDNUM 100 / STUDNUM為系統(tǒng)允許的最多學生人數(shù)SSTUD studentSTUDNUM=0; /學生數(shù)組,初始化

8、為0SBOOK bookBOOKNUM=0; /圖書數(shù)組,初始化為03。 功能模塊設(shè)計(1) main函數(shù)的設(shè)計:由于圖書信息和學生信息都保存在文件中,系統(tǒng)運行的第一個工作是從文件中將圖書信息和學生信息讀入到內(nèi)存數(shù)組book和數(shù)組student中,在讀入信息的過程中同時統(tǒng)計出目前圖書的數(shù)量和學生的人數(shù),并將數(shù)據(jù)分別存放在整型變量bn和sn中,bn為圖書數(shù)量,sn為學生人數(shù)。如果bn=0或sn=0,系統(tǒng)會輸出提示信息,讓管理員輸入圖書信息和學生信息.然后系統(tǒng)會顯示主菜單,用戶必須登錄后才能使用系統(tǒng)提供的各種服務(wù).(2) 用戶登錄管理模塊包括2個函數(shù):ManagerLogin()和StudentL

9、ogin(),該模塊由main函數(shù)調(diào)用.函數(shù)ManagerLogin()用來完成管理員登錄工作,首先要求管理員用戶輸入密碼,若密碼錯誤,則直接返回主菜單界面;密碼正確時將顯示管理員用戶的功能菜單,輸入數(shù)字可執(zhí)行相應(yīng)的功能。函數(shù)StudentLogin()用來完成學生登錄工作,要求學生輸入學號,若學號錯誤則要求學生重新輸入學號;輸入學號正確則顯示學生用戶的功能菜單,輸入數(shù)字可執(zhí)行相應(yīng)的功能。(3) 圖書信息管理模塊包括11個函數(shù):InputOnebook()、LoadBooks()、SaveOnebook()、SaveAllbooks()、OriginalBook()、ModifyBook()、

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

11、,在程序第1次運行時必須調(diào)用該函數(shù),輸入若干本圖書的信息,并將這些信息保存在文件中。該函數(shù)是通過循環(huán)多次調(diào)用InputOnebook()函數(shù)實現(xiàn)多本圖書信息的輸入,然后調(diào)用SaveAllbooks()函數(shù)將已輸入的所有圖書的信息保存在文件“book.dat”中。函數(shù)ModifyBook()用來實現(xiàn)對圖書信息的修改,用戶首先輸入書號,書號錯誤則輸出提示信息,要求用戶重新輸入;書號正確則用戶可以選擇要修改的數(shù)據(jù)項對圖書信息進行修改(用switch結(jié)構(gòu)實現(xiàn)),一本圖書的信息修改完畢后,調(diào)用SaveOnebook()函數(shù),將修改后的信息保存到文件中。然后詢問用戶是否繼續(xù)修改其他圖書的信息,用戶選擇y,

12、則重復(fù)上述的修改過程;用戶選擇n',則結(jié)束函數(shù),返回到管理員菜單界面。函數(shù)AddBook()用來實現(xiàn)添加圖書信息,通過調(diào)用InputOnebook()函數(shù),從鍵盤輸入一本圖書的信息,然后將該信息寫入文件.然后詢問用戶是否繼續(xù)添加其他圖書的信息,用戶選擇y,則重復(fù)上述過程;用戶選擇n,則結(jié)束函數(shù),返回到管理員菜單界面。函數(shù)DelBook()用來實現(xiàn)刪除圖書信息,用戶首先輸入書號,書號錯誤則輸出提示信息,要求用戶重新輸入;書號正確則會先輸出該書號對應(yīng)圖書的信息,然后詢問用戶是否確定要刪除該書的信息,用戶選擇y才能真正刪除該書信息。最后詢問用戶是否繼續(xù)刪除其他圖書的信息,用戶選擇y,則重復(fù)上

13、述過程;用戶選擇n,則結(jié)束函數(shù),返回到管理員菜單界面.函數(shù)OutputOnebook()用來實現(xiàn)輸出一本圖書的全部信息.函數(shù)OutputAllbooks()通過多次調(diào)用OutputOnebook()函數(shù)來實現(xiàn)輸出全部圖書的信息.函數(shù)OutputBrief()用來實現(xiàn)以列表方式輸出全部圖書的簡要信息,簡要信息包括:書號、書名、作者和總量。(4) 學生信息管理模塊包括10個函數(shù):InputOnestud()、LoadStuds()、SaveOnestud()、SaveAllstuds()、OriginalStud()、ModifyStud()、AddStud()、DelStud()、OutputO

14、nestud()和OutputAllstuds()。管理員用戶可以使用學生信息管理模塊的全部功能,學生用戶只能使用該模塊中的一個功能,即OutputOnestud()函數(shù)(輸出一個學生的信息)。學生信息管理模塊中函數(shù)的實現(xiàn)方法與圖書信息管理中的類似,以下僅作簡單說明。函數(shù)InputOnestud()用來實現(xiàn)從鍵盤輸入一個學生的信息。函數(shù)LoadStuds()用來實現(xiàn)從文件“stud。dat”中輸入全部學生的信息,并將這些數(shù)據(jù)存放到內(nèi)存數(shù)組student中。函數(shù)SaveOnestud()用來實現(xiàn)將一各學生的信息保存到文件“stud。dat"中。函數(shù)SaveAllstuds()用來實現(xiàn)將

15、全部學生的信息保存到文件“stud。dat”中。函數(shù)OriginalStud()用來實現(xiàn)學生信息的初始化,在程序第1次運行時必須調(diào)用該函數(shù)。該函數(shù)是通過循環(huán)多次調(diào)用InputOnestud()函數(shù)實現(xiàn)多個學生信息的輸入,然后調(diào)用SaveAllstuds()函數(shù)將已輸入的所有學生的信息保存在文件“stud。dat”中.函數(shù)ModifyStud()用來實現(xiàn)學生信息的修改。函數(shù)AddStud()用來實現(xiàn)添加學生信息。函數(shù)DelStud()用來實現(xiàn)刪除學生信息。函數(shù)OutputOnestud()用來實現(xiàn)輸出一個學生的全部信息。函數(shù)OutputAllstuds()用來實現(xiàn)輸出全部學生的基本信息(即學號和

16、姓名).(5) 圖書信息查詢模塊包括6個函數(shù):SearchMenu()、SearcBname()、SearchAuthor()、SearchBclass()、SearchPublisher()、SearchPubtime()。管理員和學生都可以使用圖書信息查詢模塊。函數(shù)SearchMenu()用來顯示圖書查詢服務(wù)菜單,用戶輸入數(shù)字可執(zhí)行相應(yīng)的查詢服務(wù).函數(shù)SearcBname()用來實現(xiàn)按書名進行圖書信息的查詢.用戶可以輸入完整的書名進行精確查詢(如輸入“C語言程序設(shè)計”),精確查詢是使用字符串比較函數(shù)strcmp(),將輸入的書名與已有圖書的書名逐一進行比較,當該函數(shù)的返回值等于0,表示這兩

17、個書名完全相同,即找到要查詢的圖書.另外,用戶也可以輸入書名中的幾個字進行模糊查詢(如輸入“C語言”,或輸入“程序設(shè)計”),模糊查詢是使用求子串函數(shù)strstr(),在已有圖書的書名中尋找輸入的字符串,如果該函數(shù)的返回值不為空,則說明該書名中包含這個字符串,那么就應(yīng)該輸出這本圖書的信息。通常,模糊查詢會列出多個查詢結(jié)果.函數(shù)SearchAuthor()用來實現(xiàn)按作者姓名進行圖書信息的查詢。用戶可以輸入完整的姓名進行精確查詢(如輸入“譚浩強"),也可以只輸入姓氏進行模糊查詢(如只輸入“張”),具體方法與按書名查詢類似.函數(shù)SearchBclass()用來實現(xiàn)按圖書分類進行圖書信息的查詢

18、??紤]到用戶可能不能輸入完全正確的圖書分類名稱,所以在該函數(shù)中只采用模糊查詢方式.函數(shù) SearchPublisher()用來實現(xiàn)按出版社名稱進行圖書信息的查詢.用戶在輸入出版社名稱時,一般不會輸入“出版社"這三個字(如想查詢清華大學出版社的圖書,通常用戶會輸入“清華大學”),所以在該函數(shù)中也是只采用模糊查詢方式。函數(shù) SearchPubtime()用來實現(xiàn)按出版日期進行圖書信息的查詢。使用該函數(shù)必須注意要按系統(tǒng)規(guī)定的格式輸入日期,若想查詢2004年5月份出版的圖書,則應(yīng)輸入“2004.5”;若想查詢2004年出版的圖書,則應(yīng)輸入“2004”.假設(shè)輸入日期為“2004.5”,進行查詢

19、時,先判斷輸入的年份與出版日期中的年份是否相等,若不相等則結(jié)束本次循環(huán),若相等則用變量k記錄其下標,然后再判斷月份是否相等,月份若不相等則用continue結(jié)束本次循環(huán),月份若相等則可輸出這本書(即第k本書)的信息,然后再繼續(xù)判斷下一本圖書.(6) 圖書借閱管理模塊包括2個函數(shù):BorrowBook()和ReturnBook()函數(shù)。函數(shù)BorrowBook()用來實現(xiàn)借書管理。由學生類型定義可知,每個學生有5張借書卡,借書卡的信息包括:借閱標記flag、所借圖書的書號ISBN和借閱時間bor_time.借書時,首先查找學生是否有空閑的借書卡(即判斷該生借書卡的借閱標記flag是否為0),若f

20、lag為0,則可以借書,這時要求學生輸入要借圖書的書號,然后在圖書數(shù)組book中查找該書,若在數(shù)組book中沒找到該書,則提示“輸入的書號有誤,請重新輸入!";若找到該書,則先判斷該書的庫存量是否為0,若庫存量為0則提示”抱歉!該書庫存量為0,無法借閱!"。若庫存量大于0,則將該書借給學生,此時需要進行以下6步操作:step1 將該書的庫存量減1;step2 學生借書卡的借閱標記flag置1;step3 學生借書卡的書號填寫上該書的書號;step4 學生借書卡的借閱時間賦值為系統(tǒng)時間;為了提取系統(tǒng)時間,首先定義一個結(jié)構(gòu)體變量d:struct tm d; 結(jié)構(gòu)體類型struc

21、t 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 tm_year; / years since 1900 int tm_wday; / days since Su

22、nday 0,6 int tm_yday; / days since January 1 - 0,365 int tm_isdst; / daylight savings time flag ;這里我們需要使用其中的3個成員:tm_year、tm_mon和tm_mday。通過調(diào)用函數(shù)_getsystime(&d); 可以得到系統(tǒng)時間,假設(shè)用下面語句輸出日期:printf("%d。%d。d”, d。tm_year, d。tm_mon, d.tm_mday); 若借書日期是1998.5。12,則會輸出98.4。12,若借書日期為2005.5。12,則會輸出105。4。12,這樣的

23、輸出結(jié)果顯然不好,為了正確輸出1998。5。12或2005。5。12,必須對成員tm_year和tm_mon進行處理,對于tm_mon的處理比較簡單,直接加1即可(d。tm_mon+1),對于tm_year按下面方法處理:如果年份整除100等于0(即年份2000),則年份=1900+d。tm_year;如果年份整除100等于1(即年份=2000), 則年份=2000+d.tm_year%100.step5 保存修改過的圖書信息和學生信息;step6 提示用戶借書成功。最后詢問學生是否”繼續(xù)借書嗎?(y/n)”,若學生輸入y,則重復(fù)上面的借書過程;若輸入n,則返回到學生功能選擇菜單界面。函數(shù)Re

24、turnBook()用來實現(xiàn)還書管理.還書時,首先統(tǒng)計該生有幾張已使用的借書卡,將數(shù)據(jù)存放在變量t中,若t為0,說明該生目前根本沒有借閱的圖書,無法進行還書操作;若t大于0,則可進行還書操作,先輸入書號,在學生的借書卡中尋找,若沒找到該書號,則提示"輸入的書號有誤,請重新輸入!";若找到該書號,則通過以下6個步驟進行還書:step1 學生借書卡的借閱標記flag置0;step2 學生借書卡的書號置空;step3 學生借書卡的借閱時間清0;step4 變量t減1;step5 在數(shù)組book中尋找該書號,找到后其庫存量加1;step6保存修改過的圖書信息和學生信息.最后詢問學生

25、是否”繼續(xù)還書嗎?(y/n)”,若學生輸入y,則重復(fù)上面的還書過程;若輸入n,則返回到學生功能選擇菜單界面。部分源程序代碼include<stdio。hincludestdlib.h>includestring。hincludeconio.hincludetime。h>/ 結(jié)構(gòu)體類型的定義typedef struct date /日期類型 short year; /年 short month; /月 short day; /日SDATE;typedef struct library_card /借書卡類型 short flag; /是否借閱標記 char ISBN20; /所

26、借圖書的書號 SDATE bor_time; /借閱時間SLCARD;typedef struct stud /學生類型 char num15; /學號 char name20; /姓名 SLCARD card5; /借書卡SSTUD;typedef struct book /圖書類型 char ISBN20; /書號 char bookname40; /書名 char author20; /作者 char publisher30; /出版社 char bookclass20; /圖書分類 short total_num, stock_num; /總量,庫存量 float price; /單價

27、 SDATE publish_time; /出版時間SBOOK;define SDATE_LEN sizeof(SDATE) /SDATE_LEN為日期類型占用存儲空間的大小define SLCARD_LEN sizeof(SLCARD) /SLCARD_LEN為借書卡類型占用存儲空間的大小define SSTUD_LEN sizeof(SSTUD) /SSTUD_LEN為學生類型占用存儲空間的大小define SBOOK_LEN sizeof(SBOOK) /SBOOK_LEN為圖書類型占用存儲空間的大小define BOOKNUM 1000 /圖書總數(shù),可按需要更改其數(shù)值#define S

28、TUDNUM 100 /學生總數(shù),可按需要更改其數(shù)值SSTUD studentSTUDNUM=0; /學生數(shù)組(全局變量)SBOOK bookBOOKNUM=0; /圖書數(shù)組(全局變量)/函數(shù)聲明void ManagerLogin(int *pbn, int psn); /管理員登錄函數(shù)void StudentLogin(int bn, int sn); /學生登錄函數(shù)void InputOnebook(int i); /輸入一本圖書信息的函數(shù)int LoadBooks(void); /從文件載入全部圖書信息的函數(shù)void SaveOnebook(int i); /保存一本圖書信息的函數(shù)voi

29、d SaveAllbooks(int bn); /保存全部圖書信息的函數(shù)int OriginalBook(void); /圖書信息初始化的函數(shù)void ModifyBook(int bn); /修改圖書信息的函數(shù)int AddBook(int bn); /添加圖書信息的函數(shù)int DelBook(int bn); /刪除圖書信息的函數(shù)void OutputOnebook(int i); /輸出一本圖書信息的函數(shù)void OutputAllbooks(int bn); /輸出全部圖書詳細信息的函數(shù)void OutputBrief(int bn); /輸出全部圖書簡要信息的函數(shù)void Input

30、Onestud(int i); /輸入一個學生信息的函數(shù)int LoadStuds(void); /從文件載入全部學生信息的函數(shù)void SaveOnestud(int i); /保存一個學生信息的函數(shù)void SaveAllstuds(int sn); /保存全部學生信息的函數(shù)int OriginalStud(void); /學生信息初始化的函數(shù)void ModifyStud(int sn); /修改學生信息的函數(shù)int AddStud(int sn); /添加學生信息的函數(shù)int DelStud(int sn); /刪除學生信息的函數(shù)void OutputOnestud(int i); /

31、輸出一個學生信息的函數(shù)void OutputAllstuds(int sn); /輸出全部學生信息的函數(shù)void SearchMenu(int bn); /圖書查詢函數(shù)void SearcBname (int bn); /按書名查詢函數(shù)void SearchAuthor(int bn); /按作者查詢函數(shù)void SearchBclass(int bn); /按圖書分類查詢函數(shù)void SearchPublisher(int bn); /按出版社查詢函數(shù)void SearchPubtime(int bn); /按出版時間查詢函數(shù)void BorrowBook(int bn,int m); /借

32、書函數(shù)void ReturnBook(int bn,int m); /還書函數(shù)void main(void) / main函數(shù)定義 int select, bn, sn; bn=LoadBooks(); /調(diào)用LoadBooks(),返回值為圖書數(shù)量,將其賦值給bn if(bn=0) printf(” 圖書信息為空!nn”); sn=LoadStuds(); /調(diào)用LoadStuds(),返回值為學生人數(shù),將其賦值給sn if(sn=0) printf(” 學生信息為空!nn”);while(1) printf(”n”); printf(”t-n”); printf(”t* n”); prin

33、tf(”t 圖書借閱管理系統(tǒng) *n”); printf("t n”); printf(”t-nn”); printf("t 1。 管理員n”); printf("t 2. 學生n"); printf(”t 0。 退出系統(tǒng)nn”); printf(”t 請選擇用戶:"); scanf("d”, & select); getchar(); /該函數(shù)用于讀取回車符,消除對以后數(shù)據(jù)輸入的影響 switch(select) case 1: ManagerLogin(bn,&sn); break;case 2: StudentLo

34、gin(bn,sn); break; case 0: printf(”n 謝謝使用!再見n”); exit(1); default: printf(”n 按鍵錯誤,請重新選擇!n”); /end switch /end while/用戶登錄模塊的函數(shù)定義/=/ 功能:實現(xiàn)管理員登錄, 顯示管理員用戶的菜單,進行功能選擇/ 參數(shù):pbn、psn分別為main函數(shù)中變量bn、sn的地址/ 返回:無/ 主要思路:用strcmp函數(shù)實現(xiàn)密碼驗證,用switch結(jié)構(gòu)實現(xiàn)菜單功能選擇/=/void ManagerLogin(int pbn, int psn) int select, flag=0; cha

35、r password11; /密碼最多為10位 printf("n 請輸入密碼:”); gets(password); if(strcmp(password, "123")!=0) /密碼按需要事先設(shè)置好,這里假設(shè)為“123” printf(”n 密碼錯誤!n”); return; /若密碼錯誤,返回主菜單 while(1) printf(”n”); printf(” 管理員,您好!n"); printf("-n"); printf(” 1。 圖書信息初始化 7. 學生信息初始化n"); printf(" 2。 修

36、改圖書信息 8。 修改學生信息n"); printf(” 3。 增加圖書信息 9。 增加學生信息n”); printf(” 4。 刪除圖書信息 10。 刪除學生信息n"); printf(” 5。 輸出圖書信息 11。 輸出學生信息n"); printf(" 6。 圖書信息查詢 0。 返回主菜單n”); printf(”n 請選擇您需要的服務(wù)(0-11):”); scanf("%d", select); getchar(); switch(select) case 1: pbn=OriginalBook(); break; case

37、2: ModifyBook(pbn); break; case 3: pbn=AddBook(pbn); break; case 4: pbn=DelBook(*pbn); break; case 5: printf(” 輸出詳細信息請按'1, 輸出簡要信息請按'2':”); scanf(”%d”, flag); getchar(); if(flag=1) OutputAllbooks(pbn); if(flag=2) OutputBrief(pbn); break; case 6: SearchMenu(pbn); break; case 7: *psn=Origin

38、alStud(); 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 按鍵錯誤,請重新選擇!n"); /end switch /end while/=/ 功能:實現(xiàn)學生登錄, 顯示學生用戶菜單,進行功能選擇/ 參數(shù):bn表示圖書數(shù)量,sn表示學生人數(shù)/ 返回:無/ 主要

39、思路:用strcmp函數(shù)實現(xiàn)學號驗證,用switch結(jié)構(gòu)實現(xiàn)菜單功能選擇/=/void StudentLogin(int bn, int sn) int select, j, m=1; char snum15; /數(shù)組snum用來存放登錄學生的學號 if(sn=0) printf("n 學生信息為空,無法執(zhí)行操作!n”); return; while(1) printf(”n 請輸入你的學號:”); gets(snum); for(j=0; jsn; j+) /在學生數(shù)組中查找輸入的學號 if(strcmp(studentj。num, snum)=0) m=j; /找到該學號后記錄其

40、下標 break; if(m0) /m小于0表示數(shù)組中沒有找到輸入的學號printf("n 學號錯誤,請重新輸入!n”); else /m大于等于0,表示存在這個學生的信息while(1) printf(”n"); printf(” 同學,你好!n"); printf(”-n”); printf(” 1. 輸出個人借書信息n”); printf(" 2. 圖書信息查詢n"); printf(” 3。 借書n”); printf(" 4。 還書n”); printf(” 0. 返回主菜單n"); printf(”n 請選擇你需

41、要的服務(wù)(04):”); 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 按鍵錯誤,請重新選擇!n”); /end switch /圖書信息管理模塊的函數(shù)定義/=/ 功能:從鍵盤輸入一本圖書的全部信息/ 參數(shù):i

42、表示對第i本圖書進行輸入操作/ 返回:無/ 主要思路:按提示信息用scanf輸入圖書的各項信息,存放到數(shù)組book中/=/void InputOnebook(int i) printf(" 書號:”); gets(booki。ISBN); printf(” 書名:”); gets(booki。bookname); printf(" 作者:”); gets(booki。author); 略/=/ 功能:從文件“book.dat”中載入全部圖書的信息/ 參數(shù):無/ 返回:返回文件中圖書的數(shù)量/ 主要思路:用while循環(huán)從文件中讀取圖書信息到數(shù)組book,同時統(tǒng)計圖書數(shù)量/=/

43、int LoadBooks(void) FILE *fb; int bn=0; /變量bn用來記錄圖書的數(shù)量 if((fb=fopen(”book。dat”, ”rb+")=NULL) /以二進制讀、寫方式打開文件 printf(”cant open file book.datn”); return(bn); /文件打開失敗時,返回值為0 while(!feof(fb) /文件沒有結(jié)束時進行讀數(shù)據(jù)操作 if(fread(bookbn, SBOOK_LEN,1,fb)) bn+; /從文件中每讀一本圖書,圖書數(shù)量加1 fclose(fb); /關(guān)閉文件 return(bn); /返回圖書數(shù)量,即bn的值/=/ 功能:將一本圖書的信息保存到文件“book。dat”中/ 參數(shù):i表示將第i本圖書的信息保存到文件中/ 返回:無/ 主要思路:先用fseek函數(shù)定位,再用fwrite函數(shù)寫入第i本圖書的信息/=/void SaveOnebook(int i) 略/=/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論