• 780.29 KB
  • 2022-04-22 13:41:24 发布

通讯录管理系统设计与实现毕业论文.doc

  • 43页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'通讯录管理系统设计与实现毕业论文目录文献综述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参考文献4442 第一章引言1.1通讯录的现状和背景俗话说:”海内存知己,天涯若比邻”,在现在竞争激烈,快节奏的生活中,人们之间的交流变得十分重要。随着计算机技术的飞速发展,计算机在企业管理和个人生活中的应用越来越普及,越来越重要。利用计算机实现公司往来通讯或个人的通讯管理显得越来越重要。对于用户来说,利用计算机高效率地完成通讯录的查询,是适应现代通讯录管理制度要求,而销售管理是一项琐碎、复杂而又十分细致的工作,一般不允许出错,如果实行手工操作,须手工填制大量的表格数据,这就会耗费工作人员大量的时间和精力,计算机进行销售管理工作,不仅能够保证工作准确无误、快速完成,而且还可以利用计算机对有关商品的各种信息进行管理,服务于企业的各个部门,同时计算机具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高企业销售管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。 在现代社会中管理的作用越来越显得重要和突出。一般来讲,管理通过计划、组织、指导与领导、控制等手段,为组织制定目标,应用组织的各种要素,以实现组织的目标。本世纪以来,由于社会生产力的迅速发展和科学技术的突飞猛进,人们进行信息交流的深度和广度不断增加,管理所需要的信息量急剧增长,同时对信息的处理要求及时、准确,这导致了传统的信息处理方法和手段已不能适应现代管理的需要;传统的企业管理活动中,把人、才、物作为企业的主要资源。但是随着社会化大生产的不断扩大和社会对产品多样化的需求,人们越来越重视信息在生产经营及企业管理中的作用,并把它当作企业的一种极其重要的资源,人们称之为“信息资源”,信息资源的处理已经成为当今世界上一项主要的社会活动。电子计算机的诞生 “信息时代”的开始,它使企业管理现代化成为可能。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对通讯录进行管理,有着手工管理所无法比拟的优点.例如: 42 浏览迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事劳资管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。 因此,开发这样一套软件成为很有必要的事情,在下面的正文中我们将以开发通讯录管理系统系统为例,谈谈其开发过程和所涉及到的问题及解决方法。42 第二章开发技术及技术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.2JDKJDK(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了。从7.0开始,其运行效率得到了非常大的提高,现在已有8.0问世了。42 2.1.1SWING图形用户界面(GraphicalUserInterface,GUI)。Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。工具包中所有的包都是以swing作为名称,例如javax.swing,javax.swing.event2.1.2JavaJava语言是一种面向对象的编程语言,是SunMicrosystems开发的编程平台。Java技术基于单一Java虚拟机(JVM)的概念,JVM是编程语言与机器底层软件和硬件之间的翻译器。编程语言的所有实现都必须模拟JVM,从而使Java程序可以在具有JVM版本的任何系统上运行。Java编程语言是与众不同的,因为Java程序需要经过编译(翻译为叫做Java字节码的中间语言)和解释(通过JVM分析和运行字节码)。编译只进行一次,而解释则在每次运行程序时都要进行。Java语言具有简单、面向对象、分布性、解释型、安全性、平台无关性、可移植性、高性能、支持语言级多线程等优点。广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。Java自问世以来,以其得天独厚的优势,在IT业界掀起了研究、开发它的浪潮,显示出了美好的发展前景。作为一种与底层硬件无关的、“编写一次,到处运行”的高级语言和计算平台,Java天生就具有将网络上的各个平台连成一体的能力,真正实现了“网络就是计算机”的理念。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。2.1开发工具2.1.1MyElipseMyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernat] 。42 MyEclipse是一个十分优秀的用于开发Java,J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse目前支持JavaServlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse是几乎囊括了目前所有主流开源产品的专属eclipse开发工具。2.1.1MySQL及MySQL 是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem:关系数据库管理系统)应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。2.1.2NavicatforMySQLNavicatforMySQL 是一款强大的MySQL数据库管理和开发工具,它为专业开发者提供了一套强大的足够尖端的工具,但对于新用户仍然易于学习。NavicatforMySQL基于Windows平台,为MySQL量身订作,提供类似于MySQL的用管理界面工具。此解决方案的出现,将解放PHP、J2EE等程序员以及数据库设计者、管理者的大脑,降低开发成本,为用户带来更高的开发效率。NavicatforMySQL使用了极好的图形用户界面(GUI),可以用一种安全和更为容易的方式快速和容易地创建、组织、存取和共享信息。用户可完全控制MySQL数据库和显示不同的管理资料,包括一个多功能的图形化管理用户和访问权限的管理工具,方便将数据从一个数据库转移到另一个数据库中(LocaltoRemote、RemotetoRemote、RemotetoLocal),进行档案备份。NavicatforMySQL支援Unicode,以及本地或远程MySQL服务器多连线,用户可浏览数据库、建立和删除数据库、编辑数据、建立或执行SQLqueries、管理用户权限(安全设定)、将数据库备份/复原、汇入/汇出数据(支援CSV,TXT,DBF和XML档案种类)等。软件与任何MySQL5.0.x伺服器版本兼容,支援Triggers,以及BINARYVARBINARY/BIT数据种类等的规范。42 第三章系统的需求分析3.1系统功能分析由于计算机科学技术的快速发展,开发一个通讯录管理系统管理自己联系人信息非常必要,可以提高我们办事的效率。经过多方面的思考与查询,系统的设计出通讯录系统的功能。系统分为四大模块:用户登录,联系人信息维护,查找联系人,用户信息维护。功能模块:通讯录系统联系人信息删除联系人信息排序联系人信息添加按编号查询按编号排序按姓名排序联系人信息浏览联系人信息查询按姓名查询Pig.3-1Functionmodule图3-1功能模块3.2.1用户登录模块据用户名和初始密码进行登录,验证通过后进入主窗体,输入有误则提示错误消息,要求用户重新输入,直到成功登录。在用户登录前,其他人无法对联系人信息进行操作。3.1.1联系人信息维护模块(1)修改联系人信息:可以修改联系人信息,如:由于联系人更换电话或则家庭住址等等,进行修改操作。42 (2)删除联系人信息:可以删除这个联系人的具体信息。如:这个联系人的联系方式已经改变而暂时找不到新的方式时,可以删除这个。(3)增加联系人信息:可以增加新的联系人的联系方式,包括姓名,电话,邮箱家庭住址等等。3.1.1查找联系人可以按数据库任意字段名查找联系人,将查询结果显示在软件主界面的表格中,以便查看联系人详细信息。按姓名排序、按姓名查询、快速查询。3.1.2用户信息维护将用户的操作请求发送至客户端,客户端收到用户操作请求,验证通过,对数据库中的数据进行操作,然后返回提示信息。若验证没有通过,则返回主窗体.3.1系统用例分析3.2.1参与者分析3.2.1.1该系统的参与者为Administrator,Printer,DB,各自的主要任务为:(1)Administrator:该参与者为系统登录用户,主要工作是对通讯录中的联系人的更新与维护,包括通讯录中的联系人的信息维护等。(2)Printer:该参与者主要工作是把用户所需要的信息显示在界面上,如用户查询的列表信息显示。(3)DB:该参与者为数据库系统,主要工作是搜集信息,提供搜索功能,方便用户对联系人的信息查找,更新,删除,增加等。3.2.1.2该系统的参与者在UML中的描述如图所示:Printer显示数据库管理员系统管理员Pig.3-2Schematicdiagramoftheparticipants图3-2参与者示意图42 通讯录管理系统程序流程图:按编号查询按姓名查询通讯录管理系统浏览信息查询信息添加信息排序信息删除信息按编号查询按姓名查询Pig.3-3Theprogramflowchart图3-3程序流程图3.2.1系统主用例识别3.2.2.1通过认真分析与思考,我认为自己的系统按照设计图大致将该系统的参与者,主用例和主用例的功能描述如下:(1)联系人信息维护:该主用例主要是对联系人的详细信息进行维护,通过对信息的维护可以确保自己人际交往的良好,保证日常生活的次序。(2)查找联系人:3.2.2.2该用例主要方便用户在第一时间可以很快提取到想要的联系人的各种信息,方便,快捷。系统的主用例图如图所示:42 Printer显示系统管理员联系人信息查询联系人信息维护Pig.3-4Themainintentionwithinstantiation图3-4主用例示意图3.2.1系统子用例识别联系人信息维护主用例主要包含以下子用例,各子用例描述如下:(1)增加联系人功能:该功能主要是针对用户在人际交往中认识新的朋友和伙伴,为了更好的相处及增进友谊,对方留下自己的各种联系方式,包括电话,手机,邮箱,家庭住址等等。(2)更新联系人功能:该功能主要是针对用户在于朋友,亲戚的友好相处中,由于对方更换联系方式,并且及时告诉用户信息,用户可以根据对方告知的信息进行更新,方便日后联系。(3)删除联系人功能:该功能主要是对联系人信息的删除。该主用例与子用例之间的关系描述如图所示:42 系统管理员联系人信息维护添加联系人信息更新联系人信息删除联系人信息<><><>Pig.3-5Themaincaseandsonwithexemplaryintention图3-5主用例与子用例示意图3.1数据库分析通讯录管理系统是方便大众日常生活的工具,为了迎合大众需求,具体有浏览信息、查询信息、添加和删除信息,及排序等功能。这就要求数据库结构能充分满足各种信息的输入与输出,实现有组织地,动态储存大量关联数据,方便用户访问系统中的数据。3.3.1概念结构设计根据需求分析抽象出信息结构,可得该系统的E-R图。(1).用户E-R图登陆用户用户名密码Pig.3-6TheuserE-Rdiagram图3-6用户E-R图42 根据分E-R图和需求分析,可得到总E-R图联系人年龄QQ电话性别姓名邮政编码家庭住址邮箱Pig.3-7TheoverallE-Rdiagram图3-7总体E-R图3.3.1逻辑结构设计基本信息表Friend用来保存姓名、电话、家庭住址、邮箱信息。表Friend的结构如表3-1所示。Table3-1StructurefortableFriend表3-1表Friend的结构编号字段名称数据结构说明1NameChar联系人姓名2TeleChar联系人电话3AdderChar联系人家庭住址4MailChar联系人邮箱5SexChar性别6Ageint年龄42 3.3.1数据库表的建立在设计数据库表结构之前,首先要创建一个数据库。本系统使用的数据库为Friend。创建表Friend(基本信息表),它的代码如下:CREATETABLEFriend(Namechar(20)PRIMARYKEY,Telechar(20),Addrchar(30),Mailchar(20))GO42 第四章系统实现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.forName(dbDriver).newInstance();//数据库驱动try{con=DriverManager.getConnection(url,"root","123");System.out.println("提示:数据库加载成功!");//加载数据库}catch(SQLExceptione){e.printStackTrace();}}catch(InstantiationExceptione){e.printStackTrace();}catch(IllegalAccessExceptione){e.printStackTrace();}catch(ClassNotFoundExceptione){42 e.printStackTrace();}}publicConnectiongetConnection(){returncon;}}4.1系统功能实现4.2.1系统登录界面:4.2.1.1登录功能:privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){inti=0;flag0=1;UserDaouser=newUserDao();if(user.queryUser(jTextField1.getText().trim(),jPasswordField1getText().trim())){MainFromfr=newMainFrom();fr.setVisible(true);this.dispose();}else{i++;if(i<=3){JOptionPane.showMessageDialog(this,"用户名或密码请重新登录!");jTextField1.setText("");jPasswordField1.setText("");}elsethis.dispose();}}42 4.2.1.1重置功能(代码):privatevoidjButton2ActionPerformed(java.awt.event.ActionEventevt){jTextField1.setText("");jPasswordField1.setText("");}4.2.1系统主界面:4..2.2.1浏览联系人信息:privatevoidjButton6ActionPerformed(java.awt.event.ActionEventevt){Viewft=newView();ft.setVisible(true);}4..2.2.2查询联系人信息:privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){Searchfr=newSearch();fr.setVisible(true);}4..2.2.3添加联系人信息:privatevoidjButton2ActionPerformed(java.awt.event.ActionEventevt){Addft=newAdd();ft.setVisible(true);}4..2.2.4删除联系人信息:privatevoidjButton3ActionPerformed(java.awt.event.ActionEventevt){Deleteft=newDelete();ft.setVisible(true);}4..2.2.5排序联系人信息:privatevoidjButton4ActionPerformed(java.awt.event.ActionEventevt){Sortft=newSort();42 ft.setVisible(true);}4.1功能模块的实现4.3.1浏览联系人信息功能:privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){Objecttitle[]={"编号","姓名","性别","电话","年龄","邮政编码","家庭住址","QQ"};Stringstr=(String)jComboBox1_view.getSelectedItem();Stringsql="SELECT*FROMSTUINFO";ResultSetrs1=choose.dataSelect(sql);inti=0;try{while(rs1.next()){i++;}}catch(SQLExceptione){e.printStackTrace();}Objectdata[][]=newObject[i+1][8];if(str.equals("全部信息")){sql="SELECT*FROMSTUINFO";}elsesql="SELECT*FROMSTUINFOWHEREQQ=""+str+""";ResultSetrs=choose.dataSelect(sql);intj=0;try{while(rs.next()){data[j][0]=rs.getString(1);data[j][1]=rs.getString(2);42 data[j][2]=rs.getString(3);data[j][3]=rs.getString(4);data[j][4]=rs.getString(5);data[j][5]=rs.getString(6);data[j][6]=rs.getString(7);data[j][7]=rs.getString(8);j++;}}catch(SQLExceptione){e.printStackTrace();}JTabletable=newJTable(data,title);jScrollPane1.setViewportView(table);jScrollPane1.revalidate();}4.3.1查询联系人信息功能:privatevoidjButton_Search1ActionPerformed(java.awt.event.ActionEventevt){Objecttitle[]={"编号","姓名","性别","电话","邮政编码","家庭住址","QQ"};Stringstr1=(String)jComboBox_Search1.getSelectedItem();Stringstr2=jTextField_Search1.getText();Stringsql=null;if(str1.equals("编号")){sql="SELECT*FROMSTUINFOWHERE编号=""+str2+""";}elseif(str1.equals("姓名")){sql="SELECT*FROMSTUINFOWHERE姓名=""+str2+""";}elseif(str1.equals("QQ")){sql="SELECT*FROMSTUINFOWHEREQQ=""+str2+""";}42 ResultSetrs=choose.dataSelect(sql);Object[][]datas=newObject[50][8];try{intj=0;while(rs.next()){datas[j][0]=rs.getString(1);datas[j][1]=rs.getString(2);datas[j][2]=rs.getString(3);datas[j][3]=rs.getString(4);datas[j][4]=rs.getString(5);datas[j][5]=rs.getString(8);datas[j][6]=rs.getString(6);datas[j][7]=rs.getString(7);j++;}}catch(SQLExceptione1){e1.printStackTrace();}JTabletable=newJTable(datas,title);jScrollPane1.setViewportView(table);jScrollPane1.revalidate();}4.3.1添加联系人信息功能:4.3.3.1添加:privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){String[]option={"添加","修改"};intn=JOptionPane.showOptionDialog(this,"请仔细检查信息,确定添加?","添加信息",42 JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE,null,option,option[1]);if(n==0){//获取添加的内容Stringacctnum=jTextField1.getText();Stringname=jTextField2.getText();Stringsex=jTextField3.getText();Stringmobile=jTextField4.getText();Stringacademy=jTextField5.getText();Stringmajor=jTextField6.getText();Stringadress=jTextField7.getText();Stringclasses=jTextField8.getText();//插入内容Stringsql="INSERTINTOSTUINFOVALUES(""+acctnum+"",""+name+"",""+sex+"",""+mobile+"",""+academy+"",""+major+"",""+adress+"",""+classes+"")";choose.dataInsert(sql);JOptionPane.showMessageDialog(this,"添加成功!","提示",JOptionPane.INFORMATION_MESSAGE);jButton2ActionPerformed(evt);}}4.3.3.1重置:privatevoidjButton2ActionPerformed(java.awt.event.ActionEventevt){jTextField1.setText("");jTextField2.setText("");jTextField3.setText("");jTextField4.setText("");42 jTextField5.setText("");jTextField6.setText("");jTextField7.setText("");jTextField8.setText("");}4.3.1删除联系人信息功能:privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){Stringstr=(String)jComboBox1_view.getSelectedItem();Stringstr2=jTextField1.getText();Stringsql=null;if(str.equals("编号")){sql="SELECT*FROMstuinfowhere编号=""+str2+""";}elsesql="SELECT*FROMstuinfowhere姓名=""+str2+""";ResultSetrs=choose.dataSelect(sql);try{while(rs.next()){jTextField2_acctnum.setText(rs.getString(1));jTextField9_name.setText(rs.getString(2));jTextField3_sex.setText(rs.getString(3));jTextField4_mobile.setText(rs.getString(4));jTextField5_academy.setText(rs.getString(5));jTextField6_major.setText(rs.getString(6));jTextField7_address.setText(rs.getString(7));jTextField8_class.setText(rs.getString(8));}}catch(SQLExceptione){e.printStackTrace();}42 String[]option={"删除","修改"};intn=JOptionPane.showOptionDialog(this,"请仔细核对信息,确认删除?","删除信息",JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE,null,option,option[1]);if(n==0){if(str.equals("编号")){sql="DELETEFROMstuinfoWHERE编号=""+str2+""";}elsesql="DELETEFROMstuinfoWHERE姓名=""+str2+""";choose.dataDelete(sql);JOptionPane.showMessageDialog(this,"删除成功!","提示",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.1排序联系人信息功能privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){Stringstr=(String)jComboBox1.getSelectedItem();Objecttitle[]={"姓名","编号","QQ"};42 Stringsql=null;if(str.equals("编号")){sql="SELECT*FROMstuinfoORDERBY编号ASC";}elseif(str.equals("姓名")){sql="SELECT*FROMstuinfoORDERBY姓名ASC";}elsesql="SELECT*FROMstuinfoORDERBYQQASC";ResultSetrs=choose.dataSelect(sql);Object[][]datas=newObject[51][8];try{intj=0;while(rs.next()){datas[j][0]=rs.getString(1);datas[j][1]=rs.getString(2);datas[j][2]=rs.getString(3);datas[j][3]=rs.getString(4);datas[j][4]=rs.getString(5);datas[j][5]=rs.getString(6);datas[j][6]=rs.getString(7);datas[j][7]=rs.getString(8);j++;}}catch(SQLExceptione1){e1.printStackTrace();}JTabletable=newJTable(datas,title);jScrollPane1.setViewportView(table);jScrollPane1.revalidate();}42 第五章系统测试5.1登陆用例的程序设计登陆界面如图所示:Pig.5-1Logininterfacediagram图5-1登录界面图在窗体上分别设置它们属性:窗体的标题为“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(){super("login");Containerc=getContentPane();42 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;42 }/***登录控制函数*@paramtexfname*@parampass*/publicvoidload(JTextFieldtexfname,JPasswordFieldpass){if("成功".equals(service.load(texfname,pass))){loadFrame.setVisible(false);mainFrame.setVisible(true);}}登录成功后给出的提示界面:Pig.5-2Afterasuccessfulloginpromptdiagram图5-2登录成功后的提示图当点击cancel时显示的界面:Pig.5-3Cancelthehintmap图5-3取消提示图42 触发cancel事件的代码如下所示:/***取消登录控制函数*/publicvoidcancel(){inta=JOptionPane.showConfirmDialog(loadFrame,"退出吗?","提示!",JOptionPane.YES_NO_OPTION);if(a==JOptionPane.YES_OPTION){System.exit(0);}}5.1登录成功:登录用户登录成功后转向主窗体Pig.5-4Themainformdiagram图5-4主窗体图主窗体的实现的代码: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();42 Panelp2=newPanel();publicMainFrame(){super("海内存知己-------天涯若比邻");Containerc=getContentPane();BorderLayoutd=newBorderLayout();c.setLayout(d);table.setEnabled(false);JScrollPanescrollpane=newJScrollPane(table);for(inti=0;i