c语言实现图书管理系统脚本,C++实现简单的图书管理系统

今天再为大家介绍另一个常用的管理系统——图书管理系统,希望大家可以亲自动手实践一下,下面就与大家一起分享我的劳动成果。

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:

(1)图书信息录入功能(图书信息用文件保存)

(2)图书信息浏览功能

(3)查询和排序功能:(至少一种查询方式)

.按书名查询

.按作者名查询

(4)图书信息的删除与修改

分享代码如下

#include

#include //控制台数据输入输出的函数

#include//文件流

#include //控制数据输出格式

#include

const int Maxr=100 ;//最多的读者数

const int Maxb=100; //最多的图书数

const int Maxbor=5; //每位读者最多借的书

class Book

{//图书类,实现对图书的描述,图书的编号,书名,借出,还入等功能

private:

int tag; //删除标记 1:已删 0:未删

int no; //图书编号

char name[20]; //书名

char author[20];//作者

char fenlei[20];//分类号

char cbs[20]; //出版社

int cbtime;//出版时间

double bookprice;//图书价格

int onshelf; //是否再架 1:再架 2:已借

public:

Book(){;}

char *getname()

{//获取书名

return name;

}

char *getauthorname()

{//获取作者名

return author;

}

char *getfenlei()

{//获取分类号

return fenlei;

}

char *getcbsname()

{//获取出版社名

return cbs;

}

int getcbtime()

{//获取出版时间

return cbtime;

}

double getbookprice()

{//获取图书价格

return bookprice;

}

int getno()

{//获取图书编号

return no;

}

int gettag()

{//获取删除标记

return tag;

}

void setname(char na[])

{//设置书名

strcpy(name,na);

}

void setauthorname(char aa[])

{//设置作者名

strcpy(author,aa);

}

void setfenlei(char fe[])

{//设置分类号

strcpy(fenlei,fe);

}

void setcbs(char ca[])

{//设置出版社

strcpy(cbs,ca);

}

void setcbtime(int time)

{//设置时间

cbtime=time;

}

void setbookprice(double price)

{//设置图书价格

bookprice=price;

}

void setonshelf(int oa)

{

onshelf=oa;

}

void delbook()

{//删除图书

char i;

cout<

cin>>i;

if(i=='y'||i=='Y')

tag=1;

}

void addbook(int n,char *na,char *aa,char *fe,char *ca,int time,double price,int oa)

{//增加图书

tag=0;

no=n;

strcpy(name,na);

strcpy(author,aa);

strcpy(cbs,ca);

strcpy(fenlei,fe);

cbtime=time;

bookprice=price;

onshelf=oa;

}

int borrowbook()

{//借书操作

if (onshelf>0)

{

onshelf--;

return 1;

}

return 0;

}

void retbook()

{//还书操作

onshelf++;

}

void disp()

{//输出图书

cout<

}

};

class BDatabase

{//图书库类,实现对图书的维护,查找,删除等

private:

int top; //图书记录指针

Book book[Maxb]; //图书记录

public:

BDatabase()

{//构造函数,将book.txt读到book[]中

Book b;

top=-1;

fstream file("book.txt",ios::in);

while (1)

{

file.read((char *)&b,sizeof(b));

if (!file)

break;

top++;

book[top]=b;

}

file.close();

}

void clear()

{//全删

char i;

cout<

cin>>i;

if(i=='y'||i=='Y')

top=-1;

}

int addbook(int n,char *na,char *aa,char *fe,char *ca,int time, double price,int oa)

{//增加图书

Book *p=query1(n);

if (NULL==p)

{

top++;

book[top].addbook(n,na,aa,fe,ca,time,price,oa);

return 1;

}

return 0;

}

Book *query1(int bookid)

{//按编号查找图书

for(int i=0;i<=top;i++)

if(book[i].getno()==bookid &&book[i].gettag()==0)

{

return &book[i];

}

return NULL;

}

Book *query2(char a[])

{//按书名查找图书

Book *e;

int r=0;

for(int i=0;i<=top;i++)

if(strcmp(book[i].getname(),a)==0 &&book[i].gettag()==0)

{

if(r==0)

cout<

e=&book[i];

e->disp();

r++;

}

if(r==0)

cout<

return NULL;

}

Book *query3(char a[])

{//按作者查找图书

Book *e;

int r=0;

for(int i=0;i<=top;i++)

if(strcmp(book[i].getauthorname(),a)==0 &&book[i].gettag()==0)

{

if(r==0)

cout<

e=&book[i];

e->disp();

r++;

}

if(r==0)

cout<

return NULL;

}

Book *query4(char a[])

{//按出版社查找图书

Book *e;

int r=0;

for (int i=0;i<=top;i++)

if (strcmp(book[i].getcbsname(),a)==0 &&book[i].gettag()==0)

{

if(r==0)cout<

e=&book[i];

e->disp();

r++;

}

if(r==0)

cout<

return NULL;

}

void bookdata(); //图书库信息

void disp()

{

for(int i=0;i<=top;i++)

if(book[i].gettag()==0)

book[i].disp();

}

~BDatabase()

{//析构函数,将book[]写到book.txt文件中

fstream file("book.txt",ios::out);

for(int i=0;i<=top;i++)

if(book[i].gettag()==0)

file.write((char *)&book[i],sizeof(book[i]));

file.close();

}

};

void BDatabase::bookdata()

{

char choice3;

char bname[40];//书名

char auname[40];//作者名

char bfenlei[40];//分类号

char cname[40];//出版社

int time;//出版时间

double price;//价格

char ch;

int choice4;

int bookid;

int bookod;

Book *b;

while (choice3!='0')

{

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cin>>choice3;

switch(choice3)

{

case '1':

cout<

cin>>bookid;

b=query1(bookid);

if(b!=NULL)

{

cout<

break;

}

cout<

cin>>bname;

cout<

cin>>auname;

cout<

cin>>bfenlei;

cout<

cin>>cname;

cout<

cin>>time;

cout<

cin>>price;

cout<

cin>>bookod;

addbook(bookid,bname,auname,bfenlei,cname,time,price,bookod);

char choice2;

{

cout<

cout<

cout<

cout<

cin>>choice2;

switch(choice2)

{

case '1':

cout<

break;

case '0':

break;

}

}

getch();

break;

case '2':

cout<

cin>>bookid;

b=query1(bookid);

if(b==NULL)

{

cout<

break;

}

cout<

cout<

b->disp();

cout<

cin>>ch;

if(ch=='y'||ch=='Y')

{int a;

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cin>>a;

switch(a)

{

case 1: cout<

cin>>bname; b->setname(bname); break;

case 2: cout<

cin>>auname; b->setauthorname(auname); break;

case 3: cout<

cin>>bfenlei; b->setfenlei(bfenlei); break;

case 4: cout<

cin>>cname; b->setcbs(cname); break;

case 5: cout<

cin>>time;b->setcbtime(time); break;

case 6: cout<

cin>>price; b->setbookprice(price); break;

case 7: cout<

cin>>bookod; b->setonshelf(bookod); break;

case 0: break;

}

}

cout<

getch();

break;

case '3':

cout<

cin>>bookid;

b=query1(bookid);

if(b==NULL)

{

cout<

break;

}

b->delbook();

cout<

getch();

break;

case '4':

cout<

cout<

cout<

cout<

cout<

cout<

cin>>choice4;

switch(choice4)

{

case 1:

cout<

cin>>bookid;

b=query1(bookid);

if(b==NULL)

{

cout<

break;

}

cout<

b->disp();

break;

case 2:

cout<

cin>>bname;

b=query2(bname);

break;

case 3:

cout<

cin>>auname;

b=query3(auname);

break;

case 4:

cout<

cin>>cname;

b=query4(cname);

break;

case 0:

break;

}

break;

case '5':

cout<

disp();

getch();

break;

case '6':

clear();

break;

default:

break;

}

}

}

class Reader

{//读者的信息描述

private:

int tag; //删除标记 1表示已删 0表示未删

int no; //读者编号

char name[20]; //读者姓名

int borbook[Maxbor]; //所借图书

public:

Reader() //构造函数

{ ; }

friend ostream &operator<

{output<

output<

output<

return output;}

char *getname()

{//获取姓名

return name;

}

int gettag()

{//获取删除标记

return tag;

}

int getno()

{//获取读者编号

return no;

}

void setname(char na[])

{//设置姓名

strcpy(name,na);

}

void delbook()

{//设置删除标记 1:已删 0:未删

char i;

cout<

cin>>i;

if(i=='y'||i=='Y')

tag=1;

}

void addreader(int n,char *na)

{//增加读者

tag=0;

no=n;

strcpy(name,na);

for(int i=0;i

borbook[i]=0;

}

void borrowbook(int bookid)

{//借书操作

for(int i=0;i

{

if (borbook[i]==0)

{

borbook[i]=bookid;

return ;

}

}

}

int retbook(int bookid)

{//还书操作

for(int i=0;i

{

if(borbook[i]==bookid)

{

borbook[i]=0;

cout<

return 1;

}

}

cout<

return 0;

}

void disp()

{//读出读者信息

int have=0;

int bz=0;

cout<

for(int i=0;i

if(borbook[i]!=0)

{

if(bz==0)

{

have=1;

cout<

bz++;

}

else

{

cout<

}

}

if(have==0)

cout<

}

};

class RDatabase

{//读者类库,实现建立读者的个人资料

private:

int top; //读者记录指针

Reader read[Maxr]; //读者记录

public:

RDatabase()

{//构造函数,将reader.txt读到read[]中

Reader s;

top=-1;

fstream file("reader.txt",ios::in); //打开一个输入文件

while (1)

{

file.read((char *)&s,sizeof(s));

if (!file)

break;

top++;

read[top]=s;

}

file.close(); //关闭 reader.txt 文件

}

void clear()

{//删除所有读者信息

char i;

cout<

cin>>i;

if(i=='y'||i=='Y')

top=-1;

}

int addreader(int n,char *na)

{//添加读者时先查找是否存在

Reader *p=queryid(n);

if (p==NULL)

{

top++;

read[top].addreader(n,na);

return 1;

}

else

cout<

return 0;

}

Reader *queryid(int readerid)

{//按读者编号查找

for (int i=0;i<=top;i++)

if (read[i].getno()==readerid&&read[i].gettag()==0)

{

return &read[i];

}

return NULL;

}

Reader *queryname(char readername[10])

{//按读者姓名查找

for (int i=0;i<=top;i++)

if (strcmp(read[i].getname(),readername)==0 && read[i].gettag()==0)

{

return &read[i];

}

return NULL;

}

void disp()

{//输出所有读者信息

for(int i=0;i<=top;i++)

if (read[i].gettag()==0)

read[i].disp();

}

void readerdata(); //读者库信息

~RDatabase()

{//析构函数,将read[]写到reader.txt文件中

fstream file("reader.txt",ios::out);

for (int i=0;i<=top;i++)

if (read[i].gettag()==0)

file.write((char *)&read[i],sizeof(read[i]));

file.close();

}

};

void RDatabase::readerdata()

{

char choice1;

char rname[20];

int readerid;

char readername[10];

int choice2;

Reader *r;

while(choice1!='0')

{

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cin>>choice1;

switch(choice1)

{

case '1':

cout<

cin>>readerid;

cout<

cin>>rname;

addreader(readerid,rname);

cout<

getch();

break;

case '2':

cout<

cin>>readerid;

r=queryid(readerid);

if(r==NULL)

{

cout<

break;

}

cout<

cin>>rname;

r->setname(rname);

cout<

getch();

break;

case '3':

cout<

cin>>readerid;

r=queryid(readerid);

if(r==NULL)

{

cout<

break;

}

r->delbook();

cout<

getch();

break;

case '4':

cout<

cout<

cout<

cout<

cin>>choice2;

switch(choice2)

{

case 1:

cout<

cin>>readerid;

r=queryid(readerid);

if(r==NULL)

{

cout<

break;

}

cout<

r->disp();

break;

case 2:

cout<

cin>>readername;

r=queryname(readername);

if(r==NULL)

{

cout<

break;

}

cout<

r->disp();

break;

case 0:

break;

}

break;

case '5':

cout<

disp();

getch();

break;

case '6':

clear();

break;

default:

break;

}

}

}

class maindesk //实现程序的主界面

{

char choice5;

char choice2;

double xh,mm;

int bookid,readerid;

RDatabase ReaderDB;

Reader *r;

BDatabase BookDB;

Book *b;

public:

maindesk() {;}

int denglu()

{

int k=0;

cout<

cout<

while(choice2!='0')

{ ++k;

cout<

cout<

cout<

cin>>choice2;

switch (choice2)

{

case '1':

cout<

cin>>xh>>mm;

if((xh>=138325039)&&(xh<=138325039)&&(xh==mm))

{

cout<

enterdesk();

}

if((xh<138325039)||(xh>138325039)||(xh!=mm))

{cout<

if(k>=3)

{

cout<

return 1;

}

continue;

}

break;

case '0':

break;}

return 1;

}

return 0;

}

void enterdesk()

{

while(choice5!='0')

{

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cin>>choice5;

switch (choice5)

{

case '1':

BookDB.bookdata();

break;

case '2':

ReaderDB.readerdata();

break;

case '3':

cout<

cout<

cin>>readerid;

r=ReaderDB.queryid(readerid);

if(NULL==r)

{//按编号查找是否有该读者

cout<

break;

}

cout<

cin>>bookid;

b=BookDB.query1(bookid);

if(b==NULL)

{//按编号查找是否有该图书

cout<

break;

}

if(b->borrowbook()==0)

{

cout<

break;

}

cout<

r->borrowbook(b->getno());

break;

case '4':

cout<

cout<

cin>>readerid;

r=ReaderDB.queryid(readerid);

if(r==NULL)

{

cout<

break;

}

cout<

cin>>bookid;

b=BookDB.query1(bookid);

if(b==NULL)

{

cout<

break;

}

b->retbook();

r->retbook(b->getno());

break;

case '0':

break;

default:

break;

}

}

}

};

void main() //主函数

{

maindesk yourDesk;

if(yourDesk.denglu())

cout<

}

运行效果图:

e2da1770f6b4fd66be780e2dd097675a.png

关于管理系统的更多内容请点击《管理系统专题》进行学习

以上就是本文的全部内容,希望大家可以喜欢,抓紧动手实现吧

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值