版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.需求分析圖書管理在生活中運(yùn)用非常廣泛,因此需要用許多的程序來(lái)對(duì)它們進(jìn)行管理。此程序包含了圖書信息的錄入、圖書信息的瀏覽、圖書的查詢和排序、圖書信息的刪除與修改,借書,還書,統(tǒng)計(jì)等。通過(guò)編譯一個(gè)C語(yǔ)言函數(shù),其中包含一個(gè)主函數(shù),多個(gè)子函數(shù),主函數(shù)調(diào)用其余的子函數(shù)實(shí)現(xiàn)人們能夠簡(jiǎn)易、快捷的了解并找到自己所學(xué)要的信息的功能。統(tǒng)主要功能1、查詢所有圖書信息:將所有圖書信息包括編號(hào)、書名、出版社、作者、價(jià)格等顯示在屏幕上。2、查找一本圖書的信息:通過(guò)輸入圖書編號(hào)完成圖書信息的查找,并在屏幕上顯示。3、修改圖書信息:通過(guò)輸入編號(hào),判斷此圖書是否存在,若不存在則提示用戶重新輸入圖書編號(hào)。4、刪除圖書信息:通過(guò)
2、輸入編號(hào),判斷此圖書是否存在,若存在,則提示用戶是否顯示刪除后的信息,若不存在則提示用戶重新輸入圖書編號(hào)。5、借書:通過(guò)輸入圖書編號(hào),判斷此圖書是否存在,若不存在則提示用戶重新 輸入圖書編號(hào),若圖書已借出則提示用戶是否繼續(xù)借書,若沒(méi)借出則將此圖書的編 號(hào)和學(xué)生的學(xué)號(hào)存入圖書借閱文件中。6、退出系統(tǒng):返回主頁(yè)面。. 流 程圖. 數(shù) 據(jù)結(jié)構(gòu)設(shè)計(jì)4.1 main() 函數(shù)模塊開始結(jié)構(gòu)體中main打開文件選擇編譯運(yùn)行根據(jù)圖書館信息管理系統(tǒng)的要求,可設(shè)計(jì)一個(gè)主函數(shù),及定義多個(gè)用戶自定義函數(shù)。在主函數(shù)中定義全局變量,即是在函數(shù)外部定義的變量,其不屬于某一個(gè)函數(shù),而屬于一個(gè)源程序文件,在整個(gè)程序內(nèi)可以多次被
3、引用。通過(guò)將 switch語(yǔ)句與break語(yǔ)句聯(lián)合使用來(lái)實(shí)現(xiàn)多分支選擇結(jié)構(gòu)程序的設(shè)計(jì)。運(yùn)用fscanf語(yǔ)句在主函數(shù)中將文件中的內(nèi)容賦給結(jié)構(gòu)體變量,便于在自定義函數(shù)中對(duì)結(jié)構(gòu)體的調(diào)用。具體如下:在主函數(shù)中定義一個(gè)存放圖書信息的結(jié)構(gòu)體struct listchar num20 ;/*圖書編號(hào)*/char name40 ;/*書名*/char author40 ;/*作者*/char publish 40;/*出版社 */double price;/* 價(jià)格 */;以及各函數(shù)的申明void search_allinformation(struct list b) ; /*查看全部書信息*/void c
4、heck_bookinformation (struct list b);/*查找圖書信息*/void add_bookinformation (struct list b );/*添加圖書信息*/void delete_bookinformation (struct list b);/*刪除圖書信息*/void borrow_book (struct list b ) ;/*借閱圖書*/通過(guò)將 switch 語(yǔ)句與 break語(yǔ)句聯(lián)合使用來(lái)實(shí)現(xiàn)多分支選擇結(jié)構(gòu)程序的設(shè)計(jì)。switch (choice1) case 1 : search_allinformation (b);break ;cas
5、e 2 : check_bookinformation( b );break ;case 3 : add_bookinformation (b );break ;case 4 : delete_bookinformation( b);break ;case 5 : borrow_book( b);break ;case 0 : break ;4.2 查詢所有圖書信息函數(shù)模塊void search_allinformation (struct list b)通過(guò) printf() 語(yǔ)句將所有的圖書信息包括包括編號(hào)、書名、 出版社、 作者、價(jià)格等信息顯示在屏幕上。運(yùn)用 for 語(yǔ)句加 printf
6、() 實(shí)現(xiàn)圖書信息的循環(huán)輸出顯示。4.3 查詢一本圖書信息函數(shù)模塊void check_bookinformation(struct list b )用戶先輸入圖書編號(hào)后,先用strcmp(s1, s2) 函數(shù)進(jìn)行比較兩個(gè)字符串?dāng)?shù)組的大小,從而查找出該圖書是否存在,若不存在則提示用戶是否要繼續(xù)查找,運(yùn)用switch 語(yǔ)句 ,若繼續(xù)則再次調(diào)用函數(shù)本身進(jìn)行第二次查找,直到找到為止,若否則結(jié)束循環(huán),不再進(jìn)行查找。通過(guò)將 switch 語(yǔ)句與 break語(yǔ)句聯(lián)合使用來(lái)實(shí)現(xiàn)多分支選擇結(jié)構(gòu)程序的設(shè)計(jì)。運(yùn)用fscanf 語(yǔ)句在主函數(shù)中將文件中的內(nèi)容賦給結(jié)構(gòu)體。其主要流程圖如下:開始關(guān)鍵代碼:strcmp(比
7、較字符串)case .break判斷 ()printf( 輸出信息)switch(實(shí)現(xiàn)選擇功能分支)4.4 添加圖書信息函數(shù)模塊void add_bookinformation(struct list b )輸入圖書的基本信息包括編號(hào)、書名、出版社、作者、價(jià)格,由于原有的圖書信息是按照編號(hào)的大小順序排列的,所以只需運(yùn)用for 循環(huán) 和 strcmp函數(shù)找出輸入的圖書應(yīng)該插入的位置,再將所添加的圖書信息插入即可。其主要流程圖如下:關(guān)鍵代碼:printf( 輸出信息 )scanf ( 輸入信息)switch (實(shí)現(xiàn)多分支結(jié)構(gòu)程序設(shè)計(jì))case-break (實(shí)現(xiàn)功能的選擇)4.5 刪除圖書信息函數(shù)
8、模塊void delete_bookinformation (struct list b )用戶輸入所要?jiǎng)h除的圖書編號(hào),先查找該圖書編號(hào)是否存在,若存在,這提示用戶是否要顯示刪除后的信息,若不存在則提示重新輸入。關(guān)鍵代碼 : strcmp (比較兩個(gè)字符串的大?。﹕witch (實(shí)現(xiàn)多分支結(jié)構(gòu)程序設(shè)計(jì))if (條件選擇)4.6 借閱圖書模塊void borrow_book(struct list b )用戶先輸入所借圖書的編號(hào),調(diào)用函數(shù)查找該圖書有沒(méi)有借出,若已借出, 則提示用戶該圖書已借出,并提示用戶是否繼續(xù)借閱其他書籍。若繼續(xù), 則繼續(xù)進(jìn)行新的查找。開始goto (使程序的執(zhí)行流程直接轉(zhuǎn)接
9、到標(biāo)號(hào)對(duì)應(yīng)的那條語(yǔ)句) strcmp (比較兩個(gè)字符串的大?。┪逯饕a#include <iostream>#include <iomanip>#include <fstream>#include <string.h> #define Maxbor100#define Maxr100#define Maxb 100using namespace std;class Readerprivate:int tag; /刪除標(biāo)記1:已刪0:未刪int no; / 讀者編號(hào)char name10; /讀者姓名int borbookMaxbor;/ 所借圖
10、書public:Reader() char *getname() return name; / 獲取姓名int gettag() return tag; / 獲取刪除標(biāo)記int getno() return no; / 獲取讀者編號(hào)void setname(char na) /設(shè)置姓名strcpy(name,na);void delbook() tag=1; /設(shè)置刪除標(biāo)記1:已刪0:未刪void addreader(int n,char *na)/ 增加讀者tag=0;no=n;strcpy(name,na);for(int i=0;i<Maxbor;i+)borbooki=0;voi
11、d borrowbook(int bookid)/ 借書操作for(int i=0;i<Maxbor;i+)if (borbooki=0)borbooki=bookid;return;int retbook(int bookid)/ 還書操作for(int i=0;i<Maxbor;i+)if(borbooki=bookid)borbooki=0;return 1;return 0;void disp()/讀出讀者信息cout<<setw(5)<<no<<setw(10)<<name<<借書編號(hào):""f
12、or(int i=0;i<Maxbor;i+)if(borbooki!=0)cout<< borbooki << "|"cout<< ""<<endl;/ 讀者類庫(kù),實(shí)現(xiàn)建立讀者的個(gè)人資料class RDatabaseprivate:int top; / 讀者記錄指針Reader readMaxr;/讀者記錄public:RDatabase() /構(gòu)造函數(shù),將reader.txt讀到 read中Reader s;top=-1;fstream file("E:reader.txt",
13、ios:in);/ 打開一個(gè)輸入文件while (1)file.read(char *)&s,sizeof(s);if (!file)cout<<" 打開失敗"<<endl;break;top+;readtop=s;file.close(); /關(guān)閉 reader.txtvoid clear()/刪除所有讀者信息top=-1;int addreader(int n,char *na)/ 添加讀者時(shí)先查找是否存在Reader *p=query(n);if (p=NULL)top+;readtop.addreader(n,na);return 1
14、;return 0;Reader *query(int readerid)/ 按編號(hào)查找for (int i=0;i<=top;i+)if (readi.getno()=readerid &&readi.gettag()=0)return &readi;return NULL;void disp() /輸出所有讀者信息for (int i=0;i<=top;i+)readi.disp();void readerdata();/讀者庫(kù)維護(hù)RDatabase() /析構(gòu)函數(shù),將read寫到 reader.txt文件中fstream file("E:re
15、ader.txt",ios:out);for (int i=0;i<=top;i+)if (readi.gettag()=0)file.write(char *)&readi,sizeof(readi);file.close();void RDatabase:readerdata()char choice;char rname20;int readerid;Reader *r;while (choice!='0')cout <<"nnttt 讀 者 維 護(hù) nnntt 1 新 增 nntt 2 更改 nntt 3 刪 除 nntt
16、4 查 找 nntt 5 顯 示 nntt 6 全 刪 nntt 0 退出 "<<endl;cin >> choice;switch (choice)case '1':cout << "輸入讀者編號(hào):"cin >> readerid;cout << "輸入讀者姓名:"cin >> rname;addreader (readerid,rname);break;case '2':cout << "輸入讀者編號(hào):"c
17、in >> readerid;r=query(readerid);if (r=NULL)cout << " 該讀者不存在"<<endl;break;cout << "輸入新的姓名:"cin >> rname;r->setname(rname);break;case '3':cout << " 輸入讀者編號(hào):"cin >> readerid;r=query(readerid);if (r=NULL)cout <<&quo
18、t; 該讀者不存在" << endl;break;r->delbook();break;case '4':cout << "讀入讀者編號(hào):"cin >> readerid;r=query(readerid);if (r=NULL)cout <<"該讀者不存在"<< endl;break;r->disp();break;case '5':disp();break;case '6':clear();break;default:co
19、ut<<"輸入錯(cuò)誤,請(qǐng)從新輸入:"break;/ 圖書類,實(shí)現(xiàn)對(duì)圖書的描述,圖書的編號(hào),書名,借出,還入等class Bookprivate:int tag;/刪除標(biāo)記1:已刪0:未刪int no;/ 圖書編號(hào)char name20;/ 書名int onshelf;/ 是否再架1:再架2:已借public:Book()char *getname() return name; / 獲取姓名int getno() return no; / 獲取圖書編號(hào)int gettag() return tag; / 獲取刪除標(biāo)記void setname(char na)/設(shè)置書
20、名strcpy(name,na);void delbook() tag=1;/刪除圖書void addbook(int n,char *na)/ 增加圖書tag=0;no=n;strcpy(name,na);onshelf=1;int borrowbook()/ 借書操作if (onshelf=1)onshelf=0;return 1;return 0;void retbook()/ 還書操作onshelf=1;void disp()/輸出圖書cout << setw(6) << no << setw(18) << name << s
21、etw(10)<<(onshelf=1? "在架":" 已借 ") <<endl;/ 圖書庫(kù)類,實(shí)現(xiàn)對(duì)圖書的維護(hù),查找,刪除等class BDatabaseprivate:int top; / 圖書記錄指針Book bookMaxb; / 圖書記錄public:BDatabase()/構(gòu)造函數(shù),將book.txt讀到book中Book b;top=-1;fstream file("E:book.txt",ios:in);while (1)file.read(char *)&b,sizeof(b);if
22、(!file) break;top+;booktop=b;file.close();void clear()/全刪top=-1;int addbook(int n,char *na)/ 增加圖書Book *p=query(n);if (NULL=p)top+;booktop.addbook(n,na);return 1;return 0;Book *query(int bookid)/ 查找圖書for (int i=0;i<=top;i+)if (booki.getno()=bookid&&booki.gettag()=0)return &booki;return
23、 NULL;六系統(tǒng)運(yùn)行結(jié)果樣例6.1 主菜單運(yùn)行界面4.1 主菜單運(yùn)行界面圖6.2 查詢所有圖書信息模塊運(yùn)行界面按 1操作查詢所有圖書信息,(1) 打開源程序,編譯程序,單擊Compile按鈕,出現(xiàn)錯(cuò)誤,如圖:(2) 錯(cuò)誤均指向55行,經(jīng)檢查發(fā)現(xiàn)調(diào)用函數(shù)時(shí)調(diào)用的是整個(gè)結(jié)構(gòu)體,而非某一search_allinformation (b) .(3) 改正后重新運(yùn)行,即的如下所示的界面如下:4.2查詢所有圖書信息模塊界面6.3查找某一本圖書信息模塊運(yùn)行界面按 2選擇按書名查詢某一本圖書信息,若圖書編號(hào)存在則界面如下:4.3 按編號(hào)查詢圖書信息界面若圖書編號(hào)不存在,(1)輸入y ,沒(méi)有進(jìn)行繼續(xù)查找的操作(2)調(diào)試程序,可查出輸入的y對(duì)程序無(wú)影響,由于輸入的是一個(gè)字符,而” 0”本身也是一個(gè)字符,則可將scanf( “ %s” , &改為 a) getchar ()即可。該后則界面如下:4.4圖書編號(hào)查詢圖書界面6.4 添加圖書信息模塊運(yùn)行界面按 3選擇,輸入編號(hào),界面如下:4.5按圖書編號(hào)添加圖書界面6.5 刪除圖書信息模塊運(yùn)行界面按 4選擇,輸入編號(hào),如果編號(hào)不存在,界面如下:4.6按圖書編號(hào)刪除圖書界面4.7按圖書編號(hào)刪除圖書界面6.6 借閱圖書模塊信息運(yùn)行界面5選擇,輸入編號(hào),名改為4.8借閱圖書界面(有錯(cuò)誤)后找 出
溫馨提示
- 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ù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年床上用品品牌代理合同
- 2024醫(yī)院藥品零售許可合同
- 2024年建筑合同糾紛預(yù)防及處理辦法
- 2024年度IT企業(yè)軟件許可使用合同
- 2024年度搬廠工程機(jī)械設(shè)備租賃合同
- 2024年度委托加工合同:甲乙雙方在二零二四年就某產(chǎn)品委托加工的詳細(xì)條款
- 2024年度量子科技實(shí)驗(yàn)室建設(shè)安裝工程分包合同
- 2024年度智能停車安防監(jiān)控系統(tǒng)安裝合同
- 2024展廳裝飾裝修合同范文
- 2024年商標(biāo)許可使用合同商標(biāo)范圍
- 認(rèn)識(shí)計(jì)算機(jī)系統(tǒng)的組成
- 人教版版中國(guó)歷史八年級(jí)上冊(cè)知識(shí)點(diǎn)歸納梳理
- 國(guó)家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 3-02-03-01 消防員(2022年版)
- GB/T 36242-2018燃?xì)饬髁坑?jì)體積修正儀
- GB/T 2818-2014井用潛水異步電動(dòng)機(jī)
- 5 汪曾祺《跑警報(bào)》.電子教案教學(xué)課件
- 敘事療法課件
- 國(guó)家開放大學(xué)電大《計(jì)算機(jī)應(yīng)用基礎(chǔ)(本)》終結(jié)性考試試題答案(格式已排好)任務(wù)一
- 阿米巴經(jīng)營(yíng)管理課件
- 小學(xué)質(zhì)量檢測(cè)匯報(bào)材料范文推薦11篇
- 質(zhì)量管理體系內(nèi)部審核培訓(xùn)知識(shí)課件
評(píng)論
0/150
提交評(píng)論