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; }
}
}
C#中关于系统用户信息持久化(接上文)的更多相关文章
- 菜鸟-手把手教你把Acegi应用到实际项目中(7)-缓存用户信息
首先讲讲EhCache.在默认情况下,即在用户未提供自身配置文件ehcache.xml或ehcache-failsafe.xml时,EhCache会依据其自身Jar存档包含的ehcache-fails ...
- SharePoint 2013 数据库中手动更新用户信息
在SharePoint的使用过程中,尤其是Windows认证的情况下,而且没有配置用户配置文件服务,经常会出现如果更新AD中的用户信息(包括名字.显示名.邮件等),SharePoint这边站点并不会更 ...
- 获取jwt(json web token)中存储的用户信息
一个JWT实际上就是一个字符串,它由三部分组成,头部(header).载荷(Payload)与签名. Payload payload中可以保存用户的信息. var claims = new Claim ...
- SpringBoot中获取微信用户信息从未如此简单!
前言 不知道你是否参加过拼多多上邀请微信好友砍价功能,这个功能实现首先需要考虑的就是获取微信用户的信息.获取用户信息就是获取公众号下微信用户的信息,今天我就来讲讲如何从公众号下获取微信用户信息. 需要 ...
- SpringSecurity如何在代码中获取认证用户信息
⒈ public Object getCurrentUser(){ return SecurityContextHolder.getContext().getAuthentication(); } ⒉ ...
- Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)
本节内容主要是讲解ActivityManager的使用,通过ActivityManager我们可以获得系统里正在运行的activities,包括 进程(Process)等.应用程序/包.服务(Serv ...
- Centos-当前和过去登入系统用户信息-last
last 获取当前和过去登入系统的用户相关信息,执行last指令的时候会默认读取/var/log/wtmp文件 相关参数 -a 把客户端IP显示到最后一列 -R 不显示客户端IP地址或主机名 -n 显 ...
- centos who命令 查看当前登录系统用户信息
who 显示当前登录系统的用户,但w显示的更为详细 默认输出 [root@mysql ~]# who //用户名.登录终端.登录时间 root pts/ -- : (192.168.0.110) -a ...
- UWP 应用获取各类系统、用户信息 (1) - 设备和系统的基本信息、应用包信息、用户数据账户信息和用户账户信息
应用开发中,开发者时常需要获取一些系统.用户信息用于数据统计遥测.问题反馈.用户识别等功能.本文旨在介绍在 Windows UWP 应用中获取一些常用系统.用户信息的方法.示例项目代码可参见 Gith ...
随机推荐
- Android中onTouch与onClick事件的关系
这几天遇到点关于Android的触摸事件相关的,还跟onClick有关.暂且记下: LinearLayout分别设置了onTouchListener,onClickListener,onLongCli ...
- Log4net的配置-按照日期+文件大小混合分割
ender name="DebugAppender" type="log4net.Appender.RollingFileAppender"><fi ...
- SQL Server死锁排查经历 -基于SqlProfiler
提到sql server,想必最让人头疼的当属锁机制了.在默认的read committed隔离模式下,连最基本的select操作都要申请各种粒度的锁,而且在读取数据过程中会不断有锁升级.转化.在非 ...
- 转载【小程序】: 微信小程序开发---应用与页面的生命周期
App App() App() 函数用来注册一个小程序.接受一个 object 参数,其指定小程序的生命周期函数等. object参数说明: 属性 类型 描述 触发时机 onLaunch Functi ...
- mysql优化利器之explain
一.语法 {EXPLAIN | DESCRIBE | DESC} tbl_name [col_name | wild] {EXPLAIN | DESCRIBE | DESC} [explain_typ ...
- Swing(Java)--维基百科
Swing是一个为Java设计的GUI工具包.Swing是Java基础类的一部分.Swing包括了图形用户界面(GUI)组件如:文本框,文本域,按钮,分隔窗格和表. Swing提供许多比AWT更好的屏 ...
- pandas 的数据结构Series与DataFrame
pandas中有两个主要的数据结构:Series和DataFrame. [Series] Series是一个一维的类似的数组对象,它包含一个数组数据(任何numpy数据类型)和一个与数组关联的索引. ...
- SecureCRT 详细使用教程和技巧
SecureCRT 常用技巧 0.在secureCRT里切换不同的窗口:ctrl+tab. 复制:[ctrl] + [shift] + c 粘贴:[ctrl] + [shift] + v ...
- 经纬度 lbs 笔记
string Lat = objRequest.HeadLat.ToString(); 纬度 string Lng = objRequest.HeadLng.T ...
- [MFC]图形附加alpha透明通道
改动图形而且附加透明通道: 要附加透明度,能够要把图片转化为32位png图片,然后设置对应的alpha值: 1. 怎样把一张图片改动为32位的Png: a) 读取原图片颜色信息 ...