欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

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

    • 资源ID:2385524       资源大小:57KB        全文页数:20页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1 类的定义为了清晰和便于修改维护,本系统采用多文件形式组织。在自定义的头文件Mytype.h中,存放所有类的定义。文件内容如下:#include<iostream>#include<string>#include<Cstdlib>using 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<fstream>#include"Mytype.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<<"读者编号: "<<this->getno()<<endl;cout<<"读者姓名: "<<this->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;cout<<"请输入学号: "cin>>no;cout<<endl<<"请输入姓名: "cin>>rname;cout<<endl;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;cout<<"请输入学号: "cin>>no;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;cout<<"请输入学号: "cin>>no;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()<<" 是否借书: "<<value<<endl;return i;return -1;void CReaderManager:editreaders() /编辑读者信息int cur;cur = findreaders();if (cur=-1)cout<<"没有该学生"<<endl;return;cout<<"请修改数据:"<<endl;cout<<endl<<" 姓名: "cin>>rdarraycur.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()<<" 是否借书: "<<value<<endl;char ch;cout<<"按任意键继续.n"cin>>ch;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;cout<<"请输入书号: "cin>>no;cout<<endl<<"请输入书名: "cin>>bname;cout<<endl;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;cout<<"请输入书号: "cin>>no;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;cout<<"请输入书号: "cin>>no;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()<<" 图书状态 :"<<value<<endl;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;cout<<endl<<"书的名称: "cin>>btarraycur.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()<<" 图书状态 :"<<value<<endl;return;3 用户界面设计为了清晰,我们把所有的用户界面函数放在一个文件中,文件名为menu.cpp,内容如下:#include <iostream>using namespace std;void mainjiemian() /登录主界面 cout<<"*欢迎使用图书管理系统*"<<endl; cout<<endl; cout<<"*请选择您的身份 *"<<endl; cout<<"* 1 系统管理员 *"<<endl; cout<<"* 2 图书管理员 *"<<endl; cout<<"* 3 系统初始化 *"<<endl; cout<<"* 4 退 出 系统 *"<<endl; cout<<"*"<<endl; cout<<endl; 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; cout<<endl; cout<<"*请选择您的操作 *"<<endl; cout<<"* 1 借书管理 *"<<endl; cout<<"* 2 还书管理 *"<<endl; cout<<"* 3 返回上一层 *"<<endl; cout<<"*"<<endl; cout<<endl;4 用户登录系统主函数放在login.cpp中,内容如下:#include<iostream>#include<Cstdlib>#include"Mytype.h"#include<fstream>using namespace std;void sysmanage(); /函数声明void jiehuan(); /函数声明void mainjiemian(); /函数声明void init() /初始化文件写入系统管理员的信息 int id;char n20;cout<<"请输入系统管理员编号:"cin>>id; cout<<"请输入系统管理员姓名:"cin>>n; CUser super(id,n);fstream ff("init.txt",ios:out); /打开文件 if(!ff)cout<<"open file error!n"exit(1);ff.write(char *)&super,sizeof(CUser);ff.close();cout<<"系统初始化成功! 按任意键继续." cin.get();cin.get();/主函数int main() char in; do system("cls"); /清屏 mainjiemian(); cin>>in; 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<iostream>#include<fstream>using namespace std;#include"Mytype.h"void staffjiemian();void bookmanage();void duzhemanage();int superyz() CUser super;int id;cout<<"请输入您的编号"cin>>id;fstream ff("init.txt",ios:in); /打开文件 if(!ff) cout<<"open file error!n" exit(1);ff.read(char *)&super,sizeof(CUser);ff.close();if (id!=super.getno()return 0;elsereturn 1;void sysmanage() int f;f=superyz(); /验证身份if(f) char in1; do system("cls"); /清屏 staffjiemian(); cin>>in1; 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<iostream>#include<fstream>using namespace std;#include"Mytype.h"void bookjiemain();void bookmanage() char in; CBookManager bm; do system("cls"); /清屏 bookjiemain(); cin>>in; 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<<"输入错误,请从新输入。"<<endl; while(in!='6');duzheguanli.cpp内容如下:#include"Mytype.h"void readerjiemian();void duzhemanage() char in; CReaderManager rm; do system("cls"); /清屏 readerjiemian(); cin>>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<iostream>#include<fstream>using namespace std;#include"Mytype.h"void 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.

    注意事项

    本文(面向对象的图书管理系统C(精).doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开