C++实现图书管理系统最新版

图书管理系统设计,供大家参考,具体内容如下

一、问题描述及功能要求

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

(2)图书信息浏览功能

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

.按书名查询
.按作者名查询

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

二、代码实现 带有注释

废话不说,直接代码,欢迎指正。
大家CV可能有不兼容的情况,可以滴滴,尽可能解决问题地回复。

#include<iostream>
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include <cstring>
#include<windows.h>
#include<vector>
#define BOOKMAXREPERTORY 99
using namespace std;
class Common{
public:
    int id;
    char title[66];
    char author[66];
    Common(){
    }
    Common(int _id,char _title[],char _author[]){
        id = _id;
        strcpy(title , _title);
        strcpy(author , _author);
    }
};

class Book:public Common{
public:
    char publisher[66];
    int pageNumber;
    Book(){}
    Book(int _id,char _title[],char _author[],char _publisher[],char _iSBNNumber[],int _pageNumber){
        Common(_id,_title,_author);
        strcpy(publisher,_publisher);
        pageNumber = _pageNumber;
    }
};

class MediaLibraryManageSystem{
public:

    MediaLibraryManageSystem(){
        nowBookTotal = 0;
    }

    void _run(){
        readDataByFile();
        printf("程序加载中");
        for (int i = 0; i < 10; i++) {
            Sleep(100);    /* windows 使用Sleep,参数为毫秒 */
            printf(".");
            fflush(stdout);//强制刷新缓存,输出显示
        }
        printf("\n");
        system("cls");
        int cmd;
        while(true){
            cout<<home_menu<<endl;
            cout<<"请输入你需要执行的命令序号:";cin>>cmd;
            if(cmd == 0){
                _exit();
            }
            system("cls");
            switch(cmd){
                case 1:
                    addBook();
                    break;
                case 2:
                    queryGoods();
                    break;
                case 3:
                    showGoods();
                    break;
                case 4:
                    updateGoods();
                    break;
                case 5:
                    deleteGoods();
                    break;
                default:
                    cout<<"输入的指令有误!请重新输入!"<<endl;
            }
            system("pause");
            system("cls");

        }
    }

private:

    const string home_menu =
    "\n********************************** 图书管理系统 **********************************\n"
    "*                                                                                  *\n"
    "*                                                                                  *\n"
    "*                                     1.添加                                       *\n"
    "*                                                                                  *\n"
    "*                                     2.查询                                       *\n"
    "*                                                                                  *\n"
    "*                                     3.显示图书库                                 *\n"
    "*                                                                                  *\n"
    "*                                     4.修改图书库                                 *\n"
    "*                                                                                  *\n"
    "*                                     5.删除                                       *\n"
    "*                                                                                  *\n"
    "*                                     0.退出                                       *\n"
    "*                                                                                  *\n"
    "*                                                                                  *\n"
    "************************************************************************************\n";

    const string query_goods_menu =
    "\n************************************ 图书查询 ************************************\n"
    "*                                                                                  *\n"
    "*                                                                                  *\n"
    "*                                    1.按标题查询                                  *\n"
    "*                                                                                  *\n"
    "*                                    2.按编号查询                                  *\n"
    "*                                                                                  *\n"
    "*                                    0.退出                                        *\n"
    "*                                                                                  *\n"
    "*                                                                                  *\n"
    "************************************************************************************\n";

    Book bookList[BOOKMAXREPERTORY];

    int nowBookTotal;

    ///添加图书
    void addBook(){
        Book book;
        cout<<"请输入编号:";cin>>book.id;
        cout<<"请输入标题:";cin>>book.title;
        cout<<"请输入作者:";cin>>book.author;
        cout<<"请输入出版社:";cin>>book.publisher;
        cout<<"请输入页数:";cin>>book.pageNumber;
        if(getBookById(book.id) != -1){
            cout<<"添加失败! 添加编号重复! 请重新添加!"<<endl;
        }else if(nowBookTotal == BOOKMAXREPERTORY){
            cout<<"添加失败! 图书库已满!"<<endl;
        }else{
            bookList[nowBookTotal ++] = book;
        }
    }

    /*  查询图书  */
    void queryGoods(){
        int cmd;
        while(true){
            cout<<query_goods_menu<<endl;
            cout<<"请输入你需要执行的命令序号:";cin>>cmd;
            if(cmd == 0){
                break;
            }
            system("cls");
            switch(cmd){
                case 1:
                    queryByTitle();
                    break;
                case 2:
                    queryById();
                    break;
                default:
                    cout<<"输入的指令有误!请重新输入!"<<endl;
            }
            system("pause");
            system("cls");

        }
    }

    ///按标题查询
    void queryByTitle(){
        int cmd;
        char title[66];
        cout<<"请输入标题:";cin>>title;
        getBookByTitle(title);
    }

    ///book
    void getBookByTitle(char title[]){
        bool flag = true;
        printf("%-6s%-10s%-10s%-10s%-10s%\n","编号","标题","作者","出版社","页数");
        for(int i = 0;i < nowBookTotal;i ++){
            if(strcmp(bookList[i].title,title) == 0){
                flag = false;
                printf("%-6d%-10s%-10s%-10s%-10d\n",bookList[i].id,bookList[i].title,bookList[i].author,bookList[i].publisher,bookList[i].pageNumber);
            }
        }
        if(flag){
            printf("\n\n空的!\n\n");
        }
    }

    ///按编号查询
    void queryById(){
        int cmd,i,id;
        cout<<"请输入Id:";cin>>id;
        i = getBookById(id);
        if(i == -1){
            printf("查找不到!\n");
        }else{
            printf("%-6s%-10s%-10s%-10s%-10s\n","编号","标题","作者","评级","出版社","页数");
            printf("%-6d%-10s%-10s%-10s%-10d\n",bookList[i].id,bookList[i].title,bookList[i].author,bookList[i].publisher,bookList[i].pageNumber);
        }
    }

    ///Book
    int getBookById(int id){
        int index = -1;
        for(int i = 0;i < nowBookTotal;i ++){
            if(bookList[i].id == id){
                index = i;
                break;
            }
        }
        return index;
    }

    /*  显示图书库  */
    void showGoods(){
        if(nowBookTotal == 0){
            printf("空的!\n");
        }else{
            printf("%-6s%-10s%-10s%-10s%-10s\n","编号","标题","作者","出版社","页数");
            for(int i = 0;i < nowBookTotal;i ++){
                printf("%-6d%-10s%-10s%-10s%-10d\n",bookList[i].id,bookList[i].title,bookList[i].author,bookList[i].publisher,bookList[i].pageNumber);
            }
        }
    }

    /*  修改图书  */
    void updateGoods(){
        int cmd,id,i;
        cout<<"请输入你需要修改的图书编号:";cin>>id;
        i = getBookById(id);
        if(i == -1){
                cout<<"图书不存在!"<<endl;
        }else{
            cout<<"原图书信息为:"<<endl;
            printf("%-6s%-10s%-10s%-10s%-10s\n","编号","标题","作者","出版社","页数");
            printf("%-6d%-10s%-10s%-10s%-10d\n",bookList[i].id,bookList[i].title,bookList[i].author,bookList[i].publisher,bookList[i].pageNumber);
            Book book;
            book.id = id;
            cout<<"请输入修改后的标题:";cin>>book.title;
            cout<<"请输入修改后的作者:";cin>>book.author;
            cout<<"请输入修改后的出版社:";cin>>book.publisher;
            cout<<"请输入修改后的页数:";cin>>book.pageNumber;
            bookList[i] = book;
        }
    }

    /*  删除图书  */
    void deleteGoods(){
        int cmd,id,i;
        if(nowBookTotal == 0){
            cout<<"空的!"<<endl;
   return;
        }
        cout<<"请输入你需要删除的图书编号:";cin>>id;
        deleteBook(id);
    }

    ///book
    void deleteBook(int id){
        int index = getBookById(id);
        if(index == -1){
            cout<<"没有该图书!"<<endl;
        }else{
            for(int i = index;i < nowBookTotal - 1;i ++){
                bookList[i] = bookList[i + 1];
            }
            nowBookTotal --;
            cout<<"删除成功!"<<endl;
        }
    }

    /*  保存图书  */
    void saveDataToFile(){
        ///book
        FILE *bookDB = fopen("bookList.txt", "wb");
        for (int i = 0; i < nowBookTotal; i++) {
            fwrite(&bookList[i], sizeof(Book), 1, bookDB);
        }
        fclose(bookDB);
    }

    /*  读取图书  */
    void readDataByFile(){
        ///Book
        FILE *bookDB = fopen("bookList.txt", "rb");
        nowBookTotal = 0;
        Book book;
        while (fread(&book, sizeof(Book), 1, bookDB) == 1) {
            bookList[nowBookTotal++] = book;
        }
        fclose(bookDB);
    }

    void _exit(){
        saveDataToFile();
        system("cls");
        printf("正在退出");
        for (int i = 0; i < 10; i++) {
            Sleep(100);
            printf(".");
            fflush(stdout);//强制刷新缓存,输出显示
        }
        system("cls");
        printf("已退出!");
        exit(1);
    }

};

int main(){
    MediaLibraryManageSystem mediaLibraryManageSystem;
    mediaLibraryManageSystem._run();
    return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

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

    今天再为大家介绍另一个常用的管理系统--图书管理系统,希望大家可以亲自动手实践一下,下面就与大家一起分享我的劳动成果. 图书信息包括:登录号.书名.作者名.分类号.出版单位.出版时间.价格等.试设计一图书信息管理系统,使之能提供以下功能: (1)图书信息录入功能(图书信息用文件保存) (2)图书信息浏览功能 (3)查询和排序功能:(至少一种查询方式)         .按书名查询         .按作者名查询 (4)图书信息的删除与修改 分享代码如下 #include<iostream.h>

  • C++实现图书管理系统

    闲来无事,用C++做了一个图书管理系统,主要有借书.还书.图书管理.用户管理等功能,主要用到的技术有容器和文件,以及类的封装 #include <iostream> #include <list> #include <algorithm> #include <string.h> #include <fstream> #include <stdlib.h> using namespace std; class Mybook; class

  • C++实现图书管理系统最新版

    图书管理系统设计,供大家参考,具体内容如下 一.问题描述及功能要求 (1)图书信息录入功能(图书信息用文件保存) (2)图书信息浏览功能 (3)查询和排序功能:(至少一种查询方式) .按书名查询 .按作者名查询 (4)图书信息的删除与修改 二.代码实现 带有注释 废话不说,直接代码,欢迎指正. 大家CV可能有不兼容的情况,可以滴滴,尽可能解决问题地回复. #include<iostream> #include<stdio.h> #include <stdlib.h> #

  • 图书管理系统java版

    本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出版日期.书号.价格字段.设计一个GUI界面进行书目管理.在该界面上有四个选项卡,分别是查询.插入.删除.修改.点击查询选项卡,出现的界面上有书名.作者.出版社.书号四个文本框,一个按钮和一个只读文本区.文本框内容可以为空,输入相应的查询信息后(例如根据书名查询可以仅输入书名),点击界面上的"查询"按钮,可以在界面

  • Elasticsearch.Net使用教程 MVC4图书管理系统(2)

    本文实例为大家分享了MVC4图书管理系统的制作教程,供大家参考,具体内容如下 首先项目结构图: Model层的相关代码如下: Book.cs代码如下: public class Book { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid Id { get; set; } [MaxLength(500)] [Display(Name = "标题")] public string Title

  • Django admin实现图书管理系统菜鸟级教程完整实例

    Django 有着强大而又及其易用的admin后台,在这里,你可以轻松实现复杂代码实现的功能,如搜索,筛选,分页,题目可编辑,多选框. 简单到,一行代码就可以实现一个功能,而且模块之间耦合得相当完美. 不信,一起来看看吧!?用Django实现管理书籍的系统,并能在前台界面对书籍进行增删查改,筛选,分页,以及批量查询修改功能. 准备工作 #准备好你的数据库模型思维导图 0.新建一个Django项目,起名为books,并且同时新建一个应用book11 1.首先要设置models模块,根据思维导图,我

  • C语言图书管理系统简洁版

    DOS界面的图书管理系统,具体内容如下 程序分为两块:管理员操作(收录图书.删除图书等)和会员操作(注册.借书.还书等): 1.管理员操作界面 2.会员操作界面 global.h头文件:(程序中只使用了一个编写的头文件,在这里存放了所有的接口函数以及需要使用到的头文件,还有结构体的定义) #include "iostream" #include "string" #include "fstream" #include "conio.h&

  • C语言实现图书管理系统

    目前为止跟着学校进度学习C语言大概半年左右,基础学习只学到了指针,学得非常浅.说实话,起初对C语言的印象---只是一个学习计算机语言的敲门砖,对具体C语言如何应用等,非常迷茫.直到大一下半学期的高级语言设计课程之后,试过dos运行的图形化界面的完整小程序,才发现C语言的魅力. ok,废话不多说了,下面是我第二节课的作品----C语言的图书管理系统.一个简单的小程序.并非纯原创,是基于网络搜索到的"学生管理系统"改编而成的.通过直接浏览.修改一个完整的代码,我的收获颇丰.我认为这样比枯燥

  • shell实现图书管理系统

    本文实例为大家分享了shell实现图书管理系统的具体代码,供大家参考,具体内容如下 #!/bin/bash #author:zhanghongjun #version:1.0 #date:2011年 12月 14日 星期三 21:18:18 CST function information { echo "---------------------------" echo "图书馆管理系统(5.4版本)" echo echo -n "| " ;e

  • C语言链表实现图书管理系统

    之前参照网上的资料用链表实现了图书管理系统,包括简单的增删改查功能以及借书还书功能,我是VC6.0下写的一个控制台程序,格式参照的网上的.在动手编码之前,你需要理清自己的思路.首先,需要确定图书馆里系统中主要有那几个对象,这里我写了学生对象和图书对象.不妨在纸上写出或画出它们主要包括哪些属性以及其可能的对应关系,这里根据不同人的要求会有所不同.清楚这些之后,就可以设计学生和图书的数据结构,比如这里我用的结构体存储其信息.然后就需要考虑,我想要哪些功能,除了基本的增删改查之外,我还想要哪些功能?比

  • python图书管理系统

    本文实例为大家分享了python图书管理系统的具体代码,供大家参考,具体内容如下 实现语言:python 图形框架:DTK+2.0 数据库框架:SQLite 3.0 本程序需要以下部件运行: Python2.5.0.GTK+2.16.Pygtk 2.16.PyGobject 2.14.Pycairo 1.4 LibiaryManager.py #!/usr/bin/python # -*- coding: utf-8 -*- import pygtk pygtk.require('2.0') i

随机推荐