面向对象的图书管理系统C.doc_第1页
面向对象的图书管理系统C.doc_第2页
面向对象的图书管理系统C.doc_第3页
面向对象的图书管理系统C.doc_第4页
面向对象的图书管理系统C.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 setname(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 CReader: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 rdarray50;int top;public:CReaderManager();CReaderManager();void addreaders(); /添加读者int findreaders(int suffix); /查找读者,这个函数用于借书还书操作。 int findreaders(); /查找读者,这个函数用于读者维护操作void editreaders(); /编辑读者信息void delreaders(); /删除读者,读者如果借书要还书后才能删除void listreaders(); /显示所有读者;/图书管理类class CBookManagerpublic:CBook btarray50; /图书集合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: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 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 *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() /返回图书编号值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; fstream 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); file.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=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(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() /删除读者,读者如果借书要还书后才能删除 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()=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(); /关闭文件CBookManager: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(no);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 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() /编辑图书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该图书已经借出,请在归还后再删除。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;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() /管理员界面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;cout| (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; cout*请选择您的操作 *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 n20;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; 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 (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 in; 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 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 std;#includeMytype.hvoid yewujiemian();/借书处理void borrowbook() int rsuffix, bsuffix

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论