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; }
    }
}
时间: 2024-10-10 12:41:31

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

用户信息持久化解决方案

demo链接:http://pan.baidu.com/s/1pJYHfMN 做用户信息持久化最麻烦的就是沙盒存取,然后再给单例赋值,我将这些操作封装了一下,只需要传入KEY中包含所有属性的字典就行了,避免了繁琐的操作

Java中获取系统相关信息——sigar

一.sigar简介 sigar中文名是系统信息收集和报表工具,是一个开源的工具,提供了跨平台的系统信息收集的API,可以和绝大多数操作系统和大多数版本打交道,可以收集的信息包括: 1.操作系统的信息,包括:dataModel.cpuEndian.name.version.arch.machine.description.patchLevel.vendor.vendorVersion.vendorName.vendorCodeName 2.CPU信息,包括:基本信息(vendor.model.mh

用oracle中的系统用户无法登陆问题解决方案

在使用oracle中的sql plus功能时, 会出现系统用户无法登陆 因为SYS是数据库之外的超级管理员,在输入密码时,输入 密码 as sysdba 就可以;

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

在SharePoint的使用过程中,尤其是Windows认证的情况下,而且没有配置用户配置文件服务,经常会出现如果更新AD中的用户信息(包括名字.显示名.邮件等),SharePoint这边站点并不会更新的情况. 这时候,我们经常会操作数据进行更新操作,生产环境建议备份,测试环境也要多看几次update语句. 1.首先进入授权的用户组,看到我们的用户名,当AD中更新,这里的Name还是之前的名字,如下: 2.鼠标放到名字上,可以看到Url链接地址,这时候我们需要ListId和ID,ListId是用

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

⒈ 1 public Object getCurrentUser(){ 2 return SecurityContextHolder.getContext().getAuthentication(); 3 } ⒉ 1 public Object getCurrentUser(Authentication authentication){ 2 return authentication; 3 } 如果不想拿到全部得认证用户信息,可以使用如下方式 ⒈ 1 public Object getCurre

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

应用开发中,开发者时常需要获取一些系统.用户信息用于数据统计遥测.问题反馈.用户识别等功能.本文旨在介绍在 Windows UWP 应用中获取一些常用系统.用户信息的方法.示例项目代码可参见 Github: https://github.com/validvoid/UWP-SystemInfoCollector 由于涉及内容较多,故本文会分为多篇展开.本篇介绍获取设备和系统的基本信息.应用包信息.用户数据账户信息和用户账户信息. 原博客阅读地址:http://validvoid.net/uwp-

Linux下用于查看系统当前登录用户信息的4种方法

作为系统管理员,你可能经常会(在某个时候)需要查看系统中有哪些用户正在活动.有些时候,你甚至需要知道他(她)们正在做什么.本文为我们总结了4种查看系统用户信息(通过编号(ID))的方法. 1. 使用w命令查看登录用户正在使用的进程信息 w命令用于显示已经登录系统的用户的名称,以及他们正在做的事.该命令所使用的信息来源于/var/run/utmp文件.w命令输出的信息包括:?用户名称 ?用户的机器名称或tty号 ?远程主机地址 ?用户登录系统的时间 ?空闲时间(作用不大) ?附加到tty(终端)的

linux中用户信息及密码相关知识

在linux中若修改用户信息.密码,组群信息.密码等.其实是在修改/etc/passwd,/etc/shadow,/etc/group,/etc/groupshadow等文件的内容. 这四个文件的意思分别是: 用户帐号信息文件.用户口令文件.用户组信息文件.用户组口令信息文件 具体内容可以分别打开看看.都是文本文件.结构清晰 这里具体说说口令信息文件. shadow文件(包括用户口令和组口令文件)个人认为可以这样理解: 它原本其实是并不存在的.就是说它并不是随着用户的操作而同时产生的. 这个文件

微信小程序实现获取用户信息并存入数据库操作示例

微信小程序获取用户信息简单,但是在存入自己服务器数据库的过程中研究了一天多的时间,并且网上搜索不到该资源,故发出来供大家参考. index.js ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 Page({  data: {   nickNam