尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
基于C++语言实现图书管理系统
代码功能分析该程序是一个简单的图书管理系统基于C实现采用结构体数组存储图书信息支持添加、删除、查找、清空、修改和显示图书功能。以下是核心模块的说明和优化建议关键功能模块数据结构Person结构体存储单本图书信息书名、价格、编号。Arraybooks结构体管理图书数组包含最大容量MAX和当前数量length。功能函数addBooks: 添加新图书检查数组是否已满。dalateBooks: 按书名删除图书移动后续元素覆盖被删项。isExist: 检查书名是否存在返回索引或-1。CheckBook: 按书名查找并输出图书信息。cleanbooks: 清空图书数组重置length。changebooks: 按书名修改图书信息。showbooks: 遍历输出所有图书信息。交互逻辑main函数通过while循环和switch实现菜单驱动。mean函数打印功能菜单。代码实现#include iostream#include stringusing namespace std;#define MAX 1000struct 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;}
RELATED

相关推荐

什么是Go语言突变测试?go-mutesting让你的测试质量提升300%的终极指南

什么是Go语言突变测试?go-mutesting让你的测试质量提升300%的终极指南

什么是Go语言突变测试?go-mutesting让你的测试质量提升300%的终极指南 【免费下载链接】go-mutesting Mutation testing for Go source code 项目地址: https://gitcode.com/gh_mirrors/go/go-mutesting Go语言突变测试(Mutation Testing&#xf…

📅 2026/10/8 15:01:25
HandheldCompanion 完全攻略:一款免费工具,快速解决 Windows 掌机的控制器兼容与体感控制难题

HandheldCompanion 完全攻略:一款免费工具,快速解决 Windows 掌机的控制器兼容与体感控制难题

HandheldCompanion 完全攻略:一款免费工具,快速解决 Windows 掌机的控制器兼容与体感控制难题 【免费下载链接】HandheldCompanion A touch optimized GUI to increase your handheld gaming computer experience. 项目地址: https://gitcode.com/gh_m…

📅 2026/9/10 10:48:29
ElasticReconstruction开发者必备:核心算法详解与代码架构分析

ElasticReconstruction开发者必备:核心算法详解与代码架构分析

ElasticReconstruction开发者必备:核心算法详解与代码架构分析 【免费下载链接】ElasticReconstruction 3D reconstruction system to creating detailed scene geometry from range video. 项目地址: https://gitcode.com/gh_mirrors/el/ElasticReconstruction …

📅 2026/10/5 13:05:39
MORE NEWS

更多资讯

📰

网络游戏术语中英对照表:分类、译法与实操整理指南

1. 为什么需要一份中英对照的网络游戏术语表做游戏本地化、海外发行或者跨国公会管理的人,大概都经历过这种场面:一场团战打到关键阶段,队友在语音里喊“focus the healer”,你脑子里先翻译成“集火治疗”,再想“治疗是…

📰

VLA 系统学习第 15 课:为什么一个 Attention Head 还不够?——Multi-Head Attention 与 Transformer Block

第十四课标准答案先把上一课的 12 道题收掉,再把一些常见问题凝练成一段,给出问题与答案,最后进入第 15 课。1. Q、K、V 分别怎么理解?最适合当前阶段的理解是:\[ Q\text{我想找什么} \]\[ K\text{我拿什么和你进行匹配…

📰

超融合与vSAN实战:从硬件选型到故障排查的运维笔记

1. 从一个机柜说起:为什么我开始啃超融合三年前我还在用传统三层架构维护一个中小规模的虚拟化集群,三台服务器加一台磁盘阵列,外加两台光纤交换机。每次扩容都像做一场外科手术:先算控制器端口够不够,再算阵列的IOPS余…

📰

Bustub 个人实现源码解析:从编译到查询执行的完整工程实践

简介:本资源为CMU-15445数据库系统课程Bustub项目的个人实现源码,面向正在学习数据库系统原理、希望深入理解DBMS内部机制的高校学生与开发者。项目围绕存储管理、查询优化、事务处理等核心议题展开,适合作为课程实践参考与个人技术能力展示。…

📰

Java Future超时与取消机制详解:避免线程泄漏与雪崩

1. 从一个线上事故说起:为什么超时和取消这么重要前阵子帮一个朋友排查他们系统里的一个诡异问题:某个订单查询接口,平时响应两百毫秒,偶尔会卡住十几秒,最后抛出一堆超时异常,但下游服务的监控指标却一切正…

📰

IntelliJ IDEA 插件开发实战:从环境搭建到 PSI 操作与避坑指南

简介:这份《IntelliJ Platform Plugin 开发指导手册》面向 Java 开发者与 IDE 插件爱好者,帮助读者从零起步掌握 IntelliJ IDEA 插件开发,并逐步进阶到语言类高级插件。手册由上册、下册与附录三份独立文档组成,内容划分为四部分&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬