【嵌入式学习记录_C语言项目】模拟图书管理系统

前  言

        这是我在嵌入式学习的第一阶段——C语言基础的学习过程中完成的一个项目,如果对您有帮助的话,可以点赞,收藏,关注哦,有其他问题可以私聊交流。

        项目还有需要改进优化的地方,也可以添加其他有趣的功能,期待各位大佬的指点和交流。

目录

前  言

一、项目简介

二、功能介绍 

1.输入密码登录系统

2.密码显示保护

3.检索图书

4.还书 

5.热度排行榜

6.添加新书

7.修改密码

三、代码设计

1. 预处理包含头文件

2.搭建主函数框架

3.宏定义图书数量

4.定义图书结构体

5.定义数组

6.密码登录函数

7.图书管理系统的主界面函数

8.按键输入识别函数

9.密码保护函数

10.添加新书函数

11.检索图书函数

12.还书函数

13.热度排序函数

14.修改密码函数

15.函数声明

四、整体代码

五、总结


一、项目简介

项目名:模拟图书管理系统

功    能:1.输入密码登录系统    2.密码显示保护    3.检索图书    4.还书    5.热度排行榜   

               6.添加新书    7.修改密码

介    绍:这个项目的主要目的是为用户提供一个用来存储管理图书信息的系统,同时也作为一个C语言学习阶段前期的实践项目。它支持用户进行日常的图书信息处理,并提供了其他一些实用的功能。

二、功能介绍 

1.输入密码登录系统

        该系统设有初始密码,用户可根据密码进入系统,系统会根据用户输入的密码与设定的密码进行比较,比较无误后会进入系统,输入错误则会提醒重新输入。

2.密码显示保护

        在输入密码的时候,系统界面会显示字符,并将字符替换成 ‘ * ’(星号),以保护用户隐私。

3.检索图书

        根据首页提醒进入检索图书界面后,可选择全部检索 / 按书名检索 / 按作者检索,在输入对应信息之后(全部检索除外),便会显示检索结果。

4.还书 

        根据首页提醒进入还书界面后,可以输入对应信息归还图书,即对应书籍库存+1。

5.热度排行榜

        所有图书在入库时会有对应的热度值,每当被借阅,热度值则会+1。根据首页提醒进入图书排行榜界面后,会根据热度值由高到低排序并显示排行榜。

6.添加新书

        根据首页提醒进入添加新书界面后,可以输入图书信息将图书信息存储到系统。

7.修改密码

        根据首页提醒进入修改密码界面后,可以更改密码。

三、代码设计

1. 预处理包含头文件

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

2.搭建主函数框架

int main(void)
{
    while(1)
    {
        
    }
    return 0;
}

3.宏定义图书数量

#define BKS_CONT 100

4.定义图书结构体

//图书结构体
typedef struct book
{
	char name[30];        //书名成员
	char writer[30];      //作者成员
	char number[30];      //编号成员
	int  hot;             //热度成员
	int  sc;              //库存成员
	float price;          //价格成员
}BK;

5.定义数组

char passward[10] = "123456";    //密码
BK bks[BKS_CONT];                //结构体数组

6.密码登录函数

/***********************************************
*函数名    :pass_user
*函数功能  :密码登录函数
*函数参数  :无
*函数返回值:无
*函数描述  :
***********************************************/
void pass_user(void)
{
	char ward[10];
PASS:
	printf("请输入系统登陆密码:");
	intput(ward);
	if(strcmp(ward,passward)!=0)
		{
			system("cls");
			printf("您输入的密码错误,请重新输入\n");
			goto PASS;
		}
}

7.图书管理系统的主界面函数

/***********************************************
*函数名    :show
*函数功能  :显示图书管理系统的主界面
*函数参数  :无
*函数返回值:无
*函数描述  :
***********************************************/
void show(void)
{
	system("cls");
	printf("-------------------------------------------------\n");
	printf("|          欢迎来到图书管理系统                 |\n");
	printf("-------------------------------------------------\n");
	printf("|        【1】检索      【2】还书               |\n");
	printf("|        【3】热度排行榜【4】添加新书           |\n");
	printf("|        【5】密码修改  【0】退出程序           |\n");
	printf("-------------------------------------------------\n");
	printf("请选择:");
	
}

8.按键输入识别函数

/***********************************************
*函数名    :key
*函数功能  :按键输入识别函数
*函数参数  :无
*函数返回值:无
*函数描述  :
***********************************************/
void key(void)
{
	char key;
STAR:
	key = getch();
	switch(key)
	{
		case '1':system("cls");search_book();break;
		case '2':system("cls");return_book();break;
		case '3':system("cls");hot_rank();break;
		case '4':system("cls");add_book();break;
		case '5':system("cls");ch_passward();break;
		case '0':system("cls");exit(1);break;
		default :printf("\n输入有误,请按要求重新选择:");goto STAR;break;
	}
}

9.密码保护函数

/***********************************************
*函数名    :intput
*函数功能  :用户输入的字符进入到数组中,并且以*显示
*函数参数  :char *str
*函数返回值:无
*函数描述  :
***********************************************/
void intput(char *str)
{
	int i;
	for(i=0;i<9;i++)
	{
		*(str+i) = getch();
		if( *(str+i)!=13  &&  *(str+i)!=8)
		{
			printf("*");
		}
		if(*(str+i) ==13)
		{
			*(str+i)='\0';
			break;
		}
		if(*(str+i) == 8)
		{
			i-=2;
			if(i<=-2)
			{
				i=-1;
			}
			else
			{
				printf("\b");
				printf(" ");
				printf("\b");
			}
		}
	}
}

10.添加新书函数

/************************************************
*函数名    :add_book
*函数功能  :添加新书函数
*函数参数  :无
*函数返回值:无
*函数描述  :进入此函数可以添加新书到数组中
***************************************************/
void add_book(void)
{
	static int i = 0;
	while(i<BKS_CONT)
	{
		system("cls");
		printf("请添加第%d本书\n",i+1);
		
		printf("请输入书名:");
		scanf("%s",bks[i].name);
		printf("请输入作者:");
		scanf("%s",bks[i].writer);
		printf("请输入编号:");
		scanf("%s",bks[i].number);
		printf("请输入热度:");
		scanf("%d",&bks[i].hot);
		printf("请输入库存:");
		scanf("%d",&bks[i].sc);
		printf("请输入价格:");
		scanf("%f",&bks[i].price);
		
		i++;
		printf("是否继续添加新书,继续请按[y],退出按[任意键]\n");
		if(getch()!='y')
		{
			break;
		}
	}
}

11.检索图书函数

/************************************************
*函数名    :search_book
*函数功能  :检索图书
*函数参数  :无
*函数返回值:无
*函数描述  :三种方式查找图书
***************************************************/
void search_book(void)
{
	char k;
VIEW:
	/*界面提示*/
	printf("-------------------------------------------------\n");
	printf("|                搜索方式如下                    |\n");
	printf("-------------------------------------------------\n");
	printf("|               【1】全部检索                    |\n");
	printf("|               【2】按书名检索                  |\n");
	printf("|               【3】按作者检索                  |\n");
	printf("|               【0】返回主界面                  |\n");
	printf("-------------------------------------------------\n");
	printf("请选择:");
	
	k = getch();
	switch(k)
	{
		case '1':search_all_book();break;
		case '2':search_name();break;
		case '3':search_writer();break;
		case '0':return ;break;
		default:printf("输入错误,请重新输入\n");goto VIEW;break;
	}
}


/************************************************
*函数名    :search_all_book
*函数功能  :检索全部图书
*函数参数  :无
*函数返回值:无
*函数描述  :显示所有图书信息
***************************************************/
void search_all_book(void)
{
	int i = 0;
	system("cls");
	printf("检索到的所有图书如下:\n");
	while(bks[i].name[0]!='\0')
	{
		printf("书名:%s\n作者:%s\n编号:%s\n热度:%d\n库存:%d\n价格:%0.2f\n\n",bks[i].name,bks[i].writer,bks[i].number,bks[i].hot,bks[i].sc,bks[i].price);
		i++;
	}
	printf("按[任意键]回到主界面");
	getch();
	
}


/************************************************
*函数名    :search_name
*函数功能  :按书名检索图书
*函数参数  :无
*函数返回值:无
*函数描述  :
***************************************************/
void search_name(void)
{
	int i = 0;
	int n = 0;
	int cont = 0;
	char user_name[30];
	char user_number[30];
	int book_flag;

	system("cls");
	printf("请输入书名:");
	scanf("%s",user_name);
	while(bks[i].name[0]!='\0')
	{
		if(strcmp(user_name,bks[i].name)==0)
		{
			printf("书名:%s\n作者:%s\n编号:%s\n热度:%d\n库存:%d\n价格:%0.2f\n\n",bks[i].name,bks[i].writer,bks[i].number,bks[i].hot,bks[i].sc,bks[i].price);
			book_flag = i;
			cont++;
		}
		i++;
	}
	if(cont == 0)
	{
		printf("检索不到符合条件的书籍,按[任意键]回到主界面\n");
		getch();
	}
	else if(cont == 1)
	{
		printf("按[j]借阅,按[任意键]回到主界面\n");
		if(getch()=='j')
		{
			if(bks[book_flag].sc > 0)
			{
				bks[book_flag].sc--;
				bks[book_flag].hot++;
				printf("借阅成功,按[任意键]回到主界面\n");
			}
			else
			{
				printf("库存不足,下次再来,按[任意键]回到主界面\n");
			}
			getch();
		}
		
	}
	else if(cont > 1)
	{
		printf("按[j]借阅,按[任意键]回到主界面\n");
		if(getch()=='j')
		{
STAR_B:
			printf("请输入要借阅书籍的编号:");
			scanf("%s",user_number);
			while(bks[n].number[0]!='\0')
			{
				if(strcmp(user_number,bks[n].number)==0)
				{
					break;
				}
				n++;
			}
			if(strcmp(bks[n].name,user_name)==0)
			{
				if(bks[n].sc>0)
				{
					printf("借阅成功,按[任意键]回到主界面\n");
					bks[n].sc--;
					bks[n].hot++;
				}
				else
				{
					printf("库存不足,下次再来,按[任意键]回到主界面\n");
				}
				getch();
			}
			else
			{
				printf("编号输入有误,继续请按[y],按[任意键]回到主界面\n");
				if(getch()=='y')
				{
					goto STAR_B;;
				}
			}
				
		}
	}
	
}


/************************************************
*函数名    :search_writer
*函数功能  :按作者检索图书
*函数参数  :无
*函数返回值:无
*函数描述  :
***************************************************/
void search_writer(void)
{
	int i = 0;
	int n = 0;
	int cont = 0;
	char user_writer[30];
	char user_number[30];
	int book_flag;
	
	system("cls");
	printf("请输入作者:");
	scanf("%s",user_writer);
	while(bks[i].writer[0]!=0)
	{
		if(strcmp(user_writer,bks[i].writer)==0)
		{
			printf("书名:%s\n作者:%s\n编号:%s\n热度:%d\n库存:%d\n价格:%0.2f\n\n",bks[i].name,bks[i].writer,bks[i].number,bks[i].hot,bks[i].sc,bks[i].price);
			cont++;
			book_flag = i;
		}
		i++;
	}
	if(cont==0)
	{
		printf("检索不到符合条件的书籍,按[任意键]回到主界面\n");
		getch();
	}
	else if(cont==1)
	{
		printf("按[j]借阅,按[任意键]回到主界面\n");
		if(getch()=='j')
		{
			if(bks[book_flag].sc > 0)
			{
				bks[book_flag].sc--;
				bks[book_flag].hot++;
				printf("借阅成功,按[任意键]回到主界面\n");
			}
			else
			{
				printf("库存不足,下次再来,按[任意键]回到主界面\n");
			}
			getch();
		}
	}	
	else if(cont>=1)
	{
		printf("按[j]借阅,按[任意键]回到主界面\n");
		if(getch()=='j')
		{
STAR_C:
			printf("请输入要借阅书籍的编号:");
			scanf("%s",user_number);
			while(bks[n].number[0]!='\0')
			{
				if(strcmp(user_number,bks[n].number)==0)
				{
					break;
				}
				n++;
			}
			if(strcmp(bks[n].writer,user_writer)==0)
			{
				if(bks[n].sc>0)
				{
					printf("借阅成功,按[任意键]回到主界面\n");
					bks[n].sc--;
					bks[n].hot++;
				}
				else
				{
					printf("库存不足,下次再来,按[任意键]回到主界面\n");
				}
				getch();
			}
			else
			{
				printf("输入编号有误,继续请按[y],按[任意键]回到主界面\n");
				if(getch()=='y')
				{
					goto STAR_C;
				}
				getch();
			}
			
		}
	}
}

12.还书函数

/************************************************
*函数名    :return_book
*函数功能  :还书函数
*函数参数  :无
*函数返回值:无
*函数描述  :进入此函数可以还书到数组中
***************************************************/
void return_book(void)
{
	int i = 0;
	int book_flag;
	char user_number[30];
	printf("请输入要还书籍的编号:");
	scanf("%s",user_number);
	while(bks[i].name[0]!='\0')
	{
		if(strcmp(user_number,bks[i].number)==0)
		{
			book_flag = i;
			break;
		}
		i++;
	}
	bks[book_flag].sc++;
	printf("还书成功,按[任意键]回到主界面\n");
	getch();
}

13.热度排序函数

/************************************************
*函数名    :hot_rank
*函数功能  :热度排序
*函数参数  :无
*函数返回值:无
*函数描述  :
***************************************************/
void hot_rank(void)
{
	int i = 0;
	int j = 0;
	int k = 0;
	int l;
	BK temp;
	while(bks[i].name[0]!='\0')
	{
		i++;
	}
	for(l=1;l<i;l++)
	{
		for(j=0;j<i-l;j++)
		{
			if(bks[j].hot<bks[j+1].hot)
			{
			temp = bks[j];
			bks[j] = bks[j+1];
			bks[j+1] = temp;	
			}
		}
		
	}
	while(bks[k].name[0]!='\0')
	{
		printf("书名:%s\n作者:%s\n编号:%s\n热度:%d\n库存:%d\n价格:%0.2f\n\n",bks[k].name,bks[k].writer,bks[k].number,bks[k].hot,bks[k].sc,bks[k].price);
		k++;
	}
	printf("按任意键回主界面\n");
	getch();
}

14.修改密码函数

/************************************************
*函数名    :ch_passward
*函数功能  :修改密码
*函数参数  :无
*函数返回值:无
*函数描述  :无
***************************************************/
void ch_passward(void)
{
	char old_passward[10];
	char new_passward_1[10];
	char new_passward_2[10];
STAR_D:
	printf("请输入旧密码:");
	scanf("%s",old_passward);
	if(strcmp(old_passward,passward)==0)
	{
STAR_E:
		printf("请输入新密码:");
		scanf("%s",new_passward_1);
		printf("请再次输入新密码:");
		scanf("%s",new_passward_2);
		if(strcmp(new_passward_1,new_passward_2) == 0)
		{
			if(strlen(new_passward_1)<10)
			{
				strcpy(passward,new_passward_1);
				printf("密码修改成功,按[任意键]回到主界面\n");
					getch();
			}
			else
			{
				
				printf("新密码格式错误,请重新输入\n");
				goto STAR_E;
			}
		}
		else
		{
			printf("两次密码输入不一致,请重新输入\n");
			goto STAR_E;
		}
	}
	else
	{
		printf("旧密码错误,请重新输入\n");
		goto STAR_D;
	}

}

15.函数声明

//函数声明
void pass_user(void);
void show(void);
void key(void);
void intput(char *str);
void add_book(void);
void search_book(void);
void search_all_book(void);
void search_name(void);
void search_writer(void);
void return_book(void);
void hot_rank(void);
void ch_passward(void);

四、整体代码

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define BKS_CONT 100

//图书结构体
typedef struct book
{
	char name[30];        //书名成员
	char writer[30];      //作者成员
	char number[30];      //编号成员
	int  hot;             //热度成员
	int  sc;              //库存成员
	float price;          //价格成员
}BK;

//函数声明
void pass_user(void);
void show(void);
void key(void);
void intput(char *str);
void add_book(void);
void search_book(void);
void search_all_book(void);
void search_name(void);
void search_writer(void);
void return_book(void);
void hot_rank(void);
void ch_passward(void);



char passward[10] = "123456";
BK bks[BKS_CONT];

int main(void)
{
	pass_user();
	while(1)
	{
		show();
		key();
	}
	
	
	
	
	return 0;
}


/***********************************************
*函数名    :pass_user
*函数功能  :密码登录函数
*函数参数  :无
*函数返回值:无
*函数描述  :
***********************************************/
void pass_user(void)
{
	char ward[10];
PASS:
	printf("请输入系统登陆密码:");
	intput(ward);
	if(strcmp(ward,passward)!=0)
		{
			system("cls");
			printf("您输入的密码错误,请重新输入\n");
			goto PASS;
		}
}


/***********************************************
*函数名    :show
*函数功能  :显示图书管理系统的主界面
*函数参数  :无
*函数返回值:无
*函数描述  :
***********************************************/
void show(void)
{
	system("cls");
	printf("-------------------------------------------------\n");
	printf("|          欢迎来到图书管理系统                 |\n");
	printf("-------------------------------------------------\n");
	printf("|        【1】检索      【2】还书               |\n");
	printf("|        【3】热度排行榜【4】添加新书           |\n");
	printf("|        【5】密码修改  【0】退出程序           |\n");
	printf("-------------------------------------------------\n");
	printf("请选择:");
	
}


/***********************************************
*函数名    :key
*函数功能  :按键输入识别函数
*函数参数  :无
*函数返回值:无
*函数描述  :
***********************************************/
void key(void)
{
	char key;
STAR:
	key = getch();
	switch(key)
	{
		case '1':system("cls");search_book();break;
		case '2':system("cls");return_book();break;
		case '3':system("cls");hot_rank();break;
		case '4':system("cls");add_book();break;
		case '5':system("cls");ch_passward();break;
		case '0':system("cls");exit(1);break;
		default :printf("\n输入有误,请按要求重新选择:");goto STAR;break;
	}
}


/***********************************************
*函数名    :intput
*函数功能  :用户输入的字符进入到数组中,并且以*显示
*函数参数  :char *str
*函数返回值:无
*函数描述  :
***********************************************/
void intput(char *str)
{
	int i;
	for(i=0;i<9;i++)
	{
		*(str+i) = getch();
		if( *(str+i)!=13  &&  *(str+i)!=8)
		{
			printf("*");
		}
		if(*(str+i) ==13)
		{
			*(str+i)='\0';
			break;
		}
		if(*(str+i) == 8)
		{
			i-=2;
			if(i<=-2)
			{
				i=-1;
			}
			else
			{
				printf("\b");
				printf(" ");
				printf("\b");
			}
		}
	}
}


/************************************************
*函数名    :add_book
*函数功能  :添加新书函数
*函数参数  :无
*函数返回值:无
*函数描述  :进入此函数可以添加新书到数组中
***************************************************/
void add_book(void)
{
	static int i = 0;
	while(i<BKS_CONT)
	{
		system("cls");
		printf("请添加第%d本书\n",i+1);
		
		printf("请输入书名:");
		scanf("%s",bks[i].name);
		printf("请输入作者:");
		scanf("%s",bks[i].writer);
		printf("请输入编号:");
		scanf("%s",bks[i].number);
		printf("请输入热度:");
		scanf("%d",&bks[i].hot);
		printf("请输入库存:");
		scanf("%d",&bks[i].sc);
		printf("请输入价格:");
		scanf("%f",&bks[i].price);
		
		i++;
		printf("是否继续添加新书,继续请按[y],退出按[任意键]\n");
		if(getch()!='y')
		{
			break;
		}
	}
}


/************************************************
*函数名    :search_book
*函数功能  :检索图书
*函数参数  :无
*函数返回值:无
*函数描述  :三种方式查找图书
***************************************************/
void search_book(void)
{
	char k;
VIEW:
	/*界面提示*/
	printf("-------------------------------------------------\n");
	printf("|                搜索方式如下                    |\n");
	printf("-------------------------------------------------\n");
	printf("|               【1】全部检索                    |\n");
	printf("|               【2】按书名检索                  |\n");
	printf("|               【3】按作者检索                  |\n");
	printf("|               【0】返回主界面                  |\n");
	printf("-------------------------------------------------\n");
	printf("请选择:");
	
	k = getch();
	switch(k)
	{
		case '1':search_all_book();break;
		case '2':search_name();break;
		case '3':search_writer();break;
		case '0':return ;break;
		default:printf("输入错误,请重新输入\n");goto VIEW;break;
	}
}


/************************************************
*函数名    :search_all_book
*函数功能  :检索全部图书
*函数参数  :无
*函数返回值:无
*函数描述  :显示所有图书信息
***************************************************/
void search_all_book(void)
{
	int i = 0;
	system("cls");
	printf("检索到的所有图书如下:\n");
	while(bks[i].name[0]!='\0')
	{
		printf("书名:%s\n作者:%s\n编号:%s\n热度:%d\n库存:%d\n价格:%0.2f\n\n",bks[i].name,bks[i].writer,bks[i].number,bks[i].hot,bks[i].sc,bks[i].price);
		i++;
	}
	printf("按[任意键]回到主界面");
	getch();
	
}


/************************************************
*函数名    :search_name
*函数功能  :按书名检索图书
*函数参数  :无
*函数返回值:无
*函数描述  :
***************************************************/
void search_name(void)
{
	int i = 0;
	int n = 0;
	int cont = 0;
	char user_name[30];
	char user_number[30];
	int book_flag;

	system("cls");
	printf("请输入书名:");
	scanf("%s",user_name);
	while(bks[i].name[0]!='\0')
	{
		if(strcmp(user_name,bks[i].name)==0)
		{
			printf("书名:%s\n作者:%s\n编号:%s\n热度:%d\n库存:%d\n价格:%0.2f\n\n",bks[i].name,bks[i].writer,bks[i].number,bks[i].hot,bks[i].sc,bks[i].price);
			book_flag = i;
			cont++;
		}
		i++;
	}
	if(cont == 0)
	{
		printf("检索不到符合条件的书籍,按[任意键]回到主界面\n");
		getch();
	}
	else if(cont == 1)
	{
		printf("按[j]借阅,按[任意键]回到主界面\n");
		if(getch()=='j')
		{
			if(bks[book_flag].sc > 0)
			{
				bks[book_flag].sc--;
				bks[book_flag].hot++;
				printf("借阅成功,按[任意键]回到主界面\n");
			}
			else
			{
				printf("库存不足,下次再来,按[任意键]回到主界面\n");
			}
			getch();
		}
		
	}
	else if(cont > 1)
	{
		printf("按[j]借阅,按[任意键]回到主界面\n");
		if(getch()=='j')
		{
STAR_B:
			printf("请输入要借阅书籍的编号:");
			scanf("%s",user_number);
			while(bks[n].number[0]!='\0')
			{
				if(strcmp(user_number,bks[n].number)==0)
				{
					break;
				}
				n++;
			}
			if(strcmp(bks[n].name,user_name)==0)
			{
				if(bks[n].sc>0)
				{
					printf("借阅成功,按[任意键]回到主界面\n");
					bks[n].sc--;
					bks[n].hot++;
				}
				else
				{
					printf("库存不足,下次再来,按[任意键]回到主界面\n");
				}
				getch();
			}
			else
			{
				printf("编号输入有误,继续请按[y],按[任意键]回到主界面\n");
				if(getch()=='y')
				{
					goto STAR_B;;
				}
			}
				
		}
	}
	
}


/************************************************
*函数名    :search_writer
*函数功能  :按作者检索图书
*函数参数  :无
*函数返回值:无
*函数描述  :
***************************************************/
void search_writer(void)
{
	int i = 0;
	int n = 0;
	int cont = 0;
	char user_writer[30];
	char user_number[30];
	int book_flag;
	
	system("cls");
	printf("请输入作者:");
	scanf("%s",user_writer);
	while(bks[i].writer[0]!=0)
	{
		if(strcmp(user_writer,bks[i].writer)==0)
		{
			printf("书名:%s\n作者:%s\n编号:%s\n热度:%d\n库存:%d\n价格:%0.2f\n\n",bks[i].name,bks[i].writer,bks[i].number,bks[i].hot,bks[i].sc,bks[i].price);
			cont++;
			book_flag = i;
		}
		i++;
	}
	if(cont==0)
	{
		printf("检索不到符合条件的书籍,按[任意键]回到主界面\n");
		getch();
	}
	else if(cont==1)
	{
		printf("按[j]借阅,按[任意键]回到主界面\n");
		if(getch()=='j')
		{
			if(bks[book_flag].sc > 0)
			{
				bks[book_flag].sc--;
				bks[book_flag].hot++;
				printf("借阅成功,按[任意键]回到主界面\n");
			}
			else
			{
				printf("库存不足,下次再来,按[任意键]回到主界面\n");
			}
			getch();
		}
	}	
	else if(cont>=1)
	{
		printf("按[j]借阅,按[任意键]回到主界面\n");
		if(getch()=='j')
		{
STAR_C:
			printf("请输入要借阅书籍的编号:");
			scanf("%s",user_number);
			while(bks[n].number[0]!='\0')
			{
				if(strcmp(user_number,bks[n].number)==0)
				{
					break;
				}
				n++;
			}
			if(strcmp(bks[n].writer,user_writer)==0)
			{
				if(bks[n].sc>0)
				{
					printf("借阅成功,按[任意键]回到主界面\n");
					bks[n].sc--;
					bks[n].hot++;
				}
				else
				{
					printf("库存不足,下次再来,按[任意键]回到主界面\n");
				}
				getch();
			}
			else
			{
				printf("输入编号有误,继续请按[y],按[任意键]回到主界面\n");
				if(getch()=='y')
				{
					goto STAR_C;
				}
				getch();
			}
			
		}
	}
}


/************************************************
*函数名    :return_book
*函数功能  :还书函数
*函数参数  :无
*函数返回值:无
*函数描述  :进入此函数可以还书到数组中
***************************************************/
void return_book(void)
{
	int i = 0;
	int book_flag;
	char user_number[30];
	printf("请输入要还书籍的编号:");
	scanf("%s",user_number);
	while(bks[i].name[0]!='\0')
	{
		if(strcmp(user_number,bks[i].number)==0)
		{
			book_flag = i;
			break;
		}
		i++;
	}
	bks[book_flag].sc++;
	printf("还书成功,按[任意键]回到主界面\n");
	getch();
}


/************************************************
*函数名    :hot_rank
*函数功能  :热度排序
*函数参数  :无
*函数返回值:无
*函数描述  :
***************************************************/
void hot_rank(void)
{
	int i = 0;
	int j = 0;
	int k = 0;
	int l;
	BK temp;
	while(bks[i].name[0]!='\0')
	{
		i++;
	}
	for(l=1;l<i;l++)
	{
		for(j=0;j<i-l;j++)
		{
			if(bks[j].hot<bks[j+1].hot)
			{
			temp = bks[j];
			bks[j] = bks[j+1];
			bks[j+1] = temp;	
			}
		}
		
	}
	while(bks[k].name[0]!='\0')
	{
		printf("书名:%s\n作者:%s\n编号:%s\n热度:%d\n库存:%d\n价格:%0.2f\n\n",bks[k].name,bks[k].writer,bks[k].number,bks[k].hot,bks[k].sc,bks[k].price);
		k++;
	}
	printf("按任意键回主界面\n");
	getch();
}


/************************************************
*函数名    :ch_passward
*函数功能  :修改密码
*函数参数  :无
*函数返回值:无
*函数描述  :无
***************************************************/
void ch_passward(void)
{
	char old_passward[10];
	char new_passward_1[10];
	char new_passward_2[10];
STAR_D:
	printf("请输入旧密码:");
	scanf("%s",old_passward);
	if(strcmp(old_passward,passward)==0)
	{
STAR_E:
		printf("请输入新密码:");
		scanf("%s",new_passward_1);
		printf("请再次输入新密码:");
		scanf("%s",new_passward_2);
		if(strcmp(new_passward_1,new_passward_2) == 0)
		{
			if(strlen(new_passward_1)<10)
			{
				strcpy(passward,new_passward_1);
				printf("密码修改成功,按[任意键]回到主界面\n");
					getch();
			}
			else
			{
				
				printf("新密码格式错误,请重新输入\n");
				goto STAR_E;
			}
		}
		else
		{
			printf("两次密码输入不一致,请重新输入\n");
			goto STAR_E;
		}
	}
	else
	{
		printf("旧密码错误,请重新输入\n");
		goto STAR_D;
	}

}

五、总结

       这个模拟图书管理系统项目是在他人带领下完成的,只是作为一个练手的实践项目,这里面用到了C语言基础中的基本数据类型,printf函数的使用,scanf函数的使用,运算符以及结构化编程等基础知识。这并不是一个已经完全完善了的代码,需要补足的地方还有很多也可以通过代码写入其他功能,你也可以根据自己需要写入合适的功能。

         你们的支持和反馈对我来说非常重要。如果你有任何问题或建议,请通过私聊随时与我联系。别忘了点赞,收藏,关注哦!

  • 47
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值