124511579软件工程专业实训报告.doc

上传人:1777****777 文档编号:38575503 上传时间:2021-11-08 格式:DOC 页数:47 大小:858.24KB
收藏 版权申诉 举报 下载
124511579软件工程专业实训报告.doc_第1页
第1页 / 共47页
124511579软件工程专业实训报告.doc_第2页
第2页 / 共47页
124511579软件工程专业实训报告.doc_第3页
第3页 / 共47页
资源描述:

《124511579软件工程专业实训报告.doc》由会员分享,可在线阅读,更多相关《124511579软件工程专业实训报告.doc(47页珍藏版)》请在装配图网上搜索。

1、中原工学院软件学院中原工学院软件学院二二级级实实践践课课题题设设计计任任务务书书姓姓 名名 专业 班题题 目目通信录系统的开发设设计计任任务务开发一个比较完善的基于 JAVA 的通信录服务系统,包括校友交流所能用到的所有联系方式,为软件学院校友提供一个强大的通信网络。主要功能包括:1. 对联系人信息的增加:在通信录中增加联系人的信息;(独立完成)2. 对联系人信息的修改:在通信录中修改联系人的信息;(参与)3. 对联系人信息的删除:在通信录中删除联系人的信息;(参与)4. 对联系人信息的查询:在通信录中查询联系人的信息;(独立完成)开发工具: JAVA、Photoshop时时间间进进度度第 1

2、 周(开始时间结束时间):学习编写通信录中所需要的相关的知识,为后两周的课题的编写大下基础。第 2 周(开始时间结束时间):开始编写程序的界面代码,参考各种资料,逐个实现程序的功能。第 3 周(开始时间结束时间):测试已编好的程序,找到程序中的不知,修改程序,使程序更加完善。原原 主主始始 要要资资 参参料料 考考与与 文文 献献01(美)梁(Liang,Y.D.). JAVA 语言程序设计基础篇(原书第 6 版)M:机械工业出版社 2008.602 凯德纳黑德, 勒迈, 陈武. 21 天学通 Java 2:专业参考版.M 人民邮电出版社 2004.0103 洪维恩 何嘉. JAVA 2 面向

3、对象程序设计.M 中国铁道出版社 2005.0104 张靓 顾慧敏. JAVA 案例开发.M 中国水利水电出版社.2005.01指导教师签字:指导教师签字: 年年 月月 日日小小通信录摘 要社会在不断的进步,纸制的通信录已经快要被淘汰了。电子通信录已经成为了主流。电子通信录与原有的纸制通信录相比,纸质通讯录有以下缺陷:储存信息量少、查找不方便、信息容易丢失,且对于隐私保护不强。而电子通信录则克服了这些缺陷,且具有占用空间小,查找方便,不易丢失等多个优点。应校友的需求我们编写了程序:小小通信录。它可以记录学友的各项通信信息。方便校友尽快联系需要联系的人。可更好的增强校友之间的联系、友谊。本程序具

4、有界面简便大方,使用户不用学习操作指南也可以简单操作。大大提高了工作效率。本程序是用 JAVA 语言编写的,程序占用系统资源相对较少,且可移植性很强,可以适用各种操作系统。用户还可以根据自己的需求不同对程序做出相应的修改,使每个用户都有最适用于自己的通信录。这也是本程序的实用性所在。关键词:通信录; 方便; 简单; 实用目 录摘摘 要要.1第第 1 章章 项目分析项目分析.11.1 问题描述.11.2 技术分析.1第第 2 章章 实现实现.22.1 程序开始模块.32.1.1 流程图.32.1.2 界面.42.1.3 代码讲解.52.2 程序界面显示模块.62.2.1 流程图.72.2.2 界

5、面.82.2.3 代码讲解.82.3 联系人信息模块.132.3.1 代码讲解.132.4 程序的功能模块.142.4.1 流程图.142.4.2 界面.172.4.3 代码讲解.18第第 3 章章 结束语结束语.23附录附录 A: 附加图、表附加图、表.27附录附录 B: 主要源程序主要源程序.28小小通信录0第 1 章 项目分析为方便校友之间的联系,储存校友的联系方式。使校友之间得到更好的联系。所以我们组决定制作小小通信录,以为同学们提供方便。1.1 问题描述程序需要有一个简洁的界面,使同学们一看便知怎么操作。程序还需要实现增加、修改、删除、查询功能。由于对数据库和 JAVA 之间联系的欠

6、缺,本组决定用文本储存联系人的基本信息。同时为解决用户大意错误修改联系人,本程序在修改过联系人以后还需要确认要修改联系人的姓名。为解决这些问题我们就得查询个方面的资料,为更好的解决问题做好准备。1.2 技术分析本程序中使用 JFrame 类编写程序的界面,运用各种监听方法,监听窗口、按键、鼠标的各种动作。本程序的所有信息都储存在文件当中,所以本程序是使用 File 类来实现对文本的读取、储存、增加、修改、查询。 为使程序简单话,我们决定把整个程序分成 4 个类, 分别为UserSystem.java、UserService.java、MySystem.java、User.java。分别实现程序

7、的部分功能。UserSystem.java 该类是程序的主类,该类含有 main 方法,程序从该类开始执行。MySystem.java 该类主要是实现图形化界面的,实现按钮,输入框,标签等图形化面。User.java 该类主要是联系人的相关数据。UserService.java 该类主要是对各种操作方法的定义和实现,是实现增删改查等主要功能的服务类。小小通信录1第 2 章 实现程序的主流程图: 图 2-1 程序的主流程图 程序的增加、修改、删除、查询,都是在程序中的 UserService.java 实现的。程序中的主界面主要是通过程序中的 MySystem.java 实现的。程序的开始也就是

8、程序的主类是通过程序中的 UserSystem.java。各类之间的关系可以用下图表示。程序开始程序主界面程序是否退出增加联系人修改联系人删除联系人查询联系人程序关闭是否小小通信录2 图 2-2 程序各类之间的调用关系下面将为你讲解我们程序功能实现的详细细节。2.1 程序开始模块程序的主模块是由 UserSystem.java 类实现的。该类中有对各个类的调用。该类的开始先检验程序所需文件是否存在。如果系统没有创建文件,程序会为你新创建文本。如果有程序会问你是否继续使用已创建的通信录。你也可以新建通信录,重新输入联系人。接下来系统会显示程序的主界面,这通过 MySystem.java 实现。2

9、.1.1 流程图UserSystem.java 类运行的主要流程如下:UserSystem.javaMySystem.javaUserService.javaUser.java调用调用调用小小通信录3 图 2-3 开始类的流程图2.1.2 界面 本类中将出现的界面:图 2-4 系统中没有所需的储存文件时,提示系统为用户新建文件。程序开始判断程序所需文件是否存在判断用户是否需要重建文件程序继续运行为用户新建文件为用户新建文件是否是否小小通信录4 图 2-5 系统中已有文件存在,程序会提问你是否需要新建通信录。 图 2-6 为用户重新建立文件,并提示用户原通信录已删除。2.1.3 代码讲解impo

10、rt java.io.FileNotFoundException;在程序得开始我们向程序中导入了文件类(File 类) 。类是 Java 系统中预定义类,类可以反复使用,而不必每次“重新编写” 。File 类是文件名及其目录路径的一个包装类,我们在程序中使用 File 类获得文件的属性、删除和重命名文件。但是,File 类没有包含读写文件内容的方法。所以在下一个类中我会讲到用 PrintWriter 写数据,用 Scanner 读数据。import javax.swing.JOptionPane;程序中我们还要用消息对话框显示文本信息,所以我们还需向程序中导入JOptionPane 类。我们使

11、用 JOptiongPane 类中的 showMessageDialog 方法显示文本信息,showInputDialog 方法获得可输入的对话框。public class UserSystem 接下来我们创建 UserSystem 类。在这个类中我们包含了 main 方法。public static void main(String args) throws FileNotFoundException 我们创建了 main 方法,每个 Java 应用程序必须有一个用户声明的 main 方法,它定小小通信录5义了程序从何处开始。JVM 通过调用 main 方法执行应用程序。程序中还用到了 th

12、rows。throws 是用来声明一个方法可能抛出的所有异常信息,注意,是可能的,所有的异常信息,在 Java 里面,大家很熟悉什么是类和对象,在这里,throws 要抛出的就是一个异常类,因为它并不知道具体会出现哪种异常,所以就简单抛出一个异常类,包含这个异常类下面所有可能的异常。throws 通常不用显示的捕获异常,而是由系统自动将所有捕获到的异常信息抛给上级方法来处理,举个简单的例子来说:A类声明抛出了一个异常类,如果系统捕获到该异常类下面某个具体的异常对象,则上交给 A 的父类 B 来处理,假如 B 不做处理,那么 B 继续上抛,上抛给 B 的父类 C 来处理,以此类推,直至找到可以处

13、理该异常的方法为止。java.io.File file = new java.io.File(txl.txt);本语句为文件 txl.txt 创建一个 File 对象。if (file.exists()else查看文件是否存在 File 类中的 exsits()方法。利用 if 语句判断文件存在与不存在时的动作。String s = JOptionPane.showInputDialog(null,已有人使用本通信录(文件位于 txl.txt) 。n 新建通信录请按任意数字键n + 继续使用请按数字键 1);当文件存在时,显示消息对话框,提示用户接下来的操作。并将用户输入的信息传递给 Stri

14、ng 类型的 s。s 的值关系到程序的下一步运行。if (s.equals(1) new MySystem();在上一步的选择中如果用户键入了数字 1。则表示用户需要继续使用已有的通信录。系统则会调用程序的 MySystem()类,显示程序主界面。equals( ) 如果此对象与指定对象相同,则返回 true。如果不相同,则返回 false。JOptionPane.showMessageDialog(null,以为你创建好文件(文件位于 txl.txt) 。源文件已删除! );new java.io.PrintWriter(file); new MySystem(); 在文件已存在时如果用户键

15、入其他键,则程序会为用户重新建立文件。也会把原有的通信录删除。程序调用构造方法 new PrintWinter(String filename)创建一个新的文件。并把原有文件的内容删除。程序新建文件后会调用程序的 MySystem()类,显示程序的主界面。使程序继续运行。小小通信录62.2 程序界面显示模块程序的界面显示主要是有 MySystem.java 类实现的。MySystem.java 主要是实现图形化界面的,实现按钮,输入框,标签等图形化界面.。这个类中的方法主要是Java 语言程序设计基础篇中第 3 篇 图形用户界面程序设计的知识。我们利用第一周的部分时间学习了这部分的知识。为我们

16、在这里编写程序的界面打下了基础。这个类中主要用的是不抽象窗口工具集(Abstract Window Tookit, AWT)。AWT 使用于开发简单的图形用户界面。而是使用的比 AWT 用户界面组件更稳定、通用和灵活的 Swing 组件库取代。Swing 组件更少地依赖目标机器上的平台,更少使用本地的GUI 资源。MySystem 类 UML 类图: 图 2-7 MySystem.java 类 UML 图2.2.1 流程图MySystem.java 类运行的流程图:MySystem+MySystem()+ actionPerformed(ActionEvent e):void小小通信录7 图

17、2-8 程序界面系统的流程图2.2.2 界面 本类中出现程序的主界面,好程序退出时的界面,界面如下图:程序经上一步调用程序显示主界面增加键是否按下删除键是否按下修改键是否按下查询键是否按下退出按键是否按下调用增加方法调用删除方法调用修改方法调用查找方法程序退出是是是是是小小通信录8 图 2-9 程序的主界面 图 2-10 程序的退出界面 2.2.3 代码讲解import java.awt.*;import javax.swing.*;由于本类是用于编写程序的界面,所以本类中需要向程序中导入 java.awt 包和javax.swing 包。用于程序编译界面。Swing 组件不能取代 AWT 的

18、全部类,只能替代AWT 的 GUI 组建类。所以程序还需调用 java.awt 包。public class MySystem extends JFrame implements ActionListener 建立 MySystem 类并继承 JFrame 类,继承可访问的数据域和方法。同时对 MySystem类实现 ActionListener 接口。接口是一种与类相似的结构,只包含常量和抽象的方法。接小小通信录9口在许多方面与抽象类相似,但是抽象类除了包含常量和抽象方法外,还可以包含变量和具体方法。在 Java 中,接口被认为是特殊的类。就像通常的类一样,每个接口编译为独立的字节码文件。与

19、抽象类相似,不能使用 new 操作符创建接口的实例,但是大多数情况下,使用接口或多或少有点像使用抽象类。JButton b1 = new JButton(查询);JButton b2 = new JButton(增加);JButton b3 = new JButton(删除);JButton b4 = new JButton(修改);JButton b5 = new JButton(退出);JButton b11 = new JButton(按姓名查询);JButton b12 = new JButton(按号码查询);Component 类是所有用户界面类的父类,而 JComponent 类

20、是所有轻型 Swing 组件的父类。由于 JComponent 是一个抽象类,所以,不能用 new JComponent()创建 JComponent的实例,但是,可以使用 JComponent 具体子类的构造方法来创建 JComponent 的实例。所以可以直接使用 JButton jbutton = new JButton();来直接创建按键。本部分为程序创建了 7 个按键。Container con = getContentPane();Container 用来组织组件。框架 Frame、面板 Panel 和 applet 都是容器的例子。每个JFrame 都包含一个内容窗口。每个内容窗

21、格都是 java.awt.Container 的一个实例。可以向con 中添加按键、图像。ImageIcon aIcon = new ImageIcon(通信录.jpg);ImageIcon icon=new ImageIcon(“”);语句创建一个图像图标。MySystem() 这个类中显示程序主界面的方法。界面的编写在这个程序中实现。super(个人通信录管理程序);设置窗口的题目。setSize(390, 460);设置窗口的大小。con.setLayout(new BorderLayout();小小通信录10设置容器的布局管理器。BorderLayout 管理器将窗口分成五个区域:东区

22、、南区、西区、北区和中央。p1.setBackground(Color.red);p3.setBackground(Color.blue);设置区域 p1、p2 的颜色。p1.add(new JLabel();p3.add(b2);p3.add(b4);p3.add(b3);p3.add(b1);p3.add(b5);向 p1 中添加标题,p3 中添加各个按键。add(new JLabel(aIcon);con.add(North, p1);con.add(South, p3);Dimension conSize=getSize();int halfWidth = conSize.width/

23、2;int halfHeight = conSize.height/2;Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();int centerX = screenSize.width/2;int centerY = screenSize.height/2;setLocation(centerX-halfWidth,centerY-halfHeight);setVisible(true);本段代码是确定程序窗口的位置,举例说明:1、有一个 200*200 像素的窗口,想要把它放在 800*600 像素的屏幕中间,屏幕

24、的位置应是(800/2,600/2)=(400,300)2、为了设置该窗口左上角的位置,以使窗口中心与屏幕中心相吻合,必须符合 2 个小条件(1)窗口的一半或 100 像素必须落在屏幕的中心的左边(2)窗口的一半或 100 像素必须落在屏幕的中心的上方,因此窗口左上角的位置必须定位于(400-100,300-100)=(300,200) 。但在实际程序运行的过程中,程序的运行环境显示屏幕的实际尺寸和像素清晰度是不尽相同的,我们必须能动态的判断运行 Java 程序的计算机屏幕的大小,以使程序不管小小通信录11运行在什么计算机上都能居中,JAVA 的 AWT 提供了一个 Toolkit 类,以使我

25、们做出判断!具体应用:1、在 Toolkit 类上调用一个静态方法 getDefaultToolkit(),以便为这个平台在 AWT 的Toolkit 对象上获得一个句柄。2、然后调用 Toolkit 对象的 getScreenSize()方法,该方法返回一个 Dimension(中文意为尺寸)类对象。Demension 对象正好有两个 public int 属性,即 width(以像素为单位),和heigth(以像素为单位)3、把这种方法调用“系”在一起,因为我们不想长时间的保持 Toolkit 对象。我们只想暂时用它来恢复屏幕的 Dimension 对象:代码:Dimension scre

26、enSize=Toolkit.getDefaultToolkit().getScreenSize();因此不必向引用变量分配 Toolkit 对象的句柄。addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) setVisible(false);System.exit(0););对窗口添加监听,当窗口被关闭时系统退出b1.addActionListener(this); b2.addActionListener(this);b3.addActionListener(this);b4.addAc

27、tionListener(this);b5.addActionListener(this);b11.addActionListener(this);b12.addActionListener(this);为各个按键添加监听,为按键后续实现功能做下铺垫。public void actionPerformed(ActionEvent e) 创建监听方法实现各个按键的监听。if (b1 = e.getSource() final JFrame newf = new JFrame(查询方式);newf.setSize(200, 150);小小通信录12newf.setVisible(true);JBu

28、tton b13 = new JButton(关闭);newf.setLayout(new GridLayout(3, 1, 5, 5);newf.add(b11);newf.add(b12);newf.add(b13);b13.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent ee) newf.setVisible(false););当按键查询被按下时,显示窗体让用户选择查询的方式。并对关闭按键添加鼠标监听,当鼠标按下关闭按键时查询窗体退出。if (b11 = e.getSource() UserS

29、ervice.cx();当按下按姓名查询时,调用 UserService 类中的 cx()方法。实现按姓名查询。if (b12 = e.getSource() UserService.cx1();当按下按手机号查询时,调用 UserService 类中的 cx1()方法。实现按手机号查询。if (b2 = e.getSource() ) UserService.add();当按下增加键时,调用 UserService 类的 add()方法,增加功能。if (b3 = e.getSource() UserService.delete();小小通信录13当按下删除键时,调用 UserService

30、 类的 delete()方法,删除功能。if (b4 = e.getSource() UserService.xg();当按下修改时,调用 UserService 类的 xg()方法,实现修改功能。if (b5 = e.getSource()JOptionPane.showMessageDialog(null,本通讯录由刘旭辉,翟瑞东,张渊喆共同制作.n 谢谢使用,再见!);System.exit(0);当按下退出时,提示退出,退出系统。2.3 联系人信息模块联系人的信息板块主要是 User.java 类,该类主要是联系人的相关数据。该类中建立联系人对象包含了联系人的各项信息,联系人姓名、联系

31、人手机号、联系人 QQ 等。同时类中还包含了很多的方法,来得到相关的信息。小小通信录14User 类 UML 类图: 图 2-11 User 类 UML 图2.3.1 代码讲解public class User 为程序创建 User 类。public User() super();User+name; String+tel; String+email; String+phone; String+address; String+qq; String+User()+User(int id, String name, String tel, String email, String phone,St

32、ring category, String address, String work, String q, String qq)+getQq():String+setQq(String qq):void+getName():String+setName(String name):void+getTel():String+setTel(String tel):void+getEmail():String+setEmail(String email):void+getPhone():String+setPhone(String phone):void+getAddress():String+set

33、Address(String address):void小小通信录15public User(int id, String name, String tel, String email, String phone,String category, String address, String work, String q, String qq) super();this.name = name;this.tel = tel;this.email = email;this.phone = phone;this.address = address;this.qq = qq;User 类中的不含参构

34、造方法和含参构造方法。当从一个类继承时,子类和父类都有一个同名方法,也就是子类覆盖了父类的方法,可是又想调用父类的方法,那么就要用super。 其他下面的代码是为了实现对信息的读写。在此不做详细的介绍。2.4 程序的功能模块程序的主要功能是在这个 UserService.java 类实现的,该类是程序实现功能的主要类。该类中包括 add()方法、add1(File file, User u)方法、delete()方法、delete1(File file)方法、xg()方法、xg1(File file)方法、xg11(File file, User u)方法、cx()方法、search1(Fil

35、e file)方法、cx1()方法、search12(File file)方法。分别实现程序的添加功能、删除功能、修改功能、查询功能。UserService 类的 UML 类图:UserService+add():void+add1(File file, User u):void+delete():void+delete1(File file):void+xg():void+xg1(File file):void+xg11(File file, User u):void+cx();void+search1(File file):void+cx1():void+search12(File fil

36、e):void小小通信录16 图 2-12 UserService.java 类 UML 图2.4.1 流程图 增加方法的流程图:按下增加键显示增加窗口读取联系人在文件中的个数,确定联系人的添加位置判断用户是否输入联系人姓名判断联系人是否输入联系人的手机号从输入框中获得用户输入的信息以字符串的形式储存到文件中储存关闭文件结束提示用户没有输入姓名提示用户没有输入手机号否否是是是小小通信录17 图 2-13 增加方法流程图查询功能的流程图如下:按下查询键显示查询窗口是否按下按姓名查询键是否按下按手机号查询键是否按下关闭键弹出按姓名查询窗口弹出按手机号查询窗口是否有要查询的姓名是否有要查询的手机号显

37、示联系人显示联系人提示无此人提示无此人结束是是是是是否否小小通信录18 图 2-14 程序查询的流程图2.4.2 界面本类中出现的界面: 图 2-15 添加联系人界面 图 2-16 添加成功界面 小小通信录19 图 2-17 查询界面 图 2-18 修改联系人界面 图 2-19 删除联系人成功界面2.4.3 代码讲解 这个类中需要导入很多的类,原理和前三个的一样在这里不做过多的解释。 本类中首先实现的是添加方法 add()。程序中先建立添加的窗口。小小通信录20bb1.addMouseListener(new MouseAdapter() public void mouseClicked(Mo

38、useEvent ee) User u = new User();u.setName(jtf1.getText();u.setPhone(jtf2.getText();u.setTel(jtf3.getText();u.setQq(jtf4.getText(); u.setEmail(jtf5.getText(); u.setAddress(jtf6.getText();File file = new File(txl.txt);try add1(file, u); catch (FileNotFoundException e1) e1.printStackTrace();); 为确定按键,设

39、置监听,并设置动作。从输入对话框中得到信息。并执行 add1()方法,实现对联系人的添加。bb2.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent ee) newf.setVisible(false););为关闭按键添加监听。当关闭按键按下时,窗口关闭。接下来该类实现 add1()方法,这个方法主要是读取文件中联系人的数目,并在相应小小通信录21的位置添加键入的联系人。while (input.hasNext() useri = new User();useri.name = input.next()

40、;useri.phone = input.next();useri.tel = input.next();useri.qq = input.next();useri.email = input.next();useri.address = input.next();i+; 上述代码的主要作用是读出文件中已有联系人的数目,并由 i 记录联系人总数目。String m = u.getName();if (m = null | m.equals()break; 如果输入的联系人姓名为空,程序将退出。for (j = 0; j i; j+) if (userj.name.equals(m) JOpti

41、onPane.showMessageDialog(null, 此人已存在!);return; 本段代码逐个检测系统储存的通信录中是否存在同名的联系人。String h = u.getPhone();if (h = null | h.equals()break; 如果输入的联系人的手机号为空,程序将退出。小小通信录22for (j = 0; j i; j+) if (userj.phone.equals(h) JOptionPane.showMessageDialog(null, 此手机号已存在!);return;本段代码逐个检测系统储存的通信录中是否存在同手机号的联系人。useri = new

42、 User();useri.name = m;useri.phone = h;useri.qq = z;useri.tel = t;useri.email = r;useri.address = g;i+;JOptionPane.showMessageDialog(null, 添加成功!n 已有联系人数目为+i+n 新新增联系人的信息为:+ n 姓名: + m + n 手机号: + h + nQQ: + z + n 固定电话:+ t + nEmail: + r + n 地址: + g + ); 检查出联系人中没有与索要添加联系人信息相同的。则联系人的信息分别从窗口中得到。并对 i 进行加 1,

43、为在文件最后一个联系人后面添加上新加入的联系人的信息。PrintWriter output = new PrintWriter(file);for (int k = 0; k i; k+) String a = userk.name + + userk.tel + + userk.email + + userk.phone + + userk.address + + userk.qq + rn;output.print(a); 创建写入方法并向文件的正确位置添加新增联系人。到此增加方法结束。 下面为本系统查询方法的讲解。小小通信录23查询方法还是需要先检验文件中已有联系人的数目。while (

44、input.hasNext() useri = new User();useri.name = input.next();useri.phone = input.next();useri.email = input.next();useri.tel = input.next();useri.address = input.next();useri.qq = input.next();i+;i 记录联系人的总数目。for (j = 0; j i; j+) if (userj.name.equals(t11)break;if (j = i - 1) JOptionPane.showMessageD

45、ialog(null, 通信录中没有此人,按确定退出!);return; 在文件中查找是否有与输入联系人姓名相同的联系人。如果有记下位置 j。JOptionPane.showMessageDialog(null, 查到联系人!n 您要查询联系人的当前信息如下: + n 姓名:+ userj.name + n 电话: + userj.phone + n 固定电话:+ userj.tel + nQQ: + userj.qq + nemail:+ userj.email + n 地址: + userj.address); 程序显示查找到的联系人。小小通信录24 对手机号的查找跟对姓名的查找都是一样的

46、在这里不做解释。 其余两个功能由本组的其他俩名成员完成,在他们的报告中会有详细的讲解。小小通信录25第 3 章 结束语本次的课题已经较好的完成,只有部分功能没有实现。还得通过以后的继续学习来慢慢的完善。整个程序的效果还是很好的简单使用,没有错误。可以帮助用户建立完善的通信录。程序中还有很多的不足,比如程序没有模糊查询的功能,只有用户输入与文本中出入的相同的信息,系统才会检索出来该联系人。程序中还没有列出所有联系人的信息,这不方便用户的各项操作。程序的添加功能也存在一定的不足,QQ 必须添加,如果不添加程序就会出错。文件被打包后,程序的图片无法显示。当程序中没有联系人信息时,删除、修改、查询,虽

47、然可以出东西但是程序出错。这些问题在后续的学习中我相信我一定会得到解决的方法。三周的课题实践使我知道了自学能力的重要性。老师是不会把所有的知识都交给你的,老师也交不完。自学有的时候比老师讲的要记忆的更加的深刻。通过自己的学习我学会了简单界面的制作,为本程序制作了简洁的界面。使程序不在是去年编的那样出来一个黑框框,所有的操作都在那里实现,而是有了自己的窗口。在制作程序的各项功能的时候也遇到了很多的问题。虽然有很多问题老师已经讲过,但是经过一个暑假,大部分知识都已经忘记了。所以我以后要多多的复习以前学习的知识,不能学着新的知识,忘了以前学的知识。在写程序阶段我参考了很多书本上的程序,还有老师在课上

48、写的程序。其实我们的课题并不是很难,只要我们好好的学习 Java 根据课本,借助网络其实我们会很容易的做出来。例如编写程序时,开始的时候我们记录联系人得文档都是存储在系统的 E 盘,系统所需要的图片也是储存在 E 盘。也就是说如果系统中没有 E 盘我们的程序就没有办法使用,经过我就课本的深入研究我从课本的 331 页找到了答案,12.10 图像图标 以下的语句使用当前类路径下的 image 目录的图像文件 us.gif 来创建一个图标: ImageIcon icon = new ImageIcon(“imageus.gif”);根据这个依据我也更改了文档的目录。在程序中我们会遇到很多不熟悉的用

49、语,我们借助网络懂得了这些方法的作用。并能 把他熟练的运用到本程序中。网络和图书能让我们知道新的技术。学到课本上没有的东西。学到更简单的方法。其实学习本来就是自己的事情,别人逼着学是不会真正的学进去的。养成自学的习惯是很有助与以后 3 年的学习的。程序中的不足希望,我会通过大二的学习,使程序中的问题得到解决,争取做出一个完善、健全、强大的程序。小小通信录26通过课题的编写以及对相对资料的查询,我重新认识了 java。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人 PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。Java

50、 是一个纯的面向对象的程序设计语言,它继承了 C+ 语言面向对象技术的核心,Java 舍弃了 C +语言中容易引起错误的指针(以引用取代) 、运算符重载(operator overloading) 、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降

51、低了 Java 程序的运行效率。编写程序的过程我也发现了自己的很多毛病,我发现自己做不下来看着长长的代码,对着长长的代码头都疼。在检查程序错误时也没有足够的耐心。我要在以后的学习生活中改掉这些坏毛病,使自己具有一个程序员的良好品质。小小通信录27参考文献:01(美)梁(Liang,Y.D.). JAVA 语言程序设计基础篇(原书第 6 版)M:机械工业出版社 2008.602 凯德纳黑德, 勒迈, 陈武. 21 天学通 Java 2:专业参考版.M 人民邮电出版社 2004.0103 洪维恩 何嘉. JAVA 2 面向对象程序设计.M 中国铁道出版社 2005.0104 张靓 顾慧敏. JAV

52、A 案例开发.M 中国水利水电出版社.2005.01小小通信录28指导教师评语 成绩:指导教师签名: 年 月 日 小小通信录29附录 A: 附加图、表MySystem 类 UML 类图: 附表 1 MySystem.java 类 UML 图User 类 UML 类图: 附表 2 User 类 UML 图 UserService 类的 UML 类图:MySystem+MySystem()+ actionPerformed(ActionEvent e):voidUser+name; String+tel; String+email; String+phone; String+address; St

53、ring+qq; String+User()+User(int id, String name, String tel, String email, String phone,String category, String address, String work, String q, String qq)+getQq():String+setQq(String qq):void+getName():String+setName(String name):void+getTel():String+setTel(String tel):void+getEmail():String+setEmai

54、l(String email):void+getPhone():String+setPhone(String phone):void+getAddress():String+setAddress(String address):void小小通信录30 附表 3 UserService.java 类 UML 图附录 B: 主要源程序系统的主程序:public class UserSystem public static void main(String args) throws FileNotFoundException java.io.File file = new java.io.File(

55、txl.txt);/ 检查文件是否存在if (file.exists() String s = JOptionPane.showInputDialog(null,已有人使用本通信录。n 新建通信录请按任意数字键n + 继续使用请按数字键 1);if (s.equals(1) new MySystem(); else JOptionPane.showMessageDialog(null,以为你创建好文件。源文件已删除! );new java.io.PrintWriter(file);/ 为用户创建文件new MySystem();/ 调用窗口类,实现系统的显示 else JOptionPane.

56、showMessageDialog(null,这是新的通信录,以为你创建好文件。);new java.io.PrintWriter(file);new MySystem();UserService+add():void+add1(File file, User u):void+delete():void+delete1(File file):void+xg():void+xg1(File file):void+xg11(File file, User u):void+cx();void+search1(File file):void+cx1():void+search12(File file)

57、:void小小通信录31系统的功能函数:public class UserService / 本类是实现系统各项功能的类。public static void add() / 实现增加功能final JFrame newf = new JFrame(添加联系人);/ 创建增加用户界面newf.setSize(300, 400);newf.setVisible(true);newf.setLayout(new GridLayout(7, 2, 5, 5);JLabel jb1 = new JLabel(联系人姓名: );final JTextField jtf1 = new JTextField

58、(15);Panel pp1 = new Panel();pp1.add(jb1);pp1.add(jtf1);newf.add(pp1);JLabel jb2 = new JLabel(联系人手机号: );final JTextField jtf2 = new JTextField(15);Panel pp2 = new Panel();pp2.add(jb2);pp2.add(jtf2);newf.add(pp2);JLabel jb3 = new JLabel(固 定 电 话: );final JTextField jtf3 = new JTextField(15);Panel pp3

59、= new Panel();pp3.add(jb3);pp3.add(jtf3);newf.add(pp3);JLabel jb4 = new JLabel(联系人 QQ : );final JTextField jtf4 = new JTextField(15);Panel pp4 = new Panel();pp4.add(jb4);pp4.add(jtf4);newf.add(pp4);小小通信录32JLabel jb5 = new JLabel(联系人 email: );final JTextField jtf5 = new JTextField(15);Panel pp5 = new

60、 Panel();pp5.add(jb5);pp5.add(jtf5);newf.add(pp5);JLabel jb6 = new JLabel(联系人住地地址: );final JTextField jtf6 = new JTextField(15);Panel pp6 = new Panel();pp6.add(jb6);pp6.add(jtf6);newf.getContentPane().add(pp6);JButton bb1 = new JButton(提交);JButton bb2 = new JButton(关闭);Panel pp9 = new Panel();pp9.ad

61、d(bb1);pp9.add(bb2);newf.add(pp9);bb1.addMouseListener(new MouseAdapter() / 对提交按键添加鼠标监听public void mouseClicked(MouseEvent ee) User u = new User();u.setName(jtf1.getText();/ 从增加用户窗口得到,用户添加的数据u.setPhone(jtf2.getText();u.setTel(jtf3.getText();u.setQq(jtf4.getText();u.setEmail(jtf5.getText();u.setAddre

62、ss(jtf6.getText();File file = new File(txl.txt);try add1(file, u); catch (FileNotFoundException e1) e1.printStackTrace();小小通信录33);bb2.addMouseListener(new MouseAdapter() / 对关闭按键添加鼠标监听public void mouseClicked(MouseEvent ee) newf.setVisible(false););public static void add1(File file, User u) throws Fi

63、leNotFoundException Scanner input = new Scanner(file);User user = new User100;int i = 0, j = 0;while (input.hasNext() / 读取文件中的数据,得到现有的联络人数目useri = new User();useri.name = input.next();useri.phone = input.next();useri.tel = input.next();useri.email = input.next();useri.qq = input.next();useri.address

64、 = input.next();i+;input.close();int o = 1;String z = null, t = null, r = null, g = null;while (o = 1) / 检查文件中是否已存在输入的联系人String m = u.getName();if (m = null | m.equals() JOptionPane.showMessageDialog(null, 姓名不能为空!);break;for (j = 0; j i; j+) if (userj.name.equals(m) JOptionPane.showMessageDialog(nul

65、l, 此人已存在!);return;小小通信录34String h = u.getPhone();if (h = null | h.equals() JOptionPane.showMessageDialog(null, 手机号不能为空!);break;for (j = 0; j i; j+) if (userj.phone.equals(h) JOptionPane.showMessageDialog(null, 此手机号已存在!);return;int p = 0;while (p = 0) z = u.getQq();if (z = null| z.equals()z = 无;t = u

66、.getTel();if (t = null | t.equals()t = 无;r = u.getEmail();if (r = null | r.equals()r = 无;g = u.getAddress();if (g = null | g.equals()g = 无;p = 1;if (p = 1) useri = new User();useri.name = m;useri.phone = h;useri.qq = z;useri.tel = t;useri.email = r;useri.address = g;i+;JOptionPane.showMessageDialog(null, 添加成功!n 已有联系人数目为 + i+ n 新新增联系人的信息为: + n 姓名: + m + n 手机号: + h+ n 固定电话: + t + nQQ: + z + nEmail: + r+ n 地址: + g + );小小通信录35break;PrintWriter output = new PrintWriter(file);/ 向文件指定位置添加输入的信息for (int

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!