用C语言或C++写一个超市收银系统,要求有增加,修改,删除,排序,浏览记录,按条件查询数据信息,要求可以选择顺序表和链式存储结构进行操作
3条回答 默认 最新
关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
1. 构思:- 首先需要明确系统主要功能,即增删改查,数据排序,浏览记录和条件查询。
- 其次需要确定数据存储结构,选择顺序表或链表。
- 最后需要考虑数据结构的具体实现和操作方式。
- 代码实现: 以下给出一个使用链式存储结构的超市收银系统的代码实现,主要实现了增删改查和按条件查询功能。
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct goods { int id; // 商品编号 char name[20]; // 商品名称 float price; // 商品价格 int amount; // 商品数量 struct goods *next; // 指向下一节点的指针 }Goods; Goods *head = NULL; // 初始化链表头部 // 初始化商品信息 void init(Goods *p) { printf("请输入商品编号:"); scanf("%d", &p->id); printf("请输入商品名称:"); scanf("%s", p->name); printf("请输入商品价格:"); scanf("%f", &p->price); printf("请输入商品数量:"); scanf("%d", &p->amount); p->next = NULL; // 将下一节点指针置为NULL } // 向链表尾部添加商品信息 void add() { Goods *p = (Goods *)malloc(sizeof(Goods)); // 动态分配内存 init(p); if (head == NULL) { // 如果链表为空,则新添加节点为链表头部 head = p; } else { // 否则将新添加节点接在链表尾部 Goods *tmp = head; while (tmp->next != NULL) { tmp = tmp->next; } tmp->next = p; } printf("商品添加成功!\n"); } // 修改商品信息 void modify() { if (head == NULL) { // 链表为空则显示错误信息 printf("链表为空!\n"); return; } int id; printf("请输入要修改的商品编号:"); scanf("%d", &id); Goods *p = head; while (p != NULL && p->id != id) { // 找到需要修改的商品 p = p->next; } if (p == NULL) { // 商品不存在则显示错误信息 printf("商品不存在!\n"); return; } printf("请输入新的商品名称:"); scanf("%s", p->name); printf("请输入新的商品价格:"); scanf("%f", &p->price); printf("请输入新的商品数量:"); scanf("%d", &p->amount); printf("商品修改成功!\n"); } // 删除商品信息 void del() { if (head == NULL) { // 链表为空则显示错误信息 printf("链表为空!\n"); return; } int id; printf("请输入要删除的商品编号:"); scanf("%d", &id); Goods *p = head; Goods *pre = head; while (p != NULL && p->id != id) { // 找到需要删除的商品 pre = p; p = p->next; } if (p == NULL) { // 商品不存在则显示错误信息 printf("商品不存在!\n"); return; } else if (p == head) { // 删除头部节点 head = head->next; } else { // 删除非头部节点 pre->next = p->next; } free(p); // 释放内存 printf("商品删除成功!\n"); } // 按条件查找商品信息 void search() { if (head == NULL) { // 链表为空则显示错误信息 printf("链表为空!\n"); return; } float price; printf("请输入最高商品价格:"); scanf("%f", &price); Goods *p = head; int flag = 0; while (p != NULL) { // 遍历链表寻找匹配商品 if (p->price < price) { printf("商品编号:%d,商品名称:%s,商品价格:%0.2f,商品数量:%d\n", p->id, p->name, p->price, p->amount); flag = 1; } p = p->next; } if (flag == 0) { // 没有匹配商品则显示错误信息 printf("没有匹配商品!\n"); } } // 浏览所有商品信息 void browse() { if (head == NULL) { // 链表为空则显示错误信息 printf("链表为空!\n"); return; } Goods *p = head; while (p != NULL) { // 遍历链表输出所有商品信息 printf("商品编号:%d,商品名称:%s,商品价格:%0.2f,商品数量:%d\n", p->id, p->name, p->price, p->amount); p = p->next; } } int main() { int option; printf("欢迎使用超市收银系统!\n"); while (1) { // 循环显示操作选项,等待用户输入 printf("\n请选择以下操作:\n"); printf("1、添加商品信息\n"); printf("2、修改商品信息\n"); printf("3、删除商品信息\n"); printf("4、按条件查询商品信息\n"); printf("5、浏览所有商品信息\n"); printf("6、退出系统\n"); printf("请输入操作选项(1-6):"); scanf("%d", &option); switch (option) { case 1: add(); break; case 2: modify(); break; case 3: del(); break; case 4: search(); break; case 5: browse(); break; case 6: printf("感谢使用超市收银系统,再见!\n"); exit(0); default: printf("输入错误,请重新输入!\n"); break; } } return 0; }解决 无用评论 打赏 举报