• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++实现简单的图书管理系统

C++实现简单的图书管理系统

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++图书管理系统,图书管理系统c++代码,c++图书馆管理系统,java实现图书管理系统,图书管理系统的实现等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:
(1)图书信息录入功能(图书信息用文件保存)
(2)图书信息浏览功能
(3)查询和排序功能:(至少一种查询方式)
        .按书名查询
        .按作者名查询
(4)图书信息的删除与修改

分享代码如下

#include<iostream.h>
#include<conio.h> //控制台数据输入输出的函数
#include<fstream.h>//文件流
#include<iomanip.h> //控制数据输出格式
#include<string.h>

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<<"确定删除吗?Y/N ?"<<endl;
 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<<setw(3)<<no<<setw(10)<<name<<setw(10)<<author<<setw(10)<<fenlei<<setw(15)<<cbs<<setw(10)<<cbtime<<setw(10)<<bookprice<<setw(10)<<onshelf<<endl; 
} 
}; 


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<<"确定全部删除吗?Y/N ?"<<endl;
 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<<setw(3)<<"编号"<<setw(10)<<"书名"<<setw(10)<<"作者"<<setw(10)<<"分类号"<<setw(15)<<"出版社"<<setw(10)<<"出版时间"<<setw(10)<<"图书价格"<<setw(10)<<"存量"<<endl;
   e=&book[i];
   e->disp();
   r++; 
  } 
  if(r==0)
   cout<<"找不到该书!"<<endl;
   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<<setw(3)<<"编号"<<setw(10)<<"书名"<<setw(10)<<"作者"<<setw(10)<<"分类号"<<setw(15)<<"出版社"<<setw(10)<<"出版时间"<<setw(10)<<"图书价格"<<setw(10)<<"存量"<<endl;
    e=&book[i];
   e->disp();
   r++; 
  } 
  if(r==0)
   cout<<"找不到该书!"<<endl;
   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<<setw(3)<<"编号"<<setw(10)<<"书名"<<setw(10)<<"作者"<<setw(10)<<"分类号"<<setw(15)<<"出版社"<<setw(10)<<"出版时间"<<setw(10)<<"图书价格"<<setw(10)<<"存量"<<endl;
   e=&book[i];
   e->disp();
   r++; 
  }
  if(r==0)
   cout<<"找不到该书!"<<endl;
   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<<"\n\t\t\t**  图 书 信 息 **\n"<<endl; 
  cout<<"\t\t\t** 1.新    增 **"<<endl;
  cout<<"\t\t\t** 2.更    改 **"<<endl;
  cout<<"\t\t\t** 3.删    除 **"<<endl;
  cout<<"\t\t\t** 4.查    找 **"<<endl;
  cout<<"\t\t\t** 5.显    示 **"<<endl;
  cout<<"\t\t\t** 6.全    删 **"<<endl;
  cout<<"\t\t\t** 0.返    回 **"<<endl; 
  cout<<"\t\t\t 请选择:";
  cin>>choice3; 
  switch(choice3) 
  { 
  case '1': 
  cout<<"请输入新书编号:"; 
  cin>>bookid;
 
  b=query1(bookid); 
  if(b!=NULL) 
  { 
   cout<<"该编号已经存在,不能添加!"<<endl;
   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<<"\n\t\t\t** 是 否 保 存 Y/N ?**\n"<<endl;
  cout<<"\t\t\t** 1. Y 保  存 **"<<endl;
  cout<<"\t\t\t** 0. N 不  保  存 **"<<endl;
 cout<<"\t\t\t 请 选 择: ";
cin>>choice2;
switch(choice2)
{
case '1':

  
 cout<<"添加图书成功!";
 
 break;
case '0':
 
 break;
}
 }
 getch(); 
  break; 
 



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++实现简单的图书管理系统

相关文章

  • 2017-05-28深入探讨C语言中局部变量与全局变量在内存中的存放位置
  • 2017-05-28C++中的哈希容器unordered_map使用示例
  • 2017-05-28浅析C语言中的setjmp与longjmp函数
  • 2017-05-28C语言中字符的输入输出以及计算字符个数的方法详解
  • 2017-05-28C语言堆栈入门指南
  • 2017-05-28c语言中static和extern的用法详细解析
  • 2017-05-28C++删除链表中间节点的方法
  • 2017-05-28C/C++: Inline function, calloc 对比 malloc
  • 2017-05-28北邮考研复试C语言上机题目精选
  • 2017-05-28C++中四种对象生存期和作用域以及static的用法总结分析

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言双向链表的表示与实现实例详解
    • C++ vector的用法小结
    • VC实现获取当前正在运行的进程
    • c++基础语法:构造函数与析构函数
    • OnSize、OnSizing和OnGetMinMaxInfo区别分析
    • vector与map的erase()函数详细解析
    • 使用C++绘制GDI位图的基本编写实例
    • 解析C++中虚析构函数的作用
    • bloom filter概念讲解以及代码分析
    • 数据结构 数组顺序存储详细介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有