Java课程设计通讯录管理系统.docx
- 文档编号:3282607
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:33
- 大小:295.81KB
Java课程设计通讯录管理系统.docx
《Java课程设计通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《Java课程设计通讯录管理系统.docx(33页珍藏版)》请在冰豆网上搜索。
Java课程设计通讯录管理系统
摘要
随着社会的发展,人际关系变来越重要,为了保持良好的人际关系,必须常与亲戚朋友,同学同事保持联系,但有时候存在许多限制条件,因此我们需要为了快速查找联系人的信息,节省查找时间,开发通讯录管理系统。
通讯录管理系统是一个基于C/S模式的个人通讯录管理系统,它是将自己的联系人的具体信息集中处理,成为一个方便人们使用的小软件。
在开发过程中应用java,JDK,MYSQL,SWING等技术,由于开发工具与数据库之间的良好使用,可以为开发带来方便,使之成为可视性的系统。
通过采用相关技术,将系统设计的功能全部实现。
功能包括:
用户登录,添加联系人信息,修改联系人信息,删除联系人信息,查询联系人信息,可以浏览全部通讯录联系人,可以根据数据表的歌字段来查询你要找的联系人等功能。
关键字:
C/S架构,联系信息,通讯录,数据库
一、需求分析…………………………………………………………………2
二、系统总体规划……………………………………………………………2
三、程序流程……………………………………………………………···2
四、设计步骤…………………………………………………………………5
1.数据库表的设计………………………………………………………5
2.详细设计………………………………………………………………5
五、设计总结…………………………………………………………………9
六、结束语···················································10
六、参考文献…………………………………………………………………11
七、程序清单…………………………………………………………………12
一需求分析
通讯录在当今的日常生活工作中的应用是十分普及的,每个人都拥有大量的通讯录资料信息,当前大家一般都用手工来记录所有的通讯录信息。
但随着时代的发展,人们的联系方式及信息变得复杂多样,通讯录信息大量增加,导致管理这些信息资料就成了问题。
直接操作来查找,添加,修改,删除这些信息,由于数据多,工作量十分巨大,查找,编辑都很困难,而且极易出错,容易造成资料的混乱或丢失。
在各种手机,上午通内设的电话簿尽管携带方便却又存在“记录量少,界面小,浏览不方便,记录信息不全面”的缺点。
有人利用Excel或Word编制通讯录,虽然数据比较全面,信息比较充分,可是查找及其不便,维护起来也麻烦,所以运用文件或数据库技术建立一个通讯录管资料理系统十分必要,使通讯录资料管理工作规范化,系统化,程序化,避免资料管理中的混乱。
提高信息处理速度和准确性,能够及时,准确,有效的查询和修改通讯录的情况。
二系统总体规划
在明确了系统与数据库结构的前提下,设计该系统主要功能:
系统登录,数据的输入与修改,数据的删除,联系人和群管理等。
主要功能包括:
(1)用户的登录,注册,删除功能;
(2)联系人信息的增加,删除,修改,查询的功能;
(3)联系人分组的增加,删除的功能;
三程序流程
a分流程示意图
1系统登录:
姓名设计流程图
2用户界面流程图:
未注册
消息不正确
3用户增加联系人流程:
4用户修改流程图:
输入不合法
输入不合法
输入不合法
信息已存在或不合法
5用户修查询程:
6用户删除流程:
入
查找失败查找失败
信息不存在信息不
存在
四设计步骤
【1】数据库设计
(1)表1普通用户数据表
列名
数据类型
长度
是否为空
username
varchar
50
否
password
varchar
50
否
(2)记录信息数据表,如表2
表2记录信息数据表
名
类型
长度
是否空
id
int
50
否
name
varchar
50
否
tel
varchar
50
否
phone
varchar
50
否
varchar
50
否
varchar
50
否
category
varchar
50
否
work
varchar
50
否
aaress
varchar
50
否
【2】详细设计
LoginAction类,封装的信息由密码和账户名,以及登录失败时抛出的异常方法。
Stringexecute()函数继承了Exception类,如果登录密码不匹配,则会抛出异常,提示Error登录失败。
在登录模块中有管理员用户和普通用户,管理员可以对系统中的信息添加,修改,删除等功能,普通用户只进行查找操.
用户添加:
LoginAction类继承ActionSuporrt类,封装有name,sex,birthday,email,tel属性,封装有成员函数set_name(),set_sex(),set_birthday(),set_email(),set_tel()用来添加各个属性值,提示操作失败信息用Stringexecute()函数抛出异常。
用询查询:
FindAction类继承ActionSuporrt类的属性及方法,setInput()方法将输入的信息传递给FindAction类内的相应属性,getInput()方法用于返回输入值,封装的成员函数包括getlist()用于返回查询到的元组列表。
图5显示可以通过姓名,性别,出生日期,email地址对联系人进行查询。
用户修改:
ModAction类继承ActionListenerde同名方法,完成MyFirstFrame中类的所有方法进行修改直到成功,并且将修改后的信息通过ModActionString()导入数据库。
用户删除:
DeleAction类继承ActionSuporrt类,get_name()方法用于得到所要删除的信息的主码。
封装的数据成员包括name,封装有isSuccess()函数,用于判断删除成功与否。
删除模块中,用户可以根据某一关键字或多个关键字进行删除,删除信息后会自动提示。
用户导出:
根据ActionlistenrWindows窗口提示,联系人已经成功导出。
其结构体经初始化后已经完成,
导出的数据将成功存入数据库中,此时数据库可以随时进行查询等一切可行性操作。
五设计总结
通过这次课程设计我加深了对于java语言应用与实践之间的连接,能更好的使用java语言!
在张永老师及同学们的引导下配合下,我完成了题目。
只有通过合作,才能更高效率的完成任务。
实践非常的重要。
很多东西在理论层面是行的通的,但到实际中就行不通了。
所以要多实践,在不断的修改调试过程中巩固知识。
程序设计基本符合了我预期的要求,运行效果良好,无明显的大的bug。
在完成作业的过程中,我遇到了不少困难,其中有的是经过自己苦思冥想想出来的,也有的是询问比较厉害的同学得以解决的,还剩下的一些疑难问题当然就是求助网络了。
譬如说照片上传管理预览功能的实现,以及最小化到系统托盘的功能实现等。
其实不光是在网络上查询解决问题的方法,我也从网络上得到了不少编程的灵感和好的思想。
比如说我的程序中并没有运用网络编程,基本是一个单机版的程序,这其中基本上没有能够应用到多线程的地方。
但是经过我在网络上的查询,有人建议我可以在相片加载预览时候运用多线程,从而提高速度。
于是我就这样做了,从而使我的程序更完善了。
善于利用网络,对于我们的学习是大有裨益的。
五、结束语
通过两周的努力,我顺利的完成了通讯录系统的开发。
基于基本设计要求,我查阅了相关自资料,进行了需求分析,概要设计,详细设计,编码,调试运行等软件开发步骤。
无论在理论上还是在实践上都有较大幅度的提高,独立分析问题解决问题和他人交流的能力明显提高。
通过这次课程设设计,我对JAVA语言有了基本的认识。
JAVA是完全面向对象的语言,使用方便,界面友好,编译较难,能极大的节约运行时间,提高响应速度。
其次软件工程的思想有了深入了解:
完善需求,最大的满足客户需求,充分做好风险分析。
为了保证项目的速度,定期对项目进行评估工作。
本次项目随小,我却悟出了个简单的道理:
学习就像软件开发,拿到一本书后看看,提出自己未知的问题,进而分析问题,解决问题。
通过课程设计,我深刻的认识到在当今激烈的社会竞争中只有学到本领才能有立足之地,同时也感到软件开发的幸苦。
首先要有耐心,要忍着密密麻麻的代码,无数遍的修改,无数遍的调试,但是当你调试成功时,你会感到努力的结果!
谢谢老师,谢谢同学!
我们风雨无阻,一路向前。
六、参考文献
[l]其庆《Java模块设计实例经典[M]》冶金工业出版社,20046
[2]甲耀《CoreJava高级应用程序设计教程》电子工业出版社,2006.3
[3]JamesGosling《Java语言规范[M]》机械工业出版社,2006.5
[4]吴斯特曼,《java核心技术》,机械工业出版社,2008.5
[5]曹静,《软件丌发生命周期与统一建模语言UML》,水利水电出版社,20082
[7]《Java语法及网络应用设计》,徐迎晓编著,清华大学出版社2002.10
[8]《 ThinkinginJAVA(ThirdEdition)》,BruceEckel,机械工业出版社2010.5.7
[9]《Java2参考大全(第四版)》,[美]HerbertSchildt著,张玉清、吴浦峰、尚勇等译,清华大学出版社2009.6.7
七、源代码
1packagetongxun;
publicclassUseSystem{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
newMySystem().validate();
}
}
2packagetongxun;
importjava.awt.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.util.*;
importjavax.swing.*;
publicclassMySystemextendsJFrameimplementsActionListener,ItemListener{
UserServiceuService=newUserService();
Useru=newUser();
Choicechoice=newChoice();
JTextFieldt1=newJTextField(15);
JButtonb1=newJButton("查询");
java.awt.Listlist=newjava.awt.List(6,true);
JButtonb2=newJButton("增加");
JButtonb3=newJButton("删除");
JButtonb4=newJButton("修改");
JButtonb5=newJButton("导出");
Containercon=getContentPane();
java.util.List
//staticVector
intflag=0;
MySystem(){
super("通讯录管理程序");
setSize(400,400);
con.setLayout(newBorderLayout());
choice.add("姓名");
choice.add("类别");
choice.add("手机号码");
choice.add("查询全部记录");
choice.add("qq");
Panelp1=newPanel();
//Panelp2=newPanel();
Panelp3=newPanel();
p1.setBackground(Color.red);
p1.setSize(300,10);
//p2.setBackground(Color.cyan);
//p2.setSize(380,300);
p3.setBackground(Color.yellow);
list.setSize(300,300);
p1.add(choice);
p1.add(t1);
p1.add(b1);
p3.add(b2);
p3.add(b4);
p3.add(b3);
p3.add(b5);
con.add("North",p1);
con.add("Center",list);
con.add("South",p3);
setVisible(true);
validate();
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
setVisible(false);
System.exit(0);
}
});
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
list.addItemListener(this);
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==b2){//通过产生外部窗体,来实现添加功能
finalJFramenewf=newJFrame("添加联系人");
newf.setSize(400,400);
newf.setVisible(false);
newf.setLayout(newGridLayout(10,2));
JLabeljb1=newJLabel("联系人姓名:
");
finalJTextFieldjtf1=newJTextField(15);
Panelpp1=newPanel();
pp1.add(jb1);
pp1.add(jtf1);
newf.getContentPane().add(pp1);
JLabeljb2=newJLabel("联系人电话:
");
finalJTextFieldjtf2=newJTextField(15);
Panelpp2=newPanel();
pp2.add(jb2);
pp2.add(jtf2);
newf.getContentPane().add(pp2);
JLabeljb3=newJLabel("固定电话:
");
finalJTextFieldjtf3=newJTextField(15);
Panelpp3=newPanel();
pp3.add(jb3);
pp3.add(jtf3);
newf.getContentPane().add(pp3);
JLabeljb4=newJLabel("联系人QQ:
");
finalJTextFieldjtf4=newJTextField(15);
Panelpp4=newPanel();
pp4.add(jb4);
pp4.add(jtf4);
newf.getContentPane().add(pp4);
JLabeljb7=newJLabel("联系人email:
");
finalJTextFieldjtf7=newJTextField(15);
Panelpp7=newPanel();
pp7.add(jb7);
pp7.add(jtf7);
newf.getContentPane().add(pp7);
JLabeljb8=newJLabel("联系类别:
");
finalJTextFieldjtf8=newJTextField(15);
Panelpp8=newPanel();
pp8.add(jb8);
pp8.add(jtf8);
newf.getContentPane().add(pp8);
JLabeljb5=newJLabel("联系人工作:
");
finalJTextFieldjtf5=newJTextField(15);
Panelpp5=newPanel();
pp5.add(jb5);
pp5.add(jtf5);
newf.getContentPane().add(pp5);
JLabeljb6=newJLabel("现居住地地址:
");
finalJTextFieldjtf6=newJTextField(15);
Panelpp6=newPanel();
pp6.add(jb6);
pp6.add(jtf6);
newf.getContentPane().add(pp6);
JButtonbb1=newJButton("提交");
JButtonbb2=newJButton("关闭");
Panelpp9=newPanel();
pp9.add(bb1);
pp9.add(bb2);
newf.getContentPane().add(pp9);
//JTextAreajta=newJTextArea();Panelpp10=new
//Panel();pp10.add(jta);newf.getContentPane().add();
bb1.addMouseListener(newMouseAdapter(){
publicvoidmouseClicked(MouseEventee){
Useru=newUser();
u.setName(jtf1.getText());
u.setTel(jtf2.getText());
u.setPhone(jtf3.getText());
u.setQq(jtf4.getText());
u.setWork(jtf5.getText());
u.setAddress(jtf6.getText());
u.setEmail(jtf7.getText());
u.setCategory(jtf8.getText());
if(uService.add(u)){
JOptionPane.showMessageDialog(null,"添加成功");
}else
JOptionPane.showMessageDialog(null,"添加失败");
}
});
bb2.addMouseListener(newMouseAdapter(){
publicvoidmouseClicked(MouseEventee){
newf.setVisible(true);
}
});
newf.setVisible(true);
}
if(b1==e.getSource()){//通过调用select();实现模糊查询
list.removeAll();
select();
}
if(b3==e.getSource()){//通过获得联系人在list中的索引号,来实现对联系人的删除
if(flag==0){
JOptionPane.showMessageDialog(null,"不能删除该行!
");
}
u=uList.get(flag-1);
if(uService.delById(u.getId())){
JOptionPane.showMessageDialog(null,"删除成功!
");
uList.remove(flag-1);
list.removeAll();
list.add("编号"+""+"姓名"+""+"电话");
for(Useru1:
uList){
list.add(u1.getId()+":
"+u1.getName()
+""+u1.getTel());
}
}else
JOptionPane.showMessageDialog(null,"删除失败!
");
}
if(b4==e.getSource()){//通过获得联系人在list中的索引号,同弹出一个外部窗体其中
//有联系人的信息,用户可以修改.并在将其存入数据库
if(flag==0){
JOptionPane.showMessageDialog(null,"不能修改首行!
");
return;
}
u=uList.get(flag-1);
finalJFramenewf=newJFrame("添加联系人");
newf.setSize(400,400);
newf.setVisible(true);
newf.setLayout(newGridLayout(10,2));
JLabeljb1=newJLabel("联系人姓名:
");
fi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 课程设计 通讯录 管理 系统