C#中关于用户名和密码的验证问题。
本次练习的目的是使用LinQ to XML,正则表达式,明天在这个基础上练习使用序列化和反序列化,继续加点儿小功能。
首先,这是一个窗体程序,设计如下:

存放用户名和密码的XML如下:

实现的代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Linq; namespace CheckInfo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text == "请输入用户名,格式:qarootdc\\jqhuang")
{
textBox1.Text = "";
} } private void textBox2_TextChanged_1(object sender, EventArgs e)
{
if (textBox2.Text == "请输入密码")
{
textBox2.Text = "";
}
} private void button1_Click(object sender, EventArgs e)
{
if (isValidUserName(textBox1.Text) == false)
{
MessageBox.Show("用户名格式不正确!请重新输入!");
textBox1.Text = "";
}
else
{
//用户名格式正确.
CheckUserAndPwd(textBox1.Text,textBox2.Text);
}
} private void CheckUserAndPwd(string username, string pwd)
{
//读取UserInfo.xml检测user是否存在
XDocument userInfo = XDocument.Load(@"C:\Users\jqhuang\Desktop\UserInfo.xml");
var result = from userElement in userInfo.Element("System").Element("users").Elements() where userElement.Element("username").Value.ToString() == textBox1.Text.ToString() select userElement.Element("pwd").Value;
if (result != null)
{
foreach (var password in result)
{
if (password == pwd)
{
MessageBox.Show("用户名和密码匹配成功!");
}
else
{
MessageBox.Show("用户名和密码不匹配,请重新输入密码");
textBox2.Text = "";
}
}
}
else
{
MessageBox.Show("您输入的用户不存在!");
}
} bool isValidUserName(string userName)
{
return Regex.IsMatch(userName,@"^.+\\.+$");
}
}
}
运行效果图如下——
1、用户名不存在的情况:
/
2、用户名和密码不匹配的情况:

3、用户名格式不正确的情况(用正则表达式验证):

4、用户名和密码匹配成功的情况:

C#中关于用户名和密码的验证问题。的更多相关文章
- git 中添加用户名和密码
git 中添加用户名和密码:https://blog.csdn.net/qq_28602957/article/details/52154384 在使用git时,如果用的是HTTPS的方式,则每次提交 ...
- (三)spring Security 从数据库中检索用户名和密码
文章目录 配置 Druid 数据源 数据库 Mapper 文件 自定义 `UserDetailsService` 自定义登陆校验器 `AuthenticationProvider ` 配置 secur ...
- 如何修改SVN中的用户名和密码
删除掉C:\Users\Administrator\Application Data\Subversion\auth\svn.simple文件夹下的文件即可.再次访问时,会弹出要求输入用户名和密码. ...
- Android简易实战教程--第七话《在内存中存储用户名和密码》
首先是配置文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...
- java web实现在cookie中保存用户名和密码,用户自动登入
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- Git中保存用户名和密码
每次操作都需要输入用户名和密码感觉很繁琐,解决方法,在本地的工程文件夹的.git下打开config文件添加: [credential] helper = store 再输入一次用户名密码后就可 ...
- Sql 数据引擎中删除用户名、密码信息
SQl版本:Microsoft SQL Server 2008 R2 系统:Windows Server 2008 R2 Enterprise 删除文件为:SqlStudio.bin 删除星系路径:C ...
- 删除git中缓存的用户名和密码
我们使用Git命令去clone Gitlab仓库的代码时,第一次弹框提示输入账号密码的时候输错了,然后后面就一直拒绝,不再重复提示输入账号密码,怎么破? git报错信息 运行一下命令缓存输入的用户名和 ...
- 清除git中缓存的凭证(用户名及密码)
今天刚接触Git,还有Gitstack,然后在克隆Gitstack服务器上的仓库时出现了一直用户身份识别失败问题,找了一些大佬的文章才知道原因在于密码输入错误过多.那么如何重新输入呢? 需要清空本地的 ...
随机推荐
- .NET 垃圾回收机制要点整理
1. .NET资源分托管资源和非托管资源,对于托管资源,.NET GC可以很好的回收无用的垃圾,而对于非托管(例如文件访问,网络访问等)需要手动清理垃圾(显式释放). 2. 非托管资源的释放,.NET ...
- [译]为什么Vue不支持templateURL
原文链接 Vue的新用户最常问的一个问题,特别是以前使用Angular的用户,是"我可以使用" templateURL吗?这个问题我回答过很多次,现在写一个统一回复. 在Angul ...
- Mybatis中的@SelectKey注解
一.创建Maven项目 在pom.xml中,添加mybatis依赖,mysql-jdbc依赖,把编译版本改为1.8 你问,为啥mybatis不会自动依赖mysql-jdbc,需要手动写明?答:因为my ...
- C#中的Invoke和BeginInvoke
一.Control#Invoke() 和Control#BeginInvoke() 在非UI线程中调用MessageBox.Show()结果是非模态对话框: 在UI线程中调用MessageBox.Sh ...
- POJ 1364 King (差分约束)
King Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8660 Accepted: 3263 Description ...
- Python基本数据类型详细介绍(转)
1.空(None)表示该值是一个空对象,空值是Python里一个特殊的值,用None表示.None不能理解为0,因为0是有意义的,而None是一个特殊的空值.2.布尔类型(Boolean)在 Pyth ...
- 数据库分析函数 ROW_NUMBER() rank() dense_rank() 的区别 first_value(D) , last_value(D)
直接上图 select * from tab select B,ROW_NUMBER()over(order by B) from tab 当碰到相同数据时,排名按照记录集中记录的顺序依次递增. 遇 ...
- 转 web前端性能分析--实践篇
当我们知道了web前端性能的关键点后,那么接下来要做的就是如何去具体实施并获取这些关键点的数据了.通过前面的学习知道了不少好的工具,经过对比后个人觉得dynatrace还是不错的. 不仅支持ie,ff ...
- Linux递归解压缩一个目录下的全部文件
gunzip -r hongchangfirst/data 怎样递归删除那些剩余的非log结尾的文件? 先列出确认一下: find hongchangfirst/data -type f ! -nam ...
- C++ main函数命令行参数使用
1. C/C++语言中的main函数,经常带有参数argc,argv,如下: int main(int argc, char** argv) int main(int argc, char* argv ...