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

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

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

C#中关于系统用户信息持久化(接上文)的更多相关文章

  1. 菜鸟-手把手教你把Acegi应用到实际项目中(7)-缓存用户信息

    首先讲讲EhCache.在默认情况下,即在用户未提供自身配置文件ehcache.xml或ehcache-failsafe.xml时,EhCache会依据其自身Jar存档包含的ehcache-fails ...

  2. SharePoint 2013 数据库中手动更新用户信息

    在SharePoint的使用过程中,尤其是Windows认证的情况下,而且没有配置用户配置文件服务,经常会出现如果更新AD中的用户信息(包括名字.显示名.邮件等),SharePoint这边站点并不会更 ...

  3. 获取jwt(json web token)中存储的用户信息

    一个JWT实际上就是一个字符串,它由三部分组成,头部(header).载荷(Payload)与签名. Payload payload中可以保存用户的信息. var claims = new Claim ...

  4. SpringBoot中获取微信用户信息从未如此简单!

    前言 不知道你是否参加过拼多多上邀请微信好友砍价功能,这个功能实现首先需要考虑的就是获取微信用户的信息.获取用户信息就是获取公众号下微信用户的信息,今天我就来讲讲如何从公众号下获取微信用户信息. 需要 ...

  5. SpringSecurity如何在代码中获取认证用户信息

    ⒈ public Object getCurrentUser(){ return SecurityContextHolder.getContext().getAuthentication(); } ⒉ ...

  6. Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)

    本节内容主要是讲解ActivityManager的使用,通过ActivityManager我们可以获得系统里正在运行的activities,包括 进程(Process)等.应用程序/包.服务(Serv ...

  7. Centos-当前和过去登入系统用户信息-last

    last 获取当前和过去登入系统的用户相关信息,执行last指令的时候会默认读取/var/log/wtmp文件 相关参数 -a 把客户端IP显示到最后一列 -R 不显示客户端IP地址或主机名 -n 显 ...

  8. centos who命令 查看当前登录系统用户信息

    who 显示当前登录系统的用户,但w显示的更为详细 默认输出 [root@mysql ~]# who //用户名.登录终端.登录时间 root pts/ -- : (192.168.0.110) -a ...

  9. UWP 应用获取各类系统、用户信息 (1) - 设备和系统的基本信息、应用包信息、用户数据账户信息和用户账户信息

    应用开发中,开发者时常需要获取一些系统.用户信息用于数据统计遥测.问题反馈.用户识别等功能.本文旨在介绍在 Windows UWP 应用中获取一些常用系统.用户信息的方法.示例项目代码可参见 Gith ...

随机推荐

  1. eclipse tomcat路径更改后启动报错

      eclipse tomcat路径更改后启动报错 CreateTime--2018年5月3日14:48:22 Author:Marydon 1.情景还原 2.原因 本地的tomcat路径修改后,ec ...

  2. IP共享重新验证

    大家在进入共享机器的时候,在运行窗口中输入了 \\IP 然后会有账户和密码验证, 有时为了方便选择了记忆密码账号,这样下次就不会再验证了. 但是,有时你当时输入的账户没有你需要打开的某个文件的权限,就 ...

  3. HTTP协议是如何通信的

    一.什么是HTTP协议 HTTP协议是HyperText Transfer Protocol的缩写,即超文本传输协议.是由w3c(万维网联盟)制定的一种应用层协议,用来定义浏览器与web服务器之间如何 ...

  4. 机器学习中的 ground truth

    维基百科关于 ground truth的解释: [Ground truth] 大致为: 在统计学和机器学习中:在机器学习中ground truth表示有监督学习的训练集的分类准确性,用于证明或者推翻某 ...

  5. Python rstrip() 方法

    描述 Python rstrip() 方法用于删除字符串尾部指定的字符,默认字符为所有空字符,包括空格.换行(\n).制表符(\t)等. 语法 rstrip() 方法语法: S.rstrip([cha ...

  6. ThreadLocal 类说明

    1 ThreadLocal 不是一个线程,而是保存线程本地化对象的容器.当运行于多线程环境的某个对象使用 ThreadLocal 维护变量时,ThreadLocal 为每一个使用该变量的线程分配一个独 ...

  7. dubbo-admin 管理台的部署

    首先上传dubbo-admin的war包 参考链接: http://www.open-open.com/lib/view/open1454043410245.html

  8. ps液化

    ps液化画笔工具属性 画笔大小:顾名思义画笔大小.液化处理范围 画笔密度:推动画笔时扭曲效果范围.以圆心为出发点,随密度增大扭曲影响范围越大(圆半径大小),达到最大值时圆圈内像素都会发生扭曲.好比真实 ...

  9. IIS启用GZIP压缩js、css无效的原因及解决方法

    IIS启用GZIP压缩之后,原以为可以压缩所有文件了,包括html.CSS.JS.图片这些文件,但是当我检查的时候,发现并不是这样的,压缩的只有html文件,而CSS.JS并没有压缩 在卡卡网的网站速 ...

  10. 【Android】4.2 资源限定符和可视化选项

    分类:C#.Android.VS2015:创建日期:2016-02-06 在设计界面中,所有资源都可以被限定为使用哪个国家或地区的语言.例如,将字符串资源限定为默认使用中文等. 将字符串资源限定为默认 ...