C语言实现简单的图书管理系统

C语言实现简单的图书管理系统攻略

一、前期准备

在实现图书管理系统之前,需要先了解以下基础知识:

  1. 结构体的定义和使用
  2. 文件的读写操作
  3. 指针的使用

掌握以上基础知识,才能顺利实现图书管理系统。

二、功能需求

我们要实现的图书管理系统需要以下功能模块:

  1. 添加图书信息(包括图书名称、作者、价格等信息)
  2. 删除图书信息
  3. 修改图书信息
  4. 查找图书信息
  5. 显示所有图书信息

三、实现步骤

1. 定义结构体

在实现图书管理系统之前,需要定义一个包含图书信息的结构体。结构体中包含图书名称、作者、价格等信息。以下是定义结构体的示例代码:

struct book {
    char name[50]; //图书名称
    char author[50]; //图书作者
    float price; //图书价格
};

2. 添加图书信息

添加图书信息需要先打开文件,然后将图书信息写入文件。以下是添加图书信息的示例代码:

//定义结构体数组
struct book books[100];

//定义文件指针
FILE *fp;

//打开文件
fp = fopen("books.dat", "ab");

//输入图书信息
printf("请输入图书信息:\n");
printf("图书名称:");
scanf("%s", books[count].name);
printf("图书作者:");
scanf("%s", books[count].author);
printf("图书价格:");
scanf("%f", &books[count].price);

//将图书信息写入文件
fwrite(&books[count], sizeof(struct book), 1, fp);

//关闭文件
fclose(fp);

//图书数量加1
count++;

3. 删除图书信息

删除图书信息需要先打开文件,然后读取文件中的图书信息。接着根据需要删除的图书信息,将其从结构体数组中删除。最后再将剩余的图书信息写回文件中。以下是删除图书信息的示例代码:

//定义结构体数组
struct book books[100];

//定义文件指针
FILE *fp, *ftp;

//打开文件
fp = fopen("books.dat", "rb");
ftp = fopen("temp.dat", "wb");

//输入要删除的图书名称
printf("请输入要删除的图书名称:");
char name[50];
scanf("%s", name);

//读取文件中的图书信息,将要删除的图书信息从结构体数组中删除
int i = 0;
int flag = 0;
while(!feof(fp)) {
    fread(&books[i], sizeof(struct book), 1, fp);
    if(strcmp(books[i].name, name) != 0) { //如果图书名称与要删除的不同,将其写回文件中
        fwrite(&books[i], sizeof(struct book), 1, ftp);
    } else {
        flag = 1;
    }
    i++;
}

//如果未找到要删除的图书,则输出提示信息
if(flag == 0) {
    printf("未找到要删除的图书!\n");
}

//关闭文件指针
fclose(fp);
fclose(ftp);

//删除原文件,并将临时文件重命名为原文件名
remove("books.dat");
rename("temp.dat", "books.dat");

4. 修改图书信息

修改图书信息需要先打开文件,然后读取文件中的图书信息。接着根据需要修改的图书信息,将其修改在结构体数组中。最后再将修改后的图书信息写回文件中。以下是修改图书信息的示例代码:

//定义结构体数组
struct book books[100];

//定义文件指针
FILE *fp, *ftp;

//打开文件
fp = fopen("books.dat", "rb");
ftp = fopen("temp.dat", "wb");

//输入要修改的图书名称
printf("请输入要修改的图书名称:");
char name[50];
scanf("%s", name);

//读取文件中的图书信息,根据要修改的图书信息,将其修改在结构体数组中
int i = 0;
int flag = 0;
while(!feof(fp)) {
    fread(&books[i], sizeof(struct book), 1, fp);
    if(strcmp(books[i].name, name) == 0) { //如果找到了要修改的图书,修改结构体数组中的信息
        printf("请输入修改后的图书信息:\n");
        printf("图书名称:");
        scanf("%s", books[i].name);
        printf("图书作者:");
        scanf("%s", books[i].author);
        printf("图书价格:");
        scanf("%f", &books[i].price);
        flag = 1;
    }
    fwrite(&books[i], sizeof(struct book), 1, ftp); //将修改后的图书信息写回文件中
    i++;
}

//如果未找到要修改的图书,则输出提示信息
if(flag == 0) {
    printf("未找到要修改的图书!\n");
}

//关闭文件指针
fclose(fp);
fclose(ftp);

//删除原文件,并将临时文件重命名为原文件名
remove("books.dat");
rename("temp.dat", "books.dat");

5. 查找图书信息

查找图书信息需要先打开文件,然后读取文件中的图书信息。接着根据需要查找的图书信息,逐个比对结构体数组中的图书信息,最后输出查找到的图书信息。以下是查找图书信息的示例代码:

//定义结构体数组
struct book books[100];

//定义文件指针
FILE *fp;

//打开文件
fp = fopen("books.dat", "rb");

//输入要查找的图书名称
printf("请输入要查找的图书名称:");
char name[50];
scanf("%s", name);

//读取文件中的图书信息,逐个比对结构体数组中的图书信息,输出查找到的图书信息
int i = 0;
int flag = 0;
while(!feof(fp)) {
    fread(&books[i], sizeof(struct book), 1, fp);
    if(strcmp(books[i].name, name) == 0) {
        printf("图书名称:%s\n", books[i].name);
        printf("图书作者:%s\n", books[i].author);
        printf("图书价格:%f\n", books[i].price);
        flag = 1;
    }
    i++;
}

//如果未找到要查找的图书,则输出提示信息
if(flag == 0) {
    printf("未找到要查找的图书!\n");
}

//关闭文件指针
fclose(fp);

6. 显示所有图书信息

显示所有图书信息需要先打开文件,然后逐个读取文件中的图书信息,并输出每本图书的名称、作者、价格等信息。以下是显示所有图书信息的示例代码:

//定义结构体数组
struct book books[100];

//定义文件指针
FILE *fp;

//打开文件
fp = fopen("books.dat", "rb");

//读取文件中的图书信息,逐个输出每本图书的名称、作者、价格等信息
int i = 0;
while(!feof(fp)) {
    fread(&books[i], sizeof(struct book), 1, fp);
    if(strcmp(books[i].name, "") != 0) {
        printf("图书名称:%s\n", books[i].name);
        printf("图书作者:%s\n", books[i].author);
        printf("图书价格:%f\n", books[i].price);
        printf("\n");
    }
    i++;
}

//关闭文件指针
fclose(fp);

四、示例说明

以下是添加图书信息和显示所有图书信息的示例说明:

1. 添加图书信息

假设有一个图书名称为《C语言入门教程》的图书需要添加到图书管理系统中。

运行程序,输入以下命令:

请输入数字选择功能:1
请输入图书信息:
图书名称:C语言入门教程
图书作者:张三
图书价格:25

程序会将图书信息写入文件。

2. 显示所有图书信息

假设已经添加了多本图书,并想要查看所有图书的信息。

运行程序,输入以下命令:

请输入数字选择功能:5
图书名称:C语言入门教程
图书作者:张三
图书价格:25

程序会逐个读取文件中的图书信息,并输出每本图书的名称、作者、价格等信息。

阅读剩余 82%

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

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

相关文章

  • win下安装sqlmap的方法分享

    下面详细讲解 “win下安装sqlmap的方法分享” 的完整攻略,希望对你有帮助。 步骤一:下载和安装Python 首先要确保你的电脑上已经安装了Python,如果没有,需要在官网 https://www.python.org/downloads/ 下载最新版本的 Python,进行安装,安装时要记得勾选“Add Python to PATH”选项,这样后续…

    C 2023年5月23日
    00
  • C 作用域规则

    C 作用域规则详解 在 C 语言中,变量的作用域指的是变量可以被访问的范围。C 语言定义了几种作用域,其中包括块作用域、函数作用域、文件作用域和函数形参作用域等。本文将详细介绍 C 作用域规则以及示例说明。 1. 块作用域 块作用域是指只能在定义变量的块或函数内使用变量的作用域。块作用域中定义的变量通常称为局部变量。 1.1. 示例 1 #include &…

    C 2023年5月10日
    00
  • 全面了解Java中对于异常的捕捉方法

    全面了解Java中对于异常的捕捉方法 在Java中,异常处理是一个非常重要的概念,因为在编写代码时总会遇到一些意外情况,如文件不存在、网络连接断开等等,这些异常的出现会导致程序运行崩溃,无法完成预定任务,影响程序的可靠性和稳定性。Java提供了一套完善的异常处理机制来处理这些异常,可以使程序在出现异常的情况下依然保持正常运行,从而更好地保证程序的正确性。 J…

    C 2023年5月23日
    00
  • C++如何删除map容器中指定值的元素详解

    当需要删除map容器中的元素时,可以使用erase()成员函数来实现。erase()函数可以根据指定的key,删除map中的相应元素。下面我们详细讲解C++如何删除map容器中指定值的元素: 方法一:使用迭代器来删除元素 使用迭代器可以方便地遍历map中的元素,并根据需要删除指定的元素。下面是一个删除map中指定元素的示例代码: #include <i…

    C 2023年5月23日
    00
  • Golang异常处理之优雅地控制和处理异常

    Golang异常处理之优雅地控制和处理异常 异常处理的背景 在编写Golang程序时,难免会遇到各种各样的异常情况,例如网络连接中断、文件读取失败、空指针异常等等。这些异常情况可能会导致程序崩溃或数据丢失,因此我们需要对这些异常情况进行有效的处理,而这就是Golang的异常处理机制所要解决的问题。 与传统的错误处理不同的是,Golang提供了一种更加优雅的异…

    C 2023年5月23日
    00
  • js删除数组中某几项的方法总结

    针对”js删除数组中某几项的方法总结”这个主题,可以分为以下几个步骤进行讲解: 1. 删除数组中指定下标的元素 通过JavaScript中数组对象提供的splice方法可以删除数组中指定下标的元素。splice方法会改变原数组,第一个参数为要删除的元素的下标,第二个参数指定要删除的元素数量。 以下是一段示例代码: // 要操作的数组 let arr = [1…

    C 2023年5月22日
    00
  • C字符串操作函数的实现详细解析

    C字符串操作函数的实现详细解析 1. 什么是C字符串 C语言中的字符串是由一组字符序列组成,以’\0’(空字符)结尾,其在内存中的存储方式是顺序存储的字符数组。由于C语言本身并没有提供字符串类型,所以需要通过字符数组及一些函数来操作字符串。 2. 常用C字符串操作函数 常用的C字符串操作函数有以下几种: strlen:计算字符串的长度 strcpy:将一个字…

    C 2023年5月23日
    00
  • 如何利用最简单的C语言实现AI五子棋

    以下是详细的攻略。 一、概述 AI五子棋的实现可以使用简单的C语言编写。整个程序可以分为三个部分:用户交互、棋盘表示、决策引擎。用户交互包括输入和输出,棋盘表示包括棋盘的状态,决策引擎则用于决策AI下一步的位置。下面将分别对这三个部分进行详细的说明。 二、用户交互 用户交互可以通过控制台实现。程序需要输出当前棋局状态并获取用户下子的位置。输出可以使用简单的A…

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