zhuaizhai 2024-03-24 17:38 采纳率: 90.5%
浏览 4

关于#c++#的问题:用C语言或C++写一个超市收银系统,按条件查询数据信息,要求可以选择顺序表和链式存储结构进行操作(相关搜索:c语言)

用C语言或C++写一个超市收银系统,要求有增加,修改,删除,排序,浏览记录,按条件查询数据信息,要求可以选择顺序表和链式存储结构进行操作

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间 优质创作者: Java、后端开发技术领域 2024-03-24 17:41
    关注
    让阿豪来帮你解答,本回答参考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;
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月24日