还剩43页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
本科毕业论文(设计)题目通讯录管理系统目录TOC\o1-2\h\z\u文献综述2第一章引言3通讯录的现状和背景3第二章开发技术及技术
52.1开发技术
52.2开发工具6第三章系统的需求分析
83.1系统功能分析
83.2系统用例分析
93.3数据库分析12第四章系统实现
154.1数据库的实现
154.2系统功能实现
164.3功能模块的实现18第五章系统测试
255.1登陆用例的程序设计
255.2登录成功:登录用户登录成功后转向主窗体
285.3登录用户对联系人信息的管理操作30第六章总结42致谢43参考文献44文献综述通讯录管理系统的设计与实现李本城西南大学荣昌校区信息管理系重庆荣昌402460摘要随着社会的发展,人际关系变得越来越重要,为了保持良好的人际关系,必须经常与亲戚、朋友、同学、同事保持联系,但是有时候存在着许多的限制条件,比如怎样找到交流对象的各种信息?可能你会想到现实生活中的手机等通讯工具,由于这些工具的单一性,不可能在第一时间找到自己想要的信息资料,因此,为了能够快速查找到联系人的信息,节省查找时间,开发通讯录管理系统通讯录管理系统是一个基于C/S模式的个人通讯录管理系统它是将自己的联系人的具体信息集中管理,成为一个方便人们使用的小软件在开发过程中主要运用JavaJDKMySQLSWING等技术由于开发工具和数据库之间的良好使用,可以为开发带来方便,使之成为一个可施行的系统从而达到开发的目的----实现对通讯录信息的管理 “优秀的人际关系是一个人成功的重要因素”这已经成为不争的事实,这些日益繁多的人际交往使得我们很难搞清楚与每个人具体的联系方式,这严重影响了一个人的发展,所以通讯录管理系统的建立已是必要的了,此次课程设计我利用了数据结构中的知识以及JAVA语言的知识设计的通讯录管理系统能够达到快速了解联系人信息,通讯录管理系统主要包括1.通讯录链表的建立2.通讯者结点的插入3.通讯者结点的查询4.通讯者结点的删除5.通讯录链表的输出0.退出通讯录管理系统你能够通过本系统了解联系人的姓名、手机、家庭地址,你也可以根据自己的需要改变系统的信息,也可以浏览全部通讯的联系人,并且可以根据数据表的各字段来查询你所要找的联系人等功能相信通过使用该通讯录管理系统能够更加便利你的生活,为你的良好的人际关系添砖加瓦,帮助你走向成功目前的信息通信能力已经走超出了我们的想象,越来越多的通信工具出现,但无论是何种工具,其基本的一项功能就是记录通信者的信息,也便在需要时进行查寻 关键词个人通讯录管理系统、添加、删除、查找、数据库第一章引言
1.1通讯录的现状和背景俗话说:”海内存知己,天涯若比邻”在现在竞争激烈,快节奏的生活中,人们之间的交流变得十分重要随着计算机技术的飞速发展,计算机在企业管理和个人生活中的应用越来越普及,越来越重要利用计算机实现公司往来通讯或个人的通讯管理显得越来越重要对于用户来说,利用计算机高效率地完成通讯录的查询,是适应现代通讯录管理制度要求,而销售管理是一项琐碎、复杂而又十分细致的工作,一般不允许出错,如果实行手工操作,须手工填制大量的表格数据,这就会耗费工作人员大量的时间和精力,计算机进行销售管理工作,不仅能够保证工作准确无误、快速完成,而且还可以利用计算机对有关商品的各种信息进行管理,服务于企业的各个部门,同时计算机具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等这些优点能够极大地提高企业销售管理的效率也是企业的科学化、正规化管理,与世界接轨的重要条件 在现代社会中管理的作用越来越显得重要和突出一般来讲,管理通过计划、组织、指导与领导、控制等手段,为组织制定目标,应用组织的各种要素,以实现组织的目标本世纪以来,由于社会生产力的迅速发展和科学技术的突飞猛进,人们进行信息交流的深度和广度不断增加,管理所需要的信息量急剧增长,同时对信息的处理要求及时、准确,这导致了传统的信息处理方法和手段已不能适应现代管理的需要;传统的企业管理活动中,把人、才、物作为企业的主要资源但是随着社会化大生产的不断扩大和社会对产品多样化的需求,人们越来越重视信息在生产经营及企业管理中的作用,并把它当作企业的一种极其重要的资源,人们称之为“信息资源”,信息资源的处理已经成为当今世界上一项主要的社会活动电子计算机的诞生 “信息时代”的开始,它使企业管理现代化成为可能 随着科学技术的不断提高计算机科学日渐成熟其强大的功能已为人们深刻认识它已进入人类社会的各个领域并发挥着越来越重要的作用 作为计算机应用的一部分使用计算机对通讯录进行管理有着手工管理所无法比拟的优点.例如: 浏览迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等这些优点能够极大地提高人事劳资管理的效率也是企业的科学化、正规化管理与世界接轨的重要条件 因此,开发这样一套软件成为很有必要的事情在下面的正文中我们将以开发通讯录管理系统系统为例谈谈其开发过程和所涉及到的问题及解决方法第二章开发技术及技术
2.1开发技术
2.
1.1MVCMVC全名是ModelViewController,是模型model-视图view-控制器controller的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式比如一批统计数据可以分别用柱状图、饼图来表示C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新模型-视图-控制器(MVC)是XeroxPARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使用后来被推荐为Oracle旗下Sun公司JavaEE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点
2.
1.2JDKJDKJavaDevelopmentKit是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的JDK
5.0开始提供了泛型等非常实用的功能,其版本信息也不再延续以前的
1.2,
1.3,
1.4,而是变成了
5.
06.0了从
7.0开始,其运行效率得到了非常大的提高,现在已有
8.0问世了
2.
1.3SWING图形用户界面(GraphicalUserInterfaceGUI)Swing是一个用于开发Java应用程序用户界面的开发工具包它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面工具包中所有的包都是以swing作为名称,例如javax.swingjavax.swing.event
2.
1.4JavaJava语言是一种面向对象的编程语言,是SunMicrosystems开发的编程平台Java技术基于单一Java虚拟机JVM的概念,JVM是编程语言与机器底层软件和硬件之间的翻译器编程语言的所有实现都必须模拟JVM,从而使Java程序可以在具有JVM版本的任何系统上运行Java编程语言是与众不同的,因为Java程序需要经过编译(翻译为叫做Java字节码的中间语言和解释(通过JVM分析和运行字节码)编译只进行一次,而解释则在每次运行程序时都要进行Java语言具有简单、面向对象、分布性、解释型、安全性、平台无关性、可移植性、高性能、支持语言级多线程等优点广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群Java自问世以来,以其得天独厚的优势,在IT业界掀起了研究、开发它的浪潮,显示出了美好的发展前景作为一种与底层硬件无关的、“编写一次,到处运行”的高级语言和计算平台,Java天生就具有将网络上的各个平台连成一体的能力,真正实现了“网络就是计算机”的理念在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景
2.2开发工具
2.
1.1MyElipseMyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernat] MyEclipse是一个十分优秀的用于开发JavaJ2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错MyEclipse目前支持JavaServlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能可以说MyEclipse是几乎囊括了目前所有主流开源产品的专属eclipse开发工具
2.
1.2MySQL及MySQL 是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMSRelationalDatabaseManagementSystem关系数据库管理系统应用软件之一MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言MySQL软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境
2.
1.3NavicatforMySQLNavicatforMySQL 是一款强大的MySQL数据库管理和开发工具,它为专业开发者提供了一套强大的足够尖端的工具,但对于新用户仍然易于学习NavicatforMySQL基于Windows平台,为MySQL量身订作,提供类似于MySQL的用管理界面工具此解决方案的出现,将解放PHP、J2EE等程序员以及数据库设计者、管理者的大脑,降低开发成本,为用户带来更高的开发效率NavicatforMySQL使用了极好的图形用户界面(GUI),可以用一种安全和更为容易的方式快速和容易地创建、组织、存取和共享信息用户可完全控制MySQL数据库和显示不同的管理资料,包括一个多功能的图形化管理用户和访问权限的管理工具,方便将数据从一个数据库转移到另一个数据库中(LocaltoRemote、RemotetoRemote、RemotetoLocal),进行档案备份NavicatforMySQL支援Unicode,以及本地或远程MySQL服务器多连线,用户可浏览数据库、建立和删除数据库、编辑数据、建立或执行SQLqueries、管理用户权限(安全设定)、将数据库备份/复原、汇入/汇出数据(支援CSVTXTDBF和XML档案种类)等软件与任何MySQL
5.
0.x伺服器版本兼容,支援Triggers,以及BINARYVARBINARY/BIT数据种类等的规范第三章系统的需求分析
3.1系统功能分析由于计算机科学技术的快速发展,开发一个通讯录管理系统管理自己联系人信息非常必要,可以提高我们办事的效率经过多方面的思考与查询,系统的设计出通讯录系统的功能系统分为四大模块用户登录,联系人信息维护,查找联系人,用户信息维护功能模块Pig.3-1Functionmodule图3-1功能模块
3.
2.1用户登录模块据用户名和初始密码进行登录验证通过后进入主窗体,输入有误则提示错误消息,要求用户重新输入,直到成功登录在用户登录前,其他人无法对联系人信息进行操作
3.
1.1联系人信息维护模块1修改联系人信息可以修改联系人信息,如由于联系人更换电话或则家庭住址等等,进行修改操作2删除联系人信息可以删除这个联系人的具体信息如这个联系人的联系方式已经改变而暂时找不到新的方式时,可以删除这个3增加联系人信息可以增加新的联系人的联系方式,包括姓名,电话,邮箱家庭住址等等
3.
1.2查找联系人可以按数据库任意字段名查找联系人,将查询结果显示在软件主界面的表格中,以便查看联系人详细信息按姓名排序、按姓名查询、快速查询
3.
1.3用户信息维护将用户的操作请求发送至客户端,客户端收到用户操作请求,验证通过,对数据库中的数据进行操作,然后返回提示信息若验证没有通过,则返回主窗体.
3.2系统用例分析
3.
2.2参与者分析
3.
2.
1.1该系统的参与者为Administrator,Printer,DB各自的主要任务为1Administrator该参与者为系统登录用户,主要工作是对通讯录中的联系人的更新与维护,包括通讯录中的联系人的信息维护等2Printer该参与者主要工作是把用户所需要的信息显示在界面上,如用户查询的列表信息显示3DB该参与者为数据库系统,主要工作是搜集信息,提供搜索功能,方便用户对联系人的信息查找,更新,删除,增加等
3.
2.
1.2该系统的参与者在UML中的描述如图所示Pig.3-2Schematicdiagramoftheparticipants图3-2参与者示意图通讯录管理系统程序流程图Pig.3-3Theprogramflowchart图3-3程序流程图
3.
2.3系统主用例识别
3.
2.
2.1通过认真分析与思考,我认为自己的系统按照设计图大致将该系统的参与者,主用例和主用例的功能描述如下1联系人信息维护该主用例主要是对联系人的详细信息进行维护,通过对信息的维护可以确保自己人际交往的良好,保证日常生活的次序2查找联系人
3.
2.
2.2该用例主要方便用户在第一时间可以很快提取到想要的联系人的各种信息,方便,快捷系统的主用例图如图所示:Pig.3-4Themainintentionwithinstantiation图3-4主用例示意图
3.
2.4系统子用例识别联系人信息维护主用例主要包含以下子用例,各子用例描述如下1增加联系人功能该功能主要是针对用户在人际交往中认识新的朋友和伙伴,为了更好的相处及增进友谊,对方留下自己的各种联系方式,包括电话,手机,邮箱,家庭住址等等2更新联系人功能该功能主要是针对用户在于朋友,亲戚的友好相处中,由于对方更换联系方式,并且及时告诉用户信息,用户可以根据对方告知的信息进行更新,方便日后联系3删除联系人功能该功能主要是对联系人信息的删除该主用例与子用例之间的关系描述如图所示Pig.3-5Themaincaseandsonwithexemplaryintention图3-5主用例与子用例示意图
3.3数据库分析通讯录管理系统是方便大众日常生活的工具,为了迎合大众需求,具体有浏览信息、查询信息、添加和删除信息,及排序等功能这就要求数据库结构能充分满足各种信息的输入与输出,实现有组织地,动态储存大量关联数据,方便用户访问系统中的数据
3.
3.1概念结构设计根据需求分析抽象出信息结构,可得该系统的E-R图
1.用户E-R图Pig.3-6TheuserE-Rdiagram图3-6用户E-R图根据分E-R图和需求分析,可得到总E-R图Pig.3-7TheoverallE-Rdiagram图3-7总体E-R图
3.
3.2逻辑结构设计基本信息表Friend用来保存姓名、电话、家庭住址、邮箱信息表Friend的结构如表3-1所示Table3-1StructurefortableFriend表3-1表Friend的结构编号字段名称数据结构说明1NameChar联系人姓名2TeleChar联系人电话3AdderChar联系人家庭住址4MailChar联系人邮箱5SexChar性别6Ageint年龄
3.
3.3数据库表的建立在设计数据库表结构之前,首先要创建一个数据库本系统使用的数据库为Friend创建表Friend(基本信息表),它的代码如下CREATETABLEFriendNamechar20PRIMARYKEYTelechar20Addrchar30Mailchar20GO第四章系统实现
4.1数据库的实现数据库连接packageconnect_sql;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;publicclassConnects{privateStringdbDriver=com.mysql.jdbc.Driver;privateStringurl=jdbc:mysql://localhost/new_db;privateConnectioncon=null;publicConnects{try{Class.forNamedbDriver.newInstance;//数据库驱动try{con=DriverManager.getConnectionurlroot123;System.out.println提示数据库加载成功!;//加载数据库}catchSQLExceptione{e.printStackTrace;}}catchInstantiationExceptione{e.printStackTrace;}catchIllegalAccessExceptione{e.printStackTrace;}catchClassNotFoundExceptione{e.printStackTrace;}}publicConnectiongetConnection{returncon;}}
4.2系统功能实现
4.
2.1系统登录界面
4.
2.
1.1登录功能privatevoidjButton1ActionPerformedjava.awt.event.ActionEventevt{inti=0;flag0=1;UserDaouser=newUserDao;ifuser.queryUserjTextField
1.getText.trimjPasswordField1getText.trim{MainFromfr=newMainFrom;fr.setVisibletrue;this.dispose;}else{i++;ifi=3{JOptionPane.showMessageDialogthis用户名或密码请重新登录!;jTextField
1.setText;jPasswordField
1.setText;}elsethis.dispose;}}
4.
2.
1.2重置功能(代码)privatevoidjButton2ActionPerformedjava.awt.event.ActionEventevt{jTextField
1.setText;jPasswordField
1.setText;}
4.
2.2系统主界面
4..
2.
2.1浏览联系人信息privatevoidjButton6ActionPerformedjava.awt.event.ActionEventevt{Viewft=newView;ft.setVisibletrue;}
4..
2.
2.2查询联系人信息privatevoidjButton1ActionPerformedjava.awt.event.ActionEventevt{Searchfr=newSearch;fr.setVisibletrue;}
4..
2.
2.3添加联系人信息privatevoidjButton2ActionPerformedjava.awt.event.ActionEventevt{Addft=newAdd;ft.setVisibletrue;}
4..
2.
2.4删除联系人信息privatevoidjButton3ActionPerformedjava.awt.event.ActionEventevt{Deleteft=newDelete;ft.setVisibletrue;}
4..
2.
2.5排序联系人信息privatevoidjButton4ActionPerformedjava.awt.event.ActionEventevt{Sortft=newSort;ft.setVisibletrue;}
4.3功能模块的实现
4.
3.1浏览联系人信息功能privatevoidjButton1ActionPerformedjava.awt.event.ActionEventevt{Objecttitle[]={编号姓名性别电话年龄邮政编码家庭住址QQ};Stringstr=StringjComboBox1_view.getSelectedItem;Stringsql=SELECT*FROMSTUINFO;ResultSetrs1=choose.dataSelectsql;inti=0;try{whilers
1.next{i++;}}catchSQLExceptione{e.printStackTrace;}Objectdata[][]=newObject[i+1]
[8];ifstr.equals全部信息{sql=SELECT*FROMSTUINFO;}elsesql=SELECT*FROMSTUINFOWHEREQQ=+str+;ResultSetrs=choose.dataSelectsql;intj=0;try{whilers.next{data[j]
[0]=rs.getString1;data[j]
[1]=rs.getString2;data[j]
[2]=rs.getString3;data[j]
[3]=rs.getString4;data[j]
[4]=rs.getString5;data[j]
[5]=rs.getString6;data[j]
[6]=rs.getString7;data[j]
[7]=rs.getString8;j++;}}catchSQLExceptione{e.printStackTrace;}JTabletable=newJTabledatatitle;jScrollPane
1.setViewportViewtable;jScrollPane
1.revalidate;}
4.
3.2查询联系人信息功能privatevoidjButton_Search1ActionPerformedjava.awt.event.ActionEventevt{Objecttitle[]={编号姓名性别电话邮政编码家庭住址QQ};Stringstr1=StringjComboBox_Search
1.getSelectedItem;Stringstr2=jTextField_Search
1.getText;Stringsql=null;ifstr
1.equals编号{sql=SELECT*FROMSTUINFOWHERE编号=+str2+;}elseifstr
1.equals姓名{sql=SELECT*FROMSTUINFOWHERE姓名=+str2+;}elseifstr
1.equalsQQ{sql=SELECT*FROMSTUINFOWHEREQQ=+str2+;}ResultSetrs=choose.dataSelectsql;Object[][]datas=newObject
[50]
[8];try{intj=0;whilers.next{datas[j]
[0]=rs.getString1;datas[j]
[1]=rs.getString2;datas[j]
[2]=rs.getString3;datas[j]
[3]=rs.getString4;datas[j]
[4]=rs.getString5;datas[j]
[5]=rs.getString8;datas[j]
[6]=rs.getString6;datas[j]
[7]=rs.getString7;j++;}}catchSQLExceptione1{e
1.printStackTrace;}JTabletable=newJTabledatastitle;jScrollPane
1.setViewportViewtable;jScrollPane
1.revalidate;}
4.
3.3添加联系人信息功能
4.
3.
3.1添加privatevoidjButton1ActionPerformedjava.awt.event.ActionEventevt{String[]option={添加修改};intn=JOptionPane.showOptionDialogthis请仔细检查信息,确定添加?添加信息JOptionPane.YES_NO_OPTIONJOptionPane.WARNING_MESSAGEnulloptionoption
[1];ifn==0{//获取添加的内容Stringacctnum=jTextField
1.getText;Stringname=jTextField
2.getText;Stringsex=jTextField
3.getText;Stringmobile=jTextField
4.getText;Stringacademy=jTextField
5.getText;Stringmajor=jTextField
6.getText;Stringadress=jTextField
7.getText;Stringclasses=jTextField
8.getText;//插入内容Stringsql=INSERTINTOSTUINFOVALUES+acctnum++name++sex++mobile++academy++major++adress++classes+;choose.dataInsertsql;JOptionPane.showMessageDialogthis添加成功!提示JOptionPane.INFORMATION_MESSAGE;jButton2ActionPerformedevt;}}
4.
3.
3.2重置privatevoidjButton2ActionPerformedjava.awt.event.ActionEventevt{jTextField
1.setText;jTextField
2.setText;jTextField
3.setText;jTextField
4.setText;jTextField
5.setText;jTextField
6.setText;jTextField
7.setText;jTextField
8.setText;}
4.
3.4删除联系人信息功能privatevoidjButton1ActionPerformedjava.awt.event.ActionEventevt{Stringstr=StringjComboBox1_view.getSelectedItem;Stringstr2=jTextField
1.getText;Stringsql=null;ifstr.equals编号{sql=SELECT*FROMstuinfowhere编号=+str2+;}elsesql=SELECT*FROMstuinfowhere姓名=+str2+;ResultSetrs=choose.dataSelectsql;try{whilers.next{jTextField2_acctnum.setTextrs.getString1;jTextField9_name.setTextrs.getString2;jTextField3_sex.setTextrs.getString3;jTextField4_mobile.setTextrs.getString4;jTextField5_academy.setTextrs.getString5;jTextField6_major.setTextrs.getString6;jTextField7_address.setTextrs.getString7;jTextField8_class.setTextrs.getString8;}}catchSQLExceptione{e.printStackTrace;}String[]option={删除修改};intn=JOptionPane.showOptionDialogthis请仔细核对信息,确认删除?删除信息JOptionPane.YES_NO_OPTIONJOptionPane.WARNING_MESSAGEnulloptionoption
[1];ifn==0{ifstr.equals编号{sql=DELETEFROMstuinfoWHERE编号=+str2+;}elsesql=DELETEFROMstuinfoWHERE姓名=+str2+;choose.dataDeletesql;JOptionPane.showMessageDialogthis删除成功!提示JOptionPane.INFORMATION_MESSAGE;jTextField2_acctnum.setText;jTextField9_name.setText;jTextField3_sex.setText;jTextField4_mobile.setText;jTextField5_academy.setText;jTextField6_major.setText;jTextField7_address.setText;jTextField8_class.setText;}}
4.
3.5排序联系人信息功能privatevoidjButton1ActionPerformedjava.awt.event.ActionEventevt{Stringstr=StringjComboBox
1.getSelectedItem;Objecttitle[]={姓名编号QQ};Stringsql=null;ifstr.equals编号{sql=SELECT*FROMstuinfoORDERBY编号ASC;}elseifstr.equals姓名{sql=SELECT*FROMstuinfoORDERBY姓名ASC;}elsesql=SELECT*FROMstuinfoORDERBYQQASC;ResultSetrs=choose.dataSelectsql;Object[][]datas=newObject
[51]
[8];try{intj=0;whilers.next{datas[j]
[0]=rs.getString1;datas[j]
[1]=rs.getString2;datas[j]
[2]=rs.getString3;datas[j]
[3]=rs.getString4;datas[j]
[4]=rs.getString5;datas[j]
[5]=rs.getString6;datas[j]
[6]=rs.getString7;datas[j]
[7]=rs.getString8;j++;}}catchSQLExceptione1{e
1.printStackTrace;}JTabletable=newJTabledatastitle;jScrollPane
1.setViewportViewtable;jScrollPane
1.revalidate;}第五章系统测试
5.1登陆用例的程序设计登陆界面如图所示Pig.5-1Logininterfacediagram图5-1登录界面图在窗体上分别设置它们属性窗体的标题为“login”,两个文本框分别对应“username”和“password”,其它部分是由Swing的图形完成设置的界面设置代码为privatestaticfinallongserialVersionUID=-8166865260561556563L;ClientContextclientContext;Labellabname=newLabelusername;Labellabload=newLabelpassword;//TextFieldtexfload=newTextField10;JTextFieldtexfname=newJTextField10;JButtonbutlogin=newJButtonlogin;JButtonbutcancel=newJButtoncanel;JPasswordFieldjpass=newJPasswordField10;publicLoginFrame{superlogin;Containerc=getContentPane;BorderLayoutd=newBorderLayout;c.setLayoutd;jpass.setEchoChar*;getRootPane.setDefaultButtonbutlogin;//默认按钮可以相应回车请求butlogin.addActionListenerthis;butcancel.addActionListenerthis;Panelp1=newPanel;Panelp2=newPanel;Panelp3=newPanel;p
1.addlabname;p
1.addtexfname;p
2.addlabload;p
2.addjpass;p
3.addbutlogin;p
3.addbutcancel;c.addp1BorderLayout.NORTH;c.addp2BorderLayout.CENTER;c.addp3BorderLayout.SOUTH;this.setSize280150;this.setLocation450300;}当点击登陆所触发事件代码为publicvoidactionPerformedActionEvente{ife.getSource==butloginclientContext.loadtexfnamejpass;elseife.getSource==butcancelclientContext.cancel;}publicvoidsetClientContextClientContextclientContext{this.clientContext=clientContext;}/***登录控制函数*@paramtexfname*@parampass*/publicvoidloadJTextFieldtexfnameJPasswordFieldpass{if成功.equalsservice.loadtexfnamepass{loadFrame.setVisiblefalse;mainFrame.setVisibletrue;}}登录成功后给出的提示界面Pig.5-2Afterasuccessfulloginpromptdiagram图5-2登录成功后的提示图当点击cancel时显示的界面Pig.5-3Cancelthehintmap图5-3取消提示图触发cancel事件的代码如下所示/***取消登录控制函数*/publicvoidcancel{inta=JOptionPane.showConfirmDialogloadFrame退出吗?提示!JOptionPane.YES_NO_OPTION;ifa==JOptionPane.YES_OPTION{System.exit0;}}
5.2登录成功:登录用户登录成功后转向主窗体Pig.5-4Themainformdiagram图5-4主窗体图主窗体的实现的代码JButtonbutSelect=newJButtonselect;JButtonbutbrowse=newJButtonbrowse;JButtonbutadd=newJButtonadd;JButtonbutupdate=newJButtonupdate;JButtonbutdelete=newJButtondelete;JButtonbutout=newJButtonexit;JComboBoxcomboBox=newJComboBox;JTextFieldtexf=newJTextField8;Panelp1=newPanel;Panelp2=newPanel;publicMainFrame{super海内存知己-------天涯若比邻;Containerc=getContentPane;BorderLayoutd=newBorderLayout;c.setLayoutd;table.setEnabledfalse;JScrollPanescrollpane=newJScrollPanetable;forinti=0;idescription.length;i++{comboBox.addItemdescription[i];}butSelect.addActionListenerthis;butbrowse.addActionListenerthis;butadd.addActionListenerthis;butupdate.addActionListenerthis;butdelete.addActionListenerthis;butout.addActionListenerthis;p
1.addcomboBox;p
1.addtexf;p
1.addbutSelect;p
1.addbutbrowse;p
2.addbutadd;p
2.addbutupdate;p
2.addbutdelete;p
2.addbutout;c.addscrollpaneBorderLayout.CENTER;c.addp1BorderLayout.NORTH;c.addp2BorderLayout.SOUTH;this.setSize700450;this.setLocation350200;}
5.3登录用户对联系人信息的管理操作
5.
3.1对联系人的添加操作添加界面的如图所示Pig.5-5Increasingtheinterfacemap图5-5增加界面图界面初始化的代码实现Labellabname=newLabelname Label.CENTER;Labellabage=newLabelage Label.CENTER;Labellabsex=newLabelsex Label.CENTER;Labellabphone=newLabelphone Label.CENTER;Labellabaddress=newLabeladdress Label.CENTER;Labellabpostercard=newLabelmailnum:Label.CENTER;Labellabemaill=newLabelEmaill Label.CENTER;publicJTextFieldgetTexfname{returntexfname;}publicJTextFieldgetTexfage{returntexfage;}publicJTextFieldgetTexfsex{returntexfsex;}publicJTextFieldgetTexfphone{returntexfphone;}publicJTextFieldgetTexfaddress{returntexfaddress;}publicJTextFieldgetTexfpostercard{returntexfpostercard;}publicJTextFieldgetTexfemaill{returntexfemaill;}publicJTextFieldgetTexfqq{returntexfqq;}Labellabqq=newLabelQQ Label.CENTER;Labellab=newLabeladdLabel.CENTER;JTextFieldtexfname=newJTextField;JTextFieldtexfage=newJTextField;JTextFieldtexfsex=newJTextField;JTextFieldtexfphone=newJTextField;JTextFieldtexfaddress=newJTextField;JTextFieldtexfpostercard=newJTextField;JTextFieldtexfemaill=newJTextField;JTextFieldtexfqq=newJTextField;JButtondetermine=newJButtonok;JButtonbutcancel=newJButtoncanel;Panelp=newPanel;Panelp2=newPanel;publicAddFrame{superAdd;Containerc=getContentPane;GridLayoutg=newGridLayout82;BorderLayoutb=newBorderLayout;c.setLayoutb;p.setLayoutg;p.addlabname;p.addtexfname;p.addlabage;p.addtexfage;p.addlabsex;p.addtexfsex;p.addlabphone;p.addtexfphone;p.addlabaddress;p.addtexfaddress;p.addlabpostercard;p.addtexfpostercard;p.addlabemaill;p.addtexfemaill;p.addlabqq;p.addtexfqq;p
2.adddetermine;p
2.addbutcancel;c.addlabBorderLayout.NORTH;c.addpBorderLayout.CENTER;c.addp2BorderLayout.SOUTH;determine.setEnabledtrue;determine.addActionListenerthis;butcancel.addActionListenerthis;this.setSize200350;this.setLocation500200;}当点击ok按钮时,触发事件将信息插入到数据库,代码如下所示/***添加函数*/publicvoidinsertAddFrameaddFrame{inta=0;try{stm=conn.createStatement;rs=stm.executeQueryselectidfromcommunication;//rs.last;//a=rs.getInt1;whilers.next{a=rs.getInt1;}}catchSQLExceptione1{System.out.print数据编号;}String[]snews=newString
[9];snews
[0]=addFrame.getTexfname.getText;snews
[1]=addFrame.getTexfage.getText;snews
[2]=addFrame.getTexfsex.getText;snews
[3]=addFrame.getTexfphone.getText;snews
[4]=addFrame.getTexfaddress.getText;snews
[5]=addFrame.getTexfpostercard.getText;snews
[6]=addFrame.getTexfemaill.getText;snews
[7]=addFrame.getTexfqq.getText;try{pstm=conn.prepareStatementinsertintocommunicationvalues;pstm.setInt1a+1;pstm.setString2snews
[0];pstm.setString3snews
[1];pstm.setString4snews
[2];pstm.setString5snews
[3];pstm.setString6snews
[4];pstm.setString7snews
[5];pstm.setString8snews
[6];pstm.setString9snews
[7];pstm.executeUpdate;pstm.close;JOptionPane.showMessageDialogaddFrame添加成功!提示JOptionPane.UNDEFINED_CONDITION;}catchSQLExceptione1{e
1.printStackTrace;try{conn.rollback;}catchSQLExceptione{//TODOAuto-generatedcatchblocke.printStackTrace;}JOptionPane.showMessageDialogaddFrame添加失败!提示JOptionPane.ERROR_MESSAGE;}}下面举例一个添加演示Pig.5-6Increasetherelevantinformationinterfacediagram图5-6增加相关信息界面图点击ok按钮实现数据库的插入和并在主窗体中筛选出刚刚添加的信息显示Pig.5-7Increasingtheinterfacemapinformationrelatedtosuccess图5-7增加相关信息成功的界面图
5.
3.2对联系人的更新操作更新界面如图所示Pig.5-8Theinterfacemapupdaterelevantinformation图5-8更新相关信息的界面图实现更新的代码实现publicvoidselect_UpUpdateFramef{try{pstm=conn.prepareStatementselectagesexphoneaddressmailnumemailqqfromcommunicationwherename=+f.getTexfname.getText+;rs=pstm.executeQuery;String[]info=newString
[7];inti=1;whilers.next{f.getTexfage.setTextInteger.toStringrs.getInti++;f.getTexfsex.setTextrs.getStringi++;f.getTexfphone.setTextrs.getStringi++;f.getTexfaddress.setTextrs.getStringi++;f.getTexfpostercard.setTextrs.getStringi++;f.getTexfemaill.setTextrs.getStringi++;f.getTexfqq.setTextrs.getStringi++;}rs.close;pstm.close;}catchSQLExceptione{JOptionPane.showConfirmDialogf查询失败无此人信息!;e.printStackTrace;}}下面是更新的界面演示当我们把随便更改一个家庭住址信息时,Pig.5-9Theinterfacemaptoamendtherelevantinformation图5-9修改相关信息的界面图当点击ok时,进行数据库更新,在主窗体界面可以进行验证达到用户的要求Pig.5-10Modifytheinterfacemapinformationrelatedtosuccess图5-10修改相关信息成功的界面图进行更新数据库的操作代码/***修改函数*/publicvoidupdateUpdateFramef{intid=0;try{PreparedStatementpstm2=conn.prepareStatementselectidfromcommunicationwherename=+f.getTexfname.getText+;rs=pstm
2.executeQuery;whilers.next{id=rs.getInt1;}rs.close;pstm
2.close;pstm=conn.prepareStatementupdatecommunicationsetname=age=sex=phone=address=mailnum=email=qq=whereid=;pstm.setString1f.getTexfname.getText;pstm.setString2f.getTexfage.getText;pstm.setString3f.getTexfsex.getText;pstm.setString4f.getTexfphone.getText;pstm.setString5f.getTexfaddress.getText;pstm.setString6f.getTexfpostercard.getText;pstm.setString7f.getTexfemaill.getText;pstm.setString8f.getTexfqq.getText;pstm.setInt9id;pstm.executeUpdate;pstm.close;JOptionPane.showMessageDialogf修改成功!;}catchSQLExceptione1{e
1.printStackTrace;JOptionPane.showMessageDialogf修改失败!提示JOptionPane.ERROR_MESSAGE;}}
5.
3.3对联系人进行删除操作先在主窗体的界面上选择想删除的联系人信息Pig.5-11Todeletetheinformationinterfacediagram图5-11删除信息界面图再点击delete按钮,触发删除事件,删除成功,并给出提示信息Pig.5-12Deleteinformationsuccessfullyinterfacediagram图5-12删除信息成功界面图触发事件的相关代码publicvoiddeleteJComboBoxcomboBoxJTextFieldtexf{try{ifcomboBox.getSelectedItem.equalsid{pstm=conn.prepareStatementdeletefromcommunicationwhere+comboBox.getSelectedItem+=+texf.getText;}else{pstm=conn.prepareStatementdeletefromcommunicationwhere+comboBox.getSelectedItem+=+texf.getText+;}pstm.executeUpdate;pstm.close;TextFieldtexfnull=newTextField;iftexf.getText.equalstexfnull.getText{JOptionPane.showMessageDialognull删除失败,请输入要删除的对象信息!提示JOptionPane.ERROR_MESSAGE;}else{JOptionPane.showMessageDialognull删除成功!提示JOptionPane.UNDEFINED_CONDITION;}}catchSQLExceptione1{JOptionPane.showMessageDialognull删除失败!;}}第六章总结大三即将结束,接系里通知,开始选毕业课题啦心里不敢懈怠,又看了一遍题目,下决心选择了《通讯录管理系统的设计与实现》这个其他人都没有选的项目,当时心里是这样想的,自己对文件的操作差不多忘光了,此时可以复习一下,不过也有点担心,害怕自己难以完成,因为觉得此题目相对较复杂 在编写程序的过程中出现了很多问题,自己现静下来仔细查找错误所在,也有些比较顽固的问题,自己实在能力有限,就去请教老师和同学,一步一步,一个一个模块,终于顺利完成了自己验证了一遍各部分的功能,最后找老师验收通过近几个月的努力,我顺利完成通讯录系统的开发基于设计要求,我查阅了大量相关资料,进行了需求分析,概要设计,详细设计,编码,调试运行等软件开发步骤无论在理论上还是在实践上都有较大幅度的提高,独立分析问题、解决问题和与他人交流的能力得到明显提升通过毕业设计,我对JAVA语言有了深刻的认识JAVA是完全面向对象的语言,使用方便,界面友好,编译简单,能极大地节省运行时间,提高响应速度其次软件工程的思想有了深入的了解完善需求,最大限度的满足用户所需,充分做好风险分析为了保证项目的进度,定期对项目进行评审工作本次项目虽小,我却悟出了个简单的道理学习就像软件开发,拿到一本书之后看看,提出自己未知的问题,进而分析该问题,解决问题通过毕业设计,我深刻认识到在当今竞争激烈的社会中只有学到本领才能有立足之地,同时也体会到软件开发的辛苦,首先要有耐心,要忍受着密密麻麻的代码,无数遍的调试,无数遍的修改,但是,当你调试成功时,你会感到努力的意义,成功的喜悦此外,我认识到基础课的重要,要学好一门编程语言,一定要动手,实践是最好的方法致谢时光荏苒,转眼间四年的大学生活就要过去,在毕业设计接近尾声之际,才真正感觉到两年光阴的短暂,对我们的学习、成长默默付出的各位老师的不舍,对一起生活两年的同学的不舍,对校园里熟悉的风景和教室里温暖氛围不舍……回忆四年的大学生活,不禁心潮澎湃,心中的感激之情难于言表首先,感谢西南大学荣昌校区信息管理系的老师,你们无微不至的关怀是我不断进步的最大动力你们严谨的治学风范,渊博的知识积累,正直的工作作风不断熏陶着我,指引着我在此特别感谢指导老师丁华锋老师的热情关怀和悉心指导,在此表示真诚地感谢和深深的谢意在即将结束大学生活之际,我们为蓬勃发展的母校感到骄傲,为爱岗敬业的老师感到自豪,相信明天会更好,深信会有属于我们自己的一方天地向在百忙中抽出时间对本文进行评审并提出宝贵意见的各位老师表示衷心地感谢其次要感谢在本次论文设计中给予我帮助的同学感谢他们在系统出现错误一一的为我纠正,是他们的帮助,让我解决了一次又一次的难题再次,感谢大学几年教我的老师们,是他们的教育让我具备了一定的开发技术,为本次的系统升级提供了基础最后,感谢一直来陪伴在我身边的朋友们,是他们让我的大学生活变得丰富多次,感谢他们的鼓励与支持!参考文献
[1]其庆《Java模块设计实例经典[M]》冶金工业出版社,
2004.6
[2]甲耀《CoreJava高级应用程序设计教程》电子工业出版社,
2006.3
[3]JamesGosling《Java语言规范[M]》机械工业出版社,
2006.5
[4]昊斯特曼,《java核心技术》,机械工业出版社
2008.5
[5]曹静,《软件开发生命周期与统一建模语言UML》,水利水电出版社
2008.2
[6]温钊著《Java例解教程[M]》中国铁道出版社,
2004.1
[7]郝玉龙《JavaEE编程技术》交通大学出版社,
2008.6
[8]李刚《Java数据库技术详解》北京工业出版社
2010.7
[9]王占全苏玲《eclipse全程指南基础知识·Web开发·SWT/JFace开发·Eclipse插件》机械工业出版社
2008.3
[10]美AllenDowney著张平译《探秘Java-如何像计算机科学家一样思考》浙江大学出版社
2004.12
[11]刘增杰张少军《MYSQL
5.5从零开始学》清华大学出版社
2012.1
[12]美JimConailen《UML构建Web应用(第二版)》中国电力出版社
2003.2
[13]胡世忠《云端时代杀手级应用大数据分析》人民邮电出版社
3013.6
[14]秦小波《编写高质量代码改善Java程序的151个建议》机械工业出版社
2012.12
[15]刘晓华《精通JAVA核心技术PDF》电子工业出版社
2003.7
[16]张云涛龚玲《Eclipse精要与高级开发技术》电子工业出版社
2005.12
[17]曹广鑫《Java企业级开发项目实践》清华大学出版社
2004.7
[18]杨忠科《J2EE开发全程实录》清华大学出版社
2005.9通讯录系统联系人信息删除联系人信息排序联系人信息添加按编号查询按编号排序按姓名排序联系人信息浏览联系人信息查询按姓名查询Printer显示数据库管理员系统管理员按编号查询按姓名查询通讯录管理系统浏览信息查询信息添加信息排序信息删除信息按编号查询按姓名查询Printer显示系统管理员联系人信息查询联系人信息维护系统管理员联系人信息维护添加联系人信息更新联系人信息删除联系人信息IndudeIndudeIndude登陆用户用户名密码联系人年龄QQ电话性别姓名邮政编码家庭住址邮箱。