C#程序简单通过txt文本实现数据存储

2 篇文章 0 订阅

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就可以在窗口中重新看到之前保存的数据了。

作为一个初学者分享一些学习到的东西,可能有很多不足,代码借鉴了很多大佬的分享。希望大家多提建议!

  • 15
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值