Java实验通讯录 实验报告.docx
《Java实验通讯录 实验报告.docx》由会员分享,可在线阅读,更多相关《Java实验通讯录 实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
Java实验通讯录实验报告
集中上机实习报告
实验题目用java实现简单功能的学生通讯录
实验题目
用java实现简单功能的学生通讯录;
需求分析和系统设计
需求分析要实现的功能分析:
通过题目可知要设计一个学生通讯录,要求实现简单的通信录管理,能够输入通信录卡片(实现增、删、改等功能),能够分组,并能够实现按名字(或其他方式)查询功能;
实现界面:
可以是DOS界面,功能按提示方式输入实现;可以是Windows界面,功能用菜单形式,输入界面用对话框形式。
概要设计
为了实现实现通讯录界面,需要完成对电话簿的添加,删除,修改功能,因此只需要完成对这三个按钮事件的处理。
这三个按钮同样可以用一个监听器类来实现事件的监听。
区分他们的方法同样是根据按钮标题的不同来区分,当鼠标单击列表组件时,显示不同人员的联系信息,所以需要为列表组件添加鼠标事件监听器。
算法分析
在实现功能时只用了简单的面向对象的设计方法,在处理多个按钮事件时,区分按钮的关键是按钮的标题区分,我用了按钮命令事件处理,并用ifelse来区分“添加”,“删除”,“修改”这三个按钮。
界面上放入一个列表主件,一个“姓名:
”的标签和一个输入姓名的编辑框,一个“电话:
”的标签和一个联系电话的编辑框,一个“地址:
”的标签和一个地址的编辑框,还有“添加:
”、“删除:
”、“修改:
”等按钮,及对mouseClicked事件的监听类。
构造了
JFramemainFrm为主窗口,
JTextFieldname为姓名输入框,
JTextFieldtel为电话输入框,
JTextFieldadd为地址输入框,
JListdataList为列表组建,
String[]ming为姓名数组,
String[]phone为电话数组,
String[]addr为地址数组。
在实现过程中,定义PhoneBook类继承了MouseAdapter类与ActionListener接口,就可以用Book类来实现按钮命令监听器和鼠标事件监听器。
如果出现错误操作,会在控制台出现异常,且操作无效。
模块划分与说明
学生表
列名
数据类型
数组长度
描述
Ming
string
10
学生姓名组
Tel
string
10
电话号组
Addr
string
10
地址组
流程图
1,进入通讯录后先在姓名输入框内输入姓名如xx,在电话输入框内输入联系电话,在地址输入框内输入地址;
2,点击“添加”按钮,姓名xx出现在面板左侧的列表中;
3,
(1)继续1,2,步骤可向学生通讯录中添加更多学生信息如yy;
(2)可对已添加的学生信息进行修改,如将xx的电话号改变:
在列表中点击xx姓名,对xx信息进行修改,最后点击“修改”按钮,修改后的信息被保存;
(3)可对已添加的学生信息进行删除操作,如将xx的信息删除:
在列表中点击xx姓名,然后点击“删除”按钮,即可将学生信息删除;
总体图:
流程图:
添加模块流程图:
删除模块流程图:
修改模块流程图:
程序源代码
package通讯录;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
classBookextendsMouseAdapterimplementsActionListener
{
publicstaticfinalintWIDTH=600;
publicstaticfinalintHIGTH=400;
JFramemainFrm;
JTextFieldname;
JTextFieldtel;
JTextFieldadd;
JListdataList;
String[]ming;
String[]phone;
String[]addr;
intn=0;
voidbook(){
mainFrm=newJFrame();
mainFrm.setTitle("学生通讯录");
mainFrm.setSize(500,300);
mainFrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ContainercontentPane=mainFrm.getContentPane();
ming=newString[10];
phone=newString[10];
addr=newString[10];
dataList=newJList(ming);
dataList.setSelectedIndex
(1);
dataList.getSelectedValue();
JPanelP1=newJPanel();
JPanelP2=newJPanel();
JPanelP3=newJPanel();
P1.setSize(400,200);
contentPane.add(P1,BorderLayout.WEST);
contentPane.add(P2,BorderLayout.CENTER);
contentPane.add(P3,BorderLayout.NORTH);
P1.add(dataList);
P2.setLayout(newGridLayout(3,1));
JLabell1=newJLabel("姓名:
");
name=newJTextField();
JLabell2=newJLabel("电话:
");
tel=newJTextField();
JLabell3=newJLabel("地址:
");
add=newJTextField();
P2.add(l1);
P2.add(name);
P2.add(l2);
P2.add(tel);
P2.add(l3);
P2.add(add);
JButtonb=newJButton("添加");
b.addActionListener(this);
P3.add(b);
b=newJButton("删除");
b.addActionListener(this);
P3.add(b);
b=newJButton("修改");
b.addActionListener(this);
P3.add(b);
dataList.addMouseListener(this);
mainFrm.setVisible(true);
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getActionCommand()=="添加")
{
n++;
ming[n]=name.getText();
phone[n]=tel.getText();
addr[n]=add.getText();
dataList.setListData(ming);
}
elseif(e.getActionCommand()=="删除")
{
intt=dataList.getSelectedIndex();
for(inti=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);
}
elseif(e.getActionCommand()=="修改")
{
intt=dataList.getSelectedIndex();
ming[t]=name.getText();
phone[t]=tel.getText();
addr[t]=add.getText();
dataList.setListData(ming);
}
}
publicvoidmouseClicked(MouseEvente)
{
inti=dataList.locationToIndex(e.getPoint());
name.setText(ming[i]);
tel.setText(phone[i]);
add.setText(addr[i]);
}
}
publicclassTongxunlu{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
Bookh=newBook();
h.book();
}
}
结果截图
初始窗口:
添加:
继续添加:
删除:
修改:
实验心得
Java布局管理是新学的内容,因为对窗口感兴趣,所以写代码的时候也不觉得烦躁,借鉴了书上的内容,构造框架窗口时使用了javaw.swing包,构造了主框架MainFrm;用JLabel(“”)设置了三个标签,分别为:
“姓名”“电话”“地址”;并使用了JTextField进行单行文本输入;对“添加”“删除”“修改”这三个功能选项,则导入了java.awt包,与java.awt.event包,使用了JBonton进行按钮设置,并对这三个按钮进行addMouseListener监听,当发生mouseClicked事件时,事件监听器会传递给容器进行处理;列表我使用了列表框组件JList,并将学生姓名添加在列表中,本来想用组合框组件JComboBox,觉得这样比较节省空间,但想到这样不方便根据姓名查询,所以还是用了列表框组件。
我的总布局管理器使用的是边界布局管理器,在五个位置中,我选择了WEST,CENTER和NORTH这三个面板分别放了列表组件,输入面板与按钮面板。
输入面板使用了网格布局管理器GirdLayout(3,1)使输入呈三行一列;按钮面板则是用的流布局管理器(默认)依次为“添加”“删除”“修改”。
这次实验收获非常大,对第六章的加深了理解,更动手实践了有关事件监听器的操作,这让本来在上课时听得懵懂的内容如事件监听器的响应等理解的更深刻了,书上介绍的三种布局管理器也得到了实际的应用,上课时没注意到的组件也应用到了实验中。
总体来说,受益匪浅。