一个简单通讯录的c#设计尝试

具体设计程序文件请点击打开 c#简单通讯录设计  

一. 任务说明

本系统实现以下的具体功能

1.     通讯录中联系人的编辑

2.     联系人信息的添加

3.     联系人快速查找

4.     联系人信息的查看、修改、保存

二.软件设计

(1)主界面设计

通讯录的功能主要分为添加、查找、删除与修改这四个功能,因为查找和添加是最常用的功能,所以我把这两个功能单独列出来放到主界面上,把修改和删除合并成为在功能管理通讯录里,另外加上退出通讯录的功能就设计出如下图1.1.1所示的的程序主界面

图1.1.1

        主界面的主要代码截图如下图1.1.2

namespace 简单通讯录

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        private void button4_Click(objectsender, EventArgs e)

        {

            DialogResult Diares;

            MessageBoxButtons button =MessageBoxButtons.OKCancel;

            MessageBoxIcon icon =MessageBoxIcon.Warning;

            string ask = "你确定要退出通讯录吗?";

            string caption = "温馨提示";

            Diares = MessageBox.Show(ask,caption, button, icon);

            if (Diares == DialogResult.OK)

            {

                this.Close();

            }

        }

 

       private void button3_Click(object sender, EventArgs e)

        {

            Form 添加联系人 = newForm2();

            添加联系人.Show();

        }

 

        private void button2_Click(objectsender, EventArgs e)

        {

            Form 快速查找=newForm3();

           快速查找.Show();

        }

 

        private void button1_Click(objectsender, EventArgs e)

        {

            Form 管理通讯录 = newForm4();

            管理通讯录.Show();

        }

    }

}


                     

(2)管理通信录界面设计

      管理通讯录界面应实现的功能包括删除和修改,但是为了防止因为用户的错误操作引起的数据丢失不可恢复,所以应该像txt和word一样加上保存的功能,我设计的界面如下图1.2.1,在该窗口加载时系统会自动将通讯录.txt中的信息加载到表格listview1中,使用的方法如截图1.2.2所示,点击选中表格listView1中的项目和删除按钮后触发事件会删除选中的项目,这里支持多项同时删除,涉及主要代码如图1.2.3选中项目后点击修改按钮会是属性默认不可见的pannel1变得可见,pannel1包括四个标签四个文本框,一个确认修改按钮,点击确认修改会修改选中的项目,涉及的主要代码如截图1.2.4所示,点击保存按钮会保存用户所做的修改,如果用户做了修改而未保存,那么关闭管理通信录窗口时系统会询问用户是否保存未保存的修改,涉及的主要代码如截图1.2.5

  

namespace 简单通讯?录

{

    public partial class Form4 : Form

    {

        privateBoolean ischange =false;

        publicForm4()

        {

            InitializeComponent();

        }

        public void addlistviewitem(String[]a)

        {

            ListViewItemitem =new ListViewItem(a);

            listView1.Items.Add(item);

        }

        public void save()

        {

            FileStreamfs = new FileStream(@"通讯录.txt",FileMode.Create, FileAccess.Write);

            StreamWritersw = new StreamWriter(fs,Encoding.Default);

 

            for(int i = 0; i <this.listView1.Items.Count;i++)

            {

                sw.WriteLine(string.Format("{0}*&${1}*&${2}*&${3}",listView1.Items[i].SubItems[0].Text,

                   listView1.Items[i].SubItems[1].Text,listView1.Items[i].SubItems[2].Text,

                   listView1.Items[i].SubItems[3].Text));

            }

            sw.Close();

            fs.Close();

        }

 

 

        privatevoid Form4_Load(objectsender,EventArgs e)

        {

            //读取通讯录.txt中的每一行保存到a[]

                String[]a = File.ReadAllLines(@"通讯录.txt",Encoding.Default);

                for(int i = 0; i < a.Length; i++)

                {

                    string[]ax = a[i].Split(newString[]{ "*&$" },StringSplitOptions.None);

                    //分割通讯录的一行

                    addlistviewitem(ax);//调用方法,添加每一行到表格中

                }

          }

 

        privatevoid button2_Click(objectsender,EventArgs e)

        {

            ischange = true;

            for(int i = listView1.SelectedItems.Count - 1; i>= 0; i--)

            {

                ListViewItemitem = listView1.SelectedItems[i];

                listView1.Items.Remove(item);

            }

        }

 

        privatevoid button3_Click(objectsender,EventArgs e)

        {

            if(panel1.Visible == true)

            {

                panel1.Visible = false;

            }

            else

            {

                panel1.Visible = true;

            }

        }

 

        privatevoid button1_Click(objectsender,EventArgs e)

        {

            ischange = true;

            if(listView1.SelectedItems.Count >= 1)

            {

                ListViewItemitem = listView1.SelectedItems[listView1.SelectedItems.Count - 1];

                if(!textBox1.Text.Contains("*&$")&& !textBox2.Text.Contains("*&$")&& !textBox3.Text.Contains("*&$")&& !textBox4.Text.Contains("*&$"))

                {

                    if(textBox1.Text !="")

                    {

                        item.SubItems[0].Text =textBox1.Text;

                        item.SubItems[1].Text =textBox2.Text;

                        item.SubItems[2].Text =textBox3.Text;

                        item.SubItems[3].Text =textBox4.Text;

                        MessageBox.Show("修改成功");

                        textBox1.Clear();

                        textBox2.Clear();

                        textBox3.Clear();

                        textBox4.Clear();

                    }

                    MessageBox.Show("用户输入姓名不能为空");

                }

               else MessageBox.Show("修改失败,字符*&$不是系统定义的特殊字符,请重新输入");

      

            }

        }

 

        privatevoid Form4_FormClosing(objectsender,FormClosingEventArgs e)

        {

            if(ischange)

            {

                DialogResultresult=MessageBox.Show("发现你有未保存的修改,是否将修T改应用到通讯录?","提示信息",

                    MessageBoxButtons.YesNoCancel,MessageBoxIcon.Information);

                if(result == DialogResult.Cancel)

                {

                    e.Cancel = true;

                }

                elseif (result ==DialogResult.No)

                {

                    e.Cancel = false;

                }

                elseif (result ==DialogResult.Yes)

                {

                    save();

                    e.Cancel = false;

                }

            }

        }

 

        privatevoid button4_Click(objectsender,EventArgs e)

        {

            ischange = false;

            save();

 

        }

 

 

    }

}

 

 

(3)快速查找界面设计

查找功能包括一个简单的快速搜索方法,用户输入简单的名字信息,表格会自动跳转至用户想要找到的信息上,查找功能界面如下图1.3.1所示,实现搜索功能涉及的主要代码截图如下图1.3.2另外该界面加载时系统同样会将通讯录.txt内的信息加载到表格里,所使用方法同上,在这里不再描述

图1.3.1

private void searchbutton_Click(objectsender, EventArgs e)

       {

           ListViewItemfoundItem=listView1.FindItemWithText(textBox1.Text,false,0,true);

           if(foundItem!=null){

               listView1.TopItem=foundItem;

           }

           else{

               MessageBox.Show("没有找到信息");

               textBox1.Text = "";

           }

          

       }

       private void AddlistViewItem(String[] a)//向列表中添加项的方法

       {

            ListViewItem item = newListViewItem(a);

            listView1.Items.Add(item);

       }

 

       private void 快速查找_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(newString[] { "*&$" }, StringSplitOptions.None);

                //分割通讯录的一行

               AddlistViewItem(ax);//调用方法,添加每一行到表格中

            }

       }       

   }

}

图1.3.2

(4)添加界面设计

   添加界面的设计较为简单只包括四个供输入的文本框,四个标签,一个确定输入的按钮,如图1.4.1所示,用户输入功能要求用户输入的姓名不能为空电话必须为纯数字,对住址和性别的输入未作限制,同时系统使用字符“*&$”作为标记分隔用户的输入方便以后的读取,实现这些功能所涉及到的代码如图1.4.2所示,图1.4.3给出用户添加一些资料后,通讯录.txt的内容情况

图1.4.1

private void button1_Click(object sender, EventArgs e)

        {

           String s1 = textBox1.Text;

           String s2 = textBox2.Text;

           String s3 = textBox3.Text;

           String s4 = textBox4.Text;

            //这里将字符“*&$”作为分隔符号,,如果用户的输入包括了这个字符,系统会提示输入

            //不合法并跳过添加,让用户修改自己的输入

            if(!s1.Contains("*&$") && !s2.Contains("*&$")&& !s3.Contains("*&$") &&!s4.Contains("*&$"))

            {

               if (s1 != "")//用户输入的姓名不能为空

                {

 

                   String s1a = s1.Trim();

                   String s2a = s2.Trim();

                   String s3a = s3.Trim();

                   String s4a = s4.Trim();

                   s1 = s1a + "*&$";

                   s2 = s2a + "*&$";

                   s3 = s3a + "*&$";

                   s4 = s4a + Environment.NewLine;

                   String path = @"通讯录.txt";    //这里使用了绝对路径

                   File.AppendAllText(path, s1 + s2 + s3 + s4, Encoding.Default);

                    MessageBox.Show("添加成功");

                   textBox1.Clear();

                   textBox2.Clear();

                   textBox3.Clear();

                   textBox4.Clear();

               }

               else MessageBox.Show("用户输入姓名不能为空");

            }

            else

               MessageBox.Show("添加失败,字符“*&$”是系统定义的特殊字符,请用户不要使用");

 

        }

    }

  • 5
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值