m0_70986083 2023-05-05 14:47 采纳率: 100%
浏览 21
已结题

c#窗体程序个人通讯录

求按姓名模糊查询和按性别模糊查询的代码,以及(增删改的代码,我的代码运行一点开就乱码了)
删除所选联系人代码:

        private void button2_Click(object sender, EventArgs e)
        {
            string name = textBox1.Text;
            string filePath = dizhi;
            string tempFilePath = Path.GetTempFileName();
            using (StreamReader reader = new StreamReader(filePath))
            {
                using (StreamWriter writer = new StreamWriter(tempFilePath))
                {
                    string line;
                    while ((line = reader.ReadLine()) != null)
                    {
                        string[] parts = line.Split(',');
                        if (parts[0] != name)
                        {
                            writer.WriteLine(line);
                        }
                    }
                }
            }
            File.Delete(filePath);
            File.Move(tempFilePath, filePath);
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
            textBox4.Text = "";
            textBox5.Text = "";
            using (StreamReader reader = new StreamReader(dizhi, Encoding.Default))
            {
                string line = null;
                listBox1.Items.Clear();
                while ((line = reader.ReadLine()) != null)
                {
                    string[] lineArray = line.Split(',');
                    listBox1.Items.Add(lineArray[0]);
                }
            }
        }

新增:

 private void button3_Click(object sender, EventArgs e)
        {
            using (StreamWriter writer = new StreamWriter(dizhi, true, Encoding.Default))
            {
                string line = textBox1.Text + "," + textBox2.Text + "," + textBox3.Text + "," + textBox4.Text + "," + textBox5.Text;
                writer.WriteLine(line);
            }
            using (StreamReader reader = new StreamReader(dizhi, Encoding.Default))
            {
                string line = null;
                listBox1.Items.Clear();
                while ((line = reader.ReadLine()) != null)
                {
                    string[] lineArray = line.Split(',', ',', ',', ',');
                    listBox1.Items.Add(lineArray[0]);
                }
            }
        }

修改:

private void button4_Click(object sender, EventArgs e)
        {
            string name = textBox1.Text;
            string sex = textBox2.Text;
            string home = textBox3.Text;
            string phone = textBox4.Text;
            string qq = textBox5.Text;
            string filePath = dizhi;
            string tempFilePath = Path.GetTempFileName();
            using (StreamReader reader = new StreamReader(filePath))
            {
                using (StreamWriter writer = new StreamWriter(tempFilePath))
                {
                    string line;
                    while ((line = reader.ReadLine()) != null)
                    {
                        string[] parts = line.Split(',');
                        if (parts[0] != name)
                        {
                            writer.WriteLine(line);
                        }
                    }
                }
            }
            File.Delete(filePath);
            File.Move(tempFilePath, filePath);
            using (StreamWriter writer = new StreamWriter(dizhi, true, Encoding.Default))
            {
                string line = textBox1.Text + "," + textBox2.Text + "," + textBox3.Text + "," + textBox4.Text + "," + textBox5.Text;
                writer.WriteLine(line);
            }
            using (StreamReader reader = new StreamReader(dizhi, Encoding.Default))
            {
                string line = null;
                listBox1.Items.Clear();
                while ((line = reader.ReadLine()) != null)
                {
                    string[] lineArray = line.Split(',', ',', ',', ',');
                    listBox1.Items.Add(lineArray[0]);
                }
            }
        }

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-05 16:08
    关注
    • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7808096
    • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C#窗体应用利用文本框对数据库一行多个数据进行增、删、该、查相关语句代码
    • 除此之外, 这篇博客: C# 构造函数和析构函数中的 构造函数和析构函数是C#类中的一块,具体的作用和定义,百度,这里只用代码说一下一些具体的区别。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    •  

          public class ABC //一个随意的自定义类
          {
              private double a;
              public double A
              {
                  get { return a; }
                  set
                  {
                      a = value;
                      Console.WriteLine("A={0}", a);
                  }
              }
              public ABC()
              {
                  Console.WriteLine("构造函数ABC被触发");
              }
              ~ABC()
              {
                  Console.WriteLine("构析函数ABC~被触发");
              }
          }
          
          class Program
          {
              static void Main(string[] args)
              {
      
                  ABC _abc;
      
                  Console.WriteLine("A有了,按任意键初始化A");
                  Console.ReadLine();
      
                  _abc = new ABC() { A = 12 };//初始化对象并赋一个值
      
      
      
      
                  Console.WriteLine("按任意键,清除A的值");
                  Console.ReadLine();
      
      
                  _abc = null;//释放A所占的内存
      
      
                  if (_abc == null)
                      Console.WriteLine("A==null");
                  else
                      Console.WriteLine("A的值为:{0}", _abc.A);
                  Console.WriteLine("按任意键,回收A");
                  Console.ReadLine();
      
      
                  GC.Collect();//启动垃圾回收机制,回收不需要的对象A
                  Console.ReadLine();
              }
          }

      上述代码说明:

      1.构造函数在类实例化的时候被触发

      2.析构函数在类被回收的时候触发

          class Program
          {
              static void Main(string[] args)
              {
      
                  Third third = new Third();
                  third = null;
                  GC.Collect();
      
                  Console.ReadLine();
              }
          }
      
          public  class First                     // 基类First
          {
              public First()
              {
                  Console.WriteLine("~First()构造函数");
              }
              ~First()                    // 析构函数
              {
                  Console.WriteLine("~First()析构函数");
              }
          }
          public class Second : First            // Second类从First类派生
          {
              public Second()
              {
                  Console.WriteLine("~Second()构造函数");
              }
              ~Second()                   // 析构函数
              {
                  Console.WriteLine("~Second()析构函数");
              }
          }
          public class Third : Second            // Third类从Second类派生
          {
              public Third()
              {
                  Console.WriteLine("~Third()构造函数");
              }
              ~Third()                    // 析构函数
              {
                  Console.WriteLine("~Third()析构函数");
              }
          }

      上述代码说明:

      1.子类的生成和回收会触发父类的构造函数和析构函数

      2.构造函数的调用从父类开始,二析构函数则相反

       

    • 您还可以看一下 王翔老师的毕业设计精品课之基于C#企业员工管理系统实战讲解课程中的 毕业设计 员工管理系统 功能介绍小节, 巩固相关知识点
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月23日
  • 已采纳回答 5月15日
  • 创建了问题 5月5日

悬赏问题

  • ¥15 远程访问linux主机超时
  • ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例
  • ¥15 CPU卡指令整合指令数据都在图片上
  • ¥15 火车票关联12306问题
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算