C语言管理系统——图书管理系统(2)

「这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战

概要

在上一篇的介绍中演示了图书管理系统的运行结果,这一篇主要讲解代码与思路

定义结构体与全局变量

结构体数组中对图书的定义主要分书号、书名、出版社、时间、借阅状态,除了书名与出版社为字符串数组,其他均为int类型

struct book  //定义图书结构体
{
	int num;  // 书号
	char name[20];  //书名
	char publish[20];  // 出版社
    struct time //定义时间结构体
	{
		int year,month,day; //年月日
	}t;
	int lend;// 定义 借的状态
}bk[20];

int N;   // N可以理解为 录入的图书的数量
char code[20] = "mm";  //密码
复制代码

主菜单

这一块没有什么好说的,用int类型存储用户操作选择,返回结果

int mainmenu()   //主菜单
 {   
    int x;  
    printf("\n\n\n\n");   
    printf("\t\t|-------------------------------------------------------------|\n");
    printf("\t\t|                     |\n");   
    printf("\t\t|    ======================    |\n");   
    printf("\t\t|      欢迎光临图书管理系统     |\n");   
    printf("\t\t|    ======================    |\n");   
    printf("\t\t|                     |\n");   
    printf("\t\t|      1.管理员模式          |\n");   
    printf("\t\t|      2.客户模式           |\n");   
    printf("\t\t|      3.退出系统           |\n");   
    printf("\t\t|--------------------------------------------------------------|\n");   
    printf("\n\t\t请输入您的选择:");   
    scanf("%d",&x);   
    return x; 
}
 
复制代码

密码验证与密码修改

密码验证这一块主要是通过对比输入的密码与存储已有的密码,如果相同返回1,不相同返回0,这里简单介绍一下strcmp函数,作用是比较两个字符串,设这两个字符串为str1,str2,若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。

int codeverify()  //密码验证
{ 
    char mm[20];   //用来存放输入的密码
     printf("\n");   
     printf("\t\t     ======================    \n");   
     printf("\t\t      欢迎使用管理员模式      \n");   
     printf("\t\t     ======================    \n");   
     printf("\n");   
     printf("\t\t     请输入密码:"); 
    scanf("%s",&mm);
    if(!strcmp(mm,code))  //比较输入的密码 是否 与原密码相同
    {
        return 1;
    }
    else
    {
        return 0;
    }

}
复制代码

修改密码这一块主要用了三个字符数组分别存储用户输入密码、第一次输入新密码、第二次输入新密码,首先比较输入密码与原始密码是不是一样的,只有是一样的情况下才能进行修改密码操作,不一样直接提示密码输入错误不允许修改,如果是一样的开始进行输入两次密码,比较两次输入的密码,如果是一样的说明修改成功给出提示,否则提示两次密码不一样终止本次密码修改。

int changecode()   //修改密码
{
    char code_temp[20];//用来存放用户输入的密码
    char new_code[20];   //存放第一次新密码
    char new_code1[20];  //存放第二次新密码

    printf("请输入原始密码:\n");
    scanf("%s",&code_temp);
    if(!strcmp(code_temp,code))  //比较原始密码 与 用户输入的密码
    {
        printf("请输入新密码:\n");
        scanf("%s",&new_code);
        printf("请再输一次:\n");
        scanf("%s",&new_code1);
        if(!strcmp(new_code1,new_code)) //比较 两次修改后输入的密码
        {
                strcpy(code,new_code); //将 新密码 拷贝给 原始密码
                printf("密码修改成功,请牢记,按任意键返回。。。\n");
                getch();
                return 0;
        }
        else
        {
                printf("错误!两次输入的密码不一致,按任意键返回。。。\n");
                getch();
                return 1;
        }
    }
    else
    {
        printf("原始密码错误,按任意键返回。。。\n");
        getch();
    }
}

复制代码

Guess you like

Origin juejin.im/post/7031822848247201823