C语言图书管理系统的代码,包括图书录入、查询、插入、修改和删除功能。

 

 

以下是一个简单的C语言图书管理系统的代码,包括图书录入、查询、插入、修改和删除功能。

 


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_BOOKS 100 // 最大图书数量

// 图书结构体
typedef struct {
    int id; // 图书ID
    char title[50]; // 图书名称
    char author[50]; // 作者
    int year; // 出版年份
} Book;

// 图书数组
Book books[MAX_BOOKS];

// 当前图书数量
int num_books = 0;

// 添加图书
void add_book() {
    if (num_books >= MAX_BOOKS) {
        printf("Error: 图书数量已达到上限!\n");
        return;
    }
    Book book;
    printf("请输入图书ID:");
    scanf("%d", &book.id);
    printf("请输入图书名称:");
    scanf("%s", book.title);
    printf("请输入作者:");    scanf("%s", book.author);
    printf("请输入出版年份:");
    scanf("%d", &book.year);
    books[num_books++] = book;
    printf("图书添加成功!\n");
}

// 根据ID查询图书
void find_book() {
    int id;
    printf("请输入要查询的图书ID:");
    scanf("%d", &id);
    for (int i = 0; i < num_books; i++) {
        if (books[i].id == id) {
            printf("图书ID:%d\n", books[i].id);
            printf("图书名称:%s\n", books[i].title);
            printf("作者:%s\n", books[i].author);
            printf("出版年份:%d\n", books[i].year);
            return;
        }
    }
    printf("未找到该图书!\n");
}

// 修改图书信息
void modify_book() {
    int id;
    printf("请输入要修改的图书ID:");
    scanf("%d", &id);
    for (int i = 0; i < num_books; i++) {
        if (books[i].id == id) {
            printf("请输入新的图书名称:");
            scanf("%s", books[i].title);
            printf("请输入新的作者:");
            scanf("%s", books[i].author);
            printf("请输入新的出版年份:");
            scanf("%d", &books[i].year);
            printf("图书信息修改成功!\n");
            return;
        }
    }
    printf("未找到该图书!\n");
}

// 删除图书
void delete_book() {
    int id;
    printf("请输入要删除的图书ID:");
    scanf("%d", &id);
    for (int i = 0; i < num_books; i++) {
        if (books[i].id == id) {
            for (int j = i; j < num_books - 1; j++) {
                books[j] = books[j + 1];
            }
            num_books--;
            printf("图书删除成功!\n");
            return;
        }
    }
    printf("未找到该图书!\n");
}

// 显示所有图书
void show_all_books() {
    printf("所有图书信息如下:\n");
    for (int i = 0; i < num_books; i++) {
        printf("图书ID:%d\n", books[i].id);
        printf("图书名称:%s\n", books[i].title);
        printf("作者:%s\n", books[i].author);
        printf("出版年份:%d\n", books[i].year);
        printf("\n");
    }
}

// 主函数
int main() {
    int choice;
    while (1) {
        printf("请选择操作:\n");
        printf("1. 添加图书\n");
        printf("2. 根据ID查询图书\n");
        printf("3. 修改图书信息\n");
        printf("4. 删除图书\n");
        printf("5. 显示所有图书\n");
        printf("6. 退出\n");
        scanf("%d", &choice);
        switch (choice) {
            case 1:
                add_book();
                break;
            case 2:
                find_book();
                break;
            case 3:
                modify_book();
                break;
            case 4:
                delete_book();
                break;
            case 5:
                show_all_books();
                break;
            case 6:
                exit(0);
            default:
                printf("无效的选择!\n");
        }
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/194983.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux作业管理_jobs

4.2 作业管理 是指控制当前正在运行的进程的行为&#xff0c;也称为进程控制。 是shell的一个特性&#xff0c;使用户能在多个独立进程间进行切换。 例如&#xff0c;用户可以挂起一个正在运行的进程&#xff0c;稍后再恢复其运行。当用户使用vim编辑一个文本文件&#xff0c…

【Python百宝箱】《AI之道:自动化机器学习与智能决策的终极指南》

代码之梦&#xff1a;探索Python AI库的奇妙世界 前言 在当今数字时代&#xff0c;人工智能和自动机器学习已成为推动科技创新的关键力量。本文深入探讨了多个强大的Python库&#xff0c;涵盖了从自动化模型选择、特征工程到模型解释性的全方位工具&#xff0c;为读者提供了丰…

java TrueLicense实现 实现License授权许可和验证

文章目录 简述License 生成License 客户端部署 简述 可用于项目交付项目部署到甲方以及包括代码防止泄露&#xff0c;经常会出现公司内部代码被已离职人员在下家公司使用&#xff0c;底层代码的封装增加license部分&#xff0c;杜绝这块的问题。定期更换license文件可进行续期…

Blast使用

makeblastdb注意事项makeblastdb及blastn的使用使用Blast本地数据库获得PSSM特征矩阵BLAST Database error: No alias or index file found for protein database报错BLAST Database error: No alias or index file found for nucleotide database[db] in search path的可能原因…

Linux命令(141)之sar

linux命令之sar 1.sar介绍 linux命令sar是用来从各个方面对系统的活动进行监控报告&#xff0c;包括&#xff1a;CPU使用率&#xff0c;内存使用&#xff0c;磁盘I/O等 2.sar用法 sar [参数] [ <时间间隔> [ <次数> ] ] sar参数 参数说明-A显示系统所有资源设备…

python scipy.spatial.distance.pdist学习详记——(待完善)

1.Python scipy.spatial.distance.pdist用法及代码示例

分享81个节日PPT,总有一款适合您

分享81个节日PPT&#xff0c;总有一款适合您 81个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/1V0feg5pZ8C1Szycy40CrUw?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易…

JDK8特性,Lambda,时间日期,接口增强,Optional,Stream流

目录 JDK8 Lambda 概述 特点 语法 几种基本的写法 方法的引用 几种常见方式 常见的函数式接口 Supplier 生产数据 Consumer 消费数据 Function Predicate LocalDate&LocalTime&LocalDateTime jdk7日期时间存在的问题 设计不合理 时间格式化和解析操作线…

二分类问题中评估模型的示例及释义:召准率、召回率等

1、评估参数定义 1.1、召准率&#xff08;Precision&#xff09; 召准率是衡量模型预测正类标签时的准确度的指标。它计算的是模型预测的正类中真正为正类的比例。换句话说&#xff0c;召准率表示在所有预测为正类的实例中&#xff0c;正确识别为正类的实例所占的比例。 其中…

07_注解与动态代理

注解 什么是注解 注解&#xff08;Annotation&#xff09;&#xff0c;就是 Java 代码里面的特殊标记&#xff0c;例如 Override、Test 等作用&#xff1a;让其他程序根据注解信息来决定怎么执行该程序注意&#xff1a;注解可以用在类上、构造器上、方法上、成员变量上、参数…

SQLserver通过字符串中间截取然后分组

当我们存的数据是json的时候可以全部取出在模糊查询但是有多个重复数据的时候就没办法准确的模糊出来这个时候我们就需要用的字符串截取 --创建函数create FUNCTION [dbo].[Fmax] (str varchar(50),start VARCHAR(50),length VARCHAR(50)) RETURNS varchar(max) AS BEGINDEC…

Spring MVC学习随笔-文件下载和上传(配置文件上传解析器multipartResolver)

学习视频&#xff1a;孙哥说SpringMVC&#xff1a;结合Thymeleaf&#xff0c;重塑你的MVC世界&#xff01;&#xff5c;前所未有的Web开发探索之旅 学习视频&#xff1a;【编程不良人】继spring之后快速入门springmvc,面对SpringMVC不用慌 六、SpringMVC 文件上传下载 6.1 文件…

【最通用版FPGA 实现 SPI 驱动】

最近研究了一下SPI协议的FPGA实现&#xff0c;发现网上很多大佬分享的方法都是针对某一特定的flash芯片或者某一传感器芯片来设计电路结构的。所以想根据SPI&#xff08;Serial Peripheral Interface&#xff09;的基本通讯协议实现一个通用版的SPI Master驱动。SPI在嵌入式领域…

同源策略与跨域

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 不论个人练习还是实际开…

【PUSDN】centos查看日志文件内容,包含某个关键字的前后5行日志内容,centos查看日志的几种方法

简述 centos查看日志的几种方法 centos查看日志文件内容&#xff0c;包含某个关键字的前后5行日志内容 前情提示 系统&#xff1a; 一说 部分截图、链接等因过期、更换域名、MD语法等可能不显示&#xff0c;可联系反馈&#xff08;备注好博文地址&#xff09;&#xff0c…

HR看好的字符函数和字符串处理函数!!!

本篇会加入个人的所谓‘鱼式疯言’❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言,而是理解过并总结出来通俗易懂的大白话,我会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的&#xff0c;可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念 前言 在本篇…

mybatis整合(手动添加jar包方式)

操作步骤 创建数据库 建立user表 放入数据 1、创建javaweb工程并添加Jar包 用到的jar包 junit 用于测试 mybatis框架&#xff1a;mybatis-3.5.9.jar mysql数据库&#xff1a;mysql-connector-java-8.0.28.jar 2、添加MyBatis核心配置文件 <?xml version"1.0"…

Leetcode刷题详解——乘积为正数的最长子数组长度

1. 题目链接&#xff1a;1567. 乘积为正数的最长子数组长度 2. 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;请你求出乘积为正数的最长子数组的长度。 一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。 请你返回乘积为正数的最长子数组长度。 示…

什么是结构化数据?哪些OCR软件可将图片文字转为结构化数据?

结构化数据是指按照一定的数据模型组织和存储的数据&#xff0c;具有明确的数据类型和数据关系&#xff0c;并且可通过计算机程序进行处理和分析。这种数据通常存储在定义明确的模式中&#xff0c;例如数据库&#xff0c;采用表格的形式存储&#xff0c;每个数据项都有特定的字…

Mover Creator 用户界面

1 “开始”对话框 首次打开 Mover Creator 时&#xff0c;出现的第一个页面是“开始”对话框&#xff0c;如下所示。从这里开始&#xff0c;用户可以选择开始设计飞机、武器或发动机。在上述每种情况下&#xff0c;用户都可以创建新模型或编辑现有模型。 1.1 新建模型 如果用…