读书人

控制台应用程序有关问题求解答

发布时间: 2012-10-17 10:25:47 作者: rapoo

控制台应用程序问题,求解答
就是
我要创建一个用登录的操作
怎么来实行跳转,
就是用户名和密码正确后,
跳转到另外的操作页面。
还有
怎么来注册用户,把用户和它的密码储存在某个文件中,验证时就调用这个文件中的用户来验证


[解决办法]
验证成功后你只需要在控制台输出一行文字,就行了,然后再读取几个字符,就是下一步操作,如果验证不通过,直接退出程序就完了,

探讨

其实不是页面。就是验证真确后,就执行后面的操作,比如验证真确后就执行用户信息操作。我们还没有学数据库的链接操作,

[解决办法]
问题好多呀!
怎么来实行跳转,看你要跳转到哪!
另外的操作页面是WinForm 的话,可用:
MyForm MyForm= new MyForm();MyForm.Show();
怎么来注册用户,方法很多。
把用户和它的密码储存在某个文件中,代码较多,查帮助吧,有多种读写文件的方法!
[解决办法]
怎么来实行跳转?
另外的操作页面还是控制台的话,没有跳转只说,只需要用控制台读取语句就可以了:
Console.Read();

Console.ReadLine();

[解决办法]
判断用户名和密码是否真确用什么语句?
用判断语句
if(....)
[解决办法]
建议楼主把你的教材或是教程再往后翻看50页,有了基本的程序处理思维后再来问问题吧,
或是找个人现场指导下。


[解决办法]
登录验证分几步走吧:
1、输入用户名和密码(在控制台窗口);
2、判断用户名和密码是否为空(不为空继续下一步);
3、读取存放密码和用户名的文件,根据每一个注册者(密码和用户名),读取数据到一个List中,List的每一个元素由每一个注册用户的(用户名+密码拼接起来)组成;
4、遍历List,并拆分拼接字符串,对比用户名和密码;(匹配的话进行下一步)
5、登陆成功;

注册也分几步走吧:
1、选中注册功能;
2、输入用户名和密码;(用户名和密码不能为空,不为空则继续)
3、保存并追加到存放注册用户的信息的文件中。

简单的就像上面那样做,可以在注册前判断是否存在同名用户,这点自己想。最好还是用数据库吧,别用文本了。
[解决办法]
没事 多多练习 基础打好 慢慢就会好的
[解决办法]
Console.Clear();

清空控制台窗口界面,再输出你希望的界面
[解决办法]
给你写了个示例程序,足够你完成这个程序了,登录和页面切换的功能全部实现了,其余的小功能限于时间,就不实现了,你自己参考一下吧,由于是示例,没有过多设计逻辑结构,代码结构有点冗余,运行后的示例图如下:

完整代码(一定要使用控制台的工程项目哦)
C# code
using System;using System.Text;namespace ConsoleLogin{    class LoginWindow    {        public void Show()        {            const int left = 18;            const int top = 5;            const int width = 39;            const int height = 12;                        Console.SetCursorPosition(left + 1, top + height + 1);            Console.BackgroundColor = ConsoleColor.DarkGray;            for (int i = left + 1; i <= left + width + 1; ++i)                Console.Write(" ");            for (int i = top + 1; i <= top + height + 1; ++i)            {                Console.SetCursorPosition(left + width + 1, i);                Console.Write(" ");            }            Console.BackgroundColor = ConsoleColor.DarkMagenta;            Console.ForegroundColor = ConsoleColor.White;            Console.SetCursorPosition(left, top);            Console.WriteLine("┏━━━━━━━━━━━━━━━━━━┓");            Console.SetCursorPosition(left, top + 1);            Console.WriteLine("┃                                    ┃");            Console.SetCursorPosition(left, top + 2);            Console.WriteLine("┣━━━━━━━━━━━━━━━━━━┫");            Console.SetCursorPosition(left, top + 3);            Console.WriteLine("┃                                    ┃");            Console.SetCursorPosition(left, top + 4);            Console.WriteLine("┃                                    ┃");            Console.SetCursorPosition(left, top + 5);            Console.WriteLine("┃                                    ┃");            Console.SetCursorPosition(left, top + 6);            Console.WriteLine("┃                                    ┃");            Console.SetCursorPosition(left, top + 7);            Console.WriteLine("┃                                    ┃");            Console.SetCursorPosition(left, top + 8);            Console.WriteLine("┃                                    ┃");            Console.SetCursorPosition(left, top + 9);            Console.WriteLine("┃     ┌────┐   ┌────┐    ┃");            Console.SetCursorPosition(left, top + 10);            Console.WriteLine("┃     │[Enter] │   │[ ESC ] │    ┃");            Console.SetCursorPosition(left, top + 11);            Console.WriteLine("┃     └────┘   └────┘    ┃");            Console.SetCursorPosition(left, top + 12);            Console.WriteLine("┗━━━━━━━━━━━━━━━━━━┛");            Console.ForegroundColor = ConsoleColor.Cyan;            Console.SetCursorPosition(left + 2, top + 1);            Console.Write(">>>>>>>>>>>>> 登录窗口 <<<<<<<<<<<<<");            Console.ForegroundColor = ConsoleColor.Black;            Console.SetCursorPosition(left + 7, top + 4);            Console.Write("用户:____________________");            Console.SetCursorPosition(left + 7, top + 6);            Console.Write("密码:____________________");            Console.SetCursorPosition(left + 13, top + 4);            string strUser = "";            string strPassword = "";            bool bInputUserName = true;            while (true)            {                ConsoleKeyInfo key = Console.ReadKey(true);                if (ConsoleKey.Escape == key.Key)                    Environment.Exit(0);                if (ConsoleKey.DownArrow == key.Key && true == bInputUserName)                {                    bInputUserName = false;                    Console.SetCursorPosition(left + 13, top + 6);                    Console.ForegroundColor = ConsoleColor.Black;                    Console.Write("____________________");                    Console.SetCursorPosition(left + 13, top + 6);                    Console.ForegroundColor = ConsoleColor.DarkGreen;                    Console.Write(strPassword);                                        continue;                }                if (ConsoleKey.UpArrow == key.Key && false == bInputUserName)                {                    bInputUserName = true;                    Console.SetCursorPosition(left + 13, top + 4);                    Console.ForegroundColor = ConsoleColor.Black;                    Console.Write("____________________");                    Console.SetCursorPosition(left + 13, top + 4);                    Console.ForegroundColor = ConsoleColor.DarkGreen;                    Console.Write(strUser);                                        continue;                }                if (ConsoleKey.Enter == key.Key)                {                    if ("abc" == strUser && "123" == strPassword)                    {                        strUser = "";                        strPassword = "";                        return; // 本窗口处理结束                    }                    else                    {                        Console.ForegroundColor = ConsoleColor.Red;                        Console.SetCursorPosition(left + 7, top + 8);                        Console.Write("账号或密码错误,请重新输入!"); // 为加大破解难度,一般不会明确说明是账号错还是密码错                                               strUser = "";                        Console.SetCursorPosition(left + 13, top + 4);                        Console.ForegroundColor = ConsoleColor.Black;                        Console.Write("____________________");                                                strPassword = "";                        Console.SetCursorPosition(left + 13, top + 6);                        Console.ForegroundColor = ConsoleColor.Black;                        Console.Write("____________________");                                                Console.SetCursorPosition(left + 13, top + 4);                        bInputUserName = true;                        continue;                    }                }                if (ConsoleKey.Backspace == key.Key)                {                    if (true == bInputUserName)                    {                        Console.SetCursorPosition(left + 13, top + 4);                        Console.ForegroundColor = ConsoleColor.Black;                        Console.Write("____________________");                        Console.SetCursorPosition(left + 13, top + 4);                        if (strUser.Length > 0)                        {                            Console.ForegroundColor = ConsoleColor.DarkGreen;                            strUser = strUser.Remove(strUser.Length - 1);                            Console.Write(strUser);                            continue;                        }                        else                        {                            continue;                        }                    }                    else                    {                        Console.SetCursorPosition(left + 13, top + 6);                        Console.ForegroundColor = ConsoleColor.Black;                        Console.Write("____________________");                        Console.SetCursorPosition(left + 13, top + 6);                        if (strPassword.Length > 0)                        {                            Console.ForegroundColor = ConsoleColor.DarkGreen;                            strPassword = strPassword.Remove(strPassword.Length - 1);                            Console.Write(strPassword);                            continue;                        }                        else                        {                            continue;                        }                    }                }                if (true == bInputUserName && strUser.Length >= 20) continue;                if (false == bInputUserName && strPassword.Length >= 20) continue;                if ( (key.KeyChar >= '0' && key.KeyChar <= '9')                    || (key.KeyChar >= 'A' && key.KeyChar <= 'Z')                    || (key.KeyChar >= 'a' && key.KeyChar <= 'z') )                {                    Console.ForegroundColor = ConsoleColor.DarkGreen;                                        if (true == bInputUserName)                        strUser += key.KeyChar;                    else                        strPassword += key.KeyChar;                    Console.Write(key.KeyChar);                }            }        }    }    class MainWindow    {        public void Show()        {            Console.ResetColor();            Console.Clear();            Console.SetCursorPosition(5, 5);            Console.Write("这是新的一页,只有当你的密码和用户都输入正确了才会进入这页,控制台程序要切换到新的页");            Console.Write("面,只需要Clear()一下就可以了,然后你就把它当作新的窗口来输出你想要的信息吧,");            Console.Write("本程序教会你怎样切换页面,怎样绘制一个漂亮的窗口,怎样严格的控制输入数据,以防止用户");            Console.Write("恶意输入过量数据导致界面被破坏,懂了这些以后,就自己去完成相应的功能吧,剩下的就是加");            Console.Write("入密码设置的功能和窗口交互代码,以及读取、写入文本文件等,这些就参考书上的知识吧,");            Console.Write("时间关系就不实现了,相信这些代码足够引领你入门了,示例的程序简化了从文件读取用户和密码");            Console.Write("的功能,仅简化的写成当用户为abc密码为123时就认为正确,而且一切从简,程序的逻辑结构也没");            Console.Write("有去好好设计,并不太好。现在光标被隐藏了,可按任意键结束这个程序吧……");        }    }    class Program    {        static void Main(string[] args)        {            LoginWindow loginWnd = new LoginWindow();            loginWnd.Show();            MainWindow mainWnd = new MainWindow();            mainWnd.Show();            Console.ReadKey();        }    }} 


[解决办法]
补充说明:
回车键 表示登录
ESC 表示退出
上箭头 (即键盘上向上的方向键)表示光标切换到用户栏
下箭头 (即键盘上向下的方向键)表示光标切换到密码栏
BackSpace 表示删除一个字符。
这个程序有点问题,密码没有使用*号显示,一会给你修正后再上传一完整代码

[解决办法]
密码显示为 * 号,以下是完整代码

C# code
using System;using System.Text;namespace ConsoleLogin{    class LoginWindow    {        public void Show()        {            const int left = 18;            const int top = 5;            const int width = 39;            const int height = 12;                        Console.SetCursorPosition(left + 1, top + height + 1);            Console.BackgroundColor = ConsoleColor.DarkGray;            for (int i = left + 1; i <= left + width + 1; ++i)                Console.Write(" ");            for (int i = top + 1; i <= top + height + 1; ++i)            {                Console.SetCursorPosition(left + width + 1, i);                Console.Write(" ");            }            Console.BackgroundColor = ConsoleColor.DarkMagenta;            Console.ForegroundColor = ConsoleColor.White;            Console.SetCursorPosition(left, top);            Console.WriteLine("┏━━━━━━━━━━━━━━━━━━┓");            Console.SetCursorPosition(left, top + 1);            Console.WriteLine("┃                                    ┃");            Console.SetCursorPosition(left, top + 2);            Console.WriteLine("┣━━━━━━━━━━━━━━━━━━┫");            Console.SetCursorPosition(left, top + 3);            Console.WriteLine("┃                                    ┃");            Console.SetCursorPosition(left, top + 4);            Console.WriteLine("┃                                    ┃");            Console.SetCursorPosition(left, top + 5);            Console.WriteLine("┃                                    ┃");            Console.SetCursorPosition(left, top + 6);            Console.WriteLine("┃                                    ┃");            Console.SetCursorPosition(left, top + 7);            Console.WriteLine("┃                                    ┃");            Console.SetCursorPosition(left, top + 8);            Console.WriteLine("┃                                    ┃");            Console.SetCursorPosition(left, top + 9);            Console.WriteLine("┃     ┌────┐   ┌────┐    ┃");            Console.SetCursorPosition(left, top + 10);            Console.WriteLine("┃     │[Enter] │   │[ ESC ] │    ┃");            Console.SetCursorPosition(left, top + 11);            Console.WriteLine("┃     └────┘   └────┘    ┃");            Console.SetCursorPosition(left, top + 12);            Console.WriteLine("┗━━━━━━━━━━━━━━━━━━┛");            Console.ForegroundColor = ConsoleColor.Cyan;            Console.SetCursorPosition(left + 2, top + 1);            Console.Write(">>>>>>>>>>>>> 登录窗口 <<<<<<<<<<<<<");            Console.ForegroundColor = ConsoleColor.Black;            Console.SetCursorPosition(left + 7, top + 4);            Console.Write("用户:____________________");            Console.SetCursorPosition(left + 7, top + 6);            Console.Write("密码:____________________");            Console.SetCursorPosition(left + 13, top + 4);            string strUser = "";            string strPassword = "";            bool bInputUserName = true;            while (true)            {                ConsoleKeyInfo key = Console.ReadKey(true);                if (ConsoleKey.Escape == key.Key)                    Environment.Exit(0);                if (ConsoleKey.DownArrow == key.Key && true == bInputUserName)                {                    bInputUserName = false;                    Console.SetCursorPosition(left + 13, top + 6);                    Console.ForegroundColor = ConsoleColor.Black;                    Console.Write("____________________");                    Console.SetCursorPosition(left + 13, top + 6);                    Console.ForegroundColor = ConsoleColor.DarkGreen;                    string strStar = new string('*', strPassword.Length);                    Console.Write(strStar);                                        continue;                }                if (ConsoleKey.UpArrow == key.Key && false == bInputUserName)                {                    bInputUserName = true;                    Console.SetCursorPosition(left + 13, top + 4);                    Console.ForegroundColor = ConsoleColor.Black;                    Console.Write("____________________");                    Console.SetCursorPosition(left + 13, top + 4);                    Console.ForegroundColor = ConsoleColor.DarkGreen;                    Console.Write(strUser);                                        continue;                }                if (ConsoleKey.Enter == key.Key)                {                    if ("abc" == strUser && "123" == strPassword)                    {                        strUser = "";                        strPassword = "";                        return; // 本窗口处理结束                    }                    else                    {                        Console.ForegroundColor = ConsoleColor.Red;                        Console.SetCursorPosition(left + 7, top + 8);                        Console.Write("账号或密码错误,请重新输入!"); // 为加大破解难度,一般不会明确说明是账号错还是密码错                                               strUser = "";                        Console.SetCursorPosition(left + 13, top + 4);                        Console.ForegroundColor = ConsoleColor.Black;                        Console.Write("____________________");                                                strPassword = "";                        Console.SetCursorPosition(left + 13, top + 6);                        Console.ForegroundColor = ConsoleColor.Black;                        Console.Write("____________________");                                                Console.SetCursorPosition(left + 13, top + 4);                        bInputUserName = true;                        continue;                    }                }                if (ConsoleKey.Backspace == key.Key)                {                    if (true == bInputUserName)                    {                        Console.SetCursorPosition(left + 13, top + 4);                        Console.ForegroundColor = ConsoleColor.Black;                        Console.Write("____________________");                        Console.SetCursorPosition(left + 13, top + 4);                        if (strUser.Length > 0)                        {                            Console.ForegroundColor = ConsoleColor.DarkGreen;                            strUser = strUser.Remove(strUser.Length - 1);                            Console.Write(strUser);                            continue;                        }                        else                        {                            continue;                        }                    }                    else                    {                        Console.SetCursorPosition(left + 13, top + 6);                        Console.ForegroundColor = ConsoleColor.Black;                        Console.Write("____________________");                        Console.SetCursorPosition(left + 13, top + 6);                        if (strPassword.Length > 0)                        {                            Console.ForegroundColor = ConsoleColor.DarkGreen;                            strPassword = strPassword.Remove(strPassword.Length - 1);                            string strStar = new string('*', strPassword.Length);                            Console.Write(strStar);                            continue;                        }                        else                        {                            continue;                        }                    }                }                if (true == bInputUserName && strUser.Length >= 20) continue;                if (false == bInputUserName && strPassword.Length >= 20) continue;                if ( (key.KeyChar >= '0' && key.KeyChar <= '9')                    || (key.KeyChar >= 'A' && key.KeyChar <= 'Z')                    || (key.KeyChar >= 'a' && key.KeyChar <= 'z') )                {                    Console.ForegroundColor = ConsoleColor.DarkGreen;                                        if (true == bInputUserName)                    {                        strUser += key.KeyChar;                        Console.Write(key.KeyChar);                    }                    else                    {                        strPassword += key.KeyChar;                        Console.Write('*');                    }                }            }        }    }    class MainWindow    {        public void Show()        {            Console.ResetColor();            Console.Clear();            Console.SetCursorPosition(5, 5);            Console.Write("这是新的一页,只有当你的密码和用户都输入正确了才会进入这页,控制台程序要切换到新的页");            Console.Write("面,只需要Clear()一下就可以了,然后你就把它当作新的窗口来输出你想要的信息吧,");            Console.Write("本程序教会你怎样切换页面,怎样绘制一个漂亮的窗口,怎样严格的控制输入数据,以防止用户");            Console.Write("恶意输入过量数据导致界面被破坏,懂了这些以后,就自己去完成相应的功能吧,剩下的就是加");            Console.Write("入密码设置的功能和窗口交互代码,以及读取、写入文本文件等,这些就参考书上的知识吧,");            Console.Write("时间关系就不实现了,相信这些代码足够引领你入门了,示例的程序简化了从文件读取用户和密码");            Console.Write("的功能,仅简化的写成当用户为abc密码为123时就认为正确,而且一切从简,程序的逻辑结构也没");            Console.Write("有去好好设计,并不太好。现在光标被隐藏了,可按任意键结束这个程序吧……");        }    }    class Program    {        static void Main(string[] args)        {            LoginWindow loginWnd = new LoginWindow();            loginWnd.Show();            MainWindow mainWnd = new MainWindow();            mainWnd.Show();            Console.ReadKey();        }    }} 


[解决办法]

探讨

给你写了个示例程序,足够你完成这个程序了,登录和页面切换的功能全部实现了,其余的小功能限于时间,就不实现了,你自己参考一下吧,由于是示例,没有过多设计逻辑结构,代码结构有点冗余,运行后的示例图如下:

完整代码(一定要使用控制台的工程项目哦)
C# code

using System;
using System.Text;

namespace ConsoleLogin
{
c……

读书人网 >C#

热点推荐