C#无数据库登录窗体如何添加多组用户名密码登录信息?
当然可以!还能优化你的代码让它更高效
你的代码其实已经实现了多组用户的登录支持,但有几个小细节可以优化,让它更高效、更易用:
现有代码的小问题
- 每次点击登录按钮都会重新创建用户列表,有点浪费系统资源
- 使用
List<KeyValuePair>做登录校验时,是逐个遍历查找,用户数量多了之后校验速度会变慢
优化后的实现方案
首先把用户列表放到窗体类的成员变量里,并且改用Dictionary<string, string>(根据用户名快速查找密码,效率更高):
// 在你的窗体类里定义这个成员变量,只初始化一次 private readonly Dictionary<string, string> _validUsers = new Dictionary<string, string>() { {"ime1", "lozinka123"}, {"niko", "niko123"}, // 直接在这里添加新用户就行,格式就是 {"用户名", "密码"} {"test_user", "test_pass"}, {"admin", "admin_123"} };
然后修改登录按钮的点击事件代码,增加输入校验和更高效的判断逻辑:
private void button1_Click(object sender, EventArgs e) { // 先去除输入内容的前后空格,避免用户误输入空格导致登录失败 string inputUsername = txtUsername.Text.Trim(); string inputPassword = txtPassword.Text.Trim(); // 先判断是否为空输入,提升用户体验 if (string.IsNullOrWhiteSpace(inputUsername) || string.IsNullOrWhiteSpace(inputPassword)) { MessageBox.Show("Molimo unesite korisničko ime i lozinku!"); return; } // 用Dictionary的TryGetValue快速查找对应用户名的密码 if (_validUsers.TryGetValue(inputUsername, out string storedPassword)) { // 找到用户名后,再对比密码 if (storedPassword == inputPassword) { ucitavanje uczu = new ucitavanje(); uczu.Show(); this.Hide(); } else { MessageBox.Show("Vaše korisničko ime ili lozinka nisu točni! Pokušajte ponovno!"); } } else { MessageBox.Show("Vaše korisničko ime ili lozinka nisu točni! Pokušajte ponovno!"); } }
这样做的好处
- 效率更高:Dictionary的查找是O(1)时间复杂度,用户再多也能快速完成校验
- 更省资源:用户列表只在窗体初始化时创建一次,不用每次点击按钮都重新生成
- 扩展性好:要添加新用户,直接在
_validUsers里加新的键值对就行,非常方便 - 体验更好:增加了空输入判断,还处理了输入前后的空格,减少不必要的错误提示
如果以后你要连接数据库,只需要把从_validUsers获取密码的逻辑,换成从数据库查询用户密码的逻辑就可以了,过渡起来也很平滑。
内容的提问来源于stack exchange,提问作者trackgg
相关产品推荐
相关产品推荐

