C语言编写简易图书管理系统[通俗易懂]

C语言编写简易图书管理系统[通俗易懂]1.课程论文题目图书管理系统2.程序设计思路图书管理系统保持记录以进行删除,查询,借书,还书,退出,添加等等操作;使用菜单以实现功能选择模块。3.功能模块图4.数据结构设计1.编写主函数main()2.设计功能选项并标号,用switch选择,然后进入不同模块,进行不同选择,实现不同功能。3.为每个图书信息设置一个结构体,提供查询功能,还有删除功能以及借书还书功能。4.每运行一…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

2022.1.11更新:这篇帖子是我2019年寒假写的,而且当时没写注释而且变量命名也不规范所以我一下子也不知道自己当时写的是什么东西(注释和良好代码风格很重要),代码也有些bug(当时没有仔细测试),但是这个程序是可以运行的应付一般的期末课设应该没问题(有的朋友私信我说运行不了,可能是环境的问题,我当时用的是vs2017,其他环境不能运行的话针对错误提示自行百度一下吧~)
———————————————-分割线—————————————————————-

1.题目
图书管理系统
2.程序设计思路
图书管理系统保持记录以进行删除,查询,借书,还书,退出,添加等等操作;使用菜单以实现功能选择模块。
3.功能模块图
系统功能模块图(增删改查)

4.数据结构设计
1.编写主函数main ()
2.设计功能选项并标号,用switch选择,然后进入不同模块,进行不同选择,实现不同功能。
3.为每个图书信息设置一个结构体,提供查询功能,还有删除功能以及借书还书功能。
4.每运行一功能后都返回主菜单,方便再次选择,设置退出模块,方便退出。

5.程序代码

#include<stdio.h>
#include<windows.h>
#include<string.h>
#include<conio.h>
#define M 100
struct books
{
char BookName[12];
int BookNumber;
float Price;
char Writter[12];
char ExistentialState[12];
char Name[12];
char Sex[12];
int SchoolNember;
}s[M];
int N;
int main ()
{ 
int sele; 
sele=1;
void Input();
void  Query();
int Delete();
void Borrow();
void  Return();
void Finish();
while (1)
{	
system("cls"); 
printf("\n\n");
printf("***********************************************|     1.图书入库      |***********************************************\n\n");
printf("***********************************************|     2.图书查询      |***********************************************\n\n");
printf("***********************************************|     3.删除图书      |***********************************************\n\n");
printf("***********************************************|     4.图书借阅      |***********************************************\n\n");
printf("***********************************************|     5.图书归还      |***********************************************\n\n");
printf("***********************************************|     0.退出软件      |***********************************************\n\n");
label_1:printf("\n\n请输入功能序号:");
scanf ("%d",&sele);
if(sele>=0 && sele<=5)
switch(sele)
{
case 1:Input();break;
case 2:Query();break;
case 3:Delete();break;
case 4:Borrow();break;
case 5:Return();break;
case 0:Finish();break;
}	
else
{
printf("输入错误请再次输入|\n\n");
goto label_1;
}
}
}
/*********输入*********/
void Input()
{ 
int n,i,m;
N=0;
system("cls");
printf("可输入的书本数:");
scanf("%d",&n);
N += n; m = n;
printf("请输入相关信息:\n");
for(i=0;i<n;i++)
{
system("cls");
printf("还有%d本书待录入\n", m); m--;
printf("图书名称:");
scanf("%s",s[N-n+i].BookName);
printf("图书编号:");
scanf("%d",&s[N-n+i].BookNumber);
printf("单价:");
scanf("%f",&s[N-n+i].Price);
printf("作者:");
scanf("%s",&s[N-n+i].Writter);
strcpy(s[N-n+i].ExistentialState,"未借出");
strcpy(s[N-n+i].Name,"无");
}
printf("已成功入库%d本图书~~~,3秒后自动返回主菜单",n);
Sleep(3000);
}
/********查询**********/
void Query()
{
int i,j[100]={-1},d,k,t=0;
char m[20];
label_2:system("cls");
printf("查询:");
printf("1:图书名称              2:图书编号");
printf("\n\n请输入查询选项:");
scanf("%d",&k);
if(k==1)
{
system("cls"); 
printf("请输入图书名称:");
scanf("%s",m);
for(i=0;i<N;i++)
if(strcmp(m,s[i].BookName)==0)
{
j[t]=i;
t=t+1;
}
}
else if(k==2)
{
system("cls"); 
printf("请输入图书编号:");
scanf("%d",&d);
for(i=0;i<N;i++)
if(d==s[i].BookNumber)
{
j[t]=i;
t++;
}
}
if (j[0] == -1 && t == 0)
{
system("cls");
printf("书库暂时没有这本书哦~^_^\n\n继续查询吗?【按1继续/按其他键回主菜单】");
scanf("%d", &k);
if (k == 1)
goto label_2;
}
if(j[0]!=-1 && t!=0)
{
system("cls"); 
printf("\t图书名称 \t图书编号 \t单价 \t作者 \t存在状态 \t借书人姓名 \t性别 \t学号\n");
for(i=0;i<t;i++)
printf("\t%s       \t%d       \t%.3f\t%s   \t%s   \t%s         \t%s    \t%d ",s[j[i]].BookName,s[j[i]].BookNumber,s[j[i]].Price,s[j[i]].Writter,s[j[i]].ExistentialState,s[j[i]].Name,s[j[i]].Sex,s[j[i]].SchoolNember);
printf("\n\n继续查询吗?【按1继续/按其他键回主菜单】");
scanf("%d", &k);
if (k == 1)
goto label_2;
}
}
/********删除模块*********/
int Delete()
{
int i,d,k,t=0;
char ms[20];
int ja=-1;
label_1:system("cls");
printf("查询:");
printf("1:图书名称              2:图书编号");
printf("\n\n请输入查询选项:");
scanf("%d",&k);
if(k==1)
{
system("cls"); 
printf("请输入图书名称:");
scanf("%s",ms);
for(i=0;i<N;i++)
if(strcmp(ms,s[i].BookName)==0)
{
ja=i;
break;
}
}
else if(k==2)
{
system("cls"); 
printf("请输入图书编号:");
scanf("%d",&d);
for(i=0;i<N;i++)
if(d==s[i].BookNumber)
{
ja=i;
break;
}
}
printf("确定删除该图书吗?\n********1表示Yes,其他No*********");
int p;
scanf("%d",&p);
if (p == 1)
{
printf("删除中...");
Sleep(300);
}
if (p != 1)
return 0;
if(ja!=-1 && p==1)
{
N=N-1;
for(i=ja;i<N;i++)
{
strcpy(s[i].BookName,s[i+1].BookName);
s[i].BookNumber=s[i+1].BookNumber;
s[i].Price=s[i+1].Price;
strcpy(s[i].Writter,s[i+1].Writter);
strcpy(s[i].ExistentialState,s[i+1].ExistentialState);
strcpy(s[i].Name,s[i+1].Name);
strcpy(s[i].Sex,s[i+1].Sex);
s[i].SchoolNember=s[i+1].SchoolNember;
}
printf("删除成功\n"); 
printf("\n\n继续删除吗?【按1继续/按其他键回主菜单】");
scanf("%d", &k);
if (k == 1)
goto label_1;
}
else if (ja == -1)
{
printf("书库暂时没有这本书哦~^_^\n");
printf("\n\n继续删除吗?【按1继续/按其他键回主菜单】");
scanf("%d", &k);
if (k == 1)
goto label_1;
}
}
/**********借书模块***********/
void Borrow()
{
int i,j[100]={-1},d,k,t=0;
char m[20];
label_1:system("cls");
printf("查询:");
printf("1:图书名称              2:图书编号");
printf("\n\n请输入查询选项:");
scanf("%d",&k);
if(k==1)
{
system("cls"); 
printf("请输入图书名称:");
scanf("%s",&m);
for(i=0;i<N;i++)
if(strcmp(m,s[i].BookName)==0)
{
j[t]=i;
t=t+1;
}
}
else if(k==2)
{
system("cls");
printf("请输入图书编号:");
scanf("%d",&d);
for(i=0;i<N;i++)
if(d==s[i].BookNumber)
{
j[t]=i;
t++;
}
}
if (j[0] == -1 && t == 0)
{
printf("没有找到这本书喔~~\n"); 
printf("\n\n继续借书吗?【按1继续/按其他键回主菜单】");
scanf("%d", &k);
if (k == 1)
goto label_1;
}
if(j[0]!=-1&&t!=0&&s[j[i]].ExistentialState==" 未借出")
{
system("cls"); 
printf("\t图书名称 \t图书编号 \t单价 \t作者 \t存在状态 \t借书人姓名 \t性别 \t学号\n");
printf("\t%s       \t%d       \t%.3f\t%s   \t%s   \t%s         \t%s    \t%d ", s[j[i]].BookName, s[j[i]].BookNumber, s[j[i]].Price, s[j[i]].Writter, s[j[i]].ExistentialState, s[j[i]].Name, s[j[i]].Sex, s[j[i]].SchoolNember);
}
printf("\n\n****************\n****************1:确定借阅  2:退出\n****************\n");
scanf("%d",&k);
switch(k)
{
case 1:system("cls"); 
printf("请输入学号:\n");
scanf("%d",&s[j[i]].SchoolNember);
printf("请输入姓名:\n");
scanf("%s",&s[j[i]].Name);
printf("请输入性别:\n");
scanf("%s",&s[j[i]].Sex);
strcpy(s[j[i]].ExistentialState,"已借出");
printf("借阅成功"); printf("\n\n继续借书吗?【按1继续/按其他键回主菜单】");
scanf("%d", &k);
if (k == 1)
goto label_1;
break;
case 2:system("cls"); break;
}
}
/*************还书模块***************/
void Return()
{
int i,j[100]={-1},d,k,t=0;
char m[20];
label_1:system("cls");
printf("查询:");
printf("1:图书名称              2:图书编号");
printf("\n\n请输入查询选项:");
scanf("%d",&k);
if(k==1)
{
system("cls"); 
printf("请输入图书名称:");
scanf("%s",&m);
for(i=0;i<N;i++)
if(strcmp(m,s[i].BookName)==0)
{
j[t]=i;
t++;
break;
}
}
else if(k==2)
{
system("cls"); 
printf("请输入图书编号:");
scanf("%d",&d);
for(i=0;i<N;i++)
if(d==s[i].BookNumber)
{
j[t]=i;
t++;
break;
}
}
if (t == 0)
{
printf("没有找到这本书喔~~\n");
printf("\n\n继续还书吗?【按1继续/按其他键回主菜单】");
scanf("%d", &k);
if (k == 1)
goto label_1;
}
else 
{
system("cls"); 
printf("\t图书名称 \t图书编号 \t单价 \t作者 \t存在状态 \t借书人姓名 \t性别 \t学号\n");
printf("\t%s       \t%d       \t%.3f\t%s   \t%s   \t%s         \t%s    \t%d ", s[j[i]].BookName, s[j[i]].BookNumber, s[j[i]].Price, s[j[i]].Writter, s[j[i]].ExistentialState, s[j[i]].Name, s[j[i]].Sex, s[j[i]].SchoolNember);
printf("\n\n****************\n****************1:确定归还  2:退出\n****************\n");
int p;
scanf("%d",&p);
if(p==1)
{
system("cls"); 
strcpy(s[j[i]].ExistentialState,"未借出");
strcpy(s[j[i]].Name,"无");
s[j[i]].SchoolNember=0;
printf("已归还\n");
printf("\n\n继续还书吗?【按1继续/按其他键回主菜单】");
scanf("%d", &k);
if (k == 1)
goto label_1;
}
}
}
/*************结束模块***************/
void Finish()
{
exit(0);
}

参考资料:c语言程序设计报告 图书管理系统

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/183128.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • springboot 长轮询实现

    springboot 长轮询实现springboot长轮询实现基于@EnableAsync , @Sync@SpringBootApplication@EnableAsyncpublicclassDemoApplication{ publicstaticvoidmain(String[]args){ SpringApplication.run(DemoApplication.cla…

    2022年10月14日
  • 什么是带通滤波器,其有什么作用?_带阻滤波器的作用是什么

    什么是带通滤波器,其有什么作用?_带阻滤波器的作用是什么带通滤波器作用带通滤波器是一个允许特定频段的波通过同时屏蔽其他频段的设备。比如RLC振荡回路就是一个模拟带通滤波器。带通滤波器是指能通过某一频率范围内的频率分量、但将其他范围的频率分量衰减到极低水平的滤波器,与带阻滤波器的概念相对。一个模拟带通滤波器的例子是电阻-电感-电容电路(RLC)。这些滤波器也可以用低通滤波器同高通滤波器组合来产生。顾名思义,带通滤波器可以理解成为一个电子接口单元,这个单元…

  • SpringBoot面试题大汇总附答案,SpringBoot面试题-持续更新中「建议收藏」

    SpringBoot面试题大汇总附答案,SpringBoot面试题-持续更新中「建议收藏」2021最新SpringBoot面试题【附答案解析】SpringBoot面试题及答案2021,SpringBoot2021最新面试题及答案,SpringBoot面试题新答案已经全部更新完了,有些答案是自己总结的,也有些答案是在网上搜集整理的。这些答案难免会存在一些错误,仅供大家参考。如果发现错误还望大家多多包涵,不吝赐教,谢谢~SpringBoot最新面试题大汇总,附答案其实,博主还整理了,更多大厂面试题,直接下载吧下载链接:高清172份,累计7701页大厂面试题PDF1、SpringBoo

  • WiFi6介绍「建议收藏」

    WiFi6介绍「建议收藏」Wi-Fi发展历程时间Wi-Fi标准传输速率工作频段其它1997年802.112Mbps改变用户接入方式,使人们从线缆解放出来1999年802.11b11Mbps2.4GHz1999年802.11a54Mbps5GHz网络中等吞吐量20Mbps2003年802.11g54Mbps2.4GHz净传输速率为24.7Mbps2009年802.11n(WIFI4)600Mbps2.4GHz&5GHz重大改进,引

  • java最长递增子序列_求数组最长递增子序列

    java最长递增子序列_求数组最长递增子序列[java]代码库packagecom.wzs;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.List;//求数组中最长递增子序列publicclassTest{publicstaticvoidmain(String[]args){inta[]={1,-1,2,-3,4,-5,6…

  • 基于视频理解TSM和数据集Kinetics-400的视频行为识别

    基于视频理解TSM和数据集Kinetics-400的视频行为识别这个数据集包括了四百种的人体动作类别,每一种类别都至少有400个视频片段,每个片段都取自不同的Youtube视频,持续大概十秒。数据集的动作类别包括人和物体的交互-比如弹奏乐器;人与人的交互-比如握手。花了好久整理了Kinetics数据集,百度网盘下载地址:…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号