版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、程序設(shè)計報告( 2012 / 2013 學(xué)年 第 一 學(xué)期)題 目: 圖書管理系統(tǒng) 評 分 細(xì) 則評分項(xiàng)優(yōu)秀良好中等差遵守機(jī)房規(guī)章制度上機(jī)時的表現(xiàn)學(xué)習(xí)態(tài)度程序準(zhǔn)備情況程序設(shè)計能力團(tuán)隊合作精神課題功能實(shí)現(xiàn)情況算法設(shè)計合理性用戶界面設(shè)計報告書寫認(rèn)真程度內(nèi)容詳實(shí)程度文字表達(dá)熟練程度回答問題準(zhǔn)確度簡 短 評 語教師簽名: 年 月 日評分等級備注評分等級有五種:優(yōu)秀、良好、中等、及格、不及格圖書管理系統(tǒng)一、 課題內(nèi)容和要求 【問題描述】 該系統(tǒng)要求建立一個簡單的圖書管理系統(tǒng),并具有排序、查找、計算、插入、計算、顯示等功能。通過此課題,熟練掌握文件、數(shù)組、指針的各種操作,以及一些算法思想的應(yīng)用?!竟δ芤?/p>
2、】 (1)圖書數(shù)據(jù)結(jié)構(gòu):登錄號、書名、作者名、分類號、出版單位、出版時間、價格等。 (2)需要實(shí)現(xiàn)的功能1) 用戶根據(jù)口令進(jìn)入系統(tǒng)2) 圖書信息用文件保存,程序運(yùn)行時從文件讀入數(shù)據(jù),程序結(jié)束前將數(shù)據(jù)保存在文件中;3) 管理員能實(shí)現(xiàn)圖書信息錄入4) 讀者能實(shí)現(xiàn)圖書信息的瀏覽5) 排序功能:(至少一種排序方式,例如出版時間排序)6) 按書名查詢和按作者名查詢7) 圖書信息的刪除與修改8) 學(xué)生可自動增加新功能模塊(視情況可另外加分) (3)界面友好,輸入信息符合邏輯如登錄號不為負(fù)數(shù),日期輸入符合一定的格式等。【程序設(shè)計的具體說明】 數(shù)據(jù)結(jié)構(gòu)和函數(shù)自行定義,要求清晰明確。2、 需求分析 圖書管理系統(tǒng)
3、面向兩類人,一類是普通讀者,另一類是管理員;(1) 讀者:首先讀者要通過卡號和密碼的驗(yàn)證才能進(jìn)入系統(tǒng);1、 圖書的查找:讀者可以通過圖書的書號、書名、作者名或者出版社查找圖書信息,當(dāng)查找成功時輸出圖書的信息,包括書號,書名,作者名,出版社,出版時間以及此書是否在架,當(dāng)查找失敗時返回查找失敗信息。2、 圖書的借閱:當(dāng)讀者查找到想要借閱的圖書后,輸入圖書書號進(jìn)行借書,返回借閱成功的信息。輸入無效的書號或者借閱已經(jīng)借出去的圖書則不能借閱成功。 3、圖書的歸還:輸入要?dú)w還的書的書號進(jìn)行還書,返回歸還成功的信息。輸入 無效的書號或者歸還還未被借出的圖書則歸還不成功。 4、查詢自己的借書信息:可以查看自己
4、借了那些書,輸出這些書的編號。 (2)管理員: 管理員要先通過密碼驗(yàn)證才能進(jìn)入系統(tǒng);1、圖書的借閱:管理員可以通過輸入讀者的卡號和圖書的編號幫讀者借書,只有當(dāng)這兩個信息都正確時才能借閱成功,否則輸出借閱失敗的信息。 2、圖書的歸還:管理員可以通過輸入讀者的卡號和圖書的編號幫讀者還書,只有當(dāng)這兩個信息都正確時才能歸還成功,否則輸出歸還失敗的信息。 3、圖書的維護(hù):包括圖書的新增、刪除、查找、顯示、以及全刪; 、圖書的新增:首先給圖書編號,在給圖書編號之前先判斷是否有圖書為該編號,如果有則編號不成功重新輸入編號,如果沒有則編號成功,繼續(xù)添加圖書的其他信息,包括書名、作者、出版社、出版時間、價格等信
5、息。 、圖書的刪除:輸入圖書的編號,刪除該編號圖書的所有信息,并提示刪除成功信息,若輸入無效的編號則提示刪除不成功。 、圖書的查找:輸入要查找圖書的編號,輸出該編號圖書的所有信息, 若輸入無效的編號則提示查找失敗。 、圖書的顯示:按照出版時間的先后順序輸出圖書館所有書籍的信息。 、圖書的全刪:刪除圖書館所有書籍的所有信息。 4、讀者的維護(hù):包括讀者的新增、更改、刪除、查找、顯示、以及全刪;、讀者的新增:先給讀者編號,如果該編號已經(jīng)有人,則提示錯誤,否則繼續(xù)輸入讀者的其他信息,包括讀者的名字和初始密碼輸出添加成功提示。、讀者的更改:輸入讀者的編號,更改讀者的名字,若輸入的編號無效則更該失敗。、讀
6、者的刪除:輸入要刪除讀者的編號,判斷該編號是否有人,有則刪除該讀者的所有信息,沒有則提示刪除失敗。、讀者的查找:輸入要查找的讀者編號,編號正確則輸出讀者的信息,否則查找失敗。、讀者的顯示:顯示圖書館里所有讀者的信息。、讀者的刪除:刪除圖書館里所有讀者的信息。3、 概要設(shè)計 開始 選擇 操作 管理員登陸 讀者登錄 1 2 主菜單 讀者登錄模塊圖 圖書信息管理模塊流程圖 圖書信息查找流程圖輸出該借書證借閱的圖書書號輸出“該證不存在”開始輸入借書證號借書證號是否存在?結(jié)束 借閱信息查詢模塊流程圖歸還失敗開始輸入圖書書號輸入借書證號圖書書號是否存在借書證號是否存在歸還成功結(jié)束圖書歸還模塊流程圖借閱失敗
7、開始輸入借閱圖書書號判斷書號是否已存在是否有庫存輸入借書證號借閱失敗該證是否已借閱輸入歸還日期借閱成功借閱失敗結(jié)束圖書借閱模塊流程圖4、 源程序代碼 #include#include#include#include#includeusing namespace std;const int Maxbor=10; /每位讀者最多借10本書class Reader /讀者類int tag;int num;char mima6;char name10;int borbookMaxbor;public:Reader();int getnum();int gettag();char* getname();
8、char* getmima(); void setname(char na);void delreader();void addreader(int n,char *na,char* mi);void borrowbook(int bookid);int retbook(int bookid);void disp(); Reader:reader()char*Reader:getname() return name; int Reader:gettag() return tag; /獲取刪除標(biāo)記int Reader:getnum() return num; /獲取讀者編號char * Read
9、er:getmima() return mima;/獲取讀者的密碼void Reader:setname(char na) /設(shè)置姓名strcpy(name,na);void Reader:delreader() tag=1; /刪除讀者void Reader:addreader(int n,char *na,char* mi) /增加讀者tag=0;num=n;strcpy(name,na); strcpy(mima,mi);for (int i=0;iMaxbor;i+)borbooki=0;void Reader:borrowbook(int bookid) /借書操作for (int
10、i=0;iMaxbor;i+)if (borbooki=0)borbooki=bookid;return;int Reader:retbook(int bookid)/還書操作for (int i=0;iMaxbor;i+)if (borbooki=bookid)borbooki=0; return 1; return 0; void Reader:disp()/輸出讀者信息coutendl;cout setw(12) num 借書編號:;for (int i=0;iMaxbor;i+)if (borbooki!=0)cout borbooki ;cout endl;class Book /圖
11、書類int tag;int num;char name10;char writer10;char concem30;char Time10; float price;int onshelf;public:Book();char *getname();int getnum();int getonshelf();char *getwriter();char *gettime();char *getconcem();float getprice();int gettag(); void getTime(char time);void setname(char na) ;void delbook();
12、void addbook(int n,char *na, char *wri, char *con, char* tm,float pr); /增加圖書 int borrowbook(); /借書操作void retbook(); /還書操作void disp(); /輸出圖書;Book:Book() char* Book:getname() return name; /獲取姓名int Book:getonshelf()return onshelf;int Book:getnum() return num; /獲取圖書編號char*Book:getwriter() return writer;
13、 /獲取書籍作者char*Book:getconcem() return concem; /獲取書籍出版社char* Book:gettime() return Time;float Book:getprice() return price; /獲取書籍價格int Book:gettag() return tag; /獲取刪除標(biāo)記void Book:setname(char na) /設(shè)置書名strcpy(name,na);void Book:getTime(char time)strcpy(Time,time);void Book:delbook() tag=1; /刪除圖書void Boo
14、k:addbook(int n,char *na, char *wri, char *con, char* tm,float pr) /增加圖書tag=0;num=n;strcpy(name,na);strcpy(writer,wri);strcpy(concem,con);strcpy(Time,tm);price=pr;onshelf=1;int Book:borrowbook() /借書操作if (onshelf=1)onshelf=0;return 1;return 0;void Book:retbook() /還書操作onshelf=1;void Book:disp() /輸出圖書c
15、out setw(6) num setw(12) name setw(15)concemsetw(10)writersetw(12)Timesetw(6) (onshelf=1? 在架:已借) endl;class BDatabase /圖書庫類int top;Book bookMaxb; public:BDatabase();void clear();int addbook(int n,char *na, char *wri, char *con, char *tm,float pr);Book *query(int bookid);int BDatabase:qname(char* nm)
16、;Book* BDatabase:Qname(char* nm);int qzuozhe(char *wr);Book* Qzuozhe(char *wr);int qchuban(char *cb);Book* Qchuban(char *cb); void bookdata(); BDatabase();void disp();BDatabase:BDatabase() /構(gòu)造函數(shù),將book.txt讀到book中Book b;top=-1;fstream file(d:book.txt,ios:in);while (1)file.read(char *)&b,sizeof(b);if (
17、!file) break;top+;booktop=b;file.close();void BDatabase:clear() /全刪top=-1;int BDatabase:addbook(int n,char *na, char *wri, char *con,char *tm, float pr) /增加圖書Book *p=query(n);if (p=NULL)top+;booktop.addbook(n,na,wri,con,tm,pr);return 1;return 0;Book* BDatabase:query(int bookid) /查找圖書for (int i=0;i=t
18、op;i+)if (booki.getnum()=bookid & booki.gettag()=0)return &booki;return NULL;int BDatabase:qname(char* nm)int j=0;for(int i=0;i=top;i+)if(strcmp(booki.getname(),nm)=0)&booki.gettag()=0)j+;if(j=0)return 0;elsereturn j;Book* BDatabase:Qname(char* nm)int j=0;Book b100;for (int i=0;i=top;i+)if (strcmp(b
19、ooki.getname(),nm)=0) & booki.gettag()=0) bj+=booki;if(j=0)return NULL;elsereturn b;int BDatabase:qzuozhe(char *wr) int e=0;for (int i=0;i=top;i+)if (strcmp(booki.getwriter(),wr)=0) & booki.gettag()=0)e+;if(e=0)return 0;elsereturn e;Book* BDatabase:Qzuozhe(char *wr) int f=0;Book b100;for (int i=0;i=
20、top;i+)if (strcmp(booki.getwriter(),wr)=0) & booki.gettag()=0) bf+=booki;if(f=0)return NULL;elsereturn b;int BDatabase:qchuban(char *cb) int g=0;for (int i=0;i=top;i+)if (strcmp(booki.getconcem(),cb)=0) & booki.gettag()=0)g+;if(g=0)return 0;elsereturn g;Book* BDatabase:Qchuban(char *cb) int h=0;Book
21、 b100;for (int i=0;i=top;i+)if (strcmp(booki.getconcem(),cb)=0) & booki.gettag()=0)bh+=booki;if(h=0)return NULL;elsereturn b;void BDatabase:bookdata() /圖書庫維護(hù)int choice=1;char bname40;int bookid;char bwriter15;char bconcem15;char btime15;float bprice;Book *b;int r=0;while (choice!=0)coutendlendlendle
22、ndl;cout *endl; cout * 圖書維護(hù) *endl; cout * 1:新增 *endl; cout * 2:刪除 *endl; cout * 3:查找 *endl; cout * 4:顯示 *endl; cout * 5:全刪 *endl; cout * 0:退出 *endl; cout *endl; cout choice;switch (choice)case 1:cout bookid;doif(r!=0)coutbookid;r+;if(r=3)break;while(query(bookid)!=NULL);if(r=3)system(cls);break;cout
23、 bname;cout bwriter;cout bconcem;cout btime;cout bprice;cout圖書添加成功endl;Sleep(1000); system(cls);addbook(bookid,bname,bwriter,bconcem,btime,bprice);break;case 2:cout bookid;b=query(bookid);if (b=NULL)cout 該圖書不存在 endl;Sleep(1000); system(cls);break;cout該圖書已刪除delbook();break;case 3:cout bookid;b=query(
24、bookid);if (b=NULL)cout 該圖書不存在 endl;Sleep(1000); system(cls);break; system(cls);cout您所查找的圖書信息如下disp();break;case 4:system(cls);cout所有圖書信息如下endl;disp();break;case 5:clear();cout所有圖書已刪除endl;Sleep(1000); system(cls);break;system(cls);void BDatabase:disp()Book temp;for (int i=0;i=top&(booki.gettag()=0);
25、i+)for(int j=i+1;j=top&(bookj.gettag()=0);j+)if(strcmp(booki.gettime(),bookj.gettime()0)temp=booki; booki=bookj; bookj=temp;for(int x=0;x=top&(bookx.gettag()=0);x+)bookx.disp();BDatabase:BDatabase() /析構(gòu)函數(shù),將book寫入book.txt文件中fstream file(d:book.txt,ios:out);for (int i=0;i=top;i+)if (booki.gettag()=0)f
26、ile.write(char *)&booki,sizeof(booki);file.close();class Rdatebase /讀者庫類int top;Reader readMaxr; /讀者記錄public:Rdatebase();void disp();void clear();void addreader(int n,char *na,char* mi) ;Reader *query(int readerid);Rdatebase(); void readerdata();Rdatebase:Rdatebase()/構(gòu)造函數(shù),將reader.txt讀到read中Reader s;
27、top=-1;fstream file(d:reader.txt,ios:in);while (1)file.read(char *)&s,sizeof(s);if (!file) break;top+;readtop=s;file.close();void Rdatebase:disp()for (int i=0;i=top;i+)if (readi.gettag()=0)readi.disp();void Rdatebase:clear()top=-1;void Rdatebase:addreader(int n,char *na,char* mi) top+;readtop.addrea
28、der(n,na,mi);Reader* Rdatebase:query(int readerid)for (int i=0;i=top;i+)if (readi.getnum()=readerid &readi.gettag()=0)return &readi;return NULL;Rdatebase:Rdatebase() /析構(gòu)函數(shù),將read寫入reader.txt文件中fstream file(d:reader.txt,ios:out);for (int i=0;i=top;i+)if (readi.gettag()=0)file.write(char *)&readi,sizeo
29、f(readi);file.close();void Rdatebase:readerdata()/讀者庫維護(hù)int choice=1;char rname20;int readerid;char rmima6;Reader *r;while (choice!=0)coutendlendlendlendl;cout *endl; cout * 讀者維護(hù) *endl; cout * 1:新增 *endl; cout * 2:更改 *endl; cout * 3:刪除 *endl; cout * 4:查找 *endl; cout * 5:顯示 *endl; cout * 6:全刪 *endl; c
30、out * 0:退出 *endl; cout *endl;cout choice;int a=0;int i=0;switch (choice)case 0:system(cls);break;case 1:cout readerid;doif(a!=0)cout readerid;a+;while(query(readerid)!=NULL);cout 輸入讀者密碼:;for(i;i6;i+)rmimai=getch(); putch(*);cout endl rname;cout讀者添加成功endl;addreader(readerid,rname,rmima);Sleep(1000);s
31、ystem(cls);break;case 2:cout readerid;r=query(readerid);if (r=NULL)cout 該讀者不存在 endl;Sleep(1000); system(cls);break;cout rname;cout讀者更改成功setname(rname);break;case 3:cout readerid;r=query(readerid);if (r=NULL)cout 該讀者不存在 endl;Sleep(1000); system(cls);break;cout讀者刪除成功delreader();break;case 4:cout readerid;r=query(readerid);if (r=NULL)cout 該讀者不存在 endl;Sleep(1000); system(cls);break;system(cls);cout您所查找的讀者信息如下disp();break;case 5:system(cls);cout所有讀者信息如下endl;disp();break;case 6:clear();cout所有讀者已刪除endl;Sleep(1000);system(cls);break;5、 測試數(shù)據(jù)及其結(jié)果分析 主菜單 (1)讀者登陸后: 1、借書成功
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年安徽醫(yī)學(xué)高等??茖W(xué)校單招綜合素質(zhì)考試參考題庫帶答案解析
- 2026年廣東南華工商職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試備考題庫有答案解析
- 2026年福建生物工程職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試模擬試題有答案解析
- 2026年鶴崗師范高等專科學(xué)校高職單招職業(yè)適應(yīng)性考試備考題庫有答案解析
- 2026年北京戲曲藝術(shù)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試參考題庫有答案解析
- 投資咨詢服務(wù)合同協(xié)議2025年穩(wěn)健收益保障
- 投資合作意向協(xié)議2025年條款
- 2026年畢節(jié)醫(yī)學(xué)高等專科學(xué)校高職單招職業(yè)適應(yīng)性測試參考題庫有答案解析
- 2026年川北幼兒師范高等專科學(xué)校單招綜合素質(zhì)考試模擬試題帶答案解析
- 2026年大連航運(yùn)職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試備考試題帶答案解析
- 2026年遼寧地質(zhì)工程職業(yè)學(xué)院單招綜合素質(zhì)考試題庫附答案
- 小紅書2025年9-10月保險行業(yè)雙月報
- 2025至2030中國電腦繡花機(jī)行業(yè)深度研究及發(fā)展前景投資評估分析
- 可靠性驗(yàn)證與評估流程
- 高二電磁學(xué)考試題及答案
- 養(yǎng)老托管合同協(xié)議
- 安徽省蕪湖市2024-2025學(xué)年度第一學(xué)期期末考試八年級數(shù)學(xué)試卷
- 2025成都易付安科技有限公司第一批次招聘15人參考考試試題及答案解析
- 云南民族大學(xué)附屬高級中學(xué)2026屆高三聯(lián)考卷(四)英語+答案
- 2025年翔安區(qū)社區(qū)專職工作者招聘備考題庫及一套參考答案詳解
- 2025年及未來5年市場數(shù)據(jù)中國別墅電梯市場發(fā)展前景預(yù)測及投資戰(zhàn)略咨詢報告
評論
0/150
提交評論