1.定义公共类 实现序列化和反序列化
namespace Cinema
{
/// <summary>
/// 数据持久化类
/// </summary>
/// <typeparam name="T"></typeparam>
public class DataPersistence<T>
{
/// <summary>
/// 数据存放的完整路径
/// </summary>
public string DataPath { get; set; }
/// <summary>
/// 数据之久化路径
/// </summary>
/// <param name="dataName">文件名称</param>
public DataPersistence(string dataName)
{
DataPath = "Data\\" + dataName;
}
public DataPersistence()
{
}
/// <summary>
/// 序列化
/// </summary>
/// <param name="list">要序列化的对象集</param>
public bool Save(List<T> list)
{
bool result = true;
FileStream fs = null;
//检查路径Data是否存在,不存在则创建一个
if (!Directory.Exists("Data"))
{
Directory.CreateDirectory("Data");
}
try
{
fs = new FileStream(DataPath, FileMode.Create);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, list);
}
catch
{
result = false;
}
finally
{
fs.Close();
}
return result;
}
/// <summary>
/// 反序列化
/// </summary>
/// <returns></returns>
public List<T> Read()
{
List<T> list = new List<T>();
if (!File.Exists(DataPath))
{
return list;
}
FileStream fs = new FileStream(DataPath, FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
list = (List<T>)bf.Deserialize(fs);
fs.Close();
return list;
}
}
}
3.增加操作
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("影片名称不可为空!");
return;
}
List<Movie> Items = new List<Movie>();
Movie movie = new Movie();
movie.Name = textBox1.Text.Trim();
movie.Time = textBox2.Text.Trim();
movie.Director = textBox3.Text.Trim();
movie.Actor = textBox4.Text.Trim();
movie.Type = comboBox1.Text.Trim();
DataPersistence<Movie> op = new DataPersistence<Movie>("Movie");
Items = op.Read();
Items.Add(movie);
op.Save(Items);
if (op.Save(Items) == true)
{
MessageBox.Show("增加成功");
}
else
{
MessageBox.Show("增加失败");
}
}
3.修改操作
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("请输入用户名!");
return;
}
else if (textBox2.Text == "")
{
MessageBox.Show("请输入密码!");
return;
}
if (textBox2.Text != textBox3.Text)
{
MessageBox.Show("密码与确认密码请保持一致!");
return;
}
list=data.Read();
string UserName = this.textBox1.Text.Trim();
string pwd = this.textBox2.Text.Trim();
list[index].UserName=UserName;
list[index].Password=pwd;
data.Save(list);
bool result = data.Save(list);
if (result == true)
{
MessageBox.Show("修改成功");
}
else
{
MessageBox.Show("修改失败");
}
}
4.删除操作
private void btnDropMovie_Click(object sender, EventArgs e)
{
DeleteMovie deletemovie = new DeleteMovie();
DialogResult dResult = MessageBox.Show("确认删除吗?", "提示", MessageBoxButtons.OKCancel);
if (dResult == DialogResult.OK)
{
bool result = deletemovie.DropMovie(index);
if (result == true)
{
MessageBox.Show("删除成功");
}
else
{
MessageBox.Show("删除失败");
}
}
dataGridView1.DataSource = data.Read();
}