C语言实现自行车管理系统

C语言实现自行车管理系统完整攻略

系统需求

本系统需要实现以下功能:

  • 添加自行车信息
  • 删除自行车信息
  • 修改自行车信息
  • 查找自行车信息
  • 展示自行车信息

具体而言,自行车信息应该包含以下内容:

  • 品牌
  • 型号
  • 轮径
  • 颜色
  • 价格

数据结构设计

为了实现以上功能,我们需要用到以下数据结构:

struct bike {
    char brand[20];
    char model[20];
    float wheel_diameter;
    char color[10];
    float price;
};

另外,我们还需要一个数组来存储自行车信息:

#define MAX_BIKES 100
struct bike bikes[MAX_BIKES];
int num_bikes = 0;

系统实现

添加自行车信息

我们可以通过以下代码实现添加自行车信息的功能:

void add_bike() {
    struct bike new_bike;
    printf("请输入自行车品牌:");
    scanf("%s", new_bike.brand);
    printf("请输入自行车型号:");
    scanf("%s", new_bike.model);
    printf("请输入自行车轮径(单位:英寸):");
    scanf("%f", &new_bike.wheel_diameter);
    printf("请输入自行车颜色:");
    scanf("%s", new_bike.color);
    printf("请输入自行车价格:");
    scanf("%f", &new_bike.price);
    bikes[num_bikes++] = new_bike;
}

删除自行车信息

我们可以通过以下代码实现删除自行车信息的功能:

void delete_bike() {
    int i, j;
    char brand[20], model[20];
    printf("请输入要删除的自行车品牌:");
    scanf("%s", brand);
    printf("请输入要删除的自行车型号:");
    scanf("%s", model);
    for (i = 0; i < num_bikes; i++) {
        if (strcmp(bikes[i].brand, brand) == 0 && strcmp(bikes[i].model, model) == 0) {
            for (j = i; j < num_bikes - 1; j++) {
                bikes[j] = bikes[j + 1];
            }
            num_bikes--;
            printf("删除成功!\n");
            return;
        }
    }
    printf("未找到要删除的自行车信息!\n");
}

修改自行车信息

我们可以通过以下代码实现修改自行车信息的功能:

void modify_bike() {
    char brand[20], model[20];
    int i;
    printf("请输入要修改的自行车品牌:");
    scanf("%s", brand);
    printf("请输入要修改的自行车型号:");
    scanf("%s", model);
    for (i = 0; i < num_bikes; i++) {
        if (strcmp(bikes[i].brand, brand) == 0 && strcmp(bikes[i].model, model) == 0) {
            printf("请输入自行车新的信息(可以不修改,直接回车):\n");
            printf("品牌:%s  --> ", bikes[i].brand);
            scanf("%s", bikes[i].brand);
            printf("型号:%s  --> ", bikes[i].model);
            scanf("%s", bikes[i].model);
            printf("轮径(单位:英寸):%f  --> ", bikes[i].wheel_diameter);
            scanf("%f", &bikes[i].wheel_diameter);
            printf("颜色:%s  --> ", bikes[i].color);
            scanf("%s", bikes[i].color);
            printf("价格:%f  --> ", bikes[i].price);
            scanf("%f", &bikes[i].price);
            printf("修改成功!\n");
            return;
        }
    }
    printf("未找到要修改的自行车信息!\n");
}

查找自行车信息

我们可以通过以下代码实现查找自行车信息的功能:

void search_bike() {
    char brand[20], model[20];
    int i;
    printf("请输入要查找的自行车品牌:");
    scanf("%s", brand);
    printf("请输入要查找的自行车型号:");
    scanf("%s", model);
    for (i = 0; i < num_bikes; i++) {
        if (strcmp(bikes[i].brand, brand) == 0 && strcmp(bikes[i].model, model) == 0) {
            printf("品牌:%s\n", bikes[i].brand);
            printf("型号:%s\n", bikes[i].model);
            printf("轮径(单位:英寸):%f\n", bikes[i].wheel_diameter);
            printf("颜色:%s\n", bikes[i].color);
            printf("价格:%f\n", bikes[i].price);
            return;
        }
    }
    printf("未找到要查找的自行车信息!\n");
}

展示自行车信息

我们可以通过以下代码实现展示自行车信息的功能:

void show_bikes() {
    int i;
    if (num_bikes == 0) {
        printf("暂无自行车信息!\n");
        return;
    }
    printf("品牌\t型号\t轮径\t颜色\t价格\n");
    for (i = 0; i < num_bikes; i++) {
        printf("%s\t%s\t%.2f\t%s\t%.2f\n", bikes[i].brand, bikes[i].model, bikes[i].wheel_diameter, bikes[i].color, bikes[i].price);
    }
}

示例说明

以下是两个示例:

示例一:添加自行车信息

用户依次输入以下信息:

自行车品牌:Giant
自行车型号:Talon
自行车轮径(单位:英寸):27.5
自行车颜色:red
自行车价格:2999

系统会自动将信息添加到自行车信息数组中。

示例二:查找自行车信息

用户依次输入以下信息:

要查找的自行车品牌:Giant
要查找的自行车型号:Talon

系统会展示出查找到的自行车信息:

品牌:Giant
型号:Talon
轮径(单位:英寸):27.50
颜色:red
价格:2999.00

注意:此处轮径会自动保留两位小数。

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

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

相关文章

  • c++ lambda捕获this 导致多线程下类释放后还在使用的错误问题

    在C++11引入的Lambda表达式语法中,我们可以使用[=]、[&]等符号来捕获当前作用域中的变量,而同时也可以使用[this]来捕获当前对象的this指针。然而,在多线程环境下,如果Lambda表达式捕获了this指针但没有正确处理,可能会导致对象在析构后依然被Lambda表达式所引用,从而产生严重的未定义行为,比如内存泄漏、指针悬挂等。 为了避…

    C 2023年5月22日
    00
  • STL 的string类怎么啦

    下面我将为您详细讲解STL的string类的使用方法: STL的string类 string类是STL中的一个重要组件,它是一个可变长度的字符串容器,支持字符串的插入、删除、查找、替换等操作。可以通过#include <string>来包含string类的头文件。 创建string对象 我们可以通过多种方式来创建string对象。比如: // 创…

    C 2023年5月23日
    00
  • C语言图书管理系统简洁版

    C语言图书管理系统简洁版攻略 1. 程序介绍 本图书管理系统是用C语言编写的一个简洁版程序,它可以对图书信息进行基本的添加、删除、查询、修改操作,是初学C语言的学生们进行练习和实践的良好例子。 2. 程序功能 本图书管理系统可实现以下功能:- 添加图书:通过向链表中添加节点,实现新书的添加;- 删除图书:通过遍历链表、查找图书并删除节点,实现图书的删除;- …

    C 2023年5月24日
    00
  • C#定制Excel界面并实现与数据库交互的方法

    下面就来详细讲解“C#定制Excel界面并实现与数据库交互的方法”的完整攻略: 目录 准备工作 使用C#定制Excel界面 实现与数据库交互 示例说明1:将Excel表格数据批量插入数据库 示例说明2:从数据库中读取数据并导出为Excel表格 准备工作 在开始之前,我们需要准备以下东西: Microsoft Excel 2016或更新版本 Visual St…

    C 2023年5月22日
    00
  • C/C++如何获取当前系统时间的实例详解

    C/C++如何获取当前系统时间的实例详解 在C/C++语言中,获取当前系统时间可以通过调用系统库函数来实现。常用的获取当前系统时间的函数有time、localtime、strftime等函数。下面将详细介绍这些函数的使用方法。 time函数 time函数用来获取当前系统时间的时间戳,其函数的原型如下: #include <time.h> time…

    C 2023年5月23日
    00
  • C语言中的编码小技巧

    当我们使用C语言编写代码时,有一些小技巧可以帮助我们写出更优美、更高效、更易于维护的代码。 1. 使用位运算来进行数值操作 在C语言中,位运算符(&、|、^、~、<<、>>)用于在二进制位级别上进行操作。这些运算符可以非常快速地执行某些数值计算,比如: 判断一个数是否是奇数或偶数:使用&运算符,如果一个数的最后一位是0…

    C 2023年5月23日
    00
  • C++类型转换详解

    C++类型转换详解 强制类型转换 强制类型转换可以将一个变量从一种类型转换为另一种类型,例如将浮点数转换为整数,将整数转换为字符等。 static_cast static_cast用于静态类型转换,主要用于不同类型之间的转换。 示例: double d = 3.14; int i = static_cast<int>(d); 这里我们将doubl…

    C 2023年5月23日
    00
  • Java进阶:JNI使用技巧点滴

    Java进阶: JNI使用技巧点滴 什么是JNI Java Native Interface(JNI)是Java平台的一个重要特性,它允许Java应用程序调用本地(C、C++)应用程序,并且本地应用程序也可以调用Java应用程序。通过JNI,Java程序员可以使用Java的优点和C的优点,实现可以同时具有可移植性和性能的应用程序。 JNI允许在Java虚拟机…

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