本人现在学识有限,还是个萌新,如果代码看的感觉恶心,希望各位大佬见谅(〃'▽'〃)
#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);
}
}