Java课程设计通讯录管理系统.docx

上传人:b****6 文档编号:12579467 上传时间:2023-06-06 格式:DOCX 页数:38 大小:293.26KB
下载 相关 举报
Java课程设计通讯录管理系统.docx_第1页
第1页 / 共38页
Java课程设计通讯录管理系统.docx_第2页
第2页 / 共38页
Java课程设计通讯录管理系统.docx_第3页
第3页 / 共38页
Java课程设计通讯录管理系统.docx_第4页
第4页 / 共38页
Java课程设计通讯录管理系统.docx_第5页
第5页 / 共38页
Java课程设计通讯录管理系统.docx_第6页
第6页 / 共38页
Java课程设计通讯录管理系统.docx_第7页
第7页 / 共38页
Java课程设计通讯录管理系统.docx_第8页
第8页 / 共38页
Java课程设计通讯录管理系统.docx_第9页
第9页 / 共38页
Java课程设计通讯录管理系统.docx_第10页
第10页 / 共38页
Java课程设计通讯录管理系统.docx_第11页
第11页 / 共38页
Java课程设计通讯录管理系统.docx_第12页
第12页 / 共38页
Java课程设计通讯录管理系统.docx_第13页
第13页 / 共38页
Java课程设计通讯录管理系统.docx_第14页
第14页 / 共38页
Java课程设计通讯录管理系统.docx_第15页
第15页 / 共38页
Java课程设计通讯录管理系统.docx_第16页
第16页 / 共38页
Java课程设计通讯录管理系统.docx_第17页
第17页 / 共38页
Java课程设计通讯录管理系统.docx_第18页
第18页 / 共38页
Java课程设计通讯录管理系统.docx_第19页
第19页 / 共38页
Java课程设计通讯录管理系统.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Java课程设计通讯录管理系统.docx

《Java课程设计通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《Java课程设计通讯录管理系统.docx(38页珍藏版)》请在冰点文库上搜索。

Java课程设计通讯录管理系统.docx

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

qq

varchar

50

email

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.ListuList=newArrayList();

//staticVectoruv=newVector(100);

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("联系人姓名:

"

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

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2