实现相仿QQ记住密码的功能
实现类似QQ记住密码的功能
RememberUser类,记住用户,但采用的是二进制的方式保存数据
这样,界面就可以很容易调用该类实现记住密码的功能。
记住用户的密码,一般浏览器都有这个功能,基于C/S结构的软件实现这个功能也有很多方法,这里采用简单的文件流保存用户名及密码的方法来实现这个功能。
Person类,模拟用户
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LMSys.Model { /// <summary> /// 用户基类 /// </summary> [Serializable] public class Person { #region 属性 /// <summary> /// 用户名 /// </summary> string userName; public string UserName { get { return userName; } set { userName = value; } } /// <summary> /// 密码 /// </summary> string userPassword; public string UserPassword { get { return userPassword; } set { userPassword = value; } } /// <summary> /// 权限 /// </summary> int power; public int Power { get { return power; } set { power = value; } } #endregion } }
RememberUser类,记住用户,但采用的是二进制的方式保存数据
using LMSys.Model; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.Serialization.Formatters.Binary; using System.Text; using System.Threading.Tasks; namespace LMSys.BLL { public class RememberUser { private static Dictionary<string, Person> persons = new Dictionary<string, Person>(); /// <summary> /// 构造函数,读取文件流 /// </summary> public RememberUser() { FileStream fs = new FileStream("Data.bin", FileMode.OpenOrCreate); if (fs.Length > 0) { BinaryFormatter bf = new BinaryFormatter(); persons = bf.Deserialize(fs) as Dictionary<string, Person>; } fs.Close(); } /// <summary> /// 返回保存的用户列表 /// </summary> /// <returns></returns> public Dictionary<string, Person> GetList() { return persons; } /// <summary> /// 添加新用户 /// </summary> /// <param name="person"></param> public void AddRemember(Person person) { FileStream fs = new FileStream("Data.bin", FileMode.Create); BinaryFormatter bf = new BinaryFormatter(); if (persons.ContainsKey(person.UserName))//若已存在用户,先移除该用户 { persons.Remove(person.UserName); } persons.Add(person.UserName, person);//再添加该用户,防止用户密码更新 bf.Serialize(fs, persons); fs.Close(); } } }
这样,界面就可以很容易调用该类实现记住密码的功能。