以下是一个基于C++的面包店销售管理程序的设计:

#include <iostream>
#include <fstream>
#include <vector>
#include <iomanip>
#include <ctime>

using namespace std;

// 商品信息结构体
struct Item {
    int id;
    string name;
    string productionDate;
    string expirationDate;
    int stock;
};

// 销售记录结构体
struct SaleRecord {
    int itemId;
    string saleDate;
    double price;
    double discount;
    int quantity;
};

// 读取商品信息
vector<Item> readItemsFromFile(string filename) {
    vector<Item> items;
    ifstream file(filename);
    if (file.is_open()) {
        Item item;
        while (file >> item.id >> item.name >> item.productionDate >> item.expirationDate >> item.stock) {
            items.push_back(item);
        }
        file.close();
    }
    return items;
}

// 写入销售记录
void writeSaleRecordToFile(SaleRecord record, string filename) {
    ofstream file(filename, ios::app);
    if (file.is_open()) {
        file << record.itemId << " " << record.saleDate << " " << record.price << " " << record.discount << " " << record.quantity << endl;
        file.close();
    }
}

// 查询当日销售信息
void queryTodaySales(string filename) {
    ifstream file(filename);
    if (file.is_open()) {
        SaleRecord record;
        time_t now = time(0);
        tm *today = localtime(&now);
        int year = today->tm_year + 1900;
        int month = today->tm_mon + 1;
        int day = today->tm_mday;
        string todayDate = to_string(year) + "-" + to_string(month) + "-" + to_string(day);
        cout << "Today's Sales Records:" << endl;
        cout << "----------------------" << endl;
        while (file >> record.itemId >> record.saleDate >> record.price >> record.discount >> record.quantity) {
            if (record.saleDate == todayDate) {
                cout << "Item ID: " << record.itemId << endl;
                cout << "Sale Date: " << record.saleDate << endl;
                cout << "Price: " << fixed << setprecision(2) << record.price << endl;
                cout << "Discount: " << fixed << setprecision(2) << record.discount << endl;
                cout << "Quantity: " << record.quantity << endl;
                cout << "----------------------" << endl;
            }
        }
        file.close();
    }
}

// 销售记录分类统计
void salesStatistics(string filename) {
    ifstream file(filename);
    if (file.is_open()) {
        SaleRecord record;
        vector<int> itemIds;
        vector<string> saleDates;
        while (file >> record.itemId >> record.saleDate >> record.price >> record.discount >> record.quantity) {
            if (find(itemIds.begin(), itemIds.end(), record.itemId) == itemIds.end()) {
                itemIds.push_back(record.itemId);
            }
            if (find(saleDates.begin(), saleDates.end(), record.saleDate) == saleDates.end()) {
                saleDates.push_back(record.saleDate);
            }
        }
        file.close();

        cout << "Sales Statistics by Item ID:" << endl;
        cout << "----------------------------" << endl;
        for (int itemId : itemIds) {
            int totalQuantity = 0;
            double totalRevenue = 0.0;
            for (string saleDate : saleDates) {
                ifstream file(filename);
                if (file.is_open()) {
                    while (file >> record.itemId >> record.saleDate >> record.price >> record.discount >> record.quantity) {
                        if (record.itemId == itemId && record.saleDate == saleDate) {
                            totalQuantity += record.quantity;
                            double discountedPrice = record.price * (1.0 - record.discount);
                            totalRevenue += discountedPrice * record.quantity;
                        }
                    }
                    file.close();
                }
            }
            cout << "Item ID: " << itemId << endl;
            cout << "Total Quantity: " << totalQuantity << endl;
            cout << "Total Revenue: " << fixed << setprecision(2) << totalRevenue << endl;
            cout << "----------------------------" << endl;
        }

        cout << "Sales Statistics by Sale Date:" << endl;
        cout << "----------------------------" << endl;
        for (string saleDate : saleDates) {
            int totalQuantity = 0;
            double totalRevenue = 0.0;
            for (int itemId : itemIds) {
                ifstream file(filename);
                if (file.is_open()) {
                    while (file >> record.itemId >> record.saleDate >> record.price >> record.discount >> record.quantity) {
                        if (record.itemId == itemId && record.saleDate == saleDate) {
                            totalQuantity += record.quantity;
                            double discountedPrice = record.price * (1.0 - record.discount);
                            totalRevenue += discountedPrice * record.quantity;
                        }
                    }
                    file.close();
                }
            }
            cout << "Sale Date: " << saleDate << endl;
            cout << "Total Quantity: " << totalQuantity << endl;
            cout << "Total Revenue: " << fixed << setprecision(2) << totalRevenue << endl;
            cout << "----------------------------" << endl;
        }
    }
}

int main() {
    vector<Item> items = readItemsFromFile("items.txt");

    cout << "Welcome to the Bakery Store Sales Management System!" << endl;

    while (true) {
        cout << "Menu:" << endl;
        cout << "1. Sale Record Registration" << endl;
        cout << "2. Query Today's Sales" << endl;
        cout << "3. Sales Statistics" << endl;
        cout << "4. Exit" << endl;

        int choice;
        cout << "Please enter your choice: ";
        cin >> choice;

        if (choice == 1) {
            cout << "Item ID: ";
            int itemId;
            cin >> itemId;
            cout << "Sale Date (YYYY-MM-DD): ";
            string saleDate;
            cin >> saleDate;
            cout << "Price: ";
            double price;
            cin >> price;
            cout << "Discount: ";
            double discount;
            cin >> discount;
            cout << "Quantity: ";
            int quantity;
            cin >> quantity;

            bool itemExists = false;
            for (Item item : items) {
                if (item.id == itemId) {
                    itemExists = true;
                    break;
                }
            }

            if (itemExists) {
                SaleRecord record;
                record.itemId = itemId;
                record.saleDate = saleDate;
                record.price = price;
                record.discount = discount;
                record.quantity = quantity;

                writeSaleRecordToFile(record, "sales.txt");

                cout << "Sale record registered successfully!" << endl;
            } else {
                cout << "Item not found!" << endl;
            }
        } else if (choice == 2) {
            queryTodaySales("sales.txt");
        } else if (choice == 3) {
            salesStatistics("sales.txt");
        } else if (choice == 4) {
            break;
        } else {
            cout << "Invalid choice. Please try again." << endl;
        }
    }

    cout << "Thank you for using the Bakery Store Sales Management System!" << endl;

    return 0;
}

请确保在同一目录下创建名为"items.txt"和"sales.txt"的文件,以存储商品信息和销售记录。程序运行后,根据菜单提示进行操作,可以进行销售记录的登记、当日销售信息的查询和销售记录的分类统计,并将销售记录和统计信息导出到文件中

基于C++的面包店销售管理程序设计基本要求:销售信息包括商品号、商品名称、制作日期、有效期、销售日期、售价、折扣、数量。功能要求:1从文件读入商品号和商品名称、制作日期有效期库存数量等信息2销售记录的登记。2对当日销售信息的查询。3销售记录的分类统计按商品号、销售日期。4可以将当日销售记录和统计信息导出登记到文件

原文地址: https://www.cveoy.top/t/topic/hDQr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录