记住用户的密码,一般浏览器都有这个功能,基于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();
}
}
}
这样,界面就可以很容易调用该类实现记住密码的功能。