具体设计程序文件请点击打开 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("添加失败,字符“*&$”是系统定义的特殊字符,请用户不要使用");
}
}