设备管理系统
-
- #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 (Device device : devices) {
- device.display();
- cout << endl;
- }
- }
-
- // 修改设备信息
- void modifyDevice(string number, string newName, string newUser, string newDept, int newQty, string newDate, double newPrice) {
- for (Device& device : devices) {
- if (device.deviceNumber == number) {
- device.deviceName = newName;
- device.user = newUser;
- device.department = newDept;
- device.quantity = newQty;
- device.purchaseDate = newDate;
- device.price = newPrice;
- break;
- }
- }
- }
-
- // 删除设备信息
- void deleteDevice(string number) {
- for (auto iter = devices.begin(); iter != devices.end(); ++iter) {
- if (iter->deviceNumber == number) {
- devices.erase(iter);
- break;
- }
- }
- }
-
- // 计算设备总金额
- double calculateTotalValue() {
- double totalValue = 0.0;
- for (Device device : devices) {
- totalValue += device.getPrice() * device.quantity;
- }
- return totalValue;
- }
-
- // 按设备种类进行分类统计
- void groupByDeviceName() {
- // TODO: 实现按设备种类进行分类统计
- }
-
- // 按所属部门进行分类统计
- void groupByDepartment() {
- // TODO: 实现按所属部门进行分类统计
- }
-
- // 将设备信息保存到文件
- void saveToFile(string filename) {
- ofstream outfile(filename);
- if (outfile.is_open()) {
- for (Device device : devices) {
- outfile << device.deviceNumber << "," << device.deviceName << "," << device.user << ","
- << device.department << "," << device.quantity << "," << device.purchaseDate << ","
- << device.price << endl;
- }
- outfile.close();
- }
- else {
- cout << "无法打开文件" << filename << "进行保存" << endl;
- }
- }
-
- // 从文件中加载设备信息
- void loadFromFile(string filename) {
- ifstream file(filename);
- 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) {
- device.quantity = stoi(token);
- }
- else if (device.purchaseDate.empty()) {
- device.purchaseDate = token;
- }
- else if (device.price == 0.0) {
- device.price = stod(token);
- }
- }
-
- 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;
- }
-