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日

相关文章

  • PHP高精确度运算BC函数库实例详解

    PHP高精确度运算BC函数库实例详解 本文将详细讲解PHP中高精度运算的实现方式,主要使用的是BC函数库。BC函数库是PHP中一个集成了多种精度运算的工具,拥有高精度计算、小数位控制等功能,可以帮助我们方便地完成高精度计算。 安装和使用 安装BC函数库非常简单,只需要在PHP中开启bcmath扩展即可。具体安装方式可以参考官方文档。 在开启扩展后,我们就可以…

    C 2023年5月22日
    00
  • C语言switch语句详解

    C语言switch语句详解 简介 在C语言中,switch语句是一种多分支的选择结构,可以用来比对多个值,根据不同的值来执行对应的代码块。 语法 switch语句的基本语法如下: switch(expression){ case constant-expression1: statement(s); break; case constant-expressi…

    C 2023年5月24日
    00
  • C++面试常见问题整理汇总

    C++面试常见问题整理汇总 本文旨在整理和汇总C++面试中常见的问题,包括但不限于基础知识、语法、实际应用等方面,并提供相应的解答和说明以供参考。 1. 基础知识 1.1 C++的数据类型有哪些?它们所占用的字节空间分别是多少? C++的数据类型包括基本数据类型和构造类型,其中基本数据类型有: 整型(int、short、long、long long等) 布尔…

    C 2023年5月22日
    00
  • 简述Java中进程与线程的关系_动力节点Java学院整理

    下面就是对“简述Java中进程与线程的关系_动力节点Java学院整理”的完整攻略,包括以下内容: 1. 进程与线程的基本概念 1.1 进程 进程是指正在运行的程序在内存中的一次执行过程,是程序的一次动态执行过程,并且具有一定的独立性。在Java中,每个Java程序都会启动一个进程,该进程至少包含一个线程。 1.2 线程 线程是进程的一部分,是指进程内部的一个…

    C 2023年5月23日
    00
  • 深入理解Java虚拟机_动力节点Java学院整理

    深入理解Java虚拟机攻略 什么是Java虚拟机 Java虚拟机(Java Virtual Machine,JVM)是Java程序运行的基石,是一个能够运行Java字节码的虚拟计算机。Java虚拟机是Java技术的核心,它是Java程序跨平台特性的实现基础。理解Java虚拟机的工作原理和内部机制对于Java开发人员来说是非常重要的。 深入理解Java虚拟机的…

    C 2023年5月23日
    00
  • 荣耀畅玩8C虚拟按键如何更改?荣耀畅玩8C虚拟按键设置教程

    荣耀畅玩8C虚拟按键更改教程 荣耀畅玩8C是一款性价比较高的手机,它配备了虚拟按键,但是有时候我们可能需要更改虚拟按键,以满足个人习惯或者特定需求。在下面的教程中,我将介绍如何更改荣耀畅玩8C的虚拟按键。 步骤一:进入设置界面 第一步首先要进入设置界面,打开手机屏幕,在桌面上找到“设置”图标,点击进入。 步骤二:进入系统导航栏 在设置界面内,依次找到“系统”…

    C 2023年5月23日
    00
  • C# JsonHelper 操作辅助类,拿来直接用

    首先,为了更好地讲解这个“C# JsonHelper操作辅助类,拿来直接用”的攻略,我们需要了解以下几个重要概念: C#: 一种面向对象的、现代的、通用的、类型安全的编程语言,由微软公司开发并推广,被广泛运用于开发各种类型的应用程序。 Json: 一种轻量级的数据交换格式,基于JavaScript语言的语法规则,易于人们阅读和编写,同时也易于机器解析和生成,…

    C 2023年5月23日
    00
  • C语言实现三子棋的示例代码

    以下是“C语言实现三子棋的示例代码”的完整攻略: C语言实现三子棋的示例代码 简介 三子棋是一种简单的两人游戏,游戏过程中两个选手分别执黑白两色棋子,轮流落子于棋盘上,先将自己的棋子在横、竖、斜方向上连成三个直线即获胜。 本篇文章将以C语言编写三子棋游戏为例,为大家详细讲解示例代码和相关思路。 示例代码实现思路 本示例代码中,我们将采用控制台输出的方式进行界…

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