需求说明:
设计一个图书管理系统,具有注册和登录的功能,本书是关于登录状态的设置。
登录状态有两种:0为未登录,1为登录。
思考:
1、为什么不选择全局变量在几个函数中共享数据?
登录状态不允许任何函数都能访问和修改它,只能在几个函数中获取和修改。
它的值是需要修改的,因此不能使用const修饰,使其值不可改变。
因此,该变量只能使用局部变量。
2、如何解决设个状态长久保存的问题?
这个局部变量函数结束后依然要存在,因此后面的退出系统以及其他操作都需要使用这个状态。
因此,这个变量必须使用静态局部变量。
3、登录状态封装
外部不能直接设置或者使用这个变量,要通过函数去设置或者获取该状态,达到保护该状态的目的
因此需要两个函数,getLoginStatus和setLoginStatus函数。
实现代码:
函数:
//处理登录状态
static int handleLoginStatus(int n)
{
static int loginStatus = 0; //0为未登录,1为登录
if(n > 0)
{
//登录
loginStatus = 1;
}
else if(n < 0)
{
//退出
loginStatus = 0;
}
//获取则直接返回
return loginStatus;
}
//获取登录状态函数
int getLoginStatus()
{
return handleLoginStatus(0);
}
//设置登录状态函数,设置成功返回1
int setLoginStatus(int n)
{
return handleLoginStatus(n);
}
注意:handleLoginStatus不允许在除了当前文件的其他文件使用,因此声明为static类型,外部想要获取或者设置登录状态,调用setLoginStatus和getLoginStatus即可。
调用:
int res1 = getLoginStatus();
printf("\n当前的登录状态是:%d",res1);
setLoginStatus(1);
int res = getLoginStatus();
printf("当前的登录状态是:%d",res);