基于C++的面包店销售管理程序设计基本要求:销售信息包括商品号、商品名称、制作日期、有效期、销售日期、售价、折扣、数量。功能要求:1从文件读入商品号和商品名称、制作日期有效期库存数量等信息2销售记录的登记。2对当日销售信息的查询。3销售记录的分类统计按商品号、销售日期。4可以将当日销售记录和统计信息导出登记到文件
以下是一个基于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"的文件,以存储商品信息和销售记录。程序运行后,根据菜单提示进行操作,可以进行销售记录的登记、当日销售信息的查询和销售记录的分类统计,并将销售记录和统计信息导出到文件中
原文地址: https://www.cveoy.top/t/topic/hDQr 著作权归作者所有。请勿转载和采集!