欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    基于JAVA个人通讯录管理系统开发和设计.doc

    • 资源ID:11423555       资源大小:1.42MB        全文页数:32页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于JAVA个人通讯录管理系统开发和设计.doc

    郑州科技学院Java课程设计报告 题 目 Java通讯录课程设计 课 程 名 称 Java程序设计实用教程 院 部 名 称 信息工程学院 专 业 计算机科学与技术专业 班 级 11计科1班 学 生 姓 名 胡燊 学 号 201115007 指 导 教 师 杜 远 坤 完 成 时 间 2013年12月20日 31 摘要本文介绍了一个简单实用的个人通讯录管理系统java工程,详细描述了本人在编程时候的编程思想和在MyEclipse 中调试运行的步骤,简明扼要地介绍了整个工程的功能和实用方法。这个个人通讯录管理系统含有添加、删除、查找等基本功能,同时也添加了一些有趣的小功能支持背景图片的更换。在程序中完成了与数据库的通信,并同样可以对数据库进行添加、查找、删除等功能。关键词:个人通讯录管理系统、添加、删除、查找、数据库目 录摘要21 绪论41.1 设计目的41.2 设计内容42 程序要求53 算法分析63.1 程序总体设计思想63.2 程序设计总体框图63.3 程序详细设计74 调试过程105 体会186 参考文献19附录(源程序)201 绪论1.1 设计目的本课程设计是java语言学习中很重要的实践性环节之一,是在学习完java课程后进行的一次全面的综合练习旨在巩固和加深我们对java语言的基本知识的理解和掌握,掌握java语言编程和程序调试的基本技能,利用java语言进行基本的软件设计,掌握书写程序设计说明文档的能力,提高运用java语言解决实际问题的能力。1.2 设计内容在设计一个完整的系统中,我从系统的管理员登录界面开始做,另外依据相关要求,对系统增加了数据库支持(Microsoft Access做的数据库),还有对数据库里的数据进行增加、删除、显示所有记录、查询记录、导出备份数据库文件。另外为了界面美观,增加了系统主界面背景界面图片的支持。为了保证数据库的安全,在系统中设立了管理员权限,即只有被允许的用户才可以进入该系统。2 程序要求设计一个通讯录管理软件,要求如下:增加记录、删除记录、显示所有记录、查询记录、文件备份、退出。通讯录记录信息包括:姓名,电话,email等。(1)通讯录的每一条信息包括姓名,单位,电话!(可用数组或数据库);(2)输入功能:可以一次完成若干条信息的输入;(3)显示功能:完成全部通讯录信息的显示(一屏最多显示10条,超过十条应能够自动分屏显示);(4)查找功能:完成按姓名查找通讯信息;(5)删除功能:完成按姓名删除通讯信息;(6)应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!3 算法分析3.1 程序总体设计思想个人通讯录件的功能模块有:(1)提供登陆界面,方便用户进入,满足需求;(2)添加:可以添加通讯录记录,依次输入姓名、性别、出生日期、移动电话、固定电话、MSN/QQ、公司地址、E-Mail地址、家庭住址、组别、备注后,会提示是否继续添加;(3)显示:可以以表格形式输出所有通讯录里的记录;(4)查询:可以用姓名查询;(5)修改:输入欲修改的那个人的名字后,再依次输入姓名、性别、出生日期、移动电话、固定电话、MSN/QQ、公司地址、E-Mail地址、家庭住址、组别、备注即可完成修改;(6)删除:可以直接删除多余的通讯录记录;(7)帮助:可以在帮助里面修改用户密码;(8)导出数据库:可以将数据库以文本txt格式导出。程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。3.2 程序设计总体框图个人通讯录管理系统设计的总体框图如图3-1:程序开始菜单界面面登陆界面功能界面增加界面查找界面修改界面程序结束进入功能总体功能数据功能显示功能图3-1 个人通讯录管理系统设计的总体框图3.3 程序详细设计该程序共有18个类,也分别创建了18个java源程序文件,以下按照文件名字母排序先后解释(在设计软件MyEclipse工程排序也是如此),另外在此只是简要介绍相关源程序所实现的功能,程序截图参见调试,源程序参见附录:Demonstrationaction.java文件做的是功能表中“编辑查找全部”的功能,使用此项功能的时候,在点击“显示查询结果”后,让界面显示出全部数据库中的内容;点击“退出全部查询”的时候退出该功能。Demonstrationframe.java文件做的就是“编辑查找全部”的界面,上面有标题、文字显示框和两个控制按钮“显示查询结果”和“退出全部查询”。Dlframe.java文件做的是“编辑删除”的界面,有一个文字输入框(提供按名字来删除),和两个控制按钮“删除”和“放弃”。Dlframeaction.java文件做的是“编辑删除”的相关功能,当输入名字之后会进行查找删除,若在数据库中含有当前名字的数据则删除该条数据并显示“删除成功”,否则显示“未找到该项”。点击“放弃”即退出删除功能。Fdframe.java文件做的是“编辑查询”的界面,提供按名字搜索,有一个文字输入框,和两个控制按钮“查询”和“撤销”。Fdframeaction.java文件做的是“编辑查询”的相关功能,输入需要查询的姓名之后,如若在数据库中有符合的数据后,则显示查询结果,并弹窗显示“查询结束”;如若没有对应的数据,则弹窗显示“没有记录”。点击“撤销”则退出查询功能。Fdkeep.java文件做的是“文件导出数据库”的界面,有一个文字输入框提供输入导出的数据库的完整路径,两个控制按钮“save”和“give up”。Fdkeepaction.java文件做的是“文件导出数据库”的相关功能,输入了完整路径之后,会启动Microsoft Office Access导出数据库;如若路径错误,则会弹窗显示“路径错误!”。点击“give up”后则退出界面。Frameaction.java文件做的是主界面的相关功能选择。主界面有三个大选项,文件、编辑和帮助。其中文件包括导入数据库和退出,编辑包括删除、添加、按姓名查找和查找全部,帮助则是修改管理员密码。Image.java文件是使主界面支持背景图片的切换,使用的是工程文件夹Images下的U.jpg。支持任意大小的图片。Loginframe.java文件做的是主界面的登录界面。即在程序以java Application运行后需要进行用户登录的界面,提供用户名和密码的文本输入框和两个控制按钮“certain”和“cancel”。LoginIn.java文件做的是登录界面的相关功能,对输入的用户名与密码和数据库进行匹配,如若正确则弹窗显示“登录成功”,否则弹窗显示“用户名或密码错误”。Myaddress.java文件做的是定义了一个公共类Myaddress,并定义了主函数是调用这个Myaddress的公共类。Panelframe.java文件做的是“编辑添加”的界面,提供给用户向数据库添加新数据,有对于姓名、性别、出生日期、移动电话、固定电话、MSN/QQ、公司地址、E-Mail地址、家庭住址、组别、备注等信息录入的文本输入框。以及最后的两个控制按钮“保存”和“取消”。Panelframeaction.java文件做的是“编辑添加”的相关功能。在界面中输入相关信息后,点击保存则系统向数据库存入信息,点击取消则将信息丢弃。同时还确保信息的相关性,例如控制了出生日期是使用了日期控件的使用等等。Revisionmovement.java文件做的是“帮助修改密码”的相关功能。首先验证用户输入的原始密码是否正确,然后接受用户输入的6位以上的新密码,存入数据库并修改密码信息。Revisionpassword.java文件做的是“帮助修改密码”的界面。界面包括两个旧密码和新密码的文本输入框,和两个控制按钮“保存”和“取消”。Year.java文件做的是在出生日期里面的日期控件,对平年闰年的区分,然后对各个月不同日期做了相关定义。4 调试过程调试是一耳光程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编写出任何好的软件。这是当初我最开始接触C语言的时候让我感受很深的一句话,我当时很不能理解如果调试真的这么重要,为什么在我们的课本里面却找不到相关的内容,甚至一些相当经典的教材里面也没有对其进行大篇幅的介绍。直到自己开始写了一些大一点的程序,才发现有时候自己最初设计程序在一些细节上的新颖想法是那么的可笑,带来的只是无穷无尽的错误和威胁。程序编写完成就应该调试自己所完成的程序,以减少程序中的bug。以下是我的程序调试以及运行过程截图。说明:本程序的运行环境是MyEclipse 6.5,经验证在Eclipse中运行会产生错误“Column not Found”,但是最开始我是在MyEclipse中完成的程序,我也就没有去就针对Eclipse进行更改,Linux的环境虚拟机我没有安装,所以不知道在虚拟机Linux下是否能够正常运行。打开MyEclipse 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 保存的数据库文件点击“文件退出”则退出了个人通讯录管理系统。接下来是对数据库进行添加、编辑、查找、删除等功能。故先看看数据库的原文件。注:本数据库是由Microsoft Office Access 2007创建,如若计算机里面没有Access,编译环境会对Access驱动的设置报错!数据库如图4-6:图4-6 原始数据库选择“编辑添加”对数据库进行添加操作。输入如下信息,如图4-7:图4-7 信息添加界面点击“保存”将新加的信息加入数据库,系统会告知“添加成功”。如图4-8:图 4-8 系统信息添加界面重新查看数据库,可以发现新添加的信息已经加入了数据库。如图4-9:图4-9 添加信息后的数据库部分截图由上面操作可以知道,添加功能正常。选择“编辑删除”,按照提示输入删除的用户名,如图4-10,就假设我们删除刚才添加的信息:图4-10 删除记录点击“删除”后,则系统会提示“删除成功”,如图4-11:图4-11 删除成功重新查看数据库,发现刚才添加的信息已经被成功删除,如图4-12:图4-12 成功删除后的数据库通过以上的删除操作可以知道,系统的删除功能也是可以正常运行的。点击“文件按姓名查找”,输入所需要查找的用户名,如图4-13:图4-13 查找记录点击“查询”,系统会对数据库进行查找,并提示“查找结束”,如图4-14:图4-14 查找结束并会弹窗显示所查找的结果,如图4-15:图4-15 查找结果以上步骤只能说明是正确输入了数据库中包含的数据,如若数据库中未含有被查找的内容,则系统也应该做出正确的反应。如图4-16,查找数据库中没有的信息:图4-16 输入数据库中没有的用户名点击“查询”之后,则系统提示“没有记录”,如图4-17:图4-17 查找错误的消息提示以上通过了正确查找和错误两方面充分论证了查找功能的正常运行。点击文件“编辑查找全部”,则会弹出一个空白的查找结果界面,这是因为在程序设计中默认的是不显示所得的信息,如图4-18:图4-18 查找全部界面然后点击“显示查询结果”,即可显示出全部查询结果。如图4-19:图4-19 查找全部结果另外本系统还有一个功能,更改当前用户的密码。点击“帮助修改密码”,显示修改密码界面,如图4-20:图4-20 修改密码界面分别输入当前的旧密码和所更改的新密码,如图4-21:图4-21 输入旧密码和新密码点击“保存”即可成功修改密码,并可以修改数据库。如图4-22:图4-22 密码修改成功消息查看数据库中的表userpass,新密码已经更改成功,如图4-23:图4-23 数据库中的新密码显示另外需要注意的是,修改的新密码是需要该系统重启生效。即退出后重新运行该工程才能使新密码生效。至此,个人通讯录管理系统的调试运行全部完成。5 体会这次的程序实设计实验是对我们进入大学以来学习程序设计语言结果的一次大检验。自己动手,自己发现和解决问题。发现了自己的许多不足。平时没有掌握好的知识在这次实验中彻底暴露出来,经过不断思考,不断查阅资料和上机运行,解决其中大部分问题,当然还存在一些问题没有解决。我相信在以后的学习能够解决好它们。但是,收获还是不小的,我不仅对Java的操作有了进一步的掌握,还了解到了程序设计的书写风格及其注释的格式。6 参考文献1 王克宏. Java技术教程(基础篇).清华人学出版社,20022 古大龙. 软件开发的形式化方法.高等教育出版社,20053陈强. Java程序设计.北京:人民邮电出版社,20014侯捷. Java编程思想.第2版.北京:机械工业出版社,20025Herbert Schildt. Java2参考大全.北京:清华大学出版社,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 contacts() public contacts(int conNum) this.conNum = conNum;public contacts(int conNum, String name, String tel, String QQ,String email,String address) this.conNum = conNum;this.name = name;this.tel = tel;this.QQ = QQ;this.email = email;this.address = address;public int getconNum() return conNum;public void setconNum(int conNum) this.conNum = conNum;public String getName() return name;public void setName(String name) this.name = 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;public String getEmail() return email;public void setAddress(String address) this.address= address;public String getAddress() return address;/向数据库中插入联系人基本信息,若插入成功返回truepublic boolean insertcontacts() boolean b = true;try Connection con = SqlConnection.getCon();Statement statement = con.createStatement();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;/根据序号查询基本信息,若查询成功返回truepublic boolean selectByconNum(String conNum) throws Exception boolean b = false;Connection con = SqlConnection.getCon();Statement statement = con.createStatement();String sql = "select * from contacts where sconNum = " + conNum + ""ResultSet rs = statement.executeQuery(sql);if (rs.next() int no = rs.getInt(1);this.setconNum(no);String n = rs.getString(2);/n = new String(n.getBytes("ISO8859_1"), "GBK"); this.setName(n);String t = rs.getString(3);/g = new String(g.getBytes("ISO8859_1"), "GBK"); this.setTel(t);String q = rs.getString(4);this.setQQ(q);String e = rs.getString(5);this.setEmail(e);String a = rs.getString(6);this.setAddress(a);b = true;rs.close();statement.close();con.close();return b;public boolean delete(String conNum) boolean b = true;tryConnection con = SqlConnection.getCon();Statement statement = con.createStatement();String sql = "delete from contacts where sconNum="+conNum+""statement.executeUpdate(sql);statement.close();con.close(); catch (Exception e) b = false;System.out.println("删除遇到异常!");return b; public boolean paixu()boolean b =true;try Connection con = SqlConnection.getCon();Statement statement = con.createStatement();String sql = "select * from contacts order by sconNum"ResultSet rs = statement.executeQuery(sql);ArrayList<String> list1=new ArrayList<String>();ArrayList<String> list2=new ArrayList<String>();ArrayList<String> list3=new ArrayList<String>();ArrayList<String> list4=new ArrayList<String>();ArrayList<String> list5=new ArrayList<String>();ArrayList<String> list6=new ArrayList<String>(); 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 Stringlist4.size(); String arr5=new Stringlist5.size(); String arr6=new Stringlist6.size(); if(list1 != null && list1.size()>0) arr1=new Stringlist1.size(); for(int i=0;i<list1.size();i+) arr1i=list1.get(i); if(list2 != null && list2.size()>0) arr2=new Stringlist2.size(); for(int i=0;i<list2.size();i+) arr2i=list2.get(i); if(list3 != null && list3.size()>0) arr3=new Stringlist3.size(); for(int i=0;i<list3.size();i+) arr3i=list3.get(i); if(list4 != null && list4.size()>0) arr4=new Stringlist4.size(); for(int i=0;i<list4.size();i+) arr4i=list4.get(i); if(list5 != null && list5.size()>0) arr5=new Stringlist5.size(); for(int i=0;i<list5.size();i+) arr5i=list5.get(i); if(list6 != null && list6.size()>0) arr6=new Stringlist6.size(); for(int i=0;i<list6.size();i+) arr6i=list6.get(i); for(int i=0;i<6;i+) System.out.print(arr1i); System.out.print(" "); System.out.print(arr2i); System.out.print(" "); System.out.print(arr3i); System.out.print(" "); System.out.print(arr4i); System.out.print(" "); System.out.print(arr5i); System.out.print(" "); System.out.print(arr6i); System.out.println(); catch (Exception e) e.printStackTrace(); return b;import java.awt.BorderLayout;import java.awt.CardLayout;import java.awt.*;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.Icon;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JToolBar;import javax.swing.SwingConstants;public class MainFrame extends JFrame implements ActionListener InsertPanel ip = null;SelectPanel sp = null;DeletePanel hp = null; Px pai=null;JPanel pframe;JButton jb1,jb2,jb3;JMenuItem jm11,jm21, jm22,jm23, jm24,jm31, jm32,jm41,jm42;CardLayout clayout;MainFrame(String s)super(s);JMenuBar mb = new JMenuBar();this.setJMenuBar(mb);JMenu m1 = new JMenu("系统");JMenu m2 = new JMenu("联系人信息");JMenu m3 = new JMenu("排序显示"); mb.add(m1);mb.add(m2);mb.add(m3);jm11 = new JMenuItem("退出系统");jm21 = new JMenuItem("输入");jm22 = new JMenuItem("查询");jm24 = new JMenuItem("删除");jm23 = new JMenuItem("排序");m1.add(jm11);m2.add(jm21);m2.add(jm22);m2.add(jm24);m3.add(jm23);Icon i1 = new ImageIcon("save.gif");Icon i2 = new ImageIcon("select.gif");Icon i3 = new ImageIcon("exit.gif");jm11.addActionListener(this);jm21.addActionListener(this);jm22.addActionListener(this);jm24.addActionListener(this);jm23.addActionListener(this);clayout = new CardLayout();pframe = new JPanel(clayout); /pframe存放各模块界面,CardLayout布局add(pframe); /pframe加载到框架窗口的中区 /定义软件系统的初始图形界面JPanel mainp = new JPanel(new BorderLayout();JLabel mainl = new JLabel("通讯录管理系统",SwingConstants.CENTER);mainl.setFont(new Font("Serif",Font.BOLD,30);mainp.add(mainl);pframe.add(mainp,"main");clayout.show(pframe, "main");public void actionPerformed(ActionEvent e) if(e.getSource()=jm21|e.getSource()=jb1)if(ip = null) /如果插入界面ip不存在,创建这个对象ip = new InsertPanel();pframe.add(ip,"insert");/如果输入界面ip已经存在,就不需要创建了clayout.show(pframe, "insert");this.setTitle("输入联系人信息");else if(e.getSource()

    注意事项

    本文(基于JAVA个人通讯录管理系统开发和设计.doc)为本站会员(scccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开