1、可以一次完成若干条信息的输入;(3)显示功能:完成全部通讯录信息的显示(一屏最多显示10条,超过十条应能够自动分屏显示);(4)查找功能:完成按姓名查找通讯信息;(5)删除功能:完成按姓名删除通讯信息;(6)应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!3 算法分析3.1 程序总体设计思想个人通讯录件的功能模块有:(1)提供登陆界面,方便用户进入,满足需求;(2)添加:可以添加通讯录记录,依次输入姓名、性别、出生日期、移动电话、固定电话、MSN/QQ、公司地址、E-Mail地址、家庭住址、组别、备注后,会提示是否继续添加;(3)显示:可以以表格形式输出所有通讯录里
2、的记录;(4)查询:可以用姓名查询;(5)修改:输入欲修改的那个人的名字后,再依次输入姓名、性别、出生日期、移动电话、固定电话、MSN/QQ、公司地址、E-Mail地址、家庭住址、组别、备注即可完成修改;(6)删除:可以直接删除多余的通讯录记录;(7)帮助:可以在帮助里面修改用户密码;(8)导出数据库:可以将数据库以文本txt格式导出。程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。3.2 程序设计总体框图个人通讯录管理系统设计的总体框图如图3-1:图3-1 个人通讯录管理系统设计的总体框图3.3 程序详细设计该程序共有18个类,也分别创建了18个java源程序文件,以下按照文
3、件名字母排序先后解释(在设计软件MyEclipse工程排序也是如此),另外在此只是简要介绍相关源程序所实现的功能,程序截图参见调试,源程序参见附录:Demonstrationaction.java文件做的是功能表中“编辑查找全部”的功能,使用此项功能的时候,在点击“显示查询结果”后,让界面显示出全部数据库中的内容;点击“退出全部查询”的时候退出该功能。Demonstrationframe.java文件做的就是“编辑查找全部”的界面,上面有标题、文字显示框和两个控制按钮“显示查询结果”和“退出全部查询”。Dlframe.java文件做的是“编辑删除”的界面,有一个文字输入框(提供按名字来删除),
4、和两个控制按钮“删除”和“放弃”。Dlframeaction.java文件做的是“编辑删除”的相关功能,当输入名字之后会进行查找删除,若在数据库中含有当前名字的数据则删除该条数据并显示“删除成功”,否则显示“未找到该项”。点击“放弃”即退出删除功能。Fdframe.java文件做的是“编辑查询”的界面,提供按名字搜索,有一个文字输入框,和两个控制按钮“查询”和“撤销”。Fdframeaction.java文件做的是“编辑查询”的相关功能,输入需要查询的姓名之后,如若在数据库中有符合的数据后,则显示查询结果,并弹窗显示“查询结束”;如若没有对应的数据,则弹窗显示“没有记录”。点击“撤销”则退出查
5、询功能。Fdkeep.java文件做的是“文件导出数据库”的界面,有一个文字输入框提供输入导出的数据库的完整路径,两个控制按钮“save”和“give up”。Fdkeepaction.java文件做的是“文件导出数据库”的相关功能,输入了完整路径之后,会启动Microsoft Office Access导出数据库;如若路径错误,则会弹窗显示“路径错误!”。点击“give up”后则退出界面。Frameaction.java文件做的是主界面的相关功能选择。主界面有三个大选项,文件、编辑和帮助。其中文件包括导入数据库和退出,编辑包括删除、添加、按姓名查找和查找全部,帮助则是修改管理员密码。Ima
6、ge.java文件是使主界面支持背景图片的切换,使用的是工程文件夹Images下的U.jpg。支持任意大小的图片。Loginframe.java文件做的是主界面的登录界面。即在程序以java Application运行后需要进行用户登录的界面,提供用户名和密码的文本输入框和两个控制按钮“certain”和“cancel”。LoginIn.java文件做的是登录界面的相关功能,对输入的用户名与密码和数据库进行匹配,如若正确则弹窗显示“登录成功”,否则弹窗显示“用户名或密码错误”。Myaddress.java文件做的是定义了一个公共类Myaddress,并定义了主函数是调用这个Myaddress的
7、公共类。Panelframe.java文件做的是“编辑添加”的界面,提供给用户向数据库添加新数据,有对于姓名、性别、出生日期、移动电话、固定电话、MSN/QQ、公司地址、E-Mail地址、家庭住址、组别、备注等信息录入的文本输入框。以及最后的两个控制按钮“保存”和“取消”。Panelframeaction.java文件做的是“编辑添加”的相关功能。在界面中输入相关信息后,点击保存则系统向数据库存入信息,点击取消则将信息丢弃。同时还确保信息的相关性,例如控制了出生日期是使用了日期控件的使用等等。Revisionmovement.java文件做的是“帮助修改密码”的相关功能。首先验证用户输入的原始
8、密码是否正确,然后接受用户输入的6位以上的新密码,存入数据库并修改密码信息。Revisionpassword.java文件做的是“帮助修改密码”的界面。界面包括两个旧密码和新密码的文本输入框,和两个控制按钮“保存”和“取消”。Year.java文件做的是在出生日期里面的日期控件,对平年闰年的区分,然后对各个月不同日期做了相关定义。4 调试过程调试是一耳光程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编写出任何好的软件。这是当初我最开始接触C语言的时候让我感受很深的一句话,我当时很不能理解如果调试真的这么重要,为什么在我们的课本里面却找不到相关
9、的内容,甚至一些相当经典的教材里面也没有对其进行大篇幅的介绍。直到自己开始写了一些大一点的程序,才发现有时候自己最初设计程序在一些细节上的新颖想法是那么的可笑,带来的只是无穷无尽的错误和威胁。程序编写完成就应该调试自己所完成的程序,以减少程序中的bug。以下是我的程序调试以及运行过程截图。说明:本程序的运行环境是MyEclipse 6.5,经验证在Eclipse中运行会产生错误“Column not Found”,但是最开始我是在MyEclipse中完成的程序,我也就没有去就针对Eclipse进行更改,Linux的环境虚拟机我没有安装,所以不知道在虚拟机Linux下是否能够正常运行。打开MyE
10、clipse 6.5软件,导入Workspace,如图4-1:图4-1 编程环境截图右键点击工程,选择“Run asJava Application”,成功运行,出现用户登录界面,输入用户名“wj”,密码“123”,如图4-2:图4-2 个人通讯录登入界面点击“certain”,登录成功,点击确定,进入个人通讯录管理系统 ,如图4-3:图4-3 个人通讯录管理系统主界面点击左上角的“文件导出数据库”,如图4-4:图4-4 导出数据库输入完整路径之后点击“save”就可以以文本格式保存数据库,例如我们就按照提示输入路径,则数据库的备份文件如图4-5:图4-5 保存的数据库文件点击“文件退出”则退
11、出了个人通讯录管理系统。接下来是对数据库进行添加、编辑、查找、删除等功能。故先看看数据库的原文件。注:本数据库是由Microsoft Office Access 2007创建,如若计算机里面没有Access,编译环境会对Access驱动的设置报错!数据库如图4-6:图4-6 原始数据库选择“编辑添加”对数据库进行添加操作。输入如下信息,如图4-7:图4-7 信息添加界面点击“保存”将新加的信息加入数据库,系统会告知“添加成功”。如图4-8:图 4-8 系统信息添加界面重新查看数据库,可以发现新添加的信息已经加入了数据库。如图4-9:图4-9 添加信息后的数据库部分截图由上面操作可以知道,添加功
12、能正常。选择“编辑删除”,按照提示输入删除的用户名,如图4-10,就假设我们删除刚才添加的信息:图4-10 删除记录点击“删除”后,则系统会提示“删除成功”,如图4-11:图4-11 删除成功重新查看数据库,发现刚才添加的信息已经被成功删除,如图4-12:图4-12 成功删除后的数据库通过以上的删除操作可以知道,系统的删除功能也是可以正常运行的。点击“文件按姓名查找”,输入所需要查找的用户名,如图4-13:图4-13 查找记录点击“查询”,系统会对数据库进行查找,并提示“查找结束”,如图4-14:图4-14 查找结束并会弹窗显示所查找的结果,如图4-15:图4-15 查找结果以上步骤只能说明是
13、正确输入了数据库中包含的数据,如若数据库中未含有被查找的内容,则系统也应该做出正确的反应。如图4-16,查找数据库中没有的信息:图4-16 输入数据库中没有的用户名点击“查询”之后,则系统提示“没有记录”,如图4-17:图4-17 查找错误的消息提示以上通过了正确查找和错误两方面充分论证了查找功能的正常运行。点击文件“编辑查找全部”,则会弹出一个空白的查找结果界面,这是因为在程序设计中默认的是不显示所得的信息,如图4-18:图4-18 查找全部界面然后点击“显示查询结果”,即可显示出全部查询结果。如图4-19:图4-19 查找全部结果另外本系统还有一个功能,更改当前用户的密码。点击“帮助修改密
14、码”,显示修改密码界面,如图4-20:图4-20 修改密码界面分别输入当前的旧密码和所更改的新密码,如图4-21:图4-21 输入旧密码和新密码点击“保存”即可成功修改密码,并可以修改数据库。如图4-22:图4-22 密码修改成功消息查看数据库中的表userpass,新密码已经更改成功,如图4-23:图4-23 数据库中的新密码显示另外需要注意的是,修改的新密码是需要该系统重启生效。即退出后重新运行该工程才能使新密码生效。至此,个人通讯录管理系统的调试运行全部完成。5 体会这次的程序实设计实验是对我们进入大学以来学习程序设计语言结果的一次大检验。自己动手,自己发现和解决问题。发现了自己的许多不
15、足。平时没有掌握好的知识在这次实验中彻底暴露出来,经过不断思考,不断查阅资料和上机运行,解决其中大部分问题,当然还存在一些问题没有解决。我相信在以后的学习能够解决好它们。但是,收获还是不小的,我不仅对Java的操作有了进一步的掌握,还了解到了程序设计的书写风格及其注释的格式。6 参考文献1 王克宏. Java技术教程(基础篇).清华人学出版社,20022 古大龙. 软件开发的形式化方法.高等教育出版社,20053陈强. Java程序设计.北京:人民邮电出版社,20014侯捷. Java编程思想.第2版.北京:机械工业出版社,20025Herbert Schildt. Java2参考大全.北京:
16、清华大学出版社,20026 谭浩强.sql Sever2000数据库实训教程,清华大学出版社,20077 王珊、萨师煊.数据库系统概论,高等教育出版社,2006附录(源程序)import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;import java.util.ArrayList;public class contacts int conNum; String name; String tel; String QQ; String email; String address; public
17、contacts() public contacts(int conNum) this.conNum = conNum; public contacts(int conNum, String name, String tel, String QQ,String email,String address) this.name = name; this.tel = tel; this.QQ = QQ; this.email = email; this.address = address; public int getconNum() return conNum; public void setco
18、nNum(int conNum) public String getName() return name; public void setName(String name) public String getTel() return tel; public void setTel(String tel) this.tel =tel; public void setQQ(String QQ) this.QQ=QQ; public String getQQ() return QQ; public void setEmail(String email) this.email= email; publ
19、ic String getEmail() return email; public void setAddress(String address) this.address= address; public String getAddress() return address; /向数据库中插入联系人基本信息,若插入成功返回true public boolean insertcontacts() boolean b = true; try Connection con = SqlConnection.getCon(); Statement statement = con.createState
20、ment(); String sql = insert into contacts values( + conNum + , + name + + tel + + QQ + +email+ +address+ ); /sql = new String(sql.getBytes(GB2312), ISO8859_1); /处理汉字乱码 statement.executeUpdate(sql); statement.close(); con.close(); catch (Exception e) b = false; System.out.println(插入数据遇到异常! return b;
21、/根据序号查询基本信息,若查询成功返回true public boolean selectByconNum(String conNum) throws Exception boolean b = false; Connection con = SqlConnection.getCon(); Statement statement = con.createStatement(); String sql = select * from contacts where sconNum = ResultSet rs = statement.executeQuery(sql); if (rs.next()
22、 int no = rs.getInt(1); this.setconNum(no); String n = rs.getString(2); /n = new String(n.getBytes(GBK this.setName(n); String t = rs.getString(3); /g = new String(g.getBytes( this.setTel(t); String q = rs.getString(4); this.setQQ(q); String e = rs.getString(5); this.setEmail(e); String a = rs.getSt
23、ring(6); this.setAddress(a); b = true; rs.close(); statement.close(); con.close(); public boolean delete(String conNum) boolean b = true; trydelete from contacts where sconNum=+conNum+ statement.executeUpdate(sql); catch (Exception e) b = false; System.out.println(删除遇到异常! return b; public boolean pa
24、ixu() boolean b =true; try Statement statement = con.createStatement(); String sql = select * from contacts order by sconNum ResultSet rs = statement.executeQuery(sql); ArrayList list1=new ArrayList(); list2=new ArrayList list3=new ArrayList list4=new ArrayList list5=new ArrayList list6=new ArrayLis
25、t while (rs.next() list1.add(rs.getString(1); list2.add(rs.getString(2); list3.add(rs.getString(3); list4.add(rs.getString(4); list5.add(rs.getString(5); list6.add(rs.getString(6); String arr1=new Stringlist1.size(); String arr2=new Stringlist2.size(); String arr3=new Stringlist3.size(); String arr4=new Str
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1