2401_85395700 2024-06-23 19:14 采纳率: 0%
浏览 14
已结题

关于#c++#的问题:水果店管理系统

水果店管理系统
问题描述:设计并实现一个水果店管理系统,水果需设置不同的类型,系统可以实现对水果信息的添加、修改、删除、查找等功能,水果信息需要以文件方式保存到计算机硬盘中。
基本功能:
(1)水果要设置不同的类型,如苹果、梨、水蜜桃、香蕉等;
(2)水果信息包括:编号、水果名、数量、等级、价格等;
(3)水果信息要保存在磁盘中;
(4)可以统计一周和一个月的销售额;
(5)系统界面应该尽量友好,方便使用。
设计要求
1、系统实现语言为C++;
2、系统需正确设计基类和派生类;
3、系统需正确使用函数重载和虚函数;
4、每个题目的基本功能必须实现;
5、代码量最低要求:300行;
6、要求设计并实现一个能够进行功能选择的界面,即菜单;
7.描述程序的设计思想和设计方法
8.画出程序流程图,并对程序流程进行必要说明。

  • 写回答

18条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-23 19:14
    关注

    引自免费微信小程序:皆我百晓生

    好的,让我为您设计一个简单的水果店管理系统。我们将创建一个名为FruitStoreManager的类,它将包含一些成员变量和公共方法。我们还将创建两个子类:ApplePear,分别代表苹果和梨。这些子类将继承自Fruit类。

    首先,我们需要定义Fruit类:

    #include <iostream>
    using namespace std;
    
    // 定义Fruit类
    class Fruit {
    public:
        string name;
        int quantity;
        float price;
    
        // 构造函数
        Fruit(string n, int q, float p) : name(n), quantity(q), price(p) {}
    
        // 输出属性
        void displayInfo() const {
            cout << "名称: " << name << ", 数量: " << quantity << ", 价格: $" << price << endl;
        }
    };
    

    接下来,我们定义FruitStoreManager类:

    #include <fstream>
    #include <string>
    
    class FruitStoreManager {
    private:
        vector<Fruit> fruits; // 存储所有水果的信息
        ofstream file; // 文件流对象用于保存数据
    
    public:
        // 构造函数
        FruitStoreManager(const string& filename = "fruit_data.txt") : file(filename) {}
    
        // 添加水果的方法
        void addFruit(Fruit fruit) {
            fruits.push_back(fruit);
            cout << "已成功添加" << fruit.name << "到库存。" << endl;
        }
    
        // 修改水果的数量和价格的方法
        void modifyQuantityAndPrice(int id, int newQuantity, float newPrice) {
            for (int i = 0; i < fruits.size(); ++i) {
                if (fruits[i].id == id) {
                    fruits[i].quantity = newQuantity;
                    fruits[i].price = newPrice;
                    break;
                }
            }
        }
    
        // 删除指定ID的水果的方法
        void deleteFruit(int id) {
            for (auto it = fruits.begin(); it != fruits.end(); ++it) {
                if (it->id == id) {
                    fruits.erase(it);
                    break;
                }
            }
        }
    
        // 查找指定ID的水果的方法
        bool findFruitById(int id) {
            for (const auto& fruit : fruits) {
                if (fruit.id == id) {
                    return true;
                }
            }
            return false;
        }
    
        // 打印全部水果的方法
        void printAllFruits() const {
            for (const auto& fruit : fruits) {
                fruit.displayInfo();
            }
        }
    
        // 将水果数据写入文件的方法
        void saveToFile() {
            file.open("fruit_data.txt", ios::app); // 打开文件追加模式
            for (const auto& fruit : fruits) {
                file << fruit.name << "," << fruit.quantity << "," << fruit.price << "\n"; // 写入每条记录
            }
            file.close();
        }
    
        // 读取文件中的水果数据的方法
        vector<Fruit> readFromFile() {
            ifstream file("fruit_data.txt");
            vector<Fruit> temp;
            if (!file.is_open()) {
                cerr << "打开文件失败" << endl;
                return temp;
            }
            string line;
            while (getline(file, line)) {
                stringstream ss(line);
                string name, quantity, price;
                getline(ss, name, ',');
                getline(ss, quantity, ',');
                getline(ss, price);
                Fruit fruit(name, stoi(quantity), stof(price));
                temp.push_back(fruit);
            }
            file.close();
            return temp;
        }
    
        // 主函数
        static void main() {
            FruitStoreManager manager("fruit_data.txt"); // 创建管理器实例
            manager.addFruit(new Apple("苹果", 100, 1.99f)); // 添加苹果
            manager.modifyQuantityAndPrice(1, 150, 2.99f); // 修改苹果的数量和价格
            manager.deleteFruit(2); // 删除梨
            manager.printAllFruits(); // 打印全部水果
            manager.saveToFile(); // 将水果数据保存到文件
            manager.readFromFile(); // 从文件中读取数据
        }
    };
    

    这个程序的主要思路是通过类库和面向对象编程原则来设计和实现水果店管理系统。我们使用了模板类Fruit来封装水果的基本信息,然后根据不同的水果类型创建了子类ApplePear。接着,我们定义了一个FruitStoreManager类来管理和操作所有的水果信息。通过addFruit, modifyQuantityAndPrice, deleteFruit, findFruitById, 和 printAllFruits等方法实现了各种功能。

    为了简化示例,这里没有处理异常情况,也没有提供用户交互界面。实际应用时,可以根据需求进一步完善和扩展这部分内容。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月24日
  • 创建了问题 6月23日

悬赏问题

  • ¥15 c# ReportDocument 类执行方法PrintToPrinter()方法时报错
  • ¥15 关于#python#的问题
  • ¥15 主机可以ping通路由器但是连不上网怎么办
  • ¥15 数据库一张以时间排好序的表中,找出多次相邻的那些行
  • ¥50 关于DynamoRIO处理多线程程序时候的问题
  • ¥15 kubeadm部署k8s出错
  • ¥15 Abaqus打不开cae文件怎么办?
  • ¥20 双系统开机引导中windows系统消失问题?
  • ¥15 小程序准备上线,软件开发公司需要提供哪些资料给甲方
  • ¥15 关于生产日期批次退货退款,库存回退的问题