zhuaizhai 2024-03-24 12:43 采纳率: 90.5%
浏览 1
已结题

关于#c++#的问题:C语言编写超市收银系统,要求使用链式存储结构,要有录入商品基本信息如名称,修改商品数量,退出系统的功能(相关搜索:c语言)

C语言编写超市收银系统,要求使用链式存储结构,要有录入商品基本信息如名称,修改商品数量,退出系统的功能

  • 写回答

2条回答 默认 最新

  • 码农阿豪@新空间 优质创作者: Java、后端开发技术领域 2024-03-24 12:45
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题解答: 链式存储结构可以用链表来实现,每个节点存储一个商品的基本信息,包括名称、数量、价格等。可以采用循环菜单的方式,实现录入商品信息、修改商品数量等功能,具体实现步骤如下: 1.定义商品节点结构体
    typedef struct node{
        char name[50]; // 商品名称
        int num;       // 商品数量
        float price;   // 商品价格
        struct node *next; // 指向下一个节点的指针
    }Node;
    

    2.初始化链表

    Node *head = (Node *)malloc(sizeof(Node)); // 创建头结点
    head->next = NULL;
    

    3.录入商品信息

    void input(Node *head){
        Node *p = head;
        while(p->next){
            p = p->next; // 移动到最后一个结点
        }
        Node *newNode = (Node *)malloc(sizeof(Node)); // 创建新节点
        printf("请输入商品名称:");
        scanf("%s", newNode->name);
        printf("请输入商品数量:");
        scanf("%d", &newNode->num);
        printf("请输入商品价格:");
        scanf("%f", &newNode->price);
        newNode->next = NULL;
        p->next = newNode; // 插入到链表尾部
    }
    

    4.修改商品数量

    void modify(Node *head){
        char name[50];
        printf("请输入要修改的商品名称:");
        scanf("%s", name);
        Node *p = head->next;
        while(p){
            if(strcmp(p->name, name) == 0){ // 判断是否为要修改的商品
                int num;
                printf("请输入新的商品数量:");
                scanf("%d", &num);
                p->num = num; // 修改商品数量
                printf("修改成功!\n");
                return;
            }
            p = p->next;
        }
        printf("未找到该商品\n");
    }
    

    5.退出系统

    void quit(){
        exit(0);
    }
    

    6.主函数实现循环菜单

    int main(){
        Node *head = (Node *)malloc(sizeof(Node));
        head->next = NULL; // 初始化链表
        int choice;
        while(1){
            printf("1.录入商品信息\n");
            printf("2.修改商品数量\n");
            printf("3.退出系统\n");
            scanf("%d", &choice);
            switch(choice){
                case 1:
                    input(head); // 录入商品信息
                    break;
                case 2:
                    modify(head); // 修改商品数量
                    break;
                case 3:
                    quit(); // 退出系统
                    break;
                default:
                    printf("输入错误,请重新输入\n");
                    break;
            }
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月1日
  • 已采纳回答 3月24日
  • 创建了问题 3月24日