#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <cstdlib>
#include "goods.h"
#include "trade.h"
using namespace std;
bool fileExists(const string& filename) {
ifstream file(filename.c_str());
return file.good();
}
void createFileIfNotExists(const string& filename) {
if (!fileExists(filename)) {
ofstream file(filename.c_str());
if (file) {
cout << "创建文件: " << filename << endl;
} else {
cerr << "创建失败: " << filename << endl;
}
}
}
//打印操作界面
void display() {
system("cls"); // 清空控制台
cout << "********************************\n";
cout << "| 欢迎使用物品管理系统 |\n";
cout << "********************************\n";
cout << "| 1. 录入物品 |\n";
cout << "| 2. 修改物品 |\n";
cout << "| 3. 查询物品 |\n";
cout << "| 4. 删除物品 |\n";
cout << "| 5. 购买物品 |\n";
cout << "| 6. 删除交易记录 |\n";
cout << "| 7. 显示物品 |\n";
cout << "| 8. 退出系统 |\n";
cout << "********************************\n";
cout << "请选择操作:";
}
//添加物品信息
void add_goods(Goods& goods) {
int num;
string name, pubName, contact, time;
double new_price;
int new_quantity;
cout << "请输入物品信息:\n";
cout << "编号: ";
cin >> num;
cin.ignore(); // 忽略输入缓冲区中的换行符
cout << "名称: ";
getline(cin, name);
cout << "单价: ";
cin >> new_price;
cout << "库存数量: ";
cin >> new_quantity;
cin.ignore(); // 忽略输入缓冲区中的换行符
cout << "发布者姓名: ";
getline(cin, pubName);
cout << "联系电话: ";
getline(cin, contact);
cout << "发布时间: ";
getline(cin, time);
goods.addItem(num, name, new_price, new_quantity, pubName, contact, time); // 将物品信息添加到 goodsList 中
}
//修改物品信息
void update_goods(Goods& goods) {
int num;
string fieldName, newValue;
cout << "请输入要修改的物品信息编号: ";
cin >> num;
cin.ignore(); // 清空输入缓冲区
cout << "请选择要修改的项:\n";
cout << "1. 名称\n";
cout << "2. 单价\n";
cout << "3. 库存量\n";
cout << "4. 发布者姓名\n";
cout << "5. 联系电话\n";
cout << "6. 发布时间\n";
cout << "请输入操作编号: ";
int option;
cin >> option;
cin.ignore(); // 清空输入缓冲区
switch (option) {
case 1:
fieldName = "itemName";
break;
case 2:
fieldName = "unitPrice";
break;
case 3:
fieldName = "stockQuantity";
break;
case 4:
fieldName = "publisherName";
break;
case 5:
fieldName = "publisherContact";
break;
case 6:
fieldName = "publishTime";
break;
default:
cout << "错误:无效的操作编号\n";
return;
}
cout << "请输入新的内容: ";
getline(cin, newValue);
goods.update_item(num, fieldName, newValue);
}
//查询物品
void find_goods(Goods& goods) {
int num;
cout << "请输入物品信息编号: ";
cin >> num;
cin.ignore(); // 清空输入缓冲区
goods.find_item(num);
}
//删除物品
void delete_goods(Goods& goods) {
int num;
cout << "请输入物品信息编号: ";
cin >> num;
cin.ignore(); // 清空输入缓冲区
goods.delete_item(num);
}
//购买二手物品
void buy_goods(Goods& goods,Trade& trade) {
int flag;
Goods::Item good;
int num,number;
string bName, bContact,time;
cout << "请输入物品信息编号: ";
cin >> num;
cin.ignore(); // 清空输入缓冲区
good=goods.find_item(num);
if(good.itemNumber!=-1) {
cout << "请输入物购买数量: ";
cin >> number;
cin.ignore(); // 清空输入缓冲区
flag=goods.sell_item(num,number);
if(flag==0) {
return;
}
cout<<"总价:"<<number*good.unitPrice<<endl;
cout << "购买者姓名: ";
getline(cin, bName);
cout << "联系电话: ";
getline(cin, bContact);
cout << "购买时间: ";
getline(cin, time);
if(flag) {
trade.addItem(good.itemNumber, good.itemName, good.unitPrice, number, bName, bContact,time);
};
}
}
//删除交易信息
void delete_trade(Trade& trade) {
int num;
cout << "请输入物品信息编号: ";
cin >> num;
cin.ignore(); // 清空输入缓冲区
trade.delete_item(num);
}
int main() {
int choice;
bool running = true;
Goods goodsList;
Trade tradeList;
// 检查并创建csv
createFileIfNotExists("goods.csv");
createFileIfNotExists("trade.csv");
// 从文件中读取物品信息
goodsList.getGoods("goods.csv");
tradeList.getTrade("trade.csv");
//循环执行操作
while (running) {
display();
cin >> choice;
system("cls");
switch (choice) {
case 1:
add_goods(goodsList);
break;
case 2:
cout << "录入物品信息\n";
update_goods(goodsList);
break;
case 3:
cout << "查询物品信息\n";
find_goods(goodsList);
break;
case 4:
cout << "删除物品信息\n";
goodsList.printItems();
delete_goods(goodsList);
break;
case 5:
cout << "购买物品\n";
goodsList.printItems();
buy_goods(goodsList,tradeList);
break;
case 6:
cout << "删除物品交易信息\n";
tradeList.printItems();
delete_trade(tradeList);
break;
case 7:
cout << "显示物品信息\n";
cout << "物品信息:\n";
goodsList.printItems();
cout << "\n交易记录:\n";
tradeList.printItems();
break;
case 8:
cout << "退出系统\n";
running = false; // 结束循环,退出系统
break;
default:
cout << "无效操作,请重新选择\n";
break;
}
//保存物品信息到文件
goodsList.setGoods("goods.csv");
//保存交易项到文件
tradeList.setTrade("trade.csv");
system("pause");
}
return 0;
}
//示例
// 添加物品信息
//goodsList.addItem(1001, "笔记本电脑", 10.99, 50, "张三", "123-456-7890", "2024-05-11");
//goodsList.addItem(1002, "智能手机", 19.99, 30, "李四", "987-654-3210", "2024-05-12");
//goodsList.setGoods("goods.csv");
// 创建两个交易项
//tradeList.addItem(1001, "笔记本电脑", 1200.50, 2, "张三", "123-456-7890", "2024-05-11");
//tradeList.addItem(1002, "智能手机", 899.99, 1, "李四", "987-654-3210", "2024-05-12");
//tradeList.setTrade("trade.csv");
没有合适的资源?快使用搜索试试~ 我知道了~
C++期末/课程设计:二手物品交易管理系统(DevC++)
共14个文件
o:3个
cpp:3个
h:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
2 下载量 85 浏览量
2024-05-15
13:13:45
上传
评论
收藏 529KB RAR 举报
温馨提示
1、信息类型与属性 物品信息:物品编号、物品名称、物品单价、库存数量、发布者姓名、发布者联系电话、发布时间 物品交易信息:物品编号、物品名称、物品单价、购买数量、总价、购买者姓名、购买者联系电话、购买时间 2、功能描述 (1)物品信息的录入、修改、删除和查询 (2)购买二手物品:输入物品编号,自动显示物品名称和物品价格。输入购买数量,自动计算总价 (3)完成物品交易信息后,录入物品交易信息,自动修改物品库存数量 (4)删除物品交易信息 (5)退出系统
资源推荐
资源详情
资源评论
收起资源包目录
物品管理系统.rar (14个子文件)
物品管理系统
trade.cpp 3KB
goods.o 105KB
物品管理系统.dev 1KB
trade.o 97KB
trade.csv 100B
main.cpp 6KB
goods.h 1KB
Makefile.win 1KB
main.o 103KB
goods.cpp 5KB
物品管理系统.layout 356B
物品管理系统.exe 2.16MB
goods.csv 108B
trade.h 936B
共 14 条
- 1
资源评论
a辰龙a
- 粉丝: 2757
- 资源: 58
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功