【C语言】图书管理系统的项目

本人现在学识有限,还是个萌新,如果代码看的感觉恶心,希望各位大佬见谅(〃'▽'〃)

#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <string.h>


void DengLu(void);
void jiemian(void);
void key_scan(void);
void check(void);
void work_in(void);
void esc(void);
void dlt(void);
void lend(void);
void back(void); 
void modify(void);
void bang(void);

typedef struct book
{
//	图书名
	char name[30]; 
//	图书作者
	char zuozhe[30];
//	图书编号
	int num;
//	图书库存
	int ku;
//	图书价格 
	float price;
//	热度
	int redu; 
}BK;
BK books[1000];
int count;  //图书的种类数 
int bo;     //数组的下标 
//正确的密码 
char cipher[20]="abcdef13579";
 
int main(void)
{
	DengLu();
	while(1)
	{
		jiemian();
		key_scan();
	}

	return 0;
}

/***********************************************
*函数功能  :登录功能函数 
*函数名    :DengLu 
*函数参数  :int
*函数返回值:void
*函数描述  :判断输入密码是否输入正确 
************************************************/
void DengLu(void)
{
	//用户输入的密码 
	char ch,user[20];
	int i;
	int j=0;
	memset(user,'\0',20);
	int len=strlen(cipher);
	printf("请输入管理员密码:");
	A:
	if(j>3)
		exit(0); 
	for(i=0;i<len;i++)
	{
		ch=getch();
		user[i]=ch;
		printf("*");
	}
	printf("\n");
	//对比用户输入的密码是否跟正确的密码相同 
	if(strcmp(user,cipher)==0)
	{
		printf("密码正确\n");
	}
	else
	{
		printf("密码输入错误,请重新输入\n");
		j++;
		goto A;
	}
}

/***********************************************
*函数功能  :显示系统选项 
*函数名    :jiemian 
*函数参数  :void 
*函数返回值:void
*函数描述  :输入系统选择界面 
************************************************/
void jiemian(void)
{
	printf("=============欢迎来到图书管理系统=================\n");
	printf("=========[1]查询图书     [2]添加图书==============\n");
	printf("=========[3]删除图书     [4]借阅图书==============\n");
	printf("=========[5]归还图书     [6]热度排行==============\n");
	printf("=========[7]修改密码     [0]退出系统==============\n");
	printf("请选择:");
}

/***********************************************
*函数功能  :按键扫描函数
*函数名    :key_scan
*函数参数  :无
*函数返回值:void
*函数描述  :返回按键数值
************************************************/
void key_scan(void)
{
	int ch;
	int flag=0;
	B:
	if(flag==1)
		jiemian();	
	A:
	scanf("%d",&ch);
	F:
	switch(ch)
	{
		case 1:check();break;
		case 2:work_in();break;
		case 3:dlt();break;
		case 4:lend();break;
		case 5:back();break;
		case 6:bang();break;
		case 7:modify();break;
		case 0:esc();break;
		default:printf("没有该功能,重新选择:");
			goto A;	
	}
	printf("是否继续,继续按[y],退出按[其他键]......\n");
	if(getch() == 'y')
	{
		printf("下一次:\n");
		goto F;
	}
	else
	{
		flag=1;
		goto B;		
	}

}

/***********************************************
*函数功能  :查询图书 
*函数名    :check 
*函数参数  :无
*函数返回值:void
*函数描述  :查询结构体数组中的图书的信息 
************************************************/
void check(void)
{
	int i;
	int flag=0;
	printf("-----[1]查询全部----------\n");
	printf("-----[2]按照书名查询------\n");
	printf("-----[3]按照作者查询------\n");
	printf("请选择查询方式:");
	char ch;
	L: 
	ch=getch();
	if(ch=='1')
	{
		for(i=0;i<count;i++)
		{
			printf("%s %s %d ",books[i].name,books[i].zuozhe,books[i].num);
			printf("%d %.2f %d \n",books[i].ku,books[i].price,books[i].redu);
		}
	}
	else if(ch=='2')
	{
		char name[30];
		printf("\n请输入您要查询书籍的名字:");
		scanf("%s",name);
		for(i=0;i<count;i++)
		{
			if(strcmp(books[i].name,name)==0)
			{
				flag=1;
				printf("%s %s %d ",books[i].name,books[i].zuozhe,books[i].num);
				printf("%d %.2f %d \n",books[i].ku,books[i].price,books[i].redu);
				break;
			}
		}
		if(flag==0)
		{
			printf("没有检索到该书\n");
		}
	}
	else if(ch=='3')
	{
		char zuz[30];
		printf("\n请输入您要查询书籍作者的名字:");
		scanf("%s",zuz);
		for(i=0;i<count;i++)
		{
			if(strcmp(books[i].zuozhe,zuz)==0)
			{
				flag=1;
				printf("%s %s %d ",books[i].name,books[i].zuozhe,books[i].num);
				printf("%d %.2f %d \n",books[i].ku,books[i].price,books[i].redu);
				break;
			}
		}
		if(flag==0)
		{
			printf("没有检索到该书\n");
		}
	}
	else
	{
		printf("查询方式输入有误,请重新输入:");
		goto L;
	}
} 

/***********************************************
*函数功能  :添加图书 
*函数名    :work_in 
*函数参数  :无
*函数返回值:void
*函数描述  :输入数据到结构体数组中 
************************************************/
void work_in(void)
{
	scanf("%s %s %d %d %f %d",books[bo].name,books[bo].zuozhe,&(books[bo].num),&(books[bo].ku),&(books[bo].price),&(books[bo].redu));
	//图书种类增加 
	count++; 
	//结构体数组下标增加 
	bo++;
}

/***********************************************
*函数功能  :删除图书 
*函数名    :dlt
*函数参数  :无
*函数返回值:void
*函数描述  :从结构体数组中删除删除数据 
************************************************/
void dlt(void)
{
	int flag=0;  //标识符 
	int i;		 //循环变量 
	//删除图书的名字 
	char name[30];
	printf("请输入要删除的书名:");
	scanf("%s",name);
	for(i=0;i<count;i++)
	{
		if(strcmp(books[i].name,name)==0)
		{
			flag=1;
			break;
		}
	}
	if(flag==0)
	{
		printf("没用该书籍\n");
	}
	else
	{
		for(;i<count;i++)
		{
			books[i]=books[i+1];
		}
		printf("删除成功\n");
	}
}

/***********************************************
*函数功能  :退出系统 
*函数名    :esc
*函数参数  :无
*函数返回值:void
*函数描述  :退出图书管理系统 
************************************************/
void esc(void)
{
	exit(0);
}

/***********************************************
*函数功能  :借阅图书 
*函数名    :lend 
*函数参数  :无
*函数返回值:void
*函数描述  :
************************************************/
void lend(void)
{
	int flag=0;  //标识符 
	int i;		 //循环变量 
	//借阅图书的名字 
	char name[30];
	printf("请输入要借阅的书名:");
	scanf("%s",name);
	for(i=0;i<count;i++)
	{
		if(strcmp(books[i].name,name)==0)
		{
			flag=1;
			if(books[i].ku>0)
			{
				books[i].ku--;
				printf("库存中还有%d本书\n",books[i].ku);
			}
				
			else
				printf("库存不足\n"); 
			break;
		}
	}
	if(flag==0)
		printf("没有检索到该书\n");
}

/***********************************************
*函数功能  :归还图书 
*函数名    :back 
*函数参数  :无
*函数返回值:void
*函数描述  :
************************************************/
void back(void)
{
	int flag=0;  //标识符 
	int i;		 //循环变量 
	//归还图书的名字 
	char name[30];
	printf("请输入需要归还书籍的书名:");
	scanf("%s",name);
	for(i=0;i<count;i++)
	{
		if(strcmp(books[i].name,name)==0)
		{
			flag=1;
			books[i].ku++;
			printf("归还成功,库存中还有%d本书\n",books[i].ku);
			break;
		}
	}
	if(flag==0)
		printf("没有检索到该书\n");
}

/***********************************************
*函数功能  :修改密码 
*函数名    :modify 
*函数参数  :无
*函数返回值:void
*函数描述  :修改图书管理系统的密码 
************************************************/
void modify(void)
{
	int j=0;
	char a[20],b[20],c[20];
	printf("请输入原密码:");
	A:
	if(j>3)
		exit(0); 
	scanf("%s",a);
	if(strcmp(cipher,a)==0)
	{
		L:
		printf("请输入新密码:");
		scanf("%s",b);
		printf("请再一次输入新密码:");
		scanf("%s",c);
		if(strcmp(b,c)==0)
		{
			printf("修改正确\n");
			memset(cipher,'\0',20);
			strcpy(cipher,b);
			DengLu();
		}
		else
		{
			printf("两次密码不一致,请重新输入\n");
			goto L;
		}
	}
	else
	{
		printf("输入错误,请重新输入:");
		j++;
		goto A;
	}
}

/***********************************************
*函数功能  :热度排行 
*函数名    :bang 
*函数参数  :无
*函数返回值:void
*函数描述  :对书籍热度进行升序排列 
************************************************/
void bang(void)
{
	BK ch;
	int i,j;
	for(i=0;i<count-1;i++)
	{
		for(j=0;j<count-i-1;j++)
		{
			if(books[j].redu>books[j+1].redu)
			{
				ch=books[j];
				books[j]=books[j+1];
				books[j+1]=ch;
			}
		}
	}
	
	printf("升序排列后\n");
	for(i=0;i<count;i++)
	{
		printf("%s %s %d ",books[i].name,books[i].zuozhe,books[i].num);
		printf("%d %.2f %d \n",books[i].ku,books[i].price,books[i].redu);
	}
} 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值