通讯录管理系统的设计与实现

基于ado.net 的通讯录管理系统的设计与实现

摘要:随着信息科技高速的发展,计算机的使用也越来越广泛,它渐渐的成为在人们生活中占有重要位置的工具,给人们的生活以及工作都带来了极大便利和帮助,它可以帮人们处理繁琐复杂的工作,可以帮人们高效的处理和存储信息。

在以前,科技不发达,好多事情只能通过人力来完成,对于通讯录人们只能手工管理,手写记录、查找,给人带来很大的不便。而随着信息技术的发展,特别是计算机的普及,人们希望能让机器代替人力来解决一些实际问题,开发通讯录管理系统,可以便于人们对通讯录的联系人进行管理,方便日常生活。

本论文主要介绍基于ADO.NET 的通讯录管理系统的设计与实现,主要讲述如何利用一些工具来开发通讯录管理系统,以及该系统一些模块功能的实现。该系统的一些功能相对于手写通讯录具有很强的实用性,便于人们处理联系人的基本信息。

关键词 通讯录管理;ADO.NET; 联系人;实践

Design and Implementation of the Address Book Management System

Based on ADO.NET

Abstract: With high-speed development of information science and technology, computers are becoming more and more widely used; as a result, they gradually become an important tool in people's life. Computer has brought great convenience to people's life and work; it can help people to deal with the complex work and to process and storage information efficiently.

Previously, the technology is not developed; a lot of things can only be done through the human. Take the address book for example, one can only manual management, which gives the people a lot of inconvenience. While with the development of information technology, especially the popularization of computer, people hope to let the machine to solve some practical problems. With this end, we develop the address book management system, which can facilitate people to manage the address book contacts, thus convenient for daily life.

This paper mainly introduces the design and implementation of the address book management system based on ADO.NET. The system is developed by some tools like Visual Studio and Sql Server. Compared to the handwritten address book, some features of this system are very useful and convenient for people to handle the basic information of the contact person.

Key words: Address book management; ADO.NET; Contact; Practice

目 录

1 绪论 ................................................................... 1

1.1引言 ................................................................ 1

1.2 本系统研究的目的和意义 .............................................. 1

2 系统分析与设计 ......................................................... 2

2.1 需求分析 ............................................................ 2

2.2 设计构想 ............................................................ 2

2.3开发工具和技术 ...................................................... 4

2.3.1 开发工具 ....................................................... 4

2.3.2 ADO.NET数据库访问技术 .......................................... 4

2.4 程序语言----C# ...................................................... 6

3 数据库设计 ............................................................. 7

3.1 数据库表的设计 ...................................................... 7

3.2 表间关系 ............................................................ 8

4 系统功能的实现 ......................................................... 9

4.1系统内具体功能界面的实现 ............................................ 9

4.1.1 用户注册模块的实现 .............................................. 9

4.1.2 登录模块的实现 .................................................. 9

4.1.3 通讯录管理模块的实现 ........................................... 10

4.2通讯录管理具体功能的实现 ........................................... 10

4.2.1新增联系人功能的实现 . ......................................... 10

4.2.2修改联系人功能的实现 . ......................................... 11

4.2.3联系人详情功能的实现 ........................................... 11

4.2.4查询功能的实现 ................................................. 12

4.3用户管理界面 ....................................................... 13

结 束 语 ................................................................ 14

参考文献 ................................................................ 15

附 录 .................................................................. 16

致 谢 .................................................................. 26

1 绪论

1.1引言

随着社会的高速发展,科技化,信息化,机器化的趋势已经不可阻挡。伴随着信息科技的高速发展,人们所接触的人越来越多,联系人也越来越多,日益繁多的人际交往使联系方式也变得复杂,传统的手工操作已经满足不了当代的展,通讯录的管理也是一样。随着计算机的普及,一些繁琐而复杂的工作已经由计算机代替,解放了人力,使效率变得更高,因而人们也希望通过计算机来对联系人进行管理,可以实现简单的联系人查询、删除、增加和更新操作,开发出合适的系统来操作大量的数据。

1.2 本系统研究的目的和意义 开发此通讯录管理系统,最主要的是为人们的生活带来便利,社会的不断发展,人们的交际圈也在不断的发生变化,联系的人越来越多,而每一个联系的人都有自己的联系方式,所以要记住每一个联系的人的信息,并在需要的时候快速找到,这无疑给人们带来很大的工作量。伴随着人们联系人的增多,通讯录的数据也在日益增多,因而仅靠以往人工来管理通讯录信息将会变得更加的复杂,工作量也会变得更大,再继续维持传统人工的管理的话,效率会变得很低,而且易出错,保密性也差。所以就需要我们开发出适合我们当今日益发展的社会所需要的通讯录管理系统,来帮助我们处理繁杂的通讯录系统的各种操作和数据。 此通讯录管理系统是特意针对用户的联系人的联系方式和基本信息进行管理的简单系统,它能够让用户对自己的联系人快速的进行一些简单操作,比如增加联系人、查询联系人、删除和更改联系人等,还可以进行联系人分组,方便查找。这些功能大大方便了用户对众多联系人的管理,用户不仅可以高效快速的存储联系人的基本信息,也可以方便快捷的查询联系人的基本信息,提高了工作效率,从而更加实用,方便了人们的日常生活。

2 系统分析与设计

2.1 需求分析

需求分析就是要理解与表达用户要什么,分析用户的需求。需求分析不仅仅是一项体力活而且还是一项技术活,它还关系到人际关系,起到方向性和导向性作用,对系统的开发是一个重大的考验,它直接关系到开发人员所做项目的失败与否。开发人员要想开发为用户所用的系统,首先要对用户的需求进行分析,需求分析是系统开发的基础,只有明确了用户的需求,才能进行下一步的活动,开发人员才能进行系统的设计、编程等操作。下图2-1就很好的说明了系统开发的流程。从图中可以看出,用户的需求所处的重要位置,出发点是它,测试的结果也是它,只有正确理解以及正确表达用户的需求,系统开发者才能一步步的设计,使程序的运行结果与用户的需求相符,一个完整、正确和实用的系统才能说是开发完成。

图2-1系统开发

2.2 设计构想

进行了需求分析之后,明确了用户的需求,下一步就应该对系统的设计提出构思。设计此通讯录管理系统,主要是想与传统的人工管理通讯录做出对比,使用户理解并使用此系统来进行通讯录日常的简单管理,提高管理的效率,给人们的日常生活带来便利。因此开发这个通讯录管理系统,主要包括两个模块的功能实现:一是通讯录信

息管理模块,既对联系人的信息可以进行查询、修改、删除和增加操作,完成简单的

信息浏览;二是用户管理模块,这个模块主要是用户对自己的通讯录的设置,包括限制组别数量和联系人的数量。下图2-2 系统功能图便是对系统的设计构想。

图2-2 系统功能图

从这个系统功能图可以看出整个通讯录管理系统的大致功能,这些功能都是根据用户的基本需求而设计的。既然是用计算机管理通讯录,而且是可以多用户使用,那么设计这个系统的时候就需要有注册功能,使用者为自己注册一个属于自己的用户名和密码,然后便可以进入登录模块登录系统进行管理通讯录。

那么在构想设计出系统的大致功能后,根据这些功能,我们可以构想它运行时的流程,如下图2-3系统流程图所示。首先运行此通讯录管理系统,出现的第一个页面是登录界面,在此界面上就要做出一个判断,就是是否有自己的用户名和密码,如果没有需要转到注册界面进行注册,注册完毕后再回到登录界面登录系统;如果已经有自己的用户名和密码,那么直接登录系统就行了。登录功能完成后,系统跳转到通讯录管理界面,通讯录管理界面可以进行增删改查等操作,如果不是管理员就只能进行这些操作;如果是管理员除了这些操作还可以设置组别数量和联系人数量。这就是系统的大致流程。

需求分析和设计构想完成后,我们就可以对系统进行编程了,在下一节会说一下开发系统所需要的环境和工具。

图2-3 系统流程图

2.3开发工具和技术

2.3.1 开发工具

开发这个通讯录管理系统主要是用到两个工具,一个是数据库 Microsoft SQL Server 2008,再一个就是Microsoft Visual Studio 2010。简单介绍一下这两个工具,SQL Server 2008功能很强大,它不仅可以存储数据,而且可以对数据进行操作,比如对数据进行增加、删除、修改、查询等操作,在开发这个系统时,也是用到了它的这些功能。SQL Server 数据库有两种连接模式,一种是混合模式连接,另一种是Windows 模式连接,在开发这个系统时,用的是Windows 模式连接。

VS2010作为面向下一代的开发工具,具有很多诱人的新特性,它不仅改进了代码的编写速度,而且还简化了Web 开发,更重要的是它完善了Visual C++功能,是开发变得更容易更高效。

2.3.2 ADO.NET数据库访问技术

开发技术用到了ADO.NET 数据库访问技术,ADO.NET 数据库访问技术是.NET FRAMEWORK 用于访问数据的组件。它一个重要的优点是可以离线操作数据库,应用程

序只需要在更新数据或者需要取得数据时对数据源进行联机,因此它可以减少应用程序对服务器资源的占用,从而提高应用程序的效率。

图2-4 对象模型

从上图2-4可以看出ADO.NET 数据库访问技术提供了几种操作的对象:与数据源进行连接的Connection 对象、可以访问用于数据库的一些增删改查等操作命令的Command 对象、可以检索数据的DataReader 对象、可以进行填充和更新操作的DataAdapter 对象以及相当于内存中的数据库的DataSet 对象。ADO.NET 数据库访问技术是由很多的类组成的类库,那么它是怎样读取数据库的呢?它有两种读取方式,如图2-5所示:

图2-5 数据库读取视图

从图中我们可以很明白的看出读取数据库的两种过程。以上是对ADO.NET 数据库访问技术的一些简单介绍,从这些介绍中可以对它有个大致的了解。

2.4 程序语言----C#

在开发此通讯录管理系统的时候,用到的程序语言主要是C#。C#程语言最初是作为.NET 的一部分进行开发的,意思也就是.NET 是围绕C#开发的。C#是作为一种面向对象的程序设计语言,它的对象的语法和面向过程,都是基于C++而来的,但也包含其他的程序设计语言的特征,比如说Java 语言,但是C#所需要的符号比C++要少,所需要的修饰比Java 也要少,因为C#非常的强调简易性,所以使用起来也是相当的方便、高效。

C#主要具有简易性、面向对象、类型安全等特点。C#的简易性主要是它的语法较之C++来说简单,开发高效率;C#语言支持全面的面向对象功能,与C++相比,C#程序语言的所有代码都必须要封装在类里面,它没有全局函数和全局变量,用多重接口实现多重类的继承,而且不能重写非虚拟的方法等;C#程序语言的类型安全特点是说类型的要求很严格,不允许使用还未初始化的变量,不允许不安全的类型进行转换以及进行边界检查等。

使用C#程序设计语言进行编程给我的开发带来了便利。

3 数据库设计

3.1 数据库表的设计

在开发这个通讯录管理系统时,需要用到两个表,一个是用户表,另一个是联系人表,用户表用来存储用户的用户名和密码以及组别数量和联系人数量的最大值;联系人表是用来存储用户的联系人的一些基本信息,这两个表都是在SQL Server 中建立。用户表和联系人表分别如下图3-1和3-2所示:

图3-1 用户表

图3-2 联系人表

从两张表中可以看到各个表中的字段以及它的数据类型。当用户进行注册操作时,会往用户表内插入数据,在数据库可以看到插入的数据,在注册操作中只往用户表中插入用户名和密码,如下图3-3所示,此图中已经注册了多个用户,这些用户都可以登录此通讯录管理系统对自己的联系人进行管理。当一个用户登录了系统后,他执行了新增联系人操作后,他所添加的联系人的一些信息,比如组别、姓名、联系电话等,这些信息便会保存到数据库表联系人表中,在这个表中我们可以详细的看到每一个用户的对应的联系人的一些基本信息。如下图3-4所示:

图3-3 用户表数据

图3-4 联系人表数据

3.2 表间关系

我们设计了两张表:用户表和联系人表,我们知道一个用户可以对应多个联系人,一个联系人也可以对应多个用户,它们属于多对多的关系。在这两个表中主键分别是用户名和编号,同时用户表中的主键用户名又是联系人表中的外键,通过用户名这个字段把两张表联系了起来,建立了依赖关系。依赖关系如下图3-5所示。

图3- 5 依赖关系

4 系统功能的实现

4.1系统内具体功能界面的实现

4.1.1 用户注册模块的实现

在不同的用户想通过此系统来实现管理自己的通讯录时,可以先进行注册,为自己设置用户名和密码,方便之后登录系统来操作信息。当用户在此界面设置自己的用户名和密码,点击确定时,系统数据库内便会存有用户的信息,用户便可以回到登录界面进行登录操作了。注册界面如图4-1用户注册界面,注册功能的具体代码见附录A.1。

图4-1 用户注册界面

4.1.2 登录模块的实现

登录模块的实现和注册模块的实现类似,主要是sql 语句不同,在此详细代码就不再加以介绍。在登录界面输入用户的用户名和密码后,点击登录按钮便会进入通讯录管理界面,用户就可以对自己的通讯录进行管理了。登录界面如下图4-2所示:

图4-2 用户登录界面

4.1.3 通讯录管理模块的实现

通讯录管理模块是本系统的核心模块,这个界面是通讯录的具体实现,显示通讯录记录联系人的名字等,从通讯录管理模块的界面我们可以大概看到管理界面的一些功能,如图4-3所示:

图4-3通讯录管理界面

从此图可以看到通讯录管理模块具有新增联系人、修改联系人信息、删除联系人以及查询等功能,当进入通讯录管理界面后,想要增加联系人可以点击新增按钮,进行联系人信息的增加;想要修改或删除某个联系人时,需要先选中那个联系人,然后再点击修改或删除按钮。要完成这几项功能,所需的必要代码见附录A.2。

4.2通讯录管理具体功能的实现

4.2.1新增联系人功能的实现

当用户想把自己的朋友、家人或同学等人的信息录入通讯录管理系统中保存时,就用到新增联系人功能。在通讯录管理界面中,点击联系人再点击新增或者直接点击新增按钮,便会出现新增联系人界面,如图4-4和4-5所示。增加一个新的联系人,就要输入联系人的一些信息,在本系统中,主要是用户的联系人的头像、姓名、分组、联系电话、地址和E-Mail 。初始状态下系统自带一个默认头像,用户也可以自己上传头像,当输入好联系人的信息后,点击确定,联系人的信息便会保存在所属用户的数据库中,在管理界面也是可以看到新增的联系人的信息。

图4-4新增联系人界面

图4-5新增联系人界面

4.2.2修改联系人功能的实现

在用户的联系人的一些信息发生变化时,用户需要对该联系人的对应信息进行修改,这就用到了修改联系人的功能。在通讯录管理界面,选中要修改的联系人点击修改按钮可以进入修改联系人界面。修改联系人和新增联系人功能类似,界面也一致,就是对已有联系人的基本信息的更改,执行更新操作,将更改的信息更新到数据库对应的位置上,因新增联系人功能已做了详细的说明,二者类似,在此就不再加以赘述。

4.2.3联系人详情功能的实现

有的时候用户可能需要查看某个群组内联系人的详情信息,那么就需要实现联系人详情的功能。在通讯录管理界面,点击查看所有或者查看按钮,里面有详情功能键,

选择一个群组,点击详情便会出现群组内联系人的详细信息,方便用户浏览,如下图4-6所示:

图4-6 联系人详情界面

这个联系人详情的显示的具体代码,都在通讯录管理功能代码里,如有需要可以去通讯录管理模块来查阅具体代码。

4.2.4查询功能的实现

在通讯录管理功能模块里,有查询功能,设置查询功能主要是为了满足用户要查找某个特定联系人的需求,支持模糊查询,比如用户可能想通过联系人的姓名或者联系电话来查找联系人的信息,如图5-7所示,当输入联系人的姓名或联系电话,点击查找按钮便会出现如图5-8所示界面来显示所找的联系人信息,这样做和传统的人工查询相比提高了查找效率,给用户带来了便利。

图4-7查询界面

图4-8 查询界面

4.3用户管理界面

在这个通讯录管理系统里我们还做了一个用户管理界面,这个界面可以让用户对自己的通讯录进行设置,如设置组别数量的最大值和联系人数量的最大值,设置完成后,在登录系统对通讯录进行管理时,对插入的数据数量会有所限制,当然也可以不设置数量。设置这个界面是为了满足不同的用户需求。用户管理界面如图4-9所示,通信录管理界面部分代码见附录A.3。

图4-9用户管理

当在各个用户管理界面输入联系人数量最大值和组别最大值后,点击保存,数据便会保存到数据库的用户表中,更新后的表如下图4-10所示,从这个图中可以看出用户表中的用户的组别数量最大值和联系人数量最大值都被赋上了值,这些值会对用户对通讯录的管理有个限制的作用。

图4-10 用户表

结 束 语

经过了大概两个月的时间来设计开发此通讯录管理系统并完成相应的论文,这两个月可谓尝遍了酸甜与苦辣,虽然过程有些辛苦,但是却让我感觉到了前所未有的满足于充实。

作为一名大学毕业生,面临着毕业,在大学生涯的最后毕业论文是一大关卡。在毕业论文选题时,我选择了这个基于ADO.NET 的通讯录管理系统的设计与实现这一课题,当要开始着手准备去完成的时候,自己感觉到很茫然,有种无从下手的感觉。对于这个课题,首先要做的是要把这个通讯录管理系统给完整的做出来,才能说去写一篇完整的论文,然而完整的开发一个系统决非易事,而且自己对所需要的知识掌握的很薄弱,所以刚开始特别的纠结,但是毕业设计是毕业生并经环节,谁也不能例外不能逃避,只能去积极应对。在最初茫然的时刻,想起了我的指导老师,通过和指导老师的沟通,使我渐渐的找到了方向,找到了下一步要走的路,一下使我的心境开阔了很多,所以就抓紧每一分每一秒去准备。做这个通讯录管理系统需要两个工具,一个是数据量SQL Server,另一个是Microsoft Visual Studio 2010,往自己计算机内安装这两个程序时也是遇到了一些困难,第一次安装失败,只好卸载重新安装,反反复复安装卸载了好几次才成功,工具安装好了之后就要去设计开发系统了,在VS2010里设计各个模块的界面,因为对一些控件不熟悉,C#语言的不熟练,各个模块的实现也是让我很感到很吃力,但是在老师和同学的帮助和开导下,我越来越能熟练地去开发系统的功能,感到很开心。

经过一次次的困难的摸索,失败后的再尝试,我的系统慢慢的成型了,最后成功的完成了完整的系统。通过这段时间的毕业设计,让我掌握了很多知识,掌握了C#语言的运用,还有ADO.NET 数据库访问技术,同时也熟悉了SQL Server和VS 2010两个工具的运用,这次的设计开发过程让我觉得内心很充实,所积累的编程经验对我以后的工作肯定会有很大的帮助。

毕业论文的写作过程是全面考察大学四年所学知识的环节,考验学生能否用理论结合实际,运用各种技能和方法去解决面对的问题,积累实践经验。这次的毕业设计和论文的写作,除了让我学到了知识以外,更多的是让我学会了直面困难的挑战,给了我更对应对挫折的勇气,收获颇丰。

参考文献

[1] (美)沃森等著,齐立波、黄俊伟翻译,《C#入门经典(第6版)》,清华大学出版社,

2014.1.1,44-53

[2] 秦婧,《精通C#与.NET4.0 数据库开发》,清华大学出版社,2011.1.1,8-23

[3] (美)内格尔等著,李敏波翻译,《C#高级编程(第4版)》,清华大学出版社,2006.10.1,22-28

[4] 郑阿奇、刘启华、顾韵华 著,《SQL Server 实用教程》 ,电子工业出版社,2009.12,46-66

[5] 刘俊强,《SQL Server 2008入门与提高》,清华大学出版社,2014.6,5-18

[6] (美)Joseph Sack 著,金迎春翻译,《SQL Server 2008实战》,人民邮电出版社,2010.2,11-32

[7] 高守传,《精通SQL —结构化查询语言详解》,人民邮电出版社,2007.3.1,1-36

[8] (美)Tim Patrick 著,贾洪峰翻译,《ADO.NET 4从入门到精通》,清华大学出版社,2012.1,6-12

[9] 陈承欢,《ADO.NET 数据库访问技术案例教程》,人民邮电出版社,2008.4,36-54

[10] 张骏,崔海波,《ADO.NET 数据库应用开发》,机械工业出版社,2008.1,43-48

[11] 崔武子、齐华山、于宁、李红豫、孙力红 著,《界面设计与Visual Basic (第3版)》,清华大学出版社,2014.11,33-39

[12] 梁爽、杨玥、吴晓艳,《.NET 框架程序设计》,清华大学出版社,2013.2.20,41-48

[13] 洪石丹,《ASP.NET 范例开发大全》,清华大学出版社,2010.7.1,66-70 [14] (美)保罗 利弗莫尔,《ASP.NET 2.0经典案例教程》,人民邮电出版社,2007.5.1,55-78

[15] 吴继迪,庞娅娟 著,《ASP 从入门到精通》,清华大学出版社,2008,77-84

附 录

附录A 第四章中各个模块的关键代码

A.1用户注册模块代码:

public partial class formRegister : Form

{

public formRegister()

{

InitializeComponent();

}

private void btnOK_Click(object sender, EventArgs e)

{

try

{

//检测文本框内容

if

{

MessageBox.Show("用户名和密码不能为空!", "注册失败", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

//验证数据库用户

SqlConnection conn = new SqlConnection();

conn.ConnectionString

Source=WIN7-20140609CI;Initial

Security=True;Pooling=False;";

conn.Open();

string sql = "insert into 用户(用户名, 密码) values('" + txtUserName.Text.Trim() + "','" + txtPassword.Text.Trim() + "')";

SqlCommand cmd = new SqlCommand();

cmd.Connection = conn;

cmd.CommandText = sql;

int result = Convert.ToInt32(cmd.ExecuteScalar());

(txtUserName.Text.Trim() == "" || txtPassword.Text.Trim() == "") = "Data Catalog=AddressBookMgr;Integrated

conn.Close();

if (result == 0)

{

//注册成功

formLogin fl = new formLogin();

fl.Show();

this.Hide();

}

}

catch (Exception ee)

{

MessageBox.Show("发生错误/r" + ee.Message, "注册失败", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

}

private void btnCancel_Click(object sender, EventArgs e)

{

formLogin fl = new formLogin();

fl.Show();

this.Hide();

}

}

A.2 通讯录管理模块

public partial class formMain : Form

{

public formMain()

{

InitializeComponent();

}

private string strConn = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]

;

private void formMain_Load(object sender, EventArgs e)

{

LoadGroup();

if (trvGroup.Nodes.Count > 0)

{

trvGroup.SelectedNode = trvGroup.Nodes[0];

LoadList();

}

else

{

lvContact.Clear();

}}

private void LoadGroup()

{

try

{

trvGroup.Nodes.Clear();

SqlConnection conn = new SqlConnection(strConn);

SqlCommand cmd = new SqlCommand();

cmd.Connection = conn;

cmd.CommandText = "select distinct 组别 from 联系人 where 用户名='" + tsslUserName.Text + "'";

conn.Open();

SqlDataReader sdr = cmd.ExecuteReader();

while (sdr.Read())

{

trvGroup.Nodes.Add(sdr[0].ToString());

}

sdr.Close();

conn.Close();

}

catch

{ }}

private void LoadList()

{

if (trvGroup.Nodes.Count == 0)

{

lvContact.Clear();

return;

}

if (trvGroup.SelectedNode.Index >= 0)

{

string strGroup = trvGroup.SelectedNode.Text;

try

{

lvContact.Clear();

lvContact.Columns.Add("姓名", 100);

lvContact.Columns.Add("地址", 150);

lvContact.Columns.Add("联系电话", 100);

lvContact.Columns.Add("Email", 150);

SqlConnection conn = new SqlConnection(strConn); SqlCommand cmd = new SqlCommand();

cmd.Connection = conn;

cmd.CommandText = "select 编号, 用户名, 组别, 姓名, 地址, 联系电话,Email from 联系人 where 组别='" + strGroup + "' and 用户名='" + tsslUserName.Text + "'";

conn.Open();

SqlDataReader sdr = cmd.ExecuteReader();

int count = 0;

while (sdr.Read())

{

ListViewItem lvi = new ListViewItem();

lvi.Text = sdr["姓名"].ToString();

lvi.SubItems.Add(sdr["地址"].ToString());

lvi.SubItems.Add(sdr["联系电话"].ToString()); lvi.SubItems.Add(sdr["Email"].ToString());

lvi.Tag = sdr["编号"];

lvi.ImageIndex = 0;

lvContact.Items.Add(lvi);

count++;

}

tsslCount.Text = "共计" + count.ToString() + "个联系人";

sdr.Close();

conn.Close();

}

catch

{ }

}

}

private

FormClosedEventArgs e)

{

Application.Exit();

}

private

TreeViewEventArgs e)

{

LoadList();

}

private void 详情

EventArgs e)

{

lvContact.View = View.Details;

}

private void 详情ToolStripMenuItem1_Click(object sender, EventArgs e)

{

lvContact.View = View.Details;

}

void formMain_FormClosed(object sender, void trvGroup_AfterSelect(object sender, ToolStripMenuItem_Click(object sender,

private void 图标

EventArgs e)

{ ToolStripMenuItem_Click(object sender,

lvContact.View = View.LargeIcon;

}

private void 图标ToolStripMenuItem1_Click(object sender, EventArgs e)

{

lvContact.View = View.LargeIcon;

}

//增加联系人

private void Add()

{

formAdd f = new formAdd();

if (f.ShowDialog(this) == DialogResult.OK)

{

LoadGroup();

if (trvGroup.Nodes.Count > 0)

{

trvGroup.SelectedNode = trvGroup.Nodes[0];

LoadList();

}

else

{

lvContact.Clear();

}

}

}

//修改联系人

private void Edit()

{

if (lvContact.SelectedItems.Count == 1)

{

int

id =

Convert.ToInt32(lvContact.SelectedItems[0].Tag);

formEdit f = new formEdit(id);

if (f.ShowDialog(this) == DialogResult.OK)

{

LoadGroup();

if (trvGroup.Nodes.Count > 0)

{

trvGroup.SelectedNode = trvGroup.Nodes[0]; LoadList();

}

else

{

lvContact.Clear();

}

}

}

}

private void Delete()

{

if (lvContact.SelectedItems.Count

{

return;

}

if (MessageBox.Show("是否要删除选中的联系人?", " 删除确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

{

string strWhere = " where 编号 in (";

foreach (ListViewItem lvi in lvContact.SelectedItems) {

strWhere += lvi.Tag.ToString() + ",";

}

strWhere = strWhere.Substring(0, strWhere.Length - 1); strWhere += ")";

try

{

SqlConnection conn = new SqlConnection(strConn); SqlCommand cmd = new SqlCommand();

cmd.Connection = conn;

cmd.CommandText = "delete from 联系人 " + strWhere; conn.Open();

cmd.ExecuteNonQuery();

conn.Close();

LoadGroup();

if (trvGroup.Nodes.Count > 0)

{

trvGroup.SelectedNode = trvGroup.Nodes[0]; LoadList();

}

else

{

lvContact.Clear();

}

}

catch { }

}

}

private void Search()

{

formSearch f = new formSearch(tsslUserName.Text);

f.ShowDialog();

}

private void 增加ToolStripMenuItem_Click(object sender, EventArgs e)

{

Add();}

private void 修改MToolStripMenuItem_Click(object sender, EventArgs e)

{

Edit();

}

private void 删除

EventArgs e)

{

Delete();

}

private

MouseEventArgs e)

{

Edit();

}

private void lvContact_KeyDown(object sender, KeyEventArgs e) {

if (e.KeyCode == Keys.Delete)

{

Delete();

}

}

private void 搜索SToolStripMenuItem_Click(object sender, EventArgs e)

{

Search();

}

private void tsbtnAdd_Click(object sender, EventArgs e)

{

Add();

}

private void tsbtnEdit_Click(object sender, EventArgs e)

{

Edit();

}

private void tsbtnSearch_Click(object sender, EventArgs e)

ToolStripMenuItem_Click(object sender, void lvContact_MouseDoubleClick(object sender,

{

Search();

}

private void tsbtnDelete_Click(object sender, EventArgs e) {

Delete();

}

}

A.3用户管理模块:

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void 用户BindingNavigatorSaveItem_Click(object sender, EventArgs e)

{

this.Validate();

this.用户BindingSource.EndEdit();

this.

}

private void Form1_Load(object sender, EventArgs e)

{

// TODO: 这行代码将数据加载到表

“AddressBookMgrDataSet.用户”中。您可以根据需要移动或移除它。

this.

}

}

用户TableAdapter.Update(this.AddressBookMgrDataSet.用户); 用户TableAdapter.Fill(this.AddressBookMgrDataSet.用户);

致 谢

从开始选定毕业课题到现在完成课题大概用了两个月的时间,从最初的无从下手到后来的熟练开发,一步步走来让我受益匪浅。我是第一次这么认真的努力的去开发系统,虽然还有很多不足的地方,但是收获远远地高于从书本上获取的知识,这可能就是实践的重要性吧,只有动手去做才会真正的有所发现、有所体会、有所收获。

历时大概两个月的时间终于把通讯录管理系统按设计的开发完整以及将毕业论文也完成,在这个过程中遇到了很多的困难和挫折,值得庆幸的是我遇到了优秀的老师和热心的同学,在我对这些困难束手无策时,是老师和同学的帮助,让我克服了挫折,成功的完成任务。我最强烈感谢的是我的指导老师,是他的耐心指导和无私的帮助才让我克服了一次又一次的困难,不厌其烦的给我讲解设计的重点,需要注意的地方,给我制定完成进度,督促我努力认真的完成毕业设计,而且对我的论文耐心的做了一次又一次的修改,我能顺利完成这次的毕业设计课题,指导老师真的是给了我很大的帮助,特别感谢他。

还有就是要感谢帮助我的同学和朋友,他们很热心的解答我的问题,还帮我查阅资料,我哪里有不明白的都会耐心的帮我解决,真的很谢谢帮助我的同学;除了指导老师和同学还要感谢的是我这篇论文中涉及到的各位学者,是各位学者的研究成果给的我深刻的启发和帮助,如果没有这些参考文献,我想我也很难很好的完成这篇论文的写作。

时光飞逝,眼看毕业的时间即将到来,将要离开生活和学习了四年的大学,离开朝夕相处相处的老师和同学,心中有万分的不舍,四年来建立了很深的情谊,真的很感谢这四年来默默付出的老师们,是他们无私付出,才让我们有了巨大收获,是他们带领我们走入知识的海洋,在此我想表达我最衷心的感谢!老师们正直的工作作风和悉心的教诲使我终生受益,我一定会努力成为一个对生活、对工作负责的人,成为一个对社会有所贡献的人。

基于ado.net 的通讯录管理系统的设计与实现

摘要:随着信息科技高速的发展,计算机的使用也越来越广泛,它渐渐的成为在人们生活中占有重要位置的工具,给人们的生活以及工作都带来了极大便利和帮助,它可以帮人们处理繁琐复杂的工作,可以帮人们高效的处理和存储信息。

在以前,科技不发达,好多事情只能通过人力来完成,对于通讯录人们只能手工管理,手写记录、查找,给人带来很大的不便。而随着信息技术的发展,特别是计算机的普及,人们希望能让机器代替人力来解决一些实际问题,开发通讯录管理系统,可以便于人们对通讯录的联系人进行管理,方便日常生活。

本论文主要介绍基于ADO.NET 的通讯录管理系统的设计与实现,主要讲述如何利用一些工具来开发通讯录管理系统,以及该系统一些模块功能的实现。该系统的一些功能相对于手写通讯录具有很强的实用性,便于人们处理联系人的基本信息。

关键词 通讯录管理;ADO.NET; 联系人;实践

Design and Implementation of the Address Book Management System

Based on ADO.NET

Abstract: With high-speed development of information science and technology, computers are becoming more and more widely used; as a result, they gradually become an important tool in people's life. Computer has brought great convenience to people's life and work; it can help people to deal with the complex work and to process and storage information efficiently.

Previously, the technology is not developed; a lot of things can only be done through the human. Take the address book for example, one can only manual management, which gives the people a lot of inconvenience. While with the development of information technology, especially the popularization of computer, people hope to let the machine to solve some practical problems. With this end, we develop the address book management system, which can facilitate people to manage the address book contacts, thus convenient for daily life.

This paper mainly introduces the design and implementation of the address book management system based on ADO.NET. The system is developed by some tools like Visual Studio and Sql Server. Compared to the handwritten address book, some features of this system are very useful and convenient for people to handle the basic information of the contact person.

Key words: Address book management; ADO.NET; Contact; Practice

目 录

1 绪论 ................................................................... 1

1.1引言 ................................................................ 1

1.2 本系统研究的目的和意义 .............................................. 1

2 系统分析与设计 ......................................................... 2

2.1 需求分析 ............................................................ 2

2.2 设计构想 ............................................................ 2

2.3开发工具和技术 ...................................................... 4

2.3.1 开发工具 ....................................................... 4

2.3.2 ADO.NET数据库访问技术 .......................................... 4

2.4 程序语言----C# ...................................................... 6

3 数据库设计 ............................................................. 7

3.1 数据库表的设计 ...................................................... 7

3.2 表间关系 ............................................................ 8

4 系统功能的实现 ......................................................... 9

4.1系统内具体功能界面的实现 ............................................ 9

4.1.1 用户注册模块的实现 .............................................. 9

4.1.2 登录模块的实现 .................................................. 9

4.1.3 通讯录管理模块的实现 ........................................... 10

4.2通讯录管理具体功能的实现 ........................................... 10

4.2.1新增联系人功能的实现 . ......................................... 10

4.2.2修改联系人功能的实现 . ......................................... 11

4.2.3联系人详情功能的实现 ........................................... 11

4.2.4查询功能的实现 ................................................. 12

4.3用户管理界面 ....................................................... 13

结 束 语 ................................................................ 14

参考文献 ................................................................ 15

附 录 .................................................................. 16

致 谢 .................................................................. 26

1 绪论

1.1引言

随着社会的高速发展,科技化,信息化,机器化的趋势已经不可阻挡。伴随着信息科技的高速发展,人们所接触的人越来越多,联系人也越来越多,日益繁多的人际交往使联系方式也变得复杂,传统的手工操作已经满足不了当代的展,通讯录的管理也是一样。随着计算机的普及,一些繁琐而复杂的工作已经由计算机代替,解放了人力,使效率变得更高,因而人们也希望通过计算机来对联系人进行管理,可以实现简单的联系人查询、删除、增加和更新操作,开发出合适的系统来操作大量的数据。

1.2 本系统研究的目的和意义 开发此通讯录管理系统,最主要的是为人们的生活带来便利,社会的不断发展,人们的交际圈也在不断的发生变化,联系的人越来越多,而每一个联系的人都有自己的联系方式,所以要记住每一个联系的人的信息,并在需要的时候快速找到,这无疑给人们带来很大的工作量。伴随着人们联系人的增多,通讯录的数据也在日益增多,因而仅靠以往人工来管理通讯录信息将会变得更加的复杂,工作量也会变得更大,再继续维持传统人工的管理的话,效率会变得很低,而且易出错,保密性也差。所以就需要我们开发出适合我们当今日益发展的社会所需要的通讯录管理系统,来帮助我们处理繁杂的通讯录系统的各种操作和数据。 此通讯录管理系统是特意针对用户的联系人的联系方式和基本信息进行管理的简单系统,它能够让用户对自己的联系人快速的进行一些简单操作,比如增加联系人、查询联系人、删除和更改联系人等,还可以进行联系人分组,方便查找。这些功能大大方便了用户对众多联系人的管理,用户不仅可以高效快速的存储联系人的基本信息,也可以方便快捷的查询联系人的基本信息,提高了工作效率,从而更加实用,方便了人们的日常生活。

2 系统分析与设计

2.1 需求分析

需求分析就是要理解与表达用户要什么,分析用户的需求。需求分析不仅仅是一项体力活而且还是一项技术活,它还关系到人际关系,起到方向性和导向性作用,对系统的开发是一个重大的考验,它直接关系到开发人员所做项目的失败与否。开发人员要想开发为用户所用的系统,首先要对用户的需求进行分析,需求分析是系统开发的基础,只有明确了用户的需求,才能进行下一步的活动,开发人员才能进行系统的设计、编程等操作。下图2-1就很好的说明了系统开发的流程。从图中可以看出,用户的需求所处的重要位置,出发点是它,测试的结果也是它,只有正确理解以及正确表达用户的需求,系统开发者才能一步步的设计,使程序的运行结果与用户的需求相符,一个完整、正确和实用的系统才能说是开发完成。

图2-1系统开发

2.2 设计构想

进行了需求分析之后,明确了用户的需求,下一步就应该对系统的设计提出构思。设计此通讯录管理系统,主要是想与传统的人工管理通讯录做出对比,使用户理解并使用此系统来进行通讯录日常的简单管理,提高管理的效率,给人们的日常生活带来便利。因此开发这个通讯录管理系统,主要包括两个模块的功能实现:一是通讯录信

息管理模块,既对联系人的信息可以进行查询、修改、删除和增加操作,完成简单的

信息浏览;二是用户管理模块,这个模块主要是用户对自己的通讯录的设置,包括限制组别数量和联系人的数量。下图2-2 系统功能图便是对系统的设计构想。

图2-2 系统功能图

从这个系统功能图可以看出整个通讯录管理系统的大致功能,这些功能都是根据用户的基本需求而设计的。既然是用计算机管理通讯录,而且是可以多用户使用,那么设计这个系统的时候就需要有注册功能,使用者为自己注册一个属于自己的用户名和密码,然后便可以进入登录模块登录系统进行管理通讯录。

那么在构想设计出系统的大致功能后,根据这些功能,我们可以构想它运行时的流程,如下图2-3系统流程图所示。首先运行此通讯录管理系统,出现的第一个页面是登录界面,在此界面上就要做出一个判断,就是是否有自己的用户名和密码,如果没有需要转到注册界面进行注册,注册完毕后再回到登录界面登录系统;如果已经有自己的用户名和密码,那么直接登录系统就行了。登录功能完成后,系统跳转到通讯录管理界面,通讯录管理界面可以进行增删改查等操作,如果不是管理员就只能进行这些操作;如果是管理员除了这些操作还可以设置组别数量和联系人数量。这就是系统的大致流程。

需求分析和设计构想完成后,我们就可以对系统进行编程了,在下一节会说一下开发系统所需要的环境和工具。

图2-3 系统流程图

2.3开发工具和技术

2.3.1 开发工具

开发这个通讯录管理系统主要是用到两个工具,一个是数据库 Microsoft SQL Server 2008,再一个就是Microsoft Visual Studio 2010。简单介绍一下这两个工具,SQL Server 2008功能很强大,它不仅可以存储数据,而且可以对数据进行操作,比如对数据进行增加、删除、修改、查询等操作,在开发这个系统时,也是用到了它的这些功能。SQL Server 数据库有两种连接模式,一种是混合模式连接,另一种是Windows 模式连接,在开发这个系统时,用的是Windows 模式连接。

VS2010作为面向下一代的开发工具,具有很多诱人的新特性,它不仅改进了代码的编写速度,而且还简化了Web 开发,更重要的是它完善了Visual C++功能,是开发变得更容易更高效。

2.3.2 ADO.NET数据库访问技术

开发技术用到了ADO.NET 数据库访问技术,ADO.NET 数据库访问技术是.NET FRAMEWORK 用于访问数据的组件。它一个重要的优点是可以离线操作数据库,应用程

序只需要在更新数据或者需要取得数据时对数据源进行联机,因此它可以减少应用程序对服务器资源的占用,从而提高应用程序的效率。

图2-4 对象模型

从上图2-4可以看出ADO.NET 数据库访问技术提供了几种操作的对象:与数据源进行连接的Connection 对象、可以访问用于数据库的一些增删改查等操作命令的Command 对象、可以检索数据的DataReader 对象、可以进行填充和更新操作的DataAdapter 对象以及相当于内存中的数据库的DataSet 对象。ADO.NET 数据库访问技术是由很多的类组成的类库,那么它是怎样读取数据库的呢?它有两种读取方式,如图2-5所示:

图2-5 数据库读取视图

从图中我们可以很明白的看出读取数据库的两种过程。以上是对ADO.NET 数据库访问技术的一些简单介绍,从这些介绍中可以对它有个大致的了解。

2.4 程序语言----C#

在开发此通讯录管理系统的时候,用到的程序语言主要是C#。C#程语言最初是作为.NET 的一部分进行开发的,意思也就是.NET 是围绕C#开发的。C#是作为一种面向对象的程序设计语言,它的对象的语法和面向过程,都是基于C++而来的,但也包含其他的程序设计语言的特征,比如说Java 语言,但是C#所需要的符号比C++要少,所需要的修饰比Java 也要少,因为C#非常的强调简易性,所以使用起来也是相当的方便、高效。

C#主要具有简易性、面向对象、类型安全等特点。C#的简易性主要是它的语法较之C++来说简单,开发高效率;C#语言支持全面的面向对象功能,与C++相比,C#程序语言的所有代码都必须要封装在类里面,它没有全局函数和全局变量,用多重接口实现多重类的继承,而且不能重写非虚拟的方法等;C#程序语言的类型安全特点是说类型的要求很严格,不允许使用还未初始化的变量,不允许不安全的类型进行转换以及进行边界检查等。

使用C#程序设计语言进行编程给我的开发带来了便利。

3 数据库设计

3.1 数据库表的设计

在开发这个通讯录管理系统时,需要用到两个表,一个是用户表,另一个是联系人表,用户表用来存储用户的用户名和密码以及组别数量和联系人数量的最大值;联系人表是用来存储用户的联系人的一些基本信息,这两个表都是在SQL Server 中建立。用户表和联系人表分别如下图3-1和3-2所示:

图3-1 用户表

图3-2 联系人表

从两张表中可以看到各个表中的字段以及它的数据类型。当用户进行注册操作时,会往用户表内插入数据,在数据库可以看到插入的数据,在注册操作中只往用户表中插入用户名和密码,如下图3-3所示,此图中已经注册了多个用户,这些用户都可以登录此通讯录管理系统对自己的联系人进行管理。当一个用户登录了系统后,他执行了新增联系人操作后,他所添加的联系人的一些信息,比如组别、姓名、联系电话等,这些信息便会保存到数据库表联系人表中,在这个表中我们可以详细的看到每一个用户的对应的联系人的一些基本信息。如下图3-4所示:

图3-3 用户表数据

图3-4 联系人表数据

3.2 表间关系

我们设计了两张表:用户表和联系人表,我们知道一个用户可以对应多个联系人,一个联系人也可以对应多个用户,它们属于多对多的关系。在这两个表中主键分别是用户名和编号,同时用户表中的主键用户名又是联系人表中的外键,通过用户名这个字段把两张表联系了起来,建立了依赖关系。依赖关系如下图3-5所示。

图3- 5 依赖关系

4 系统功能的实现

4.1系统内具体功能界面的实现

4.1.1 用户注册模块的实现

在不同的用户想通过此系统来实现管理自己的通讯录时,可以先进行注册,为自己设置用户名和密码,方便之后登录系统来操作信息。当用户在此界面设置自己的用户名和密码,点击确定时,系统数据库内便会存有用户的信息,用户便可以回到登录界面进行登录操作了。注册界面如图4-1用户注册界面,注册功能的具体代码见附录A.1。

图4-1 用户注册界面

4.1.2 登录模块的实现

登录模块的实现和注册模块的实现类似,主要是sql 语句不同,在此详细代码就不再加以介绍。在登录界面输入用户的用户名和密码后,点击登录按钮便会进入通讯录管理界面,用户就可以对自己的通讯录进行管理了。登录界面如下图4-2所示:

图4-2 用户登录界面

4.1.3 通讯录管理模块的实现

通讯录管理模块是本系统的核心模块,这个界面是通讯录的具体实现,显示通讯录记录联系人的名字等,从通讯录管理模块的界面我们可以大概看到管理界面的一些功能,如图4-3所示:

图4-3通讯录管理界面

从此图可以看到通讯录管理模块具有新增联系人、修改联系人信息、删除联系人以及查询等功能,当进入通讯录管理界面后,想要增加联系人可以点击新增按钮,进行联系人信息的增加;想要修改或删除某个联系人时,需要先选中那个联系人,然后再点击修改或删除按钮。要完成这几项功能,所需的必要代码见附录A.2。

4.2通讯录管理具体功能的实现

4.2.1新增联系人功能的实现

当用户想把自己的朋友、家人或同学等人的信息录入通讯录管理系统中保存时,就用到新增联系人功能。在通讯录管理界面中,点击联系人再点击新增或者直接点击新增按钮,便会出现新增联系人界面,如图4-4和4-5所示。增加一个新的联系人,就要输入联系人的一些信息,在本系统中,主要是用户的联系人的头像、姓名、分组、联系电话、地址和E-Mail 。初始状态下系统自带一个默认头像,用户也可以自己上传头像,当输入好联系人的信息后,点击确定,联系人的信息便会保存在所属用户的数据库中,在管理界面也是可以看到新增的联系人的信息。

图4-4新增联系人界面

图4-5新增联系人界面

4.2.2修改联系人功能的实现

在用户的联系人的一些信息发生变化时,用户需要对该联系人的对应信息进行修改,这就用到了修改联系人的功能。在通讯录管理界面,选中要修改的联系人点击修改按钮可以进入修改联系人界面。修改联系人和新增联系人功能类似,界面也一致,就是对已有联系人的基本信息的更改,执行更新操作,将更改的信息更新到数据库对应的位置上,因新增联系人功能已做了详细的说明,二者类似,在此就不再加以赘述。

4.2.3联系人详情功能的实现

有的时候用户可能需要查看某个群组内联系人的详情信息,那么就需要实现联系人详情的功能。在通讯录管理界面,点击查看所有或者查看按钮,里面有详情功能键,

选择一个群组,点击详情便会出现群组内联系人的详细信息,方便用户浏览,如下图4-6所示:

图4-6 联系人详情界面

这个联系人详情的显示的具体代码,都在通讯录管理功能代码里,如有需要可以去通讯录管理模块来查阅具体代码。

4.2.4查询功能的实现

在通讯录管理功能模块里,有查询功能,设置查询功能主要是为了满足用户要查找某个特定联系人的需求,支持模糊查询,比如用户可能想通过联系人的姓名或者联系电话来查找联系人的信息,如图5-7所示,当输入联系人的姓名或联系电话,点击查找按钮便会出现如图5-8所示界面来显示所找的联系人信息,这样做和传统的人工查询相比提高了查找效率,给用户带来了便利。

图4-7查询界面

图4-8 查询界面

4.3用户管理界面

在这个通讯录管理系统里我们还做了一个用户管理界面,这个界面可以让用户对自己的通讯录进行设置,如设置组别数量的最大值和联系人数量的最大值,设置完成后,在登录系统对通讯录进行管理时,对插入的数据数量会有所限制,当然也可以不设置数量。设置这个界面是为了满足不同的用户需求。用户管理界面如图4-9所示,通信录管理界面部分代码见附录A.3。

图4-9用户管理

当在各个用户管理界面输入联系人数量最大值和组别最大值后,点击保存,数据便会保存到数据库的用户表中,更新后的表如下图4-10所示,从这个图中可以看出用户表中的用户的组别数量最大值和联系人数量最大值都被赋上了值,这些值会对用户对通讯录的管理有个限制的作用。

图4-10 用户表

结 束 语

经过了大概两个月的时间来设计开发此通讯录管理系统并完成相应的论文,这两个月可谓尝遍了酸甜与苦辣,虽然过程有些辛苦,但是却让我感觉到了前所未有的满足于充实。

作为一名大学毕业生,面临着毕业,在大学生涯的最后毕业论文是一大关卡。在毕业论文选题时,我选择了这个基于ADO.NET 的通讯录管理系统的设计与实现这一课题,当要开始着手准备去完成的时候,自己感觉到很茫然,有种无从下手的感觉。对于这个课题,首先要做的是要把这个通讯录管理系统给完整的做出来,才能说去写一篇完整的论文,然而完整的开发一个系统决非易事,而且自己对所需要的知识掌握的很薄弱,所以刚开始特别的纠结,但是毕业设计是毕业生并经环节,谁也不能例外不能逃避,只能去积极应对。在最初茫然的时刻,想起了我的指导老师,通过和指导老师的沟通,使我渐渐的找到了方向,找到了下一步要走的路,一下使我的心境开阔了很多,所以就抓紧每一分每一秒去准备。做这个通讯录管理系统需要两个工具,一个是数据量SQL Server,另一个是Microsoft Visual Studio 2010,往自己计算机内安装这两个程序时也是遇到了一些困难,第一次安装失败,只好卸载重新安装,反反复复安装卸载了好几次才成功,工具安装好了之后就要去设计开发系统了,在VS2010里设计各个模块的界面,因为对一些控件不熟悉,C#语言的不熟练,各个模块的实现也是让我很感到很吃力,但是在老师和同学的帮助和开导下,我越来越能熟练地去开发系统的功能,感到很开心。

经过一次次的困难的摸索,失败后的再尝试,我的系统慢慢的成型了,最后成功的完成了完整的系统。通过这段时间的毕业设计,让我掌握了很多知识,掌握了C#语言的运用,还有ADO.NET 数据库访问技术,同时也熟悉了SQL Server和VS 2010两个工具的运用,这次的设计开发过程让我觉得内心很充实,所积累的编程经验对我以后的工作肯定会有很大的帮助。

毕业论文的写作过程是全面考察大学四年所学知识的环节,考验学生能否用理论结合实际,运用各种技能和方法去解决面对的问题,积累实践经验。这次的毕业设计和论文的写作,除了让我学到了知识以外,更多的是让我学会了直面困难的挑战,给了我更对应对挫折的勇气,收获颇丰。

参考文献

[1] (美)沃森等著,齐立波、黄俊伟翻译,《C#入门经典(第6版)》,清华大学出版社,

2014.1.1,44-53

[2] 秦婧,《精通C#与.NET4.0 数据库开发》,清华大学出版社,2011.1.1,8-23

[3] (美)内格尔等著,李敏波翻译,《C#高级编程(第4版)》,清华大学出版社,2006.10.1,22-28

[4] 郑阿奇、刘启华、顾韵华 著,《SQL Server 实用教程》 ,电子工业出版社,2009.12,46-66

[5] 刘俊强,《SQL Server 2008入门与提高》,清华大学出版社,2014.6,5-18

[6] (美)Joseph Sack 著,金迎春翻译,《SQL Server 2008实战》,人民邮电出版社,2010.2,11-32

[7] 高守传,《精通SQL —结构化查询语言详解》,人民邮电出版社,2007.3.1,1-36

[8] (美)Tim Patrick 著,贾洪峰翻译,《ADO.NET 4从入门到精通》,清华大学出版社,2012.1,6-12

[9] 陈承欢,《ADO.NET 数据库访问技术案例教程》,人民邮电出版社,2008.4,36-54

[10] 张骏,崔海波,《ADO.NET 数据库应用开发》,机械工业出版社,2008.1,43-48

[11] 崔武子、齐华山、于宁、李红豫、孙力红 著,《界面设计与Visual Basic (第3版)》,清华大学出版社,2014.11,33-39

[12] 梁爽、杨玥、吴晓艳,《.NET 框架程序设计》,清华大学出版社,2013.2.20,41-48

[13] 洪石丹,《ASP.NET 范例开发大全》,清华大学出版社,2010.7.1,66-70 [14] (美)保罗 利弗莫尔,《ASP.NET 2.0经典案例教程》,人民邮电出版社,2007.5.1,55-78

[15] 吴继迪,庞娅娟 著,《ASP 从入门到精通》,清华大学出版社,2008,77-84

附 录

附录A 第四章中各个模块的关键代码

A.1用户注册模块代码:

public partial class formRegister : Form

{

public formRegister()

{

InitializeComponent();

}

private void btnOK_Click(object sender, EventArgs e)

{

try

{

//检测文本框内容

if

{

MessageBox.Show("用户名和密码不能为空!", "注册失败", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

//验证数据库用户

SqlConnection conn = new SqlConnection();

conn.ConnectionString

Source=WIN7-20140609CI;Initial

Security=True;Pooling=False;";

conn.Open();

string sql = "insert into 用户(用户名, 密码) values('" + txtUserName.Text.Trim() + "','" + txtPassword.Text.Trim() + "')";

SqlCommand cmd = new SqlCommand();

cmd.Connection = conn;

cmd.CommandText = sql;

int result = Convert.ToInt32(cmd.ExecuteScalar());

(txtUserName.Text.Trim() == "" || txtPassword.Text.Trim() == "") = "Data Catalog=AddressBookMgr;Integrated

conn.Close();

if (result == 0)

{

//注册成功

formLogin fl = new formLogin();

fl.Show();

this.Hide();

}

}

catch (Exception ee)

{

MessageBox.Show("发生错误/r" + ee.Message, "注册失败", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

}

private void btnCancel_Click(object sender, EventArgs e)

{

formLogin fl = new formLogin();

fl.Show();

this.Hide();

}

}

A.2 通讯录管理模块

public partial class formMain : Form

{

public formMain()

{

InitializeComponent();

}

private string strConn = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]

;

private void formMain_Load(object sender, EventArgs e)

{

LoadGroup();

if (trvGroup.Nodes.Count > 0)

{

trvGroup.SelectedNode = trvGroup.Nodes[0];

LoadList();

}

else

{

lvContact.Clear();

}}

private void LoadGroup()

{

try

{

trvGroup.Nodes.Clear();

SqlConnection conn = new SqlConnection(strConn);

SqlCommand cmd = new SqlCommand();

cmd.Connection = conn;

cmd.CommandText = "select distinct 组别 from 联系人 where 用户名='" + tsslUserName.Text + "'";

conn.Open();

SqlDataReader sdr = cmd.ExecuteReader();

while (sdr.Read())

{

trvGroup.Nodes.Add(sdr[0].ToString());

}

sdr.Close();

conn.Close();

}

catch

{ }}

private void LoadList()

{

if (trvGroup.Nodes.Count == 0)

{

lvContact.Clear();

return;

}

if (trvGroup.SelectedNode.Index >= 0)

{

string strGroup = trvGroup.SelectedNode.Text;

try

{

lvContact.Clear();

lvContact.Columns.Add("姓名", 100);

lvContact.Columns.Add("地址", 150);

lvContact.Columns.Add("联系电话", 100);

lvContact.Columns.Add("Email", 150);

SqlConnection conn = new SqlConnection(strConn); SqlCommand cmd = new SqlCommand();

cmd.Connection = conn;

cmd.CommandText = "select 编号, 用户名, 组别, 姓名, 地址, 联系电话,Email from 联系人 where 组别='" + strGroup + "' and 用户名='" + tsslUserName.Text + "'";

conn.Open();

SqlDataReader sdr = cmd.ExecuteReader();

int count = 0;

while (sdr.Read())

{

ListViewItem lvi = new ListViewItem();

lvi.Text = sdr["姓名"].ToString();

lvi.SubItems.Add(sdr["地址"].ToString());

lvi.SubItems.Add(sdr["联系电话"].ToString()); lvi.SubItems.Add(sdr["Email"].ToString());

lvi.Tag = sdr["编号"];

lvi.ImageIndex = 0;

lvContact.Items.Add(lvi);

count++;

}

tsslCount.Text = "共计" + count.ToString() + "个联系人";

sdr.Close();

conn.Close();

}

catch

{ }

}

}

private

FormClosedEventArgs e)

{

Application.Exit();

}

private

TreeViewEventArgs e)

{

LoadList();

}

private void 详情

EventArgs e)

{

lvContact.View = View.Details;

}

private void 详情ToolStripMenuItem1_Click(object sender, EventArgs e)

{

lvContact.View = View.Details;

}

void formMain_FormClosed(object sender, void trvGroup_AfterSelect(object sender, ToolStripMenuItem_Click(object sender,

private void 图标

EventArgs e)

{ ToolStripMenuItem_Click(object sender,

lvContact.View = View.LargeIcon;

}

private void 图标ToolStripMenuItem1_Click(object sender, EventArgs e)

{

lvContact.View = View.LargeIcon;

}

//增加联系人

private void Add()

{

formAdd f = new formAdd();

if (f.ShowDialog(this) == DialogResult.OK)

{

LoadGroup();

if (trvGroup.Nodes.Count > 0)

{

trvGroup.SelectedNode = trvGroup.Nodes[0];

LoadList();

}

else

{

lvContact.Clear();

}

}

}

//修改联系人

private void Edit()

{

if (lvContact.SelectedItems.Count == 1)

{

int

id =

Convert.ToInt32(lvContact.SelectedItems[0].Tag);

formEdit f = new formEdit(id);

if (f.ShowDialog(this) == DialogResult.OK)

{

LoadGroup();

if (trvGroup.Nodes.Count > 0)

{

trvGroup.SelectedNode = trvGroup.Nodes[0]; LoadList();

}

else

{

lvContact.Clear();

}

}

}

}

private void Delete()

{

if (lvContact.SelectedItems.Count

{

return;

}

if (MessageBox.Show("是否要删除选中的联系人?", " 删除确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

{

string strWhere = " where 编号 in (";

foreach (ListViewItem lvi in lvContact.SelectedItems) {

strWhere += lvi.Tag.ToString() + ",";

}

strWhere = strWhere.Substring(0, strWhere.Length - 1); strWhere += ")";

try

{

SqlConnection conn = new SqlConnection(strConn); SqlCommand cmd = new SqlCommand();

cmd.Connection = conn;

cmd.CommandText = "delete from 联系人 " + strWhere; conn.Open();

cmd.ExecuteNonQuery();

conn.Close();

LoadGroup();

if (trvGroup.Nodes.Count > 0)

{

trvGroup.SelectedNode = trvGroup.Nodes[0]; LoadList();

}

else

{

lvContact.Clear();

}

}

catch { }

}

}

private void Search()

{

formSearch f = new formSearch(tsslUserName.Text);

f.ShowDialog();

}

private void 增加ToolStripMenuItem_Click(object sender, EventArgs e)

{

Add();}

private void 修改MToolStripMenuItem_Click(object sender, EventArgs e)

{

Edit();

}

private void 删除

EventArgs e)

{

Delete();

}

private

MouseEventArgs e)

{

Edit();

}

private void lvContact_KeyDown(object sender, KeyEventArgs e) {

if (e.KeyCode == Keys.Delete)

{

Delete();

}

}

private void 搜索SToolStripMenuItem_Click(object sender, EventArgs e)

{

Search();

}

private void tsbtnAdd_Click(object sender, EventArgs e)

{

Add();

}

private void tsbtnEdit_Click(object sender, EventArgs e)

{

Edit();

}

private void tsbtnSearch_Click(object sender, EventArgs e)

ToolStripMenuItem_Click(object sender, void lvContact_MouseDoubleClick(object sender,

{

Search();

}

private void tsbtnDelete_Click(object sender, EventArgs e) {

Delete();

}

}

A.3用户管理模块:

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void 用户BindingNavigatorSaveItem_Click(object sender, EventArgs e)

{

this.Validate();

this.用户BindingSource.EndEdit();

this.

}

private void Form1_Load(object sender, EventArgs e)

{

// TODO: 这行代码将数据加载到表

“AddressBookMgrDataSet.用户”中。您可以根据需要移动或移除它。

this.

}

}

用户TableAdapter.Update(this.AddressBookMgrDataSet.用户); 用户TableAdapter.Fill(this.AddressBookMgrDataSet.用户);

致 谢

从开始选定毕业课题到现在完成课题大概用了两个月的时间,从最初的无从下手到后来的熟练开发,一步步走来让我受益匪浅。我是第一次这么认真的努力的去开发系统,虽然还有很多不足的地方,但是收获远远地高于从书本上获取的知识,这可能就是实践的重要性吧,只有动手去做才会真正的有所发现、有所体会、有所收获。

历时大概两个月的时间终于把通讯录管理系统按设计的开发完整以及将毕业论文也完成,在这个过程中遇到了很多的困难和挫折,值得庆幸的是我遇到了优秀的老师和热心的同学,在我对这些困难束手无策时,是老师和同学的帮助,让我克服了挫折,成功的完成任务。我最强烈感谢的是我的指导老师,是他的耐心指导和无私的帮助才让我克服了一次又一次的困难,不厌其烦的给我讲解设计的重点,需要注意的地方,给我制定完成进度,督促我努力认真的完成毕业设计,而且对我的论文耐心的做了一次又一次的修改,我能顺利完成这次的毕业设计课题,指导老师真的是给了我很大的帮助,特别感谢他。

还有就是要感谢帮助我的同学和朋友,他们很热心的解答我的问题,还帮我查阅资料,我哪里有不明白的都会耐心的帮我解决,真的很谢谢帮助我的同学;除了指导老师和同学还要感谢的是我这篇论文中涉及到的各位学者,是各位学者的研究成果给的我深刻的启发和帮助,如果没有这些参考文献,我想我也很难很好的完成这篇论文的写作。

时光飞逝,眼看毕业的时间即将到来,将要离开生活和学习了四年的大学,离开朝夕相处相处的老师和同学,心中有万分的不舍,四年来建立了很深的情谊,真的很感谢这四年来默默付出的老师们,是他们无私付出,才让我们有了巨大收获,是他们带领我们走入知识的海洋,在此我想表达我最衷心的感谢!老师们正直的工作作风和悉心的教诲使我终生受益,我一定会努力成为一个对生活、对工作负责的人,成为一个对社会有所贡献的人。


相关文章

  • 软件工程毕业设计说明书内容
  • 1 引言 1.1 课题的提出 近年来随着计算机科学技术的高速发展,计算机技术也被广泛应用在我们生活的诸多领域,当然它在高校的信息化进程中也发挥着重要作用.通过先进的计算机网络技术管理高校资源,不仅提高了工作效率,而且提高了管理水平,更提高了 ...查看


  • 五星级酒店方案
  • [五星级酒店]弱电系统总体规划 时间:2013-06-26 1.1工程概况 建筑概况 项目地块地下一层主要为临时机械停车库,各设备用房.员工宿舍.员工餐厅.办公室 等.地上共18层,建筑高度为69米,一楼为酒店大堂.宴会厅.免税商店.保安办 ...查看


  • 电子信息类毕业设计课题
  • 电子信息类毕业设计课题 [电子通讯] 出租车计价系统 [过程控制] 基于单片机实现单回路智能调节.. [电子通讯] 脉冲数字频率计 [机床仪表] 仪表机床数控系统的设计(论文.. 磁流体发电论文 [电子通讯] 基于VC++6.0的PC 机与 ...查看


  • 门禁系统需求分析和技术挑战
  • 地铁门禁系统需求分析与技术挑战 需求分析与技术挑战 地铁系统具有线路长.车站多.管理人员少的特点.各个车站.车辆段.主变电站以及运营控制中心是地铁运行的控制管理区域,大部分房间为无人值班.为确保地铁正常.安全运营,保证授权人员在受控情况下方 ...查看


  • 程序设计语言课程设计指导书(2016)
  • 程序设计语言 课程设计指导书 适用专业: 计算机科学与信息工程系各专业 上海应用技术大 计算机科学与信息工程学院 2016年5月 前言 本书是针对在完成前修课程<程序设计语言>基础上的一本课程设计指导书,<程序设计语言&g ...查看


  • 通讯录管理系统的设计与实现 1
  • 课程设计报告 通讯录管理系的设计与实现 姓名:钟婷英 班级:计122 学号:1213023039 时间:2014年1月10日 1,问题描述 通讯录是用来记载和查询联系人通讯信息的工具,电子通讯录已经为手机,电子词典等设备中不可缺少的工具软件 ...查看


  • c语言程序设计_.学生通讯录信息管理系统
  • 通讯录的开发与设计 一.需求分析 1.1功能需求 1. 该程序可用于对学生的通讯方式基本信息的添加.查找.修改.删除.输出等操作, 以实现对学生通讯录信息的管理,便于同学之间的联系交往: 2. 其中此通讯录可以自动保存,以便以后查看更新学生 ...查看


  • 变电站继电保护定值远方修改设计研究
  • 变电站继电保护定值远方修改设计研究 变电站继电保护定值远方修改设计研究 陈佳 (鞍山市正达工控工程有限公司,辽宁鞍山114016) [摘 要]随着电力系统的发展,电网运行方式更加复杂,为保障电网安全.可靠地运行,继电保护装置定值也应根据运行 ...查看


  • 数据结构通讯录的制作
  • 宜春学院数学与计算机科学学院 课程设计说明书 课 程 名 称: 数据结构 课 程 代 码: 题 目: 通讯录的制作 年级/专业/班: 12软件工程 学 生 姓 名: 丁红娟 学 号: 1231310105 指 导 教 师: 李静老师 开 题 ...查看


热门内容