您好,欢迎来到小侦探旅游网。
搜索
您的当前位置:首页图书馆管理系统C++代码

图书馆管理系统C++代码

来源:小侦探旅游网
// tushuguanli.cpp : Defines the entry point for the console application. //

#include //字符串头文件 #include //文件头文件

#include //是指标准库中输入输出流的头文件, cout就定义在这个头文件里 using namespace std;//使用名字空间std const int BMAX=50; //书最多个数

//图书管理模块

//图书类 class book {

public: int no; //图书编号 char name[20]; //图书名称 int b_flag; //1为在架,2为借出 int b_del; //1为存在, 2为删除 public : book(){} //构造函数 void setno(int 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 bdatabase { public: book btarray[BMAX]; //图书集合 int top; public: bdatabase() { book b; top=-1; fstream file(\"book.txt\ //打开文件 while (1) { file.read((char *)&b,sizeof(b)); if (!file) break; top++; btarray[top] = b; } file.close(); //关闭文件 } ~bdatabase() //析构函数, 将btarray[]写到book.txt文件中 { fstream file(\"book.txt\ for (int i=0;i<=top;i++) { if (btarray[i].b_del==1) file.write((char *)&btarray[i],sizeof(btarray[i])); } file.close(); }

void addbooks() //往图书数据库中加图书 { book bk; int no; char bname[20]; cout<<\"请输入书号: \"; cin>>no; cout<>bname; cout<>no; for(int i=0; i<=top; i++) { if(btarray[i].no==no && btarray[i].b_del==1) { return i; } } return -1; } int findbooks() //查找图书,这个函数用于图书维护 { int no; char value[6]; cout<<\"请输入书号: \"; cin>>no; for(int i=0; i<=top; i++) {

if(btarray[i].no==no && btarray[i].b_del==1) { if(btarray[i].b_flag==1) strcpy(value,\"在架\"); if(btarray[i].b_flag==2) strcpy(value,\"借出\"); cout<<\"书号: \"<>btarray[cur].name; return ; } void delbooks() //删除图书 { int cur; cur = findbooks(); if (cur==-1) { return; } if(btarray[cur].b_flag==2) //删除时判断图书是否借出 { cout<<\"该图书已经借出,请在归还后再删除。\"<void listbooks() //显示全部图书 { char value[6]; for(int i=0; i<=top; i++) { if(btarray[i].b_del==1) { if(btarray[i].b_flag==1) strcpy(value,\"在架\"); if(btarray[i].b_flag==2) strcpy(value,\"借出\"); cout<<\"书号: \"<//读者管理模块 //读者类 class reader { public: int no; char name[20]; 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 rdatabase { public: reader rdarray[BMAX]; int top; public: rdatabase() { reader rd; top=-1; fstream file(\"reader.txt\打开文件 while (1) { file.read((char *)&rd,sizeof(rd)); if (!file) break; top++; rdarray[top]=rd; } file.close(); //关闭文件 } ~rdatabase()//析构函数 { fstream file(\"reader.txt\ for (int i=0;i<=top;i++) { if (rdarray[i].r_del==1) file.write((char *)&rdarray[i],sizeof(rdarray[i])); } file.close(); } void addreaders() { reader rd; int no; char rname[20]; cout<<\"请输入学号: \";

//添加读者 cin>>no; cout<>rname; cout<>no; for(int i=0; i<=top; i++) { if(rdarray[i].no==no && rdarray[i].r_del==1) { return i; } } return -1; } int findreaders() //查找读者,这个函数用于读者维护操作 { int no; char value[3]; cout<<\"请输入学号: \"; cin>>no; for(int i=0; i<=top; i++) { if(rdarray[i].no==no && rdarray[i].r_del==1) { if(rdarray[i].r_bor==1) strcpy(value,\"借\"); if(rdarray[i].r_bor==2) strcpy(value,\"无\"); cout<<\"学号: \"<return -1; } void editreaders() //编辑读者信息 { int cur; cur = findreaders(); if (cur==-1) { cout<<\"没有该学生\"<>rdarray[cur].name; return ; } void delreaders() //删除读者,读者如果借书要还书后才能删除 { int cur; cur = findreaders(); if (cur==-1) { return; } if(rdarray[cur].r_bor==1) { cout<<\"该用户借了图书,请还书后再删除\"<if(rdarray[i].r_bor==2) strcpy(value,\"无\"); cout<<\"学号: \"<void bookjiemain() 子菜单 { cout<<\"|---------------------|\"<void readerjiemian() 护子菜单 { cout<<\"|---------------------|\"<//图书维护 //读者维mainjiemian() cout<<\"* 图 书 管 理 系 统 *\"<void borrowtoreturn(char br)

//借书还书函数.参数br用来判断是“借书”还是“还书”.1为“借书”,2为“还书” { int rdid=0; int bkid=0; int rsuffix, bsuffix; bdatabase t_bd; rdatabase t_rd; if(br=='1') //借书 { rsuffix=t_rd.findreaders(rdid); bsuffix=t_bd.findbooks(bkid); if (rsuffix==-1 || bsuffix==-1) return; if(t_bd.btarray[bsuffix].b_flag==2) { cout<<\"图书已经借出,请选择其它图书\"<if(br=='2') { rsuffix=t_rd.findreaders(rdid); bsuffix=t_bd.findbooks(bkid); if (rsuffix==-1 || bsuffix==-1 ) return; if(t_rd.rdarray[rsuffix].brbook.no==t_bd.btarray[bsuffix].no) { t_bd.btarray[bsuffix].b_flag=1; t_rd.rdarray[rsuffix].r_bor=2; t_rd.rdarray[rsuffix].brbook=t_bd.btarray[bsuffix]; } else { cout<<\"请重新输入,读者借的图书号不正确\"<void booksmange() {

char in; bdatabase bd; do{ bookjiemain(); cin>>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<<\"输入错误,请从新输入。\"<void readersmange() {

char in; rdatabase bd; do{ readerjiemian(); cin>>in; switch (in) { case '1': bd.addreaders(); break; case '2': bd.editreaders(); break; case '3': bd.delreaders(); break; case '4': bd.findreaders(); break; case '5': bd.listreaders(); break; case '6': break; default:cout<<\"输入错误,请从新输入。\"<int main(int argc, char* argv[]) { char in; do{ mainjiemian(); cin>>in; switch (in) { case '1': borrowtoreturn(in); break; case '2': borrowtoreturn(in); break; case '3': booksmange(); break; case '4': readersmange(); break; case '0': break; default:cout<<\"输入错误,请从新输入。\"<

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- xiaozhentang.com 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务