课程设计通讯录管理系统的设计与实现.docx
《课程设计通讯录管理系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《课程设计通讯录管理系统的设计与实现.docx(55页珍藏版)》请在冰豆网上搜索。
![课程设计通讯录管理系统的设计与实现.docx](https://file1.bdocx.com/fileroot1/2022-12/8/83c37f55-fb85-4d1f-81a4-aa550b704197/83c37f55-fb85-4d1f-81a4-aa550b7041971.gif)
课程设计通讯录管理系统的设计与实现
课程设计--通讯录管理系统的设计与实现
课程设计(论文)任务书
一、课程设计(论文)题目 通讯录管理设计
二、课程设计(论文)工作自2013年9月23日起至2013年10月13日止。
三、课程设计(论文)地点:
信息科学技术学院
四、课程设计(论文)内容要求:
1.本课程设计的目的
(1)掌握java语言的程序设计方法;
(2)理论联系实际,进一步提高学生的软件开发技术;
(3)培养学生分析、解决问题的能力;
(4)提高学生实践论文撰写能力。
2.课程设计的任务及要求
1)课程设计任务:
(1)设一个通信录由以下几项数据信息构成:
数据项类型
姓名字符串
地址字符串
邮政编码字符串
电话号码字符串
(2)1.主要功能:
(1) 能建立、查询、修改和增删学生通讯录
(2) 能够按多种方式进行查询
(3)界面友好,易于操作
2)课程设计论文编写要求
(1)课程设计任务及要求
(2)设计思路--工作原理、功能规划
(3)详细设计---数据分析、算法思路、类设计、功能实现(含程序流程图、主要代
码及注释)、界面等。
(4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。
(5)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,
巩固了哪些知识,有哪些提高。
(6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)
(7)报告按规定排版打印,要求装订平整,否则要求返工;
(8)课设报告的装订顺序如下:
封面---任务书---中文摘要---目录----正文---附录
(代码及相关图片)
(9)严禁抄袭,如有发现,按不及格处理。
4)参考文献:
(1)《java面向对象程序设计》董晓国清华大学出版社
(2)《java程序设计教程》迟丽华清华大学出版社
学生签名:
陈万洲
2013年12月24日
通讯录管理系统的设计与实现
【中文摘要】 这个基于java编写的个人通讯录管理系统含有添加、删除、查找等基本功能,采用的是JDBC-ODBC桥实现数据库的连接,ODBC数据源名称chengwz.mbd。
本课程设计主要解决通讯录应用的管理问题, 设计开发一个简单的通讯录系统 ,实现新建联系人,不同方式查找信息,删除信息,修改信息,联系人头像,退出系统等功能。
在课程设计中,程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在通讯录应用的管理中,解决实际问题。
关键词 :
通讯录、java、通讯录应用、个人通讯录管理系统、添加、删除、查找,数据库。
课程设计评语
对课程设计的评语:
平时成绩:
课程设计成绩:
总成绩:
评阅人签名:
注:
1、无评阅人签名成绩无效;
2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;
3、如有平时成绩,必须在上面评分表中标出,并计算入总成
正文
1.课程设计题目:
java通讯录设计
【要求】
(1)设一个通信录由以下几项数据信息构成:
数据项类型
姓名字符串
地址字符串
邮政编码字符串
电话号码字符串
(2)1.主要功能:
(1) 能建立、查询、修改和增删学生通讯录
(2) 能够按多种方式进行查询
(3)界面友好,易于操作
2.程序设计思路
各界面设计
主界面:
菜单JMeun组件构成菜单,列表JList组件显示好友部分信息。
删除好友界面:
利用文本框类JTexField提供的文本区JTexArea组件输入好友信息,按钮JButton组件,事件处理,标签类JLabel提示输入的对象。
修改界面:
输入要修改的联系人姓名,是否找到该联系人,如果找到记录,调用修改方法,对该联系人的信息进行修改;如果没有找到,弹出提示框,查无此联系人。
在寻找的过程中用了字符串的比较方法。
查询界面:
询问用户想要选择的搜索方式,分两种类型查询(好友姓名,好友电话号码),再利用标签类在窗口中显示联系人信息。
好友信息界面:
显示好友的联系方式。
查询不到好友界面:
提示无此联系人信息。
采用的是JDBC-ODBC桥实现数据库的连接通过操作数据库来管理信息
3.功能模块图
(1)登录界面----->通讯录主界面
(2)修改好友
(3)新建好友
选中菜单中的新增
(4)查询好友
选择想要的查询方式
4.数据结构设计
该程序共有11个类,2种接口动作事件类ActionListener,鼠标事件类MouseListener,2种继承JFrame框架JPanel,但只创建了3个java源程序文件,以下按照类的名字先后解释(在设计软件Eclipse工程中也是如此),另外在此只是简要介绍相关源程序所实现的功能,程序截图参见调试,源程序参见附录1:
listd类:
主界面的功能。
Searchfriend类:
按名字查询好友界面,提供按名字搜索,有一个文字输入框,和两个控制按钮——“查询”和“退出”。
Search2类:
按电话查询好友界面,提供按电话搜索,有一个文字输入框,和两个控制按钮——“查询”和“退出”。
Addfriend类:
编辑,新增好友界面,输入需要增加的姓名,电话,手机,住址,QQ,邮编之后,两个控制按钮——“增加”和“退出”。
ReviseFriend类:
修改好友界面。
两个控制按钮——“修改”和“退出”。
ReviseFriendname类:
:
修改好友姓名搜索界面,有一个文字输入框提供输入好友姓名,两个控制按钮——“搜索”和“退出”。
Deletefriend类:
删除好友搜索姓名界面,输入了完整姓名,两个控制按钮——“打开”和“退出”。
delete类:
好友信息界面,“删除”和“返回”两个按钮。
none类:
查无联系人界面。
about类:
关于界面。
mypan类:
中间面板。
这些类都对应自己的构造方法。
Stringstr1[]=newString[20];//姓名
Stringstr2[]=newString[20];//电话
Stringstr3[]=newString[20];//QQ
Stringstr4[]=newString[20];//地址
Stringstr5[]=newString[20];//邮编
利用java提供的列表JListl类,使通讯录的界面更友好,我们只要双击列表就可以查看好友的联系信息。
利用数组下表操作实现好友准确查看,删除,编辑功能。
采用的是JDBC-ODBC桥实现数据库的连接,实现对数据库数据表的读取,新增,修改,删除,修改,查询。
为了优化程序,本程序还采了数组来存取打开驱动读出数据表的数据,减少对数据表的直接操作
5.算法设计
6.程序代码
见附录1
7.程序运行结果
(1)登录界面(输入用户名和密码正确后等待进度条加载完成进入主界面)
(2)主界面
关于
(3)新增好友
(4)删除界面
(5)查询界面
按姓名查询
按电话查询
查询结果
好友不存在
(6)修改好友
修改后
(7)数据库数据表
8.编程中遇到的困难及解决方法
数据库的打开、新增、修改、删除、查询
解决方法:
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动程序
Stringurl="jdbc:
odbc:
chengwz";//URL指向要访问的数据库名test
Stringuser="";//MySQL配置时的用户名
Stringpassword="";//MySQL配置时的密码
Connectionconnection=DriverManager.getConnection(url,user,password);//连续数据库
if(!
connection.isClosed())
System.out.println("SucceededconnectingtotheDatabase!
");
Statementstatement=connection.createStatement();//statement用来执行SQL语句
Stringsql="select*fromcwz";
ResultSetrs=statement.executeQuery(sql);//执行SQL语句并返回结果集
System.out.println("姓名"+"\t"+"电话"+"\t\t"+"QQ"+"\t\t"+"邮编");
Stringname=null;
Stringphone=null;
StringQQ=null;
Stringyoubian=null;
while(rs.next()){
name=rs.getString("name");//选择sname这列数据
phone=rs.getString("phone");
QQ=rs.getString("QQ");
youbian=rs.getString("postcard");
System.out.println(name+"\t"+phone+"\t"+QQ+"\t"+youbian);//输出结果
}
rs.close();//关闭结果集
connection.close();//关闭连接
}catch(ClassNotFoundExceptione){
System.out.println("Sorry,can`tfindtheDriver!
");
e.printStackTrace();
}catch(SQLExceptione){
e.printStackTrace();
}catch(Exceptione){
e.printStackTrace();
}
}
9.总结及建议
这次课程设计使我了解到java语言的重要性,之前接触到的java语言内容都是理论上的,理论知识知道的比较多,但是没怎么用到实际操作当中。
这次设计给了我一次真正认识计算机语言的机会,刚开始我一脸的迷茫,不知道从哪里开始动手,觉得java语言是一种很深奥的东西,对于刚开始接触这门课程的我来说非常的不适应。
很多东西都是第一次:
第一次真正认真的投入java语言当中,第一次用自己在课堂上学习的东西逐步的去解决实际问题,去完成这次是java通讯录的设计。
经过这次实习,我知道自己的计算机知识还是相当有限的,在这次的程序编译过程中遇到了很多自己无法解决的问题,可是通过老师的指导,上网查看资料,问高年级的学长学姐等方法,最终问题都基本解决了。
这次java语言课程设计给我的帮助是很大的。
虽然到现在我还掌握得不好。
所以在以后的学习生活中我会更加注重这方面的实际操作,提高自己的实际动手操作能力,解决实际问题的能力以及提升自己的计算机水平。
10.致谢
java语言课程设计是一门非常重要的计算机基础课,学得好与否对我们以后都很重要。
真诚的感谢老师在这次课程设计中给予的种种帮助,是我从对该课程的懵懂一步步到了解以及深入的学习。
为以后的学习打下良好的基础。
虽然只有短短的这几天,但我收获很多,而且让我慢慢的对计算机产生了兴趣。
参考文献
[1]java面向对象程序设计董小园编著清华大学出版社
[2]java程序设计教程迟丽华清华大学出版社
[3]java核心技术卷2:
高级特性CayS.Horstmann机械工业出版社
附录1
完整源代码:
//myframe.java
packagekkh;
importjava.awt.*;
importjava.awt.Event.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.*;
importjava.sql.*;
importjava.util.*;
publicclassmyframeextendsJFrameimplementsActionListener,MouseListener{
JListlt;
privateJMenuBarmb;
privateJMenumu1,mu2,mu3,mu4;
privateJMenuItemmi1,mi2,mi3,mi4,mi5,mi6,mi7;
DefaultListModeldm=newDefaultListModel();
JLabellb=newJLabel("业精于勤荒于嬉,行成于思毁于随!
");
publicintj=0;
publicintm=0;
publicintt=0;
publicintd=0,f=0,h=0,cag=0,del=0;
Stringstr1[]=newString[20];//姓名
Stringstr2[]=newString[20];//电话
Stringstr3[]=newString[20];//QQ
Stringstr4[]=newString[20];//地址
Stringstr5[]=newString[20];//邮编
//中间面板
classmypanextendsJPanelimplementsActionListener{
JLabelName,Tel,QQq,Address,youb,lb2,lb3,lb4,lb5,lb6;
JButtonbtn1,btn2,btn3;
mypan(intindex){
intx=index;
setLayout(null);
setBackground(Color.white);
Name=newJLabel(str1[x]+"的联系方式");
Tel=newJLabel("电话:
");lb2=newJLabel(str2[x]);
QQq=newJLabel("QQ:
");lb3=newJLabel(str3[x]);
Address=newJLabel("地址:
");lb4=newJLabel(str4[x]);
youb=newJLabel("邮编");lb5=newJLabel(str5[x]);
ImageIconimg6=newImageIcon("D:
\\workspace\\image\\2.jpg");
if(x==1)img6=newImageIcon("D:
\\workspace\\image\\3.jpg");
if(x==2)img6=newImageIcon("D:
\\workspace\\image\\4.jpg");
if(x==3)img6=newImageIcon("D:
\\workspace\\image\\5.jpg");
if(x==4)img6=newImageIcon("D:
\\workspace\\image\\6.jpg");
if(x==5)img6=newImageIcon("D:
\\workspace\\image\\7.jpg");
if(x==6)img6=newImageIcon("D:
\\workspace\\image\\8.jpg");
if(x==7)img6=newImageIcon("D:
\\workspace\\image\\8.jpg");
if(x==8)img6=newImageIcon("D:
\\workspace\\image\\9.jpg");
if(x==9)img6=newImageIcon("D:
\\workspace\\image\\10.jpg");
lb6=newJLabel("",img6,SwingConstants.LEADING);
btn1=newJButton("删除");
btn2=newJButton("退出");
btn3=newJButton("修改");
Name.setBounds(340,30,200,30);Name.setForeground(Color.blue);
Tel.setBounds(330,80,60,30);
QQq.setBounds(330,130,60,30);
Address.setBounds(330,180,60,30);
youb.setBounds(330,230,60,30);
lb2.setBounds(370,80,180,30);lb2.setForeground(Color.red);
lb3.setBounds(370,130,180,30);lb3.setForeground(Color.red);
lb4.setBounds(370,180,180,30);lb4.setForeground(Color.red);
lb5.setBounds(370,230,180,30);lb5.setForeground(Color.red);
lb6.setBounds(100,50,200,200);
btn1.setBounds(250,300,60,30);
btn2.setBounds(350,300,60,30);
btn3.setBounds(150,300,60,30);
this.add(btn1);
this.add(btn2);
this.add(btn3);
this.add(Name);
this.add(Tel);
this.add(QQq);
this.add(Address);
this.add(youb);
this.add(lb2);
this.add(lb3);
this.add(lb4);
this.add(lb5);
this.add(lb6);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
}
/*publicvoidpaint(Graphicsg){
super.paint(g);
ImageIconimg=newImageIcon("D:
\\1.jpg");
g.drawImage(img.getImage(),200,100,800,300,this);
}*/
@Override
publicvoidactionPerformed(ActionEvente){
//TODO自动生成的方法存根
if(e.getSource()==btn1){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动程序
Stringurl="jdbc:
odbc:
chengwz";//URL指向要访问的数据库名test
Stringuser="";//MySQL配置时的用户名
Stringpassword="";//MySQL配置时的密码
ResultSetrs=null;
Connectionconnection=DriverManager.getConnection(url,user,password);//连续数据库
if(!
connection.isClosed())
System.out.println("SucceededconnectingtotheDatabase!
");
Statementstatement=connection.createStatement();//statement用来执行SQL语句
PreparedStatementpre=null;
Stringstr2=str1[f];
Stringsq2="delete*fromcwzwherename=?
";
pre=connection.prepareStatement(sq2);//要执行的SQL
pre.setString(1,str2);
pre.executeUpdate();
pre.close();
connection.close();
}catch(Exceptionee){
ee.printStackTrace();
System.out.println("============删除时:
抛出异常===========");
}
dm.removeElementAt(f);
for(intd=f;dstr1[d]=str1[d+1];
str2[d]=str2[d+1];
str3[d]=str3[d+1];
str4[d]=str4[d+1];
str5[d]=str5[d+1];
}
j--;
f--;
JOptionPane.showMessageDialog(null,"数据删除成功!
");
}
elseif(e.getSource()==btn2){
dispose();
System.exit(0);
}
elseif(e.getSource()==btn3){
new