控制台应用程序问题,求解答
就是
我要创建一个用登录的操作
怎么来实行跳转,
就是用户名和密码正确后,
跳转到另外的操作页面。
还有
怎么来注册用户,把用户和它的密码储存在某个文件中,验证时就调用这个文件中的用户来验证
[解决办法]
验证成功后你只需要在控制台输出一行文字,就行了,然后再读取几个字符,就是下一步操作,如果验证不通过,直接退出程序就完了,
[解决办法]
问题好多呀!
怎么来实行跳转,看你要跳转到哪!
另外的操作页面是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(); } }}
[解决办法]