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语言程序设计报告 图书管理系统

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

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

(0)
上一篇 2022年10月11日 下午4:16
下一篇 2022年10月11日 下午4:36


相关推荐

  • Pytest(1)安装与入门「建议收藏」

    Pytest(1)安装与入门「建议收藏」pytest介绍pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它

    2022年7月31日
    7
  • 我为什么放弃Go语言

    我为什么放弃Go语言我为什么放弃Go语言?有好几次,当我想起来的时候,总是会问自己:这个决定是正确的吗?是明智和理性的吗?其实我一直在认真思考这个问题。开门见山地说,我当初放弃Go语言,就是因为两个“不爽”:第一,对Go语言本身不爽;第二,对Go语言社区里的某些人不爽。毫无疑问,这是非常主观的结论,但是我有足够详实的客观的论据。

    2022年6月30日
    25
  • python dll注入 网络_dll注入

    python dll注入 网络_dll注入一、什么是dll​动态链接库(DynamicLinkLibrary或者Dynamic-linkLibrary,缩写为DLL)​是微软公司在微软Windows操作系统中,实现共享函数库概念的一种方式。​这些库函数的扩展名是”.dll”、”.ocx”(包含ActiveX控制的库)或者”.drv”(旧式的系统驱动程序)。pip3install二、为何要有dll​…

    2022年5月13日
    50
  • SQL注入漏洞详解

    SQL注入漏洞详解目录 SQL 注入的分类判断是否存在 SQL 注入一 Boolean 盲注二 union 注入三 文件读写四 报错注入 floor 报错注入 ExtractValue 报错注入 UpdateXml 报错注入五 时间盲注六 REGEXP 正则匹配七 宽字节注入八 堆叠注入九 二次注入十 User Agent 注入十一 Cookie 注入十二 过滤绕过十三

    2026年3月26日
    2
  • 教你读懂蛋白质数据库文件(PDB文件)

    教你读懂蛋白质数据库文件(PDB文件)回答网友提问:什么是HETATM?  并教你读懂蛋白质的PDB文件  作者:小米HETATM非标准基团原子坐标,这个是PDB数据库原子坐标的一种记录格式。如HETATM460PPO4100-2.5027.5874.2251.0024.59PHETATM461O1PO4100-3.3206.5325.0031.00

    2022年6月2日
    42
  • webapi文档描述-swagger

    webapi文档描述-swagger最近做的项目使用mvc+webapi,采取前后端分离的方式,后台提供API接口给前端开发人员。这个过程中遇到一个问题后台开发人员怎么提供接口说明文档给前端开发人员,最初打算使用word文档方式进行交流

    2022年8月5日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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