用c++写一个网上购书控制台系统

时间: 2023-12-31 19:05:39 浏览: 34
好的,我可以为您提供一个简单的参考实现,但由于篇幅限制,无法提供完整的代码。 首先,我们需要定义一些数据结构来存储书籍信息和用户信息。例如: ```c++ struct Book { string name; string author; int price; int quantity; }; struct User { string name; string password; vector<Book> cart; }; ``` 其中,Book 结构体存储书籍的名称、作者、价格和库存量,User 结构体存储用户的用户名、密码和购物车中的书籍列表。 接下来,我们需要实现一些功能函数,例如: - 登录功能函数:用户输入用户名和密码,程序根据用户输入检查用户信息是否正确,并返回相应的用户结构体。 - 注册功能函数:用户输入用户名和密码,程序将新用户信息存储到用户信息列表中。 - 浏览书籍功能函数:用户输入关键字,程序根据关键字从书籍信息列表中查询符合条件的书籍,并将结果输出到控制台。 - 加入购物车功能函数:用户输入要购买的书籍名称和数量,程序根据用户输入从书籍信息列表中查询符合条件的书籍,并将其添加到用户的购物车中。 - 查看购物车功能函数:程序输出用户购物车中的书籍列表和总价格。 - 结算功能函数:用户输入支付方式,程序根据用户输入计算总价并输出到控制台。 以上只是一个简单的购书系统的功能,您可以根据实际情况进行扩展和改进。 下面是一个简单的参考实现,供您参考: ```c++ #include <iostream> #include <vector> #include <string> using namespace std; struct Book { string name; string author; int price; int quantity; }; struct User { string name; string password; vector<Book> cart; }; vector<Book> books; vector<User> users; User* login() { string name, password; cout << "请输入用户名:"; cin >> name; cout << "请输入密码:"; cin >> password; for (auto& user : users) { if (user.name == name && user.password == password) { return &user; } } cout << "用户名或密码错误!" << endl; return nullptr; } void registerUser() { string name, password; cout << "请输入用户名:"; cin >> name; cout << "请输入密码:"; cin >> password; for (auto& user : users) { if (user.name == name) { cout << "用户名已存在!" << endl; return; } } users.push_back({ name, password }); cout << "注册成功!" << endl; } void addBook() { string name, author; int price, quantity; cout << "请输入书名:"; cin >> name; cout << "请输入作者:"; cin >> author; cout << "请输入价格:"; cin >> price; cout << "请输入数量:"; cin >> quantity; for (auto& book : books) { if (book.name == name && book.author == author) { book.quantity += quantity; cout << "添加成功!" << endl; return; } } books.push_back({ name, author, price, quantity }); cout << "添加成功!" << endl; } void browseBooks() { string keyword; cout << "请输入关键字:"; cin >> keyword; for (auto& book : books) { if (book.name.find(keyword) != string::npos || book.author.find(keyword) != string::npos) { cout << book.name << "\t" << book.author << "\t" << book.price << "\t" << book.quantity << endl; } } } void addToCart(User* user) { string name; int quantity; cout << "请输入书名:"; cin >> name; cout << "请输入数量:"; cin >> quantity; for (auto& book : books) { if (book.name == name) { if (book.quantity < quantity) { cout << "库存不足!" << endl; return; } book.quantity -= quantity; for (auto& b : user->cart) { if (b.name == name) { b.quantity += quantity; cout << "添加成功!" << endl; return; } } user->cart.push_back({ name, book.author, book.price, quantity }); cout << "添加成功!" << endl; return; } } cout << "书籍不存在!" << endl; } void viewCart(User* user) { int total = 0; for (auto& book : user->cart) { cout << book.name << "\t" << book.author << "\t" << book.price << "\t" << book.quantity << endl; total += book.price * book.quantity; } cout << "总价:" << total << endl; } void checkout(User* user) { int total = 0; for (auto& book : user->cart) { total += book.price * book.quantity; } cout << "总价:" << total << endl; cout << "请选择支付方式:" << endl; cout << "1. 支付宝" << endl; cout << "2. 微信" << endl; int choice; cin >> choice; switch (choice) { case 1: cout << "使用支付宝支付成功!" << endl; break; case 2: cout << "使用微信支付成功!" << endl; break; default: cout << "无效的选择!" << endl; break; } user->cart.clear(); } int main() { books.push_back({ "C++ Primer", "Lippman", 99, 10 }); books.push_back({ "Effective C++", "Meyers", 59, 5 }); books.push_back({ "The C++ Programming Language", "Stroustrup", 89, 8 }); while (true) { cout << "请选择操作:" << endl; cout << "1. 登录" << endl; cout << "2. 注册" << endl; cout << "3. 添加书籍" << endl; cout << "4. 浏览书籍" << endl; cout << "5. 加入购物车" << endl; cout << "6. 查看购物车" << endl; cout << "7. 结算" << endl; cout << "8. 退出" << endl; int choice; cin >> choice; switch (choice) { case 1: { auto user = login(); if (user) { cout << "登录成功!" << endl; while (true) { cout << "请选择操作:" << endl; cout << "1. 浏览书籍" << endl; cout << "2. 加入购物车" << endl; cout << "3. 查看购物车" << endl; cout << "4. 结算" << endl; cout << "5. 注销" << endl; int choice2; cin >> choice2; switch (choice2) { case 1: browseBooks(); break; case 2: addToCart(user); break; case 3: viewCart(user); break; case 4: checkout(user); break; case 5: cout << "注销成功!" << endl; goto END_LOGIN; default: cout << "无效的选择!" << endl; break; } } } break; } case 2: registerUser(); break; case 3: addBook(); break; case 4: browseBooks(); break; case 5: cout << "请先登录!" << endl; break; case 6: cout << "请先登录!" << endl; break; case 7: cout << "请先登录!" << endl; break; case 8: return 0; default: cout << "无效的选择!" << endl; break; } } END_LOGIN: goto END_MAIN; END_MAIN: return 0; } ``` 注意:本实现中使用了 `goto` 语句,这是为了方便实现简单的注销功能,实际开发中不建议使用 `goto` 语句。

相关推荐

最新推荐

recommend-type

linux系统中c++写日志文件功能分享

主要介绍了linux系统中c++写日志文件功能,简化了glog,只保留了写日志文件的功能,只是改写了linux版本,需要的朋友可以参考下
recommend-type

C/C++实现控制台输出不同颜色字体的方法

主要介绍了C/C++实现控制台输出不同颜色字体的方法,涉及C++控制台文字属性相关设置操作技巧,需要的朋友可以参考下
recommend-type

C++ 学生成绩管理系统设计报告书

内含4个类,各自具有其属性和行为。 基本实现了: (1)学生基本信息、考试科目及成绩的信息录入。 (2)已有学生信息的显示。 (3)学生基本信息的读取和保存输入数据等功能 (4)学生基本信息的查询与修改。可以对已有的...
recommend-type

C++如何判断一个数字是否为质数

主要为大家详细介绍了C++如何判断一个数字是否为质数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

C++实现病人就医管理系统

主要为大家详细介绍了C++语言实现病人就医管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB取整函数与Web开发的作用:round、fix、floor、ceil在Web开发中的应用

![MATLAB取整函数与Web开发的作用:round、fix、floor、ceil在Web开发中的应用](https://img-blog.csdnimg.cn/2020050917173284.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thbmdqaWVsZWFybmluZw==,size_16,color_FFFFFF,t_70) # 1. MATLAB取整函数概述** MATLAB取整函数是一组强大的工具,用于对数值进行
recommend-type

我想做python的算法工程师,我应该学什么?学习的顺序是什么?网上有什么推荐的免费课程吗?回答具体精确一点不要太笼统

对于想要成为 Python 算法工程师的人来说,他们应该先从掌握 Python 的基础语法开始,然后学习数据结构和算法,并且要深入了解 Python 中的一些科学计算和数据处理库,比如 NumPy、Pandas 等。 学习的顺序可以是先学习基础语法和编程技巧,然后再学习数据结构和算法相关的知识,最后深入了解数据处理和科学计算相关的库。 对于免费课程的推荐,我建议你可以先去 Coursera、edX、Udacity 等网站上寻找相关课程,这些网站上有很多优质的 Python 编程和算法课程,你可以根据自己的需求和学习进度进行选择。此外,还可以考虑一些在线编程网站,如 HackerRank、L
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。