圖書管理系統(tǒng)_第1頁
圖書管理系統(tǒng)_第2頁
圖書管理系統(tǒng)_第3頁
圖書管理系統(tǒng)_第4頁
圖書管理系統(tǒng)_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)圖書管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)小組成員:王林、王浩然指導(dǎo)教師:鄭琦、林娜(網(wǎng)絡(luò))專 業(yè): 網(wǎng)絡(luò)工程所在單位:電氣與計(jì)算機(jī)學(xué)院目 錄一、需求分析11.1 系統(tǒng)開發(fā)背景和意義11.2 設(shè)計(jì)題目與要求1二、總體結(jié)構(gòu)設(shè)計(jì)2三、各子模塊設(shè)計(jì)33.1 初始化圖書信息33.2 系統(tǒng)主界面33.3 采編入庫43.4 輸入讀者信息43.5 借閱圖書43.6 歸還圖書63.7 查詢圖書信息73.8 查詢讀者信息7四、程序設(shè)計(jì)調(diào)試情況分析9五、測試結(jié)果125.1 歡迎界面125.2 初始化圖書信息125.3 系統(tǒng)主界面135.4 采編入庫135.5 輸入讀者信息145.6 借閱圖書155.7 歸還圖書165

2、.8 查詢圖書信息165.9 查詢讀者信息175.10 保存文件,退出18六、總結(jié)19七、參考文獻(xiàn)20八、附錄(源代碼)21一、需求分析1.1 系統(tǒng)開發(fā)背景和意義圖書管理作為計(jì)算機(jī)應(yīng)用的一個(gè)分支,有著手工管理無法比擬的優(yōu)點(diǎn),如檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長、成本低等。這些優(yōu)點(diǎn)能夠極大地提高圖書管理的效率。因此,開發(fā)一套能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄蔚膱D書管理系統(tǒng),將是非常必要的,也是十分及時(shí)的。圖書管理系統(tǒng)需要滿足來自圖書館工作人員、普通用戶和借閱者三方面人員的需求。圖書館工作人員對圖書借閱者的借閱及還書要求進(jìn)行操作,同時(shí)還可通過圖書編號(hào)等查詢相應(yīng)的借閱情況

3、;普通用戶的需求是查詢圖書館所存的圖書的相關(guān)情況;圖書借閱者的需求是查看自己的相關(guān)信息及查詢自己的借閱情況。1.2 設(shè)計(jì)題目與要求【問題描述】設(shè)計(jì)一個(gè)計(jì)算機(jī)管理系統(tǒng)完成圖書管理基本業(yè)務(wù)?!净疽蟆?)每種書的登記內(nèi)容包括書號(hào)、書名、著作者、現(xiàn)存量和庫存量;2)對書號(hào)建立索引表(線性表)以提高查找效率;3)系統(tǒng)主要功能如下:*采編入庫:新購一種書,確定書號(hào)后,登記到圖書帳目表中,如果表中已有,則只將庫存量增加;*借閱:如果一種書的現(xiàn)存量大于0,則借出一本,登記借閱者的書證號(hào)和歸還期限,改變現(xiàn)存量;*歸還:注銷對借閱者的登記,改變該書的現(xiàn)存量。二、總體結(jié)構(gòu)設(shè)計(jì)有八個(gè)模塊1)圖書初始化輸入圖書的一

4、些信息,編號(hào)、作者、書名、數(shù)量,使有一定的庫存。2)新書入庫新書采編入庫,輸入編號(hào)后如果有次數(shù)只需輸入數(shù)量,沒有則繼續(xù)輸入書名、作者、數(shù)量。3)添加讀者信息讀者信息初始化,輸入讀書證號(hào)和姓名,只有輸入書證號(hào)和姓名才能進(jìn)行借書還書4)借書模塊讀者輸入讀書證號(hào),證號(hào)存在輸入要借的圖書編號(hào),不能借同一本書,如果借書數(shù)量以達(dá)到最大也不能借書。5)還書模塊歸還已借的圖書,要先輸入讀者書證號(hào),書證號(hào)存在繼續(xù)輸入要還的圖書編號(hào),圖書編號(hào)存在并且借來此書,歸還成功。6)查詢圖書信息7)查詢讀者信息可查詢讀者姓名書證號(hào),借了幾本書,都是什么書和還書日期,還可以借幾本書。8)退出退出讀書管理系統(tǒng)并保存讀者和圖書信

5、息。圖書管理系統(tǒng) 查詢操作模塊讀者管理模塊借閱操作模塊圖書管理模塊理退出圖書信息查詢讀者信息查詢還書系統(tǒng)借書系統(tǒng)輸入讀者信息采編入庫初始化圖書信息圖2-1 主控模塊三、各子模塊設(shè)計(jì)3.1 初始化圖書信息進(jìn)入系統(tǒng)后首先進(jìn)行圖書初始化,輸入圖書的信息。開始輸入圖書編號(hào)、名稱、作者和圖書數(shù)量進(jìn)入系統(tǒng)圖3-1 初始化圖書信息流程圖3.2 系統(tǒng)主界面初始化之后,進(jìn)入系統(tǒng),顯示功能列表,可選擇任意系統(tǒng),但在借書之前先要輸入讀者信息。開始輸入功能所對應(yīng)的數(shù)字輸入的數(shù)字小于0大于6 否錯(cuò)誤!請重新輸入 是執(zhí)行所選功能圖3-2 系統(tǒng)主界面流程圖3.3 采編入庫選擇采編入庫的功能后,先輸入圖書編號(hào)判斷是否存在,若

6、存在,則在原有記錄上加上添加的圖書數(shù)量;若不存在,則加入新的記錄。錄入圖書信息判斷是否有此圖書是在原有的紀(jì)錄上加上現(xiàn)有的圖書數(shù)量否向系統(tǒng)中加入新紀(jì)錄圖3-3 采編入庫流程圖3.4 輸入讀者信息選擇讀者登記后,輸入讀者編號(hào)跟姓名。開始輸入讀者信息:讀者書證號(hào)、姓名結(jié)束圖3-4 輸入讀者信息流程圖3.5 借閱圖書選擇借閱圖書功能后,輸入讀者證號(hào),判斷該讀者是否存在,若存在則輸入借閱圖書的編號(hào),判斷該圖書編號(hào)是否存在,若存在,則判斷讀者借閱的圖書數(shù)量是否滿了和是否借閱了相同的書籍,判斷成功后,則輸入歸還該圖書的日期,該圖書現(xiàn)有量減一,借閱成功;若讀者不存在則返回。輸入讀者書證號(hào)判斷讀者是否存在否輸出

7、次讀者編號(hào)不存在!按任意鍵返回是輸入要借的圖書編號(hào)判斷圖書編號(hào)是否存在否輸出此圖書編號(hào)不存在!按任意鍵返回是看是否還有此圖書否輸出此書已借完,按任意鍵返回是看讀者的借書數(shù)目是否滿了是輸出借書數(shù)目已滿不能借書,按任意鍵返回否看讀者是否借了相同的書是輸出同一讀者不能借相同的兩本書否輸入歸還圖書的日期圖書現(xiàn)有數(shù)量減1輸出讀者結(jié)束成功,按任意鍵返回結(jié)束圖3-5 借閱圖書流程圖3.6 歸還圖書實(shí)現(xiàn)歸還圖書功能時(shí),首先輸入讀者編號(hào),并判斷是否存在,若不存在就按任意鍵返回,;若存在輸入歸還的圖書編號(hào)并判斷是否存在,若歸還圖書編號(hào)不存在,則返回。存在后,將讀者借閱該圖書的信息清空,該圖書的現(xiàn)有量加一。最后按任

8、意鍵返回輸入要還書的讀者編號(hào)判斷讀者編號(hào)是否存在 否輸出讀者編號(hào)不存在按任意鍵返回是輸入讀者還書編號(hào)判斷圖書編號(hào)是否存在否輸出此圖書編號(hào)不存在按任意鍵返回 是此圖書編號(hào)和還書日期等于0現(xiàn)有圖書數(shù)量加1輸出讀者還書完畢,按任意鍵返回結(jié)束圖3-6 歸還圖書流程圖3.7 查詢圖書信息查詢圖書信息時(shí),輸入圖書的編號(hào),判斷是否存在。不存在則返回;存在則輸出圖書的編號(hào),書名,作者,現(xiàn)有量,跟庫存量。判斷圖書信息是否為空 是輸出此圖書編號(hào)不存在按任意鍵返回 否輸出圖書信息:編號(hào)、名稱、作者、現(xiàn)有和庫存結(jié)束圖3-7 查詢圖書信息流程圖3.8 查詢讀者信息查詢讀者信息時(shí),首先判斷讀者的編號(hào)是否存在,不存在就按任

9、意鍵返回。若存在,則輸出讀者的證號(hào),姓名,和借閱的圖書編碼及其還書日期。判斷讀者信息是否為空 是輸出此讀者編號(hào)不存在按任意鍵返回否輸出讀者書證號(hào)、姓名、圖書編碼和還書日期輸出讀者信息打印完畢結(jié)束圖3-8 查詢讀者信息流程圖四、程序設(shè)計(jì)調(diào)試情況分析在整個(gè)課程設(shè)計(jì)中,我們遇到了許多的問題。有些問題吧,我們在苦思冥想的時(shí)候,突然我們的編譯器顯示出了正確的結(jié)果,當(dāng)我們欣喜若狂的在運(yùn)行下一次的時(shí)候又會(huì)出現(xiàn)相同的問題,在借閱的過程中,在一個(gè)讀者借閱了兩本書以上的時(shí)候,上一本書的歸還日期上還有下一本書上的編號(hào),最后一本書輸出的才是正確的結(jié)果。下圖是借閱了兩本書的截圖:圖4-1看到這里我們也知道是第一本書的還

10、書日期的地址空間跟第二本書的編號(hào)連接在了一起導(dǎo)致輸出的時(shí)候一直到第二本書編號(hào)的的字符串后面的/0結(jié)束。最后發(fā)現(xiàn)是我們在定義還書日期這個(gè)字符串的時(shí)候開辟的空間太小。我們把char limit_date8;改為char limit_date10就好了。圖4-2五、測試結(jié)果5.1 歡迎界面程序運(yùn)行顯示“歡迎使用圖書管理系統(tǒng)”,按任意鍵進(jìn)入到主菜單如圖5-1所示。圖5-1 歡迎界面5.2 初始化圖書信息在沒有文件的時(shí)候會(huì)進(jìn)入到初始化界面,需要輸入一本圖書的相關(guān)信息,如圖5-2所示。圖5-2 初始化圖書信息5.3 系統(tǒng)主界面接著進(jìn)入的系統(tǒng)的主菜單,如圖5-3所示。圖5-3 系統(tǒng)主界面5.4 采編入庫實(shí)現(xiàn)

11、采編入庫功能按照系統(tǒng)提示輸入信息。如圖5-4。如果該圖書已存在,則直接輸入圖書的數(shù)量如圖5-5所示。圖5-4 采編入庫(書不存在)圖5-5 采編入庫(書已存在)5.5 輸入讀者信息按照要求輸入讀者信息,如圖5-6所示。圖5-6 輸入讀者信息5.6 借閱圖書按照要求先輸入讀者證號(hào),在輸入借閱的圖書編號(hào)如圖5-7所示。如果讀者已經(jīng)借閱了一本書之后不能借閱同一本圖書如圖5-8所示。圖5-7 借閱圖書圖5-8 同一個(gè)讀者不能借閱同一本圖書5.7 歸還圖書歸還圖書的要求按著圖5-9輸入即可。圖5-9 歸還圖書5.8 查詢圖書信息圖5-10 是沒有借閱之前的圖書的相關(guān)信息,圖5-11是讀者借閱了圖書之后的

12、信息,只改變了現(xiàn)有量。圖5-10 借閱登記后圖5-11 歸還圖書后5.9 查詢讀者信息查詢讀者的信息時(shí),會(huì)輸出相關(guān)借閱的圖書編號(hào)以及還書日期如圖5-12,5-13所示。圖5-12 查詢讀者信息(一)圖5-13 查詢讀者信息(二)5.10 保存文件,退出在系統(tǒng)的主菜單后,按0 功能保存并退出系統(tǒng)。圖5-14 文件保存六、總結(jié)個(gè)人覺得課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程. 在生活中可以說得是無處不在。因此作為新世紀(jì)的大學(xué)來說能夠分析,并解決程序中出現(xiàn)的問題是十分重要的。課程設(shè)計(jì)就能體現(xiàn)到這一方面。能夠?qū)?/p>

13、你所學(xué)到的理論跟實(shí)際結(jié)合在一起。通過本次課程設(shè)計(jì)感慨良多。從課堂上聽到的到課后應(yīng)用到的根本就不是一回事。課堂上,老師在上面說,自己在下面聽,到也能聽懂。可是到了應(yīng)用上,自己倒也是知道要用到哪方面的內(nèi)容,但是偏偏不知道從何處下手;好不容易寫好的一小段代碼,還要跟其他功能不相沖突,這又需要我們自己去想辦法去兼容好他們。通過本次課程設(shè)計(jì)試我懂得理論要跟實(shí)踐相結(jié)合。正所謂“臺(tái)上十分鐘,臺(tái)下十年功”,別人在臺(tái)上表演了十分鐘,你覺得很容易,可那里知道別人在下面做的努力呢。同樣的,我們在課堂上聽老師講確實(shí)覺得是那么回事,但是真正做下去,也只有自己知道是何種滋味。理論始終是理論,不能都熟練應(yīng)用自己所學(xué)到的知識(shí)

14、,到頭來也是一場空。在這次的課程設(shè)計(jì)過程中,我們也遇到了不能解決的難題,比如說在讀者查詢的時(shí)候,第二個(gè)讀者始終會(huì)覆蓋第一個(gè)讀者的數(shù)據(jù)。我們始終沒有搞明白問題的所在,只知道不是在輸出讀者信息的問題,應(yīng)該是添加讀者過程中指針始終指在第一個(gè)地址,沒有移動(dòng)。我們按照查詢圖書的函數(shù)重新編寫了一次還是同樣問題。一直到答辯前一天晚上還沒有解決,之后只能放棄。還有在最開始的時(shí)候我們的程序功能并沒有清屏功能,整個(gè)界面看起來并不是那么整潔。于是我用用getch();system(“cls”);來進(jìn)行清屏,最后會(huì)出先一個(gè)小問題,在我們查詢了一些資料后,又再次基礎(chǔ)上加上了goto end;這個(gè)函數(shù)來加以完善。這次課程

15、設(shè)計(jì),我們也遇到了很多問題,比如說,我們再輸入第二個(gè)讀者的信息后會(huì)覆蓋第一個(gè)讀者的信息,想了半天沒有弄懂是哪里錯(cuò)了,最后才看出來我們定義的結(jié)構(gòu)體指針沒有移動(dòng),導(dǎo)致我們輸入的讀者信息一直存放在同一個(gè)地址中。也有些不懂需要在網(wǎng)上查詢的代碼,組員之間相互配合,不懂就詢問其他同學(xué)或者查詢資料亦或者自己去弄懂問題的根結(jié),團(tuán)結(jié)協(xié)作的精神在這次課程設(shè)計(jì)中表現(xiàn)的淋漓盡致。我們不僅將以前的知識(shí)復(fù)習(xí)一遍;同時(shí)也弄懂了一些平常自己似懂非懂的;最后同學(xué)之間的友誼也慢慢變的深厚起來小組分工:孫澤銘:采編入庫、查詢圖書信息、查詢讀者信息黃響:添加讀者、借閱圖書、歸還圖書七、參考文獻(xiàn)1 嚴(yán)蔚敏 吳偉民編著 數(shù)據(jù)結(jié)構(gòu) 清華大

16、學(xué)出版社,20002 黃國瑜 葉乃菁編著 數(shù)據(jù)結(jié)構(gòu) 清華大學(xué)出版社,2001 3 胡學(xué)鋼編著 數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)指導(dǎo) 清華大學(xué)出版社,19994 王士元編著 數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫系統(tǒng) 南開大學(xué)出版社,20005 李強(qiáng)根主編 數(shù)據(jù)結(jié)構(gòu)(C+描述) 中國水利水電出版社, 20016 楊正宏編著 數(shù)據(jù)結(jié)構(gòu) 中國鐵道出版社,20027 胡學(xué)鋼編著 數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)指導(dǎo) 清華大學(xué)出版社,19998 殷人昆 徐孝凱編著 數(shù)據(jù)結(jié)構(gòu)習(xí)題解析 清華大學(xué)出版社,20029 李春葆編著 數(shù)據(jù)結(jié)構(gòu)習(xí)題與解析 清華大學(xué)出版社,200110 咨訊教育小組編著 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)版 中國鐵道出版社,2002八、附錄(源代碼)#in

17、clude<stdio.h>#include <string.h>#include <stdlib.h>#include<conio.h>#define Max 4 typedef struct bookchar book_num10;char book_name20;char book_writer10;int book_xy;int book_kc;int n;struct book *next;BK;typedef struct borrowchar borrow_book_num10;char limit_date10;BO;typede

18、f struct readerchar reader_num10;char reader_name10;int right;int m;BO borrowMax;struct reader *next;RD;BK *h_book;RD *h_reader;int n=0;int m=0;void Login(); int Menu(); void Init(); void Menu_select(); void Insert_New_Book(); void add_reader();void Print_reader(); void Print_book(); void Borrow_Boo

19、k(); void Return_Book(); void Save(); void Save_Book(); void Save_Reader(); void Load();void Load_Reader(); void Load_Book(); void Login()system("cls");printf("nnntt*n");printf("nnntt* 歡迎使用圖書管理系統(tǒng) *n");printf("nnntt*n");printf("nnntt 按任意鍵進(jìn)入系統(tǒng).");getch

20、(); system("cls");int Menu() /*主菜單*/ int dm;printf("ntt圖書管理系統(tǒng)主菜單n");printf("=n");printf("*t1-采編入庫 n");printf("*t2-登記讀者 n"); printf("*t3-借閱登記 n");printf("*t4-還書管理 n");printf("*t5-查詢圖書信息 n");printf("*t6-查詢讀者信息 n"

21、);printf("*t0-退出系統(tǒng) n");printf("=n");printf("請選擇相應(yīng)的代碼:"); for(;) scanf("%d",&dm); /dm輸入的數(shù)字if(dm<0|dm>6)printf("n錯(cuò)誤!請重新輸入:");else break;return dm; void Menu_select()/*主菜單選擇函數(shù)*/for(;) switch(Menu() /*功能選擇*/ case 0: system("cls"); Sav

22、e();printf("nnt文件保存成功!n"); printf("nnt歡迎下次使用本系統(tǒng)!n"); getch(); exit(0);case 1: Insert_New_Book();break; case 2: add_reader();break;case 3: Borrow_Book();break;case 4: Return_Book();break;case 5: Print_book();break;case 6: Print_reader();break;default:printf("n錯(cuò)誤!");exit(

23、0);void Init() /*初始化*/BK *p0;printf("n圖書初始化開始,請輸入圖書信息.n包括編號(hào).書名.數(shù)量.n");p0=(BK*)malloc(sizeof(BK);h_book=p0;printf("n請輸入圖書信息:n");printf("圖書編號(hào):"); /*輸入圖書編號(hào)(唯一)*/scanf("%s",p0->book_num);printf("圖書名稱:"); /*輸入圖書名稱*/scanf("%s",p0->book_name

24、);printf("圖書作者:"); /*輸入圖書作者*/scanf("%s",p0->book_writer);printf("圖書數(shù)量:"); /*輸入圖書數(shù)量*/scanf("%d",&p0->book_kc);p0->book_xy=p0->book_kc; /*開始時(shí)圖書現(xiàn)有量和庫存量相等*/p0->next=NULL;p0->n=+n;printf("n圖書信息初始化完畢!按任意鍵繼續(xù)下一步操作.n");getch();system(&qu

25、ot;cls");void Insert_New_Book()/*新書入庫*/BK *p,*p0,*p1; p=p1=h_book;printf("n新書入庫模塊.n");printf("n請輸入新書信息.n包括書號(hào).書名.數(shù)量.n");p0=(BK *)malloc(sizeof(BK);printf("圖書編號(hào):");scanf("%s",p0->book_num);while(strcmp(p0->book_num,p1->book_num)!=0&&p1->

26、next!=NULL)p1=p1->next;if(strcmp(p0->book_num,p1->book_num)=0) /*此處分兩種情況,若圖書編號(hào)存在,則直接進(jìn)庫,只須輸入書的數(shù)量*/printf("n此編號(hào)圖書已存在!直接入庫!n"); printf("圖書數(shù)量:"); scanf("%d",&p0->book_kc); p1->book_kc+=p0->book_kc; p1->book_xy+=p0->book_kc;else/*若不存在,則需要輸入其他的信息,然

27、后在進(jìn)行插入操作*/printf("圖書名稱:");scanf("%s",p0->book_name);printf("圖書作者:");scanf("%s",p0->book_writer);printf("圖書數(shù)量:");scanf("%d",&p0->book_kc);/庫存數(shù)量while(p->next) p=p->next;if(h_book=NULL) h_book=p0; /*此處分兩種情況,鏈表中沒有數(shù)據(jù),head直接指向p

28、0處*/else p->next=p0; /*此處分兩種情況,鏈表中有數(shù)據(jù),鏈表中最后元素的next指向p0處*/ p0->next=NULL; p0->book_xy=p0->book_kc; p0->n=+n; printf("n新書入庫完畢!按任意鍵繼續(xù)下一步操作.n");getch();system("cls");void add_reader()/*添加讀者*/ RD *p0; int i; printf("n讀者初始化開始,請輸入讀者信息.n包括書證號(hào).姓名.n");p0=(RD*)mallo

29、c(sizeof(RD); /*申請新結(jié)點(diǎn)存儲(chǔ)空間*/h_reader=p0;printf("n請輸入讀者的信息:n"); printf("讀者書證號(hào):"); scanf("%s",p0->reader_num); printf("讀者姓名:"); scanf("%s",p0->reader_name); p0->right=0; for(i=0;i<Max;i+) strcpy(p0->borrowi.borrow_book_num,"0");

30、 /*所借圖書直接置為(即沒有借書)*/strcpy(p0->borrowi.limit_date,"0"); p0->next=NULL;p0->m=+m;printf("n讀者信息初始化完畢!按任意鍵繼續(xù)下一步操作.n"); getch();system("cls");void Borrow_Book() /*借書模塊*/BK *p0; RD *p1;char bo_num10,rea_num10,lim_date8;int i;p0=h_book; p1=h_reader;printf("n借書模塊.

31、n");printf("n請輸入借書的讀者書證號(hào):"); scanf("%s",rea_num);while(p1->next!=NULL&&strcmp(rea_num,p1->reader_num)!=0) p1=p1->next; if(p1->next=NULL&&strcmp(rea_num,p1->reader_num)!=0) printf("n此讀者編號(hào)不存在!按任意鍵返回.n");goto END; printf("n請輸入你要借的書的

32、編號(hào):"); scanf("%s",bo_num);while(strcmp(bo_num,p0->book_num)!=0&&p0->next!=NULL) p0=p0->next; if(p0->next=NULL&&strcmp(bo_num,p0->book_num)!=0) printf("n此圖書編號(hào)不存在!按任意鍵返回.n");goto END;else if(p0->book_xy<=0) printf("n抱歉,此書已借完!請等待新書的到來!n

33、按任意鍵返回.");goto END; else if(p1->right>Max|p1->right=Max) printf("n不好意思,借書數(shù)目已滿!不能借書!n按任意鍵返回.");goto END;else if(strcmp(p1->borrow0.borrow_book_num,"0")!=0) for(i=0;i<Max;i+) if(strcmp(p1->borrowi.borrow_book_num,bo_num)=0)printf("n抱歉!同一個(gè)讀者不能同借兩本相同的書!n按任

34、意鍵返回.");goto END;else if(strcmp(p1->borrowi.borrow_book_num,"0")=0) printf("n請輸入你要?dú)w還圖書的日期:"); scanf("%s",lim_date); strcpy(p1->borrowp1->right+.borrow_book_num,bo_num); strcpy(p1->borrowp1->right-1.limit_date,lim_date); p0->book_xy-; printf("

35、n讀者編號(hào)%s借書完畢!按任意鍵繼續(xù)下步操作.",p1->reader_num); goto END; else printf("n請輸入你要?dú)w還圖書的日期:"); scanf("%s",lim_date); strcpy(p1->borrowp1->right+.borrow_book_num,bo_num); strcpy(p1->borrowp1->right-1.limit_date ,lim_date ); p0->book_xy-;p0->book_kc-; printf("n讀者

36、編號(hào)%s借書完畢!按任意鍵繼續(xù)下步操作.",p1->reader_num); goto END; END:getch(); system("cls"); void Return_Book() /*還書模塊*/BK *p; RD *q;int i,j,find=0;char return_book_num10,return_reader_num10;p=h_book; q=h_reader;printf("n還書模塊.n");printf("n請輸入要還書的讀者編號(hào):"); scanf("%s",re

37、turn_reader_num); while(q->next!=NULL&&strcmp(return_reader_num,q->reader_num)!=0) q=q->next; if(q->next=NULL&&strcmp(return_reader_num,q->reader_num)!=0)find=2;printf("n此讀者編號(hào)不存在!按任意鍵返回.n");goto end;printf("n請輸入讀者還書的編號(hào):");scanf("%s",return

38、_book_num); while(p->next!=NULL&&strcmp(return_book_num,p->book_num)!=0)p=p->next; if(p->next=NULL&&strcmp(return_book_num,p->book_num)!=0)find=2;printf("n錯(cuò)誤!此圖書編號(hào)不存在!按任意鍵返回.n");goto end; for(i=0;i<Max;i+)if(strcmp(return_book_num,q->borrowi.borrow_book

39、_num)=0) /*如果此讀者借了此書*/find=1; for(j=i;j<Max-1;j+) strcpy(q->borrowj.borrow_book_num,q->borrowj+1.borrow_book_num); strcpy(q->borrowj.limit_date,q->borrowj+1.limit_date); strcpy(q->borrowMax-1.borrow_book_num,"0");strcpy(q->borrowMax-1.limit_date,"0"); p->b

40、ook_xy+; q->right-; printf("n編號(hào)%s的讀者還書完畢!按任意鍵繼續(xù)下步操作.",return_reader_num); goto end; if(find=0) printf("n錯(cuò)誤!此讀者未借此書!按任意鍵返回.n"); end: getch(); system("cls"); void Print_book() /*查詢圖書信息*/BK *p;int i;char e10; p=h_book;printf("輸入查詢的圖書編號(hào):");scanf("%s",

41、 e);for(i=0;i<n;i+)if(strcmp(p->book_num,e)=0)printf("n圖書信息如下:nn");printf("圖書編號(hào)t圖書名稱t圖書作者t現(xiàn)有t庫存n");printf("%stt%stt%stt%dt%dn",p->book_num,p->book_name,p->book_writer,p->book_xy,p->book_kc);break;elsep=p->next;printf("n圖書信息打印完畢!按任意鍵繼續(xù)下一步操作.&

42、quot;);getch();system("cls");void Print_reader() /*查詢讀者信息*/RD *p;int i, j;char e10;p=h_reader;printf("輸入查詢的讀者編號(hào):");scanf("%s", e);for(j=0;j<m;j+)if(strcmp(p->reader_num,e)=0)printf("n讀者信息如下:nn");printf("讀者書證號(hào)t讀者姓名n"); printf("%stt%s",

43、p->reader_num,p->reader_name);for(i=0;i<Max;i+)printf("n");printf("圖書編號(hào)",i+1); printf("t還書日期",i+1); printf("n");printf("t%s",p->borrowi.borrow_book_num);printf("tt%s",p->borrowi.limit_date); printf("n");break;elsep=

44、p->next;printf("n讀者信息打印完畢!按任意鍵繼續(xù)下一步操作.");getch();system("cls");void Save() /*保存信息*/Save_Reader();Save_Book();void Save_Reader() /*保存讀者信息*/FILE *fp_reader; RD *p,*p0;p=h_reader;if(fp_reader=fopen("Reader.txt","wb")=NULL) /*創(chuàng)建文件,進(jìn)行保存*/printf("n文件保存失敗!n請重新啟動(dòng)本系統(tǒng).n");exit(0);while(p!=NULL) if(fwrite(p,sizeof(RD),1,fp_reader)!=1) /*將鏈表

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論