#include <iostream>
#include <stdio.h>
#include <string.h>
#include <cstring>
using namespace std;
/*
已有全局变量如下。
其中 每个下标对应一套用户数据(id, 名称, 密码)
如下标[1]: 对应10002, 李四, bbbbb
*/
int ids[5] = {10001, 10002, 10003, 10004};
char names[5][10] = {"张三", "李四", "王五", "赵六"};
char passwords[5][16] = {"aaaaa", "bbbbb", "ccccc", "ddddd"};
int uNum = 4;
// DAL-----------------------------------------------------
/*
功能: 根据id 查询用户是否存在, 如果存在返回用户名, 如果不存在返回空
参数:
uid: 用户id
返回值:
如果用户存在, 返回用户名.
如果用户不存在, 返回NULL
*/
char *selectUserById(int uid);
/*
功能: 根据id 查询用户密码, 如果存在返回用户密码, 如果不存在返回空
参数:
uid: 用户id
返回值:
如果密码存在, 返回密码.
如果密码不存在, 返回NULL
*/
char *selectPassById(int uid);
/*
参数:用户名、密码
1. 查找数据,根据已给的用户名,查找有无重复。
2. 如果没有重复,修改全局变量(uid, username,pwd)。
3. 如果有重复,返回失败
*/
bool isRepeat(char *input_name);
int addData(char *input_name, char *input_password);
// DAL-----------------------------------------------------
// BLL-----------------------------------------------------
/*
功能: 传入用户id和密码, 根据上面两个函数(selectUserById, selectPassById)来获取相应用
户数据, 并判断是否登录成功
传入用户id 查询用户名是否存在, 并获取用户密码
如果用户存在 则判断密码是否正确
参数:
uid: 用户账户
password: 用户密码
返回值:
如果账号不存在, 返回1
如果密码错误, 返回2
如果登录成功, 返回0
*/
int login(int uid, char *password);
/*
接受DAL返回的数据,告诉UI层成功或失败
1. 检查有无重复,重复则返回失败
2. 不重复则调用 DAL 修改数据,并返回uid
*/
int registerFun(char *input_name, char *input_password);
// BLL-----------------------------------------------------
// UI------------------------------------------------------
/*
功能: 提示用户输入账号密码, 根据login函数判断是否登录成功,
如果登录成功提示正在进入首页
如果登录失败
密码错误: 提示密码错误, 并让用户重新登录
账号不存在: 提示账号不存在, 并提示正在进入注册界面
参数: 无
返回值: 无
*/
void showLoginPage(void);
/*
接受用户输入,告诉用户结果。
1. 用户名无重复,注册成功
2. 用户名重复,注册失败
*/
void registerPage(void);
// UI------------------------------------------------------
int main(void)
{
showLoginPage();
return 0;
}
char *selectUserById(int uid)
{
for (int i = 0; i < uNum; i++)
{
if (ids[i] == uid)
{
return names[i];
}
}
return NULL;
}
char *selectPassById(int uid)
{
for (int i = 0; i < uNum; i++)
{
if (ids[i] == uid)
{
return passwords[i];
}
}
return NULL;
}
bool isRepeat(char *input_name)
{
bool r_val = false;
for (int i = 0; i < uNum; i++)
{
if (strcmp(names[i], input_name) == 0)
{
r_val = true;
}
}
return r_val;
}
int addData(char *input_name, char *input_password)
{
uNum++;
ids[uNum - 1] = ids[uNum - 2] + 1;
strcpy(names[uNum - 1], input_name);
strcpy(passwords[uNum - 1], input_password);
return ids[uNum - 1];
}
int login(int uid, char *password)
{
int r_val;
if (selectUserById(uid) == NULL)
{
r_val = 1;
}
else if (strcmp(selectPassById(uid), password) == 0)
{
r_val = 0;
}
else
{
r_val = 2;
}
return r_val;
}
int registerFun(char *input_name, char *input_password)
{
if (!isRepeat)
{
int uid = addData(input_name, input_password);
return uid;
}
return 0;
}
void showLoginPage(void)
{
int uid;
cout << "Please input uid: ";
cin >> uid;
char *pwd = new char[20];
cout << "Please input pwd: ";
cin >> pwd;
int r_val = login(uid, pwd);
if (r_val == 0)
{
cout << "登录成功, 正在进入首页!" << endl;
homePage();
}
else if (r_val == 2)
{
cout << "密码错误, 请重新登录!" << endl;
}
else if (r_val == 1)
{
cout << "账号不存在, 正在进入注册界面!" << endl;
registerPage();
}
delete[] pwd;
return;
}
void registerPage(void)
{
char *input_name = new char[20];
char *input_password = new char[20];
cout << "输入注册用户名: ";
cin >> input_name;
cout << "输入注册密码: ";
cin >> input_password;
int res = registerFun(input_name, input_password);
if (res == 0)
{
cout << "用户名重复" << endl;
}
else
{
cout << "注册成功" << endl;
cout << "你的用户id是: " << res << endl;
cout << "你的用户名是: " << input_name << endl;
}
}
void homePage(void)
{
cout << "欢迎来到首页";
}