C++ 用户登录与注册系统
#include <Windows.h>
#include <conio.h>
#include <iostream>
struct user {
char uName[50] = "admin";
char uPwd[50] = "123456";
};
void Reg(); // 登录
void Log(); // 注册
bool pass(false); // 是否允许用户通过
char put; // 输入
char pwd[50], usrn[50]; // 密码和用户
COORD c; // 光标位置
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE); // windows.h的句柄,为了图省事
user usr; // 用户
int ch = 0; // 输入数量
// 注册 registered
void Reg() {
ch = 0; // 清空输入
pass = false; // 禁止通过
system("cls"); // 清屏 刷新buffer
std::cout << "Reg\n";
std::cout << "———————\n";
std::cout << "|Name : ";
std::cout << "\n|Password : ";
std::cout << "\n———————\n"; // 打印输入框
c = {12, 2};
SetConsoleCursorPosition(h, c); // 移动光标
while (!pass) {
put = _getch();
switch (put) {
case '\r':
ch = 0;
c = {12, 3};
SetConsoleCursorPosition(h, c);
while (!pass) {
put = _getch();
switch (put) {
case '\r': // when user submit
ch = 0;
c = {0, 5};
SetConsoleCursorPosition(h, c);
std::cout << "Welcome";
pass = true; // 退出注册并登录
break;
case '\b':
if (ch == 0) {
ch = 0;
} else {
ch--;
std::cout << "\b \b";
}
break;
default:
usr.uPwd[ch++] = put;
putchar(put);
break;
}
}
break;
case '\b':
if (ch == 0) {
ch = 0; // 我们必须做出一些限制
} else {
ch--;
std::cout << "\b \b";
}
break;
default:
usr.uName[ch++] = put;
putchar(put);
break;
}
}
}
// 登录 login
void Log() {
ch = 0; // 清空输入
pass = false; // 禁止通过
system("cls"); // 清屏 刷新buffer
std::cout << "Log\n";
std::cout << "-------\n";
std::cout << "|Name : " << usr.uName << "\n";
std::cout << "|Password : ";
std::cout << "\n---------\n";
c = {12, 3};
SetConsoleCursorPosition(h, c); // 移动光标
while (!pass) {
put = _getch();
switch (put) {
case '\r':
if (pwd[ch] == usr.uPwd[ch]) {
c = {0, 5};
SetConsoleCursorPosition(h, c);
std::cout << "Welcome";
pass = true;
} else {
c = {0, 5};
SetConsoleCursorPosition(h, c);
std::cout << "Password wrong!";
pass = false;
getchar();
Log();
}
break;
case '\b':
if (ch == 0) {
ch = 0;
} else {
ch--;
std::cout << "\b \b";
}
break;
default:
pwd[ch++] = put;
putchar('*'); // 输入密码使用*代替 保护用户的密码安全
break;
}
}
}
int main() {
Log();
return 0;
}