面向对象的图书管理系统C(精).doc

上传人:土8路 文档编号:10396841 上传时间:2021-05-14 格式:DOC 页数:20 大小:57KB
返回 下载 相关 举报
面向对象的图书管理系统C(精).doc_第1页
第1页 / 共20页
面向对象的图书管理系统C(精).doc_第2页
第2页 / 共20页
面向对象的图书管理系统C(精).doc_第3页
第3页 / 共20页
面向对象的图书管理系统C(精).doc_第4页
第4页 / 共20页
面向对象的图书管理系统C(精).doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《面向对象的图书管理系统C(精).doc》由会员分享,可在线阅读,更多相关《面向对象的图书管理系统C(精).doc(20页珍藏版)》请在三一文库上搜索。

1、1 类的定义为了清晰和便于修改维护,本系统采用多文件形式组织。在自定义的头文件Mytype.h中,存放所有类的定义。文件内容如下:#include#include#includeusing namespace std;/图书类class CBookprivate:int no; /图书编号char name20; /图书名称int b_flag; /1为在架,2为借出int b_del; /1为存在, 2为删除public :CBook(); /默认构造函数 CBook(int no,char na); /构造函数void setno(int n);int getno();void setna

2、me(char na);char* getname(); int getb_flag(); void setb_flag(int);int getb_del();void setb_del(int); ;/用户类class CUserprivate:int no;char name20;public:CUser(); CUser(int id, char na);void setno(int n);int getno(); /返回图书编号值void setname(char na);char* getname(); /返回图书名称void show();/用户类的派生类-读者类class CR

3、eader:public CUserprivate:int r_del; /1存在,2删除int r_bor; /1借过书,2没有借书CBook brbook;public:CReader();CReader(int id, char na);int getr_del();void setr_del(int);int getr_bor();void setr_bor(int);void setbrbook(CBook bt); CBook getbrbook();void show(); /方法重写;/读者管理类class CReaderManager public:CReader rdarr

4、ay50;int top;public:CReaderManager();CReaderManager();void addreaders(); /添加读者int findreaders(int suffix); /查找读者,这个函数用于借书还书操作。 int findreaders(); /查找读者,这个函数用于读者维护操作void editreaders(); /编辑读者信息void delreaders(); /删除读者,读者如果借书要还书后才能删除void listreaders(); /显示所有读者;/图书管理类class CBookManagerpublic:CBook btarr

5、ay50; /图书集合int top;public:CBookManager();CBookManager(); void addbooks() ; int findbooks(int suffix); int findbooks() ; void editbooks(); void delbooks(); void listbooks() ; ;2 类的实现类的实现可以分多个文件组织,也可以放在一个文件中,本系统类比较少,所以只定义一个文件存放。文件名为classImp.cpp,具体内容如下:#include#includeMytype.h /用户类的实现CUser:CUser()CUser

6、:CUser(int id, char na)no = id;strcpy(name, na);void CUser:setno(int n)no=n;int CUser:getno() /返回图书编号值return no; void CUser:setname(char na)strcpy(name, na);char* CUser:getname() /返回图书名称return name;void CUser:show() cout系统管理员编号: no系统管理员姓名: name; /读者类的实现 CReader:CReader()CReader:CReader(int id, char

7、na):CUser(id, na)r_del=1;r_bor=2;int CReader:getr_del()return r_del;void CReader:setr_del(int n)r_del=n;int CReader:getr_bor()return r_bor;void CReader:setr_bor(int n)r_bor=n;void CReader:setbrbook(CBook bt) /设置借书标记brbook = bt;CBook CReader:getbrbook()return brbook;void CReader:show() char *js; char

8、 *sc; if(r_del=1) cout读者编号: getno()endl;cout读者姓名: getname()endl;if(r_bor=1)cout已借图书名称: brbook.getname(); elsecout目前没有已借图书!endl; else cout该读者已经从系统删除!endl;/图书类的实现CBook:CBook() /构造函数CBook:CBook(int id,char na) no=id;strcpy(name, na);b_flag=1;b_del=1;void CBook:setno(int n) no=n;int CBook:getno() /返回图书编

9、号值return no;void CBook:setname(char na)/返回图书名称strcpy(name, na);char* CBook:getname()return name;int CBook:getb_flag()return b_flag;void CBook:setb_flag(int n)b_flag=n;int CBook:getb_del()return b_del;void CBook:setb_del(int n)b_del=n;/读者管理类的实现CReaderManager:CReaderManager()CReader rd; top=-1; fstrea

10、m file(reader.txt,ios:in); /打开文件while (1) file.read(char *)&rd,sizeof(rd); if (!file) break; top+; rdarraytop=rd; file.close(); /关闭文件CReaderManager:CReaderManager()/析构函数 fstream file(reader.txt,ios:out); for (int i=0;i=top;i+)if (rdarrayi.getr_del()=1) file.write(char *)&rdarrayi,sizeof(rdarrayi); f

11、ile.close(); Void CReaderManager:addreaders() /添加读者CReader rd;int no;char rname20;coutno;coutendlrname;coutendl;rd.setno(no);rd.setname(rname);rd.setr_bor(2);rd.setr_del(1);top+; rdarraytop=rd;return;int CReaderManager:findreaders(int suffix) /查找读者,这个函数用于借书还书操作。 参数suffix是数组下标int no;coutno;for(int i=

12、0; i=top; i+)if(rdarrayi.getno()=no & rdarrayi.getr_del()=1)return i;return -1;int CReaderManager:findreaders() /查找读者,这个函数用于读者维护操作int no;char value3;coutno;for(int i=0; i=top; i+)if(rdarrayi.getno()=no & rdarrayi.getr_del()=1)if(rdarrayi.getr_bor()=1) strcpy(value,借);if(rdarrayi.getr_bor()=2) strcpy

13、(value,无);cout学号: rdarrayi.getno() 姓名: rdarrayi.getname() 是否借书: valueendl;return i;return -1;void CReaderManager:editreaders() /编辑读者信息int cur;cur = findreaders();if (cur=-1)cout没有该学生endl;return;cout请修改数据:endl;coutendlrdarraycur.getname();return ;void CReaderManager:delreaders() /删除读者,读者如果借书要还书后才能删除

14、int cur;cur = findreaders();if (cur=-1)return;if(rdarraycur.getr_bor()=1)cout该用户借了图书,请还书后再删除endl;return;rdarraycur.setr_del(2);return;void CReaderManager:listreaders() /显示所有读者char value3;for(int i=0; i=top; i+)if(rdarrayi.getr_del()=1)if(rdarrayi.getr_bor()=1) strcpy(value,借);if(rdarrayi.getr_bor()=

15、2) strcpy(value,无);cout学号: rdarrayi.getno() 姓名: rdarrayi.getname() 是否借书: valueendl;char ch;coutch;return;/图书管理类的实现CBookManager:CBookManager()CBook b; top=-1; fstream file(book.txt,ios:in); /打开文件while (1) file.read(char *)&b,sizeof(b); if (!file) break; top+; btarraytop = b; file.close(); /关闭文件CBookM

16、anager:CBookManager() /析构函数,将btarray写到book.txt文件中 fstream file(book.txt,ios:out); for (int i=0;i=top;i+)if (btarrayi.getb_del()=1) file.write(char *)&btarrayi,sizeof(btarrayi); file.close(); void CBookManager:addbooks() /往图书数据库中加图书CBook bk;int no;char bname20;coutno;coutendlbname;coutendl;bk.setno(n

17、o);bk.setname(bname); bk.setb_del(1);bk.setb_flag(1);top+;btarraytop=bk;return;int CBookManager:findbooks(int suffix) /查找图书,这个函数用于借书这书操作,suffix是数组下标int no;coutno;for(int i=0; i=top; i+)if(btarrayi.getno()=no & btarrayi.getb_del()=1)return i;return -1;int CBookManager:findbooks() /查找图书,这个函数用于图书维护 int

18、 no;char value6;coutno;for(int i=0; i=top; i+)if(btarrayi.getno()=no & btarrayi.getb_del()=1)if(btarrayi.getb_flag()=1) strcpy(value,在架);if(btarrayi.getb_flag()=2) strcpy(value,借出);cout书号: btarrayi.getno() 书的名称: btarrayi.getname() 图书状态 :valueendl;return i;return -1;void CBookManager:editbooks() /编辑图

19、书int cur;cur = findbooks();if (cur=-1)cout没有这本书endl;return;cout书号: btarraycur.getno() 书的名称: btarraycur.getname()endl;cout请修改数据:endl;coutendlbtarraycur.getname();return ;void CBookManager:delbooks() /删除图书int cur;cur = findbooks();if (cur=-1)return;if(btarraycur.getb_flag()=2) /删除时判断图书是否借出cout该图书已经借出,

20、请在归还后再删除。endl;return;btarraycur.setb_del(2);return;void CBookManager:listbooks() /显示全部图书char value6;for(int i=0; i=top; i+)if(btarrayi.getb_del()=1)if(btarrayi.getb_del()=1) strcpy(value,在架);if(btarrayi.getb_flag()=2) strcpy(value,借出);cout书号: btarrayi.getno() 书的名称: btarrayi.getname() 图书状态 :valueendl

21、;return;3 用户界面设计为了清晰,我们把所有的用户界面函数放在一个文件中,文件名为menu.cpp,内容如下:#include using namespace std;void mainjiemian() /登录主界面 cout*欢迎使用图书管理系统*endl; coutendl; cout*请选择您的身份 *endl; cout* 1 系统管理员 *endl; cout* 2 图书管理员 *endl; cout* 3 系统初始化 *endl; cout* 4 退 出 系统 *endl; cout*endl; coutendl; cout请选择数字:;void staffjiemian

22、() /管理员界面cout*endl;cout* 图 书 管 理 系 统 *endl;cout* *endl;cout* *endl;cout* (1) 图书管理 *endl;cout* *endl;cout* (2) 用户管理 *endl;cout* *endl;cout* (3) 退 出 *endl;cout*endl;void bookjiemain() /图书维护子菜单cout|-|endl;cout| 图书维护 |endl;cout| (1)增加图书 |endl;cout| (2)更改图书 |endl;cout| (3)删除图书 |endl;cout| (4)查找图书 |endl;c

23、out| (5)显示图书 |endl;cout| (6)返回上一层 |endl;cout|-|endl;void readerjiemian() /读者维护子菜单cout|-|endl;cout| 读者维护 |endl;cout| (1)增加读者 |endl;cout| (2)更改读者 |endl;cout| (3)删除读者 |endl;cout| (4)查找读者 |endl;cout| (5)显示读者 |endl;cout| (6)返回上一层 |endl;cout|-|endl;void yewujiemian() /借还书 cout*欢迎使用图书管理系统*endl; coutendl; c

24、out*请选择您的操作 *endl; cout* 1 借书管理 *endl; cout* 2 还书管理 *endl; cout* 3 返回上一层 *endl; cout*endl; coutendl;4 用户登录系统主函数放在login.cpp中,内容如下:#include#include#includeMytype.h#includeusing namespace std;void sysmanage(); /函数声明void jiehuan(); /函数声明void mainjiemian(); /函数声明void init() /初始化文件写入系统管理员的信息 int id;char n

25、20;coutid; coutn; CUser super(id,n);fstream ff(init.txt,ios:out); /打开文件 if(!ff)coutopen file error!n;exit(1);ff.write(char *)&super,sizeof(CUser);ff.close();coutin; switch (in)case 1: sysmanage(); /进入guanliyuan.cppbreak;case 2: jiehuan(); /进入yewu.cppbreak;case 3: init(); /调用初始化函数break;case 4:break;

26、default:cout输入错误,请从新输入。endl; while(in!=4);return 0;5 系统管理员功能系统管理员功能实现放在guanliyuan.cpp中,内容如下:#include#includeusing namespace std;#includeMytype.hvoid staffjiemian();void bookmanage();void duzhemanage();int superyz() CUser super;int id;coutid;fstream ff(init.txt,ios:in); /打开文件 if(!ff) coutin1; switch

27、(in1)case 1: /图书管理bookmanage(); /进入tushuguanli.cppbreak;case 2:/读者管理duzhemanage(); /进入duzheguanli.cppbreak; case 3:break; default:cout输入错误,请从新输入。endl; while(in1!=3);elsecout您不是图书管理员!;其中tushuguanli.cpp内容如下:#include#includeusing namespace std;#includeMytype.hvoid bookjiemain();void bookmanage() char i

28、n; CBookManager bm; do system(cls); /清屏 bookjiemain(); cinin; switch (in)case 1: /增加图书bm.addbooks();break;case 2: /修改图书bm.editbooks();break;case 3: /删除图书bm.delbooks();break;case 4:/查找图书bm.findbooks();break;case 5: /显示图书bm.listbooks();break;case 6:/返回break; default:cout输入错误,请从新输入。in; switch (in)case

29、1: /增加读者rm.addreaders();break;case 2: /修改读者rm.editreaders();break;case 3: /删除读者rm.delreaders();break;case 4:/查找读者rm.findreaders();break;case 5: /显示读者 rm.listreaders();break;case 6:/返回break; default:cout输入错误,请从新输入。endl; while(in!=6);5 普通管理员功能普通管理员功能实现放在yewu.cpp中,内容如下:#include#includeusing namespace s

30、td;#includeMytype.hvoid yewujiemian();/借书处理void borrowbook() int rsuffix, bsuffix;CBookManager t_bd;CReaderManager t_rd;rsuffix=t_rd.findreaders(0);bsuffix=t_bd.findbooks(0);if ( bsuffix=-1) cout书不存在!n;return;if (rsuffix=-1 )cout读者不存在!n;return;if(t_bd.btarraybsuffix.getb_flag()=2)cout图书已经借出,请选择其它图书endl;return;if(t_rd.rdarrayrsuffix.getr_bor()=1)cout你已经借过图书,请先归还再借其它图书endl;return;t_bd.btarraybsuffix.setb_flag(2);t_rd.rdarrayrsuffix.setr_bor(1);t_rd.rdarrayrsuffix.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1