c++ - 有人可以告诉我这对于登录和注册系统是否足够有效?
问题描述
这段代码应该是一个登录和注册系统,但它实际上可以工作我只是想知道是否有可以改进的地方
#include <iostream>
#include <fstream>
#include <string>
#include <unistd.h>
#include <conio.h>
using namespace std;
void RegUser (){
string username, password, un, pw;
ofstream users ("users.txt", ios::app);
cout << "REGISTER USERNAME: " ; cin >> username;
cout << "REGISTER PASSWORD: "; cin >> password;
ifstream users_c ("users.txt");
while (users_c >> un >> pw){
if (username.compare(un) == 0 || password.compare(pw) == 0)
{
cout << "USERNAME OR PASSWORD ALREADY IN USE\n";
}
}
users_c.close();
users << username << endl << password << endl;
users.close();
}
int Login(string username, string password){
string un, pw; int access = 0;
ifstream users ("users.txt");
while (users >> un >> pw){
if (username.compare(un) == 0 && password.compare(pw) == 0)
{
access++;
break;
}
}
users.close();
return access;
}
void menu () {
cout << "[1] TO LOGIN\n";
cout << "[2] TO REGISTER\n";
cout << "ENTER COMMAND: ";
}
main () {
int cho, stop = 0, access;
string username, password;
do {
menu(); cin >> cho;
switch (cho)
{
case 1:
cout << "ENTER USERNAME: "; cin >> username;
cout << "ENTER PASSWORD: "; cin >> password;
access = Login(username, password);
if (access == 1){
cout << "ACCESS GRANTED\n"; stop += 1;
}
else {
cout << "LOGIN ERROR\n";
}
break;
case 2:
RegUser();
break;
}
} while (stop != 1);
cout << "MAIN PROGRAM PLACEHOLDER\n";
getch();
}
它的工作原理是用户将选择是否要登录或注册。一旦他们选择了一个,他们将被要求输入他们的用户名或注册他们想要的用户名。
该RegUser()
函数首先询问他们想要使用的用户名和密码,然后打开“users.txt”文件以检查用户名或密码是否已经存在。如果它存在,它将不会注册,它们将被带回主菜单,这是该menu()
功能。
该Login()
函数有两个参数,即用户输入的用户名和密码。一旦用户输入了他们的用户名和密码,它将读取该文件并检查它是否类似于“users.txt”文件中已经注册的任何用户名和密码。
PS有一些#include命令甚至没有用于整个登录和注册部分,但请不要介意我只是把它留在那里,因为我将来会使用它们。
感谢任何会回复的人!我刚开始学习c++,想避免菜鸟的错误。
解决方案
推荐阅读
- sql - 在年月字段中获取最近一年的记录
- php - PHP 将数组格式化为新数组
- c# - 带有证书 c# 的自定义策略断言 SOAP
- installation - ArangoDB:非常基本的第一步——如何开始使用 Foxx 微服务
- abap - 字段“str_mara”未知,但有一个名称相似的字段“it_mara”
- excel - 如何在电子表格中使某些单元格只读而某些单元格可读写?
- r - 替换 R 数据框中的 NA 值
- html - 如何在 Semantic React UI 网格中添加元素?
- c# - .Net Core 2.2 Web API 在 GET 上获得 415 Unsupported Media type?
- twilio - 我如何使用 twilio studio 查询呼叫,以便在线路空闲时将呼叫者置于 que 然后 anser 中?