我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++项目开发如何实现图书管理系统

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++项目开发如何实现图书管理系统

这篇“C++项目开发如何实现图书管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++项目开发如何实现图书管理系统”文章吧。

一、需求分析

可以实现添加一条新的图书信息(图书名,图书编号,图书价格,图书作者)
2.可以查看全部图书条目
3.可以删除指定的某条图书记录

二、系统设计

2.1系统功能介绍

添加新图书模块:该模块可以实现将新图书信息录入到系统并将图书信息保存到文件中。
2.浏览全部图书模块:可以通过该模块获取文件中全部图书信息,确定图书是否存在,及方便删除。
3.删除图书模块:可以根据图书在文件中的记录号删除某条图书记录。

2.2系统预览

主界面

C++项目开发如何实现图书管理系统

添加新图书界面

C++项目开发如何实现图书管理系统

浏览全部图书条目

C++项目开发如何实现图书管理系统

三、代码设计

1 图书头文件

#define NUM1 128#define NUM2 50class CBook{ public:    CBook(){}    CBook(char* cName,char*cIsbn,char* cPrice,char* cAuthor);    ~CBook(){}public:    char* GetName();//获取图书名称    void SetName(char* cName);//设置图书名称    char* GetIsbn();//获取图书ISBN编号    void SetIsbn(char* clsbn);//设置图书ISBN编号    char* GetPrice();//获得图书价格    void SetPrice(char* cPrice);//设置图书价格    char* GetAuthor();//获得图书作者信息    void SetAuthor(char* cAuthor);//设置图书作者信息    void WriteData();    void DeleteData(int iCount);    void GetBookFromFile(int iCount);protected:    char m_cName[NUM1];    char m_cIsbn[NUM1];    char m_cPrice[NUM2];    char m_cAuthor[NUM2];};

2 类中成员函数实现

#include "Book.h"#include <string>#include <fstream>#include <iostream>#include <iomanip>#include <stdio.h>using namespace std;CBook::CBook(char* cName, char*cIsbn, char* cPrice, char* cAuthor){    strncpy_s(m_cName,cName,NUM1);    strncpy_s(m_cIsbn, cIsbn, NUM1);    strncpy_s(m_cPrice, cPrice, NUM2);    strncpy_s(m_cAuthor, cAuthor, NUM2);} char* CBook::GetName(){    return m_cName;} void CBook::SetName(char* cName){    strncpy_s(m_cName, cName, NUM1);} char* CBook::GetIsbn(){    return m_cIsbn;} void CBook::SetIsbn(char* cIsbn){    strncpy_s(m_cIsbn, cIsbn, NUM1);} char* CBook::GetPrice(){    return m_cPrice;} void CBook::SetPrice(char*cPrice){    strncpy_s(m_cPrice, cPrice, NUM2);} char* CBook::GetAuthor(){    return m_cAuthor;} void CBook::SetAuthor(char* cAuthor){    strncpy_s(m_cAuthor, cAuthor, NUM2);}  void CBook::WriteData(){    ofstream ofile;    ofile.open("book.dat", ios::binary | ios::app);    try    {        ofile.write(m_cName, NUM1);        ofile.write(m_cIsbn, NUM1);        ofile.write(m_cPrice, NUM2);        ofile.write(m_cAuthor, NUM2);    }    catch (...)    {        throw "file error occurred";        ofile.close();    }    ofile.close();}void CBook::GetBookFromFile(int iCount){    char cName[NUM1];    char cIsbn[NUM1];    char cPrice[NUM2];    char cAuthor[NUM2];    ifstream ifile;    ifile.open("book.dat", ios::binary);    try    {        ifile.seekg(iCount*(NUM1 + NUM1 + NUM2 + NUM2), ios::beg);        ifile.read(cName, NUM1);        if (ifile.tellg()>0)            strncpy_s(m_cName, cName, NUM1);        ifile.read(cIsbn, NUM1);        if (ifile.tellg()>0)            strncpy_s(m_cIsbn, cIsbn, NUM1);        ifile.read(cPrice, NUM2);        if (ifile.tellg()>0)            strncpy_s(m_cIsbn, cIsbn, NUM2);        ifile.read(cAuthor, NUM2);        if (ifile.tellg()>0)            strncpy_s(m_cAuthor, cAuthor, NUM2);    }    catch (...)    {        throw "file error occurred";        ifile.close();    }    ifile.close();}void CBook::DeleteData(int iCount){    long respos;    int iDataCount = 0;    fstream file;    fstream tmpfile;    ofstream ofile;    char cTempBuf[NUM1 + NUM1 + NUM2 + NUM2];    file.open("book.dat", ios::binary | ios::in | ios::out);    tmpfile.open("temp.dat", ios::binary | ios::in | ios::out | ios::trunc);    file.seekg(0, ios::end);    respos = file.tellg();    iDataCount = respos / (NUM1 + NUM1 + NUM2 + NUM2);    if (iCount < 0 && iCount > iDataCount)    {        throw "Input number error";    }    else    {        file.seekg((iCount)*(NUM1 + NUM1 + NUM2 + NUM2), ios::beg);        for (int j = 0; j<(iDataCount - iCount); j++)        {            memset(cTempBuf, 0, NUM1 + NUM1 + NUM2 + NUM2);            file.read(cTempBuf, NUM1 + NUM1 + NUM2 + NUM2);            tmpfile.write(cTempBuf, NUM1 + NUM1 + NUM2 + NUM2);        }        file.close();        tmpfile.seekg(0, ios::beg);        ofile.open("book.dat");        ofile.seekp((iCount - 1)*(NUM1 + NUM1 + NUM2 + NUM2), ios::beg);        for (int i = 0; i<(iDataCount - iCount); i++)        {            memset(cTempBuf, 0, NUM1 + NUM1 + NUM2 + NUM2);            tmpfile.read(cTempBuf, NUM1 + NUM1 + NUM2 + NUM2);            ofile.write(cTempBuf, NUM1 + NUM1 + NUM2 + NUM2);        }    }    tmpfile.close();    ofile.close();    remove("temp.dat");}

3主函数代码

#include <iostream>#include <iomanip>#include <stdlib.h>#include <conio.h>#include <string.h>#include <fstream>#include "Book.h" #define CMD_COLS 80#define CMD_LINES 25using namespace std; void SetScreenGrid();void ClearScreen();void SetSysCaption();void SetSysCaption(const char *pText);void ShowWelcome();void ShowRootMenu();void WaitView(int  iCurPage);void WaitUser();void GuideInput();int GetSelect();long GetFileLength(ifstream & ifs);void ViewData(int iSelPage);void DeleteBookFromFile();void mainloop(); void SetScreenGrid(){    char sysSetBuf[80];    sprintf_s(sysSetBuf, "mode con cols=%d lines=%d", CMD_COLS, CMD_LINES);    system(sysSetBuf);}void ClearScreen(){    system("cls");}void SetSysCaption(){    system("title Sample");}void SetSysCaption(const char *pText){    char sysSetBuf[80];    sprintf_s(sysSetBuf, "title %s", pText);    system(sysSetBuf);}void ShowWelcome(){    for (int i = 0; i<7; i++)    {        cout << endl;    }    cout << setw(40);    cout << "**************" << endl;    cout << setw(40);    cout << "*图书管理系统*" << endl;    cout << setw(40);    cout << "**************" << endl;}void ShowRootMenu(){    cout << setw(40);    cout << "请选择功能:" << endl;    cout << endl;    cout << setw(38);    cout << "1 添加新书" << endl;    cout << endl;    cout << setw(38);    cout << "2 浏览全部" << endl;    cout << endl;    cout << setw(38);    cout << "3 删除图书" << endl;}  void WaitView(int  iCurPage){    char buf[256];    gets_s(buf);    if (buf[0] == 'q')        system("exit");    if (buf[0] == 'm')        mainloop();    if (buf[0] == 'n')        ViewData(iCurPage);}void WaitUser(){    int iInputPage = 0;    cout << "enter返回主菜单,q退出" << endl;    char buf[256];    gets_s(buf);    if (buf[0] == 'q')        system("exit");}void GuideInput(){    char inName[NUM1];    char inIsdn[NUM1];    char inPrice[NUM2];    char inAuthor[NUM2];     cout << "输入书名" << endl;    cin >> inName;    cout << "输入ISDN" << endl;    cin >> inIsdn;    cout << "输入价格" << endl;    cin >> inPrice;    cout << "输入作者" << endl;    cin >> inAuthor;    CBook book(inName, inIsdn, inPrice, inAuthor);    book.WriteData();    cout << "Write Finish" << endl;    WaitUser();} int GetSelect(){    char buf[256];    gets_s(buf);    return atoi(buf);}long GetFileLength(ifstream & ifs){    long tmppos;    long respos;    tmppos = ifs.tellg();//获得当前位置    ifs.seekg(0, ios::end);    respos = ifs.tellg();    ifs.seekg(tmppos, ios::beg);//恢复当前位置    return respos;}  void ViewData(int iSelPage = 1){    int iPage = 0;    int iCurPage = 0;    int iDataCount = 0;    char inName[NUM1];    char inIsbn[NUM1];    char price[NUM2];    char inAuthor[NUM2];    bool bIndex = false;    int iFileLength;    iCurPage = iSelPage;    ifstream ifile;    ifile.open("book.dat", ios::binary);//|ios::nocreate    iFileLength = GetFileLength(ifile);    iDataCount = iFileLength / (NUM1 + NUM1 + NUM2 + NUM2);    if (iDataCount >= 1)        bIndex = true;    iPage = iDataCount / 20 + 1; //每页20条记录      ClearScreen();     cout << " 共有记录" << iDataCount << " ";    cout << " 共有页数" << iPage << " ";    cout << " 当前页数" << iCurPage << " ";    cout << " n显示下一页 m返回" << endl;    cout << setw(5) << "Index";    cout << setw(22) << "Name" << setw(22) << "Isbn";    cout << setw(15) << "Price" << setw(15) << "Author";    cout << endl;    try    {        ifile.seekg((iCurPage - 1) * 20 * (NUM1 + NUM1 + NUM2 + NUM2), ios::beg);        if (!ifile.fail())        {            for (int i = 1; i<21; i++)            {                memset(inName, 0, 128);                memset(inIsbn, 0, 128);                memset(price, 0, 50);                memset(inAuthor, 0, 50);                if (bIndex)                    cout << setw(3) << ((iCurPage - 1) * 20 + i);                ifile.read(inName, NUM1);                cout << setw(24) << inName;                ifile.read(inIsbn, NUM1);                cout << setw(24) << inIsbn;                ifile.read(price, NUM2);                cout << setw(12) << price;                ifile.read(inAuthor, NUM2);                cout << setw(12) << inAuthor;                cout << endl;//一条纪录                if (ifile.tellg()<0)                    bIndex = false;                else                    bIndex = true;            }        }    }    catch (...)    {        cout << "throw file exception" << endl;        throw "file error occurred";        ifile.close();    }    if (iCurPage<iPage)    {        iCurPage = iCurPage + 1;        WaitView(iCurPage);    }    else    {        WaitView(iCurPage);    }    ifile.close();}  void DeleteBookFromFile(){    int iDelCount;    cout << "Input delete index" << endl;    cin >> iDelCount;    CBook tmpbook;    tmpbook.DeleteData(iDelCount);    cout << "Delete Finish" << endl;    WaitUser();}void mainloop(){    ShowWelcome();    while (1)    {        ClearScreen();        ShowWelcome();        ShowRootMenu();        switch (GetSelect())        {        case 1:            ClearScreen();            GuideInput();            break;        case 2:            ClearScreen();            ViewData();            break;        case 3:            ClearScreen();            DeleteBookFromFile();            break;        }    }}void main(){     SetScreenGrid();    SetSysCaption("图书管理系统");    mainloop();}

【注】开发环境为VS2013控制台程序

以上就是关于“C++项目开发如何实现图书管理系统”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C++项目开发如何实现图书管理系统

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C++项目开发如何实现图书管理系统

这篇“C++项目开发如何实现图书管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++项目开发如何实现图书管理系统”文
2023-06-29

C语言实现图书管理系统开发

这篇文章主要为大家详细介绍了C语言实现图书管理系统开发,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2022-11-13

C++如何实现图书管理系统

本文小编为大家详细介绍“C++如何实现图书管理系统”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++如何实现图书管理系统”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。功能:1.首先是注册,登录,找回密码和修改
2023-06-29

C#如何实现图书管理系统

本文小编为大家详细介绍“C#如何实现图书管理系统”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#如何实现图书管理系统”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、设计目的通过模拟图书管理系统,实现以下功能
2023-06-29

C#开发图书馆管理系统的项目经验分享

在信息技术不断发展的今天,图书馆也在逐渐数字化的进程中迎来了新的挑战和机遇。为了更好地管理图书馆资源和提供更便捷的服务,很多图书馆开始引入图书馆管理系统。本文将分享我在C#开发图书馆管理系统项目中的经验和心得。首先,一个好的图书馆管理系统需
C#开发图书馆管理系统的项目经验分享
2023-11-02

如何实现C++版图书管理系统

这篇文章主要介绍了如何实现C++版图书管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下使用介绍图书管理系统源码由两部分组成,第一部分book.h头文件,第二
2023-06-29

C语言如何实现图书管理系统

这篇文章将为大家详细讲解有关C语言如何实现图书管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。主要内容 开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版
2023-06-28

C++如何实现小型图书管理系统

这篇文章给大家分享的是有关C++如何实现小型图书管理系统的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下因为课程设计的原因,需要实现一个小型图书管理系统包含功能:问题描述:设计一个系统,对图书信息进行管
2023-06-29

C语言如何实现图书馆管理系统

这篇文章主要介绍了C语言如何实现图书馆管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。全部代码如下:#include #include
2023-06-20

java如何实现图书管理系统

小编给大家分享一下java如何实现图书管理系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、背景介绍通过一段时间java编程的学习,需要一个比较综合的实例来进
2023-06-14

C++如何实现通讯录管理系统项目

这篇文章主要介绍“C++如何实现通讯录管理系统项目”,在日常操作中,相信很多人在C++如何实现通讯录管理系统项目问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++如何实现通讯录管理系统项目”的疑惑有所帮助!
2023-07-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录