1、图书馆管理系统C代码/ tushuguanli.cpp : Defines the entry point for the console application.#include #include #include /using namespace std;const int BMAX=50;/图书数据库类class bdatabasepublic:book btarrayBMAX;int top;public: bdatabase()book b;top=-1;fstream file(book.txt,ios:in); /打开文件while (1)file.read(char *)&b,
2、sizeof(b);if (!file) break;top+;btarraytop = b;file.close(); / 关闭文件bdatabase() / 析构函数, 将 btarray 写到 book.txt 文件中fstream file(book.txt,ios:out);for (int i=0;i=top;i+)if (btarrayi.b_del=1)file.write(char *)&btarrayi,sizeof(btarrayi);file.close();void addbooks()/往图书数据库中加图数组下标维护book bk;int no;char bname
3、20; coutno; coutendlbname; coutendl;bk.b_flag=1; bk.addbook(no, bname);top+; btarraytop=bk;return;int findbooks(int suffix) /查找图书,这个函数用于借书这书操作, suffix 是int no; coutno;for(int i=0; i=top; i+)if(btarrayi.no=no & btarrayi.b_del=1) return i; return -1;int findbooks() /查找图书 , 这个函数用于图书int no;char value6;
4、coutno;for(int i=0; i=top; i+)if(btarrayi.no=no & btarrayi.b_del=1) if(btarrayi.b_flag=1) strcpy(value, 在架 );if(btarrayi.b_flag=2) strcpy(value, 借出 );cout 书号 : btarrayi.no 书的名称 : btarrayi.name 图书状态 :valueendl;return i;return -1;void editbooks() /编辑图书int cur;cur = findbooks();if (cur=-1) cout 没有这本书 e
5、ndl;return;cout 书号 : btarraycur.no 书的名称 : btarraycur.nameendl;cout 请修改数据: endl;coutendlbtarraycur.name;return ;void delbooks() / 删除图书int cur;cur = findbooks();if (cur=-1)return;if(btarraycur.b_flag=2) / 删除时判断图书是否借出cout 该图书已经借出,请在归还后再删除。 endl;return;btarraycur.b_del=2;return;/显示全部图书void listbooks()ch
6、ar value6;for(int i=0; i=top; i+) if(btarrayi.b_del=1)btarrayi.nameif(btarrayi.b_flag=1) strcpy(value, 在架 ); if(btarrayi.b_flag=2) strcpy(value, 借出 ); cout 书号 : btarrayi.no 书的名称 图书状态 :valueendl;return;Jclass book public:int no; / 图书编号char name20; / 图书名称int b_flag;int b_del;public :book()void setno(i
7、nt n)no=n;int getno()return no; /返回图书编号值void setname(char na)strcpy(name, na); /字符串复制char* getname()return name; /返回图书名称void borbook()b_flag=2;/借书标志void delbook()b_del=2; /删除标志void addbook(int no,char na) / 增加图书功能setno(no); setname(na);b_flag=1; b_del=1;.、一 /读者类class readerpublic:int no;char name20;
8、int r_del; /1 存在, 2 删除int r_bor; /1 借过书, 2 没有借书 book brbook;public:void addreader(int id, char na)/ 增加读者no = id;strcpy(name, na);r_del=1;void setbrbook(book bt) /设置借书标记brbook = bt;book getbrbook()return brbook; / 返回借书信息;/读者数据库类class rdatabasepublic:reader rdarrayBMAX; int top;public: rdatabase() rea
9、der 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(); /关闭文件rdatabase()/析构函数fstream file(reader.txt,ios:out);for (int i=0;i=top;i+)if (rdarrayi.r_del=1)file.write(char *)&rdarrayi,sizeof(rdarrayi);file.cl
10、ose();/添加读者void addreaders()reader rd;int no;char rname20; coutno;coutendlrname;coutendl; rd.addreader(no, rname);rd.r_bor=2;top+;rdarraytop=rd;return;int findreaders(int suffix) /查找读者, 这个函数用于借书还书操作。 参数 suffix是数组下标int no;coutno;for(int i=0; i=top; i+)if(rdarrayi.no=no & rdarrayi.r_del=1)return i;ret
11、urn -1;int findreaders() /查找读者,这个函数用于读者维护操作int no;char value3;coutno;for(int i=0; i=top; i+)if(rdarrayi.no=no & rdarrayi.r_del=1)if(rdarrayi.r_bor=1) strcpy(value, 借 );if(rdarrayi.r_bor=2) strcpy(value, 无 );cout 学号 : rdarrayi.no 姓名 : rdarrayi.name 是否 借书 : valueendl;return i;return -1;void editreader
12、s() / 编辑读者信 int cur;cur = findreaders();if (cur=-1) cout 没有该学生 endl;return;cout 请修改数据: endl; coutendlrdarraycur.name;return ;void delreaders() / 删除读者,读者如果借书要还书后才能删除int cur;cur = findreaders();if (cur=-1) return; if(rdarraycur.r_bor=1)cout 该用户借了图书,请还书后再删除 endl; return; rdarraycur.r_del=2;return;void
13、listreaders() / 显示所有读者char value3; for(int i=0; i=top; i+)if(rdarrayi.r_del=1)if(rdarrayi.r_bor=1) strcpy(value, 借 );if(rdarrayi.r_bor=2) strcpy(value, 无 );cout 学号 : rdarrayi.no 姓名 : rdarrayi.name 是否 借书 : valueendl;void bookjiemain() 子菜单/图书维护cout|- |endl;cout|图书维护|endl;cout|(1)增加|endl;cout|(2)更改|end
14、l;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/主界面mainjiemian()cout*图书管理系统*endl;cout*endl;cou
15、t*(1)借书*endl;cout*endl;cout*(2)还书*endl;coutendl;cout*endl;cout*(3) 图书管理*endl;cout*endl;cout*(4) 用户管理*endl;cout*endl;cout*(0) 退 出*endl;cout*endl;void borrowtoreturn(char br)/借书还书函数 .参数 br 用来判断是“借书”还是“还书” .1 为“借书” ,2 为“还书” int rdid=0;int bkid=0;int rsuffix, bsuffix; bdatabase t_bd;rdatabase t_rd;if(br
16、=1) /借书rsuffix=t_rd.findreaders(rdid); bsuffix=t_bd.findbooks(bkid);if (rsuffix=-1 | bsuffix=-1)return;if(t_bd.btarraybsuffix.b_flag=2)cout 图书已经借出,请选择其它图书 endl;return; if(t_rd.rdarrayrsuffix.r_bor=1)cout 你已经借过图书,请先归还再借其它图书 endl; return;t_bd.btarraybsuffix.b_flag=2; t_rd.rdarrayrsuffix.r_bor=1;t_rd.r
17、darrayrsuffix.brbook=t_bd.btarraybsuffix;return;if(br=2)rsuffix=t_rd.findreaders(rdid); bsuffix=t_bd.findbooks(bkid);if (rsuffix=-1 | bsuffix=-1 )if(t_rd.rdarrayrsuffix.brbook.no=t_bd.btarraybsuffix.no)t_bd.btarraybsuffix.b_flag=1;t_rd.rdarrayrsuffix.r_bor=2;t_rd.rdarrayrsuffix.brbook=t_bd.btarraybs
18、uffix;elsecout 请重新输入,读者借的图书号不正确 in;switch (in)case 1:bd.addbooks();break;case 2:bd.editbooks();break;case 3:bd.delbooks();break;case 4:bd.findbooks();break;case 5:bd.listbooks();break;case 6:break;default:cout 输入错误,请从新输入。 in;switch (in)case 1:bd.addreaders(); break;case 2:bd.editreaders(); break;cas
19、e 3:bd.delreaders(); break;case 4:bd.findreaders(); break;case 5:bd.listreaders(); break;case 6:break;endl;default:coutin;switch (in)case 1: borrowtoreturn(in); break;case 2: borrowtoreturn(in); break;case 3: booksmange(); break;case 4:readersmange(); break;case 0:break;endl;default:cout 输入错误,请从新输入。 while(in!=0);return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1