搜索
查看: 1139|回复: 0

【奇思妙想】用C#编写通讯录

[复制链接]

203

主题

579

帖子

2217

积分

金牌会员

Rank: 6Rank: 6

积分
2217
发表于 2014-1-20 16:05:57 | 显示全部楼层 |阅读模式
软件设计内容

1.1设计构思

通讯录系统主要功能用户的登录以及数据的维护。
用户登录:在数据库里设置user表,对具有用户名和密码的人方可访问数据库中其他数据。
数据的维护:包括数据的查询、添加、修改、删除的功能,对数据库中联系人进行各种操作。
1.2软件功能的验收标准

一、有较为美观简洁大方的菜单,能保证用户方便、直观、快捷的熟悉并使用软件的各项功能。
二、要求设计并实现一个通讯录管理工具软件,管理用户通信联系人的名片信息。名片包含的主要信息有:姓名、职务、单位、固定电话、手机、E-Mail、QQ、MSN、备注等。
三、系统要有一定的可靠性。
1.3系统功能总流程图


1.4软件功能说明

1、用户登录
该系统为私人所用,所以只有在ListView表中存在的用户名及密码可以登录该系统,可以防止载入的联系人信息被非法利用。
2、添加联系人
此功能是添加新的数据,把所需添加的联系人信息输入到数据库中的ListView表中,为以后使用做准备
3、查找联系人
此功能是根据姓名查找表中存在的联系人各种信息,为后面的各种操作做准备。
4、修改联系人
此功能是把查出的联系人的各种信息做修改,并保存在数据库中的ListView表中。
5、删除联系人
此功能是把ListView表中存在的某条不需要的信息删除。
1.5开发及运行环境

本系统开发平台及运行环境如下:
系统开发平台:Microsoft Visual Studio 2010
系统开发语言:C#
运行平台:Windows XP (SP2) / Windows2000 (SP4) / Windows Server 2003 (SP1)
运行环境:Microsoft.NET Framework 4.0
主要技术设计


2.1 名片文件操作的实现技术

检测文件是否存在:System.IO.File.Exists(@"D:\通讯录存档\Cards.txt")
写文件:System.IO.File.AppendAllText(@"D: \通讯录存档\Log.txt", string.Format(Text));
读文件:将txt读取的信息放入str字符串中,再用Split方法将信息拆分,得到所需的数据
[csharp] view plaincopy

       
  • private int File_Search()      
  •         {      
  •             StreamReader sr = new StreamReader(@"D: \通讯录存档\Cards.txt");      
  •             String line;      
  •             int Cards_Num = 0;      
  •       
  •       
  •             richTextBox1.Clear();      
  •             while ((line = sr.ReadLine()) != null)      
  •             {      
  •                richTextBox1.Text += "\r"+line.ToString();      
  •             }      
  •             string str = richTextBox1.Text;//将txt读取的信息放入str字符串中      
  •       
  •       
  •             Part = str.Split(new Char[] { ',', '\r' }, StringSplitOptions.RemoveEmptyEntries);      
  •             for (int i = 0; i < str.Length; i++)      
  •             {      
  •                 if (str == 13)      
  •                     Cards_Num++;      
  •             }      
  •             return Cards_Num - 1;      
  •         }  


2.2 通讯录内存的表示结构

根据题目要求,定义结构体,本系统没有用到链表。
[csharp] view plaincopy

       
  • public struct Information      
  • {      
  •     public string Name;      //定义-名字      
  •     public string Short_Name;//定义-缩写      
  •     public string Sex;       //定义-性别      
  •     public string Job;       //定义-工作      
  •     public string Apartment; //定义-单位      
  •     public string Moblie_Phone;//定义-手机      
  •     public string QQ;        //定义-QQ      
  •     public string Telephone; //定义-电话      
  •     public string E_Mail;    //定义-Email      
  •     public string Note;      //定义-备注      
  • }      
  • Information user1;//user1的结构体  

2.3 人机交互的设计技术

在主窗体中主要用到两个控件分别为TreeView 和ListView,其中TreeView用来显示用户设置的好友分组,ListView用来显示好友的部分信息,姓名、职务、单位、固定电话、手机、E-Mail、QQ、MSN、备注等。
主窗体界面如下:
菜单toolStrip1上有【创建用户】,【删除用户】,【修改用户】三个基本按钮;还有【Cards存档】,【Log查看】两个文件读写按钮,还有一个【快速添加】名片按钮,便于调试时操作,tablepage页面切换,显示清爽。
2.4 模糊匹配查找设计技术

在搜索框内进行搜索,按Enter键进行检索,将要被检索的字符串遍历Listview中的所有数据,找到相同的字符串即弹出用户信息检索结果。
[html] view plaincopy

       
  • private void Search_User(object sender, KeyEventArgs e)      
  •         {      
  •             if (e.KeyCode == Keys.Enter)//Enter按下开始搜索      
  •             {      
  •                 //MessageBox.Show(toolStripComboBox1.Text);      
  •                 for (int i = 0; i < Record_Num; i++)      
  •                 {      
  •                     try      
  •                     {      
  •                         if (listView1.Items.SubItems[0].Text == toolStripComboBox1.Text)      
  •                         {      
  •                        MessageBox.Show("用户:" + listView1.Items.SubItems[0].Text + "\r\n"+      
  •                                        "职务:" + listView1.Items.SubItems[1].Text + "\r\n"+      
  •                                        "单位:" + listView1.Items.SubItems[2].Text + "\r\n"+      
  •                                        "固定电话:"+listView1.Items.SubItems[3].Text+ "\r\n"+      
  •                                        "手机:" + listView1.Items.SubItems[4].Text + "\r\n"+      
  •                                        "E_mail:" + listView1.Items.SubItems[5].Text + "\r\n"+      
  •                                        "QQ:" + listView1.Items.SubItems[6].Text + "\r \n","通讯录",MessageBoxButtons.OK,MessageBoxIcon.Information);      
  •                             return;      
  •                         }      
  •                     }      
  •                     catch      
  •                     {      
  •                         MessageBox.Show("未知错误");      
  •                         return;      
  •                     }      
  •                 }      
  •                 MessageBox.Show("查无此人");      
  •             }      
  •         }  

详细设计


3.1 名片/日志文件的设计

在Cards.txt文件中以逗号的方式隔开单条名片的数据,以回车键隔开每条名片之间的数据。
具体格式如下:
曾小贤,主持人,电视台,1234,18042000000,zengxiaoxian@126.com,350123456,好男人就是他,
关谷神奇,画家,卧室,0577-82633864,18042003467,guangu@qq.com,997630690,曾经是个苦逼的厨师,
陆展博,程序员,某IT公司,0571-82672874,18042000002,Luzhanbo@qq.com,185743125,热血青年,
……
在Log.txt文件以回车键隔开每条操作日志。
具体格式如下:
2012/9/8 18:47:39通讯录开始运行.....
2012/9/8 18:47:47登录,学号:10192214
2012/9/8 18:50:13创建新用户[方舟子],先生
2012/9/8 18:50:56关闭软件
3.2 系统启动的设计

老用户登入主要是将用户在登入界面输入的学号与数据库用户表中的信息比对,如果是第二次登陆,则登录按钮显示“老用户登录”。

3.3 添加名片的设计


   
3.4名片查询的设计


在搜索框内进行搜索,按Enter键进行检索,将要被检索的字符串遍历Listview中的所有数据,找到相同的字符串即弹出用户信息检索结果。
3.5 删除名片的设计


3.6 添加退出的设计

在Form1窗体的属性里添加了Formclosed事件,用于获取关闭软件的时间。
[csharp] view plaincopy

       
  • private void Form_Closed(object sender, FormClosedEventArgs e)      
  • {      
  •             Write_In_File("Log", "\r\n" + DateTime.Now.ToString() + "关闭软件");      
  • }  

参考文献


[1] 马俊,郑逢斌,沈夏炯.C#应用高级编程.人民邮电出版社,2006.
[2] 刘杰,胡芳霞,陈发吉.C#案例开发.中国水利水电出版社,2005
[3] 汪孝宜,湖海璐,米海生.信息系统开发实例精粹(C#版).电子工业出版社,2007
[4] 余安萍,俞俊平,孙志华.C#程序设计教程.电子工业出版社,2002



原文转自林凌鹏 blog
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|EEFOCUS

论坛已做迁移,有相关技术资料和问题讨论可以到电路城对应版块(“模拟/电源”)
X

GMT+8, 2019-10-22 10:27 , Processed in 0.115657 second(s), 8 queries , MemCache On.

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表