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 ...
随机推荐
- 〖Linux〗clang3.4的编译与安装
1. 编译与安装clang3.4 sudo apt-get install -y g++ subversion cmake cd ~ mkdir Clang && cd Clang s ...
- logging日志管理-将日志写入文件
# -*- coding: cp936 -*- # test.py #http://blog.chinaunix.net/uid-27571599-id-3492860.html #logging日志 ...
- shell之“>/dev/null 2>&1”
shell之“>/dev/null 2>&1” http://ixdba.blog.51cto.com/2895551/526442 今天在自己的一个技术群中又被问道了这么一个问题 ...
- Loadrunner脚本回放 场景运行过程中常见错误分析
问题一:Loadrunner超时错误问题描述 Loadrunner超时错误:在录制Web协议脚本回放时超时情况经常出现,产生错误的原因也有很多,解决的方法也不同. 问题现象Error -27728: ...
- 理解并使用.NET 4.5中的HttpClient(转)
原文地址:http://www.cnblogs.com/wywnet/p/httpclient.html HttpClient介绍HttpClient是.NET4.5引入的一个HTTP客户端库,其命名 ...
- mysql中内存的使用与分配
mysql的内存分配,是调优的重中之重,所以必须搞清楚内存是怎么分配的 mysql> show global variables like '%buffer%'; +-------------- ...
- 【C++】const成员函数
形式: 在成员函数后面加上const限定词,表示不会修改对象内容. 例如Circle类: class Circle { double r; public: Circle(double newr) { ...
- jsp处理表单上传图片(commons-fileupload-1.2.2.jar,commons-io-2.4.jar)
upload.jsp <%@ page language="java" import="java.util.*" pageEncoding="U ...
- iOS拦截导航栏返回按钮事件的正确方式
当我们使用了系统的导航栏时,默认点击返回按钮是 pop 回上一个界面.但是在有时候,我们需要在点击导航栏的返回按钮时不一定要 pop 回上一界面,比如一个视频播放界面,进入横屏后,默认点击返回按钮仍然 ...
- FA_固定资产六大业务增加、修改、报废、在建、折旧、盘点概述(概念)
2014-06-04 Created By BaoXinjian