Java课程设计 通讯录的制作.docx
《Java课程设计 通讯录的制作.docx》由会员分享,可在线阅读,更多相关《Java课程设计 通讯录的制作.docx(27页珍藏版)》请在冰点文库上搜索。
Java课程设计通讯录的制作
软件学院
课程设计报告书
课程名称面向对象程序设计
设计题目个人通讯录管理
专业班级软件工程10-01
学号10200101
姓名李
指导教师刘
2012年6月
1设计时间1
2设计目的1
3设计任务1
4设计内容1
4.1需求分析1
4.1.1问题描述1
4.1.2基本要求1
4.2总体设计2
4.2.1包的描述2
4.2.2类的描述2
4.2.3类之间的关系2
4.3详细设计2
4.3.1类图2
4.3.2页面设计5
4.4测试与分析7
4.5程序代码8
5总结与展望24
参考文献25
1设计时间
2012年6月13日至2012年6月19日
2设计目的
面向对象程序设计课程设计是软件工程专业集中实践性环节之一,是学习完《java6程序设计》课程后进行的一次全面的综合练习。
其目的在于加深对java基础理论和基本知识的理解,掌握使用java进行软件设计的基本方法,提高解决实际问题的能力,最终实现对于给定的应用要求,设计出满足要求的程序,使之满足各种用户的应用需求(信息要求和处理要求)。
同时,此次设计对于同学将来的毕业设计和具体工作实践将有重要的意义。
3设计任务
设计通讯录,满足通讯录使用的基本要求,包括对联系人的添加、查询、删除、以及备份。
使通讯录以窗口形式呈现,并使每一功能均以窗口形式完成。
4设计内容
4.1需求分析
设计简易通讯录程序,实现基本通讯录功能(查询,插入,删除,备份)。
具体需求如下:
1.通讯录窗口界面布局设计。
2.各种基本功能的算法分析。
3.编程实现具体功能。
4.运行测试程序,调试纠正运行错误。
5.调试无误,运行,测试具体功能,
4.1.1问题描述
设计通讯录总窗口界面,并显示所有联系人及联系方式。
通过点击总窗口界面上的按钮,实施各基本功能。
同时根据所做操作,实时更新总窗口界面的联系人。
4.1.2基本要求
在本程序中,设计一个文本区域和一个按钮区域。
设计过程中利用最基本AWT界面开发,Java语言程序设计结合组件、容器、框架、事件监听等相关知识,完成一个关于通讯录的界面制作,能够实现对通讯录的基本操作,包括插入、删除、查找、查询。
4.2总体设计
4.2.1包的描述
1.包beifen实现对所有联系人的备份功能。
2.包charu实现对新联系人的创建及插入功能。
3.包chazhao实现对指定联系人的查找功能。
4.包shanchu实现对指定联系人的删除功能。
5.包wu实现提示信息对话框。
6.包chenggong实现提示信息对话框。
7.包filegui实现总窗口界面。
4.2.2类的描述
1.类Beifen实现对所有联系人的备份功能。
2.类Charu实现对新联系人的创建及插入功能。
3.类Chazhao实现对指定联系人的查找功能。
4.类Shanchu实现对指定联系人的删除功能。
5.类Wu实现提示信息对话框。
6.类Chenggong实现提示信息对话框。
7.类FileGUI实现总窗口界面。
4.2.3类之间的关系
各类均为JPanel的子类,类FileGUI引用类Beifen、Charu、Chazhao、Shanchu,类Beifen引用类Chenggong,类Chazhao、Shanchu均引用类Wu。
4.3详细设计
4.3.1类图
表1
Wu类
方法
Main()
表2
Chenggong类
方法
Main()
表3
Beifen类
属性
JFrameframe
JButtonjb1
JButtonjb2
JTextFieldjtf
方法
Main()
publicBeifen()
privateJPanelpart1()
privateJPanelpart2()
表4
Charu类
属性
Stringstr1,str2,str3,str0
JTextFieldjtf1
JTextFieldjtf2
JTextFieldjtf3
JButtonjb1
JButtonjb2
JFrameframe
JTextAreacrjta
方法
Main()
publicCharu()
privateJPanelpart1()
privateJPanelpart2()
privateJPanelpart3()
privateJPanelpart4()
表5
Chazhao类
属性
JFrameframe
JTextFieldjtf1
JTextFieldjtf2
JButtonjb1
JButtonjb2
方法
Main()
publicChazhao()
privateJPanelpart1()
privateJPanelpart1()
privateJPanelpart1()
表6
Shanchu类
属性
JFrameframe
JTextAreajta
JTextFieldjtf
JButtonjb1
JButtonjb2
方法
Main()
publicShanchu()
privateJPanelpart1()
privateJPanelpart2()
publicvoidSCjta(JTextAreaj)
表7
FileGUI类
属性
JButtonbutton1,jbutton2,jbutton3,jbutton4
JPaneljp1,jp2
JTextAreajta
Containercon
方法
Main()
publicFileGUI()
4.3.2页面设计
1.总界面窗口
2.插入窗口
3.删除窗口
4.查找窗口
5.备份窗口
4.4测试与分析
1.测试插入
2.测试删除
3.测试查找
4.测试备份
4.5程序代码
packagewu;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassWuextendsJPanel{
publicWu(){
JOptionPane.showMessageDialog(null,"查无此人!
","Dialog",JOptionPane.INFORMATION_MESSAGE);
}
}
packagewancheng;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassWanchengextendsJPanel{
publicWancheng(){
JOptionPane.showMessageDialog(null,"已成功备份!
","Dialog",JOptionPane.INFORMATION_MESSAGE);
}
}
packagebeifen;
importwancheng.Wancheng;
importjava.awt.Container;
importjavax.swing.*;
importjava.awt.event.*;
importjava.io.*;
publicclassBeifenextendsJPanel{
JFrameframe;
JButtonjb1;
JButtonjb2;
JTextFieldjtf;
publicBeifen(){
frame=newJFrame("Copy");
frame.setSize(300,120);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Containercon=frame.getContentPane();
JPanelmpanel=newJPanel();
mpanel.add(part1());
mpanel.add(part2());
con.add(mpanel);
frame.setVisible(true);
jb1.addActionListener(newAction());
jb2.addActionListener(newAction());
}
privateJPanelpart1()
{
JPanelpanel=newJPanel();
panel.add(newJLabel("path:
"));
panel.add(jtf=newJTextField(20));
panel.setVisible(true);
returnpanel;
}
privateJPanelpart2()
{
JPanelpanel=newJPanel();
panel.add(jb1=newJButton("确定"));
panel.add(jb2=newJButton("取消"));
panel.setVisible(true);
returnpanel;
}
classActionimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jb1){
try{
Filefile=newFile("D:
\\lianxiren.txt");
String[]str=newString[20];
BufferedReaderbr=newBufferedReader(newFileReader(file));
inti=0;
Stringline;
while((line=br.readLine())!
=null){
str[i]=line;
i++;
}
Stringstring="";
string=jtf.getText();
Filef=newFile(string);
FileWriterfw=newFileWriter(f,true);
for(intk=0;k
fw.write(str[k]);
fw.write("\r\n");
}
fw.close();
newWancheng();
}
catch(Exceptione1){
System.out.println(e1);
}
}
if(e.getSource()==jb2){
frame.dispose();
}
}
}
}
packagecharu;
importjava.awt.Container;
importjavax.swing.*;
importjava.awt.event.*;
importjava.io.*;
publicclassCharuextendsJPanel{
Stringstr1="",str2="",str3="",str0="";
JTextFieldjtf1=newJTextField(20);
JTextFieldjtf2=newJTextField(20);
JTextFieldjtf3=newJTextField(20);
JButtonjb1;
JButtonjb2;
JFrameframe;
JTextAreacrjta;
privateJPanelpart1(){
JPanelpanel=newJPanel();
panel.add(newJLabel("name:
"));
panel.add(jtf1=newJTextField(20));
panel.setVisible(true);
returnpanel;
}
privateJPanelpart2()
{
JPanelpanel=newJPanel();
panel.add(newJLabel("num:
"));
panel.add(jtf2=newJTextField(20));
panel.setVisible(true);
returnpanel;
}
privateJPanelpart3()
{
JPanelpanel=newJPanel();
panel.add(newJLabel("e-mail:
"));
panel.add(jtf3=newJTextField(20));
panel.setVisible(true);
returnpanel;
}
privateJPanelpart4(){
JPanelpanel=newJPanel();
panel.add(jb1=newJButton("确定"));
panel.add(jb2=newJButton("完成"));
panel.setVisible(true);
returnpanel;
}
publicCharu(){
frame=newJFrame("Insert");
frame.setSize(300,200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Containercon=frame.getContentPane();
JPanelmpanel=newJPanel();
mpanel.add(part1());
mpanel.add(part2());
mpanel.add(part3());
mpanel.add(part4());
con.add(mpanel);
frame.setVisible(true);
jb1.addActionListener(newAction());
jb2.addActionListener(newAction());
}
classActionimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jb1){
str1=jtf1.getText();
str2=jtf2.getText();
str3=jtf3.getText();
try{
Filefile=newFile("D:
\\lianxiren.txt");
FileWriterfw=newFileWriter(file,true);
fw.write(str1);
fw.write(str2);
fw.write(str3);
fw.write("\r\n");
fw.close();
FileReaderraf=newFileReader(file);
charch[]=newchar[(int)file.length()];
while((raf.read(ch))!
=-1){
str0=newString(ch);
}
crjta.setText(str0);
}
catch(Exceptione1){
System.out.println(e1);
}
}
if(e.getSource()==jb2){
frame.dispose();
}
}
}
publicvoidCRjta(JTextAreajta){
crjta=jta;
}
}
packagechazhao;
importwu.Wu;
importjava.awt.Container;
importjavax.swing.*;
importjava.awt.event.*;
importjava.io.*;
publicclassChazhaoextendsJPanel
{
JFrameframe;
JTextFieldjtf1;
JTextFieldjtf2;
JButtonjb1;
JButtonjb2;
publicChazhao()
{
frame=newJFrame("Seek");
frame.setSize(370,150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanelmpanel=newJPanel();
Containercon=frame.getContentPane();
mpanel.add(part1());
mpanel.add(part3());
mpanel.add(part2());
con.add(mpanel);
frame.setVisible(true);
jb1.addActionListener(newaction());
jb2.addActionListener(newaction());
}
privateJPanelpart1()
{
JPanelpanel=newJPanel();
panel.add(newJLabel("name:
"));
panel.add(jtf1=newJTextField(20));
panel.setVisible(true);
returnpanel;
}
privateJPanelpart2()
{
JPanelpanel=newJPanel();
panel.add(jb1=newJButton("确定"));
panel.add(jb2=newJButton("取消"));
panel.setVisible(true);
returnpanel;
}
privateJPanelpart3()
{
JPanelpanel=newJPanel();
panel.add(newJLabel("message:
"));
panel.add(jtf2=newJTextField(25));
panel.setVisible(true);
returnpanel;
}
classActionimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jb1){
try{
Filefile=newFile("D:
\\lianxiren.txt");
Stringstring="";
string=jtf1.getText();
String[]str=newString[20];
BufferedReaderbr=newBufferedReader(newFileReader(file));
inti=0;
Stringline;
while((line=br.readLine())!
=null){
str[i]=line;
i++;
}
intj;
for(j=i-1;j>=0;j--){
if(str[j].startsWith(string)){
jtf2.setText(str[j]);
break;
}
}
if(j<0){
newWu();
}
}
catch(Exceptione1){
System.out.println(e1);
}
}
if(e.getSource()==jb2){
frame.dispose();
}
}
}
}
packageshanchu;
importwu.Wu;
importjava.awt.Container;
importjavax.swing.*;
importjava.awt.event.*;
importjava.io.*;
publicclassShanchuextendsJPanel{
JFrameframe;
JTextAreajta;
JTextFieldjtf;
JButtonjb1;
JButtonjb2;
publicShanchu(){
frame=newJFrame("Delete");
frame.setSize(300,120);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Containercon=frame.getContentPane();
JPanelmpanel=newJPanel();
mpanel.add(part1());
mpanel.add(part2());
con.add(mpanel);
frame.setVisible(true);
jb1.addActionListener(newAction());
jb2.addActionListener(newAction());
}
privateJPanelpart1()
{
JPanelpanel=newJPanel();
panel.add(newJLabel("name:
"));
panel.add(jtf=newJTextField(20));