首页 > 解决方案 > 有人可以告诉我这对于登录和注册系统是否足够有效?

问题描述

这段代码应该是一个登录和注册系统,但它实际上可以工作我只是想知道是否有可以改进的地方


#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++,想避免菜鸟的错误。

标签: c++file-handling

解决方案


推荐阅读