请你用c语言帮我写一个超市收银后台系统谢谢
时间: 2023-11-25 14:06:33 浏览: 121
好的,以下是一个简单的超市收银后台系统的C代码实现,仅供参考:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_ITEMS 1000
#define DISCOUNT_PRICE 1000
#define DISCOUNT_RATE 0.1
typedef struct {
int id; // 商品ID
char name[20]; // 商品名称
double price; // 商品价格
int quantity; // 商品数量
} Item;
Item items[MAX_ITEMS];
int num_items = 0;
// 添加商品
void add_item(int id, char name[], double price, int quantity) {
if (num_items >= MAX_ITEMS) {
printf("超市已满,无法添加更多商品!\n");
return;
}
items[num_items].id = id;
sprintf(items[num_items].name, "%s", name);
items[num_items].price = price;
items[num_items].quantity = quantity;
num_items++;
printf("商品添加成功!\n");
}
// 删除商品
void delete_item(int id) {
int i, j;
for (i = 0; i < num_items; i++) {
if (items[i].id == id) {
for (j = i; j < num_items - 1; j++) {
items[j] = items[j + 1];
}
num_items--;
printf("商品删除成功!\n");
return;
}
}
printf("商品不存在!\n");
}
// 展示商品列表
void show_items() {
int i;
printf("商品列表:\n");
for (i = 0; i < num_items; i++) {
printf("%d\t%s\t%.2f元/个\t%d个\n", items[i].id, items[i].name, items[i].price, items[i].quantity);
}
}
// 结算
void settle() {
int i;
double total_price = 0;
double discounted_price;
int total_quantity = 0;
printf("请依次输入所购买商品的ID和数量(输入-1表示结算):\n");
while (1) {
int id, quantity, j;
double price;
scanf("%d", &id);
if (id == -1) {
break;
}
for (j = 0; j < num_items; j++) {
if (items[j].id == id) {
printf("请输入%d号商品的数量:", id);
scanf("%d", &quantity);
if (items[j].quantity < quantity) {
printf("库存不足!\n");
break;
}
items[j].quantity -= quantity;
price = items[j].price * quantity;
total_price += price;
total_quantity += quantity;
printf("添加成功!\n");
break;
}
}
if (j == num_items) {
printf("商品不存在!\n");
}
}
if (total_price >= DISCOUNT_PRICE) {
discounted_price = total_price * (1 - DISCOUNT_RATE);
} else {
discounted_price = total_price;
}
printf("总计%d个商品,原价%.2f元,折后价%.2f元\n", total_quantity, total_price, discounted_price);
}
int main() {
int choice;
while (1) {
printf("超市收银系统\n");
printf("1.添加商品\n");
printf("2.删除商品\n");
printf("3.展示商品列表\n");
printf("4.结算\n");
printf("5.退出\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入商品ID、名称、价格和数量,以空格分隔:");
int id, quantity;
double price;
char name[20];
scanf("%d %s %lf %d", &id, name, &price, &quantity);
add_item(id, name, price, quantity);
break;
case 2:
printf("请输入要删除的商品ID:");
scanf("%d", &id);
delete_item(id);
break;
case 3:
show_items();
break;
case 4:
settle();
break;
case 5:
printf("谢谢使用!\n");
exit(0);
default:
printf("无效的选择,请重新输入!\n");
break;
}
}
return 0;
}
```
在这份代码中,我们使用了结构体来存储商品信息,包括ID、名称、价格和数量。我们提供了添加商品、删除商品、展示商品列表和结算等功能。在结算时,如果总价超过了1000元,则可以享受10%的折扣。希望这份代码能够对您有所帮助。
阅读全文