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

上传人:laozhun 文档编号:2885098 上传时间:2023-03-01 格式:DOC 页数:46 大小:401.50KB
返回 下载 相关 举报
软件工程专业实训报告.doc_第1页
第1页 / 共46页
软件工程专业实训报告.doc_第2页
第2页 / 共46页
软件工程专业实训报告.doc_第3页
第3页 / 共46页
软件工程专业实训报告.doc_第4页
第4页 / 共46页
软件工程专业实训报告.doc_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《软件工程专业实训报告.doc》由会员分享,可在线阅读,更多相关《软件工程专业实训报告.doc(46页珍藏版)》请在三一办公上搜索。

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面向对象程序设计.M 中国铁道出版社2005.0104 张靓 顾慧敏. JAVA案例开发.M 中国水利水电出版社.20

3、05.01指导教师签字: 年 月 日小小通信录摘 要社会在不断的进步,纸制的通信录已经快要被淘汰了。电子通信录已经成为了主流。电子通信录与原有的纸制通信录相比,纸质通讯录有以下缺陷:储存信息量少、查找不方便、信息容易丢失,且对于隐私保护不强。而电子通信录则克服了这些缺陷,且具有占用空间小,查找方便,不易丢失等多个优点。应校友的需求我们编写了程序:小小通信录。它可以记录学友的各项通信信息。方便校友尽快联系需要联系的人。可更好的增强校友之间的联系、友谊。本程序具有界面简便大方,使用户不用学习操作指南也可以简单操作。大大提高了工作效率。本程序是用JAVA语言编写的,程序占用系统资源相对较少,且可移植

4、性很强,可以适用各种操作系统。用户还可以根据自己的需求不同对程序做出相应的修改,使每个用户都有最适用于自己的通信录。这也是本程序的实用性所在。关键词:通信录; 方便; 简单; 实用目 录摘 要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界面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: 主要

5、源程序28第1章 项目分析为方便校友之间的联系,储存校友的联系方式。使校友之间得到更好的联系。所以我们组决定制作小小通信录,以为同学们提供方便。1.1问题描述程序需要有一个简洁的界面,使同学们一看便知怎么操作。程序还需要实现增加、修改、删除、查询功能。由于对数据库和JAVA之间联系的欠缺,本组决定用文本储存联系人的基本信息。同时为解决用户大意错误修改联系人,本程序在修改过联系人以后还需要确认要修改联系人的姓名。为解决这些问题我们就得查询个方面的资料,为更好的解决问题做好准备。1.2技术分析本程序中使用JFrame类编写程序的界面,运用各种监听方法,监听窗口、按键、鼠标的各种动作。本程序的所有信

6、息都储存在文件当中,所以本程序是使用File类来实现对文本的读取、储存、增加、修改、查询。 为使程序简单话,我们决定把整个程序分成4个类, 分别为UserSystem.java、UserService.java、MySystem.java、User.java。分别实现程序的部分功能。UserSystem.java该类是程序的主类,该类含有main方法,程序从该类开始执行。MySystem.java该类主要是实现图形化界面的,实现按钮,输入框,标签等图形化面。User.java该类主要是联系人的相关数据。UserService.java该类主要是对各种操作方法的定义和实现,是实现增删改查等主要功

7、能的服务类。第2章 实现程序的主流程图: 图2-1 程序的主流程图 程序的增加、修改、删除、查询,都是在程序中的UserService.java实现的。程序中的主界面主要是通过程序中的MySystem.java实现的。程序的开始也就是程序的主类是通过程序中的UserSystem.java。各类之间的关系可以用下图表示。 图2-2 程序各类之间的调用关系下面将为你讲解我们程序功能实现的详细细节。2.1程序开始模块程序的主模块是由UserSystem.java类实现的。该类中有对各个类的调用。该类的开始先检验程序所需文件是否存在。如果系统没有创建文件,程序会为你新创建文本。如果有程序会问你是否继续

8、使用已创建的通信录。你也可以新建通信录,重新输入联系人。接下来系统会显示程序的主界面,这通过MySystem.java实现。2.1.1流程图UserSystem.java类运行的主要流程如下: 图2-3 开始类的流程图2.1.2界面 本类中将出现的界面:图2-4系统中没有所需的储存文件时,提示系统为用户新建文件。 图2-5 系统中已有文件存在,程序会提问你是否需要新建通信录。 图2-6 为用户重新建立文件,并提示用户原通信录已删除。2.1.3代码讲解import java.io.FileNotFoundException;在程序得开始我们向程序中导入了文件类(File类)。类是Java系统中预

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

10、serSystem 接下来我们创建UserSystem类。在这个类中我们包含了main方法。public static void main(String args) throws FileNotFoundException 我们创建了main方法,每个Java应用程序必须有一个用户声明的main方法,它定义了程序从何处开始。JVM通过调用main方法执行应用程序。程序中还用到了throws。throws是用来声明一个方法可能抛出的所有异常信息,注意,是可能的,所有的异常信息,在Java 里面,大家很熟悉什么是类和对象,在这里,throws 要抛出的就是一个异常类,因为它并不知道具体会出现哪种异

11、常,所以就简单抛出一个异常类,包含这个异常类下面所有可能的异常。throws 通常不用显示的捕获异常,而是由系统自动将所有捕获到的异常信息抛给上级方法来处理,举个简单的例子来说:A类声明抛出了一个异常类,如果系统捕获到该异常类下面某个具体的异常对象,则上交给A的父类B来处理,假如B不做处理,那么B继续上抛,上抛给B的父类C来处理,以此类推,直至找到可以处理该异常的方法为止。java.io.File file = new java.io.File(txl.txt);本语句为文件txl.txt创建一个File对象。if (file.exists()else查看文件是否存在File类中的exsits

12、()方法。利用if语句判断文件存在与不存在时的动作。String s = JOptionPane.showInputDialog(null,已有人使用本通信录(文件位于txl.txt)。n新建通信录请按任意数字键n + 继续使用请按数字键1);当文件存在时,显示消息对话框,提示用户接下来的操作。并将用户输入的信息传递给String类型的s。s的值关系到程序的下一步运行。if (s.equals(1) new MySystem();在上一步的选择中如果用户键入了数字1。则表示用户需要继续使用已有的通信录。系统则会调用程序的MySystem()类,显示程序主界面。equals( ) 如果此对象与指

13、定对象相同,则返回 true。如果不相同,则返回false。JOptionPane.showMessageDialog(null,以为你创建好文件(文件位于txl.txt)。源文件已删除! );new java.io.PrintWriter(file); new MySystem(); 在文件已存在时如果用户键入其他键,则程序会为用户重新建立文件。也会把原有的通信录删除。程序调用构造方法new PrintWinter(String filename)创建一个新的文件。并把原有文件的内容删除。程序新建文件后会调用程序的MySystem()类,显示程序的主界面。使程序继续运行。2.2程序界面显示模

14、块程序的界面显示主要是有MySystem.java类实现的。MySystem.java主要是实现图形化界面的,实现按钮,输入框,标签等图形化界面.。这个类中的方法主要是Java语言程序设计基础篇中第3篇 图形用户界面程序设计的知识。我们利用第一周的部分时间学习了这部分的知识。为我们在这里编写程序的界面打下了基础。这个类中主要用的是不抽象窗口工具集(Abstract Window Tookit, AWT)。AWT使用于开发简单的图形用户界面。而是使用的比AWT用户界面组件更稳定、通用和灵活的Swing组件库取代。Swing组件更少地依赖目标机器上的平台,更少使用本地的GUI资源。MySystem

15、类UML类图:MySystem+MySystem()+ actionPerformed(ActionEvent e):void 图2-7 MySystem.java类UML图2.2.1流程图MySystem.java类运行的流程图: 图2-8 程序界面系统的流程图2.2.2界面 本类中出现程序的主界面,好程序退出时的界面,界面如下图: 图2-9 程序的主界面 图2-10 程序的退出界面 2.2.3代码讲解import java.awt.*;import javax.swing.*;由于本类是用于编写程序的界面,所以本类中需要向程序中导入java.awt包和javax.swing包。用于程序编译

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

17、类相似,不能使用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类是所有轻型Sw

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

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

20、d);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/2;int halfHeight = conSize.height/2;Dimensi

21、on 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像素的屏幕中间,屏幕的位置应是(800/2,600/2)=(400,300)2、为了设置该窗口左上角的位置,以使窗

22、口中心与屏幕中心相吻合,必须符合2个小条件(1)窗口的一半或100像素必须落在屏幕的中心的左边(2)窗口的一半或100像素必须落在屏幕的中心的上方,因此窗口左上角的位置必须定位于(400-100,300-100)=(300,200)。但在实际程序运行的过程中,程序的运行环境显示屏幕的实际尺寸和像素清晰度是不尽相同的,我们必须能动态的判断运行Java程序的计算机屏幕的大小,以使程序不管运行在什么计算机上都能居中,JAVA的AWT提供了一个Toolkit类,以使我们做出判断!具体应用:1、在Toolkit类上调用一个静态方法getDefaultToolkit(),以便为这个平台在AWT的Toolk

23、it对象上获得一个句柄。2、然后调用Toolkit对象的getScreenSize()方法,该方法返回一个Dimension(中文意为尺寸)类对象。Demension对象正好有两个public int属性,即width(以像素为单位),和heigth(以像素为单位)3、把这种方法调用“系”在一起,因为我们不想长时间的保持Toolkit对象。我们只想暂时用它来恢复屏幕的Dimension对象:代码:Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();因此不必向引用变量分配Toolkit对象的句柄。addWindowLi

24、stener(new WindowAdapter() public void windowClosing(WindowEvent e) setVisible(false);System.exit(0););对窗口添加监听,当窗口被关闭时系统退出b1.addActionListener(this); b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b11.addActionListener(this);b12.addActionL

25、istener(this);为各个按键添加监听,为按键后续实现功能做下铺垫。public void actionPerformed(ActionEvent e) 创建监听方法实现各个按键的监听。if (b1 = e.getSource() final JFrame newf = new JFrame(查询方式);newf.setSize(200, 150);newf.setVisible(true);JButton b13 = new JButton(关闭);newf.setLayout(new GridLayout(3, 1, 5, 5);newf.add(b11);newf.add(b12

26、);newf.add(b13);b13.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent ee) newf.setVisible(false););当按键查询被按下时,显示窗体让用户选择查询的方式。并对关闭按键添加鼠标监听,当鼠标按下关闭按键时查询窗体退出。if (b11 = e.getSource() UserService.cx();当按下按姓名查询时,调用UserService类中的cx()方法。实现按姓名查询。if (b12 = e.getSource() UserService.cx1();

27、当按下按手机号查询时,调用UserService类中的cx1()方法。实现按手机号查询。if (b2 = e.getSource() ) UserService.add();当按下增加键时,调用UserService类的add()方法,增加功能。if (b3 = e.getSource() UserService.delete();当按下删除键时,调用UserService类的delete()方法,删除功能。if (b4 = e.getSource() UserService.xg();当按下修改时,调用UserService类的xg()方法,实现修改功能。if (b5 = e.getSour

28、ce()JOptionPane.showMessageDialog(null,本通讯录由刘旭辉,翟瑞东,张渊喆共同制作.n 谢谢使用,再见!);System.exit(0);当按下退出时,提示退出,退出系统。2.3 联系人信息模块联系人的信息板块主要是User.java类,该类主要是联系人的相关数据。该类中建立联系人对象包含了联系人的各项信息,联系人姓名、联系人手机号、联系人QQ等。同时类中还包含了很多的方法,来得到相关的信息。User类UML类图:User+name; String+tel; String+email; String+phone; String+address; String

29、+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+setEmail(St

30、ring email):void+getPhone():String+setPhone(String phone):void+getAddress():String+setAddress(String address):void 图2-11 User类UML图2.3.1代码讲解public class User 为程序创建User类。public User() super();public User(int id, String name, String tel, String email, String phone,String category, String address, Strin

31、g 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类中的不含参构造方法和含参构造方法。当从一个类继承时,子类和父类都有一个同名方法,也就是子类覆盖了父类的方法,可是又想调用父类的方法,那么就要用super。 其他下面的代码是为了实现对信息的读写。在此不做详细的介绍。2.4 程序的功能模块程序的主要功能是在这个UserService.java类实现的,该类

32、是程序实现功能的主要类。该类中包括add()方法、add1(File file, User u)方法、delete()方法、delete1(File file)方法、xg()方法、xg1(File file)方法、xg11(File file, User u)方法、cx()方法、search1(File file)方法、cx1()方法、search12(File file)方法。分别实现程序的添加功能、删除功能、修改功能、查询功能。UserService类的UML类图:UserService+add():void+add1(File file, User u):void+delete():vo

33、id+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):void 图2-12 UserService.java类UML图2.4.1流程图 增加方法的流程图: 图2-13 增加方法流程图查询功能的流程图如下: 图2-14 程序查询的流程图2.4.2界面本类中出现的界面: 图2-15 添加联系人界面 图2-16 添加成功界面 图2-17 查询界面 图2-1

34、8 修改联系人界面 图2-19 删除联系人成功界面2.4.3代码讲解 这个类中需要导入很多的类,原理和前三个的一样在这里不做过多的解释。 本类中首先实现的是添加方法add()。程序中先建立添加的窗口。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

35、.setEmail(jtf5.getText(); u.setAddress(jtf6.getText();File file = new File(txl.txt);try add1(file, u); catch (FileNotFoundException e1) e1.printStackTrace();); 为确定按键,设置监听,并设置动作。从输入对话框中得到信息。并执行add1()方法,实现对联系人的添加。bb2.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent ee) newf.setV

36、isible(false););为关闭按键添加监听。当关闭按键按下时,窗口关闭。接下来该类实现add1()方法,这个方法主要是读取文件中联系人的数目,并在相应的位置添加键入的联系人。while (input.hasNext() useri = new User();useri.name = input.next();useri.phone = input.next();useri.tel = input.next();useri.qq = input.next();useri.email = input.next();useri.address = input.next();i+; 上述代码的

37、主要作用是读出文件中已有联系人的数目,并由i记录联系人总数目。String m = u.getName();if (m = null | m.equals()break; 如果输入的联系人姓名为空,程序将退出。for (j = 0; j i; j+) if (userj.name.equals(m) JOptionPane.showMessageDialog(null, 此人已存在!);return; 本段代码逐个检测系统储存的通信录中是否存在同名的联系人。String h = u.getPhone();if (h = null | h.equals()break; 如果输入的联系人的手机号为

38、空,程序将退出。for (j = 0; j i; j+) if (userj.phone.equals(h) JOptionPane.showMessageDialog(null, 此手机号已存在!);return;本段代码逐个检测系统储存的通信录中是否存在同手机号的联系人。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已有联系人数

39、目为+i+n新新增联系人的信息为:+ n姓名: + m + n手机号: + h + nQQ: + z + n固定电话:+ t + nEmail: + r + n地址: + g + ); 检查出联系人中没有与索要添加联系人信息相同的。则联系人的信息分别从窗口中得到。并对i进行加1,为在文件最后一个联系人后面添加上新加入的联系人的信息。PrintWriter output = new PrintWriter(file);for (int k = 0; k i; k+) String a = userk.name + + userk.tel + + userk.email + + userk.pho

40、ne + + userk.address + + userk.qq + rn;output.print(a); 创建写入方法并向文件的正确位置添加新增联系人。到此增加方法结束。 下面为本系统查询方法的讲解。查询方法还是需要先检验文件中已有联系人的数目。while (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.showMessageDialog(null, 通信录中没有此人,按确定退

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号