用c语言写一个对产品类别,产品名称,产品数量进行分类查询,并且能够存到文件里和调用文件的代码
时间: 2024-03-06 08:48:03 浏览: 47
用C语言写的商品管理系统
好的,以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_PRODUCTS 100 // 最大产品数量
#define MAX_NAME_LEN 50 // 最大产品名称长度
// 产品结构体
typedef struct {
char category[MAX_NAME_LEN]; // 产品类别
char name[MAX_NAME_LEN]; // 产品名称
int quantity; // 产品数量
} Product;
// 存储所有产品的数组
Product products[MAX_PRODUCTS];
// 当前存储的产品数量
int num_products = 0;
// 存储产品信息到文件
void save_products() {
FILE *fp = fopen("products.txt", "w");
if (fp == NULL) {
printf("Failed to open file!\n");
return;
}
for (int i = 0; i < num_products; i++) {
fprintf(fp, "%s,%s,%d\n", products[i].category, products[i].name, products[i].quantity);
}
fclose(fp);
printf("Products saved to file successfully!\n");
}
// 从文件中加载产品信息
void load_products() {
FILE *fp = fopen("products.txt", "r");
if (fp == NULL) {
printf("Failed to open file!\n");
return;
}
while (fscanf(fp, "%[^,],%[^,],%d\n", products[num_products].category,
products[num_products].name, &products[num_products].quantity) == 3) {
num_products++;
}
fclose(fp);
printf("Products loaded from file successfully!\n");
}
// 添加一个新产品
void add_product(char *category, char *name, int quantity) {
if (num_products >= MAX_PRODUCTS) {
printf("No more space for new products!\n");
return;
}
strcpy(products[num_products].category, category);
strcpy(products[num_products].name, name);
products[num_products].quantity = quantity;
num_products++;
printf("Product added successfully!\n");
}
// 根据类别查询产品
void search_by_category(char *category) {
printf("Products in category '%s':\n", category);
for (int i = 0; i < num_products; i++) {
if (strcmp(products[i].category, category) == 0) {
printf("%s (%d)\n", products[i].name, products[i].quantity);
}
}
}
int main() {
load_products();
int choice;
do {
printf("\n1. Add a new product\n");
printf("2. Search products by category\n");
printf("3. Save products to file\n");
printf("4. Exit\n");
printf("Enter your choice (1-4): ");
scanf("%d", &choice);
switch (choice) {
case 1: {
char category[MAX_NAME_LEN];
char name[MAX_NAME_LEN];
int quantity;
printf("Enter product category: ");
scanf("%s", category);
printf("Enter product name: ");
scanf("%s", name);
printf("Enter product quantity: ");
scanf("%d", &quantity);
add_product(category, name, quantity);
break;
}
case 2: {
char category[MAX_NAME_LEN];
printf("Enter category to search: ");
scanf("%s", category);
search_by_category(category);
break;
}
case 3:
save_products();
break;
case 4:
break;
default:
printf("Invalid choice!\n");
break;
}
} while (choice != 4);
return 0;
}
```
这个示例代码中,我们定义了一个 `Product` 结构体,表示一个产品,包含了产品类别、名称和数量三个字段。
我们使用一个数组 `products` 存储所有产品,使用一个变量 `num_products` 记录当前存储的产品数量。
我们提供了以下几个函数:
- `save_products()`:将当前存储的所有产品信息保存到文件中;
- `load_products()`:从文件中加载所有产品信息;
- `add_product(char *category, char *name, int quantity)`:添加一个新产品;
- `search_by_category(char *category)`:根据类别查询产品。
在 `main()` 函数中,我们使用一个循环来处理用户输入,提供了以下几个选项:
- 添加一个新产品;
- 根据类别查询产品;
- 将当前存储的所有产品信息保存到文件中;
- 退出程序。
你可以根据自己的需求进行修改和扩展。在这个示例代码中,我们将产品信息存储到了一个文本文件中,每一行表示一个产品,用逗号分隔三个字段。当然,你也可以使用其他的存储方式,比如数据库等。
阅读全文