C语言设计图书登记系统与停车场管理系统的实例分享

C语言设计图书登记系统与停车场管理系统的实例分享

简介

C语言是一种通用的、高效的计算机编程语言,被广泛应用于数字设计、操作系统、游戏开发和应用软件等领域。本文将分享两个基于C语言的实例,分别是图书登记系统和停车场管理系统,介绍其设计思路、代码实现和运行效果。

图书登记系统

设计思路

图书登记系统是一个简单的管理系统,主要实现以下功能:

  1. 登记新书籍
  2. 查询书籍信息
  3. 修改书籍信息
  4. 删除书籍信息

在使用该系统之前,需要用户先进行身份登录,登录成功后即可开始使用。系统数据包括书籍名称、作者、出版社、定价等信息,使用C语言的结构体数据结构进行存储和操作。

代码实现

下面是几个关键函数的代码:

登录函数

该函数用来检查输入的用户名和密码是否匹配,仅当匹配成功时允许用户登录。

int login()
{
    char username[20];
    char password[20];
    printf("请输入用户名: ");
    scanf("%s", username);
    printf("请输入密码: ");
    scanf("%s", password);
    if (strcmp(username, "admin") == 0 && strcmp(password, "admin123") == 0)
    {
        printf("登录成功!\n");
        return 1;
    }
    else
    {
        printf("用户名或密码错误!\n");
        return 0;
    }
}

添加书籍函数

该函数用来添加新书籍的信息,将输入的内容存储到结构体数组中。

void add_book()
{
    printf("请输入书籍名称: ");
    scanf("%s", books[count].name);
    printf("请输入作者姓名: ");
    scanf("%s", books[count].author);
    printf("请输入出版社名称: ");
    scanf("%s", books[count].publisher);
    printf("请输入书籍定价: ");
    scanf("%f", &books[count].price);
    printf("添加成功!\n");
    count++;
}

修改书籍信息函数

该函数用来根据输入的书籍名称查找书籍,并将指定的信息进行修改。

void modify_book()
{
    char bookname[20];
    printf("请输入要修改的书籍名称: ");
    scanf("%s", bookname);
    int i;
    for (i = 0; i < count; i++)
    {
        if (strcmp(books[i].name, bookname) == 0)
        {
            printf("请输入新的书籍名称: ");
            scanf("%s", books[i].name);
            printf("请输入新的作者姓名: ");
            scanf("%s", books[i].author);
            printf("请输入新的出版社名称: ");
            scanf("%s", books[i].publisher);
            printf("请输入新的书籍定价: ");
            scanf("%f", &books[i].price);
            printf("修改成功!\n");
            return;
        }
    }
    printf("未找到该书籍!\n");
}

显示全部书籍函数

该函数用来遍历结构体数组,显示系统中所有的书籍信息。

void show_all_books()
{
    printf("图书名称\t作者\t出版社\t定价\n");
    int i;
    for (i = 0; i < count; i++)
    {
        printf("%s\t%s\t%s\t%.2f\n", books[i].name, books[i].author, books[i].publisher, books[i].price);
    }
}

运行效果

下面是一个简单的演示,展示如何使用图书登记系统进行添加书籍、修改书籍和查看全部书籍功能:

请输入用户名: admin
请输入密码: admin123
登录成功!
1.添加书籍 2.查询书籍 3.修改书籍 4.删除书籍 5.查看全部书籍
请选择功能:1
请输入书籍名称: C++ Primer
请输入作者姓名: Stanley B.Lippman
请输入出版社名称: 人民邮电出版社
请输入书籍定价: 98.50
添加成功!
1.添加书籍 2.查询书籍 3.修改书籍 4.删除书籍 5.查看全部书籍
请选择功能:3
请输入要修改的书籍名称: C++ Primer
请输入新的书籍名称: C++ Primer Plus
请输入新的作者姓名: Vincent Moffatt
请输入新的出版社名称: 机械工业出版社
请输入新的书籍定价: 108.00
修改成功!
1.添加书籍 2.查询书籍 3.修改书籍 4.删除书籍 5.查看全部书籍
请选择功能:5
图书名称    作者  出版社 定价
C++ Primer Plus Vincent Moffatt 机械工业出版社 108.00

停车场管理系统

设计思路

停车场管理系统实现了对停车场的管理,主要实现以下功能:

  1. 车辆入库
  2. 车辆出库
  3. 查询停车位状态
  4. 查询停车费用

车辆停放需要输入车牌号和停车时刻,物理上停车场可以看作是一个线性结构,这里使用C语言的链表数据结构进行存储和操作。

代码实现

下面是几个关键函数的代码:

车辆入库函数

该函数用来向链表中添加车辆的信息,并更新链表数量和当前时间。

void enter_car()
{
    if (n >= maxsize)
    {
        printf("停车场已满!\n");
        return;
    }
    printf("请输入车牌号: ");
    scanf("%s", cars[n].name);
    printf("请输入进入停车场的时间(小时): ");
    scanf("%d", &cars[n].enter_time);
    printf("车辆%s已入库!\n", cars[n].name);
    n++;
    current_time++;
}

车辆出库函数

该函数用来根据输入的车牌号查找车辆,并计算出费用。

void exit_car()
{
    char carname[20];
    printf("请输入要出库的车牌号: ");
    scanf("%s", carname);
    int i, index = -1;
    for (i = 0; i < n; i++)
    {
        if (strcmp(cars[i].name, carname) == 0)
        {
            index = i;
            break;
        }
    }
    if (index == -1)
    {
        printf("未找到该车辆!\n");
        return;
    }
    printf("请输入离开停车场的时间(小时): ");
    scanf("%d", &cars[index].exit_time);
    int cost = (cars[index].exit_time - cars[index].enter_time) * unit_price;
    printf("停车费用为%d元!\n", cost);
    int j;
    for (j = index; j < n - 1; j++)
    {
        cars[j] = cars[j+1];
    }
    n--;
    current_time++;
}

查询停车位状态函数

该函数遍历链表,统计当前停车场内的车辆数量和空位数量。

void query_status()
{
    int i, count = 0;
    for (i = 0; i < maxsize; i++)
    {
        if (cars[i].name[0] == '\0')
            count++;
    }
    printf("停车场共%d个车位,当前空余%d个车位,已停车%d辆车!\n", maxsize, count, n);
}

查询停车费用函数

该函数遍历链表,计算出当前车场内每辆车的停车费用。

void query_cost()
{
    int i;
    printf("车牌号\t停车时间\t费用\n");
    for (i = 0; i < n; i++)
    {
        int cost = (current_time - cars[i].enter_time) * unit_price;
        printf("%s\t%d\t\t%d\n", cars[i].name, cars[i].enter_time, cost);
    }
}

运行效果

下面是一个简单的演示,展示如何使用停车场管理系统进行车辆入库、车辆出库、查询停车位状态和查询停车费用功能:

1.车辆入库 2.车辆出库 3.查询停车位状态 4.查询停车费用
请选择功能:1
请输入车牌号: 京A12345
请输入进入停车场的时间(小时): 8
车辆京A12345已入库!

1.车辆入库 2.车辆出库 3.查询停车位状态 4.查询停车费用
请选择功能:1
请输入车牌号: 京B67890
请输入进入停车场的时间(小时): 9
车辆京B67890已入库!

1.车辆入库 2.车辆出库 3.查询停车位状态 4.查询停车费用
请选择功能:2
请输入要出库的车牌号: 京A12345
请输入离开停车场的时间(小时): 12
停车费用为120元!

1.车辆入库 2.车辆出库 3.查询停车位状态 4.查询停车费用
请选择功能:3
停车场共10个车位,当前空余8个车位,已停车1辆车!

1.车辆入库 2.车辆出库 3.查询停车位状态 4.查询停车费用
请选择功能:4
车牌号 停车时间    费用
京B67890 9       30

1.车辆入库 2.车辆出库 3.查询停车位状态 4.查询停车费用
请选择功能:2
请输入要出库的车牌号: 京B67890
请输入离开停车场的时间(小时): 13
停车费用为40元!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言设计图书登记系统与停车场管理系统的实例分享 - Python技术站

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

相关文章

  • 用C语言操作MySQL数据库的通用方法

    使用C语言操作MySQL数据库,需要借助MySQL提供的C API。下面将介绍MySQL数据库的C API使用的基本步骤和示例代码。 步骤 引入MySQL连接库头文件 在代码中引入MySQL连接库的头文件:#include <mysql.h> 初始化数据库连接 在代码中使用mysql_init()函数初始化一个MYSQL对象,并使用mysql_r…

    C 2023年5月22日
    00
  • 一篇文章带你入门C语言:函数

    一篇文章带你入门C语言: 函数 函数的定义 函数是 C 语言中组织代码的一种主要方式。在 C 中,函数是由一系列语句组成的代码块,这些语句被命名并可以通过一个函数名来调用。 返回类型 函数名(参数列表) { // 函数体 } 返回类型:函数执行后返回的数据类型,例如 int、float 等。 函数名:函数的名称,可以根据函数的功能进行命名。 参数列表:函数执…

    C 2023年5月23日
    00
  • C++实现闹钟程序的方法

    下面我来详细讲解一下 C++ 实现闹钟程序的方法。 一、实现思路 要实现闹钟程序,就需要先了解一下闹钟程序的基本功能:1)设置闹钟时间;2)定时器到时后发出提示音;3)停止提示音。根据这些功能,我们可以分解出以下几个步骤: 读取用户设置的闹钟时间; 判断当前时间是否等于闹钟时间,如果不等待,则继续等待; 定时器到时后,播放提示音; 用户选择关闭提示音或延迟提…

    C 2023年5月23日
    00
  • 详解Android studio ndk配置cmake开发native C

    下面是详解Android Studio NDK配置CMake开发Native C的完整攻略。 一、前置条件 在进行此项操作前,先确保以下环境已准备好: Android Studio NDK(可以在 Android Studio 中下载) CMake 二、配置 CMake CMake 是一个开源程序,它可以管理代码的编译过程。在 Android Studio …

    C 2023年5月23日
    00
  • 如何基于C++解决RTSP取流报错问题

    在C++编程中,使用Live555库对RTSP协议进行取流,有时会出现RTSP取流报错的问题。本文将详细讲解基于C++如何解决这个问题的完整攻略。 分析问题 在C++编程中,使用Live555库进行RTSP取流时,可能会遇到以下异常: Failed to connect with result WRITE_SETUP_FAILED Failed to con…

    C 2023年5月23日
    00
  • c++函数指针使用示例分享

    下面就为您详细讲解“c++函数指针使用示例分享”的完整攻略。 什么是函数指针 函数指针,顾名思义,就是指向函数的指针,它的存在使得我们可以使用指针来调用一个函数。具体来说,函数指针是一个指向函数的指针变量,通过这个指针变量可以调用该函数。 函数指针的语法格式为: 返回类型 (*指针名)(参数列表) 其中,指针名可以是任意合法的标识符,参数列表是该函数的形参列…

    C 2023年5月30日
    00
  • 利用Python+eval函数构建数学表达式计算器

    关于如何利用Python+eval函数构建数学表达式计算器,可以按照以下步骤进行: 1.准备工作 在开始构建之前,需要先生成一个用户输入的字符串,例如: input_string = input("请输入数学表达式:") 2.输入处理 对于用户输入的字符串,需要进行处理,去掉其中的空格,并替换其中的特殊符号。可以使用Python内置的re…

    C 2023年5月22日
    00
  • 最新Rust错误处理简介

    最新Rust错误处理简介 错误处理是编写健壮软件的必备技能。在Rust中,错误处理被视为一等公民,并且Rust的语言设计使错误处理更加容易和健壮。在本文中,我们将讨论Rust中最新的错误处理方法。 Unrecoverable Errors 当程序遇到不可恢复的错误时,会产生不回溯错误(unrecoverable error),系统将终止程序并打印出错误信息。…

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