书店管理系统

#include <iostream>
#include <fstream>
#include <cstring>
#include <ctime>
#include <cstdlib>

using namespace std;

class Book {
private:
    string title, author, publisher, time;
    int pages, quantity;
    float price;

public:
    Book() {
        // 初始化
        title = "";
        author = "";
        publisher = "";
        time = "";
        pages = 0;
        quantity = 0;
        price = 0.0;
    }

    void setTitle(string title) 
    { 
        this->title = title; 
    }
    void setAuthor(string author) 
    {
        this->author = author; 
    }
    void setPublisher(string publisher)
    { 
        this->publisher = publisher; 
    }
    void setTime(string time) 
    { 
        this->time = time;
    }
    void setPages(int pages) 
    { 
        this->pages = pages;
    }
    void setQuantity(int quantity)
    { 
        this->quantity = quantity;
    }
    void setPrice(float price) 
    { 
        this->price = price;
    }

    string getTitle() 
    { 
        return title;
    }
    string getAuthor() 
    {
        return author;
    }
    string getPublisher()
    { 
        return publisher; 
    }
    string getTime()
    { 
        return time;
    }
    int getPages()
    {
        return pages;
    }
    int getQuantity() 
    { 
        return quantity;
    }
    float getPrice() 
    { 
        return price; 
    }
};

class BookStore {
private:
    Book books[1000];
    int count;

public:
    BookStore() {
        // 初始化
        count = 0;
    }

    void addBook() {
        // 添加书籍
        Book b;
        string title, author, publisher, time;
        int pages, quantity;
        float price;
        cout << "\n请输入书籍信息:" << endl;
        cout << "书名:";
        cin >> title;
        cout << "作者:";
        cin >> author;
        cout << "出版社:";
        cin >> publisher;
        cout << "页数:";
        cin >> pages;
        cout << "单价:";
        cin >> price;
        cout << "入库时间:";
        cin >> time;
        cout << "库存量:";
        cin >> quantity;
        b.setTitle(title);
        b.setAuthor(author);
        b.setPublisher(publisher);
        b.setPages(pages);
        b.setPrice(price);
        b.setTime(time);
        b.setQuantity(quantity);
        books[count++] = b;
        // 将书籍信息写入文件中
        ofstream out("books.txt", ios::app);
        out << b.getTitle() << "," << b.getAuthor() << "," << b.getPublisher() << "," << b.getPages() << "," << b.getPrice() << "," << b.getTime() << "," << b.getQuantity() << endl;
        cout << "添加成功!" << endl;
    }

    void sellBook() {
        // 出售书籍
        string title;
        cout << "\n请输入出售的书籍名称:";
        cin >> title;
        for (int i = 0; i < count; i++) {
            if (books[i].getTitle() == title) {
                int quantity = books[i].getQuantity() - 1;
                if (quantity < 0) {
                    cout << "库存不足,无法出售!" << endl;
                    return;
                }
                books[i].setQuantity(quantity);
                // 将销售信息写入文件中
                ofstream out("sales.txt", ios::app);
                time_t now = time(0);
                char* dt = ctime(&now);
                out << dt << " " << books[i].getTitle() << "," << books[i].getAuthor() << "," << books[i].getPublisher() << "," << books[i].getPrice() << endl;
                cout << "出售成功!" << endl;
                return;
            }
        }
        cout << "未找到该书籍!" << endl;
    }

    void queryBook() {
        // 查询书籍信息
        int option;
        string keyword;
        cout << "\n请选择查询方式:" << endl;
        cout << "1. 书名" << endl;
        cout << "2. 作者" << endl;
        cout << "3. 出版社" << endl;
        cout << "4. 价格" << endl;
        cin >> option;
        if (option <= 0 || option > 4) {
            cout << "无效的选择!" << endl;
            return;
        }
        cout << "请输入关键词:";
        cin >> keyword;
        cout << "查询结果:" << endl;
        for (int i = 0; i < count; i++) {
            Book b = books[i];
            bool match = false;
            switch (option) {
            case 1:
                if (b.getTitle() == keyword) 
                    match = true;
                break;
            case 2:
                if (b.getAuthor() == keyword) 
                    match = true;
                break;
            case 3:
                if (b.getPublisher() == keyword) 
                    match = true;
                break;
            case 4:
                if (b.getPrice() == atof(keyword.c_str()))
                    match = true;
                break;
            }

            if (match) {
                cout << "书名:" << b.getTitle() << endl;
                cout << "作者:" << b.getAuthor() << endl;
                cout << "出版社:" << b.getPublisher() << endl;
                cout << "页数:" << b.getPages() << endl;
                cout << "单价:" << b.getPrice() << endl;
                cout << "入库时间:" << b.getTime() << endl;
                cout << "库存量:" << b.getQuantity() << endl;
                cout << endl;
            }
        }
    }

    void checkStock() {
        // 自动预警提示
        bool warning = false;
        for (int i = 0; i < count; i++) {
            if (books[i].getQuantity() == 1) {
                cout << "警告:书籍\"" << books[i].getTitle() << "\"的库存仅剩1本!" << endl;
                warning = true;
            }
        }
        if (!warning) {
            cout << "当前无需预警。" << endl;
        }
    }
};

int main() {
    BookStore bs;
    int option;
    while (1) {
        cout << "\n请选择以下操作:" << endl;
        cout << "1. 进货" << endl;
        cout << "2. 销售" << endl;
        cout << "3. 查询" << endl;
        cout << "4. 自动预警提示" << endl;
        cout << "5. 退出" << endl;
        cin >> option;
        switch (option) {
        case 1:
            bs.addBook();
            break;
        case 2:
            bs.sellBook();
            break;
        case 3:
            bs.queryBook();
            break;
        case 4:
            bs.checkStock();
            break;
        case 5:
            cout << "谢谢使用,再见!" << endl;
            return 0;
        default:
            cout << "无效的选择!" << endl;
        }
    }
    return 0;
}

构建简易书店管理系统:从理论到实践 htmltable {th, td {th {pre {简介:书店管理系统是一种用于自动化管理图书入库、销售和记录的软件应用,特别适合学校课程设计。本项目涵盖数据库操作、用户界面设计、数据处理等核心计算机科学概念。系统包括入库管理、销售管理、销售记录、用户界面、数据库设计、报表生成、权限管理和错误处理等关键模块。参与开发能帮助学生掌握前端和后端开发、数据库设计和软件工程的基本技能。 阅读详情

相关推荐

【MFiX后处理】MFiX中使用des_usr_var输出颗粒的传热量(2020-11-27更新变更输出变量名方法)

参考之前Yin的那一篇博客 https://www.cnblogs.com/Jay-CFD/p/10621274.html 输出一下颗粒传热量 使用的算例是fluid_bed_dem_2d 打开des scalar tracking 前面都和Yin那篇一样,打开enable user scalar tracking 输入2 因为第一个用来测试Y加速度了 第二个输出传热量 然后在output vtk中勾选好 更改源代码 源代码为des_thermo_newvalues.f 在mfix-GUI自带的ed

beidou111的博客 1532

echarts实现3D地图——map3D

【代码】echarts实现3D地图——map3D。

xiaoququ的博客 7317

腾讯会议录屏损坏修复:使用 recover_mp4 工具的完整解决方案

腾讯会议录屏损坏修复指南 当腾讯会议录屏因电脑蓝屏等意外导致MP4文件损坏时,可使用recover_mp4工具结合FFMPEG进行修复。操作步骤包括:1)准备相同参数正常视频作为参考;2)分析正常视频生成结构文件;3)分离损坏视频的音视频流;4)使用FFMPEG重新封装。该方法能有效修复因意外中断导致的视频索引损坏问题。修复前需将工具和文件放在同一目录下,并确保参考视频与损坏录屏的参数完全一致。

m0_62498496的博客 2625

相机标定-机器视觉基础(理论推导、Halcon和OpenCV相机标定)

相机标定是获得目标工件精准坐标信息的基础。首先,必须进行相机内参标定,构建一个模型消除图像畸变;其次,需要对相机和机器人的映射关系进行手眼标定,构建一个模型将图像坐标系上的点映射到世界坐标系。主要分为背景知识、相机内外参模型推导、编程代码实现三个部分。

beyond951的博客 7301

【通信】多径衰落信道的matlab仿真

1 简介 2 部分代码 clearf_c=1e3; %carrier frequency(no modulation)time_1 = (linspace (0, 10, 1000)); %timesignal_in = sin (2 * pi *f_c* time_1); %sine wave plot (time_1, signal_in, 'b');grid on;

qq_59747472的博客 1382

【知识分享】IBIS 建模指南 03

本文介绍了差分缓冲器的数据提取方法,重点分析了差分系统与单端系统的核心差异。文章详细阐述了差分接收机和驱动器的结构特点、工作原理及建模方法,指出全差分结构具有优异的电源噪声抑制能力。针对IBIS建模规范,作者提出了三维I-V曲面数据提取技术,并介绍了共模/差模电流分离、片上端接处理以及V-T表生成的解决方案。文章还探讨了差分电容(C_diff)的测量方法和数据简化策略,为复杂差分缓冲器的精确建模提供了系统化的技术路径。

一只豌豆象的博客 1281

VAY 是 SAP 自动科目确定(OBYC-GBB)中的科目修改码,专用于带科目分配对象的销售订单发货场景,核心是触发 “Dr 成本要素科目(如销售费用 / 特定成本对象) Cr 库存商品” 的分录,

摘要:VAY是SAP中用于带科目分配对象(如成本中心、WBS)的销售订单发货的科目修改码,与标准VAX场景不同,它生成"借成本要素科目/贷库存商品"的分录。配置路径为OBYC-GBB-VAY,需确保借方科目为成本要素。典型业务场景包括免费样品、项目专用发货等。常见问题包括VAY未触发或科目记账错误,需检查销售订单科目分配、移动类型设置及OBYC配置。特殊场景建议单独配置科目以便费用分析。

金牌架构师 1253

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 【问题描述】定义一个复数类,使得下面的代码能够工作
下一篇: 课堂作业2.分支结构
Linzaii
博客等级 码龄4年 364粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linzaii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值