设计一个可进行商品管理的程序,具备基本的商品管理功能。
要求:程序菜单功能或详细的提示功能,商品信息输入、输出、添加(进货)、删除(销售)、查询(按商品名)、排序(按编号,品名,数量)、文件保存、文件读
入。
c语言商品信息管理系统
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
13条回答 默认 最新
- 「已注销」 2023-03-08 14:21关注
参考GPT和自己的思路:以下是一个简单的 C 语言商品信息管理系统,包括菜单功能、商品信息输入、输出、添加、删除、查询、排序、文件保存、文件读入等基本功能。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_NAME_LEN 50 #define MAX_ITEMS 100 struct item { int id; // 商品编号 char name[MAX_NAME_LEN]; // 商品名称 int quantity; // 商品数量 }; struct item items[MAX_ITEMS]; // 商品列表 int num_items = 0; // 商品数量 // 显示菜单 void show_menu() { printf("商品信息管理系统\n"); printf("-----------------\n"); printf("1. 显示商品列表\n"); printf("2. 添加商品\n"); printf("3. 删除商品\n"); printf("4. 查询商品\n"); printf("5. 按编号排序\n"); printf("6. 按名称排序\n"); printf("7. 按数量排序\n"); printf("8. 保存到文件\n"); printf("9. 从文件读入\n"); printf("0. 退出\n"); printf("-----------------\n"); printf("请选择操作:"); } // 输入商品信息 void input_item(struct item *pitem) { printf("请输入商品编号:"); scanf("%d", &pitem->id); printf("请输入商品名称:"); scanf("%s", pitem->name); printf("请输入商品数量:"); scanf("%d", &pitem->quantity); } // 输出商品信息 void output_item(const struct item *pitem) { printf("%d\t%s\t%d\n", pitem->id, pitem->name, pitem->quantity); } // 显示商品列表 void show_items() { int i; printf("商品编号\t商品名称\t商品数量\n"); printf("---------------------------------------\n"); for (i = 0; i < num_items; i++) { output_item(&items[i]); } } // 添加商品 void add_item() { struct item item; input_item(&item); items[num_items] = item; num_items++; printf("商品已添加。\n"); } // 删除商品 void delete_item() { int id, i, found = 0; printf("请输入要删除的商品编号:"); scanf("%d", &id); for (i = 0; i < num_items; i++) { if (items[i].id == id) { found = 1; break; } } if (found) { for (; i < num_items - 1; i++) { items[i] = items[i + 1]; } num_items--; printf("商品已删除。\n"); } else { printf("未找到该商品。\n"); } } // 查询商品 void search_item() { char name[MAX_NAME_LEN]; int i, found = 0; printf("请输入要查询的商品名称:"); scanf("%s", name); printf("商品编号\t商品名称\t商品数量\n"); printf("---------------------------------------\n"); for (i = 0; i < num_items; i++) { if (strcmp(items[i].name, name) == 0) { output_item(&items[i]); found = 1; } } if (!found) { printf("未找到该商品。\n"); } } // 按编号排序 int compare_by_id(const void *p1, const void *p2) { const struct item *item1 = (const struct item *)p1; const struct item *item2 = (const struct item *)p2; return item1->id - item2->id; } // 按名称排序 int compare_by_name(const void *p1, const void *p2) { const struct item *item1 = (const struct item *)p1; const struct item *item2 = (const struct item *)p2; return strcmp(item1->name, item2->name); } // 按数量排序 int compare_by_quantity(const void *p1, const void *p2) { const struct item *item1 = (const struct item *)p1; const struct item *item2 = (const struct item *)p2; return item1->quantity - item2->quantity; } // 排序商品列表 void sort_items() { int choice; printf("请选择排序方式:"); scanf("%d", &choice); switch (choice) { case 1: qsort(items, num_items, sizeof(struct item), compare_by_id); break; case 2: qsort(items, num_items, sizeof(struct item), compare_by_name); break; case 3: qsort(items, num_items, sizeof(struct item), compare_by_quantity); break; default: printf("无效的选择。\n"); return; } printf("商品已排序。\n"); } // 保存商品列表到文件 void save_items(const char *filename) { FILE *fp; int i; fp = fopen(filename, "wb"); if (fp == NULL) { printf("无法打开文件。\n"); return; } fwrite(&num_items, sizeof(num_items), 1, fp); for (i = 0; i < num_items; i++) { fwrite(&items[i], sizeof(struct item), 1, fp); } fclose(fp); printf("商品已保存到文件。\n"); } // 从文件读入商品列表 void load_items(const char *filename) { FILE *fp; int i; fp = fopen(filename, "rb"); if (fp == NULL) { printf("无法打开文件。\n"); return; } fread(&num_items, sizeof(num_items), 1, fp); for (i = 0; i < num_items; i++) { fread(&items[i], sizeof(struct item), 1, fp); } fclose(fp); printf("商品已从文件读入。\n"); } int main() { int choice; char filename[MAX_NAME_LEN]; while (1) { show_menu(); scanf("%d", &choice); switch (choice) { case 0: printf("再见!\n"); return 0; case 1: show_items(); break; case 2: add_item(); break; case 3: delete_item(); break; case 4: search_item(); break; case 5: case 6: case 7: sort_items(); break; case 8: printf("请输入文件名:"); scanf("%s", filename); save_items(filename); break; case 9: printf("请输入文件名:"); scanf("%s", filename); load_items(filename); break; default: printf("无效的选择。\n"); break; } } return 0; }
代码解释:
main() 函数是程序的入口,它通过显示菜单并读取用户的选择来控制程序的流程。
choice 变量存储用户的选择。
filename 变量用于读取或保存商品列表的文件名。
while 循环保持程序运行,直到用户选择退出程序。
show_menu() 函数显示菜单,其中包括了各种商品管理功能。
根据用户的选择,使用 switch 语句调用相应的函数来完成商品管理任务,例如展示商品列表、添加商品、删除商品、查询商品、排序商品、保存商品列表到文件、从文件读入商品列表。
如果用户选择退出程序,程序会返回 0,结束运行。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用 1
悬赏问题
- ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
- ¥15 Vue3地图和异步函数使用
- ¥15 C++ yoloV5改写遇到的问题
- ¥20 win11修改中文用户名路径
- ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
- ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
- ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
- ¥15 帮我写一个c++工程
- ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
- ¥15 关于smbclient 库的使用