Java实验通讯录 实验报告
- 格式:doc
- 大小:174.41 KB
- 文档页数:17
宁波大红鹰学院课程设计课程设计名称: Java学生姓名:学生学号:班级名称:指导教师:完成日期: 2011/01/7学生通讯录管理系统实验报告1、封面;2、目录;3、设计任务书;实验题目:用Java语言编写一个简单的学生通讯录程序,能实现通讯录的基本功能。
实验目的:详细设计:软件产品布局:使用了按钮与下拉菜单。
一个用来显示文件的文本区,一个用于输出信息的文本框。
在下拉菜单中,我选择了用户所需要的一些常用的条件功能:录入和显示。
文件显示区我们设置为可编辑,目的是方便用户进行任何形式的修改,在这里我们忽略了它所带来的不安全性。
在按钮中我们添加了这几个项:录入和显示。
实现方法(算法分析):在设计的时候,考虑到由于能力有限,只是使用了一些许的面向对象程序设计的设计方法,在软件的设计与实现的时候更多的是使用面向过程的设计方法,在软件中,我们提供了两个封装的方法函数:public void read() 和public void write().在这两个方法中,都使用了异常处理机制,当用户进行非法操作时,提供相应的异常(主要是显示出错信息)。
在两个基本点封装的方法中,并没有要求用户提供具体的参数,而是直接地去调用它们,具体的实现方式对用户来说是不可见的,在write方法中,其功能是获取用户所写入的字符串,并将它写入文件关键技术的应用:关键技术通讯录的设计要点有以下四个。
1、通讯录的存取功能主要是通过利用文件的读入与读出的性质来实现2、利用JOptionPane产生的对话框、信息框、确认框与用户进行信息交流3、用数组来存储每个人的信息主要是方便用户在执行查找、删除等较为具体的功能4、用read()和write()两个函数进行对文件的读取操作,主要是要达到更新快的目的,存储最新的信息,做到流通快5、利用Array.sort()方法根据元素的自然顺序对指定的对象数组按升序进行排序通讯录程序源代码:主体内容:1)设计分析;2)各模块的功能及程序说明;3)源程序;4)试验结果5)显示界面输入信息显示信息6)设计体会。
别山东交通学院面向对象课程设计个人通信录管理信息系统的设计与实现院(系)别信息科学与电气工程学院班级学号姓名指导教师时间 2014-08-25—2014-09-5课程设计任务书题目个人通讯录管理系统院 (部) 信息科学与电气工程学院专业计算机科学与技术班级学生姓名学号08 月 25 日至 09 月 5 日共 2 周指导教师(签字)院长(签字)年月日成绩评定表目录1课程设计概述.............................................................个人通讯录功能概述...................................................开发环境概述......................................................... 2个人通讯录系统总体设计...................................................个人通讯录总体设计思想...............................................总体设计流程图....................................................... 3个人通讯录系统详细设计................................................... 4程序测试.................................................................登陆界面.............................................................删除界面.............................................................添加界面.............................................................查找实现............................................................. 设计体会及今后的改进意见.....................................................课程设计概述本课程设计是java语言学习中很重要的实践性环节之一,是在学习完java课程后进行的一次全面的综合练习旨在巩固和加深我们对java语言的基本知识的理解和掌握,掌握java语言编程和程序调试的基本技能,利用java语言进行基本的软件设计,掌握书写程序设计说明文档的能力,提高运用java语言解决实际问题的能力2本次课程设计主要目的及要求:设计一个通讯录管理软件,要求如下:增加记录、删除记录、显示所有记录、查询记录、文件备份、退出。
手机通讯录实验报告及使用说明(附源代码)自查报告。
标题,手机通讯录实验报告及使用说明(附源代码)。
自查报告内容:在本次实验中,我使用了Java编程语言,开发了一个简单的手机通讯录应用程序。
该应用程序可以实现添加联系人、查找联系人、删除联系人等基本功能。
在开发过程中,我遵循了面向对象的编程思想,使用了类和对象的概念来组织和管理联系人信息。
在实验中,我首先设计了Contact类,用于表示一个联系人的信息,包括姓名、电话号码、邮箱等属性。
然后,我设计了AddressBook类,用于管理联系人信息,包括添加联系人、查找联系人、删除联系人等操作。
最后,我编写了一个简单的用户界面,用于与用户交互,实现对通讯录的操作。
在实验过程中,我遇到了一些问题,比如在删除联系人时没有进行足够的输入验证,导致程序出现了错误。
不过,通过调试和修改代码,我最终解决了这些问题,并且实现了一个稳定和可靠的手机通讯录应用程序。
使用说明:1. 添加联系人,在应用程序中选择“添加联系人”选项,然后输入联系人的姓名、电话号码、邮箱等信息,点击“确认”按钮即可完成添加。
2. 查找联系人,在应用程序中选择“查找联系人”选项,然后输入联系人的姓名或电话号码,点击“搜索”按钮即可查找到对应的联系人信息。
3. 删除联系人,在应用程序中选择“删除联系人”选项,然后输入要删除的联系人的姓名或电话号码,点击“确认”按钮即可删除该联系人。
4. 显示所有联系人,在应用程序中选择“显示所有联系人”选项,即可查看当前通讯录中的所有联系人信息。
源代码:```java。
public class Contact {。
private String name;private String phone;private String email;public Contact(String name, String phone, String email) {。
= name;this.phone = phone;this.email = email;}。
《Java Web程序设计》综合性实验报告实验题目:个人通信录专业班级: 2017级Java四班指导教师:汪加楠姓名学号: 174804356 郭志超成绩评定:一、实验目的1.掌握Java Web网站设计的全过程、熟悉JSP技术开发模型在应用开发中的运用。
2.进一步熟练Servlet技术、数据库、标签等一般java-web应用技术。
3.掌握整个java-web应用架构、目录结构以及服务器使用。
4.运用Java Web程序设计课程中所学理论知识转化为实战能力,进一步提高应用开发能力。
实现用户注册、登录,个人通讯录增、删、改、查的功能。
二、实验步骤1、需求分析21世纪信息时代大爆发,随着网络与信息技术的发展,很多陌生人之间都有了或多或少的联系。
本需求规约从用户对软件的需求出发,系统分析软件的功能以及实现过程所需要做的所有工作。
主要定义了手机通讯录管理工具的需求,由五大模块组成,具体功能分为:查询联系人,增/删/改联系人等。
本系统主要是为了更好的管理每个人的通讯录,给每个人提供一个井然有序的管理平台,防止手工管理混乱,造成不必要的麻烦。
开发一套通讯录管理系统很重要,可以加强人们之间的交流与合作,方便了人与人之间的通讯。
此需求分析说明书对通讯软件做了通讯录管理系统的用户需求分析,一定程度上明确所要开发的软件应具有的功能、性能与界面,使系统分析人员及软件开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计和完成后续设计与开发工作。
2、数据库设计3、程序编码(写出所用技术及所有的类名)该项目主要用了DAO、Servlet、JSP等技术进行代码的编写,运用C3P0数据源进行数据库的连接。
主要类:.aynu.rjxy.Correspondence.utils包中包含JDBCUtils 类;cn.itcast.Correspondence.dao包中包含UserDAO类、PersonDAO 类;cn.itcast.Correspondence.javabean包中包含Person类、User 类;cn.itcast.Correspondence.services包中包含PersonService类、UserService类;cn.itcast.Correspondence.servlet包中包含PersonServlet类、LoginServlet类.4、运行结果(截屏)注册页面:注册成功界面:成功登陆界面:添加好友界面:查看好友界面:修改界面:结束界面:三、实验总结在编程代码中多次出现程序报错,根据错误提示信息自己百度进行修改,问同学老师,最终能够完整运行。
石河子大学信息学院数据库与Java课程设计报告专业:计算机科学与技术学生姓名:指导教师:余小平日期: 2021/1/2第一章引言 (2)第二章需求分析 (2)§2.1 信息要求 (2)通话记录 (2)通讯录 (3)§2.2 处理要求 (3)通话记录 (3)通讯录 (3)§2.3 平安性与完整性要求 (3)第三章概念结构设计 (4)§3.1 实体描述 (4)实体集及属性描述 (4)§3.2 E-R图 (5)E-R图及实体集属性的计算方法 (5)第四章逻辑结构设计 (6)§41 数据字典 (6)通话记录表 (6)通讯录表 (7)§4.2 工作流程及用户子模式设计 (7)用户工作流程及子模式设计 (7)第五章系统详细设计 (7)§ (7)通话记录表 (7)关系查询 (8)§ (11)查询模块 (11)结合源代码和操作界面详细分析 (11)第六章本人学习数据库和Java程序设计的心得体会 (17)参考文献 (18)<通话记录管理系统的设计与实现>第一章引言随着数据处理的不断进步和计算机网络的迅速开展,使数据库应用系统不仅在功能而且在结构上都有了深刻的变化,而且运用在生活的每一个方面。
通过学习关系代数,关系演算,函数依赖,关系模式分解,关系模式的标准化让我们建立了扎实的关系数据库理论根底。
而在掌握根本理论的根底上掌握关系数据库的设计方法,掌握现代信息系统的开发方法也显得尤为必要。
目前在关系数据库中用得最多的SQL数据库,开发数据库的语言工具。
所以对于计算机专业的学生来说掌握数据库应用的根本技术,熟悉编程语言与SQL数据库的结合运用是我们计算机专业学生之必备本领。
熟练掌握数据库的工作原理利用查询分析获得更多有用的信息,利用JDBC连接数据库与java,实现更多的功能。
第二章需求分析§2.1 信息要求通话记录通过电信,联通,移动官网下载用户通话记录,对于客户我们应该知道他的他的通话详单〔运营商、本机号码、对方号码、起始时间、通过时长、呼叫类型、通话地点、通话的费用等〕,在其中设置相应的属性。
JA V A课程设计实验报告学校:江西农业大学班级:软件1115班姓名:***学号:********课程:JA V A通讯录指导教师:***2012.12.29一、设计目的本课程设计是java语言学习中很重要的实践性环节之一,是在学习完java 课程后进行的一次全面的综合练习旨在巩固和加深我们对java语言的基本知识的理解和掌握,掌握java语言编程和程序调试的基本技能,利用java语言进行基本的软件设计,掌握书写程序设计说明文档的能力,提高运用java语言解决实际问题的能力。
1、掌握类的定义及应用方法2、掌握对象的创建方法,了解实例变量、实例方法和静态字段的特征3、体会java在中类和对象的面向对象的设计思想二、实验内容本次课程设计是开发一个简易的、小型的通讯录,我们命名为“通讯录”。
通讯录保存在计算机中,便于分组,还便于增加、修改、删除好友信息。
设计一个通讯录管理软件,要求如下:增加组、删除组、修改组、查询好友、添加好友、修改好友,删除好友,退出。
通讯录好友信息包括:姓名,电话,手机,住址,性别等。
(1)通讯录的每一条信息包括姓名,电话,电话;(2)输入功能:可以一次完成若干条信息的输入;(3)显示功能:完成全部通讯录信息的显示(可现实多个好友和好友分组);(4)查找功能:完成按姓名查找通讯信息;(5)删除功能:完成按姓名删除通讯信息;(6)应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!三、实验要求1、对系统进行功能模块分析、功能模块分析正确;2、系统设计要有经济价值,要实用;3、编程简练,可用,功能全面,具有较好的健壮性;4、系统界面外观和布局,可个性化设计,总体原则是“界面简洁、操作便捷”;5、说明书、流程图要清楚;6、应用程序打包发布。
四,设计思路1程序设计总体思路通讯录的功能模块有:(1)提供显示主界面,方便用户操作,满足需求;(2)添加:可以添加通讯录好友分组和好哦与信息,依次输入姓名、性别、手机、固定电话、地址、组别、归属组等;(3)显示:可以显示输出所有通讯录里信息;(4)查询:可以用姓名查询;(5)修改:输入欲修改的那个人的名字后,再依次输入姓名、性别、电话、手机、地址、组别、可完成修改,也可以修改组名;(6)删除:可以直接删除好友分组及里面的好友,也可以单独删除好友;(7)帮助:可以在帮助里面;程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。
实验五 Java标准类库一、实验目的掌握Java标准类库的使用及集合框架的使用,使学生具备利用Java进行数据处理的能力。
二、主要仪器及耗材连接网络的计算机一台三、实验内容与步骤利用映射接口,编写一个模拟电话簿的程序,实现对联系人电话的增删改查。
要求:创建Frame,设置Frame布局,在其中创建多个Button,分别实现增删改查功能;创建一个label,用来显示结果。
四、实验注意事项1、重点掌握集合接口和映射接口的灵活运用。
2、事件处理模型的熟练运用。
五、程序运行结果界面:错误添加:添加:添加后查找:修改:修改后查找:清空:删除:删除后查找:六、代码import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JFrame;import javax.swing.JTextField;import javax.swing.SwingUtilities;import java.awt.Rectangle;import javax.swing.JLabel;import javax.swing.JButton;import java.awt.Point;import java.awt.Dimension;import java.util.HashMap;import java.util.Iterator;import java.util.Set;import java.util.Map.Entry;public class Two extends JFrame {public static HashMap<String,String> callBook=new HashMap<String,String>();private static final long serialVersionUID = 1L;private JPanel jContentPane = null;private JTextField jTextField = null;private JLabel jLabel = null;private JLabel jLabel1 = null;private JTextField jTextField1 = null;private JButton jButton = null;private JButton jButton1 = null;private JButton jButton2 = null;private JButton jButton3 = null;/*** This is the default constructor*/public Two() {super();initialize();}/*** This method initializes this** @return void*/private void initialize() {this.setContentPane(getJContentPane());this.setTitle("通讯录");this.setBounds(new Rectangle(450, 250, 305, 200));}/*** This method initializes jContentPane** @return javax.swing.JPanel*/private JPanel getJContentPane() {if (jContentPane == null) {jLabel1 = new JLabel();jLabel1.setBounds(new Rectangle(50, 120, 60, 25));jLabel1.setText("电话号码");jLabel = new JLabel();jLabel.setBounds(new Rectangle(50, 75, 60, 25));jLabel.setText("姓名");jContentPane = new JPanel();jContentPane.setLayout(null);jContentPane.add(getJTextField(), null);jContentPane.add(jLabel, null);jContentPane.add(jLabel1, null);jContentPane.add(getJTextField1(), null);jContentPane.add(getJButton(), null);jContentPane.add(getJButton1(), null);jContentPane.add(getJButton2(), null);jContentPane.add(getJButton3(), null);}return jContentPane;}/*** This method initializes jTextField** @return javax.swing.JTextField*/private JTextField getJTextField() {if (jTextField == null) {jTextField = new JTextField();jTextField.setBounds(new Rectangle(130, 75, 120, 25));}return jTextField;}/*** This method initializes jTextField1** @return javax.swing.JTextField*/private JTextField getJTextField1() {if (jTextField1 == null) {jTextField1 = new JTextField();jTextField1.setBounds(new Rectangle(130, 120, 120, 25));}return jTextField1;}/*** This method initializes jButton** @return javax.swing.JButton*/private JButton getJButton() {if (jButton == null) {jButton = new JButton();jButton.setText("查找");jButton.setSize(new Dimension(60, 25));jButton.setLocation(new Point(10, 20));jButton.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent e) {if(jTextField.getText().equals(""))JOptionPane.showMessageDialog(null,"姓名不能为空!");else{String name=jTextField.getText();if(find(name)==null)JOptionPane.showMessageDialog(null,"该联系人不存在!");else{jTextField1.setText(find(name).getValue());JOptionPane.showMessageDialog(null,"查找成功");}}}});}return jButton;}/*** This method initializes jButton1** @return javax.swing.JButton*/private JButton getJButton1() {if (jButton1 == null) {jButton1 = new JButton();jButton1.setLocation(new Point(80, 20));jButton1.setText("保存");jButton1.setSize(new Dimension(60, 25));jButton1.addActionListener(newjava.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent e) {if(jTextField.getText().equals("")||jTextField1.getText().equals(""))JOptionPane.showMessageDialog(null,"姓名和电话号码不能为空!");else{String name=jTextField.getText();String telephone=jTextField1.getText();callBook.put(name,telephone);JOptionPane.showMessageDialog(null,"保存成功");jTextField.setText("");jTextField1.setText("");}}});}return jButton1;}/*** This method initializes jButton2** @return javax.swing.JButton*/private JButton getJButton2() {if (jButton2 == null) {jButton2 = new JButton();jButton2.setLocation(new Point(150, 20));jButton2.setText("删除");jButton2.setSize(new Dimension(60, 25));jButton2.addActionListener(newjava.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent e) {if(jTextField.getText().equals(""))JOptionPane.showMessageDialog(null,"姓名不能为空!");else{String name=jTextField.getText();if(!exist(name))JOptionPane.showMessageDialog(null,"该联系人不存在!");else{callBook.remove(name);JOptionPane.showMessageDialog(null,"删除成功");}jTextField.setText("");jTextField1.setText("");}}});}return jButton2;}/*** This method initializes jButton3** @return javax.swing.JButton*/private JButton getJButton3() {if (jButton3 == null) {jButton3 = new JButton();jButton3.setLocation(new Point(220, 20));jButton3.setText("清空");jButton3.setSize(new Dimension(60, 25));jButton3.addActionListener(newjava.awt.event.ActionListener() {public voidactionPerformed(java.awt.event.ActionEvent e) {jTextField.setText("");jTextField1.setText("");}});}return jButton3;}public static void main(String[] args){SwingUtilities.invokeLater(new Runnable() {public void run() {Two thisClass = new Two();thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);thisClass.setVisible(true);}});}private static boolean exist(String name) {Set<String> set = callBook.keySet();if (set.contains(name)) {return true;}return false;}private static Entry<String, String> find(String name) { Entry<String, String> entry1 = null;if (exist(name)) {Set<Entry<String, String>> entrySet = callBook.entrySet();Iterator<Entry<String, String>> iterator =entrySet.iterator();while (iterator.hasNext()) {Entry<String, String> entry2 = iterator.next();if (entry2.getKey().equals(name)) {entry1 = entry2;break;}}}elsereturn null;return entry1;}} // @jve:decl-index=0:visual-constraint="69,35"。
课程设计报告:Java通讯录一、引言本次课程设计是关于Java通讯录的开发,旨在让我们更深入地理解Java编程语言在现实生活中的应用。
通讯录是一种常见的应用程序,它可以帮助我们管理联系人信息,方便我们与朋友和家人保持联系。
二、需求分析本次课程设计的目标是根据用户需求,设计并实现一个功能齐全的Java通讯录应用程序。
具体需求如下:用户可以添加联系人信息,包括姓名、电话号码、电子邮件地址等。
用户可以删除联系人信息。
用户可以编辑联系人信息。
用户可以按姓名、电话号码或电子邮件地址搜索联系人信息。
用户可以查看所有联系人信息。
三、设计数据库设计为了存储联系人信息,我们选择使用Java内置的ArrayList类作为数据库。
ArrayList是一个动态数组,可以根据需要自动增长。
我们将使用ArrayList的add()方法添加联系人信息,使用get()方法获取联系人信息,使用remove()方法删除联系人信息。
界面设计我们使用Java Swing库来创建用户界面。
界面包括以下组件:JLabel:显示提示信息和标题。
JTextField:用于输入和编辑联系人信息。
JButton:用于触发添加、删除、编辑和搜索等操作。
JTable:用于显示所有联系人信息。
JComboBox:用于选择搜索条件。
四、实现添加联系人信息当用户点击“添加”按钮时,程序会创建一个新的联系人对象,并将用户输入的信息设置到该对象中。
然后,程序将该对象添加到ArrayList中。
删除联系人信息当用户选择要删除的联系人并点击“删除”按钮时,程序会从ArrayList中删除该联系人对象。
编辑联系人信息当用户选择要编辑的联系人并点击“编辑”按钮时,程序会将该联系人的信息显示在文本框中,以便用户进行修改。
修改完成后,程序会将修改后的信息保存到ArrayList中。
搜索联系人信息当用户选择搜索条件并输入搜索关键字时,程序会在ArrayList 中查找符合条件的联系人对象,并将其显示在表格中。
新乡学院计算机与信息工程学院项 目 实 训 报 告2015年 12月29日项目名称手机通讯录实训报告班 级 2012级计算机科学与技术1班 学 号 姓 名 指导教师目录第一章绪论 (1)1.1项目研究背景 (1)1.2项目研究的目的及意义 (1)1.3系统主要实现内容与实现方式 (2)1.3.1系统主要实现内容 (2)1.3.2安卓系统开发的方法 (2)1.3.3 系统的开发平台 (2)1.4系统开发需用到的技术支持 (3)1.4.1 Java语言 (3)1.4.2 Android (4)第二章系统分析 (4)2.1系统可行性分析 (4)2.1.1技术可行性 (4)2.1.2经济可行性 (5)2.1.3操作可行性 (5)2.2需求分析 (5)2.2.1 Android通讯录的使用意义 (5)2.2.2外部事件 (6)第三章系统概要设计 (7)3.1系统总体设计 (7)3.2处理流程设计 (7)3.3 数据库设计 (8)3.3.1 SQLite数据库简介 (8)3.3.2 SQLite特点 (9)第四章系统详细设计 (10)4.1联系人浏览模块 (13)4.2查看联系人模块 (15)4.3编辑联系人模块 (16)4.4查找联系人模块 (17)第五章系统测试与调试 (15)5.1测试目的 (15)5.2程序调试 (16)5.3 测试的主要内容 (16)第六章总结 (16)参考文献 (17)第一章绪论1.1项目研究背景Android是一套真正意义上的开放性移动设备综合平台,它包括操作系统、中间件和一些关键的平台应用。
Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚拟机,它们有效地优化了Java程序的运行过程。
Android系统平台基于优化了的Linux内核,它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的连接层。
Android最大特点在于它是一个开放的体系架构,具有非常好的开发和调试环境,而且还支持各种可扩展的用户体验,Android里面具有非常丰富的图形系统,对多媒体的支持功能和非常强大的浏览器。
通讯录管理系统课程设计报告Java1. 简介通讯录管理系统是一种方便用户存储和管理联系人信息的工具。
本课程设计将使用Java语言开发一个简单的通讯录管理系统,实现对联系人信息的增删改查功能。
通过本项目的实践,学习者将掌握Java编程语言的基础知识和面向对象编程的技巧。
2. 功能需求通讯录管理系统应包含以下功能: - 添加联系人信息:用户可以输入联系人的姓名、电话号码、邮箱等信息添加到通讯录中。
- 显示所有联系人信息:系统能够展示所有已保存在通讯录中的联系人信息。
- 查找联系人信息:用户可以通过姓名或电话号码查找特定联系人的信息。
- 修改联系人信息:用户可以对已保存的联系人信息进行修改。
- 删除联系人信息:用户可以删除通讯录中的联系人信息。
实现以上功能需要设计相应的数据结构和算法,以及编写用户交互界面。
3. 技术实现3.1 数据结构在Java中,可以使用ArrayList或HashMap等数据结构来存储联系人信息。
ArrayList适用于有序的联系人列表,而HashMap适用于根据键值快速查找联系人信息。
3.2 用户交互界面用户交互界面可以通过Java的Swing或JavaFX等GUI工具包来实现。
设计一个简洁明了的界面,包含菜单栏、输入框、按钮等组件,以方便用户操作。
3.3 功能实现•添加联系人信息:用户输入信息后,将联系人信息添加到数据结构中。
•显示所有联系人信息:遍历数据结构,将所有联系人信息展示在界面上。
•查找联系人信息:根据用户输入的查询条件,在数据结构中查找对应的联系人信息。
•修改联系人信息:根据用户输入的修改信息,更新数据结构中相应的联系人信息。
•删除联系人信息:根据用户输入的删除条件,从数据结构中移除对应的联系人信息。
4. 总结通讯录管理系统是一个简单实用的应用程序,能够帮助用户有效管理联系人信息。
通过本课程设计,学习者将学习如何使用Java语言开发基本的应用程序,掌握面向对象编程的基本原理和技巧。
集中上机实习报告实验题目用java实现简单功能的学生通讯录实验题目用java实现简单功能的学生通讯录;需求分析和系统设计需求分析要实现的功能分析:通过题目可知要设计一个学生通讯录,要求实现简单的通信录管理,能够输入通信录卡片(实现增、删、改等功能),能够分组,并能够实现按名字(或其他方式)查询功能;实现界面:可以是DOS界面,功能按提示方式输入实现;可以是Windows界面,功能用菜单形式,输入界面用对话框形式。
概要设计为了实现实现通讯录界面,需要完成对电话簿的添加,删除,修改功能,因此只需要完成对这三个按钮事件的处理。
这三个按钮同样可以用一个监听器类来实现事件的监听。
区分他们的方法同样是根据按钮标题的不同来区分,当鼠标单击列表组件时,显示不同人员的联系信息,所以需要为列表组件添加鼠标事件监听器。
算法分析在实现功能时只用了简单的面向对象的设计方法,在处理多个按钮事件时,区分按钮的关键是按钮的标题区分,我用了按钮命令事件处理,并用if else 来区分“添加”,“删除”,“修改”这三个按钮。
界面上放入一个列表主件,一个“姓名:”的标签和一个输入姓名的编辑框,一个“电话:”的标签和一个联系电话的编辑框,一个“地址:”的标签和一个地址的编辑框,还有“添加:”、“删除:”、“修改:”等按钮,及对mouseClicked 事件的监听类。
构造了JFrame mainFrm 为主窗口,JTextField name 为姓名输入框,JTextField tel 为电话输入框,JTextField add 为地址输入框,JList dataList 为列表组建,String[] ming 为姓名数组,String[] phone 为电话数组,String[] addr 为地址数组。
在实现过程中,定义PhoneBook类继承了MouseAdapter类与ActionListener接口,就可以用Book类来实现按钮命令监听器和鼠标事件监听器。
如果出现错误操作,会在控制台出现异常,且操作无效。
模块划分与说明学生表流程图1,进入通讯录后先在姓名输入框内输入姓名如xx,在电话输入框内输入联系电话,在地址输入框内输入地址;2,点击“添加”按钮,姓名xx出现在面板左侧的列表中;3,(1)继续1,2,步骤可向学生通讯录中添加更多学生信息如yy;(2)可对已添加的学生信息进行修改,如将xx的电话号改变:在列表中点击xx姓名,对xx信息进行修改,最后点击“修改”按钮,修改后的信息被保存;(3)可对已添加的学生信息进行删除操作,如将xx的信息删除:在列表中点击xx姓名,然后点击“删除”按钮,即可将学生信息删除;总体图:流程图:添加模块流程图:程序源代码package通讯录;import java.awt.*;import java.awt.event.*;import javax.swing.*;class Book extends MouseAdapter implements ActionListener {public static final int WIDTH=600;public static final int HIGTH=400;JFrame mainFrm;JTextField name;JTextField tel;JTextField add;JList dataList;String[] ming;String[] phone;String[] addr;int n=0;void book(){mainFrm=new JFrame();mainFrm.setTitle("学生通讯录");mainFrm.setSize(500,300);mainFrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container contentPane=mainFrm.getContentPane();ming=new String[10];phone=new String[10];addr=new String[10];dataList=new JList(ming);dataList.setSelectedIndex(1);dataList.getSelectedValue();JPanel P1=new JPanel();JPanel P2=new JPanel();JPanel P3=new JPanel();P1.setSize(400,200);contentPane.add(P1,BorderLayout.WEST); contentPane.add(P2,BorderLayout.CENTER); contentPane.add(P3,BorderLayout.NORTH);P1.add(dataList);P2.setLayout(new GridLayout(3,1));JLabel l1=new JLabel("姓名:");name=new JTextField();JLabel l2=new JLabel("电话:");tel=new JTextField();JLabel l3=new JLabel("地址:");add=new JTextField();P2.add(l1);P2.add(name);P2.add(l2);P2.add(tel);P2.add(l3);P2.add(add);JButton b=new JButton("添加");b.addActionListener(this);P3.add(b);b=new JButton("删除");b.addActionListener(this);P3.add(b);b=new JButton("修改");b.addActionListener(this);P3.add(b);dataList.addMouseListener(this);mainFrm.setVisible(true);}public void actionPerformed(ActionEvent e) {if(e.getActionCommand()=="添加"){n++;ming[n]=name.getText();phone[n]=tel.getText();addr[n]=add.getText();dataList.setListData(ming);}else if(e.getActionCommand()=="删除") {int t=dataList.getSelectedIndex();for(int i=t;i<=n;i++){ming[i]=ming[i+1];phone[i]=phone[i+1];addr[i]=addr[i+1];}n--;name.setText("");tel.setText("");add.setText("");dataList.setListData(ming);}else if(e.getActionCommand()=="修改"){int t=dataList.getSelectedIndex();ming[t]=name.getText();phone[t]=tel.getText();addr[t]=add.getText();dataList.setListData(ming);}}public void mouseClicked(MouseEvent e){int i=dataList.locationToIndex(e.getPoint());name.setText(ming[i]);tel.setText(phone[i]);add.setText(addr[i]);}}public class Tongxunlu {/*** @param args*/public static void main(String[] args) {Book h=new Book();h.book();}}结果截图初始窗口:添加:继续添加:删除:修改:实验心得Java布局管理是新学的内容,因为对窗口感兴趣,所以写代码的时候也不觉得烦躁,借鉴了书上的内容,构造框架窗口时使用了javaw.swing包,构造了主框架MainFrm;用JLabel(“”)设置了三个标签,分别为:“姓名”“电话”“地址”;并使用了JTextField进行单行文本输入;对“添加”“删除”“修改”这三个功能选项,则导入了java.awt包,与java.awt.event包,使用了JBonton进行按钮设置,并对这三个按钮进行addMouseListener监听,当发生mouseClicked事件时,事件监听器会传递给容器进行处理;列表我使用了列表框组件JList,并将学生姓名添加在列表中,本来想用组合框组件JComboBox,觉得这样比较节省空间,但想到这样不方便根据姓名查询,所以还是用了列表框组件。
我的总布局管理器使用的是边界布局管理器,在五个位置中,我选择了WEST,CENTER和NORTH这三个面板分别放了列表组件,输入面板与按钮面板。
输入面板使用了网格布局管理器GirdLayout(3,1)使输入呈三行一列;按钮面板则是用的流布局管理器(默认)依次为“添加”“删除”“修改”。
这次实验收获非常大,对第六章的加深了理解,更动手实践了有关事件监听器的操作,这让本来在上课时听得懵懂的内容如事件监听器的响应等理解的更深刻了,书上介绍的三种布局管理器也得到了实际的应用,上课时没注意到的组件也应用到了实验中。
总体来说,受益匪浅。