首先传几张效果图描述一下功能:
经过上文用户名和密码的验证后,就到了添加用户这一步,登陆后的用户可以添加新的用户,被添加的用户可以登陆系统。
这里会用到C#中的“正则表达式”对用户名格式进行判断,以及“LinQ to XML”的技术将用户信息添加到本地XML文件中进行持久化。
PS:关于文中注释掉的部分——
//调用序列化方法. //SerializeUser(AddUserNameText.Text.ToString(), AddUserPwdText.Text.ToString());
可以对用户输入的用户信息(用户名和密码)进行序列化并将结果存储到本地XML文件中。
在此是作为对C#序列化部分知识的一个简单练习,并没有用到本次实践中。
窗体设计如下:
窗体程序代码如下:
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.Serialization; using System.IO; using System.Xml; using System.Xml.Linq; namespace CheckInfo { public partial class AddUserForm : Form { public AddUserForm() { InitializeComponent(); } private void textBox1_Click(object sender, EventArgs e) { if (AddUserNameText.Text == "请输入用户名,格式为domain\\user") { AddUserNameText.Text = ""; } } private void textBox2_Click(object sender, EventArgs e) { if (AddUserPwdText.Text == "请输入密码") { AddUserPwdText.Text = ""; } } private void button1_Click(object sender, EventArgs e) { validateUserName(AddUserNameText.Text.ToString()); } private void validateUserName(string userName) { if (Regex.IsMatch(userName, @"^.+\\.+$") == true) { MessageBox.Show("用户名格式正确,准备存入档案!"); if (AddUserPwdText.Text == "") { MessageBox.Show("密码不能为空!"); } else { //调用序列化方法. //SerializeUser(AddUserNameText.Text.ToString(), AddUserPwdText.Text.ToString()); //调用添加user到xml方法. string xmlPath = @"C:\Users\jqhuang\Desktop\UserInfo.xml"; saveToXml(xmlPath); } } else { MessageBox.Show("用户名格式不正确,请重新输入!"); AddUserNameText.Text = ""; } } private void saveToXml(string xmlPath) { //Load XML文件. XElement xe = XElement.Load(xmlPath); //创建一个节点信息. XElement user = new XElement("user", new XAttribute("customer", "yes"), new XElement("username", AddUserNameText.Text.ToString()), new XElement("pwd", AddUserPwdText.Text.ToString()) ); //添加节点信息到XML文件中指定的节点下. xe.Element("users").Add(user); //保存XML文件. xe.Save(xmlPath); } public static void SerializeUser(string userName,string passWord) { //序列化对象到XML. User user = new User { username = userName, pwd = passWord }; StringWriter sw = new StringWriter(); XmlSerializer serializer = new XmlSerializer(typeof(User)); serializer.Serialize(sw, user); sw.Close(); FileInfo xmlFile = new FileInfo(@"C:\Users\jqhuang\Desktop\Users.xml"); StreamWriter sr = new StreamWriter(@"C:\Users\jqhuang\Desktop\Users.xml",true); sr.Write(sw); sr.Close(); } } }
public class User { string UserName; string PassWord; public string username { get { return UserName; } set { UserName = value; } } public string pwd { get { return PassWord; } set { PassWord = value; } } }