圖書(shū)管理系統(tǒng)設(shè)計(jì)報(bào)告 (個(gè)人部分)

上傳人:GCG1****010 文檔編號(hào):57136053 上傳時(shí)間:2022-02-23 格式:DOC 頁(yè)數(shù):36 大?。?16KB
收藏 版權(quán)申訴 舉報(bào) 下載
圖書(shū)管理系統(tǒng)設(shè)計(jì)報(bào)告 (個(gè)人部分)_第1頁(yè)
第1頁(yè) / 共36頁(yè)
圖書(shū)管理系統(tǒng)設(shè)計(jì)報(bào)告 (個(gè)人部分)_第2頁(yè)
第2頁(yè) / 共36頁(yè)
圖書(shū)管理系統(tǒng)設(shè)計(jì)報(bào)告 (個(gè)人部分)_第3頁(yè)
第3頁(yè) / 共36頁(yè)

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《圖書(shū)管理系統(tǒng)設(shè)計(jì)報(bào)告 (個(gè)人部分)》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《圖書(shū)管理系統(tǒng)設(shè)計(jì)報(bào)告 (個(gè)人部分)(36頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、· 計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)13級(jí) 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告 學(xué)院:數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 班級(jí):計(jì)科13—1 設(shè)計(jì)題目:圖書(shū)管理系統(tǒng) 姓 名:元乾 學(xué) 號(hào):1200313056037 指導(dǎo)教師:郝繼升 目 錄 一、 設(shè)計(jì)任務(wù)………………………………………3 1. 設(shè)計(jì)目的…………………………………………3 2. 問(wèn)題描述…………………………………………3 3. 設(shè)計(jì)基本要求……………………………………3 二、 本人任務(wù)………………………………………4 三、 功能簡(jiǎn)介………………………………………4 四、 主體內(nèi)容………………………………………5 1.

2、 問(wèn)題分析…………………………………………6 2. 數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)體定義…………………………… 6 3. 算法設(shè)計(jì)及程序流程圖………………………… 8 1) 主菜單…………………………………………8 2) 登記讀者…………………………………… 9 3) 借閱圖書(shū)……………………………………10 4) 查詢(xún)讀者……………………………………14 4. 運(yùn)行結(jié)果和調(diào)試分析……………………………15 五、 附錄…………………………………………23 參考文獻(xiàn)………………………………………… 24 六、 心得體會(huì)……………………………………24 一、設(shè)計(jì)任務(wù) Ⅰ、設(shè)計(jì)目

3、的 1、了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力; 2、初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能; 3、提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問(wèn)題的能力; 4、訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開(kāi)發(fā)一般規(guī)范進(jìn)行軟件開(kāi)發(fā)。 Ⅱ、問(wèn)題描述 設(shè)計(jì)一個(gè)計(jì)算機(jī)管理系統(tǒng)完成圖書(shū)管理基本業(yè)務(wù)。 Ⅲ、設(shè)計(jì)基本要求 1)每種書(shū)的登記內(nèi)容包括書(shū)號(hào)、書(shū)名、著作者、現(xiàn)存量和庫(kù)存量; 2)對(duì)書(shū)號(hào)建立索引表(線(xiàn)性表)以提高查找效率; 3)系統(tǒng)主要功能如下: *采編入庫(kù):新購(gòu)一種書(shū),確定書(shū)號(hào)后,登記到圖書(shū)帳目表中,如果表中已有,則只將庫(kù)存量增加

4、; *借閱:如果一種書(shū)的現(xiàn)存量大于0,則借出一本,登記借閱者的書(shū)證號(hào)和歸還期限,改變現(xiàn)存量; *歸還:注銷(xiāo)對(duì)借閱者的登記,改變?cè)摃?shū)的現(xiàn)存量. 進(jìn)一步完成內(nèi)容: 1)系統(tǒng)功能的進(jìn)一步完善; 2)索引表采用樹(shù)表。 3)設(shè)計(jì)內(nèi)容 4)程序流程圖 5)源程序 6)軟件測(cè)試報(bào)告(包括所用到的數(shù)據(jù)及結(jié)果) 二、本人任務(wù) 設(shè)計(jì)并編程圖書(shū)管理中的主菜單、借閱、登記讀者、查詢(xún)讀者共四個(gè)模塊. 三、功能簡(jiǎn)介 1) 圖書(shū)初始化 輸入圖書(shū)的一些信息,編號(hào)、作者、書(shū)名、數(shù)量,使有一定的庫(kù)存. 2) 新書(shū)入庫(kù) 新書(shū)采編入庫(kù),輸入編號(hào)后如果有次數(shù)只

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

6、情況如下圖: 這個(gè)系統(tǒng)主要有四大模塊,圖書(shū)管理模塊、讀者管理模塊、借閱操作模塊、查詢(xún)操作模塊。每個(gè)模塊下又有幾個(gè)分支模塊。 1.問(wèn)題分析 主菜單模塊需要設(shè)計(jì)一個(gè)可供選擇的界面,在界面中通過(guò)選擇不同的按鍵來(lái)實(shí)現(xiàn)不同的功能. 登記讀者模塊需要可以記錄學(xué)生的書(shū)證號(hào)以及學(xué)生的姓名. 借書(shū)模塊中學(xué)生可以通過(guò)書(shū)證號(hào)和所需要借的書(shū)的編號(hào)來(lái)借書(shū),借書(shū)完成后圖書(shū)數(shù)量減少。 查詢(xún)讀者模塊需要隨著讀者借書(shū)、還書(shū)不斷變化,總是能顯示出當(dāng)前讀者的準(zhǔn)確信息。 2。數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)體定義 圖書(shū)文件: typedef struct book { char book_num[10];

7、 char book_name[20]; 定義圖書(shū)的編號(hào),名稱(chēng),作者, char book_writer[10]; 現(xiàn)有以及庫(kù)存數(shù)量 int book_xy; int book_kc; struct book *next; 定義圖書(shū)結(jié)構(gòu)體 }BK; 數(shù)據(jù)記錄 借閱文件: typedef struct borrow { char borrow_book_num[10]; 定義借閱圖書(shū)編號(hào)以

8、 char limit_date[8]; 及還書(shū)日期 }BO; 數(shù)據(jù)記錄 讀者文件: typedef struct reader { char reader_num[10]; 定義讀者書(shū)證號(hào)以 char reader_name[10]; 及讀者姓名 int right; BO borrow[Max]; 借書(shū)最大數(shù)量 struct reader *next;

9、 定義讀者結(jié)構(gòu)體 }RD; 數(shù)據(jù)記錄 3.算法設(shè)計(jì)及程序流程圖 進(jìn)入系統(tǒng)后,顯示功能列表,可選擇任意系統(tǒng)。 ①主菜單: 程序流程圖: 執(zhí)行所選功能 錯(cuò)誤,請(qǐng)重新 輸入 開(kāi)始 輸入功能所對(duì)應(yīng)的數(shù)字 輸入的數(shù)字小于 0或大于6 源程序: int Menu() /*主菜單*/ { int dm; printf("\n\t\t圖書(shū)管理系統(tǒng)主菜單\n”); printf("=================================================\n"); printf(

10、"*\t0—--—退出系統(tǒng) \n"); printf(”*\t1—--—采編入庫(kù) \n"); printf("*\t2-——-登記讀者 \n”); printf(”*\t3-—-—借閱登記 \n"); printf(”*\t4——--還書(shū)管理 \n"); printf(”*\t5---—查詢(xún)圖書(shū)信息 \n"); printf("*\t6——-—查詢(xún)讀者信息 \n"); printf(”===========================================

11、======\n”); printf("請(qǐng)選擇相應(yīng)的代碼:"); for(;;) { scanf(”%d”,&dm); //dm輸入的數(shù)字 if(dm<0||dm>6) printf("\n錯(cuò)誤!請(qǐng)重新輸入:"); else break; } return dm; } void Menu_select()/*主菜單選擇函數(shù)*/ { for(;;) { switch(Menu()) /*功能選擇*/ { case 0: system("cls”); Save(); printf("\n\n\t文件保存成功!\n"

12、); printf("\n\n\t歡迎下次使用本系統(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(0);}

13、} } ②登記讀者: 開(kāi)始 輸入讀者信息:讀者書(shū)證號(hào),讀者姓名 結(jié)束 程序流程圖: 源程序: void add_reader()/*添加讀者*/ { RD *p0; int i; printf("\n讀者初始化開(kāi)始,請(qǐng)輸入讀者信息。.\n包括書(shū)證號(hào)。姓名.。\n"); p0=(RD*)malloc(sizeof(RD)); /*申請(qǐng)新結(jié)點(diǎn)存儲(chǔ)空間*/ h_reader=p0; printf("\n請(qǐng)輸入讀者的信息:\n”); printf("讀者書(shū)證號(hào):"); scanf("%s”,p0->re

14、ader_num); printf(”讀者姓名:"); scanf(”%s",p0-〉reader_name); p0->right=0; for(i=0;i〈Max;i++) { strcpy(p0-〉borrow[i].borrow_book_num,"0”); /*所借圖書(shū)直接置為(即沒(méi)有借書(shū))*/ strcpy(p0-〉borrow[i].limit_date,"0"); } p0—>next=NULL; printf(”\n讀者信息初始化完畢!按任意鍵繼續(xù)下一步操作。。\n");

15、 getch(); system(”cls”); } 輸入讀者書(shū)證號(hào) 判斷讀者是否 存在 輸出:讀者編號(hào)不存在!按任意鍵返回 ③借閱圖書(shū): 程序流程圖: 否 是 判斷是否還有 此圖書(shū) 輸入要借的圖書(shū)編號(hào) 判斷圖書(shū)編號(hào) 是否存在 輸出:此圖書(shū)編號(hào)不存在!按任意鍵返回 輸出:此書(shū)已借完,按任意鍵返回 判斷讀者的借書(shū)數(shù)目 是否已達(dá)上限 輸出:借書(shū)數(shù)目已滿(mǎn)無(wú)法借書(shū),按任意鍵返回 判斷讀者是否借了 相同的圖書(shū) 輸出:同一人不能

16、借相同的兩本書(shū),按任意鍵返回 輸入歸還圖書(shū)的日期 否 否 是 是 否 是

17、 否 圖書(shū)現(xiàn)有數(shù)量以及庫(kù)存數(shù)量都減1 輸出:讀者借書(shū)成功, 按任意鍵返回 結(jié)束 源程序: void Borrow_Book() /*借書(shū)模塊*/ { BK *p0; RD *p1; char bo_num[10],rea_num[10],lim_date[8]; int i; p0=h_book; p1=h_reader; printf("\n借書(shū)模塊。。.\n"); printf("\n請(qǐng)輸入借書(shū)的讀者書(shū)證號(hào):”); scanf("%s",rea_num); while(p1—>next!=NULL&&s

18、trcmp(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請(qǐng)輸入你要借的書(shū)的編號(hào):”); scanf("%s",bo_num); while(strcmp(bo_num,p0—>book_num)!=0&&p0—>next!=NU

19、LL) p0=p0-〉next; if(p0->next==NULL&&strcmp(bo_num,p0—>book_num)!=0) { printf("\n此圖書(shū)編號(hào)不存在!按任意鍵返回.。\n”); goto END; } else if(p0->book_xy〈=0) { printf("\n抱歉,此書(shū)已借完!請(qǐng)等待新書(shū)的到來(lái)!!\n按任意鍵返回.。。."); goto END; } else if(p

20、1—>right〉Max||p1—>right==Max) { printf("\n不好意思,借書(shū)數(shù)目已滿(mǎn)!不能借書(shū)!\n按任意鍵返回....”); goto END; } else if(strcmp(p1—>borrow[0]。borrow_book_num,”0")!=0) { for(i=0;i

21、printf(”\n抱歉!同一個(gè)讀者不能同借兩本相同的書(shū)!\n按任意鍵返回.。.?!?; goto END; } else if(strcmp(p1—〉borrow[i].borrow_book_num,”0”)==0) { printf(”\n請(qǐng)輸入你要?dú)w還圖書(shū)的日期:"); scanf(”%s",lim_date); strcpy(p1—>borrow[p1-〉right++].borrow_book_num,bo_num); strcpy(p1-〉

22、borrow[p1->right-1].limit_date,lim_date); p0-〉book_xy—-; p0—>book_kc—-; printf(”\n讀者編號(hào)%s借書(shū)完畢!按任意鍵繼續(xù)下步操作..”,p1—〉reader_num); goto END; } } } else { printf(”\n請(qǐng)輸入你要?dú)w還圖書(shū)的日期:”); scanf(”%s”,lim_date); strcpy(

23、p1—>borrow[p1—〉right++].borrow_book_num,bo_num); strcpy(p1-〉borrow[p1—>right—1].limit_date ,lim_date ); p0—〉book_xy--; p0->book_kc—-; printf("\n讀者編號(hào)%s借書(shū)完畢!按任意鍵繼續(xù)下步操作。.”,p1—>reader_num); } END:getch(); system("cls”); } ④查詢(xún)讀者: 程序流程圖: 判斷讀者信息 是否為空

24、 輸出:讀者書(shū)證號(hào)、姓名、圖書(shū)編碼和還書(shū)日期 否 輸出讀者信息打印完畢 結(jié)束 源程序: void Print_reader() /*查詢(xún)讀者信息*/ { RD *p; int i; p=h_reader; printf("\n讀者信息如下:\n\n"); printf(”讀者書(shū)證號(hào)\t\t讀者姓名\n”); printf("\n"); while(p!=NULL) { printf(”\t%s\t\t%s”,p->reader_num,p->reader

25、_name); for(i=0;i〈Max;i++) { printf(”\n”); printf(”圖書(shū)編號(hào)”,i+1); printf(”\t還書(shū)日期”,i+1); printf("\n"); printf(”\t%s",p—>borrow[i]。borrow_book_num); printf("\t\t%s”,p—>borrow[i].limit_date); } printf("\n"); p=p-〉next; } printf("\n讀者信息打印完畢!按任意鍵繼續(xù)下一步操作.。"); getch

26、(); system("cls"); } 4。運(yùn)行結(jié)果和調(diào)試分析 同一本新書(shū)入庫(kù)的運(yùn)行結(jié)果圖 不同的新書(shū)采編入庫(kù) 采編入庫(kù)后查詢(xún)圖書(shū)信息的運(yùn)行結(jié)果圖 登記讀者信息 借書(shū) 借書(shū)后查詢(xún)圖書(shū)信息的運(yùn)行結(jié)果圖 借同一本書(shū)的運(yùn)行結(jié)果圖 借不同的書(shū) 借兩本書(shū)后查詢(xún)讀者信息的運(yùn)行結(jié)果圖 還書(shū)運(yùn)行結(jié)果圖 還書(shū)之后再查詢(xún)讀者信息的運(yùn)行結(jié)果圖 還書(shū)后查詢(xún)圖書(shū)信息 退出 5。附錄 void Login() 進(jìn)入界面函數(shù) int Menu() 主菜單函數(shù) void Init() 初始化函數(shù) void Init_book() 初始化圖書(shū)信息函數(shù) void Menu_s

27、elect() 主菜單選擇函數(shù) void Find_Book() 查找圖書(shū)函數(shù) void Insert_New_Book() 新書(shū)入庫(kù)函數(shù) void add_reader() 添加讀者函數(shù) void Print_reader() 查詢(xún)讀者信息函數(shù) void Print_book() 查詢(xún)圖書(shū)信息函數(shù) void Borrow_Book() 借書(shū)函數(shù) void Return_Book() 還書(shū)函數(shù) void Save() 保存信息函數(shù) void Save_Book() 保存圖書(shū)信息函數(shù) vo id Save_Reader() 保存讀者信息函數(shù) void

28、Load() 加載信息函數(shù) void Load_Reader() 加載讀者信息 void Load_Book() 加載圖書(shū)信息 參考文獻(xiàn):C語(yǔ)言程序設(shè)計(jì)(何欽銘版) 數(shù)據(jù)結(jié)構(gòu) (耿國(guó)華版) 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(蘇仕華版) 六、心得體會(huì) 本次課程設(shè)計(jì),使我對(duì)《數(shù)據(jù)結(jié)構(gòu)》這門(mén)課程有了更深入的理解?!稊?shù)據(jù)結(jié)構(gòu)》是一門(mén)實(shí)踐性較強(qiáng)的課程,為了學(xué)好這門(mén)課程,必須在掌握理論知識(shí)的同時(shí),加強(qiáng)上機(jī)實(shí)踐。  剛開(kāi)始做這個(gè)程序的時(shí)候,感到完全無(wú)從下手,甚至讓我覺(jué)得完成這次程序設(shè)計(jì)根本就是不可能的,于是開(kāi)始查閱各種資料以及參考文獻(xiàn),之后便開(kāi)始著手

29、寫(xiě)程序,寫(xiě)完運(yùn)行時(shí)有很多問(wèn)題,通過(guò)同學(xué)間的幫助最終基本解決問(wèn)題。但是其中還有寫(xiě)瑕疵無(wú)法去除,可能是我的水平還不夠好,還需要更多的實(shí)踐操作才能寫(xiě)的更好吧.  通過(guò)這段時(shí)間的課程設(shè)計(jì),我認(rèn)識(shí)到數(shù)據(jù)結(jié)構(gòu)是一門(mén)比較難的課程.需要多花時(shí)間上機(jī)練習(xí)。這次的程序訓(xùn)練培養(yǎng)了我實(shí)際分析問(wèn)題、編程和動(dòng)手能力,使我掌握了程序設(shè)計(jì)的基本技能,提高了我適應(yīng)實(shí)際,實(shí)踐編程的能力。 總的來(lái)說(shuō),這次課程設(shè)計(jì)讓我獲益匪淺,對(duì)數(shù)據(jù)結(jié)構(gòu)也有了進(jìn)一步的理解和認(rèn)識(shí)。 圖書(shū)管理系統(tǒng)源程序 #include #include #includ

30、e〈conio.h> #define Max 4 typedef struct book { char book_num[10]; char book_name[20]; char book_writer[10]; char book_cbs[10]; int book_xy; int book_kc; struct book *next; }BK; typedef struct borrow { char borrow_book_num[10]; char limit_date[8]; }BO; typede

31、f struct reader { char reader_num[10]; char reader_name[10]; int right; BO borrow[Max]; struct reader *next; }RD; BK *h_book; RD *h_reader; void Login(); int Menu(); void Init(); void Init_book(); void Menu_select(); void Insert_Ne

32、w_Book(); void Find_Book(); void add_reader(); void Print_reader(); void Print_book(); void Borrow_Book(); void Return_Book(); void Save(); void Save_Book(); void Save_Reader(); void Load(); void Load_Reader(); void Load_Book();

33、 void Login() { system("cls"); printf(”\n\n\n\t\t***************************************\n”); printf(”\n\n\n\t\t\t歡迎使用圖書(shū)管理系統(tǒng)\n"); printf("\n\n\n\t\t***************************************\n”); printf(”\n\n\t\t程序制作人 王攀圓 李柱柱 \n\n\t\t學(xué)號(hào):1060313014042 1060313014047”); printf(”\n\n\

34、n\t\t 按任意鍵進(jìn)入系統(tǒng)。.?!保? getch(); system(”cls”); } int Menu() /*主菜單*/ { int dm; printf(”\n\t\t圖書(shū)管理系統(tǒng)主菜單\n”); printf(”=================================================\n"); printf("*\t0———-退出系統(tǒng) \n”); printf("*\t1--—-采編入庫(kù) \n"); printf("*\t2-———登記讀者 \n"); printf("

35、*\t3----借閱登記 \n”); printf(”*\t4-——-還書(shū)管理 \n"); printf(”*\t5—-——查詢(xún)圖書(shū)信息 \n”); printf(”*\t6---—查詢(xún)讀者信息 \n"); printf("=================================================\n”); printf(”請(qǐng)選擇相應(yīng)的代碼:”); for(;;) { scanf(”%d",&dm); /*dm輸入的數(shù)字*/ if(dm〈0||dm〉6) printf

36、("\n錯(cuò)誤!請(qǐng)重新輸入:”); else break; } return dm; } void Menu_select()/*主菜單選擇函數(shù)*/ { for(;;) { switch(Menu()) /*功能選擇*/ { case 0: system("cls”); Save(); printf("\n\n\t文件保存成功!\n”); printf(”\n\n\t歡迎下次使用本系統(tǒng)!\n"); getch(); exit(0); case 1:Insert_New_Book(

37、);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(0);} } } void Init() /*初始化*/ { BK *p0; p0=(BK*)malloc(sizeof(BK)); /*分配一個(gè)siz

38、eof(BK)大小的空間,并且把該空間的地址賦給BK指針類(lèi)型的p0*/ h_book=p0; printf("\n請(qǐng)輸入圖書(shū)信息:\n"); printf(”圖書(shū)編號(hào):”); /*輸入圖書(shū)編號(hào)(唯一)*/ scanf("%s”,p0->book_num); printf("圖書(shū)名稱(chēng):”); /*輸入圖書(shū)名稱(chēng)*/ scanf(”%s",p0->book_name); printf("圖書(shū)作者:”); /*輸入圖書(shū)作者*/ scanf(”%s”,p0->book_wr

39、iter); printf(”圖書(shū)出版社:”); scanf("%s",p0—〉book_cbs); printf("圖書(shū)數(shù)量:"); /*輸入圖書(shū)數(shù)量*/ scanf("%d",&p0—〉book_kc); p0-〉book_xy=p0->book_kc; /*開(kāi)始時(shí)圖書(shū)現(xiàn)有量和庫(kù)存量相等*/ p0->next=NULL; printf("\n圖書(shū)信息初始化完畢!按任意鍵繼續(xù)下一步操作。.\n"); getch(); system(”cls”); }

40、void Insert_New_Book()/*新書(shū)入庫(kù)*/ { BK *p,*p0,*p1; p=p1=h_book; printf(”\n新書(shū)入庫(kù)模塊..。\n”); printf("\n請(qǐng)輸入新書(shū)信息..\n包括書(shū)號(hào).書(shū)名。數(shù)量。出版社..\n"); p0=(BK *)malloc(sizeof(BK)); printf("圖書(shū)編號(hào):"); scanf(”%s",p0—〉book_num); while(strcmp(p0—>book_num,p1-〉book_num)!=0&&p1->next!=NULL) p1=

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

42、他的信息,然后在進(jìn)行插入操作*/ { printf("圖書(shū)名稱(chēng):”); scanf(”%s",p0—>book_name); printf(”圖書(shū)作者:”); scanf("%s",p0—>book_writer); printf("圖書(shū)出版社:"); scanf(”%s”,p0-〉book_cbs); printf(”圖書(shū)數(shù)量:”); scanf("%d",&p0—〉book_kc);/*庫(kù)存數(shù)量*/ while(p->next) { p=p->next; } if(h_book

43、==NULL) h_book=p0; /*此處分兩種情況,鏈表中沒(méi)有數(shù)據(jù),head直接指向p0處*/ else p->next=p0; /*此處分兩種情況,鏈表中有數(shù)據(jù),鏈表中最后元素的next指向p0處*/ p0-〉next=NULL; p0—〉book_xy=p0-〉book_kc; } printf(”\n新書(shū)入庫(kù)完畢!按任意鍵繼續(xù)下一步操作.。\n”); getch(); system(”cls"); } void add_reader()/*添加讀者*/ { RD

44、*p0; int i; printf(”\n讀者初始化開(kāi)始,請(qǐng)輸入讀者信息。.\n包括書(shū)證號(hào).姓名..\n”); p0=(RD*)malloc(sizeof(RD)); /*申請(qǐng)新結(jié)點(diǎn)存儲(chǔ)空間*/ h_reader=p0; printf("\n請(qǐng)輸入讀者的信息:\n”); printf("讀者書(shū)證號(hào):”); scanf(”%s",p0—>reader_num); printf(”讀者姓名:"); scanf("%s”,p0—〉reader_name); p0—>right=0; for(i=

45、0;iborrow[i]。borrow_book_num,”0”); /*所借圖書(shū)直接置為0(即沒(méi)有借書(shū))*/ strcpy(p0—〉borrow[i]。limit_date,”0”); } p0—>next=NULL; printf(”\n讀者信息初始化完畢!按任意鍵繼續(xù)下一步操作。.\n”); getch(); system("cls”); } void Borrow_Book() /*借書(shū)模塊*/ { BK *p0; RD *p1;

46、 char bo_num[10],rea_num[10],lim_date[8]; int i; p0=h_book; p1=h_reader; printf("\n借書(shū)模塊...\n"); printf("\n請(qǐng)輸入借書(shū)的讀者書(shū)證號(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)

47、 { printf("\n此讀者編號(hào)不存在!按任意鍵返回。.\n”); goto END; } printf(”\n請(qǐng)輸入你要借的書(shū)的編號(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) {

48、 printf("\n此圖書(shū)編號(hào)不存在!按任意鍵返回。.\n”); goto END; } else if(p0-〉book_xy<=0) { printf(”\n抱歉,此書(shū)已借完!請(qǐng)等待新書(shū)的到來(lái)!!\n按任意鍵返回.。。.”); goto END; } else if(p1—〉right>Max||p1->right==Max) { printf(”\n不好意思,借書(shū)數(shù)目已滿(mǎn)!不能借書(shū)!\n按任意鍵返回。.。.”);

49、 goto END; } else if(strcmp(p1—〉borrow[0]。borrow_book_num,"0")!=0) { for(i=0;i

50、cmp(p1-〉borrow[i].borrow_book_num,”0”)==0) { printf("\n請(qǐng)輸入你要?dú)w還圖書(shū)的日期:"); scanf("%s",lim_date); strcpy(p1-〉borrow[p1->right++].borrow_book_num,bo_num); strcpy(p1—〉borrow[p1—〉right—1].limit_date,lim_date); p0-〉book_xy--; p0-〉b

51、ook_kc—-; printf("\n讀者編號(hào)%s借書(shū)完畢!按任意鍵繼續(xù)下步操作。。",p1->reader_num); goto END; } } } else { printf("\n請(qǐng)輸入你要?dú)w還圖書(shū)的日期:”); scanf(”%s”,lim_date); strcpy(p1->borrow[p1-〉right++]。borrow_book_num,bo_num); strcpy(

52、p1—>borrow[p1—>right-1]。limit_date ,lim_date ); p0—>book_xy--; p0->book_kc-—; printf(”\n讀者編號(hào)%s借書(shū)完畢!按任意鍵繼續(xù)下步操作。.",p1-〉reader_num); } END:getch(); system(”cls”); } void Return_Book() /*還書(shū)模塊*/ { BK *p; RD *q; int i,j,find=0; char return_book_num[

53、10],return_reader_num[10]; p=h_book; q=h_reader; printf("\n還書(shū)模塊.。。\n”); printf(”\n請(qǐng)輸入要還書(shū)的讀者編號(hào):”); scanf("%s",return_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)

54、 { find=2; printf(”\n此讀者編號(hào)不存在!按任意鍵返回..\n"); goto end; } printf(”\n請(qǐng)輸入讀者還書(shū)的編號(hào):"); scanf("%s”,return_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)

55、 { find=2; printf("\n錯(cuò)誤!此圖書(shū)編號(hào)不存在!按任意鍵返回。。\n”); goto end; } for(i=0;iborrow[i].borrow_book_num)==0) /*如果此讀者借了此書(shū)*/ { find=1; for(j=i;j

56、book_num,q-〉borrow[j+1]。borrow_book_num); strcpy(q-〉borrow[j].limit_date,q-〉borrow[j+1].limit_date); } strcpy(q—〉borrow[Max—1].borrow_book_num,”0"); strcpy(q->borrow[Max-1].limit_date,”0”); p-〉book_xy++; p-〉book_kc++; q—〉right—-;

57、 printf("\n編號(hào)%s的讀者還書(shū)完畢!按任意鍵繼續(xù)下步操作..",return_reader_num); } if(find==0) printf("\n錯(cuò)誤!此讀者未借此書(shū)!按任意鍵返回..\n"); end: getch(); system("cls"); } void Print_book() /*查詢(xún)圖書(shū)信息*/ { BK *p; p=h_book; printf(”\n圖書(shū)信息如下:\n\n"); printf("圖書(shū)編號(hào)\t圖書(shū)名稱(chēng)\t圖書(shū)作者\(yùn)t圖書(shū)出版社\t現(xiàn)有\(zhòng)t庫(kù)存\n

58、"); while(p!=NULL) { printf(”%s\t\t%s\t\t%s\t\t%s\t\t%d\t%d\n”,p—〉book_num,p-〉book_name,p->book_writer,p-〉book_cbs,p—>book_xy,p->book_kc); p=p->next; } printf("\n圖書(shū)信息打印完畢!按任意鍵繼續(xù)下一步操作。?!保? getch(); system(”cls"); } void Print_reader() /*查詢(xún)讀者信息*/ { RD *p; int i; p=h

59、_reader; printf(”\n讀者信息如下:\n\n"); printf(”讀者書(shū)證號(hào)\t\t讀者姓名\n"); printf(”\n”); while(p!=NULL) { printf("\t%s\t%s",p—〉reader_num,p->reader_name); for(i=0;i〈Max;i++) { printf("\n”); printf(”圖書(shū)編號(hào)",i+1); printf("\t還書(shū)日期",i+1); printf(”\n"); printf(”\t%

60、s",p->borrow[i].borrow_book_num); printf(”\t\t%s”,p->borrow[i]。limit_date); } printf(”\n”); p=p—〉next; } printf(”\n讀者信息打印完畢!按任意鍵繼續(xù)下一步操作。."); getch(); system(”cls”); } void Save() /*保存信息*/ { Save_Reader(); Save_Book(); } void Save_Reader() /*保存讀者信息*/ { FIL

61、E *fp_reader; RD *p,*p0; p=h_reader; if((fp_reader=fopen(”Reader.txt","wb”))==NULL) /*創(chuàng)建文件,進(jìn)行保存*/ { printf("\n文件保存失敗!\n請(qǐng)重新啟動(dòng)本系統(tǒng)。.。\n”); exit(0); } while(p!=NULL) { if(fwrite(p,sizeof(RD),1,fp_reader)!=1) /*將鏈表中的信息寫(xiě)入文件中*/ printf("\n寫(xiě)入文件失敗!\n請(qǐng)重新啟動(dòng)本系統(tǒng)!\n");

62、 p0=p; p=p->next; free(p0); /*釋放所有結(jié)點(diǎn)*/ } h_reader=NULL; fclose(fp_reader); /*關(guān)閉文件*/ } void Save_Book() /*保存圖書(shū)信息*/ { FILE *fp_book; /*創(chuàng)建文件型指針*/ BK *p,*p0; p=h_book; if((fp_book=fopen(”Book。txt”,"wb"))==NULL) /*?jiǎng)?chuàng)建文件,進(jìn)行保存*/ { printf(”\n文件保存失??!\n請(qǐng)重新啟動(dòng)本系統(tǒng).

63、。。\n”); exit(0); } while(p!=NULL) { if(fwrite(p,sizeof(BK),1,fp_book)!=1) /*將鏈表中的信息寫(xiě)入文件中*/ printf("\n寫(xiě)入文件失??!\n請(qǐng)重新啟動(dòng)本系統(tǒng)!\n"); p0=p; p=p-〉next; free(p0); } h_book=NULL; fclose(fp_book); /*關(guān)閉文件*/ } void Load() /*加載信息*/ { Load_Reade

64、r(); Load_Book(); } void Load_Reader() /*加載讀者信息*/ { RD *p1,*p2,*p3; FILE *fp; /*創(chuàng)建文件型指針*/ fp=fopen(”book。txt”,”rb”); /*打開(kāi)文件*/ p1=(RD *)malloc(sizeof(RD)); fread(p1,sizeof(RD),1,fp); h_reader=p3=p2=p1; while(! feof(fp)) /*讀出信息,重新鏈入鏈表*/

65、 { p1=(RD *)malloc(sizeof(RD)); fread(p1,sizeof(RD),1,fp); p2-〉next=p1; p3=p2; p2=p1; } p3—>next=NULL; free(p1); fclose(fp); /*關(guān)閉文件*/ } void Load_Book() /*加載圖書(shū)信息*/ { BK *p1,*p2,*p3; FILE *fp; /*創(chuàng)建文件型指針*/ fp=fopen(”Book。txt","rb"

66、); /*打開(kāi)文件*/ p1=(BK *)malloc(sizeof(BK)); fread(p1,sizeof(BK),1,fp); h_book=p3=p2=p1; while(! feof(fp)) /*讀出信息,重新鏈入鏈表*/ { p1=(BK *)malloc(sizeof(BK)); fread(p1,sizeof(BK),1,fp); p2—>next=p1; p3=p2; p2=p1; } p3->next=NULL; free(p1); fclose(fp); /*關(guān)閉文件*/ } void main() { FILE *fp_book,*fp_reader; /*?jiǎng)?chuàng)建文件型指針*/ Login(); if((fp_book=fopen("Book.txt","rb”))==NULL||(fp_reader=fopen(”Reader

展開(kāi)閱讀全文
溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話(huà):18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!