每一条设备信息:设备号,设备名称,领用人,所属部门,数量,购买时间,价格
1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;
2、建立一个文件,将每条记录信息写入文件中并能显示于屏幕上;
3、能对文件进行补充、修订、删除,能统计所有设备的总价值;
4、进一步要求:完成设备按种类、按所属部门进行统计。
人机对话界面:
1.添加设备信息
2.显示设备信息
3.修改设备信息
4.删除设备信息
5.计算设备总金额
6.按照设备种类进行分类
7.按照设备所属部门进行分类
要求:适配于devc++环境,采用c++语言风格进行设计,采用类
c++设备信息管理系统设计
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答 默认 最新
- Minuw 2023-06-27 14:39关注
c++风格 采用类是吧
#include<bits/stdc++.h> #include <iostream> #include <fstream> #include <vector> #include <string> using namespace std; class Device { public: string deviceNumber; string deviceName; string user; string department; int quantity; string purchaseDate; double price; Device() {} // 默认构造函数 // 构造函数 Device(string number, string name, string u, string dept, int qty, string date, double p) : deviceNumber(number), deviceName(name), user(u), department(dept), quantity(qty), purchaseDate(date), price(p) {} // 显示设备信息 void display() { cout << "设备号: " << deviceNumber << endl; cout << "设备名称: " << deviceName << endl; cout << "领用人: " << user << endl; cout << "所属部门: " << department << endl; cout << "数量: " << quantity << endl; cout << "购买时间: " << purchaseDate << endl; cout << "价格: " << price << endl; } // 获取设备价格 double getPrice() { return price; } // 获取设备所属部门 string getDepartment() { return department; } }; class DeviceManagementSystem { vector<Device> devices; public: // 添加设备信息 void addDevice(Device device) { devices.push_back(device); } // 显示所有设备信息 void displayDevices() { for(int i=0;i<devices.size();i++) { devices[i].display(); cout<<endl; } } // 修改设备信息 void modifyDevice(string number, string newName, string newUser, string newDept, int newQty, string newDate, double newPrice) { for(int i=0;i<devices.size();i++) { if (devices[i].deviceNumber == number) { devices[i].deviceName = newName; devices[i].user = newUser; devices[i].department = newDept; devices[i].quantity = newQty; devices[i].purchaseDate = newDate; devices[i].price = newPrice; break; } } } // 删除设备信息 void deleteDevice(string number) { for(int i=0;i<devices.size();i++) { if(devices[i].deviceNumber==number) { devices.erase(devices.begin()+i+1); } } } // 计算设备总金额 double calculateTotalValue() { double totalValue = 0.0; for(int i=0;i<devices.size();i++) { totalValue += devices[i].getPrice() * devices[i].quantity; } return totalValue; } // 按设备种类进行分类统计 void groupByDeviceName() { // TODO: 实现按设备种类进行分类统计 cout << "按设备种类进行分类" << endl; } // 按所属部门进行分类统计 void groupByDepartment() { // TODO: 实现按所属部门进行分类统计 cout << "按所属部门进行分类" << endl; } // 将设备信息保存到文件 void saveToFile(string filename) { ofstream outfile("devices.txt"); if (outfile.is_open()) { for(int i=0;i<devices.size();i++) { outfile << devices[i].deviceNumber << "," << devices[i].deviceName << "," << devices[i].user << "," << devices[i].department << "," << devices[i].quantity << "," << devices[i].purchaseDate << "," << devices[i].price << endl; } outfile.close(); } else { cout << "无法打开文件" << filename << "进行保存" << endl; } } // 从文件中加载设备信息 void loadFromFile(string filename) { ifstream file("devices.txt"); if (file.is_open()) { devices.clear(); string line; while (getline(file, line)) { Device device; size_t pos = 0; string token; // 按逗号分隔读取设备信息 while ((pos = line.find(',')) != string::npos) { token = line.substr(0, pos); line.erase(0, pos + 1); // 根据数据顺序填充设备对象 if (device.deviceNumber.empty()) { device.deviceNumber = token; } else if (device.deviceName.empty()) { device.deviceName = token; } else if (device.user.empty()) { device.user = token; } else if (device.department.empty()) { device.department = token; } else if (device.quantity == 0) { stringstream ss(token); ss>>device.quantity; } else if (device.purchaseDate.empty()) { device.purchaseDate = token; } else if (device.price == 0.0) { stringstream ss(token); ss>>device.price; } } devices.push_back(device); } file.close(); cout << "设备信息已从文件加载。" << endl; } else { cout << "无法打开文件。" << endl; } } }; int main() { DeviceManagementSystem dms; dms.loadFromFile("devices.txt"); // 从文件中加载设备信息 int choice; do { cout << "人机对话界面:" << endl; cout << "请选择操作:" << endl; cout << "1. 添加设备信息" << endl; cout << "2. 显示设备信息" << endl; cout << "3. 修改设备信息" << endl; cout << "4. 删除设备信息" << endl; cout << "5. 计算设备总金额" << endl; cout << "6. 按照设备种类进行分类" << endl; cout << "7. 按照设备所属部门进行分类" << endl; cout << "0. 退出系统" << endl; cout << "请输入选项:"; cin >> choice; switch (choice) { case 1: { string number, name, user, dept, date; int quantity; double price; cout << "请输入设备号:"; cin >> number; cout << "请输入设备名称:"; cin >> name; cout << "请输入领用人:"; cin >> user; cout << "请输入所属部门:"; cin >> dept; cout << "请输入数量:"; cin >> quantity; cout << "请输入购买时间:"; cin >> date; cout << "请输入价格:"; cin >> price; dms.addDevice(Device(number, name, user, dept, quantity, date, price)); cout << "设备信息已添加" << endl; break; } case 2: dms.displayDevices(); break; case 3: { string number, newName, newUser, newDept, newDate; int newQty; double newPrice; cout << "请输入要修改的设备号:"; cin >> number; cout << "请输入新的设备名称:"; cin >> newName; cout << "请输入新的领用人:"; cin >> newUser; cout << "请输入新的所属部门:"; cin >> newDept; cout << "请输入新的数量:"; cin >> newQty; cout << "请输入新的购买时间:"; cin >> newDate; cout << "请输入新的价格:"; cin >> newPrice; dms.modifyDevice(number, newName, newUser, newDept, newQty, newDate, newPrice); cout << "设备信息已修改" << endl; break; } case 4: { string number; cout << "请输入要删除的设备号:"; cin >> number; dms.deleteDevice(number); cout << "设备信息已删除" << endl; break; } case 5: cout << "设备总金额为:" << dms.calculateTotalValue() << endl; break; case 6: dms.groupByDeviceName(); break; case 7: dms.groupByDepartment(); break; case 0: dms.saveToFile("devices.txt"); // 将设备信息保存到文件 cout << "谢谢使用,再见!" << endl; break; default: cout << "无效选项,请重新输入" << endl; break; } cout << endl; } while (choice != 0); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
- ¥15 Linux权限管理相关操作(求解答)
- ¥15 Bug traq 数据包 大概什么价
- ¥15 在anaconda上pytorch和paddle paddle下载报错
- ¥25 自动填写QQ腾讯文档收集表
- ¥15 DbVisualizer Pro 12.0.7 sql commander光标错位 显示位置与实际不符
- ¥15 android 打包报错
- ¥15 关于stm32的问题
- ¥15 ncode振动疲劳分析中,noisefloor如何影响PSD函数?
- ¥50 寻找fpga的benchmark