You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#登录注册程序优化:注册仅执行一次,登录失败跳过注册

解决方案:实现单次注册与登录失败重试逻辑

核心改动思路

  • 拆分注册与登录流程,让注册仅执行一次(成功后进入登录环节,失败可选择重试或退出)
  • 登录失败时直接重新发起登录请求,完全跳过注册流程
  • 简化冗余的状态变量与重复代码,提升可读性

修改后的完整代码

using System;
using System.Threading;

class Program
{
    static void Main()
    {
        string registeredName = null;
        string registeredPassword = null;
        bool registrationDone = false;

        // 注册流程:仅执行一次(失败可重试,如需严格单次可改为直接退出)
        while (!registrationDone)
        {
            Console.WriteLine("创建你的账号");
            Thread.Sleep(500);
            Console.WriteLine("请设置登录名: ");
            registeredName = Console.ReadLine();
            Thread.Sleep(1500);
            Console.Clear();
            
            Console.WriteLine("请设置密码: ");
            registeredPassword = Console.ReadLine();
            Console.Clear();

            // 模拟账号创建加载动画
            for (int i = 0; i < 2; i++)
            {
                Console.WriteLine("Creating Account");
                Thread.Sleep(800);
                Console.Clear();
                Console.WriteLine("Creating Account.");
                Thread.Sleep(800);
                Console.Clear();
                Console.WriteLine("Creating Account..");
                Thread.Sleep(800);
                Console.Clear();
                Console.WriteLine("Creating Account...");
                Thread.Sleep(800);
                Console.Clear();
            }

            Random rnd = new Random();
            int createResult = rnd.Next(1, 3);
            if (createResult == 1)
            {
                Thread.Sleep(1000);
                Console.WriteLine("账号创建成功!");
                Thread.Sleep(3000);
                Console.Clear();
                registrationDone = true;
            }
            else
            {
                Console.WriteLine("账号创建失败,请重试");
                Thread.Sleep(3000);
                Console.Clear();
                // 若要求注册仅执行一次,替换上面两行为:
                // Console.WriteLine("账号创建失败,程序退出");
                // Thread.Sleep(3000);
                // Environment.Exit(0);
            }
        }

        // 登录流程:失败直接重试,跳过注册
        while (true)
        {
            Console.WriteLine("请输入登录名:");
            var inputLogin = Console.ReadLine();
            Console.Clear();
            
            Console.WriteLine("请输入密码:");
            var inputPassword = Console.ReadLine();
            Console.Clear();

            if (inputLogin == registeredName && inputPassword == registeredPassword)
            {
                Console.WriteLine("登录成功,祝你游戏愉快!");
                Thread.Sleep(3000);
                Console.Clear();
                
                // 退出动画
                string[] exitMessages = {"Exiting", "Exiting.", "Exiting..", "Exiting..."};
                foreach (var msg in exitMessages)
                {
                    Console.WriteLine(msg);
                    Thread.Sleep(500);
                    Console.Clear();
                }
                Environment.Exit(0);
            }
            else
            {
                Thread.Sleep(1000);
                Console.WriteLine("登录名或密码错误,请重新输入");
                Thread.Sleep(3000);
                Console.Clear();
            }
        }
    }
}

关键优化点

  1. 流程分离:注册与登录逻辑完全拆分,注册仅在程序启动时执行一次,成功后进入持续的登录重试循环
  2. 状态管理简化:用registrationDone布尔标记替代原代码中混乱的fail、code1变量,逻辑更清晰
  3. 冗余代码消除:将重复的加载动画、退出动画用循环/数组简化,减少代码体积
  4. 需求匹配:登录失败后直接回到登录输入界面,完全跳过注册流程,符合需求

内容的提问来源于stack exchange,提问作者Bartosz Baszyński

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 04:04:50