C语言链表实现销售管理系统

C语言链表实现销售管理系统

简介

链表是一种常用的数据结构,可以实现动态存储和管理数据,常用于开发数据处理程序。C语言中链表的实现需要自行封装数据结构和算法,这里我们将使用链表实现一个简单的销售管理系统。

数据结构设计

在实现销售管理系统的过程中,需要设计两个数据结构——商品和销售记录。商品包含名称和价格,销售记录包含销售日期、销售商品等信息。

使用结构体定义两个数据结构:

typedef struct good {
    char name[20];
    float price;
    struct good* next;
} Good;

typedef struct record {
    char date[20];
    Good* good;
    int num;
    struct record* next;
} Record;

其中,Good中的next指向下一个商品节点,Record中的next指向下一个销售记录节点。

操作函数设计

在定义数据结构之后,需要编写操作函数对数据进行增删改查。实现主要有以下几个函数:

添加商品

Good* addGood(Good* head, char* name, float price);

该函数可以根据商品名称和价格,创建一个新的商品,将其添加到链表中,并返回新链表的头节点。实现时,需要遍历链表,找到最后一个节点,并将新节点添加到该节点之后。

添加销售记录

Record* addRecord(Record* head, char* date, Good* good, int num);

该函数可以根据销售日期、销售商品和销售数量,创建一个新的销售记录节点,将其添加到链表中,并返回新链表的头节点。实现时,需要遍历链表,找到最后一个节点,并将新节点添加到该节点之后。同时,需要将销售商品对应的库存数量减少。

查询商品

Good* findGood(Good* head, char* name);

该函数可以根据商品名称,查询链表中是否存在该商品,如果存在则返回该商品节点,否则返回NULL。

查询销售记录

Record* findRecord(Record* head, char* date);

该函数可以根据销售日期,查询链表中是否存在该销售记录,如果存在则返回该销售记录节点,否则返回NULL。

示例

以下是两个示例,分别演示了如何添加商品和销售记录,并查询链表中的数据。

示例1

int main() {
    Good* g1 = addGood(NULL, "apple", 2.5);
    Good* g2 = addGood(g1, "banana", 1.5);
    Record* r1 = addRecord(NULL, "2021/03/01", g1, 10);
    Record* r2 = addRecord(r1, "2021/03/02", g2, 5);
    Good* g3 = findGood(g1, "apple");
    printf("good name:%s, price:%.2f\n", g3->name, g3->price);
    Record* r3 = findRecord(r1, "2021/03/02");
    printf("date:%s, good name:%s, num:%d\n", r3->date, r3->good->name, r3->num);
    return 0;
}

运行结果:

good name:apple, price:2.50
date:2021/03/02, good name:banana, num:5

示例2

int main() {
    Good* g1 = addGood(NULL, "apple", 2.5);
    Good* g2 = addGood(g1, "banana", 1.5);
    Record* r1 = addRecord(NULL, "2021/03/01", g1, 10);
    Record* r2 = addRecord(r1, "2021/03/02", g2, 5);
    Good* g3 = findGood(g1, "orange");
    if (g3 == NULL) {
        printf("error: no such good\n");
    }
    Record* r3 = findRecord(r1, "2021/03/03");
    if (r3 == NULL) {
        printf("error: no such record\n");
    }
    return 0;
}

运行结果:

error: no such good
error: no such record

总结

在这个教程中,我们学习了如何使用C语言及链表实现一个简单的销售管理系统,这个系统可以实现添加商品和销售记录,并可以查询商品和销售记录的具体信息。在实际开发中,我们可以基于这个示例,扩展其他功能,例如计算销售统计数据或生成销售报告等,以满足不同的管理需求。

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

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

相关文章

  • C语言之详解静态变量static

    C语言之详解静态变量static 在C语言中,关键字static可以用于修饰全局变量,局部变量和函数,其作用分别如下: 1. 修饰全局变量 在全局变量前加上static关键字,表示该变量具有静态存储期和静态链接属性。 在同一文件中的其他函数中不能访问该变量。 只能被定义变量的函数访问。 被初始化为0,除非在定义时显式初始化。 static int a; //…

    C 2023年5月24日
    00
  • C++实例分析讲解临时对象与右值引用的用法

    C++实例分析讲解临时对象与右值引用的用法 简介 在C++中,临时对象是指在语句执行过程中,根据需要临时创建的匿名对象,这种临时对象在表达式结束时自动销毁。右值引用是C++11新特性,定义了新的类型修饰符&&,表示一个右值引用,可以用来引用临时对象。 临时对象 示例1 #include<iostream> using namesp…

    C 2023年5月22日
    00
  • 详解C++中的inline用法

    关于C++中的inline用法,我将给您详细讲解一下。本攻略包含以下内容: 什么是inline inline的使用方法 inline的使用场景 两个示例说明 1. 什么是inline inline 是C++中的一个关键字,表示内联函数。它是一种可以提高程序运行时性能的优化手段。 简而言之,在C++中,编译器一般会将函数调用转换为栈帧的操作,而使用 inlin…

    C 2023年5月23日
    00
  • C++中的函数指针与函数对象的总结

    以下是关于”C++中的函数指针与函数对象的总结”的详细攻略。 什么是函数指针? 函数指针其实就是指向函数的指针,它可以像普通指针一样进行声明、赋值、传递参数等操作。C++中的函数指针的语法形式为: 返回值类型 (*指针变量名)(参数类型列表); 举个例子,我们定义一个名为add的函数,它的作用是将两个整数相加并返回结果。那么我们可以这样声明一个函数指针变量:…

    C 2023年5月22日
    00
  • 系统提示lsass.exe失败状态代码c0000005的解决方法

    解决“系统提示lsass.exe失败状态代码c0000005”的方法 什么是lsass.exe? lsass.exe是Windows操作系统中的一个进程,它负责处理用户登录信息等安全相关的任务。由于其重要性,所以典型情况下,它的进程权限是系统管理员。 了解错误信息 在运行Windows操作系统时,您可能会看到一个弹出对话框,指示“lsass.exe失败,状态…

    C 2023年5月23日
    00
  • C语言 结构体

    下面就为大家详细讲解一下“C语言 结构体”的使用攻略。 C语言 结构体 结构体是C语言中一种自定义的数据类型,用于存储一组多个不同类型的数据,相比于数组在存储不同类型数据时的不足,结构体能够更加灵活地组合多个类型的数据。一个结构体被定义后,可以使用点运算符 . 来访问其各个成员。 结构体的定义 定义一个结构体需要使用 struct 关键字,结构体跟类型名之间…

    C 2023年5月9日
    00
  • C语言局部数据指针

    当我们在写C语言程序时,经常会定义一些变量,这些变量可以是全局变量,也可以是局部变量。而局部变量是指定义在函数内部或代码块内部的变量,这些变量的作用域仅限于定义它们的函数或代码块内部。那么在定义局部变量时,我们可以定义一个指针变量,它可以指向局部变量的地址。这就是C语言局部数据指针的使用方法。 如下是C语言局部数据指针的使用攻略: 1. 定义局部变量和指针变…

    C 2023年5月9日
    00
  • C语言指针详解之野指针

    C语言指针详解之野指针 简介 指针是C语言中非常重要的概念,它可以让程序员通过间接访问的方式处理内存中的数据。而野指针是指未被初始化或指向不明确的地址的指针。使用野指针可能会导致内存泄漏、未定义的行为、数据丢失等问题。 本文将详细讲解野指针的概念、产生的原因、如何避免以及实例讲解。 野指针的概念 野指针是未被初始化或指向不明确的地址的指针。它可能指向未被分配…

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