课程设计要求:

编制图书信息管理系统,实现如下功能:插入图书(-i)、查找图书(-f)、删除图书(-d)、显示图书(-s)。

要求:

1. 图书信息包括:书名、作者、出版年份、出版社;

2. 显示图书时按照出版年份由近到远显示;

3. 查找图书和删除图书的输入为完整书名或是部分书名;

4. 插入图书的命令代码-i;查找图书的命令代码-f;删除图书的命令代码-d;显示图书的命令代码为-s;

5. 使用容器类和库算法完成编制。

思路:图书信息可以用结构体来存储,一本书就是一个结构体变量,然后用容器嵌套结构体来存储很多本图书,显示的图示年份由近及远这是个典型的排序算法,再本程序中使用排序算法,总体来说其实就是对图书的增删改查,还是很简单的,可以创建一个booker类来作为管理图书的管理远。

图书管理员有查找图书、插入图书、删除图书、显示图书的权利,可以作为类的成员函数,参数为操作的图书容器类,和要操作的相应图书。

类的具体的代码如下:

class booker
{
public:void Insert_book(vector<initbook>&books,string book_name,string writer,date Date,string publisher);void search_book(string book_name,vector<initbook>&booklist);void editor_book(string book_name, vector<initbook>& booklist);void delete_book(string book_name, vector<initbook>&booklist2);void show_book();int getdata() { return book_nummber; }void print_All_books(vector<initbook>&book);protected:private:int book_nummber = 0;
};

相应的函数实现如下:

void booker::Insert_book(vector<initbook>&books,string book_name, string writer, date Date, string publisher)
{initbook* s = new initbook;s->bookName = book_name;s->Writer = writer;s->Date = Date;s->publisher = publisher;books.push_back(*s);}
void booker::delete_book(string book_name,vector<initbook>&booklist2)
{for (vector<initbook>::iterator id=booklist2.begin();id<booklist2.end();id++){if ((*id).bookName == book_name){booklist2.erase(id);break;//删除以后id已失效要及时跳出循环}}
}
void booker::search_book(string book_name,vector<initbook>&booklist)
{for (vector<initbook>::iterator id = booklist.begin(); id < booklist.end(); id++){if ((*id).bookName == book_name){cout << "已成功找到图书:" << endl;cout << (*id).bookName << endl;cout << (*id).Writer << endl;cout << (*id).Date.day << "-" << (*id).Date.month << "-" << (*id).Date.day << endl;cout << (*id).publisher << endl;break;//找到后直接跳出for}}
}
void booker::editor_book(string book_name, vector<initbook>& booklist)
{string writer;string publisher;for (vector<initbook>::iterator id = booklist.begin(); id < booklist.end(); id++){if ((*id).bookName == book_name){cout << "请输入新的作者名" << endl;cin >> writer;cout << "请输入新的出版商" << endl;cin >> publisher;(*id).Writer = writer;(*id).publisher = publisher;}}
}void booker::print_All_books(vector<initbook>&book)
{int min;for (int i = 0; i < book.size() - 1; i++){min = i;for (int j = i + 1; j < book.size(); j++){if (book[j].Date.year < book[min].Date.year||(book[j].Date.year==book[min].Date.year&&book[j].Date.month<book[min].Date.month)){min = j;}}if (i != min){initbook temp = book[i];book[i] = book[min];book[min] = temp;}}for (vector<initbook>::iterator id = book.begin(); id < book.end(); id++){cout <<"书籍名称:"<< (*id).bookName << endl;cout << "书籍作者:"<<(*id).Writer << endl;cout <<"出版日期:"<< (*id).Date.day << "-" << (*id).Date.month << "-" << (*id).Date.day << endl;cout << "出版社:"<<(*id).publisher << endl;}
}

主函数:注意这里面的get_data,等是相应的对书籍的操作,为了让switch语句看起来比较整洁简单所以用了函数,参数为booker类和图书容器,在函数中调用booker类的方法对图书进行操作。这部分很简单的,就自己实现把~

int main()
{booker liberian;vector<initbook>booklist;while (1){menu();cout << "请输入你要的操作:" << endl;char a;cin >> a;switch (a){case 'i':get_data(&liberian,booklist);break; case 'f':search_data(&liberian, booklist);break;case 'd':delete_data(&liberian, booklist);break;case 's':show_data(&liberian, booklist);break;case 'k':editor_book(&liberian, booklist);break;case 'l':cout << "欢迎下次使用" << endl;system("pause");return 0;break;}}return 0;
}

c++课程设计图书管理系统相关推荐

  1. oracle课程设计图书销售系统,oracle课程设计图书管理系统

    oracle课程设计图书管理系统 数据库课程设计 设计名称:图书管理系统 组员:尚靖伟(122068) 张红凯(122072) 班级:计 G121 班信息工程学院计算机系 2013 年 6 月 27 ...

  2. c语言课程设计图书管理系统

    数据结构c语言课程设计 图书管理系统 我做的是百度文库的第28题,目前没有报错,正常运行,但是还有一点小bug.代码很多地方写的不是很好,请多多包涵. 账号1,密码1,为管理员账号:其他账号2,3,4 ...

  3. C#课程设计-图书管理系统

    C#课程设计-图书管理系统 前言 一.课设任务是什么? 二.使用工具及软件环境 三.系统功能介绍及部分代码展示 3.1 登陆界面及主要代码 3.2 图书管理 3.3 修改书籍页面视图及主要代码 四.使 ...

  4. RFID课程设计-图书管理系统用户端设计

    RFID课程设计-图书管理系统用户端设计课程设计题目课程设计任务内容题目设计基本原理NFC开发概述标签调度系统如何将 NFC 标签映射到 MIME 类型和 URI如何将 NFC 标签分发到应用在 An ...

  5. Python课程设计-图书管理系统

    Python课程设计-图书管理系统 摘要 第一章 绪论 1.1 开发环境及技术 1.2 系统实现功能描述 第二章 功能详细设计与实现 2.1 系统框架各层次实现 2.1.1 可视页面设计 2 数据库设 ...

  6. C语言课程设计-图书管理系统

    实训项目名称:图书管理系统的设计与实现 1.实训目的 开发一个小型的图书管理应用软件,使用该软件可以实现图书信息的登记.浏览.借书.还书.删除和更新等操作.通过该系统的实现可以了解C++连接数据库的原 ...

  7. C++软件技术与编程课程设计-图书管理系统

    目录 设计要求 程序流图 代码部分 book.h book.cpp staff.h staff.cpp draw.h draw.cpp main.cpp readme.md 效果图 设计要求 利用c+ ...

  8. C语言课程设计—图书管理系统

    这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中居然在QQ网络硬盘中找到了当初的teta版,公布于此,以作纪念. C源码例如以下: #include<std ...

  9. 图书管理系统C语言程序设计课程,vs c语言图书管理平台课程设计_图书管理平台c语言程序设计_c语言课程设计 图书管理系统...

    #include #include #include #include //#include #define MAX 100 struct Student { int num;/*书代号*/ char ...

  10. 大学JavaWeb课程设计——图书管理系统(应付作业及毕设)

    作者是一名大二学生ovo,空闲时间用原生的JavaWeb开发了一个图书管理系统,没有使用任何框架,挺适合刚入门的新手去学习,前后端代码都是自己编写的,这是本人第一个项目并希望大家能够支持一下,可以挺好 ...

最新文章

  1. oracle@命令_Oracle 常用运维命令整理
  2. 利用IIS的配置“此资源内容来自共享”实现负载均衡
  3. c语言 内存搜索,怎么在一段内存中搜索一个十六进制串
  4. Qt ftp 文件上传工具开发
  5. 好久没有来CSDN了,这段时间比较忙。。
  6. docker 安装azkaban_docker总结
  7. 解决Ajax异步请求中传数组参数,后台无法接收问题
  8. 供应IMX335/IMX386/IMX258/OV4689/OV5640/OV8865/光学防抖摄像头模组
  9. 3dmax如何使用模型快速切片命令
  10. silvaco 安装
  11. AMOLED 结构及显示原理
  12. Python的特点(优点和缺点)
  13. macbook 如何稳定的使用第三方鼠标
  14. Android手势检测简介
  15. 华为路由器 IPSec VPN 配置
  16. word打印“错误!未找到引用源”的解决办法
  17. 更新丨织信Informat V1.12:审批流通知支持移动端打开链接,一键实现快速审批
  18. 京东杨业飞:京东云原生大规模实践之路
  19. 【原创】RustDesk server demo 跑起来,centos7 开源免费的远程控制软件,自建服务器,吊打向日葵 teamviewer
  20. 关于邮箱命名规则的总结

热门文章

  1. CreateThread 线程操作与 _beginthreadex 线程安全(Windows核心编程)
  2. 【✨十五天搞定电工基础】正弦交流电路的分析(下)
  3. Android蓝牙开发(一)蓝牙模块及核心API
  4. 盘点本月 火火火火 的开源项目
  5. Loadruner工具之 IP欺骗
  6. linux远程溢出,Linux netkit in.telnetd远程溢出漏洞
  7. 栈溢出攻击c语言_栈溢出攻击
  8. 腾讯视频、优酷、乐视视频纷纷品牌升级,视频网站的好戏才刚刚开始?
  9. warning: implicit declaration of function ‘sleep’
  10. 架构设计 SOA的理解