C#程序简单通过txt文本实现数据存储
功能将通过一个简单的.net平台下的winform程序实现:
主窗口界面如下
winform程序基于《C#程序设计经典教程(第3版)》清华大学出版社P106页实验:
C#
设计一个窗体程序,定义一个Student类,
包含学号和姓名两个字段,并定义一个班级类Grade,该类包括一个Student集合,使用索引器访问该集合,实现添加查询功能
由于可能很多初学者在学习中尚未引入数据库相关知识和概念,在设计简单的信息管理程序中不知道如何保存 数据,在本实验中数据存储全部通过类成员来存储,就导致在程序关闭后引起数据丢失,因此我就引入通过txt文本文档对程序中的数据进行存储,实现一个类似数据库的功能。
让程序可以通过txt文本实现对程序数据的一个导入和导出。
在窗口中设计两个读取写入按钮
保存按钮代码:
private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
{
string ss=null;
if (i != 0)
{
//保存文档命名
string str1 = Interaction.InputBox("保存的数据名", "保存", "文本内容", -1, -1);
//打开文件夹选择窗口
System.Windows.Forms.FolderBrowserDialog dialog = new System.Windows.Forms.FolderBrowserDialog();
dialog.Description = "请选择文件夹";
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
if (string.IsNullOrEmpty(dialog.SelectedPath))
{
MessageBox.Show("文件夹路径不能为空", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
return;
}
//获取文件夹路径
ss = dialog.SelectedPath + "\\";
}
//删除旧文件防止数据重复
System.IO.File.Delete(ss + str1 + ".lly");
for (int ii = 0; ii < i; ii++)
{
//在新建文件中逐行添加数据
string str = st1[ii].sno + " " + st1[ii].name + " " + st1[ii].chinese.ToString() + " " + st1[ii].math.ToString() + " " + st1[ii].english.ToString() + "\n";
System.IO.File.AppendAllText(ss+str1+".lly", str);
}
}
}
注: string str1 = Interaction.InputBox("保存的数据名", "保存", "文本内容", -1, -1);
的作用是弹出一个输入框,我用str1来接收输入的内容,在.net中要使用这段代码的话需要引入一个Microsoft.VisualBasic;,或者自己重新设计一个输入窗口也是可以的。
文档中生成的.lly后缀是我自己弄的,改成txt就行。
读取按钮代码:
private void 读取ToolStripMenuItem_Click(object sender, EventArgs e)
{
//清除当前的类数据成员保存的数据
st1 = new Student[100];
gr = new Grade();
//打开文件选择窗口
OpenFileDialog dialog = new OpenFileDialog();
dialog.Multiselect = false;//该值确定是否可以选择多个文件
dialog.Title = "请选择文件夹";
dialog.Filter = "lly文件(*.lly)|*.lly";//限制选择文件类型,其实我这里的lly都是txt
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
// 读入所有行
string[] lines = File.ReadAllLines(dialog.FileName);
// 点列表集合
int ii = 0;
for (ii = 0; ii < lines.Length; ii++)
{
string line = lines[ii];
// 以空格拆分行
string[] v = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
//将每一行的数据用于创建新的Student
st1[ii] = new Student(v[0], v[1], double.Parse(v[2]), double.Parse(v[3]), double.Parse(v[4]));
gr.Add(st1[ii]);
}
i = ii;
MessageBox.Show("导入成功");
Updata();
//txt文档中的所有数据已经显示在窗口程序中的DataGridView中了
}
}
展示功能效果如下
先在系统中录入几组数据如下
此时以上的这些数据都是存储在st1这个数组当中的,此时如果关闭程序的话,数据就全部清空,因此下一步执行保存操作:
在这里我选择把文档保存在桌面,可以看见桌面已经出现了保存的文档
打开TEST1可以看见对应数据,同时按照格式对其进行编辑也可以让窗口程序对其进行读取
关闭程序之后再重新打开,数据已经清空,进行读取操作选择之前保存的TEST1就可以在窗口中重新看到之前保存的数据了。
作为一个初学者分享一些学习到的东西,可能有很多不足,代码借鉴了很多大佬的分享。希望大家多提建议!