admin 管理员组文章数量: 887021
2024年2月7日发(作者:img是什么意思呢)
通讯录管理系统
绪论
在时代不断发展的今天,很多东西都在不断的进步,当然,信息的发展也在不断的随着进步起来,因此,我们所要研究的课题信息管理系统也在向我们缓缓走来,并且涉及到很多的领域,以至于涉及到很多的方面,从大的来讲可以涉及到公司企业的系统的管理,从小的方面来讲可以涉及到单个人的联系方式的管理等等,并且随着时代不断的发展,还会涉及到更多的领域。
1引言
1.1课题简介:所谓通讯录管理系统,其实就是在世界上 的每个社会上的成员作为用户来说,在他的通讯录的联系人存储中保存他所有联系人的信息的管理,以及时一个管理信息的系统。它所管理的内容对于每一个用户来说都是非常非常重要的 ,所以,这个所谓的通讯录管理系统必须能够具有很多很强的功能,其中包括对我们所需要的信息必须是完整的,当然对我们也必须是非常有用 的,并且它还应该具有随时并且很快查询出我们所要信息的功能,从而用户使用的一个合理的,提供了很大的方便。
1.2开发的意义: 当今我们面临着科技的一直提高,计算机科学技术已经逐渐趋向成熟,网上通讯工具的迅速发展,它的功能如此强大以至于已经被人们深刻认识,并且它已经逐渐开始走进人类的社会,与此同时它的地位也在很多的领域发挥着很到的作用。单纯的从计算机这个方面来说,由于这个领域还很小,所以要使用它来实现我们所需的铜须路的 管理,具有太多别的方式不能达到的优点,其中这些优点包括很快的检查速度、便利的查找、存储的容量要足够大、意思安全性也要很强、但所需的费用必须合理,尽可能的很低等等。这些优点使得通讯录管理的效率得到了很大的提高。所以从以上的分析可以看出,要开发这样一套软件来管理我们的系统 这件事是很有必要的,因此,我感觉这也是锻炼我在将理论运用到现实社会生活中的一次实际的考验,有很大的意义。我也希望通过本次的涉及能让我达到学为所用,从而让我的学习成为有意义,成为有价值的一种时间上的付出。
1.3开发环境及实现技术
1.3.1开发环境:Visual studio 2005,SQL severe
1.3.2开发工具简介:
Visual Studio 2005(以下简称为VS 2005)是一种很新的开发工具,并且这种工具是由美国的 微软公司开发出来的,这种最新的版本具有很多的全新功能,其中这种新的功能体现在很多方面在语言方面的强化,并且它的贡献也有很多,其中更好的执行就是它所提供的一种效能,并且在安全这方面也有了很大提高,他已经成为一种编程环境,并且这种环境的功能是很强大的,也是具有很高端 效率的,提供了一种统一的并且集成的环境,它还能够支持很多种编程语言在同样的开发环境编写新程序并且对所编写的应用程序进行调试并加以部署。它是一种全套的并且完整的提供开发的工具集,用于生成 Web应用程序, 并且它还是一个完全的能够面向对象的一种新型的开发平台。
SQL Severe也就是:数据库管理系统(DBMS),并且它是由Microsoft公司开发和推广的,但是在刚刚开始的时候它是由好几个公司在一起共同开发的,版本也随着时代和技术的发展而不断的更新。
其中数据库(DB)是存放数据 的仓库,只不过这些数据存在一定 的关联,并按一丁的格式存放在计算机内。简单的说,数据并不仅仅只是单纯的、数字的数据,它还包括文本的内容,当然还有很多例如视频等这些动态的数据。而数据库管理系统(DBMS)是一种系统,并且这种系统的功能是用来管理数据库,还可以根据数据的模型来组织数据,它还包括很多的 功能,例如:数据的定义、1
操作、是否完整无缺的检查以及是否具有隐私的保护等等。
2 系统的分析与设计
2.1系统开发的目标和思想
本系统主要根据我们人类在日常的 社会生活中对实际联系人管理的运用而进行开发设计的.其目的是为了方便人们管理联系人通讯工作的需要,提高数据存储的可靠性,并且方便存储和查询、搜索等一系列的操作。在这个简单的基础上还要设计好一个可以供我们人类正常使用的界面.因此要做很多的设计,例如将我们每个人通讯录里的联系人进行分类以及一些信息的处理等功能。
2.2系统的可行性研究和需求分析
(一)可行性研究
通讯录管理系统在我们实际应用中非常广泛,其中很多的功能都很齐全也很强大。它不仅是新老同学联系的桥梁,也是和家人沟通慰问的一种亲情便利工具,而且还是自我娱乐的好方式。通讯录管理系统的功能一般包括:增添、修改、删除、搜索、查看及生成等功能。实现的功能概括为用于注册用户,包括家人和朋友;还提供注册用户的个人资料进行修改;对于用户的联系,方便联系人之间的查找;可以对于自己的家人和朋友做进一步的资料获得;用户可以对他们所有的联系人的基本资料作相应的改动,包括删除等功能。不过它在一些方面还是会存在一些不完善的地方,不过通过努力和深入探究一定会在短时间内弥补这些缺点,提高质量,完善功能。以便系统能有效完成,实行更多的功能,从而能够给用户带来方便。可行性研究的目的就是判断其是否可行,关键是能否在最短的时间以耗资最少为基础来实现其是否可以解决问题。其中可行性主要包括以下三个方面:
(1)技术上的可行性研究:因为与本次所设计的系统相似的管理方面的 系统这方面的 开发设计已经有一定的时期,也有很多次成功,所以在技术这些方面的基础已经很牢固,因而技术上的准备应该不会存在什么大问题。
(2)经济上的可行性研究:因为该系统的规模是比较小的 ,所以在经济方面也是在可以接接受 的范围。
(3)操作的可行性研究:对于我们所研究的这个问题以至于这类的问题,我们应该现提出问题,然后分析,最后解决之后再反复研究,以便最后保证系统的正常运行。
(二)需求分析
通讯录管理涉及用户信息、联系人信息等数据管理。如果仅仅从管理这方面来说可以把通讯录的内容分为三类:联系人分类、联系人信息管理。该系统的信息管理包括对联系人的增添、修改、删除、搜索、查看等操作,它还应该具有很多的功能,包括: 对不同的用户登录设置想要的登录权限和方法、可以查看联系人信息 的情况等。
3通讯录管理系统设计
★ 首先简单介绍一下的存储类型:
(1)无结构(2)有结构, 无层次的数据 (3)有层次的数据:XML 文档等等
3.1系统概要设计
3.1.1功能模块分析
本系统将实现很多的功能,具体功能如下图:
2
通讯录管理系统用户管理用户登录添加联系人修改联系人删除联系人查找联系人
3.1.2数据库设计
注:1.数据库名、表名、字段名用英文,以防编码错误。2.字段名尽量不要与关键字重名。如重名,用[]将字段名括起来
★ 表的结构:
表名:Users。
作用:保存一些信息,这些信息都包括所要进行登录操作的用户的用户名和密码。如下图所示:
表名:ATTN。
作用:保存我们在我们联系的范围内的人的一些信息。如下表所示:
★ 表的关系:
在我们设计的这个系统中两个表之间的关系如图所示:
3
用户PK
用户名密码联系人数量最大值组别数量最大值PKFK1
联系人编号用户名组别姓名工作单位联系电话电子邮箱照片
连接数据库的相关代码:
connectionString="Data Source=localhostsqlexpress;initial Catalog=PhoneBook;Integrated Security=True;Pooling=False" providerName="ent" /> connectionString="Data Source=localhostsqlexpress;initial Catalog=PhoneBook;Integrated Security=True;Pooling=False" providerName="ent" /> 3.2制作“用户管理”窗体 4 任务实现:通过一系列 的实现从而创建所要的窗体 3.3 制作“用户登录”窗体 3.3.1设计用户登录界面 3.3.2 任务实现 (1)窗体布局 5 23145678 (2)窗体布局说明 用户登录窗体布局说明: 编号 1 2 3 4 5 6 7 8 控件名称 panel1 pictureBox1 lblTitle pictureBox2 txtUserName txtPassword btnOK btnCancel 控件类型 Panel PictureBox Label PictureBox TextBox TextBox Button Button 说明 用于布局,Dock属性为Top 登录图片 标题 分隔图片 用户名文本框 密码文本框 确定按钮 取消按钮 (3)窗体功能描述: a 登录窗体的目的是为了验证所要登录的用户的身份,这个窗体使我们进入系统所看到的第一个界面。 b当用户输入用户名和密码后,通过确定这一按钮 的判断,可以查询得知所要登录的用户是否正确,是否可以进入接下来的窗体的界面。 (4)处理流程图 6 ★创建窗体 static void Main() { VisualStyles(); patibleTextRenderingDefault(false); (new Form1()); } 改为 static void Main() { VisualStyles(); patibleTextRenderingDefault(false); (new frmLogin()); } 相关代码 1) 单击“取消”按钮 关闭窗体即退出。 2) 单击“确定”按钮验证文本框内容、验证用户 以下是用户登录成功或失败的相关代码: try { //检测文本框内容 if (() == "" || () == "") { ("用户名和密码不能为空!","登录失败7 ",,); return; } //验证用户 SqlConnection conn = new SqlConnection(); tionString= tings["ConnectionString"];; (); string sql = "select count(*) from 用户 where 用户名='"+()+"' and 密码='"+()+"'"; SqlCommand cmd = new SqlCommand(); tion=conn; dText=sql; int result = 32(eScalar()); (); if (result == 1) { //登录成功 frmMain f = new frmMain(); = (); (); (); } else { ("用户名和密码错误!", "登录失败", , ); return; } } catch (Exception ee) { ("发生错误/r/n"+e, "登录失败", , ); return; } 3.4 制作“主操作”窗体 3.4.1 总体设计 (1)窗体布局 8 123465 (2)主窗体布局: 编号 1 2 3 4 5 6 控件名称 menuStrip1 toolStrip1 trvGroup lvContact statusStrip1 splitter1 控件类型 MenuStrip ToolStrip TreeView ListView StatusStrip Splitter 菜单栏 工具栏 联系人分组信息 联系人详细信息 状态栏(添加三个面板) 分隔条 说明 (3) 窗体功能描述 : 我们所设计的这个管理系统的主窗体是整个系统的主要部分,也是将各个窗体联系在一起的一个嫁 接,如果用户找不到每个操作的入口的话,就可以通过主窗体来实现。 (4) 处理流程图 : 9 加载联系人分组信息分组数量>0Y加载当前分组的联系人信息N等待用户命令添加命令修改命令删除命令查找命令视图命令加载添加联系人窗体加载修改联系人窗体删除联系人加载查找联系人窗体修改视图模式 3.4.2 Load设计方法实现 流程: 10 有关LoadGroup方法在我们的系统中的应用:设计分析与实现: 1、功能:在我们所设计的表中可以查到当前用户的一些基本的信息,然后把这些信息以TreeView结点的信息添加到其左边。 2设计思路: 将我们所设计的系统将其与数据库连接起来,将我们的所以联系人的所以详细信息添加到SqlDataReader对象中,然后把它的一个方法当成一个条件组成一个循环,并且将所有 的信息都添加进去。 3 TreeView控件: 11 a TreeView主要属性 : 名称 ImageIndex ImageKey ImageList Nodes 说明 获取或设置树节点显示的默认图像的图像列表索引值。 获取或设置 TreeView 控件中的每个节点在处于未选定状态时的默认图像的键。 获取或设置包含树节点所使用的 Image 对象的 ImageList。 获取分配给树视图控件的树节点集合。 SelectedImageIndex 获取或设置当树节点选定时所显示的图像的图像列表索引值。 SelectedImageKey SelectedNode ShowLines ShowPlusMinus 获取或设置 TreeNode 处于选定状态时显示的默认图像的键。 获取或设置当前在树视图控件中选定的树节点。 获取或设置一个值,用以指示是否在树视图控件中的树节点之间绘制连线。 获取或设置一个值,用以指示是否在包含子树节点的树节点旁显示加号 (+) 和减号 (-) 按钮。 名称 说明 展开所有树节点。 已重载。 检索位于指定位置的树节点。 检索分配给树视图控件的树节点数(可以选择性地包括所有子树中的树节点)。 b TreeView主要方法: ExpandAll GetNodeAt GetNodeCount d TreeView主要事件: 名称 AfterCheck AfterSelect 在选中树节点复选框后发生。 在选定树节点后发生。 说明 4 SqlDataReader的简单介绍 : a 主要属性 : 名称 Depth FieldCount HasRows IsClosed Item RecordsAffected VisibleFieldCount 说明 获取一个值,用于指示当前行的嵌套深度。 获取当前行中的列数。 获取一个值,该值指示 SqlDataReader 是否包含一行或多行。 : 检索一个布尔值,该值指示是否已关闭指定的 SqlDataReader 实例。 已重载。 获取以本机格式表示的列的值。 获取执行 Transact-SQL 语句所更改、插入或删除的行数。 获取 SqlDataReader 中未隐藏的字段的数目。 g主要方法: 12 名称 Close GetBoolean GetByte GetChar 关闭 SqlDataReader 对象。 获取指定列的布尔值形式的值。 获取指定列的字节形式的值。 获取指定列的单个字符串形式的值。 说明 GetDateTime 获取指定列的 DateTime 对象形式的值。 GetDecimal GetDouble GetFloat GetInt32 GetName 获取指定列的 Decimal 对象形式的值。 获取指定列的双精度浮点数形式的值。 获取指定列的单精度浮点数形式的值。 获取指定列的 32 位有符号整数形式的值。 获取指定列的名称。 GetSqlValue 获取一个表示基础 SqlDbType 变量的 Object。 GetString GetValue IsDBNull NextResult Read 获取指定列的字符串形式的值。 获取以本机格式表示的指定列的值。 获取一个值,该值指示列中是否包含不存在的或已丢失的值。 当读取批处理 Transact-SQL 语句的结果时,使数据读取器前进到下一个结果。 使 SqlDataReader 前进到下一条记录。 使用流程 1.定义SqlConnection对象 2.定义SqlCommand对象 3.打开SqlConnection对象 4.通过执行流程中 的第二条对象的ExecuteReader方法,返回一个相应的对象。 5.使用while循环,读取返回结果列表的每一行 6.在我们所需要循环的循环体内,通过基于该字段的类型和属性这些来岳阳相应的方法,从而得到每个所需字段的 值。 7.对获取的数据进行处理 8.关闭SqlDataReader对象 9.关闭SqlConnection对象 3.4.3 主操作窗体中删除操作和搜素操作实现的相关代码 (1)实现删除联系人操作的相关代码: private void Delete() { if ( < 1) { return; } if (("是否要删除选中的联系人?", "删除确认", , on) == ) { string strWhere = " where 编号 in ("; foreach (ListViewItem lvi in edItems) { 13 strWhere += ng() + ","; } strWhere = ing(0, - 1); strWhere += ")"; try { SqlConnection conn = new SqlConnection(strConn); SqlCommand cmd = new SqlCommand(); tion = conn; dText = "delete from 联系人 " + strWhere; (); eNonQuery(); (); LoadGroup(); if ( > 0) { edNode = [0]; LoadList(); } else { (); } } catch { } } } (2)实现搜素联系人操作的相关代码: private void frmSearch_Load(object sender, EventArgs e) { = 82; try { SqlConnection conn = new SqlConnection(strConn); SqlCommand cmd = new SqlCommand("select 姓名,联系电话 from 联系人 where 用户名='"+strUserName+"'", conn); SqlDataAdapter sda = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); (ds); foreach(DataRow dr in [0].Rows) { (dr["姓名"].ToString()); (dr["联系电话"].ToString()); } 14 } Catch { }.5 设计“新增联系人”窗体 3.5.1 窗体界面设计 1:窗体布局 1 2 3 4 5 2窗体布局说明 编号 1 2 3 4 5 6 7 8 9 10 tabControl1 txtName cmbGroup txtPhone panel1 btnOK btnCancel txtCompany txtEmail pic 8 10 9 6 7 控件名称 控件类型 TabControl TextBox ComboBox TextBox Panel Button Button TextBox TextBox PictureBox 说明 选项页控件,用于显示多个选项卡 联系人姓名文本框 联系人分组下拉列表 联系人电话文本框 用于布局。Dock属性为Bottom 确定按钮 取消按钮 联系人公司文本框 联系人电子邮箱文本框 联系人姓名文本框 3窗体功能描述 :经我们想要添加的联系人的一些基本信息填写进去,必须要填的不能为空,不是必填项的可以为空,然后在数据库中添加该联系人的 信息记录,如果填写的内容超过系统的限制时,那么添加回事失败的。 3.5.3分析设计实现加载组别信息方法: 加载组别信息: 1方法功能:将我们所要添加的联系人的信息进行查看,记录其所在的组号和组的名字,然后将该联系人加入到组合框中,如果添加的联系人太多,就将其设置为可以下拉的的。 15 2设计思路及方法: (1)先将组合框里的内容清除掉:代码省略,见下文。 (2)将我们上面设计的组合框进行设置一下,使其成为下拉的列表形式的 框;相关语句此处省略。 加载图片方法:方法实现:(1)首先打开文件对话框 ; (2)单击打开按钮:alog() == ; (3)设置图片框的Image属性: = le(me); 3.5.4分析设计与实现添加联系人方法 1方法功能 :读取界面上输入的数据并保存到变量中,然后把它们保存到联系人数据表中。 2设计思路:1)先写出所要添加的联系人的一些基本信息; 2)读取联系人表中的最大编号 3)把数据插入到联系人数据表中 3 实现方法: 实现新增联系人的相关代码: private void Add() { frmAdd f = new frmAdd(); if (alog(this) == ) { LoadGroup(); if ( > 0) { edNode = [0]; LoadList(); } else { (); } } } 3.6 “修改联系人”窗体 3.6.1 知识储备: ★ DataSet对象: DataSet的用处是很方便的,它提供一种方法,只有依靠这种方法才可以更新数据库,不过这种更新的操作却只对内存中的数据才是有效的,如果我们还想对物理数据库进行同样的操作的话,就还必须借助于DataAdapter对象的Update()方法,Update()方法同时影响insert、update和delete命令,一次可以执行数句sql命令,更新数百条数据,此时必须改用SqlParameter来传递参数。 3.6.2 设计窗体界面设计和Load事件方法设计: 1界面:这个窗体的界面和“新增联系人”的是一样的 2 处理流程图: 16 获取配置信息加载待修改的联系人信息分组数量 3相关代码 修改联系人的相关代码为: private void Edit() { if ( == 1) { int id = 32(edItems[0].Tag); frmEdit f = new frmEdit(id); if (alog(this) == ) { LoadGroup(); if ( > 0) { edNode = [0]; LoadList(); } else { 17 (); } } } } 3.7 最终目标: 3.7.1 设计并实现“通讯录管理系统”: 该系统的最终效果如图所示。 登录窗体 主窗体: 18 用户管理窗体 : 新增联系人窗体: 查找联系人窗体: 3.7.2 完成系统概要设计以及我们本次设计所需要的各个模块:按我们以上的分析和所展示的界面将各个窗体设计完成。 结束语 我所做的这个小小的项目,也就是这个小型的系统知识一个简单的用户服务架构的系统,主要目的就是管理信息的一个系统,虽然是小型的 ,不过它包含了许多的基本功能,都是对数据进行操作的 ,它还有许多的操作,例如,增添,查找,修改,删除等等。 19
版权声明:本文标题:通讯录管理系统 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1707236384h512870.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论