【C#】制作通讯录

C#制作通讯录

在这里插入图片描述

功能说明

<1>四个功能:添加、删除、修改、查找
<2>添加功能:单击添加功能,从弹窗中添加数据,该功能主要是对文件进行操作,因此添加完listview不会显示新添加的数据,关闭弹窗,单击主界面更新按钮,列表就会显示出刚刚添加的条目(一次添加一条数据)

在这里插入图片描述

<3>删除功能,直接对文件进行操作实现删除功能,该功能实时显示,单击数据项并删除后,listview内和文件内数据同时删除

在这里插入图片描述

<4>修改功能:选中一行记录,单击修改功能, 主窗口跳出修改的组件,在组件内修改后单击更新按钮,listview内数据更新,该操作实现的是对listview的操作,关闭页面后,提示是否应用到通讯录,单击是,对应TXT文件内数据会更新,单击否,则更改不会保存到TXT文件

在这里插入图片描述

<5>查找功能:单击查找按钮,跳出查找的弹窗,输入关键字进行实时检索,系统匹配数据项,只要包含输入的关键字的数据项都会被检索出来显示在列表内

在这里插入图片描述

缺陷总结
<1>没有严格控制输入格式,如手机号码尾数不等于11||6时提示输入有误;
<2>子窗口添加数据项没有在父窗口实时显示,借助了更新按钮;
<3>查找listview内数据项和加载txt文件内数据项到listview内基本是遍历的思想,大型工程不合适

Form_main.cs
在这里插入图片描述

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace exam
{
    public partial class Form_main : Form
    {

        private Boolean ischange = true;
        public Form_main()
        {
            InitializeComponent();
        }
        public void addlistviewitem(String[] a)
        {
            ListViewItem item = new ListViewItem(a);
            listView1.Items.Add(item);
        }
        //保存
        public void save()
        {
            FileStream fs = new FileStream(@"通讯录.txt", FileMode.Create, FileAccess.Write);
            StreamWriter sw = new StreamWriter(fs, Encoding.Default);
            for (int i = 0; i < this.listView1.Items.Count; i++)
            {
                sw.WriteLine(string.Format("{0}|{1}|{2}", listView1.Items[i].SubItems[0].Text,
                    listView1.Items[i].SubItems[1].Text, listView1.Items[i].SubItems[2].Text));
            }
            sw.Close();
            fs.Close();
        }

        private void Form_main_Load(object sender, EventArgs e)
        {
            //读取通讯录.txt中的每一行保存到a[]中
            String[] a = File.ReadAllLines(@"通讯录.txt", Encoding.Default);
            for (int i = 0; i < a.Length; i++)
            {
                string[] ax = a[i].Split(new String[] { "|" }, StringSplitOptions.None);
                //分割通讯录的一行
                addlistviewitem(ax);//调用方法,添加每一行到表格中
            }
        }

        private void toolStrip_delete_Click(object sender, EventArgs e)
        {
            ischange = true;
            for (int i = listView1.SelectedItems.Count - 1; i >= 0; i--)
            {
                ListViewItem item = listView1.SelectedItems[i];
                listView1.Items.Remove(item);
            }
            save();
        }


        private void toolStrip_add_Click(object sender, EventArgs e)
        {
            Form_add Form_Add = new Form_add();
            Form_Add.Show();

        }

        private void toolStrip_search_Click(object sender, EventArgs e)
        {
            Form_search form_Search = new Form_search();
            form_Search.Show();
        }
        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {

            if (panel1.Visible == true)
            {
                panel1.Visible = false;
            }
            else
            {
                panel1.Visible = true;
            }

        }
        private void toolStripButton_edit_Click(object sender, EventArgs e)
        {
            if (panel1.Visible == true)
            {
                panel1.Visible = false;
            }
            else
            {
                panel1.Visible = true;
            }
        }

        private void button_update_Click(object sender, EventArgs e)
        {
            ischange = true;
            if (listView1.SelectedItems.Count >= 1)
            {
                ListViewItem item = listView1.SelectedItems[listView1.SelectedItems.Count - 1];
                if (!textBox_name.Text.Contains("|") && !textBox_class.Text.Contains("|") && !textBox_Tel.Text.Contains("|"))
                {

                    if (textBox_name.Text != "")
                    {
                        item.SubItems[0].Text = textBox_name.Text;
                        item.SubItems[1].Text = textBox_class.Text;
                        item.SubItems[2].Text = textBox_Tel.Text;
                        save();
                        MessageBox.Show("修改成功");
                        textBox_name.Clear();
                        textBox_class.Clear();
                        textBox_Tel.Clear();
                        MessageBox.Show("请选中一行需要修改的数据");
                    }
                }
                else MessageBox.Show("修改失败,字符“|不是系统定义的特殊字符,请重新输入");
            }
        }
        
        /*private void button_save_Click(object sender, EventArgs e)
        {
            ischange = true;
            save();
        }*/

        private void listView1_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count == 0)
                return;
            else
            {
                ListViewItem item = listView1.SelectedItems[0];
                textBox_name.Text = item.SubItems[0].Text;
                textBox_class.Text = item.SubItems[1].Text;
                textBox_Tel.Text = item.SubItems[2].Text;
            }
        }

        private void button_update_Click_1(object sender, EventArgs e)
        {
            ischange = true;
            if (listView1.SelectedItems.Count >= 1)
            {
                ListViewItem item = listView1.SelectedItems[listView1.SelectedItems.Count - 1];
                if (!textBox_name.Text.Contains("|") && !textBox_class.Text.Contains("|") && !textBox_Tel.Text.Contains("|"))
                {

                    if (textBox_name.Text != "")
                    {
                        item.SubItems[0].Text = textBox_name.Text;
                        item.SubItems[1].Text = textBox_class.Text;
                        item.SubItems[2].Text = textBox_Tel.Text;
                        MessageBox.Show("修改成功");
                        textBox_name.Clear();
                        textBox_class.Clear();
                        textBox_Tel.Clear();
                        MessageBox.Show("请选中一行需要修改的数据");
                    }
                }
                else MessageBox.Show("修改失败,字符“|不是系统定义的特殊字符,请重新输入");
            }
        }

        private void Form_main_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (ischange)
            {
                DialogResult result = MessageBox.Show("是否应用到通讯录", "提示信息",
                    MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);
                if (result == DialogResult.Cancel)
                {
                    e.Cancel = true;
                }
                else if (result == DialogResult.No)
                {
                    e.Cancel = false;
                }
                else if (result == DialogResult.Yes)
                {
                    save();
                    e.Cancel = false;
                }
            }
        }

        private void toolStripButton_update_Click(object sender, EventArgs e)
        {
       
                                    //读取通讯录.txt中的每一行保存到a[]中
            String[] a = File.ReadAllLines(@"通讯录.txt", Encoding.Default);
                for (int i = a.Length-1; i < a.Length; i++)
                {
                    string[] ax = a[i].Split(new String[] { "|" }, StringSplitOptions.None);
                    //分割通讯录的一行
                    addlistviewitem(ax);//调用方法,添加每一行到表格中
                }
        }
    }
        /* private void toolStripButton_update_Click(object sender, EventArgs e)
         {
           
            //listView1.Items.Clear();//每次点击事件后将ListView中的数据清空,重新显示
            //读取通讯录.txt中的每一行保存到a[]中
            String[] a = File.ReadAllLines(@"通讯录.txt", Encoding.Default);
            for (int i = 0; i < a.Length; i++)
            {
                string[] ax = a[i].Split(new String[] { "|" }, StringSplitOptions.None);
                //分割通讯录的一行
                addlistviewitem(ax);//调用方法,添加每一行到表格中
            }
        }*/

    }

Form_add.cs
在这里插入图片描述

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace exam
{
    public partial class Form_add : Form
    {

        public Form_add()
        {
            InitializeComponent();
        }

        private void Form_add_Load(object sender, EventArgs e)
        {

        }

     private void btn_add_Click(object sender, EventArgs e)
        {
            
            String s1 = textBox_name.Text;
            String s2 = textBox_class.Text;
            String s3 = textBox_Tel.Text;
            //这里将字符“|”作为分隔符号,,如果用户的输入包括了这个字符,系统会提示输入
            //不合法并跳过添加,让用户修改自己的输入
            if (!s1.Contains("|") && !s2.Contains("|") && !s3.Contains("|"))
            {
                if (s1 != "")//用户输入的姓名不能为空
                {

                    String s1a = s1.Trim();
                    String s2a = s2.Trim();
                    String s3a = s3.Trim();
                    s1 = s1a + "|";
                    s2 = s2a + "|";
                    s3 = s3a + Environment.NewLine; ;
                    String path = @"通讯录.txt";    //这里使用了绝对路径
                    File.AppendAllText(path, s1 + s2 + s3, Encoding.Default);
                    MessageBox.Show("添加成功");
                   
                    textBox_name.Clear();
                    textBox_class.Clear();
                    textBox_Tel.Clear();
                }
                else MessageBox.Show("用户输入姓名不能为空");
            }
            else
                MessageBox.Show("添加失败,字符“*&$为无效值");
        }
       
    }
}

Form_search.cs
在这里插入图片描述

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Collections;

namespace exam
{
    public partial class Form_search : Form
    {
        public Form_search()
        {

            InitializeComponent();
        }

       /* private void searchbutton_Click(object sender, EventArgs e)
        {
            //ListViewItem foundItem=listView1.FindItemWithText(textBox1.Text,true,0,true);

        }*/
        private void AddlistViewItem(String[] a)//向列表中添加项的方法
        {
            ListViewItem item = new ListViewItem(a);
            listView1.Items.Add(item);
        }
        private void LoadList()
        {
            //读取通讯录.txt中的每一行保存到a[]中
            String[] a = File.ReadAllLines(@"通讯录.txt", Encoding.Default);
            for (int i = 0; i < a.Length; i++)
            {
                string[] ax = a[i].Split(new String[] { "|" }, StringSplitOptions.None);
                //分割通讯录的一行
                AddlistViewItem(ax);//调用方法,添加每一行到表格中
            }
        }
        private void search(string key)
        {
            string[] strArr = File.ReadAllLines(@"通讯录.txt", Encoding.Default);
            ArrayList findText = new ArrayList();
            foreach (string str in strArr)
            {

                if (str.IndexOf(key) != -1)
                {
                    findText.Add(str);
                }
            }
            
            listView1.Items.Clear();
            foreach (string str in findText)
            {
                string[] ax = str.Split(new String[] { "|" }, StringSplitOptions.None);
                //分割通讯录的一行
                AddlistViewItem(ax);
            }
        }

        private void Form_search_Load(object sender, EventArgs e)
        {
            LoadList();
        }

        private void textBox1_TextChanged_1(object sender, EventArgs e)
        {
            search(textBox1.Text);
        }
    }
}

源码下载
https://download.csdn.net/download/qq_42253057/18810949

  • 8
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我无法访问外部链接。但是我可以为您提供一些关于C#通讯录管理系统的基本信息。 在C#中开发通讯录管理系统,您可以使用Windows窗体(WinForms)来创建用户界面,并使用SQL Server数据库来存储和管理联系人信息。 以下是一个简单的示例,展示了如何使用C#和SQL Server创建通讯录管理系统: 1. 创建数据库表 在SQL Server中创建一个名为"Contacts"的表,包含以下列:ID(主键,自增),FirstName,LastName,PhoneNumber和Email。 2. 创建WinForms应用程序 使用Visual Studio或其他C#开发工具创建一个新的WinForms应用程序。 3. 设计用户界面 在WinForms应用程序中设计用户界面,包括添加、编辑、删除和搜索联系人的功能。您可以使用文本框、按钮和数据网格视图等控件来实现这些功能。 4. 连接到数据库 在C#代码中,使用ADO.NET或Entity Framework等技术连接到SQL Server数据库。您可以使用连接字符串来指定数据库的位置和凭据。 5. 实现功能 在C#代码中,实现添加、编辑、删除和搜索联系人的功能。您可以使用SQL查询语句来执行数据库操作,例如插入、更新和删除数据。您还可以使用查询语句来搜索联系人并将结果显示在数据网格视图中。 6. 测试和调试 运行应用程序并测试各种功能。确保联系人的添加、编辑、删除和搜索功能正常工作,并且数据正确地保存在数据库中。 请注意,以上只是一个简单的示例,您可以根据自己的需求和技术水平进行更复杂的开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值