




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C+課程設計課程設計報告設計題目 圖書管理系統 專 業 計算機科學與技術 班 級 090601 姓 名 祝龍波 學 號 090601120 2010 年8月 25日面向對象技術與C+課程設計任務書課 程面向對象技術與C+ 班級2009級 7-8班指導教師耿軍雪題 目圖書管理系統完成時間2010年06月21日至2010年06月25日主要內容1問題描述建立一個圖書館管理系統,可以處理以下對象: 圖書館基本信息。 圖書館的書籍。 圖書館管理員 。 讀者信息。2程序要求,程序要完成下列功能 查詢圖書館的總信息。 查詢圖書館管理員的信息。 查詢圖書館藏書信息。 存入新書(有管理員加入,需進行身份驗證)。
2、 舊書處理。 存入新的管理員的信息。 修改管理員信息(增加工齡,加薪)。 兩所圖書館的最大藏書量之和。 根據書名檢索書刊信息。 查詢讀者的借閱信息。 查詢讀者信息(包括借書情況、到期時間、罰款情況。)。 管理員可以修改用戶的欠款和交款的金額。 讀者分為學生、研究生和教師。學生的租期為1個月,教師的租期為2個月。3程序設計說明 使用鏈表實現。 使用文件保存書籍信息。設計報告要求1封面:(格式附后)2課程設計任務書3課程設計報告: 系統總體方案 設計思路和主要步驟 各功能模塊和流程圖 設計代碼 心得體會和參考資料說明:學生完成課程設計后,提交課程設計報告及軟件,要求文字通暢、字跡工整(也可用以打印
3、),文字不少于5000 字,并裝訂成冊。目 錄1.設計目標2.設計思想3.類及對象設計4.程序源代碼5.心得體會6.參考資料圖書管理系統1設計目標設計一個小型的圖書管理系統,用鏈表來存儲讀者的基本信息(包括姓名、讀者編號、讀者借書情況等),完成借書、還書、圖書維護、讀者維護、離開等功能。2設計思想(1) 設計class Reader讀者信息庫,實現對讀者信息的描敘; class RDatabase讀者類庫實現建立讀者的個人資料;class magdatabase 管理員庫類;class manager 管理員類;class Book圖書類,實現對圖書的描述,圖書的編號,書名,借出,還入等;cl
4、ass BDatabase圖書庫類,實現對圖書的維護,查找,刪除等。以下是函數功能表: 函數功能char *getname()獲取姓名int gettag()獲取刪除標記int getno()獲取讀者編號void setname(char na)設置姓名以及編號void addreader(int n,char *na)增加讀者void delbook()設置刪除標記void borrowbook(int bookid)借書操作int retbook(int bookid)還書操作void disp()讀出讀者信息BDatabase()構造函數,將book.txt讀到book中int addb
5、ook(int n,char *na)增加圖書Book *query(int bookid)查找圖書void delbook刪除圖書void bookdata()圖書庫維護BDatabase()析構函數,將book寫到book.txt文件(2)用類的成員函數對鏈表的數據進行操作,其功能如上表所列。(3)設計菜單來實現功能設計3設計類及對象(1) 本程序定義了六個類,定義如下:#include<iostream.h>#include "bdatabase.h"#include<iomanip.h>#include<string.h>#inc
6、lude<fstream.h>const int maxr=100;/最多的讀者const int maxb=100;/最多的圖書const int maxbor=5;/每位讀者最多借5本書class reader /讀者類int tag; /刪除標記 1:已刪 0:未刪int no; /讀者編號char name20; /讀者姓名char position20; /職務int borbookmaxbor; /所借圖書int zq; /租期public:int t; /交款和欠款標記 1:由管理員設置 2:全設為0char bday10; /所借日期char rday10; /所還
7、日期int jmoney; /欠款int qmoney; /交款reader( ) char *getname( )return name; /獲取姓名int gettag( )return tag; /獲取刪除標記int getno( )return no; /獲取讀者編號void setname(char na ) /設置姓名strcpy(name,na);void setjmoney(int jm) jmoney=jm;void setqmoney(int qm)qmoney=qm;void sett(int tt) /設置交款和欠款標記t=tt; void setz(int z)zq=
8、z; char * getbday( )return bday;char * getrday( )return rday;void delbook()tag=1;/設置刪除標記void addreader(int n,char *na,char *po,int z);/增加讀者int retbook(int bookid); /還書操作void borrowbook(int bookid); /借書操作void disp( ); /輸出讀者信息;class rdatabase /讀者庫類 int top; /讀者記錄指針reader readmaxr;public:rdatabase();/構
9、造函數,將reader.txt讀到read 中void clear( ) /刪除所有讀者信息top=-1;int addreader(int n,char *na,char *po,int z); /添加讀者時先查找是否存在reader *query(int readerid)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.di
10、sp( );void readerdata( );/讀者維護rdatabase( );/構造函數,將read 寫入reader.txt文件中;class book /圖書類int tag; /刪除標記 1:已刪 0:未刪int no; /編號char name20; /書名int onshelf; /是否在架 1:在架 0:已借public:book( ) char *getname( )return name; /獲取書名int getno( )return no; /獲取圖書編號int gettag( )return tag; /獲取刪除標記void setname(char na ) /
11、設置書名strcpy(name,na);void delbook( )tag=1; /刪除圖書void addbook(int n,char *na); /增加圖書int borrowbook( ); /借書void retbook( ); /還書void disp( ); /輸出圖書;class bdatabase /圖書庫類int top; /圖書記錄指針book book1maxb; /圖書記錄public:bdatabase( ); /將book.txt讀到book中void clear( )top=-1; /全刪int addbook(int n,char *na); /增加圖書 b
12、ook * query(int bookid); /查找圖書void bookdata( ); /圖書庫維護void disp( );bdatabase( );class manager /管理員類 int tag; /刪除標記 1:已刪 0:未刪int no; /管理員工號char name20; /管理員姓名int fee; /工資int age; /工齡int ma; /密碼public:manager( ) char *getname ()return name;/獲取姓名int gettag( )return tag;/獲取刪除標記int getno( )return no;/獲取管
13、理員工號 int getage()return age;/獲取管理員工齡 int getma( )return ma;void setname(char na )/設置姓名 strcpy(name,na); void setfe(int fe)fee=fe; void setage(int ag)age=ag; void delbook()tag=1;/設置刪除標記void addmag(int n,char *na,int fe,int a,int m);/增加管理員void disp();/輸出管理員信息;class magdatabase /管理員庫類int top; /管理員記錄指針m
14、anager managemaxm;public:magdatabase( ); /構造函數,將manager.txt讀到manager 中void clear( ) /刪除所有管理員信息top=-1;int addmag(int n,char *na,int fe,int a,int m); /添加管理員時先查找是否存在manager *query(int managerid)for(int i=0;i<=top;i+)if(managei.getno( )=managerid&&managei.gettag( )=0) return &managei; ret
15、urn NULL;/按編號查找void disp ( )for(int i=0;i<=top;i+)managei.disp( );void managerdata( ); /管理員維護magdatabase( ); /構造函數,將manager寫入manager.txt文件中;(2)主函數實現,調用各種函數。4程序源代碼#include<iostream.h>#include<iomanip.h>#include<string.h>#include<fstream.h>#include"book.h"#include&
16、quot;reader.h"class bdatabase /圖書庫類int top; /圖書記錄指針book book1maxb; /圖書記錄public:bdatabase( ); /將book.txt讀到book中void clear( )top=-1; /全刪int addbook(int n,char *na); /增加圖書 book * query(int bookid); /查找圖書void bookdata( ); /圖書庫維護void disp( );bdatabase( );#include<iostream.h>#include<iomanip
17、.h>#include<string.h>#include<fstream.h>#include"reader.h"class book /圖書類int tag; /刪除標記 1:已刪 0:未刪int no; /編號char name20; /書名int onshelf; /是否在架 1:在架 0:已借public:book( ) char *getname( )return name; /獲取書名int getno( )return no; /獲取圖書編號int gettag( )return tag; /獲取刪除標記void setname
18、(char na ) /設置書名strcpy(name,na);void delbook( )tag=1; /刪除圖書void addbook(int n,char *na); /增加圖書int borrowbook( ); /借書void retbook( ); /還書void disp( ); /輸出圖書;#include<iostream.h>#include<iomanip.h>#include<string.h>#include<fstream.h>#include"manager.h"class magdataba
19、se /管理員庫類int top; /管理員記錄指針manager managemaxm;public:magdatabase( ); /構造函數,將manager.txt讀到manager 中void clear( ) /刪除所有管理員信息top=-1;int addmag(int n,char *na,int fe,int a,int m); /添加管理員時先查找是否存在manager *query(int managerid)for(int i=0;i<=top;i+)if(managei.getno( )=managerid&&managei.gettag( )=
20、0) return &managei; return NULL;/按編號查找void disp ( )for(int i=0;i<=top;i+)managei.disp( );void managerdata( ); /管理員維護magdatabase( ); /構造函數,將manager寫入manager.txt文件中;#include<iostream.h>#include<iomanip.h>#include<string.h>#include<fstream.h>const int maxm=5;class manager
21、 /管理員類 int tag; /刪除標記 1:已刪 0:未刪int no; /管理員工號char name20; /管理員姓名int fee; /工資int age; /工齡int ma; /密碼public:manager( ) char *getname ()return name;/獲取姓名int gettag( )return tag;/獲取刪除標記int getno( )return no;/獲取管理員工號 int getage()return age;/獲取管理員工齡 int getma( )return ma;void setname(char na )/設置姓名 strcpy
22、(name,na); void setfe(int fe)fee=fe; void setage(int ag)age=ag; void delbook()tag=1;/設置刪除標記void addmag(int n,char *na,int fe,int a,int m);/增加管理員void disp();/輸出管理員信息;#include<iostream.h>#include<iomanip.h>#include<string.h>#include<fstream.h>#include"reader.h"class r
23、database /讀者庫類 int top; /讀者記錄指針reader readmaxr;public:rdatabase();/構造函數,將reader.txt讀到read 中void clear( ) /刪除所有讀者信息top=-1;int addreader(int n,char *na,char *po,int z); /添加讀者時先查找是否存在reader *query(int readerid)for(int i=0;i<=top;i+) if(readi.getno( )=readerid&&readi.gettag()=0) return &r
24、eadi; return NULL;/按編號查找void disp()for(int i=0;i<=top;i+)readi.disp( );void readerdata( );/讀者維護rdatabase( );/構造函數,將read 寫入reader.txt文件中;#include<iostream.h>#include "bdatabase.h"#include<iomanip.h>#include<string.h>#include<fstream.h>const int maxr=100;/最多的讀者cons
25、t int maxb=100;/最多的圖書const int maxbor=5;/每位讀者最多借5本書class reader /讀者類int tag; /刪除標記 1:已刪 0:未刪int no; /讀者編號char name20; /讀者姓名char position20; /職務int borbookmaxbor; /所借圖書int zq; /租期public:int t; /交款和欠款標記 1:由管理員設置 2:全設為0char bday10; /所借日期char rday10; /所還日期int jmoney; /欠款int qmoney; /交款reader( ) char *ge
26、tname( )return name; /獲取姓名int gettag( )return tag; /獲取刪除標記int getno( )return no; /獲取讀者編號void setname(char na ) /設置姓名strcpy(name,na);void setjmoney(int jm) jmoney=jm;void setqmoney(int qm)qmoney=qm;void sett(int tt) /設置交款和欠款標記t=tt; void setz(int z)zq=z; char * getbday( )return bday;char * getrday( )r
27、eturn rday;void delbook()tag=1;/設置刪除標記void addreader(int n,char *na,char *po,int z);/增加讀者int retbook(int bookid); /還書操作void borrowbook(int bookid); /借書操作void disp( ); /輸出讀者信息;#include"book.h"bdatabase:bdatabase( ) book b;top=-1;fstream file("book.txt",ios:in);while(1)file.read(ch
28、ar *)&b,sizeof(b);if(!file)break;top+;book1top=b;file.close();int bdatabase:addbook(int n,char *na) book *p=query(n);if(p=NULL)top+;book1top.addbook(n,na);return 1;return 0;book* bdatabase:query(int bookid)for (int i=0;i<=top;i+)if(book1i.getno()=bookid&&book1i.gettag()=0)return &
29、book1i;return NULL;void bdatabase:disp() for(int i=0;i<=top;i+)if(book1i.gettag()=0)book1i.disp();bdatabase:bdatabase() fstream file("book.txt",ios:out);for(int i=0;i<=top;i+)if(book1i.gettag()=0)file.write(char *)&book1i,sizeof(book1i);file.close();void bdatabase:bookdata( ) int
30、 choice=1;char bname40;int bookid;book *b;while(choice!=0)cout<<"圖書維護1:新增 2:更改 3:刪除 4:查找 5:顯示 6:全刪 0:退出=>"cin>>choice;switch(choice) case 1:cout<<"輸入圖書編號:"cin>>bookid;cout<<"輸入圖書書名:"cin>>bname;addbook(bookid,bname);break;case 2:cou
31、t<<"輸入圖書編號:"cin>>bookid;b=query(bookid);if(b=NULL) cout<<"該圖書不存在"<<endl;break; cout<<" 輸入新的書名:"cin>>bname;b->setname(bname);break;case 3:cout<<"輸入圖書編號:"cin>>bookid;b=query(bookid);if(b=NULL)cout<<"該
32、圖書不存在"<<endl;break;b->delbook();break;case 4:cout<<"輸入圖書編號:"cin>>bookid;b=query(bookid);if(b=NULL)cout<<"該圖書不存在"<<endl;break;b->disp();break;case 5:disp();break;case 6:clear();break;#include "book.h"void book:addbook(int n,char *
33、na)/增加圖書tag=0;no=n;strcpy(name,na);onshelf=1;int book:borrowbook( )/借書if(onshelf=1)onshelf=0;return 1;return 0;void book: retbook( ) /還書onshelf=1;void book:disp( )/輸出圖書cout<<setw(5)<<no<<setw(15)<<name;cout<<setw(10)<<(onshelf=1?"在架":"已借")<&
34、lt;endl;#include "magdatabase.h"#include"manager.h"magdatabase:magdatabase( )manager s;top=-1;fstream file("manager.txt",ios:in);while(1)file.read(char *)&s,sizeof(s);if(!file)break;top+;managetop=s;file.close( );int magdatabase:addmag(int n,char *na,int fe,int ag,i
35、nt m)manager *p=query(n);if(p=NULL)top+;managetop.addmag(n,na,fe,ag,m);return 1;return 0;magdatabase:magdatabase( )fstream file("manager.txt",ios:out);for(int i=0;i<=top;i+)if(managei.gettag( )=0)file.write(char *)&managei,sizeof(managei);file.close( );void magdatabase:managerdata()
36、int choice=1;char mname20;int managerid;int fe;int ag;int m;int s;manager *r;while(choice!=0)cout<<"管理員維護 1:新增 2:更改 3:刪除 4:查找 5:顯示 6:全刪 0:退出=>"cin>>choice;switch(choice)case 1:cout<<"輸入管理員工號:"cin>> managerid;cout<<"輸入管理員姓名:"cin>>mn
37、ame;cout<<"輸入管理員工資:"cin>>fe;cout<<"輸入管理員工齡:"cin>>ag;cout<<"輸入管理員密碼:"cin>>m;addmag(managerid,mname,fe,ag,m);break;case 2:cout<<"輸入管理員工號:"cin>>managerid;r=query(managerid);if(r=NULL)cout<<"該管理員不存在"&
38、lt;<endl;break; cout<<"輸入密碼:" cin>>s; if(r->getma( )=s)cout<<"輸入新的工資:"cin>>fe;r->setfe(fe); cout<<"輸入新的工齡:" cin>>ag; r->setage(ag); if(r->getma()!=s)cout<<"密碼錯誤!"<<endl;break;case 3:cout<<&qu
39、ot; 輸入管理員工號:"cin>>managerid;r=query(managerid);if(r=NULL)cout<<"該管理員不存在"<<endl;break;break;case 4:cout<<"輸入管理員工號:"cin>>managerid;r=query(managerid);if(r=NULL)cout<<"該管理員不存在"<<endl;break;r->disp( );break;case 5:disp( );br
40、eak;case 6:clear( );break;#include "manager.h"#include<iostream.h>#include<iomanip.h>#include<string.h>#include<fstream.h>void manager:addmag(int n,char *na,int fe,int ag,int m)tag=0;no=n;fee=fe;age=ag;strcpy(name,na);ma=m;void manager:disp( )cout<<"工號:&q
41、uot;<<no<<setw(15)<<"姓名:"<<name<<setw(15)<<"工資:"cout<<fee<<setw(15)<<"工齡:"<<age<<endl;#include "rdatabase.h"rdatabase:rdatabase( )reader s;top=-1;fstream file("reader.txt",ios:in);whil
42、e(1)file.read(char *)&s,sizeof(s);if(!file)break;top+;readtop=s;file.close ( );int rdatabase:addreader(int n,char *na,char *po,int z)reader *p=query(n);if(p=NULL)top+;readtop.addreader(n,na,po,z);return 1;return 0;rdatabase:rdatabase( )fstream file("reader.txt",ios:out);for(int i=0;i&l
43、t;=top;i+)if(readi.gettag( )=0)file.write(char *)&readi,sizeof(readi);file.close( );void rdatabase:readerdata( )int choice=1;char rname20;char pos20;int readerid;int qmoney1;int jmoney1;int t;int z;reader *r;while(choice!=0)cout<<"讀者維護 1:新增 2:更改 3:刪除 4:查找 5:顯示 6:全刪 0:退出=>"cin&
44、gt;>choice;switch(choice)case 1:cout<<"輸入讀者編號:"cin>>readerid;cout<<"輸入讀者姓名:"cin>>rname;cout<<"輸入職務:"cin>>pos;cout<<"輸入租期:"cin>>z;addreader(readerid,rname,pos,z);break;case 2:t=1;r->sett(t);cout<<"
45、;輸入讀者編號:"cin>>readerid;r=query(readerid);if(r=NULL)cout<<"該讀者不存在"<<endl;break;cout<<"輸入欠款:"cin>>qmoney1;r->setqmoney(qmoney1);cout<<"輸入交款:"cin>>jmoney1;r->setjmoney(jmoney1); break;case 3:cout<<" 輸入讀者編號:&qu
46、ot;cin>>readerid;r=query(readerid);if(r=NULL)cout<<"該讀者不存在"<<endl;break;r->delbook( );break;case 4:cout<<"輸入讀者編號:"cin>>readerid;r=query(readerid);if(r=NULL)cout<<"該讀者不存在"<<endl;break;r->disp( );break;case 5:disp( );break;c
47、ase 6:clear( );break;#include "reader.h"#include "rdatabase.h"#include<iostream.h>#include<iomanip.h>#include<string.h>#include<fstream.h>void reader:addreader(int n,char *na,char *po,int z)tag=0;no=n;t=0;strcpy(name,na);strcpy(position,po);for(int i=0;i&l
48、t;maxbor;i+) borbooki=0;zq=z;void reader:borrowbook(int bookid)for(int i=0;i<maxbor;i+)if(borbooki=0)borbooki=bookid;return;int reader:retbook(int bookid)for(int i=0;i<maxbor;i+)if(borbooki=bookid)borbooki=0;return 1;return 0;void reader:disp( )cout<<setw(5)<<"編號:"<<
49、;no<<setw(10)<<"姓名:"<<name<<setw(15)<<"職位:"<<position<<setw(15)<<"借書編號:"for(int i=0;i<maxbor;i+)/if(borbooki!=0)cout<<borbooki<<"|"cout<<""<<endl;if(borbooki!=0)cout<<se
50、tw(5)<<" 所借日期:"<<bday<<endl;cout<<setw(5)<<" 所還日期:"<<rday<<endl;cout<<setw(5)<<"租期:"<<zq<<endl;if(t=0)jmoney=0;qmoney=0;cout<<setw(5)<<"交款:"<<jmoney<<endl;cout<<set
51、w(5)<<"欠款:"<<qmoney<<endl;#include<iostream.h>#include<iomanip.h>#include<string.h>#include<fstream.h>#include"bdatabase.h"#include"book.h"#include"reader.h"#include"rdatabase.h"#include"manager.h"#
52、include"magdatabase.h"void main( )int choice=1,bookid,readerid;rdatabase readerdb;reader *r;bdatabase bookdb;magdatabase managerdb;int ma;int n;char bd10;char rd10;book *b;manager *m;while(choice!=0)cout<<">>>>>>圖書館管理系統<<<<<<"<<endl
53、;cout<<"1:借書 2:還書 3:圖書維護 4:讀者維護 5:管理員維護 0:離開=>"cin>>choice;switch(choice)case 1:cout<<"輸入管理員工號:"cin>>n;m=managerdb.query(n);if(m=NULL)cout<<"該管理員不存在!"<<endl;break;cout<<"輸入密碼:"cin>>ma;if(m->getma()=ma)cout&
54、lt;<"借書讀者編號:"cin>>readerid;cout<<" 圖書編號:"cin>>bookid;r=readerdb.query(readerid);if(r=NULL)cout<<"該讀者不存在,不能借書"<<endl;break;b=bookdb.query(bookid);if(b=NULL)cout<<"不存在該圖書,不能借書"<<endl;break;if(b->borrowbook()=0)cout<<"該圖書已借出,不能借書"<<endl;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 南通市海安縣2025年數學四下期末預測試題含解析
- 云南省怒江市重點中學2024-2025學年高考物理試題模擬題及解析(全國卷Ⅱ)含解析
- 焦作工貿職業學院《中國近代軍事史》2023-2024學年第二學期期末試卷
- 上海工程技術大學《口腔循證醫學》2023-2024學年第二學期期末試卷
- 石家莊工程職業學院《西方文論導讀》2023-2024學年第二學期期末試卷
- 廊坊衛生職業學院《跨境電子商務專業英語》2023-2024學年第二學期期末試卷
- 四川電子機械職業技術學院《英語文學作品漢譯》2023-2024學年第一學期期末試卷
- 江蘇省無錫市北塘區2025年數學四下期末學業質量監測模擬試題含解析
- 連云港職業技術學院《西方哲學史》2023-2024學年第二學期期末試卷
- 江蘇省邗江實驗校2025年初三零模語文試題含解析
- 幼兒園大班美術欣賞《大師畫牛》課件
- 《基本醫療保險門診特殊慢性病藥品目錄(2023 年)》
- 2023年渭南市醫療衛生機構定向招聘醫學類畢業生筆試真題
- 2025年中國生物育種行業發展現狀調查、競爭格局分析及未來前景預測報告
- 鋼結構轉換層施工方案
- 口腔門診總經理崗位職責
- 土方場地平整合同
- 人教版六年級數學下冊中段檢測訓練卷
- 人工智能設計倫理(浙江大學)知到智慧樹章節答案
- 2024年廣東省佛山市順德區中考語文二模試卷
- 2024-2030年中國街舞培訓行業競爭格局及投資前景展望報告
評論
0/150
提交評論