用C语言编写超市信息管理系统 功能要求: 1.每一条记录包括一个商品的编号,名称,价格,条形码,进货日期,库存,销售数量。 2.输入功能:可以一次完成若干条记录的输入。 3.显示功能:完成全部记录的显示。 4.查找功能:完成按商品编号查找记录并显示。 5.排序功能:用希尔排序按销售数量从高到低或者按照商品编号进行排序。 6. 插入功能:按编号插入一条记录。 7.将记录保存在文件中。 8. 应提供一个菜单来调用各个功能,调用菜单的界面应尽可能清晰美观。 9.删除功能 10.修改功能 11.代码尽可能高级简洁
时间: 2023-11-22 14:56:41 浏览: 65
C语言程序设计-超市商品信息管理
5星 · 资源好评率100%
以下是一个基本的超市信息管理系统的 C 语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 商品结构体
typedef struct {
int id;
char name[50];
float price;
char barcode[20];
char purchase_date[20];
int stock;
int sold;
} Product;
// 全局变量
Product products[100];
int num_products = 0;
// 函数声明
void add_product();
void display_products();
void search_product();
void sort_products();
void insert_product();
void delete_product();
void modify_product();
void save_products();
// 主函数
int main() {
int choice;
do {
printf("\n");
printf("============================================\n");
printf("Supermarket Information Management System\n");
printf("============================================\n");
printf("1. Add Product\n");
printf("2. Display Products\n");
printf("3. Search Product\n");
printf("4. Sort Products\n");
printf("5. Insert Product\n");
printf("6. Delete Product\n");
printf("7. Modify Product\n");
printf("8. Save Products\n");
printf("0. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch(choice) {
case 1:
add_product();
break;
case 2:
display_products();
break;
case 3:
search_product();
break;
case 4:
sort_products();
break;
case 5:
insert_product();
break;
case 6:
delete_product();
break;
case 7:
modify_product();
break;
case 8:
save_products();
break;
case 0:
printf("Goodbye!\n");
break;
default:
printf("Invalid choice, please try again.\n");
}
} while(choice != 0);
return 0;
}
// 添加商品
void add_product() {
printf("Enter product id: ");
scanf("%d", &products[num_products].id);
printf("Enter product name: ");
scanf("%s", products[num_products].name);
printf("Enter product price: ");
scanf("%f", &products[num_products].price);
printf("Enter product barcode: ");
scanf("%s", products[num_products].barcode);
printf("Enter product purchase date: ");
scanf("%s", products[num_products].purchase_date);
printf("Enter product stock: ");
scanf("%d", &products[num_products].stock);
printf("Enter product sold: ");
scanf("%d", &products[num_products].sold);
num_products++;
}
// 显示所有商品
void display_products() {
printf("id\tname\tprice\tbarcode\tpurchase_date\tstock\tsold\n");
for(int i = 0; i < num_products; i++) {
printf("%d\t%s\t%.2f\t%s\t%s\t%d\t%d\n",
products[i].id,
products[i].name,
products[i].price,
products[i].barcode,
products[i].purchase_date,
products[i].stock,
products[i].sold);
}
}
// 查找商品
void search_product() {
int id;
printf("Enter product id to search: ");
scanf("%d", &id);
for(int i = 0; i < num_products; i++) {
if(products[i].id == id) {
printf("id\tname\tprice\tbarcode\tpurchase_date\tstock\tsold\n");
printf("%d\t%s\t%.2f\t%s\t%s\t%d\t%d\n",
products[i].id,
products[i].name,
products[i].price,
products[i].barcode,
products[i].purchase_date,
products[i].stock,
products[i].sold);
return;
}
}
printf("Product not found.\n");
}
// 排序商品
void sort_products() {
int choice;
printf("Sort by:\n");
printf("1. Sales\n");
printf("2. Product ID\n");
printf("Enter your choice: ");
scanf("%d", &choice);
if(choice == 1) {
// 按销售数量排序
for(int gap = num_products/2; gap > 0; gap /= 2) {
for(int i = gap; i < num_products; i++) {
for(int j = i-gap; j >= 0 && products[j].sold < products[j+gap].sold; j -= gap) {
Product temp = products[j];
products[j] = products[j+gap];
products[j+gap] = temp;
}
}
}
} else if(choice == 2) {
// 按商品编号排序
for(int gap = num_products/2; gap > 0; gap /= 2) {
for(int i = gap; i < num_products; i++) {
for(int j = i-gap; j >= 0 && products[j].id > products[j+gap].id; j -= gap) {
Product temp = products[j];
products[j] = products[j+gap];
products[j+gap] = temp;
}
}
}
} else {
printf("Invalid choice.\n");
}
}
// 插入商品
void insert_product() {
int id, index;
printf("Enter product id: ");
scanf("%d", &id);
for(int i = 0; i < num_products; i++) {
if(products[i].id == id) {
index = i;
break;
}
}
if(index == num_products) {
printf("Product not found.\n");
return;
}
for(int i = num_products-1; i >= index; i--) {
products[i+1] = products[i];
}
printf("Enter product name: ");
scanf("%s", products[index].name);
printf("Enter product price: ");
scanf("%f", &products[index].price);
printf("Enter product barcode: ");
scanf("%s", products[index].barcode);
printf("Enter product purchase date: ");
scanf("%s", products[index].purchase_date);
printf("Enter product stock: ");
scanf("%d", &products[index].stock);
printf("Enter product sold: ");
scanf("%d", &products[index].sold);
num_products++;
}
// 删除商品
void delete_product() {
int id, index;
printf("Enter product id: ");
scanf("%d", &id);
for(int i = 0; i < num_products; i++) {
if(products[i].id == id) {
index = i;
break;
}
}
if(index == num_products) {
printf("Product not found.\n");
return;
}
for(int i = index; i < num_products-1; i++) {
products[i] = products[i+1];
}
num_products--;
}
// 修改商品
void modify_product() {
int id, index;
printf("Enter product id: ");
scanf("%d", &id);
for(int i = 0; i < num_products; i++) {
if(products[i].id == id) {
index = i;
break;
}
}
if(index == num_products) {
printf("Product not found.\n");
return;
}
printf("Enter product name: ");
scanf("%s", products[index].name);
printf("Enter product price: ");
scanf("%f", &products[index].price);
printf("Enter product barcode: ");
scanf("%s", products[index].barcode);
printf("Enter product purchase date: ");
scanf("%s", products[index].purchase_date);
printf("Enter product stock: ");
scanf("%d", &products[index].stock);
printf("Enter product sold: ");
scanf("%d", &products[index].sold);
}
// 保存商品信息到文件
void save_products() {
FILE* fp;
fp = fopen("products.dat", "wb");
if(fp == NULL) {
printf("Error opening file.\n");
return;
}
fwrite(&num_products, sizeof(int), 1, fp);
fwrite(products, sizeof(Product), num_products, fp);
fclose(fp);
printf("Products saved to file.\n");
}
```
注意事项:
- 程序中的 `Product` 结构体存储了每个商品的信息,其中 `id` 是唯一的商品编号。
- `num_products` 是全局变量,用于记录当前已经添加了多少个商品。
- 函数 `add_product()` 用于添加新商品,函数 `display_products()` 用于显示所有商品,函数 `search_product()` 用于按照商品编号查找商品,函数 `sort_products()` 用于按照销售数量或者商品编号排序商品,函数 `insert_product()` 用于按照商品编号插入新商品,函数 `delete_product()` 用于按照商品编号删除商品,函数 `modify_product()` 用于按照商品编号修改商品,函数 `save_products()` 用于将所有商品信息保存到文件 `products.dat` 中。
- 程序中的菜单界面比较简单,每个选项对应一个函数,用户输入选项号即可执行对应的函数。
阅读全文