C语言链表实现商品库存管理系统

yizhihongxing

C语言链表实现商品库存管理系统

简介

链表是一种常见的数据结构,优点是可以在任意位置插入或删除元素,而不影响链表中其他元素。因此,链表在一些需要频繁插入或删除元素的场景中非常适用,比如实现商品库存管理系统。

本文将使用C语言来实现链表,并借此来实现一个简单的商品库存管理系统。在该系统中,我们可以添加商品(包括名称、价格和数量),查看商品,删除商品,以及修改商品价格或数量信息。

实现步骤

第一步:定义商品结构体

首先,我们需要定义一个商品结构体,用于存储商品信息。在本例中,我们定义商品结构体包括名称(name)、价格(price)和数量(quantity)三个属性。

struct commodity {
    char name[30];
    float price;
    int quantity;
    struct commodity* next;
};

其中,我们使用了指向下一节点的指针next,这是链表结构中非常重要的一个概念。

第二步:实现链表操作

在实现链表前,我们需要定义链表操作所需要的函数,包括创建链表、添加商品、查看商品、删除商品和修改商品信息等功能。

这些函数的实现详见代码示例1。

第三步:测试示例

以添加商品和删除商品为例,我们可以编写测试代码来验证链表操作的正确性。

代码示例2展示了如何添加商品,在添加商品后,我们通过查看商品操作来验证链表中的商品是否被正确添加。

代码示例3展示了如何删除商品,在删除商品后,我们通过查看商品操作来验证链表中的商品是否被正确删除。

代码示例

示例1:链表操作函数实现

// 创建链表
struct commodity* create() {
    struct commodity* head = NULL;
    head = (struct commodity*)malloc(sizeof(struct commodity));
    head->next = NULL;
    return head;
}

// 添加商品
void add(struct commodity* head, char name[30], float price, int quantity) {
    struct commodity* p = head;
    while (p->next) {
        p = p->next;
    }
    struct commodity* new_commodity = (struct commodity*)malloc(sizeof(struct commodity));
    strcpy(new_commodity->name, name);
    new_commodity->price = price;
    new_commodity->quantity = quantity;
    new_commodity->next = NULL;
    p->next = new_commodity;
}

// 查看商品
void view(struct commodity* head) {
    struct commodity* p = head->next;
    printf("name\tprice\tquantity\n");
    while (p) {
        printf("%s\t%.2f\t%d\n", p->name, p->price, p->quantity);
        p = p->next;
    }
}

// 删除商品
void del(struct commodity* head, char name[30]) {
    struct commodity* p = head;
    while (p->next && strcmp(p->next->name, name)!=0) {
        p = p->next;
    }
    if (p->next) {
        struct commodity* del_commodity = p->next;
        p->next = del_commodity->next;
        free(del_commodity);
    }
}

// 修改商品价格
void modify_price(struct commodity* head, char name[30], float new_price) {
    struct commodity* p = head->next;
    while (p && strcmp(p->name, name)!=0) {
        p = p->next;
    }
    if (p) {
        p->price = new_price;
    }
}

// 修改商品数量
void modify_quantity(struct commodity* head, char name[30], int new_quantity) {
    struct commodity* p = head->next;
    while (p && strcmp(p->name, name)!=0) {
        p = p->next;
    }
    if (p) {
        p->quantity = new_quantity;
    }
}

示例2:添加商品操作

struct commodity* head = create();
add(head, "apple", 3.00, 10);
add(head, "banana", 2.50, 20);
add(head, "orange", 4.00, 5);
view(head);

输出结果:

name    price   quantity
apple   3.00    10
banana  2.50    20
orange  4.00    5

示例3:删除商品操作

del(head, "banana");
view(head);

输出结果:

name    price   quantity
apple   3.00    10
orange  4.00    5

总结

本文简要介绍了如何使用C语言实现商品库存管理系统,其中的关键在于使用链表实现商品信息的存储、查看、删除和修改等操作。希望这篇文章能够帮助读者更好地理解链表的用法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言链表实现商品库存管理系统 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • c++读写文件流实例程序讲解

    C++读写文件流实例程序讲解 1. 概述 C++中,通过文件流(fstream)可以方便地进行文件读写操作。文件流不仅可以读写文本文件,还可以读写二进制文件。对于程序开发中需要处理的大量数据,文件读写操作显得尤为重要。 本文将详细讲解如何在C++中使用文件流进行文件读写操作。 2. 文件流的基本操作 C++文件流中,主要有三种文件流类型:ifstream、o…

    C 2023年5月23日
    00
  • c++拷贝构造函数防篡改示例

    下面是“C++拷贝构造函数防篡改示例”的完整攻略。 标准拷贝构造函数 在开始介绍防篡改示例之前,我们先来了解一下C++中的标准拷贝构造函数。拷贝构造函数是一种特殊的构造函数,它用来复制同类对象。当我们不定义一个类的拷贝构造函数时,编译器会自动生成一个默认的拷贝构造函数。这个默认构造函数完成的是浅复制,即将一个对象的数据成员复制到另一个对象中,这两个对象指向的…

    C 2023年5月22日
    00
  • MongoDB导出查询结果到文件例子

    MongoDB导出查询结果到文件主要有两种方式:使用mongoexport命令和使用db.collection.find().forEach()方法,下面分别进行讲解: 使用mongoexport命令导出查询结果到文件 语法: mongoexport -d <database_name> -c <collection_name> -q…

    C 2023年5月23日
    00
  • C语言中的递归,你真的懂了吗?

    C语言中的递归,你真的懂了吗? 递归是指一个函数不断地调用自己来实现某种功能,通常递归函数都包含一个或多个条件语句,作为递归结束的判断条件。对于初学者来说,递归常常是比较难理解和掌握的一种编程思想。本篇文章将详细讲解如何理解和使用C语言中的递归。 递归的基本原理 递归的基本原理非常简单:将原问题分解成一个或者多个规模较小但是可以解决的子问题,并且将小问题的解…

    C 2023年5月22日
    00
  • 深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解

    JSON.parse()的作用分析: JSON.parse()是将JSON格式的字符串解析成一个Javascript对象的方法。具体来讲,JSON.parse()将一个json格式的字符串转换为其对应的Javascript对象。 例如,假设我们有一个json数据如下: let jsonString = ‘{"id":1, "na…

    C 2023年5月23日
    00
  • Terry七月Ruby读书笔记(比较详细)第1/4页

    “Terry七月Ruby读书笔记(比较详细)第1/4页”攻略 1. 简介 “Terry七月Ruby读书笔记(比较详细)第1/4页”是一篇介绍Ruby编程语言的文章,主要分为四个部分,该攻略针对该文章第1/4页的内容进行详细讲解和分析。 2. 内容概述 在该笔记中,作者主要介绍了Ruby的基本数据类型和运算符。其中,介绍了Ruby的数字类型、字符串类型、布尔类…

    C 2023年5月23日
    00
  • C语言代码实现简单的扫雷小游戏

    C语言代码实现简单的扫雷小游戏 一、游戏规则 扫雷是一款经典的单人益智小游戏,游戏场景是一个区块是由许多个格子组成的矩形网格,有一部分格子下面隐藏着地雷,玩家通过揭露不带雷的部分,最终找到所有地雷的位置。 具体游戏规则: 鼠标左键点开或标记可疑格子。 若点击的是地雷,则游戏结束,显示所有地雷的位置。 若点击的是数字,则显示周边8个格子中地雷的数量。 若点击的…

    C 2023年5月23日
    00
  • awk命令、awk编程语言详细介绍和实例

    AWK命令、AWK编程语言详细介绍和实例 什么是AWK? AWK 是一种处理文本文件的工具,它的名字是由其创始人 Alfred Aho、Peter Weinberger 和 Brian Kernighan 的首字母组成的。 AWK 可以将数据分成记录和字段,是一种灵活、功能强大的文本分析工具。它最初是为 LINUX 操作系统设计的,现在已经移植到许多其他操作…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部