• 572.50 KB
  • 2022-04-22 13:41:22 发布

通讯录管理系统毕业论文.doc

  • 32页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'通讯录管理系统毕业论文目录论文摘要2引言3一、开发工具及相关技术3(一)MVC3(二)JDK4(三)SWING4(四)Java5(五)MyElipse5(六)MySQL6二、通讯录系统的需求分析6(一)调查与准备工作6(三)系统用例识别7三、通讯录系统的设计9(一)项目规划9(二)类的分析与设计9(三)系统功能的时序图描述11(四)数据库设计13四、通讯录系统的实现15(一)系统用例的实现15(二)数据库的实现29结束语30致谢31参考文献3232 论文摘要随着社会的发展,人际关系变得越来越重要,为了保持良好的人际关系,必须经常与亲戚、朋友、同学、同事保持联系,但是有时候存在着许多的限制条件,比如怎样找到交流对象的各种信息?可能你会想到现实生活中的手机等通讯工具,由于这些工具的单一性,不可能在第一时间找到自己想要的信息资料,因此,为了能够快速查找到联系人的信息,节省查找时间,开发通讯录管理系统。通讯录管理系统是一个基于C/S模式的个人通讯录管理系统。它是将自己的联系人的具体信息集中管理,成为一个方便人们使用的小软件。在开发过程中主要运用Java,JDK,MySQL,SWING等技术,由于开发工具和数据库之间的良好使用,可以为开发带来方便,使之成为一个可施行的系统。从而达到开发的目的-----实现对通讯录信息的管理。通过采用相关技术,以及老师的辅导和同学们的帮助,将系统设计的功能全部实现。功能包括:用户的登录,添加联系人信息,修改联系人信息,删除联系人信息,查询联系人信息,可以浏览全部通讯的联系人,并且可以根据数据表的各字段来查询你所要找的联系人等功能。关键词:c/s架构,Java,UML,Swing32 基于C/S架构的通讯录系统的设计与实现引言俗话说:”海内存知己,天涯若比邻”,在现在竞争激烈,快节奏的生活中,人们之间的交流变得十分重要。由于个人社会交流圈子的扩大,结识的人也越来越多,仅靠手机存储联系人的信息还不够全面也不够安全,为此开发出通讯录管理系统,方便存储联系人的详细信息,更安全更方便。本通讯录管理系统是用计算机管理电子通讯录。在计算机还未普及之前通讯管理都是由联系人采用名片,笔录手工记录的方式来操作。现在一般的通讯录管理都是采用计算机作为工具的,来帮助人们进行更有效的通讯录信息管理。通讯录管理系统是一个信息管理系统,要求应用程序功能完备,易使用等特点。本论文根据毕业设计的内容,系统地阐述了整个通讯录管理系统的功能与实现。该系统实现了添加联系人信息,修改联系人信息,删除联系人信息,查询联系人信息,可以浏览全部通讯的联系人,并且可以根据数据表的各个字段来查询你所要找的联系人等功能。一、开发工具及相关技术(一)MVCMVC是Model-View-Controller的简称,即模型-视图-控制器。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View,View会从潜在的Model中获取数据来刷新自己。MVC是XeroxPARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。最近几年它被推荐为SUN公司的JavaEE平台的设计模式。受到越来越多的WEB开发者的欢迎和喜爱。MVC设计模式如图1所示:业务处理32 (控制器)接受用户请求调用模型响应用户请求选择视图显示响应结果通知数据更新更新更新状态查询用户请求选择视图(模型)代表应用程序状态响应状态查询处理业务逻辑通知视图业务状态更新(视图)显示模型状态接受数据更新请求把用户输入的数据传给控制器图1为MVC示意图(二)JDKJDK(JavaDevelopmentKit)是SunMicrosystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的JavaSDK(Softwaredevelopmentkit)。JDK是整个Java的核心,包括了Java运行环境,一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM运行效率要比SunJDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本信息也不再延续以前的1.2,1.3,1.4,而是变成了5.0,6.0了。从6.0开始,其运行效率得到了非常大的提高。(三)SWING图形用户界面(GraphicalUserInterface,GUI)不仅可以提供各种数据的直观的图形表示方案,而且可以建立友好的交互方式,从而使得32 计算机软件操作简单,进而推动计算机迅速的进入普通家庭,并逐渐成为人们日常生活和工作的有力助手。从Java语言诞生到现在,Java语言已经提供两类图形用户界面,在早期的版本中,主要是AWT图形用户界面。它的平台相关性较强,而且缺少基本的剪贴板和打印支持功能。在最近的一些版本中,形成了Swing图形用户界面。它不仅增强了功能,而且减弱了平台的相关性,一方面,Swing图形用户界面比AWT图形用户界面可以克服更多的由于操作系统不同所带来的在图形界面或交互方式上的差别;另一方面,Swing图形用户界面还增加了功能,可以定制指定的操作系统风格的图形用户界面。(四)JavaJava语言是一种面向对象的编程语言,是SunMicrosystems开发的编程平台。Java技术基于单一Java虚拟机(JVM)的概念,JVM是编程语言与机器底层软件和硬件之间的翻译器。编程语言的所有实现都必须模拟JVM,从而使Java程序可以在具有JVM版本的任何系统上运行。Java编程语言是与众不同的,因为Java程序需要经过编译(翻译为叫做Java字节码的中间语言)和解释(通过JVM分析和运行字节码)。编译只进行一次,而解释则在每次运行程序时都要进行。Java语言具有简单、面向对象、分布性、解释型、安全性、平台无关性、可移植性、高性能、支持语言级多线程等优点。Java自问世以来,以其得天独厚的优势,在IT业界掀起了研究、开发它的浪潮,显示出了美好的发展前景。作为一种与底层硬件无关的、“编写一次,到处运行”的高级语言和计算平台,Java天生就具有将网络上的各个平台连成一体的能力,真正实现了“网络就是计算机”的理念。(五)MyElipseMyEclipse为Eclipse提供了一个大量私有和开源的Java工具的集合,这解决了各种开源工具的不一致和缺点。NitroX是一个繁杂而强大的加速JavaWeb应用开发的工具,还包含了一个强大且能够编译所有JSP和StrutsWeb应用的工具AppXRay。Myeclipse包含生成StrutsWeb应用的自动工具,还包含其他的工具如配置Hibernate框架的数据库连接及SQL浏览器,为在Eclipse上进行Web开发提供了许多便捷。(六)MySQLMySQL是一个开放源码的小型关系型数据库管理系统,开发者为瑞典MySQLAB公司。目前My32 SQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。二、通讯录系统的需求分析(一)调查与准备工作由于计算机科学技术的快速发展,开发一个通讯录管理系统管理自己联系人信息非常必要,可以提高我们办事的效率。经过多方面的思考与查询,系统的设计出通讯录系统的功能。系统分为四大模块:用户登录,联系人信息维护,查找联系人,用户信息维护。1.用户登录模块:根据用户名和初始密码进行登录,验证通过后进入主窗体,输入有误则提示错误消息,要求用户重新输入,直到成功登录。在用户登录前,其他人无法对联系人信息进行操作。2.联系人信息维护模块:(1)修改联系人信息:可以修改联系人信息,如:由于联系人更换手机号或则家庭住址等等,进行修改操作。(2)删除联系人信息:可以删除这个联系人的具体信息。如:这个联系人的联系方式已经改变而暂时找不到新的方式时,可以删除这个。(3)增加联系人信息:可以增加新的联系人的联系方式,包括姓名,手机号,邮箱地址等等。3.查找联系人:可以按数据库任意字段名查找联系人,将查询结果显示在软件主界面的表格中,以便查看联系人详细信息。4.用户信息维护:将用户的操作请求发送至客户端,客户端收到用户操作请求,验证通过,对数据库中的数据进行操作,然后返回提示信息。若验证没有通过,则返回主窗体.(二)系统参与者识别32 1.该系统的参与者为Administrator,Printer,DB,各自的主要任务为:(1)Administrator:该参与者为系统登录用户,主要工作是对通讯录中的联系人的更新与维护,包括通讯录中的联系人的信息维护等。(2)Printer:该参与者主要工作是把用户所需要的信息显示在界面上,如用户查询的列表信息显示。(3)DB:该参与者为数据库系统,主要工作是搜集信息,提供搜索功能,方便用户对联系人的信息查找,更新,删除,增加等。2.该系统的参与者在UML中的描述如图2所示:图2参与者示意图(三)系统用例识别1.系统主用例识别通过认真分析与思考,我认为自己的系统按照设计图大致将该系统的参与者,主用例和主用例的功能描述如下:(1)联系人信息维护:该主用例主要是对联系人的详细信息进行维护,通过对信息的维护可以确保自己人际交往的良好,保证日常生活的次序。(2)查找联系人:该用例主要方便用户在第一时间可以很快提取到想要的联系人的各种信息,方便,快捷。系统的主用例图如图3所示:32 图3主用例示意图2.系统子用例识别联系人信息维护主用例主要包含以下子用例,各子用例描述如下:(1)增加联系人功能:该功能主要是针对用户在人际交往中认识新的朋友和伙伴,为了更好的相处及增进友谊,对方留下自己的各种联系方式,包括电话,手机,邮箱,家庭住址等等。(2)更新联系人功能:该功能主要是针对用户在于朋友,亲戚的友好相处中,由于对方更换联系方式,并且及时告诉用户信息,用户可以根据对方告知的信息进行更新,方便日后联系。(3)删除联系人功能:该功能主要是对联系人信息的删除。该主用例与子用例之间的关系描述如图4所示:32 图4主用例与子用例示意图三、通讯录系统的设计(一)项目规划通讯录管理系统所设计实现的功能主要由用户登录,联系人信息维护,查找联系人,用户信息维护模块组成:1.用户登录:根据用户名和初始密码进行登录,验证通过后进入主窗体,输入有误则提示错误消息,要求用户重新输入,直到成功登录。在用户登录前,其他人无法对联系人信息进行操作.2.联系人信息维护:主要包括增加联系人信息,删除联系人信息,更新联系人信息.3.查找联系人:可以按数据库任意字段名查找联系人,将查询结果显示在软件主界面的表格中,以便查看联系人详细信息。4.用户信息维护:将用户的操作请求发送至客户端,客户端收到用户操作请求,验证通过,对数据库中的数据进行操作,然后返回提示信息。若验证没有通过,则返回主窗体.(二)类的分析与设计1.登陆用户32 该类的描述如下:类名:user类中的属性:登陆的用户名,密码.类中的方法在UML中该类的属性方法描述如图5所示:图5登录用户类图2.联系人信息该类的描述如下:类名:lianxiren类中的属性:姓名,年龄,性别,电话,家庭住址,邮政编码,邮箱,QQ.类中的方法在UML中该类的属性方法描述如图6所示:32 图6联系人类图(三)系统功能的时序图描述(1)联系人信息查询时序图如图7所示:图7联系人信息查询时序图(2)联系人信息删除时序图如图8所示:图8联系人信息删除时序图32 (3)联系人信息增加时序图如图9所示:图9联系人信息增加时序图(4)联系人信息更新时序图如图10所示:图10联系人信息更新时序图32 (四)数据库设计1.数据库建模在设计数据库时,对现实世界进行分析,抽象,并从中找出内在联系,进而确定数据库的结构,这一个过程称为数据库建模。它主要包括两部分内容:确定最基本的数据结构和对约束建模。经过对通讯录管理系统的分析,可以提取出两个实体图如下所示:登陆用户实体图:密码用户名登陆用户图11登录用户实体图联系人实体图:邮政编码家庭住址姓名邮箱电话联系人QQ年龄性别32 图12联系人实体图2.数据库逻辑设计依据数据库的原理,并结合以上E-R图,经过转换,可以导出各个关系。由于通讯录管理系统是保密性较高的系统,关系到自己的生活圈子,在数据库设计时没有单独设计表,而是在业务逻辑中制定用户和密码,同时符合本系统宗旨:简单易于操作。联系人信息(编号,姓名,性别,年龄,家庭住址,邮政编码,邮箱,手机,QQ)关键字为编号也就是数据库中的id属性。3.数据库的物理设计数据库物理设计阶段的任务是根据具体计算机系统的特点,为给定的数据库模型确定合理的存储结构和存取方法。所谓的“合理”主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。以下为communication表在数据库中的设计表:列名数据类型长度允许空idint1namevarchar10üageint3üsexvarchar4üphonevarchar30üaddressvarchar30ümailnumvarchar10üEmailvarchar20ü32 QQvarchar15ü图13为communication表的结构四、通讯录系统的实现(一)系统用例的实现1.登陆用例的程序设计登陆界面如图14所示:图14登录界面图在窗体上布置两个文本框、两个按钮、两个标签。分别设置它们属性:窗体的标题为“login”,两个文本框分别对应“username”和“password”,其它部分是由Swing的图形完成设置的。界面设置代码为:privatestaticfinallongserialVersionUID=-8166865260561556563L;ClientContextclientContext;Labellabname=newLabel("username:");Labellabload=newLabel("password:");//TextFieldtexfload=newTextField(10);JTextFieldtexfname=newJTextField(10);JButtonbutlogin=newJButton("login");JButtonbutcancel=newJButton("canel");JPasswordFieldjpass=newJPasswordField(10);publicLoginFrame()32 {super("login");Containerc=getContentPane();BorderLayoutd=newBorderLayout();c.setLayout(d);jpass.setEchoChar("*");getRootPane().setDefaultButton(butlogin);//默认按钮可以相应回车请求butlogin.addActionListener(this);butcancel.addActionListener(this);Panelp1=newPanel();Panelp2=newPanel();Panelp3=newPanel();p1.add(labname);p1.add(texfname);p2.add(labload);p2.add(jpass);p3.add(butlogin);p3.add(butcancel);c.add(p1,BorderLayout.NORTH);c.add(p2,BorderLayout.CENTER);c.add(p3,BorderLayout.SOUTH);this.setSize(280,150);this.setLocation(450,300);}当点击登陆所触发事件代码为:publicvoidactionPerformed(ActionEvente){if(e.getSource()==butlogin)clientContext.load(texfname,jpass);elseif(e.getSource()==butcancel)clientContext.cancel();}publicvoidsetClientContext(ClientContextclientContext){this.clientContext=clientContext;}/***登录控制函数*@paramtexfname*@parampass32 */publicvoidload(JTextFieldtexfname,JPasswordFieldpass){if("成功".equals(service.load(texfname,pass))){loadFrame.setVisible(false);mainFrame.setVisible(true);}}登录成功后给出的提示界面:图15登录成功后的提示图当点击cancel时显示的界面:图16取消提示图触发cancel事件的代码如下所示:/***取消登录控制函数*/publicvoidcancel(){inta=JOptionPane.showConfirmDialog(loadFrame,"退出吗?","提示!",JOptionPane.YES_NO_OPTION);if(a==JOptionPane.YES_OPTION){System.exit(0);32 }}2.登录用户登录成功后转向主窗体图17主窗体图主窗体的实现的代码:JButtonbutSelect=newJButton("select");JButtonbutbrowse=newJButton("browse");JButtonbutadd=newJButton("add");JButtonbutupdate=newJButton("update");JButtonbutdelete=newJButton("delete");JButtonbutout=newJButton("exit");JComboBoxcomboBox=newJComboBox();JTextFieldtexf=newJTextField(8);Panelp1=newPanel();Panelp2=newPanel();publicMainFrame(){super("海内存知己-------天涯若比邻");32 Containerc=getContentPane();BorderLayoutd=newBorderLayout();c.setLayout(d);table.setEnabled(false);JScrollPanescrollpane=newJScrollPane(table);for(inti=0;i>,交通大学出版社,2008.632'