版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 信息科學(xué)與技術(shù)學(xué)院</b></p><p> 程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)報(bào)告</p><p> 題目名稱: 圖書信息管理系統(tǒng)設(shè)計(jì) </p><p> 2012年 6月21日</p><p> 1. 課程設(shè)計(jì)目的3</p><p> 1.1. 課程設(shè)計(jì)的
2、題目3</p><p> 1.2. 課程設(shè)計(jì)的要求3</p><p> 1.2.1 問(wèn)題描述(功能要求):3</p><p> 1.2.2問(wèn)題的解決方案:3</p><p> 1.2.3其他要求:3</p><p><b> 2. 總體設(shè)計(jì)4</b></p>&
3、lt;p> 2.1. 新書入庫(kù)模塊4</p><p> 2.2. 信息查詢模塊4</p><p> 2.2.1讀者信息查詢模塊4</p><p> 2.2.2圖書信息查詢模塊4</p><p> 2.2.3打印圖書信息4</p><p> 2.2.4打印讀者信息4</p>&
4、lt;p> 2.3. 借書模塊4</p><p> 2.4. 還書模塊4</p><p><b> 3. 詳細(xì)設(shè)計(jì)5</b></p><p> 3.1. 類設(shè)計(jì)5</p><p> 3.2. 基本操作函數(shù)5</p><p> 3.3. 程序流程圖6</p>
5、<p> 3.3.1主函數(shù)流程圖6</p><p> 3.3.2初始化模塊7</p><p> 3.3.3借書模塊7</p><p> 3.3.4新書入庫(kù)模塊8</p><p> 3.3.5信息查詢模塊8</p><p> 3.3.6還書模塊9</p><p&g
6、t;<b> 4. 運(yùn)行結(jié)果9</b></p><p> 5. 設(shè)計(jì)源碼16</p><p> 6. 課程設(shè)計(jì)總結(jié)31</p><p> 7. 參考書目:31</p><p><b> 課程設(shè)計(jì)目的</b></p><p><b> 課程設(shè)計(jì)的題
7、目</b></p><p> 圖書信息管理系統(tǒng)設(shè)計(jì)</p><p><b> 課程設(shè)計(jì)的要求</b></p><p> 1.2.1 問(wèn)題描述(功能要求):</p><p> 圖書信息包括:登錄號(hào)、書名、作者名、分類號(hào)、出版單位、出版時(shí)間、價(jià)格等。試設(shè)計(jì)一圖書信息管理系統(tǒng),使之能提供以下功能:</
8、p><p> (1)系統(tǒng)以菜單方式工作</p><p> ?。?)圖書信息錄入功能(圖書信息以文件保存)——輸入</p><p> ?。?)圖書信息瀏覽功能——輸出</p><p> ?。?)查詢和排序功能:(至少一種查詢方式)——算法</p><p> (5)圖書信息的刪除與修改(可選項(xiàng))</p>&l
9、t;p> 1.2.2問(wèn)題的解決方案:</p><p> ?。?)分析系統(tǒng)中的各個(gè)實(shí)體之間的關(guān)系及其屬性和行為;</p><p> ?。?)根據(jù)問(wèn)題描述,設(shè)計(jì)系統(tǒng)的類層次;</p><p> ?。?)完成類層次中的各個(gè)類的描述(包括屬性和方法)</p><p> (4)完成類中各個(gè)成員函數(shù)的定義;</p><p&g
10、t; ?。?)完成系統(tǒng)的應(yīng)用模塊;</p><p><b> ?。?)功能調(diào)試</b></p><p> ?。?)完成系統(tǒng)總結(jié)報(bào)告以及系統(tǒng)使用說(shuō)明書。</p><p> 1.2.3其他要求:</p><p> ?。?)只能使用C/C++語(yǔ)言,源程序要有適當(dāng)?shù)淖⑨?,使程序容易閱讀</p><p>
11、 (2)至少采用文本菜單界面(如果能采用圖形菜單界面更好)</p><p> ?。?)學(xué)生可自動(dòng)增加新功能模塊</p><p><b> 總體設(shè)計(jì)</b></p><p><b> 新書入庫(kù)模塊</b></p><p> 功能:登記入庫(kù)的新書信息</p><p>&l
12、t;b> 信息查詢模塊</b></p><p> 2.2.1讀者信息查詢模塊</p><p> 功能:查詢某一讀者的信息</p><p> 2.2.2圖書信息查詢模塊</p><p> 功能:查詢某一圖書的信息</p><p> 2.2.3打印圖書信息</p><p&g
13、t; 功能:打印所有圖書的信息</p><p> 2.2.4打印讀者信息</p><p> 功能:打印所有讀者的信息</p><p><b> 借書模塊</b></p><p> 功能:登記讀者的借書信息</p><p><b> 還書模塊</b></p&g
14、t;<p> 功能:登記讀者的還書信息</p><p><b> 詳細(xì)設(shè)計(jì)</b></p><p><b> 類設(shè)計(jì)</b></p><p> typedef struct BOOK //聲明圖書結(jié)構(gòu)體變量BOOK,表示圖書信息</p><p><b>
15、; {</b></p><p> char number[10]; //書號(hào)</p><p> char title[20]; //書名</p><p> char writer[10]; //作者</p><p> char publish[20]; //出版社</p&g
16、t;<p> int year; //出版年份</p><p> int month; //出版月份</p><p> int day; //出版日期</p><p> float price; //出版價(jià)格</p><p>
17、 int storage; //庫(kù)存量</p><p> int remain; //現(xiàn)存量</p><p> struct BOOK *next; //下一個(gè)節(jié)點(diǎn)指針</p><p><b> }BOOK;</b></p><p> typedef struct BORROW
18、 //借書信息</p><p><b> {</b></p><p> char book_number[10]; //書號(hào)</p><p><b> }BORROW;</b></p><p> typedef struct READER //讀者信息<
19、;/p><p><b> {</b></p><p> char number[3]; //讀者編號(hào)</p><p> char name[10]; //讀者名字</p><p> int borrow_amount; //當(dāng)前借書量</p><p>
20、 BORROW borrow[Max]; //借書信息</p><p> struct READER *next;</p><p><b> }READER;</b></p><p><b> 基本操作函數(shù)</b></p><p> int DisplayMenu();//
21、顯示主菜單</p><p> void Initialize(); //初始化(初始化讀者和圖書的信息)</p><p> void Init_reader();//初始化讀者信息</p><p> void Init_book(); //初始化圖書信息</p><p> void Insert_New_
22、Book();//新書入庫(kù)模塊</p><p> int Find(); //查找菜單</p><p> void Find_Select();//查找菜單選擇函數(shù)</p><p> void Find_Reader();//查找某個(gè)讀者信息</p><p> void Find_Book();/
23、/查找某個(gè)圖書信息 </p><p> void Print_reader(); //打印所有讀者信息</p><p> void Print_book();//打印所有圖書信息</p><p> void Borrow_Book();//借書函數(shù)</p><p> void Return_Book();/
24、/還書函數(shù)</p><p> void Save(); //保存到文件</p><p> void Selectmenu(); //主菜單選擇函數(shù)</p><p><b> 程序流程圖</b></p><p> 3.3.1主函數(shù)流程圖</p><p> 圖3.
25、3.1 主函數(shù)流程圖</p><p> 3.3.2初始化模塊</p><p> 圖3.2 初始化模塊流程圖</p><p><b> 3.3.3借書模塊</b></p><p> 圖3.3 借書模塊流程圖</p><p> 3.3.4新書入庫(kù)模塊</p><p>
26、 圖3.4 新書入庫(kù)模塊</p><p> 3.3.5信息查詢模塊</p><p> 圖3.5 信息查詢模塊流程圖</p><p><b> 3.3.6還書模塊</b></p><p> 圖3.6 還書模塊流程圖</p><p><b> 運(yùn)行結(jié)果</b><
27、/p><p><b> 設(shè)計(jì)源碼</b></p><p> /*Standard Template Library,標(biāo)準(zhǔn)模板庫(kù)*/</p><p> #include <iostream> //數(shù)據(jù)流輸入/輸出</p><p> #include <string> //字符
28、串類</p><p> using namespace std;</p><p> #define Max 3 </p><p> typedef struct BOOK //聲明圖書結(jié)構(gòu)體變量BOOK,表示圖書信息</p><p><b> {</b></p><p
29、> char number[10];//書號(hào)</p><p> char title[20]; //書名</p><p> char writer[10];//作者</p><p> char publish[20]; //出版社</p><p> int year;
30、//出版年份</p><p> int month; //出版月份</p><p> int day; //出版日期</p><p> float price; //出版價(jià)格</p><p> int storage; //庫(kù)存量</p&g
31、t;<p> int remain; //現(xiàn)存量</p><p> struct BOOK *next; //下一個(gè)節(jié)點(diǎn)指針</p><p><b> }BOOK;</b></p><p> typedef struct BORROW //借書信息</p><p>&
32、lt;b> {</b></p><p> char book_number[10];//書號(hào)</p><p><b> }BORROW;</b></p><p> typedef struct READER //讀者信息</p><p><b> {</b>
33、</p><p> char number[3]; //讀者編號(hào)</p><p> char name[10];//讀者名字</p><p> int borrow_amount;//當(dāng)前借書量</p><p> BORROW borrow[Max]; //借書信息</p><p>
34、; struct READER *next;</p><p><b> }READER;</b></p><p> BOOK *h_book = NULL;//圖書鏈表頭結(jié)點(diǎn)</p><p> READER *h_reader = NULL;//讀者鏈表頭結(jié)點(diǎn)</p><p> int DisplayM
35、enu();//顯示主菜單</p><p> void Initialize();//初始化(初始化讀者和圖書的信息)</p><p> void Init_reader();//初始化讀者信息</p><p> void Init_book();//初始化圖書信息</p><p> void Insert_N
36、ew_Book();//新書入庫(kù)模塊</p><p> int Find();//查找菜單</p><p> void Find_Select();//查找菜單選擇函數(shù)</p><p> void Find_Reader();//查找某個(gè)讀者信息</p><p> void Find_Book();//
37、查找某個(gè)圖書信息 </p><p> void Print_reader();//打印所有讀者信息</p><p> void Print_book();//打印所有圖書信息</p><p> void Borrow_Book();//借書函數(shù)</p><p> void Return_Book();//還書函數(shù)
38、</p><p> void Save();//保存到文件</p><p> void Selectmenu(); //主菜單選擇函數(shù)</p><p><b> //顯示主菜單</b></p><p> int DisplayMenu()</p><p><
39、;b> { </b></p><p> int choice;</p><p> cout<<endl<<"圖書管理系統(tǒng)主菜單"<<endl;</p><p> cout<<string(50,'=')<<endl;</p>&l
40、t;p> cout<<"*\t0----退出系統(tǒng) *"<<endl;</p><p> cout<<"*\t1----新書入庫(kù) *"<<endl;</p><p> cout<<"*\t2----信息查詢 *"<<endl;
41、</p><p> cout<<"*\t3----借書登記 *"<<endl;</p><p> cout<<"*\t4----還書管理 *"<<endl;</p><p> cout<<string(50,'=')<<
42、;endl;</p><p> cout<<"請(qǐng)選擇相應(yīng)選項(xiàng):"; </p><p><b> while(1)</b></p><p><b> {</b></p><p> cin>>choice;</p><p>
43、 if(choice<0||choice>4)</p><p> cout<<"\n錯(cuò)誤!請(qǐng)重新輸入:";</p><p><b> else </b></p><p><b> break;</b></p><p><b> }<
44、/b></p><p> return choice; </p><p><b> }</b></p><p> void Initialize() //初始化(初始化讀者和圖書的信息)</p><p><b> { </b></p><
45、p> Init_book();</p><p> Init_reader();</p><p><b> }</b></p><p> void Init_book() //初始化圖書信息</p><p><b> {</b></p><
46、;p> BOOK *pBook; //創(chuàng)建指向BOOK類的指針</p><p> pBook = (BOOK*)malloc(sizeof(BOOK)); </p><p> /*sizeof是C/C++中的一個(gè)操作符(operator),作用是返回一個(gè)對(duì)象或者類型所占的內(nèi)存字節(jié)數(shù)。*/</p><p> /*Malloc
47、 向系統(tǒng)申請(qǐng)分配指定size個(gè)字節(jié)的內(nèi)存空間。返回類型是 void* 類型。*/</p><p> /*void* 類型可以強(qiáng)制轉(zhuǎn)換為任何其它類型的指針。*/</p><p> memset(pBook, 0, sizeof(BOOK)); //函數(shù)原型void *memset(void *s, int ch, size_t n);</p><p> /
48、*memset函數(shù)的作用是將s中前n個(gè)字節(jié)替換為ch并返回s;*/</p><p> h_book = pBook;</p><p><b> //打開文件</b></p><p> if (freopen("book.txt", "r", stdin) == NULL)</p>&l
49、t;p><b> {</b></p><p> fclose(stdin);</p><p> freopen("CON", "r", stdin);</p><p><b> return;</b></p><p><b> }&
50、lt;/b></p><p><b> while (1)</b></p><p><b> {</b></p><p><b> //讀取讀者信息</b></p><p> cin>>pBook->number;</p><
51、;p> if (strcmp(pBook->number, "0") == 0)//讀到了文件末尾</p><p> //strcmp是字符串比較函數(shù)</p><p><b> {</b></p><p> //關(guān)閉文件輸入流,恢復(fù)標(biāo)準(zhǔn)輸入流</p><p> fclose(s
52、tdin);</p><p> freopen("CON", "r", stdin);</p><p><b> return;</b></p><p><b> }</b></p><p> cin>>pBook->title&
53、gt;>pBook->writer>>pBook->publish>>pBook->year>>pBook->month</p><p> >>pBook->day>>pBook->price>>pBook->storage>>pBook->remain;</p>
54、<p><b> //創(chuàng)建下一個(gè)節(jié)點(diǎn)</b></p><p> BOOK *temp = (BOOK*)malloc(sizeof(BOOK));</p><p> memset(temp, 0, sizeof(BOOK));</p><p> pBook->next = temp;</p><p
55、> pBook = temp;</p><p><b> }</b></p><p> //關(guān)閉文件輸入流,恢復(fù)標(biāo)準(zhǔn)輸入流</p><p> fclose(stdin);</p><p> freopen("CON", "r", stdin);</p>
56、<p><b> }</b></p><p><b> //初始化讀者信息</b></p><p> void Init_reader()</p><p><b> { </b></p><p> READER *pReader;</p>&
57、lt;p> pReader = (READER*)malloc(sizeof(READER)); /*向系統(tǒng)申請(qǐng)分配指定size個(gè)字節(jié)的內(nèi)存空間,返回類型是 void* 類型。*/</p><p> memset(pReader, 0, sizeof(READER)); /* 把pReader 清零 */</p><p> h_reader
58、 = pReader;</p><p> if (freopen("reader.txt", "r", stdin) == NULL) //打開文件</p><p><b> {</b></p><p> fclose(stdin);</p><p> freopen(
59、"CON", "r", stdin);</p><p><b> return;</b></p><p><b> }</b></p><p><b> while (1)</b></p><p><b> {<
60、;/b></p><p><b> //讀取讀者信息</b></p><p> cin>>pReader->number;</p><p> if (strcmp(pReader->number, "0") == 0)//如果讀到了文件末尾</p><p><
61、;b> {</b></p><p> fclose(stdin);</p><p> freopen("CON", "r", stdin); </p><p><b> return;</b></p><p><b> }</b>&
62、lt;/p><p> cin>>pReader->name>>pReader->borrow_amount; </p><p> for (int i = 0; i < pReader->borrow_amount; i++)</p><p><b> {</b></p><
63、;p> cin>>pReader->borrow[i].book_number;</p><p><b> }</b></p><p><b> //創(chuàng)建下一個(gè)節(jié)點(diǎn)</b></p><p> READER *temp = (READER*)malloc(sizeof(READER));<
64、;/p><p> memset(temp, 0, sizeof(READER));</p><p> pReader->next = temp;</p><p> pReader = temp;</p><p><b> }</b></p><p> //關(guān)閉文件輸入流,恢復(fù)標(biāo)準(zhǔn)輸入流
65、</p><p> fclose(stdin); //函數(shù)原型: int fclose(FILE *stream);</p><p> freopen("CON", "r", stdin); </p><p> /*重新分配文件指針,實(shí)現(xiàn)重定向。如果stream流已經(jīng)打開,則先關(guān)閉該流。如果該流已經(jīng)定向,則freopen
66、將會(huì)清除該定向。*/</p><p> /*函數(shù)原型: FILE *freopen(const char *filename,const char *type, FILE *stream);*/</p><p> /*功 能: 關(guān)閉一個(gè)流。注意:使用fclose()函數(shù)就可以把緩沖區(qū)內(nèi)最后剩余的數(shù)據(jù)輸出到磁盤文件中,并釋放文件指針和有關(guān)的緩沖區(qū)。*/</p><p
67、><b> }</b></p><p> void Insert_New_Book() //新書入庫(kù)模塊</p><p><b> {</b></p><p> BOOK *p,*p0,*p1; </p><p> p=p1=h_book;</p><
68、p> cout<<"\n\t\t新書入庫(kù)\n"; </p><p> cout<<string(40,'=')<<endl;</p><p> cout<<"\n請(qǐng)輸入新書信息:\n"; </p><p> p0=(BOOK *)malloc(siz
69、eof(BOOK));</p><p> cout<<"BookNo.:"; </p><p> cin>>p0->number;</p><p> while(strcmp(p0->number,p1->number)!=0&&p1->next != NULL)</p&
70、gt;<p> p1=p1->next;</p><p> if(strcmp(p0->number,p1->number)==0) </p><p> /*此處分兩種情況,若圖書編號(hào)存在,則直接進(jìn)庫(kù),只須輸入書的數(shù)量*/</p><p><b> {</b></p><p>
71、cout<<"\n此編號(hào)圖書已存在!!直接入庫(kù)!\n"; </p><p> cout<<"請(qǐng)輸入入庫(kù)的圖書數(shù)量:"; </p><p> cin>>p0->storage;</p><p> p1->storage+=p0->storage;</p>
72、<p> p1->remain+=p0->storage;</p><p> cin.clear( );</p><p> cin.ignore( 200,'\n');</p><p><b> }</b></p><p> else/*若不存在,則需要輸入其他的信息 ,然
73、后在進(jìn)行插入操作*/</p><p><b> {</b></p><p> cout<<"圖書名:"; </p><p> char tmp[20] ={0};</p><p> cin >> tmp;</p><p> memcpy(p0-
74、>title,tmp,20); //函數(shù)原型void *memcpy(void *dest, const void *src, int n);</p><p> /*從源src所指的內(nèi)存地址的起始位置開始拷貝n個(gè)字節(jié)到目標(biāo)dest所指的內(nèi)存地址的起始位置中*/</p><p> cout<<"圖書作者:"; </p><p&g
75、t; char tmp0[10] ={0};</p><p> cin >> tmp;</p><p> memcpy(p0->writer,tmp,20); </p><p> cout<<"圖書出版社:"; </p><p> char tmp1[20] ={0};</p&
76、gt;<p> cin >> tmp;</p><p> memcpy(p0->publish,tmp,20); </p><p> cout<<"圖書的出版年份:"; </p><p> cin>>p0->year;</p><p> cout<
77、;<"圖書的出版月份:";</p><p> cin>>p0->month;</p><p> cout<<"圖書的出版日期:";</p><p> cin>>p0->day;</p><p> cout<<"圖書價(jià)格:
78、";</p><p> cin>>p0->price;</p><p> cout<<"圖書入庫(kù)量:";</p><p> cin>>p0->remain;</p><p> p0->storage=p0->remain;</p>
79、<p> while(strcmp(p->next->number, "0") != 0) </p><p><b> {</b></p><p> p=p->next;</p><p><b> }</b></p><p> if(h_bo
80、ok==NULL) h_book=p0; /*此處分兩種情況,鏈表中如果沒(méi)有數(shù)據(jù),head則直接指向p0處*/</p><p><b> else</b></p><p><b> {</b></p><p> p0->next = p->next;</p><p> p-&
81、gt;next = p0; /*此處分兩種情況,鏈表中有數(shù)據(jù),鏈表中最后元素的next指向p0處*/</p><p><b> }</b></p><p> p0->remain=p0->storage; </p><p><b> }</b></p><p&g
82、t; cout<<"\n新書入庫(kù)完畢!\n"; </p><p> getchar();</p><p><b> }</b></p><p><b> //查找菜單</b></p><p> int Find()</p><p>&
83、lt;b> {</b></p><p> int choice;</p><p> cout<<"\n\t\t信息查詢菜單\n"; </p><p> cout<<endl<<string(50,'=')<<endl;</p><p>
84、; cout<<"*\t 0----返回上級(jí) \t*\n"; </p><p> cout<<"*\t 1----查找圖書 \t*\n"; </p><p> cout<<"*\t 2----查找讀者
85、 \t*\n"; </p><p> cout<<"*\t 3----打印所有圖書 \t*\n"; </p><p> cout<<"*\t 4----打印所有讀者 \t*\n";</p><p> co
86、ut<<string(50,'=')<<endl;</p><p> cout<<"請(qǐng)選擇相應(yīng)代碼:"; </p><p> for(;;) /*循環(huán)調(diào)用模式,保證能進(jìn)行重復(fù)操作*/</p><p><b> { </b></p><p>
87、 cin>>choice; </p><p> if(choice<0||choice>4)</p><p><b> {</b></p><p> cin.clear( );</p><p> cin.ignore(200,'\n');</p><p
88、> cout<<"\n錯(cuò)誤!請(qǐng)重新輸入:"; </p><p><b> }</b></p><p><b> else </b></p><p><b> break;</b></p><p><b> }</b
89、></p><p> return choice; </p><p><b> }</b></p><p> //查找菜單選擇函數(shù)</p><p> void Find_Select()</p><p><b> {</b></p><p&
90、gt; while(1) /*循環(huán)調(diào)用模式,保證能進(jìn)行重復(fù)操作*/</p><p><b> {</b></p><p> switch(Find()) /*功能選擇*/</p><p><b> { </b></p><p> case 0:return;</p>
91、;<p> case 1:Find_Book();break;</p><p> case 2:Find_Reader();break;</p><p> case 3:Print_book();break;</p><p> case 4:Print_reader();break;</p><p> default:
92、cout<<"\n錯(cuò)誤!"; </p><p> cin.clear( );</p><p> cin.ignore(200,'\n');</p><p><b> exit(0);</b></p><p><b> }</b></p&g
93、t;<p><b> }</b></p><p><b> }</b></p><p> void Find_Reader() //查找某個(gè)讀者信息</p><p><b> {</b></p><p> READER *p;</p
94、><p><b> int i;</b></p><p> char find_reader[10];</p><p> p=h_reader;</p><p> cout<<"\n讀者信息查詢模塊\n"; </p><p> cout<<stri
95、ng(50,'=')<<endl;</p><p> cout<<"\n請(qǐng)輸入你要查詢讀者編號(hào):"; </p><p> cin>>find_reader;</p><p> while(strcmp(p->number,find_reader)!=0&&p->
96、next)</p><p> p=p->next;</p><p> if(strcmp(p->number,find_reader)==0)</p><p><b> {</b></p><p> cout<<"\n讀者編號(hào):"<<find_reader&
97、lt;<"的信息為:\n";</p><p> cout<<"編號(hào):"<<p->number<<endl; </p><p> cout<<"姓名:"<<p->name<<"\n"; </p><p
98、> /*此處這樣處理,是為了能實(shí)現(xiàn)一個(gè)讀者能借多本書,</p><p> 而Max的數(shù)值可以隨需要修正*/ </p><p> for(i=0;i<Max;i++)</p><p><b> {</b></p><p> cout<<"借的第"<<i+1
99、<<"本書的編號(hào)為:";</p><p> cout<<p->borrow[i].book_number<<endl;</p><p><b> }</b></p><p><b> }</b></p><p><b>
100、 else</b></p><p> cout<<"\n此讀者編號(hào)不存在,請(qǐng)核對(duì)!"; </p><p> getchar(); </p><p><b> }</b></p><p> void Find_Book() //查找圖書信息 </p&
101、gt;<p><b> {</b></p><p><b> BOOK *p;</b></p><p> char find_book[10]; /*讀者編號(hào)唯一,查找只須一次遍歷*/</p><p><b> p=h_book;</b></p><p>
102、; cout<<"\n圖書信息查詢模塊\n";</p><p> cout<<string(25,'^')<<endl;</p><p> cout<<"請(qǐng)輸入你要查詢圖書編號(hào):"; </p><p> cin>>find_book;</
103、p><p> while(strcmp(p->number,find_book)!=0&&p->next)</p><p> p=p->next;</p><p> if(strcmp(p->number,find_book)==0) /*找到了就打印,否則提示不存在,或出錯(cuò)*/</p><p&g
104、t;<b> {</b></p><p> cout<<"\n圖書編號(hào)"<<find_book<<"的信息為:"<<endl;</p><p> cout<<"圖書名:"<<p->title<<endl;</
105、p><p> cout<<"作者:"<<p->writer<<endl;</p><p> cout<<"出版社:"<<p->publish<<endl;</p><p> cout<<"出版日期:"<&
106、lt;p->year<<"年"<<p->month<<"月"<<p->day<<"日"<<endl;</p><p> cout<<"圖書價(jià)格 :"<<p->price<<"元"&l
107、t;<endl;</p><p> cout<<"現(xiàn)存量:"<<p->remain<<endl;</p><p> cout<<"庫(kù)存量:"<<p->storage<<endl;</p><p><b> }</b&
108、gt;</p><p><b> else</b></p><p> cout<<"\n此圖書編號(hào)不存在,請(qǐng)核對(duì)并檢查你的信息是否有誤!"; </p><p> getchar();</p><p><b> }</b></p><p>
109、; void Print_reader() //打印所有讀者信息</p><p><b> {</b></p><p> READER *p;</p><p><b> int i;</b></p><p> p=h_reader;</p><p> co
110、ut<<"\n讀者信息如下:\n"; </p><p> /*此處這樣處理,是為了能實(shí)現(xiàn)一個(gè)讀者能借多本書 Max 可以改*/</p><p> while(strcmp(p->number, "0") != 0) /*遍歷鏈表一次就可以了*/</p><p> /*strcmp函數(shù)的作用是功能:比
111、較字符串s1和s2。*/</p><p><b> {</b></p><p> cout<<"ReaderNo."<<p->number<<endl; </p><p> cout<<"讀者姓名為:"<<p->name&l
112、t;<endl;</p><p> for(i=0;i<Max;i++)</p><p><b> {</b></p><p> cout<<"借的第"<<i + 1<<"一本書的編號(hào)為"; </p><p> cout<
113、;<p->borrow[i].book_number<<endl;</p><p><b> }</b></p><p> cout<<endl<<endl; </p><p> p=p->next;</p><p><b> }</b>
114、</p><p> cout<<"\n讀者信息打印完畢!"<<endl; </p><p> getchar();</p><p><b> }</b></p><p> void Print_book() //打印圖書信息</p><p&g
115、t;<b> {</b></p><p><b> BOOK *p;</b></p><p><b> p=h_book;</b></p><p> cout<<"\n圖書信息如下:\n\n"; </p><p> cout<&l
116、t;"No."<<" "<<"BookName"<<" "<<"BookWriter"<<" "<<"Bookpublish"<<" "</p><p> <
117、<"Publication Dates"<<" "<<"Price"<<" "<<"Remain"<<" "<<"Storage\n"; </p><p> /*直接打印所有圖書的信息,遍歷鏈表一
118、次就可*/</p><p> while(strcmp(p->number, "0") != 0)</p><p><b> {</b></p><p> cout<<p->number<<" "<<p->title<<"\
119、t"<<p->writer<<"\t"<<p->publish<<"\t"</p><p> <<p->year<<"年"<<p->month<<"月"<<p->day<<&
120、quot;日\(chéng)t "<<p->price<<" "</p><p> <<p->remain<<" "<<p->storage<<endl;</p><p> p=p->next;</p><p>
121、<b> }</b></p><p> cout<<"\n圖書信息打印完畢!"<<endl; </p><p> getchar();</p><p><b> }</b></p><p> void Borrow_Book()
122、 //借書模塊</p><p><b> {</b></p><p> BOOK *p0; READER *p1;</p><p> char bo_num[10],rea_num[10];</p><p><b> int i;</b></p><p> p0=h
123、_book; p1=h_reader;</p><p> cout<<"\n\n\n借書界面\n"; </p><p> cout<<string(50,'=');</p><p> cout<<"\n請(qǐng)輸入借書的讀者編號(hào):"; /*先輸入借書的讀者信息*/<
124、/p><p> cin>>rea_num;</p><p> while(p1->next!=NULL&&strcmp(rea_num,p1->number)!=0) /*遍歷一次讀者鏈表,判斷讀者是否存在*/</p><p> p1=p1->next;</p><p> if(p1-&g
125、t;next==NULL&&strcmp(rea_num,p1->number)!=0) /*如果存在,則繼續(xù),不存在就、則提示錯(cuò)誤!*/</p><p><b> { </b></p><p> cout<<"\n此讀者編號(hào)不存在!\n"; </p><p> getcha
126、r();</p><p><b> return;</b></p><p><b> } </b></p><p> cout<<"\n請(qǐng)輸入你要借的書的編號(hào):"; </p><p> cin>>bo_num;</p><p&g
127、t; while(strcmp(bo_num,p0->number)!=0&&p0->next!=NULL) /*遍歷一次圖書鏈表,判斷此圖書是否存在*/</p><p> p0=p0->next;</p><p> if(p0->next==NULL&&strcmp(bo_num,p0->number)!=0)
128、 /*如果存在,則繼續(xù),不存在就、則提示錯(cuò)誤!*/</p><p><b> {</b></p><p> cout<<"\n此圖書編號(hào)不存在!\n"; </p><p><b> }</b></p><p> else if(p0->remain&
129、lt;=0) /*判斷此圖書現(xiàn)在是否還有庫(kù)存*/ </p><p><b> {</b></p><p> cout<<"\n抱歉,此書已借完!請(qǐng)等待新書的到來(lái)!!\n"; </p><p><b> } </b></p><p>
130、 else if(p1->borrow_amount>=Max) /*判斷此讀者借書量是否已經(jīng)達(dá)到最大允許借書量*/</p><p><b> {</b></p><p> cout<<"\n Sorry,您的借書量已滿!現(xiàn)在不能借書!\n"; </p><p><b> }<
131、/b></p><p> else if(p1->borrow_amount !=0) /*此讀者若已經(jīng)借書,再判斷此讀者是否要借兩本一樣的書*/</p><p><b> {</b></p><p> int b = 0;</p><p> for(i=0;i<p1->bor
132、row_amount;i++) /*遍歷一次讀者所借的書,如果發(fā)現(xiàn)有重復(fù),則結(jié)束*/</p><p><b> {</b></p><p> if(strcmp(p1->borrow[i].book_number,bo_num)==0)</p><p><b> b = 1;</b></p>
133、<p><b> }</b></p><p> if (b == 1)</p><p><b> {</b></p><p> cout<<"\n抱歉!該書您已借過(guò),同一個(gè)讀者不能借兩本相同的書!\n"; </p><p><b>
134、}</b></p><p><b> else</b></p><p><b> {</b></p><p> /*記錄所借書號(hào),并且使借書數(shù)目加一,現(xiàn)存量減一*/</p><p> strcpy(p1->borrow[p1->borrow_amount++].boo
135、k_number,bo_num); </p><p> p0->remain--;</p><p> cout<<"\n讀者編號(hào)"<<p1->number<<"借書完畢!";</p><p><b> }</b></p>
136、<p><b> }</b></p><p> else /*此讀者從未借過(guò)書*/ </p><p><b> {</b></p><p> /*記錄所借書號(hào),并且使借書數(shù)目加一,現(xiàn)存量減一*/</p><p> strcpy(p1->borrow[p1->
137、;borrow_amount++].book_number,bo_num); </p><p> //原型聲明:extern char *strcpy(char *dest,const char *src)</p><p> //功能:把從src地址開始且含有NULL結(jié)束符的字符串賦值到以dest開始的地址空間</p><p> p0->remai
138、n--;</p><p> cout<<"\n讀者編號(hào)"<<p1->number<<"借書完畢!"<<endl;</p><p> cin.clear( );</p><p> cin.ignore( 200,'\n');</p><
139、;p><b> }</b></p><p><b> }</b></p><p> void Return_Book() //還書模塊</p><p><b> {</b></p><p> BOOK *p; READER *q;</p>
140、<p> int i,j,find=0;</p><p> char return_book_num[10],return_reader_num[10];</p><p> p=h_book; q=h_reader;</p><p> cout<<"\n還書模塊\n"; </p><p>
141、cout<<"\n請(qǐng)輸入要還書的讀者編號(hào):"; /*基本同上*/</p><p> cin>>return_reader_num; </p><p> while(q->next!=NULL&&strcmp(return_reader_num,q->number)!=0) </p>
142、<p> q=q->next;</p><p> if(q->next==NULL&&strcmp(return_reader_num,q->number)!=0)</p><p><b> {</b></p><p><b> find=2;</b></p>
143、;<p> /*設(shè)置標(biāo)志,用于判斷讀者是否借了此書或是否出錯(cuò)提前結(jié)束,若提前出錯(cuò),則find=2,若借了,則find=1,若沒(méi)借為find=0*/</p><p> cout<<"\n此讀者編號(hào)不存在!\n"; </p><p><b> return;</b></p><p><b&g
144、t; }</b></p><p> cout<<"\n請(qǐng)輸入讀者還書的編號(hào):"; </p><p> cin>>return_book_num;</p><p> while(p->next!=NULL&&strcmp(return_book_num,p->number)!=
145、0)</p><p> p=p->next;</p><p> if(p->next==NULL&&strcmp(return_book_num,p->number)!=0)</p><p><b> {</b></p><p><b> find=2;</b&g
146、t;</p><p> /*設(shè)置標(biāo)志,用于判斷讀者是否借了此書或是否出錯(cuò)提前結(jié)束,若提前出錯(cuò),則find=2,若借了,則find=1,若沒(méi)借為find=0*/</p><p> cout<<"\n錯(cuò)誤!此圖書編號(hào)不存在!\n"; </p><p> cin.clear( );</p><p> cin.
147、ignore( 200,'\n');</p><p><b> return;</b></p><p><b> } </b></p><p> for(i=0;i<Max;i++)</p><p> if(strcmp(return_book_num,q->bo
148、rrow[i].book_number)==0) /*如果此讀者借了此書*/</p><p><b> {</b></p><p> find=1; </p><p> /*設(shè)置標(biāo)志,用于判斷讀者是否借了此書或是否出錯(cuò)提前結(jié)束,若提前出錯(cuò),則find=2,若借了,則find=1,若沒(méi)借為find=0*/</p>
149、<p> for(j=i;j<Max-1;j++)</p><p><b> {</b></p><p> strcpy(q->borrow[j].book_number,q->borrow[j+1].book_number); </p><p><b> }</b></p>
溫馨提示
- 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. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計(jì)報(bào)告---圖書信息管理系統(tǒng)
- c++課程設(shè)計(jì)報(bào)告---圖書信息管理系統(tǒng)設(shè)計(jì)
- c++課程設(shè)計(jì)——圖書信息管理系統(tǒng)
- 圖書信息管理系統(tǒng)——c語(yǔ)言課程設(shè)計(jì)報(bào)告
- c語(yǔ)言圖書信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)報(bào)告—圖書信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告—圖書信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告—圖書信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告-- 圖書信息管理系統(tǒng)設(shè)計(jì)
- 圖書信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)----圖書信息管理系統(tǒng)
- 圖書信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 圖書信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)-圖書信息管理系統(tǒng)
- 課程設(shè)計(jì)報(bào)告--圖書信息管理系統(tǒng)設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)—圖書信息管理
- 課程設(shè)計(jì)--圖書信息管理系統(tǒng)
- 圖書信息管理系統(tǒng)課程設(shè)計(jì)
- 圖書信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告--c語(yǔ)言程序設(shè)計(jì)
- 圖書信息管理系統(tǒng) 課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論