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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vi编辑时出现E325:ATTENTION(简单易懂,快速解决问题)「建议收藏」

    vi编辑时出现E325:ATTENTION(简单易懂,快速解决问题)「建议收藏」当出现这个问题时,是因为由于在编辑该文件的时候异常退出了,因为vim在编辑文件时会创建一个交换文件swapfile以保证文件的安全性。要想解决这个问题,1.找到开头前两行示例如下:E325:ATTENTIONFoundaswapfilebythename”/.local/share/nvim/swap//%home%dev%xuexi%tool%main.c.swp”(tips:复制标粗体的地方)2.找出name后面的文件路径以及名称,复制你的swap文件路径以及名

    2022年5月12日
  • TS文件解码TS文件解密TS流批量下载和解码工具

    TS文件解码TS文件解密TS流批量下载和解码工具TS的全称则是TransportStream,即传输流,DVD节目中的MPEG2格式,是MPEG2-PS,MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。现主流视频网站都采用这种模式。m3u8是一个TS切片列表文件,它记录视频的每个切片的时长与顺序,下面通过图片了解一下:怎么得到视频网站中的m3u8文件呢?…

    2022年7月18日
  • 小谈Compc命令(命令行生成swc文件)

    小谈Compc命令(命令行生成swc文件)

    2021年8月1日
  • 安装了anaconda 还需要单独安装pycharm吗_ugnx10安装教程

    安装了anaconda 还需要单独安装pycharm吗_ugnx10安装教程python环境配置步骤一:Pycharm和Anaconda的安装作者介绍1.复制pycharm和Aanconda的安装包2.安装pycharm3.安装Anaconda作者介绍张伟伟,男,西安工程大学电子信息学院,2019级硕士研究生,张宏伟人工智能课题组。研究方向:机器视觉与人工智能。电子邮件:2430290933@qq.com课题组CSDN官方账号,欢迎一键三连:https://blog.csdn.net/m0_37758063/article/details/113527955?s

    2022年8月28日
  • 前端面试——W3C标准及规范「建议收藏」

    前端面试——W3C标准及规范「建议收藏」作为前端工程师对W3C标准和规范不是很陌生。很多招聘要求中经常提到深入了解W3C标准及规范。那下面就总结一下W3C标准及规范:概念:W3C标准  中文名:万维网联盟,外文名:WorldWideWebConsortium      万维网联盟标准不是某一个标准,而是一些列标准的集合。网页主要有三部分组成:结构(Structure)、表现(Presentation)、行为(B…

    2022年9月17日
  • kl1083_显示器dpi是什么意思

    kl1083_显示器dpi是什么意思Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为 2 的正整数被称为 Windy 数。Windy 想知道,在 A 和 B 之间,包括 A 和 B,总共有多少个 Windy 数?输入格式共一行,包含两个整数 A 和 B。输出格式输出一个整数,表示答案。数据范围1≤A≤B≤2×109输入样例1:1 10输出样例1:9输入样例2:25 50输出样例2:20#include<bits/stdc++.h>using namespace std;

    2022年8月9日

发表回复

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

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