C语言图书管理系统控制台程序

程序示例精选
C语言图书管理系统控制台程序
如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助!

前言

这篇博客针对《C语言图书管理系统控制台程序》编写代码,代码整洁,规则,易读。 学习与应用推荐首选。


文章目录

一、所需工具软件
二、使用步骤
       1. 主要代码
       2. 运行结果
三、在线协助

一、所需工具软件

       1. VS2022
       2. C++

二、使用步骤

代码如下(示例):
typedef struct
{char no[20];     // 书号char name[20];    // 书名char author[20];  // 作者float price;      // 价格 int count;      //数量 }book;book bk[MAXNUM];int cnt = 0; //图书总数量 void readFile() //读文件 
{FILE* fo;fo = fopen("bookdata.txt", "r");fscanf(fo, "%d", &cnt);int i;for (i = 1; i <= cnt; i++){fscanf(fo, "%s", bk[i].no);fscanf(fo, "%s", bk[i].name);fscanf(fo, "%s", bk[i].author);fscanf(fo, "%f", &bk[i].price);fscanf(fo, "%d", &bk[i].count);}fclose(fo);
}void saveFile() //写文件 
{FILE* fp;fp = fopen("bookdata.txt", "w");int i;fprintf(fp, "%d\n", cnt);for (i = 1; i <= cnt; i++){fprintf(fp, "%5s", bk[i].no);fprintf(fp, "%10s", bk[i].name);fprintf(fp, "%13s", bk[i].author);fprintf(fp, "%13f", bk[i].price);fprintf(fp, "%13d\n", bk[i].count);}fclose(fp);
}void swap(char* src, char* des) //字符串交换
{char t[100];strcpy(t, src);strcpy(src, des);strcpy(des, t);
}void addbook() //新增图书
{system("cls");char a[20];system("cls");printf("  ********** 增加图书 **********\n");cnt++; //图书的数量+1 printf("请输入图书书号: ");scanf("%s", a);if (search_no(a) != 0) {printf("该书已存在,您可以返回主菜单选择修改信息\n");cnt--;return;}swap(a, bk[cnt].no);printf("请输入图书书名: ");scanf("%s", bk[cnt].name);printf("请输入图书作者: ");scanf("%s", bk[cnt].author);printf("请输入图书价格: ");scanf("%f", &bk[cnt].price);printf("请输入图书数量: ");scanf("%d", &bk[cnt].count);printf("新增成功!");
}void sort_menu() // 排序图书菜单 
{system("cls");printf("请选择排序方式:\n");printf("1 书号  ");printf("2 书名  ");printf("0 退出\n");printf("请选择:");
}void del_menu() //删除图书菜单 
{system("cls");printf(" ********** 删除图书 **********\n");printf(" 请选择删除方式:\n");printf(" 1 书号  ");printf(" 2 书名  ");printf(" 0 退出\n");printf("请选择:");
}void search_menu() // 查找图书菜单 
{system("cls");printf("  ********** 查找图书 **********\n");printf(" 请选择查找方式:\n");printf(" 1 书号  ");printf(" 2 书名  ");printf(" 3 作者  ");printf(" 0 退出\n");printf("请选择:");
}void change_menu() //修改图书菜单 
{system("cls");printf(" ********** 修改图书 **********\n");printf(" 请选择修改方式:\n");printf(" 1 书号  ");printf(" 2 书名  ");printf(" 0 退出\n");printf(" 请选择:");}void print_menu()  // 输出菜单 
{system("cls");printf("\n********** 图书管理系统 **********\n\n");printf("\t1 增加图书\n");printf("\t2 修改图书\n");printf("\t3 删除图书\n");printf("\t4 查找图书\n");printf("\t5 图书排序\n");printf("\t6 图书显示\n");printf("\t7 图书销售\n");printf("\t0 退出系统\n\n");printf("\t请选择要执行的操作: ");
}void print_head()  // 打印说明文字 
{char id[5] = "序号";char no[5] = "书号";char name[5] = "书名";char author[9] = "作者";char price[11] = "价格";char count[11] = "数量";printf("% 5s", id);printf("%10s", no);printf("%13s", name);printf("%13s", author);printf("%13s", price);printf("%13s", count);printf("\n");
}void output(int i)  //输出 cnt 为 i 的图书信息 
{printf("%10s", bk[i].no);printf("%13s", bk[i].name);printf("%13s", bk[i].author);printf("%15.2f", bk[i].price);printf("%15d\n", bk[i].count);
}int main()
{int i, j;while (1){readFile();print_menu();int n;scanf("%d", &n);printf("\n");if (n == 0) {printf("\t谢谢您的使用!");break;}switch (n){case 1: //增加图书 addbook();break;case 2://修改图书 change_menu();int p;scanf("%d", &p);if (p == 0)break;switch (p){case 1:printf(" 请输入要修改书的书号:");char no[20];scanf("%s", no);j = search_no(no);if (j == 0)printf(" 未查找到该书!\n\t");else {change(j);printf("修改成功!");}break;case 2:printf(" 请输入要修改书的书名:");char name[20];scanf("%s", name);i = search_name(name);if (i == 0)printf(" 未查找到该书!\n\t");else {change(i);printf("修改成功!");}break;default:printf(" 输入错误!\n\t");}break;case 3://删除图书 del_menu();int p1;scanf("%d", &p1);if (p1 == 0)break;switch (p1){case 1:printf("请输入要删除书的书号:");char num[20];scanf("%s", num);j = search_no(num);if (j == 0)printf("未查找到该书!\n");else {del(j);printf("删除成功!");}break;case 2:printf("请输入要删除书的书名:");char name[20];scanf("%s", name);i = search_name(name);if (i == 0)printf("未查找到该书!");else {del(i);printf("删除成功!");}break;default:printf("输入错误!\n");}break;default:printf("输入有误,请重新选择:\n\n");}saveFile();//保存 pause();}system("pause");return 0;
}
运行结果

三、在线协助:

如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助!

1)远程安装运行环境,代码调试
2)Visual Studio, Qt, C++, Python编程语言入门指导
3)界面美化
4)软件制作
5)云服务器申请
6)网站制作

当前文章连接:https://blog.csdn.net/alicema1111/article/details/132666851
个人博客主页:https://blog.csdn.net/alicema1111?type=blog
博主所有文章点这里:https://blog.csdn.net/alicema1111?type=blog

博主推荐:
Python人脸识别考勤打卡系统:
https://blog.csdn.net/alicema1111/article/details/133434445
Python果树水果识别:https://blog.csdn.net/alicema1111/article/details/130862842
Python+Yolov8+Deepsort入口人流量统计:https://blog.csdn.net/alicema1111/article/details/130454430
Python+Qt人脸识别门禁管理系统:https://blog.csdn.net/alicema1111/article/details/130353433
Python+Qt指纹录入识别考勤系统:https://blog.csdn.net/alicema1111/article/details/129338432
Python Yolov5火焰烟雾识别源码分享:https://blog.csdn.net/alicema1111/article/details/128420453
Python+Yolov8路面桥梁墙体裂缝识别:https://blog.csdn.net/alicema1111/article/details/133434445
Python+Yolov5道路障碍物识别:https://blog.csdn.net/alicema1111/article/details/129589741
Python+Yolov5跌倒检测 摔倒检测 人物目标行为 人体特征识别:https://blog.csdn.net/alicema1111/article/details/129272048

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

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

相关文章

740. 删除并获得点数(leetcode)

740. 删除并获得点数&#xff08;leetcode&#xff09; 题目描述 给你一个整数数组 nums &#xff0c;你可以对它进行一些操作。每次操作中&#xff0c;选择任意一个 nums[i] &#xff0c;删除它并获得 nums[i] 的点数。之后&#xff0c;你必须删除 所有 等于 nums[i] - 1 和 …

目标检测算法用一个案例详细讲解

学习目标&#xff1a; 目标检测算法用一个案例详细讲解 学习内容&#xff1a; 主要以YOLO为例 YOLO 工作流程 输入图像&#xff1a; 首先&#xff0c;输入一张图像&#xff0c;该图像将被调整为固定大小&#xff08;如 416x416&#xff09;。网格划分&#xff1a; 图像被划分…

加密与安全_三种方式实现基于国密非对称加密算法的加解密和签名验签

文章目录 国际算法基础概念常见的加密算法及分类签名和验签基础概念常见的签名算法应用场景 国密算法对称加密&#xff08;DES/AES⇒SM4&#xff09;非对称加密&#xff08;RSA/ECC⇒SM2&#xff09;散列(摘要/哈希)算法&#xff08;MD5/SHA⇒SM3&#xff09; Code方式一 使用B…

智慧园区综合平台解决方案PPT(75页)

## 智慧园区的理解 ### 从园区1.0到园区4.0的演进 1. 园区1.0&#xff1a;以土地经营为主&#xff0c;成本驱动&#xff0c;提供基本服务。 2. 园区2.0&#xff1a;服务驱动&#xff0c;关注企业成长&#xff0c;提供增值服务。 3. 园区3.0&#xff1a;智慧型园区&#xff…

机器学习引领教育革命:智能教育的新时代

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f4d2;1. 引言&#x1f4d9;2. 机器学习在教育中的应用&#x1f31e;个性化学习&#x1f319;评估与反馈的智能化⭐教学资源的优…

spring-boot-configuration-processor注释处理器

开源项目SDK&#xff1a;https://github.com/mingyang66/spring-parent 个人文档&#xff1a;https://mingyang66.github.io/raccoon-docs/#/ spring-boot-configuration-processor是springboot提供的一个注释处理器&#xff08;annotation processor&#xff09;,它用于在编译…

Python多线程Concurrent

背景 从 Python3.2 开始&#xff0c;标准库为我们提供了 concurrent.futures 模块&#xff0c;它提供了 ThreadPoolExecutor 和 ProcessPoolExecutor两个类&#xff0c;实现了对 threading 和 multiprocessing 的进一步抽象&#xff08;这里主要关注线程池&#xff09;&#x…

STC89C52RC单片机设计的FM收音机+自动搜台+存储电台(程序+原理图+PCB)

资料下载地址&#xff1a;STC89C52RC单片机设计的FM收音机自动搜台存储电台&#xff08;程序原理图PCB) 1、实物图 2、部分程序 #include <reg52.h> #include "tea5767.h" #include "delay.h" #include "lcd1602.h" //K1:上一台 K2:下一…

mac电脑游戏推荐:NBA 2K24 街机版下载

NBA 2K24 街机版是一款由2K Sports开发并发行的篮球游戏&#xff0c;属于著名的NBA 2K系列。这款游戏为玩家提供了与NBA联赛中真实球员和球队互动的机会&#xff0c;体验篮球比赛的激情与紧张。街机版的NBA 2K24通常会在游戏厅、商场等公共场所设置&#xff0c;供玩家投币游玩。…

ubuntu server的安装

官网&#xff1a;https://ubuntu.com/ 点击 Get Ubuntu,选择Server&#xff0c;点击Get Ubuntu Server,下载iso到本地。 相关资料&#xff1a; Ubuntu Server 20.04详细安装教程虚拟机安装 Ubuntu

c++重载(运算符)

1&#xff09;C入门级小知识&#xff0c;分享给将要学习或者正在学习C开发的同学。 2&#xff09;内容属于原创&#xff0c;若转载&#xff0c;请说明出处。 3&#xff09;提供相关问题有偿答疑和支持。 对于系统的所有操作符&#xff0c;一般情况下&#xff0c;只支持基本数…

Android Gradle 开发与应用 (二): Android 项目结构与构建配置

目录 1. Android 项目的 Gradle 文件结构 1.1 项目根目录 1.2 模块目录 2. Gradle 构建配置详解 2.1 配置 Android 项目的 build.gradle 2.2 配置模块的 build.gradle 2.3 使用 productFlavors 管理多版本应用 2.4 使用 buildConfigField 注入构建常量 在 Android 开发…

AWTK 用 icon_at 属性设置图标位置

1. style 在 style 文件中通过 icon_at 属性设置图标位置。 <style name"right_bottom" icon_at"right_bottom"><normal icon"unchecked_right_bottom" /><pressed icon"unchecked_right_bottom" /><over i…

redis实战-短信登录

基于session的登录流程 session的登录流程图 1. 发送验证码 用户在提交手机号后&#xff0c;会校验手机号是否合法&#xff0c;如果不合法&#xff0c;则要求用户重新输入手机号 如果手机号合法&#xff0c;后台此时生成对应的验证码&#xff0c;同时将验证码进行保存&#x…

第2章:程序设计语言

第2章&#xff1a;程序设计语言 在源程序中&#xff0c;可由用户&#xff08;程序员&#xff09;为变量、函数和数据类型等命名。 脚本语言一般运行在解释器或虚拟机中&#xff0c;便于移植&#xff0c;开发效率较高。 变量是计算机内存单元的抽象&#xff0c;在程序中表示数据…

1186. 删除一次得到子数组最大和(leetcode)

1186. 删除一次得到子数组最大和&#xff08;leetcode&#xff09; 题目描述 给你一个整数数组&#xff0c;返回它的某个 非空 子数组&#xff08;连续元素&#xff09;在执行一次可选的删除操作后&#xff0c;所能得到的最大元素总和。换句话说&#xff0c;你可以从原数组中选…

第一节:如何开发第一个spring boot3.x项目(自学Spring boot 3.x的第一天)

大家好&#xff0c;我是网创有方&#xff0c;从今天开始&#xff0c;我会记录每篇我自学spring boot3.x的经验。只要我不偷懒&#xff0c;学完应该很快&#xff0c;哈哈&#xff0c;更新速度尽可能快&#xff0c;想和大佬们一块讨论&#xff0c;如果需要讨论的欢迎一起评论区留…

Pytorch实战(二)

文章目录 前言一、LeNet5原理1.1LeNet5网络结构1.2LeNet网络参数1.3LeNet5网络总结 二、AlexNext2.1AlexNet网络结构2.2AlexNet网络参数2.3Dropout操作2.4PCA图像增强2.5LRN正则化2.6AlexNet总结 三、实战3.1LeNet5模型搭建3.2模型训练 前言 参考原视频&#xff1a;哔哩哔哩。 …

kafka和rabbitmq的区别

1、语言与开发重点 1、Kafka&#xff1a;采用Scala语言开发&#xff0c;主要用于处理活跃的流式数据和大数据量的数据处理。 2、RabbitMQ&#xff1a;由Erlang语言开发&#xff0c;主要用在实时对可靠性要求比较高的消息传递上。 2、结构与交互方式&#xff1a; 1、Kafka&a…

Java中的WebSocket编程详解

Java中的WebSocket编程详解 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在当今互联网应用中&#xff0c;实时通讯变得越来越重要&#xff0c;而WebSocket作为…