圖書(shū)管理系統(tǒng)設(shè)計(jì)報(bào)告 (個(gè)人部分)
《圖書(shū)管理系統(tǒng)設(shè)計(jì)報(bào)告 (個(gè)人部分)》由會(huì)員分享,可在線閱讀,更多相關(guān)《圖書(shū)管理系統(tǒng)設(shè)計(jì)報(bào)告 (個(gè)人部分)(36頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、· 計(jì)算機(jī)科學(xué)與技術(shù)專業(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) 查詢讀者……………………………………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)建立索引表(線性表)以提高查找效率; 3)系統(tǒng)主要功能如下: *采編入庫(kù):新購(gòu)一種書(shū),確定書(shū)號(hào)后,登記到圖書(shū)帳目表中,如果表中已有,則只將庫(kù)存量增加
4、; *借閱:如果一種書(shū)的現(xiàn)存量大于0,則借出一本,登記借閱者的書(shū)證號(hào)和歸還期限,改變現(xiàn)存量; *歸還:注銷對(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ū)管理中的主菜單、借閱、登記讀者、查詢讀者共四個(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) 查詢圖書(shū)信息 7) 查詢讀者信息 可查詢讀者姓名書(shū)證號(hào),借了幾本書(shū),都是什么書(shū)和還書(shū)日期,還可以借幾本書(shū)。 8) 退出 退出讀書(shū)管理系統(tǒng)并保存讀者和圖書(shū)信息。 四、主體內(nèi)容 圖書(shū)管理系統(tǒng)總體
6、情況如下圖: 這個(gè)系統(tǒng)主要有四大模塊,圖書(shū)管理模塊、讀者管理模塊、借閱操作模塊、查詢操作模塊。每個(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ù)量減少。 查詢讀者模塊需要隨著讀者借書(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),名稱,作者, 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---—查詢圖書(shū)信息 \n"); printf("*\t6——-—查詢讀者信息 \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ù)目已滿無(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ù)目已滿!不能借書(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”);
}
④查詢讀者:
程序流程圖:
判斷讀者信息
是否為空
24、
輸出:讀者書(shū)證號(hào)、姓名、圖書(shū)編碼和還書(shū)日期
否
輸出讀者信息打印完畢
結(jié)束
源程序:
void Print_reader() /*查詢讀者信息*/
{
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ù)后查詢圖書(shū)信息的運(yùn)行結(jié)果圖
登記讀者信息
借書(shū)
借書(shū)后查詢圖書(shū)信息的運(yùn)行結(jié)果圖
借同一本書(shū)的運(yùn)行結(jié)果圖
借不同的書(shū)
借兩本書(shū)后查詢讀者信息的運(yùn)行結(jié)果圖
還書(shū)運(yùn)行結(jié)果圖
還書(shū)之后再查詢讀者信息的運(yùn)行結(jié)果圖
還書(shū)后查詢圖書(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()
查詢讀者信息函數(shù)
void Print_book()
查詢圖書(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 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—-——查詢圖書(shū)信息 \n”);
printf(”*\t6---—查詢讀者信息 \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指針類型的p0*/
h_book=p0;
printf("\n請(qǐng)輸入圖書(shū)信息:\n");
printf(”圖書(shū)編號(hào):”); /*輸入圖書(shū)編號(hào)(唯一)*/
scanf("%s”,p0->book_num);
printf("圖書(shū)名稱:”); /*輸入圖書(shū)名稱*/
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ū)名稱:”);
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;i 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ù)目已滿!不能借書(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;i 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() /*查詢圖書(shū)信息*/
{
BK *p;
p=h_book;
printf(”\n圖書(shū)信息如下:\n\n");
printf("圖書(shū)編號(hào)\t圖書(shū)名稱\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() /*查詢讀者信息*/
{
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
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 川渝旅游日記成都重慶城市介紹推薦景點(diǎn)美食推薦
- XX國(guó)有企業(yè)黨委書(shū)記個(gè)人述責(zé)述廉報(bào)告及2025年重點(diǎn)工作計(jì)劃
- 世界濕地日濕地的含義及價(jià)值
- 20XX年春節(jié)節(jié)后復(fù)工安全生產(chǎn)培訓(xùn)人到場(chǎng)心到崗
- 大唐女子圖鑒唐朝服飾之美器物之美繪畫(huà)之美生活之美
- 節(jié)后開(kāi)工第一課輕松掌握各要點(diǎn)節(jié)后常見(jiàn)的八大危險(xiǎn)
- 廈門(mén)城市旅游介紹廈門(mén)景點(diǎn)介紹廈門(mén)美食展示
- 節(jié)后開(kāi)工第一課復(fù)工復(fù)產(chǎn)十注意節(jié)后復(fù)工十檢查
- 傳統(tǒng)文化百善孝為先孝道培訓(xùn)
- 深圳城市旅游介紹景點(diǎn)推薦美食探索
- 節(jié)后復(fù)工安全生產(chǎn)培訓(xùn)勿忘安全本心人人講安全個(gè)個(gè)會(huì)應(yīng)急
- 預(yù)防性維修管理
- 常見(jiàn)閥門(mén)類型及特點(diǎn)
- 設(shè)備預(yù)防性維修
- 2.乳化液泵工理論考試試題含答案