C#中关于系统用户信息持久化(接上文)

首先传几张效果图描述一下功能:

C#中关于系统用户信息持久化(接上文)

C#中关于系统用户信息持久化(接上文)

C#中关于系统用户信息持久化(接上文)

经过上文用户名和密码的验证后,就到了添加用户这一步,登陆后的用户可以添加新的用户,被添加的用户可以登陆系统。

这里会用到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; }
    }
}

 

上一篇:美国意欲对伊朗关键基础设施发动大规模网络攻击


下一篇:[Erlang 0017]Erlang/OTP基础模块 proc_lib