iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++项目开发如何实现图书管理系统
  • 356
分享到

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

2023-06-29 12:06:52 356人浏览 八月长安
摘要

这篇“c++项目开发如何实现图书管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“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++项目开发如何实现图书管理系统”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网其他教程频道。

--结束END--

本文标题: C++项目开发如何实现图书管理系统

本文链接: https://www.lsjlt.com/news/324593.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • C++项目开发如何实现图书管理系统
    这篇“C++项目开发如何实现图书管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++项目开发如何实现图书管理系统”文...
    99+
    2023-06-29
  • C++项目开发实现图书管理系统
    本文实例为大家分享了C++实现图书管理系统的具体代码,供大家参考,具体内容如下 一、需求分析 1.可以实现添加一条新的图书信息(图书名,图书编号,图书价格,图书作者)2.可以查看全部...
    99+
    2024-04-02
  • JAVA实现图书管理系统项目
    目录前言项目需求设计前提设计目标设计结构图功能解读项目实现基本对象的设置通过IO流的写入写出总结前言 相信再每一个学生在学习编程的时候,应该都会写的一个小项目——图书管理系统。为什么...
    99+
    2024-04-02
  • C语言实现图书管理系统开发
    本文实例为大家分享了C语言实现图书管理系统的具体代码,供大家参考,具体内容如下 程序介绍 图书管理系统主要有以下功能: 1、录入图书信息。2、实现删除功能,即输入图书号删除相应的记录...
    99+
    2022-11-13
    C语言图书管理系统 C语言图书系统 C语言图书管理
  • C#开发图书馆管理系统的项目经验分享
    在信息技术不断发展的今天,图书馆也在逐渐数字化的进程中迎来了新的挑战和机遇。为了更好地管理图书馆资源和提供更便捷的服务,很多图书馆开始引入图书馆管理系统。本文将分享我在C#开发图书馆管理系统项目中的经验和心得。首先,一个好的图书馆管理系统需...
    99+
    2023-11-02
    C#开发 项目经验分享 图书馆管理
  • C++如何实现图书管理系统
    本文小编为大家详细介绍“C++如何实现图书管理系统”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++如何实现图书管理系统”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。功能:首先是注册,登录,找回密码和修改密码...
    99+
    2023-06-29
  • C#如何实现图书管理系统
    本文小编为大家详细介绍“C#如何实现图书管理系统”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#如何实现图书管理系统”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、设计目的通过模拟图书管理系统,实现以下功能...
    99+
    2023-06-29
  • Java实战项目 图书管理系统
    目录一、项目简述二、项目运行修改图书类型信息代码:登录图书管理系统主页面代码:一、项目简述 功能包括: 登录注册,办理借阅。借阅记录,预约借阅,借出未还, 借阅逾期,学生管理,图书管...
    99+
    2024-04-02
  • 【C#项目】图书馆管理系统-WinForm+MySQL
    文章目录 前言一、业务梳理与需求分析1.功能描述2.实现步骤3.功能逻辑图 二、数据库设计1.实体-关系(E-R图)概念模型设计2.数据表设计 三、WinForm界面交互设...
    99+
    2023-10-20
    python 开发语言
  • JavaWeb项目-图书管理系统
    目 录 设计任务与目的……………………………………………………………….4 2、设计思路………………………………………………………………………4 3、概要设计………………………………………………………...
    99+
    2023-10-23
    java 数据库 servlet
  • django--图书管理系统(项目)
    django创建一个新的项目设置静态文件,更改settings配置,在最后添加STATICFILES_DIRS = [     os.path.join(BASE_DIR,&nbs...
    99+
    2023-01-30
    图书管理系统 项目 django
  • C#实现图书管理系统
    本文为大家分享了C#实现图书管理系统课程设计,供大家参考,具体内容如下 一、设计目的 通过模拟图书管理系统,实现以下功能学生账号的注册学生对馆藏图书状况的查询学生借书,还书状态的查询...
    99+
    2024-04-02
  • 如何实现C++版图书管理系统
    这篇文章主要介绍了如何实现C++版图书管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下使用介绍图书管理系统源码由两部分组成,第一部分book.h头文件,第二...
    99+
    2023-06-29
  • C语言如何实现图书管理系统
    这篇文章将为大家详细讲解有关C语言如何实现图书管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。主要内容        开发一个图书信息管理系统,图书信息包括:...
    99+
    2023-06-28
  • C++如何实现小型图书管理系统
    这篇文章给大家分享的是有关C++如何实现小型图书管理系统的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下因为课程设计的原因,需要实现一个小型图书管理系统包含功能:问题描述:设计一个系统,对图书信息进行管...
    99+
    2023-06-29
  • C++实现图书馆管理系统
    本文实例为大家分享了C++实现图书馆管理系统的具体代码,供大家参考,具体内容如下 一、实验名称 图书馆管理系统 二、实验目的 利用C++语言设计开发一个小型的图书馆管理系统模拟程序,...
    99+
    2024-04-02
  • C语言如何实现图书馆管理系统
    这篇文章主要介绍了C语言如何实现图书馆管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。全部代码如下:#include <stdio.h>#incl...
    99+
    2023-06-20
  • C++实现图书信息管理系统
    本文实例为大家分享了C++实现图书信息管理系统的具体代码,供大家参考,具体内容如下 1.题目: 类型有:编号:ISBN书名:name价格:price 完成如下的功能: ①录入:从键盘...
    99+
    2024-04-02
  • C/C++实现图书信息管理系统
    本文实例为大家分享了c/c++实现图书信息管理系统的具体代码,供大家参考,具体内容如下 程序流程图 源代码 #include <stdio.h> #include ...
    99+
    2024-04-02
  • java如何实现图书管理系统
    小编给大家分享一下java如何实现图书管理系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、背景介绍通过一段时间java编程的学习,需要一个比较综合的实例来进...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作