明远湖之鱼 2021-11-05 13:33 采纳率: 50%
浏览 44
已结题

我想实现登录和注册,下面的有什么问题啊


#include <iostream> 
#include <string.h> 
#include <string> 
#include <conio.h>
#include <fstream> 
using namespace std; 
#define SIZE 100//宏定义最大用户容量
int count = 0;//用作储存当前已注册用户数
//用户类 
class User{
    private:
        string id;//账号 
        char pw[6];//密码
    public:
        User(){};//默认构造函数 
        void save();//保存
        void read();//读取 
        void Hello();//登录界面 
        void Register();//注册
        void Login();//登录
}us; 
User user[SIZE];//用户类数组 
//保存
void User::save()
{
    ofstream ofile;//从内存到硬盘
    ofile.open("user.txt", ios::out);//打开文件并保存数据 
    for (int i = 0; i < count; i++)//将账号密码存储到文件 
    {
        ofile << "账号:"<<user[i].id<<" ";
        ofile <<"密码:" <<user[i].pw << endl;
    }
    ofile.close();//关闭文件 
}
//读取
void User::read()
{
    ifstream ifile;//从硬盘到内存
    ifile.open("user.txt", ios::in);//打开文件并读取数据 
    count = 0;
    if (!ifile.is_open())//fin.is_open()打开成功返回1,打开失败返回0 
    {
        cout << "文件打开失败!" << endl;
        return;
    }
    for (int i = 0; !ifile.eof(); i++)//遍历文件,当文件指针到达文件尾时eof()函数就返回为true,否则返回false
    {
        ifile >> user[i].id;
        ifile >> user[i].pw;
    }
    ifile.close();//关闭文件 
}
//登录界面 
void User:: Hello()
{
    int se;
    cout<<"\n\n\n";
    cout<<"\t\t\t\t\t       【欢迎使用超市货物管理系统】\n\n";
    cout<<"\t\t\t\t\t                1.登录账号 \n\n"; 
    cout<<"\t\t\t\t\t                2.注册账号 \n\n";
    cout<<"\t\t\t\t\t                3.退出界面 \n\n";
    cout<<"\t\t\t\t\t                请选择:"; 
    cin>>se; 
    switch (se)
    {
    case 1:
        Login();        
        break;
    case 2:
        Register();
        break;
    case 3:
        cout<<"\n\t\t\t\t\t               【成功退出】\n";
        exit(0);
        system("pause");
        break;
    default:
        cout<<"\n没有这个选项,请重新选择!\n";
        break;
    }
}
//注册
void User::Register()
{
    us.read();//读取已储存用户数据
    string ID;
    char pw1[6],pw2[6];
    int    i,a=count;
    cout<<"\n\t\t\t\t\t               【注册帐号】\n";
    cout<<"\n                        请输入用户账号和密码(账号、密码可以为数字,英文字母,符号,用户账号最多20位,密码必须6位)\n\n";
    cout<<"\t\t\t\t\t\t   请你输入账号:";
    cin>>id;
    if(id.length()>20)
    {
        cout<<"\n\n\t\t\t\t\t\t  用户账号最多20位,请重新注册账号!\n";
        return;
    }
    else
    {
    user[a].id=ID;
    cout<<"\n\t\t\t\t\t\t   请你输入密码:";
    for (i = 0; i<6; i++)
    {
        pw1[i] = _getch();//从控制台读取一个字符,但不显示在屏幕上 
        cout<<"*";
        user[a].pw[i] = pw1[i];
        if (pw[i] == '\r')//密码不够6位数就按回车 
        {
            cout<<"\n\n\t\t\t\t\t\t  密码必须6位,请重新注册账号!\n";
            return;
        }
    }
    cout<<"\n\n\t\t\t\t\t\t   再次确认密码:";
    for (i = 0; i<6; i++)
    {
        pw2[i] = _getch();
        cout<<"*";
        if (user[a].pw[i] != pw2[i])
        {
            cout<<"\n\n\t\t\t\t\t\t 密码不对,请重新注册账号!\n";
            return;
        }
    }
    cout<<"\n\n\t\t\t\t\t\t         注册成功!!!\n";
    count++;//已注册用户加1
    us.save();//保存用户数据
    }
    system("pause");
    system("cls");
}
//登录账号功能 
void User::Login()
{
    us.read();//读取已储存用户数据
    string ID;
    char pw3[6];
    int    i, j, a = 0;
    int    flag = 0;
    cout<<"\n\t\t\t\t\t               【登录帐号】\n";
    for (i = 0; i<3; i++)
    {
        cout<<"\n\t\t\t\t\t\t   请输入账号:";
        cin>>ID;
        cout<<"\n\t\t\t\t\t\t   请输入密码:";
        for (j = 0; j<6; j++)
        {
            pw3[j] = _getch();
            cout<<"*";
        }
    for (int i = 0; i < count; i++)//允许三次登录机会 
        {
            if (ID == user[i].id && pw3 == user[i].pw)
            {
                flag == 1;
            }
        }

        if (flag == 1)
        {
            cout<<"\n\n\t\t\t\t\t\t         登录成功!";
            cout<<"\n\t\t\t\t\t       按任意键进入超市货物管理系统!\n";
            system("pause");
            system("cls");
            system("pause");
            system("cls");
        }
        else {
            printf("\n账号或者密码输入错误,你还有%d次机会,请重新输入:\n", 2 - i);
        }
    }
    if (i == 3)
    {
        printf("\n\n\t\t\t\t\t\t\t登录失败!\n");
        return;
    }
}
int main()
{
    system("color 30"); 
    User user;
    while(1)
    {
        user.Hello();
        system("pause");
        system("cls");
    }
    return 0; 
}



  • 写回答

1条回答 默认 最新

  • TA远方 2021-11-05 19:38
    关注

    第155行是不是错了,flag == 1;
    改一下试试看呢

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月6日
  • 创建了问题 11月5日