1、系统需求

图书管理系统是一个可以记录图书借记和存储的工具。

本教程主要利用C++来实现一个图书管理系统

系统中需要实现的功能如下:

添加书籍:向图书管理系统中添加新书,信息包括(书名、书的价格、书的编号)最多记录1000本

显示书籍:显示图书的所有书籍信息

书籍删除:按照书名进行删除指定书籍

查找书籍:按照姓名查看指定书籍信息

修改书籍:按照姓名重新修改指定书籍

清空书架:清空书架中所有信息

退出图书管理系统:退出当前使用的系统

2、菜单功能

功能描述:用户选择功能的界面

步骤:

封装函数显示该界面,如:void menu()

在main函数中调用封装好的函数

void mean(){cout << "*************************" << endl;cout << "*******1、加入图书********" << endl; //OKcout << "*******2、按名删除图书*****" << endl;//OKcout << "*******3、按名查找图书*****" << endl;//OKcout << "*******4、清空图书架*******" << endl;//OKcout << "*******5、修改图书名*******" << endl;cout << "*******6、显示图书架*******" << endl;//OKcout << "*******0、退出系统*********" << endl; //OKcout << "**************************" << endl;}

3、退出功能

功能描述:退出通讯录系统

思路:根据用户不同的选择,进入不同的功能,可以选择switch分支结构,将整个架构进行搭建

当用户选择0的时候,执行退出,选择其他先不做操作,也不会退出程序

int outSystem(){cout << "欢迎下次使用" << endl;return 0;
}

4、添加联系人

功能描述:

实现添加书籍功能,书籍上限为1000人,联系人信息包括(书籍名称、书籍价格、书籍编号)

添加书籍实现步骤:

设计图书系统结构体

设计图书系统结构体

main函数中创建系统

封装添加书籍函数

测试添加图书功能

4.1 设计书籍结构体

书籍信息包括:书籍姓名、书籍价格、书籍编号

void addBooks(Arraybooks *abs){if(abs->length >= MAX){cout << "书籍已满" << endl;}else {string name;cout << "请输入书籍的名字: " << endl;cin >> name;abs->book[abs->length].name = name;int price;cout << "请输入书的价格: " << endl;cin >> price;abs->book[abs->length].price = price;string num;cout << "请输入书的编号: " << endl;cin >> num;abs->book[abs->length].number = num;abs->length++;cout << "添加成功" << endl;}}

5、显示书籍

功能描述:显示图书系统中已有的书籍信息

显示图书实现步骤:

封装显示图书函数

测试显示图书功能

void showbooks(Arraybooks*abs){if(abs->length == 0){cout << "书架为空"<< endl;}else{for (int i = 0; i < abs->length; ++i) {cout << "书籍名字 : " <<abs->book[i].name << "\t";cout << "书籍价格 : " <<abs->book[i].price << "\t";cout << "书籍编号 : " << abs->book[i].number <<endl;}}
}

6、删除图书

实现步骤:

1、封装检测图书是否存在

2、封装删除图书函数

3、测试删除图书功能

6.1 封装检测图书是否存在

设计思路:

删除图书前,我们需要先判断图书是否存在,如果存在删除,不存在提示图书系统没有要删除的书籍,因此我们可以把检测联系人是否存在封装成一个函数中,如果存在,返回联系人在图书系统中的位置,不存在返回-1。

int isExist(Arraybooks *abs , string name){for (int i = 0; i < abs->length; ++i) {if(abs->book[i].name == name){return i;}}return -1;
}

6.2 封装删除图书函数

根据用户输入的图书名判断该系统中是否有此书

查找到进行删除,并提示删除成功

查不到提示查无此书

void dalateBooks(Arraybooks* abs) {cout << "请输入你要删除的书籍" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret != -1 && ret != abs->length - 1) {abs->book[ret].name     = abs->book[ret + 1].name;abs->book[ret].number   = abs->book[ret + 1].number;abs->book[ret].price    = abs->book[ret + 1].price;for (int i = ret + 2; i < abs->length; ++i) {abs->book[i - 1].name   = abs->book[i].name;abs->book[i - 1].number = abs->book[i].number;abs->book[i - 1].price  = abs->book[i].price;abs->length--;}cout << "删除成功" << endl;}else if(ret != 1 && ret == abs->length - 1) {abs->length--;}else {cout << "查无此书" << endl;}
}

7、查找书籍

功能描述:按照姓名查看指定书籍信息

查找书籍实现步骤

1、封装查找书籍函数

2、测试查找指定书籍

7.1 封装查找书籍函数

实现思路:判断用户指定的书籍是否存在,如果存在显示信息,不存在则提示查无此书。

void CheckBook(Arraybooks * abs){cout << "输入你要查找的书籍"  << endl;string name;cin >> name;int ret = isExist(abs , name);if(ret != -1){cout << "书名为:" << abs->book[ret].name << "\t";cout << "书价格为:" << abs->book[ret].price << "\t";cout << "书编号为:" << abs->book[ret].number << endl;}else{cout << "查无此书" << endl;}
}

8、修改书籍

功能描述:按照姓名重新修改指定书籍

修改书籍实现步骤

1、封装修改书籍函数

2、测试修改书籍功能

8.1 封装修改书籍函数

实现思路:查找用户输入的书籍,如果查找成功进行修改操作,查找失败提示查无此书。

void changebooks(Arraybooks * abs){cout << "输入你要修改的图书" << endl;string name;cin >> name;int ret = isExist(abs , name);if(ret != -1){cout << "请输入名字: " << endl;string name;cin >> name;abs->book[ret].name = name;cout << "请输入价格: " << endl;int price;cin >> price;abs->book[ret].price = price;cout << "请输入编号: " << endl;string num;cin >> num;abs->book[ret].number = num;}else{cout << "查无此书" << endl;}}

9、清空书籍

功能描述:清空书籍中所有信息

清空书籍实现步骤

1、封装清空书籍函数

2、测试清空书籍

9.1封装清空书籍函数

实现思路:将书籍所有书籍信息清楚掉,只要将图书管理系统记录的书籍数量置为0,做逻辑清空即可。

void cleanbooks(Arraybooks * abs){abs->length = 0;cout << "清理完成" << endl;}

完整代码

#include <iostream>
#include <string>using namespace std;
#define MAX 1000
struct Person {string name;int price;string number;
};struct Arraybooks {struct Person book[MAX];int length;
};void mean();
int outSystem();
void addBooks(Arraybooks* abs);
void dalateBooks(Arraybooks* abs);
int isExist(Arraybooks* abs, string name);
void CheckBook(Arraybooks* abs);
void cleanbooks(Arraybooks* abs);
void showbooks(Arraybooks* abs);
void changebooks(Arraybooks* abs);int main() {int x;Arraybooks abs;abs.length = 0;while (true) {mean();cin >> x;switch (x) {case 1:addBooks(&abs);break;case 2:dalateBooks(&abs);break;case 3:CheckBook(&abs);break;case 4:cleanbooks(&abs);break;case 5:changebooks(&abs);break;case 6:showbooks(&abs);break;case 0:outSystem();break;}}return 0;
}
void addBooks(Arraybooks* abs) {if (abs->length >= MAX) {cout << "书籍已满" << endl;}else {string name;cout << "请输入书籍的名字: " << endl;cin >> name;abs->book[abs->length].name = name;int price;cout << "请输入书的价格: " << endl;cin >> price;abs->book[abs->length].price = price;string num;cout << "请输入书的编号: " << endl;cin >> num;abs->book[abs->length].number = num;abs->length++;cout << "添加成功" << endl;}
}int isExist(Arraybooks* abs, string name) {for (int i = 0; i < abs->length; ++i) {if (abs->book[i].name == name) {return i;}}return -1;
}void dalateBooks(Arraybooks* abs) {cout << "请输入你要删除的书籍" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret != -1 && ret != abs->length - 1) {abs->book[ret].name     = abs->book[ret + 1].name;abs->book[ret].number   = abs->book[ret + 1].number;abs->book[ret].price    = abs->book[ret + 1].price;for (int i = ret + 2; i < abs->length; ++i) {abs->book[i - 1].name   = abs->book[i].name;abs->book[i - 1].number = abs->book[i].number;abs->book[i - 1].price  = abs->book[i].price;abs->length--;}cout << "删除成功" << endl;}else if(ret != 1 && ret == abs->length - 1) {abs->length--;}else {cout << "查无此书" << endl;}
}void CheckBook(Arraybooks* abs) {cout << "输入你要查找的书籍" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret != -1) {cout << "书名为:" << abs->book[ret].name << "\t";cout << "书价格为:" << abs->book[ret].price << "\t";cout << "书编号为:" << abs->book[ret].number << endl;}else {cout << "查无此书" << endl;}
}void cleanbooks(Arraybooks* abs) {abs->length = 0;cout << "清理完成" << endl;}void changebooks(Arraybooks* abs) {cout << "输入你要修改的图书" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret != -1) {cout << "请输入名字: " << endl;string name;cin >> name;abs->book[ret].name = name;cout << "请输入价格: " << endl;int price;cin >> price;abs->book[ret].price = price;cout << "请输入编号: " << endl;string num;cin >> num;abs->book[ret].number = num;}else {cout << "查无此书" << endl;}}void showbooks(Arraybooks* abs) {if (abs->length == 0) {cout << "书架为空" << endl;}else {for (int i = 0; i < abs->length; ++i) {cout << "书籍名字 : " << abs->book[i].name << "\t";cout << "书籍价格 : " << abs->book[i].price << "\t";cout << "书籍编号 : " << abs->book[i].number << endl;}}
}int outSystem() {cout << "欢迎下次使用" << endl;return 0;
}void mean() {cout << "*************************" << endl;cout << "*******1、加入图书********" << endl; //OKcout << "*******2、按名删除图书*****" << endl;//OKcout << "*******3、按名查找图书*****" << endl;//OKcout << "*******4、清空图书架*******" << endl;//OKcout << "*******5、修改图书名*******" << endl;cout << "*******6、显示图书架*******" << endl;//OKcout << "*******0、退出系统*********" << endl; //OKcout << "**************************" << endl;}

C++图书管理系统(简单版)相关推荐

  1. python实现图书管理系统(简单版)

    简单实现图书管理系统 类和面向对象编程 """ 小钟图书管理系统 1. 查询 2. 增加 3. 借阅 4. 归还 5. 退出 """ cla ...

  2. 自制小型图书管理系统 - 简单版(锻炼java基础语法的使用)

    文章目录 前言 1. 小型图书管理系统框架思想 2. 实现框架 2.1 构建书架:存放书籍 2.2 使用者的构建 - user 2.3 主函数构建 - Main 2.4 操作的构建 - operate ...

  3. 基于java SSM图书管理系统简单版设计和实现

    本项目演示链接地址 > 主要技术:后台采用技术: SSM框架(SpringMVC + Spring + Mybatis) 前台采用技术: div + css 功能比较简单.适合学习使用 主要功能 ...

  4. 【JavaEE】图书管理系统-简易版

    文章目录 book包 Book类 BookList类 operation包 AddOperation 类 BorrowOperation 类 DelOperation类 DisplayOperatio ...

  5. java图书管理系统目的_java_图书管理系统java版,本文的目的就是通过图书管理 - phpStudy...

    图书管理系统java版 本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出 ...

  6. php+mysql实现简单的图书管理系统(简单的数据库操作)

    php+mysql实现简单的图书管理系统 ps:前端页面设计得有点丑,将就着用,哈哈哈.不具备用户和管理员功能,如要实现只需将首页的功能根据数据库中账号信息选择性使用就可以了.数据库关系设计什么的完全 ...

  7. 图书管理系统(简易版)

    目录 一.该图书管理系统涉及Java的知识点 二.该图书管理系统包含的功能 一.该图书管理系统涉及Java的知识点,如下: 数组的增删查 抽象类 接口 面向对象的封装.继承和多态 二.该图书管理系统包 ...

  8. java出版社系统_图书管理系统java版

    本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出版日期.书号.价格字段. ...

  9. 手撸图书管理系统!(java版)

    废话少说,上代码!!! 先写一个图书类.(我一般称这个类有手就行) package homework.test5;public class Book {private String booklist; ...

  10. ASP.NET图书管理系统简单实现步骤

    一.数据库添加 1.用户信息 2.图书信息表 3.图书借阅信息表 二.版本页面 vs2010+sqlserver2008 三.实现功能 1. 用户注册登录 2. 两种身份:管理员和读者 3. 读者能够 ...

最新文章

  1. xmemcached发布1.3.6
  2. python redis_Python操作Redis大全
  3. pascal--生成Pascal矩阵
  4. redis 事务,持久化,日志,主从,VM
  5. MySQL - InnoDB特性 - Buffer Pool漫谈
  6. python 导入的nan怎么解决_用Python处理了数据还要导入Excel做图表?直接Python做漂亮图表...
  7. JS+XMLDOM+XSL:实现中英文界面切换、排序、分页显示、增删改查XML文件数据源
  8. php无极分类非递归_PHP中的无限级分类、无限嵌套评论
  9. vnpy 量化交易系统 源码分析 v0.01
  10. 聚来宝获商务部《媒体购物国家标准》制订单位 【2012-12-22 17:04:20】【来源:京华网】【字体:大 中 小】【颜色:红 绿 蓝 黑】【分享新闻】
  11. 杭电oj部分新手入门题目全解(1089-1096)
  12. CMSIS-RTOS相关的一些内容
  13. 怎么做扁平化ps图标长投影效果
  14. Java(实验四)Java标准类库-将一个字符串中的小写字母变成大写字母,并将大写字母变成小写字母
  15. 计算机IPv4升级到IPv6的技术,IPv4到IPv6的变化
  16. win7电脑无线网变身WiFi热点,让手机、笔记本共享上网
  17. 360极速浏览器2013 v7.5.3.202 官方版
  18. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少(计算30个月的)?
  19. ![CDATA[]]和转义字符
  20. 大神嵌入式linux系统的路径规划与经验分享(干货满满)

热门文章

  1. kubernetes 曲线救国式下载 kubeadm 1.21 相关镜像
  2. 数字宫殿方法记忆设计模式
  3. Do not use built-in or reserved HTML elements as compo
  4. 我对于互联网发展的看法和一些理解
  5. SAP中实现所见即所得的打印功能操作方法
  6. ReplicaSet、DaemonSet
  7. 【问题解决】KeyError: ‘profit‘ raise KeyError(key) from err
  8. Data Whale第20期组队学习 Pandas学习—第一次综合练习
  9. 个人日记-电影《夏日友晴天》观后感-2021-08-25
  10. c++ 数据结构 软件压缩/解压缩软件Szip(Huffman算法及应用)