C#控制台输出注册登录界面

题目:C#注册登录页面

要求能够存储多组账户,能够有试错上线

逻辑分析:

注册逻辑:

1.首先需要注册账户,先输入账户名,账户名不能重复,注册完;接下来写密码,并二次确认输入的密码;然后将账户和密码存入数据库中,以此多次使用。

登录逻辑:

2.注册完之后,既可以需要登录,登陆的时候呢,先判断是否存在已经注册完的用户名,然后进行输入密码操作,然后判断密码是否正确,同样需要输入上限,达到上线之后即重新注册。

代码:

class Program
    {
        public static int count = 1;
        public static string[][] num = new string[100][];
        public static int mistakenum = 1;       
        public static bool istrue = false;
        static void Main(string[] args)
        {
            while (true)
            {
                login0();     //注册
                landing0();   //登录
            }                           
        }       
        #region 1.注册页面
        static void login0()
        {
            Console.WriteLine("   注册账号   ");
            Console.WriteLine("设置账号名");
            string name = Console.ReadLine();
            if (count>1)               //需注意count==1的时候,数组里面没有保存内容,因此不能与储存的内容进行保存
            {
                if (Registeredname(name))     //要充分利用bool变量,进行判断,学会使用
                {
                    Console.WriteLine("请输入密码");
                    string code = Console.ReadLine();
                    Console.WriteLine("请确认密码");
                    string code1 = Console.ReadLine();
                    rightcode(code, code1);    //确认注册输入的是正确的密码,不正确超过次数,就重新注册
                    if (istrue)
                    {
                        Console.WriteLine("注册成功");
                        istrue = false;        //公共的变量记得返回值
                        mistakenum = 1;        
                        number(name, code);   //注册成功导入数据库
                    }
                }
                else
                {
                    login0();              
                }
            }
            else                //这里为第一次注册需要的代码,直接运行,导入就可以
            {
                Console.WriteLine("请输入密码");
                string code = Console.ReadLine();
                Console.WriteLine("请确认密码");
                string code1 = Console.ReadLine();
                rightcode(code, code1);
                if (istrue)
                {
                    Console.WriteLine("注册成功");
                    istrue = false;
                    mistakenum = 1;
                    number(name, code);
                }
                else
                {
                    login0();
                }
            }                                    
        }
        #endregion
        #region 1.1注册界面重新输入密码
        static void rightcode(string code, string code1)     //将注册时需要导入的两次密码传参,进行判断
        {           
            while (mistakenum <= 5)                          //总共给五次试错的机会
            {
                if (code1 == code) 
                {
                    mistakenum = 1;                          //记得返回值
                    istrue = true;                           //正确就返回true。
                    break;
                }
                else if (mistakenum == 5)                    //超出上线,即为重新进行运行,一切重置
                {
                    Console.WriteLine("输出错误上线");                   
                    mistakenum = 1;
                    login0();
                    break;
                }
                else if (code1 != code)//两次密码不相等,就要重新输入code1(即为再次输入密码),这里是一个变量,因此不用重新传参,直接改变值就可以了
                {
                    Console.WriteLine("输入错误,请重新输入");
                    code1 = Console.ReadLine();
                    mistakenum++;
                }
            }
        }
        #endregion
        #region 1.2注册页面用户名不重复。
        static bool Registeredname(string name)   //注册页面的判断用户名是否存在
        {
            for (int i = 0; i <count-1; i++)      //该地方需要注意count-1这个点,这个点容易出错,公共的数组一开始内容全部没有,因此不能比较,所以说需要注意这个范围
            {
                if (num[i][0] == name)            //当用户名重复是,运行
                {
                    Console.WriteLine("用户名重复,请重新输入");
                    return false;                
                }                
            }
            return true;                         //无重复用户名,返回true,接着输入密码
        }
        #endregion
        #region 2.数据库
        static void number(string name, string code)  //数据库,存储每次输入的用户名和密码
        {
                num[count - 1] = new string[2];       //这里每次都需要定义一下,大函数里面包含的小函数的容量,需每次都声明,因此这里导入new string[2]
                num[count - 1][0] = name;             //下标要减1,因为count为记录数量,即存入的账户总量,该地方为用户名,定义大数组里面的小数组第一个为用户名
                num[count - 1][1] = code;             //该地方为存储密码。大数组的小数组的第二个数即为密码
                count++;                              //每次存入count就要+1,放在这个地方逻辑上比较合理
        }
        #endregion
        #region 3.登录页面
        static void landing0()
        {
            while (true)                              //该地为死循环,因此就可以试错,错误的时候,可以再次运行
            {
                Console.WriteLine("      登录:   ");
                Console.Write("账号:");
                string id = Console.ReadLine();   
                string pw = getuser(id);           //将用户名和密码对应,即一个用户名只能有一个密码
                if (mistakenum==5)                 //这里是用户名试错的情况,只能五次,五次直接退出循环
                {
                    Console.WriteLine("输入错误上线");
                    mistakenum = 1;
                    break;
                }
                else if (pw == "")             //如果账户不存在,getuser就到处pw="",所以运行这一段
                {
                    Console.WriteLine("账号不存在,请重新输入!");
                    mistakenum++;
                    continue;               //不存在重新运行这个循环
                }
                Console.Write("密码:");
                string code = Console.ReadLine();  //输入密码,并进行判断
                if (mistakenum == 5)               //试错情况五次,错误退出循环
                {
                    Console.WriteLine("输入错误上线");
                    mistakenum = 1;
                    break;
                }
                else if (code==pw)              //判断密码正确
                {
                    Console.WriteLine("登陆成功!!");
                    break;
                }
                else if (code!=pw)               //密码不对应时,即为重新输入密码
                {
                    Console.WriteLine("密码错误,请重新输入!!");
                    mistakenum++;
                }
            }           
        }          
        #endregion
        #region 4.获取用户名
        static string getuser(string id)  //获取用户名,以此来将用户名和密码对应
        {
            string str = "";              
            for (int i = 0; i < count-1; i++)  //将数组里面的每一个用户名都和输入的用户名,作比较
            {
                if (id==num[i][0])             //当存在用户名时,即可运行
                {
                    return num[i][1];          //返回正确的密码,进行密码的判断
                }
            }
            return str;       //不存在该用户时导出
        }
        #endregion        
    }

运行结果:

(这个地方清空数据台,清的不是很明白,如果有知道的可以私聊一下,互相交流一下,感谢🙇‍)

该题总结:

1. 该题创建数据库的话,需要创建一个公用的交错数组,以此来重复使用,不用使用时必须传参,简单方便。因为我使用的c#控制台,函数前面有static,所以说公用的交错数组也需要加入static。

2.该题还需要注意的地方为,所有的公用的数据,如果想重复使用的话,视情况归为原来的数字或者情况。

3.还需要注意数组里面如果没有内容的话,不能够进行比较,会报错,无法运行。所以说一定一定要注意数组内的内容需要取到的地方。

4.该题还有难点在账户名和密码对应,即一个账户名,只能有一个密码。这里的逻辑可以多看一下,这个地方我写在下面,各位有需要可以观看。

while (true)                              //该地为死循环,因此就可以试错,错误的时候,可以再次运行
            {
                Console.WriteLine("      登录:   ");
                Console.Write("账号:");
                string id = Console.ReadLine();   
         string pw = getuser(id);           //将用户名和密码对应,即一个用户名只能有一个密码
             if (pw == "")             //如果账户不存在,getuser就到处pw="",所以运行这一段
                {
                    Console.WriteLine("账号不存在,请重新输入!");              
                    continue;               //不存在重新运行这个循环
                }
                Console.Write("密码:");
                string code = Console.ReadLine();  //输入密码,并进行判断
                
                 if (code==pw)              //判断密码正确
                {
                    Console.WriteLine("登陆成功!!");
                    break;
                }
                else i               //密码不对应时,即为重新输入密码
                {
                    Console.WriteLine("密码错误,请重新输入!!");                    
                }
            }           
        }          static string getuser(string id)  //获取用户名,以此来将用户名和密码对应
        {
            string str = "";              
            for (int i = 0; i < count-1; i++)  //将数组里面的每一个用户名都和输入的用户名,作比较
            {
                if (id==num[i][0])             //当存在用户名时,即可运行
                {
                    return num[i][1];          //返回正确的密码,进行密码的判断
                }
            }
            return str;       //不存在该用户时导出
        }

5.做该题一定要先分析逻辑,一步一步写,切勿想到什么写什么,先把大面内容写完,然后一步一步完善,我写的还不够很完善,后期有时间,继续完善,如果各位看官有任何的建议,欢迎补充,一起奋斗。

欢迎各位码友指出问题和改进方向😊😊😊😊😊!!!!

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值