C++程序设计:图书购物车管理系统

1. 课题预计目标

1.1【购买新的图书】

从键盘输入图书信息(注意购买金额是自动计算的,不需要输入),把准备购买的一本新的图书加入购物车。
如果购物车中已有相同图书号的图书,则不能重复购买,并提示购买失败的信息。
若可以购买,则自动计算购买金额(购买金额=购买数量*价格),并显示购买到购物车的这本图书的信息。

1.2【查询购物车图书】

从键盘输入待查询的图书号,并按照指定图书号查询显示购物车中该图书号的图书信息。
若查询失败,则显示查询失败信息;否则显示查询成功信息,并显示该图书号的图书信息。

1.3【按图书号显示所有图书】

把购物车中所有图书按照图书号的递增次序显示每一本图书的图书信息。
最后列出购物车中所购买图书的购买数量总额、购买金额总额。

1.4【修改购买数量】

从键盘输入待修改购买数量的图书号和待修改的购买数量,并按照待修改购买数量的图书号修改购物车中该图书号的图书购买数量,自动计算该图书号的图书购买金额(购买金额=购买数量*价格)。
若修改失败,则显示失败信息;否则显示修改成功信息,并显示该图书号的图书信息。

1.5【移出购物车】

从键盘输入待移出的图书号,并把该指定图书号的图书移出购物车。
若找不到待移出的图书,则显示移出图书操作失败的提示信息;否则显示该图书号的图书信息,然后移出该图书,并显示成功移出的提示信息,最后显示输出成功移出后购物车中的所有图书信息。

2. 系统E-R图

在这里插入图片描述

3. 编码实现

3.1 图书结构体定义

struct Shop {
    string bookNumber;//图书编号
    string title;//图书名字
    string author;//图书作者
    string publisher;//图书出版社
    string publicationDate;//图书出版日期
    double price;//图书价格
    int num;//图书购买数量
    double money;//图书购买金额
};
vector<Shop> shops;

3.2 实现新增购物车信息

void addBook() {

    Shop newbook;


    cout << "请输入新图书的信息:" << endl;
    cout << "图书号: ";
    while (true) {
        cin >>newbook.bookNumber;
        for ( Shop& shop : shops) {
            if (shop.bookNumber == newbook.bookNumber) {
                cout << "图书编号已经存在,加入失败!";
                return;

            }
        }
        if (newbook.bookNumber.size()!= 4) {
            cout << "编号不规范,请你重新输入" << endl;
        }
        else {
            break;
        }
    }

    cout << "书名: ";
    cin >> newbook.title;

    cout << "作者: ";
    cin >> newbook.author;

    cout << "出版社: ";
    cin >> newbook.publisher;

    cout << "出版日期 (YYYY-MM-DD): ";
    cin >> newbook.publicationDate;

    cout << "价格: ";
    while (true)
    {
        cin >> newbook.price;
        if (newbook.price <= 0) {
            cout << "输入的价格不规范,请重新输入" << endl;
        }
        else {
            break;
        }
    }
    cout << "购买数量:";
    cin >> newbook.num;
    cout << "购买金额:" << newbook.price * newbook.num<<endl;

    //vector迭代器装的是对象
    shops.push_back(newbook);
    cout << endl;
}

3.3 实现查找购物车信息

void searchBook() {
    string bookNumber;
    cout << "请输入图书编号进行查找: ";
    cin >> bookNumber;

    auto it = find_if(shops.begin(), shops.end(), [bookNumber](const Shop& c) {
        return c.bookNumber == bookNumber;
        });

    if (it != shops.end()) {
        cout << "该图书的信息如下:" << endl;
        cout << "编号: " << it->bookNumber<< endl;
        cout << "名字: " << it->title << endl;
        cout << "作者: " << it->author << endl;
        cout << "出版社: " << it->publisher << endl;
        cout << "出版日期:" << it->publicationDate << endl;
        cout << "价格:" << it->price << endl;
        cout << "购买数量:" << it->num << endl;
    }
    else {
        cout << "系统中无该图书信息!" << endl;
    }
}

这段代码实现了一个查找图书信息的函数searchBook(),首先从用户输入中获取要查找的图书编号,然后通过在shops这个容器中查找,使用了STL中的find_if算法和lambda表达式来实现查找,判断条件是容器中的元素的bookNumber属性是否等于用户输入的图书编号。一旦查找到对应的图书信息,就会输出该图书的详细信息,包括编号、名字、作者、出版社、出版日期、价格和购买数量。如果没有找到对应的图书信息,就会输出提示信息。

3.4 实现按图书号升序排序

void displayAllBookbyNum() {
    sort(shops.begin(), shops.end(), [](const Shop& s1, const Shop& s2) {
        return s1.bookNumber < s2
            .bookNumber;
        });
    for (auto& shop : shops) {
        cout << "该图书的信息如下:" << endl;
        cout << "编号: " << shop.bookNumber << endl;
        cout << "名字: " << shop.title << endl;
        cout << "作者: " << shop.author << endl;
        cout << "出版社: " << shop.publisher << endl;
        cout << "出版日期:" << shop.publicationDate << endl;
        cout << "价格:" << shop.price << endl;
        cout << "购买数量:" << shop.num << endl;
    }
}

这段代码实现了按照图书编号从小到大的顺序显示所有书店的图书信息。具体实现方式是使用sort函数shops向量中的所有元素按照图书编号升序排序,然后遍历输出每一个图书的编号、名字、作者、出版社、出版日期、价格和购买数量。lambda表达式作为sort函数的第二个参数,用于定义比较函数,比较函数的返回值决定了排序顺序

3.5 实现修改购物车里图书的信息

void modifyBook() {
    string bookNumber;
    cout << "请输入要修改的图书的编号:";
    cin >> bookNumber;

    for (Shop& shop : shops) {
        if (shop.bookNumber == bookNumber) {

            while (1) {
                cout << "请输入新的的图书的编号:";
                cin >> shop.bookNumber;
                if (shop.bookNumber.size() != 4) {
                    cout << "编号不规范,请你重新输入" << endl;
                }
                else {
                    break;
                }
            }
          int num;
          cout << "请输入该图书新的购买数量:";
          cin >> num;

          cout << "图书的购买金额为:" << num * shop.price << endl;
            return;

            shops.push_back(shop);
        }
    }

    cout << "系统中无该图书信息!";
}

用户需要输入新的图书编号和购买数量。如果输入的图书编号不规范(长度不为4),则会提示用户重新输入。否则,程序会更新当前图书的编号和数量,并计算出新的购买金额。最后,修改后的图书信息会被加入到存储图书信息的vector中。

3.6 实现删除购物车图书信息

void deleteBook() {
    string bookNumber;
    cout << "请输入你要移除的图书编号: ";
    cin >> bookNumber;
    //[]是捕获列表,局部变量放在这里
    auto it = find_if(shops.begin(), shops.end(), [bookNumber](const Shop& c) {
        return c.bookNumber == bookNumber;
        });

    if (it != shops.end()) {
        shops.erase(it);
        cout << "成功移出该图书!" << endl;
    }
    else {
        cout << "系统中无该图书信息!" << endl;
    }
}

这是一个函数,作用是从图书店库存中删除一本书。具体过程如下:

  1. 首先要求用户输入要删除的图书的编号,存储在 bookNumber 变量中。

  2. 使用 find_if 算法在 shops 容器中查找符合条件的元素,即 bookNumber 等于某个 Shop 对象的 bookNumber 成员变量值。

  3. 如果找到了符合条件的元素,则使用 erase 函数将其从 shops 容器中删除,并输出成功移除该图书的信息。

  4. 如果没有找到符合条件的元素,则输出系统中无该图书信息的提示信息。

4.系统全部源代码

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
struct Shop {
    string bookNumber;//图书编号
    string title;//图书名字
    string author;//图书作者
    string publisher;//图书出版社
    string publicationDate;//图书出版日期
    double price;//图书价格
    int num;//图书购买数量
    double money;//图书购买金额
};

vector<Shop> shops;

void addBook() {

    Shop newbook;


    cout << "请输入新图书的信息:" << endl;
    cout << "图书号: ";
    while (true) {
        cin >>newbook.bookNumber;
        for ( Shop& shop : shops) {
            if (shop.bookNumber == newbook.bookNumber) {
                cout << "图书编号已经存在,加入失败!";
                return;

            }
        }
        if (newbook.bookNumber.size()!= 4) {
            cout << "编号不规范,请你重新输入" << endl;
        }
        else {
            break;
        }
    }

    cout << "书名: ";
    cin >> newbook.title;

    cout << "作者: ";
    cin >> newbook.author;

    cout << "出版社: ";
    cin >> newbook.publisher;

    cout << "出版日期 (YYYY-MM-DD): ";
    cin >> newbook.publicationDate;

    cout << "价格: ";
    while (true)
    {
        cin >> newbook.price;
        if (newbook.price <= 0) {
            cout << "输入的价格不规范,请重新输入" << endl;
        }
        else {
            break;
        }
    }
    cout << "购买数量:";
    cin >> newbook.num;
    cout << "购买金额:" << newbook.price * newbook.num<<endl;

    //vector迭代器装的是对象
    shops.push_back(newbook);
    cout << endl;
}

void deleteBook() {
    string bookNumber;
    cout << "请输入你要移除的图书编号: ";
    cin >> bookNumber;

    //[]是捕获列表,局部变量放在这里
    auto it = find_if(shops.begin(), shops.end(), [bookNumber](const Shop& c) {
        return c.bookNumber == bookNumber;
        });

    if (it != shops.end()) {
        shops.erase(it);
        cout << "成功移出该图书!" << endl;
    }
    else {
        cout << "系统中无该图书信息!" << endl;
    }
}

void modifyBook() {
    string bookNumber;
    cout << "请输入要修改的图书的编号:";
    cin >> bookNumber;

    for (Shop& shop : shops) {
        if (shop.bookNumber == bookNumber) {

            while (1) {
                cout << "请输入新的的图书的编号:";
                cin >> shop.bookNumber;
                if (shop.bookNumber.size() != 4) {
                    cout << "编号不规范,请你重新输入" << endl;
                }
                else {
                    break;
                }
            }
          int num;
          cout << "请输入该图书新的购买数量:";
          cin >> num;

          cout << "图书的购买金额为:" << num * shop.price << endl;
            return;

            shops.push_back(shop);
        }
    }

    cout << "系统中无该图书信息!";
}

void searchBook() {
    string bookNumber;
    cout << "请输入图书编号进行查找: ";
    cin >> bookNumber;

    auto it = find_if(shops.begin(), shops.end(), [bookNumber](const Shop& c) {
        return c.bookNumber == bookNumber;
        });

    if (it != shops.end()) {
        cout << "该图书的信息如下:" << endl;
        cout << "编号: " << it->bookNumber<< endl;
        cout << "名字: " << it->title << endl;
        cout << "作者: " << it->author << endl;
        cout << "出版社: " << it->publisher << endl;
        cout << "出版日期:" << it->publicationDate << endl;
        cout << "价格:" << it->price << endl;
        cout << "购买数量:" << it->num << endl;
    }
    else {
        cout << "系统中无该图书信息!" << endl;
    }
}
void displayAllBookbyNum() {
    sort(shops.begin(), shops.end(), [](const Shop& s1, const Shop& s2) {
        return s1.bookNumber < s2
            .bookNumber;
        });
    for (auto& shop : shops) {
        cout << "该图书的信息如下:" << endl;
        cout << "编号: " << shop.bookNumber << endl;
        cout << "名字: " << shop.title << endl;
        cout << "作者: " << shop.author << endl;
        cout << "出版社: " << shop.publisher << endl;
        cout << "出版日期:" << shop.publicationDate << endl;
        cout << "价格:" << shop.price << endl;
        cout << "购买数量:" << shop.num << endl;
    }
}
void displayAllBook() {
    if (shops.empty()) {
        cout << "系统无图书信息" << endl;
    }
    for ( auto& shop : shops) {
        cout << "该图书的信息如下:" << endl;
        cout << "编号: " << shop.bookNumber << endl;
        cout << "名字: " << shop.title << endl;
        cout << "作者: " << shop.author << endl;
        cout << "出版社: " << shop.publisher << endl;
        cout << "出版日期:" << shop.publicationDate << endl;
        cout << "价格:" << shop.price << endl;
        cout << "购买数量:" << shop.num << endl;
    }
}

int main() {
    int choice;

    while (true) {
        cout << "<***** 公司信息管理系统 *****>" << endl;
        cout << "1. 新增购物车图书信息" << endl;
        cout << "2. 查找购物车图书信息" << endl;
        cout << "3. 按图书编号显示购物车图书信息" << endl;
        cout << "4. 修改购物车图书信息" << endl;
        cout << "5. 删除购物车图书信息" << endl;
        cout << "6. 显示所有公司公司信息" << endl;
        cout << "0. 退出系统" << endl;
        cout << "请输入你的选择: ";
        cin >> choice;

        switch (choice) {
        case 1:
            addBook();
            break;
        case 2:
            searchBook();
            break;
        case 3:
            displayAllBookbyNum();
            break;
        case 4:
            modifyBook();
            break;
        case 5:
            deleteBook();
            break;
        case 6:
            displayAllBook();
            break;
        case 0:
            return 0;
        default:
            cout << "你的输入有误,请重新输入!" << endl;
            break;
        }

        cout << endl;
    }
    return 0;
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
网上超市购物管理系统,具体功能如下: 1、商品基本信息 1)商品代码,商品名称,商品价格,商品库存。 2)设计约定:可以假定超市有 N 种商品,在系统启动时将这些商品信息加载到商品库中。 2、顾客信息 1)普通顾客属性:ID(顾客代码)(随机生成或流水号) 2)普通会员:ID(会员代码),会员姓名,会员电话,会员积分。 3)高级会员:ID(会员代号),会员姓名,会员电话,会员积分,副卡 ID。 3、购物管理 1)为每一个普通顾客生成临时顾客代码。 2)普通会员购买商品时,可享受 9.8 折,普通顾客在单次购物满 1000 元,添加个人基本信息后,可成为普通会员。 3)高级会员购买商品时,可享受 9.5 折,普通顾客在单次购物满 2000 元,添加个人基本信息后,或普通会员单次购物满 1000 元可成为高级会员。普通会员和高级会员可查询 1 年内的购物详单,会员购物积分按照 1 元 1 分计。 4)每次购物后,输出购物清单。包括顾客代号(会员代码)、商品的名称、代号、单价、折扣、数量、价格以及合计价格、购买时间。 4、店铺管理 1)实现商品信息的添加、修改、删除、查询的功。可查询库存少于一定数量的商品。 2)实现会员资料的查询、修改、删除;实现会员整理的功能,对于 1 年内无购物的会员,进行自动删除。 3)可以按照时间区间统计,包括:销售总额;分类统计商品的销售情况;统计对会员的让利情况。
收藏夹和购物车系统的实现  收藏夹子系统 (1) 【收藏指定图书】能收藏一本图书,并记录收藏日期(某年某月某日,如2016-12-12。所有日期都采用人工定义方式输入,不取机器日期)。图书的信息包括图书号(是唯一的)、书名、作者、出版社、出版日期、价格。 (2) 【查询指定图书】能按照图书号查询显示收藏夹中图书的相关信息(也可以扩展功能为按照书名、作者、出版社、出版日期、指定价格大小范围查询显示收藏夹中图书的相关信息)。 (3) 【按日期显示所有图书】能按照收藏日期的先后显示输出所收藏的所有图书的相关信息。 (4) 【移出收藏夹】可以把不想收藏的某一本指定图书号的图书直接移出收藏夹。 (5) 【加入购物车】将收藏夹中的某一本指定图书号的图书加入到购物车。 (6) 【按价格显示所有图书】能按照价格的大小显示输出收藏夹中的所有图书的相关信息。  购物车系统 (1) 【直接加入购物车】把准备购买的一本图书直接加入购物车,同时记录加入购物车的日期。图书的信息包括图书号(是唯一的)、书名、作者、出版社、出版日期、价格、购买数量、购买金额(自动计算)。 (2) 【查询指定图书】能按照图书号查询显示购物车中准备购买的图书的相关信息(也可以扩展功能为按照书名、作者、出版社、出版日期、指定价格大小范围查询显示购物车图书的相关信息)。 (3) 【修改购买数量】可以修改购物车中准备购买的某一本指定图书号的图书的数量,同时自动计算修改购买金额(购买金额=购买数量*价格)。 (4) 【删除指定图书并移到收藏夹】把购物车中的某一本指定图书号的图书删除并移到收藏夹。 (5) 【直接删除指定图书】可以把不想购买的某一本指定图书号的图书购物车中删除。 (6) 【按图书号显示所有图书】把购物车中所有图书按照图书号列出每一本图书图书号、书名、作者、出版社、出版日期、价格、购买数量、购买金额,最后列出总共有多少本图书、总金额是多少。
很抱歉,我没有办法为您提供完整的 C++ 程序设计高校员工信息管理系统代码。但是,我可以为您提供一些实现该系统的思路和可能用到的 C++ 语法。 1. 数据结构设计 员工信息管理系统需要存储员工的基本信息,例如姓名、年龄、性别、职位、工资等。为了方便管理和查询,可以使用结构体或类来表示员工信息。 ```c++ struct Employee { string name; int age; char gender; string position; float salary; }; ``` 2. 功能实现 员工信息管理系统需要支持添加、删除、修改和查询员工信息的功能。可以使用数组或向量来存储员工信息,使用循环和条件语句来实现不同的功能。 ```c++ vector<Employee> employees; // 添加员工信息 void addEmployee() { Employee e; cout << "请输入员工姓名:"; cin >> e.name; cout << "请输入员工年龄:"; cin >> e.age; cout << "请输入员工性别(M/F):"; cin >> e.gender; cout << "请输入员工职位:"; cin >> e.position; cout << "请输入员工工资:"; cin >> e.salary; employees.push_back(e); cout << "添加成功!" << endl; } // 删除员工信息 void removeEmployee() { string name; cout << "请输入要删除的员工姓名:"; cin >> name; bool found = false; for (auto it = employees.begin(); it != employees.end(); it++) { if (it->name == name) { employees.erase(it); found = true; break; } } if (found) { cout << "删除成功!" << endl; } else { cout << "未找到该员工信息!" << endl; } } // 修改员工信息 void modifyEmployee() { string name; cout << "请输入要修改的员工姓名:"; cin >> name; bool found = false; for (auto& e : employees) { if (e.name == name) { cout << "请输入员工年龄:"; cin >> e.age; cout << "请输入员工性别(M/F):"; cin >> e.gender; cout << "请输入员工职位:"; cin >> e.position; cout << "请输入员工工资:"; cin >> e.salary; found = true; break; } } if (found) { cout << "修改成功!" << endl; } else { cout << "未找到该员工信息!" << endl; } } // 查询员工信息 void queryEmployee() { string name; cout << "请输入要查询的员工姓名:"; cin >> name; bool found = false; for (auto& e : employees) { if (e.name == name) { cout << "姓名:" << e.name << endl; cout << "年龄:" << e.age << endl; cout << "性别:" << e.gender << endl; cout << "职位:" << e.position << endl; cout << "工资:" << e.salary << endl; found = true; break; } } if (!found) { cout << "未找到该员工信息!" << endl; } } ``` 3. 用户界面设计 为了方便用户操作,可以使用菜单来展示不同的功能选项。 ```c++ int main() { while (true) { cout << "员工信息管理系统" << endl; cout << "1. 添加员工信息" << endl; cout << "2. 删除员工信息" << endl; cout << "3. 修改员工信息" << endl; cout << "4. 查询员工信息" << endl; cout << "5. 退出系统" << endl; cout << "请选择操作:"; int choice; cin >> choice; switch (choice) { case 1: addEmployee(); break; case 2: removeEmployee(); break; case 3: modifyEmployee(); break; case 4: queryEmployee(); break; case 5: return 0; default: cout << "无效操作,请重新选择!" << endl; } } } ``` 以上是对 C++ 程序设计高校员工信息管理系统的一个简单实现,仅供参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值