C语言实现设备管理系统

C语言实现设备管理系统

1. 设备管理系统需求分析

  • 管理员可以添加设备信息
  • 管理员可以删除设备信息
  • 管理员可以修改设备信息
  • 系统可以显示设备信息

2. 设备管理系统设计

2.1 设备信息结构体

typedef struct device {
    int id;
    char name[20];
    char type[20];
    int quantity;
    float price;
} Device;

2.2 设备信息存储

使用单链表存储所有设备信息。

typedef struct node {
    Device data;
    struct node *next;
} Node;

使用链表头指针管理链表。

Node *head = NULL;

2.3 设备信息操作函数

实现以下函数,完成具体的设备信息操作。

添加设备信息
void addDevice() {
    Device tmp;
    printf("Please enter device ID: ");
    scanf("%d", &(tmp.id));
    printf("Please enter device name: ");
    scanf("%s", tmp.name);
    printf("Please enter device type: ");
    scanf("%s", tmp.type);
    printf("Please enter device quantity: ");
    scanf("%d", &(tmp.quantity));
    printf("Please enter device price: ");
    scanf("%f", &(tmp.price));
    Node *p = (Node*)malloc(sizeof(Node));
    p->data = tmp;
    p->next = head;
    head = p;
    printf("Device added successfully!\n");
}
删除设备信息
void deleteDevice(int id) {
    Node *p = head;
    Node *q = NULL;
    while (p != NULL && p->data.id != id) {
        q = p;
        p = p->next;
    }
    if (p == NULL) {
        printf("Device not found!\n");
        return;
    }
    if (q == NULL) {
        head = p->next;
    } else {
        q->next = p->next;
    }
    free(p);
    printf("Device deleted successfully!\n");
}
修改设备信息
void modifyDevice(int id) {
    Node *p = head;
    while (p != NULL && p->data.id != id) {
        p = p->next;
    }
    if (p == NULL) {
        printf("Device not found!\n");
        return;
    }
    printf("Please enter new device name (or press enter to skip): ");
    char name[20];
    scanf("%s", name);
    if (strlen(name) != 0) {
        strcpy(p->data.name, name);
    }
    printf("Please enter new device type (or press enter to skip): ");
    char type[20];
    scanf("%s", type);
    if (strlen(type) != 0) {
        strcpy(p->data.type, type);
    }
    printf("Please enter new device quantity (or press -1 to skip): ");
    int quantity;
    scanf("%d", &quantity);
    if (quantity != -1) {
        p->data.quantity = quantity;
    }
    printf("Please enter new device price (or press -1 to skip): ");
    float price;
    scanf("%f", &price);
    if (price != -1) {
        p->data.price = price;
    }
    printf("Device modified successfully!\n");
}
显示设备信息
void showDevice() {
    Node *p = head;
    while (p != NULL) {
        printf("Device ID: %d\nDevice Name: %s\nDevice Type: %s\nDevice Quantity: %d\nDevice Price: %f\n\n", p->data.id, p->data.name, p->data.type, p->data.quantity, p->data.price);
        p = p->next;
    }
}

3. 设备管理系统示例

3.1 添加设备信息

addDevice();
addDevice();

3.2 显示设备信息

showDevice();

输出:

Device ID: 2
Device Name: Computer
Device Type: Digital
Device Quantity: 2
Device Price: 2000.000000

Device ID: 1
Device Name: Printer
Device Type: Office
Device Quantity: 5
Device Price: 500.000000

3.3 修改设备信息

modifyDevice(2);

输出:

Please enter new device name (or press enter to skip): Laptop
Please enter new device type (or press enter to skip): 
Please enter new device quantity (or press -1 to skip): 
Please enter new device price (or press -1 to skip): 2500.00
Device modified successfully!

3.4 删除设备信息

deleteDevice(1);

输出:

Device deleted successfully!

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

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

相关文章

  • C语言中双链表的基本操作

    下面是C语言中双链表的基本操作的完整攻略。 双链表的基本操作 什么是双链表 双向链表(Doubly linked list)是链表的一种,它同样由一系列的节点组成,每个结点分别含有指向前驱和后继结点的两个指针。这种结构允许双向遍历。常见的操作有前插、后插、删除、查找等,下面详细介绍其基本操作。 双链表的结构 双链表的结构如下所示: struct node{ …

    C 2023年5月24日
    00
  • C++全面精通类与对象

    C++全面精通类与对象攻略 什么是类和对象 在C++中,类(class)是一种自定义数据类型,可以用来描述具有相同属性和方法的一组对象。而对象(object)则是类的一个具体实例。 类是一个抽象的概念,它定义了数据类型的属性和方法,包括数据成员和成员函数,但并不占用内存空间。而对象则是类的一个具体实体,它占用实际的内存空间,可以使用类提供的属性和方法进行操作…

    C 2023年5月22日
    00
  • C++编译器Clion的使用详解(总结)

    C++编译器Clion的使用详解(总结) 1. Clion简介 Clion是一款由JetBrains公司开发的跨平台C++开发工具。Clion具有强大的代码编辑和代码分析功能,还能够集成多个版本控制系统和调试器。它还提供了丰富的自动化功能,包括代码完成、调试、自动重构等等。 2. Clion的安装与配置 2.1. 安装Clion 首先,到JetBrains公…

    C 2023年5月23日
    00
  • Win10无法开机0xc0000225错误代码解决方法

    当我们开机时,有时可能会遇到Win10无法开机的问题,面对这种情况,我们需要对问题进行诊断,找到错误原因并解决问题。其中,“Win10无法开机0xc0000225错误代码解决方法”就是我们需要掌握的一种处理方法。 什么是0xc0000225错误代码? 0xc0000225错误代码是指系统启动时,所需要加载的winload.exe文件出现错误或缺失引起的错误。…

    C 2023年5月23日
    00
  • java 和 json 对象间转换

    Java和JSON都是广泛使用的编程语言和数据格式,将Java对象转换为JSON对象可以方便地在网络间传输数据。同样,将JSON对象转换为Java对象也可以使其在Java程序中方便使用。下面是Java和JSON对象间转换的完整攻略。 Java对象转换为JSON对象 Java对象转换为JSON对象通常使用第三方库,常用的是Google提供的Gson库和阿里巴巴…

    C 2023年5月23日
    00
  • c++中nlohmann json的基本使用教程

    C++中nlohmann json的基本使用教程 简介 nlohmann json是一个开源的JSON解析器和生成器,支持标准的JSON格式。它是一个单头文件的库,可以轻松地集成到C++项目中。 安装 使用nlohmann json不需要安装,只需要将头文件json.hpp复制到你的项目中即可。 基本使用 创建一个JSON对象 #include "…

    C 2023年5月22日
    00
  • 全面解析C++中的new,operator new与placement new

    全面解析C++中的new、operator new与placement new 在C++中,我们通常使用new来动态分配内存和构造对象。然而,在实际的工程开发中,一个新的问题就会被曝光:new虽然提供了一个比较便利的方法来分配内存和构造对象,但是也很容易引发一些内存方面的问题。例如: new会抛出异常并终止程序,如果内存不足 new会调用构造函数来进行初始化…

    C 2023年5月22日
    00
  • C语言实现稀疏矩阵

    C语言实现稀疏矩阵的完整攻略 1、什么是稀疏矩阵? 稀疏矩阵是矩阵中绝大部分元素为0的矩阵。相对于密集矩阵,稀疏矩阵可以用更少的存储空间来存储矩阵中的数据。 2、如何实现稀疏矩阵? 2.1 稀疏矩阵的三元组存储法 稀疏矩阵的三元组存储法是最常用的矩阵存储方法之一。其基本思路是:将矩阵中的非零元素及其对应的行列下标存储起来,对于未存储的元素,默认其值为0。具体…

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