Java通讯录管理系统课程设计报告.docx
- 文档编号:23957740
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:32
- 大小:61.62KB
Java通讯录管理系统课程设计报告.docx
《Java通讯录管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《Java通讯录管理系统课程设计报告.docx(32页珍藏版)》请在冰豆网上搜索。
Java通讯录管理系统课程设计报告
课程设计报告
(本科)
课程:
面向对象分析程序设计
学号:
姓名:
班级:
教师:
时间:
计算机科学与技术系
设计名称:
通讯录管理系统
设计内容、目的与要求:
设计内容和目的:
随着社会的发展,人际关系变得越来越重要,为了保持良好的人际关系,必须经常与亲戚、朋友、同学、同事和其他一些人保持联系,因此,为了能够快速查找到联系人的信息,节省查找时间,可以创建一个通讯录管理系统。
基本要求:
有电话录入,修改,增加,删除,按姓名查询,按电话号码查询,按部门查询,按部门显示,显示所有电话号码信息,打印等功能。
计划与进度安排:
5月4日—5月10日写需求分析,开会讨论需要实验的功能以及如何实现。
5月11日—5月16日概要设计,分组把需求分析得到的系统扩展用例图转换为软件结构和数据结构。
5月17日—5月22日详细设计,详细设计每个模块实现算法,所需的局部结构。
5月23日—5月28日根据每人分工编写每人负责的代码。
5月29日—6月2日整合大家代码,并做debug。
6月3日—6月6日最后的测试、除错、修改细节以及文档编写。
设计过程、步骤(可加页):
通讯录管理系统给用户提供了一个在Windows操作系统上运行的通讯录管理平台,用户可以对同学、同事、亲戚、朋友进行在电话号码、姓名以及简介等方面的添加、删除、修改等管理操作。
同时系统还可以判断登录用户,根据用户的不同,其拥有的数据库也不同。
通讯录管理系统软件是为用户提供一个保存联系人及信息管理进行辅助的应用软件、功能描述如下。
1.用户登陆:
进入界面后用户可以选择自己的账户进行登陆。
2.添加联系人:
用户根据提示输入联系人的姓名、简介。
可一次性输入多个联系人的相关信息。
系统将联系人的信息存储在数据库的文件中,以便进行管理、查找和备份。
3.查询联系人:
用以查看联系人的信息以及联系人的电话号码。
4.删除联系人:
用以删除联系人的信息以及联系人的电话号码。
5.修改联系人:
提示用户输入要进行修改操作的联系人的信息,如果在文件中有该联系人存在,则将该电话号码所对应的姓名、电话号码、简介以及得票数所对应文件中加以修改。
由系统提示是否继续进行修改操作,让用户可多次进行修改操作。
需求分析
需求分析阶段的主要任务是确定目标系统的功能,设计应用程序的第一个步骤就是根据用户的需求规划系统的功能。
作为应用程序的第一要求,也是最主要的要求就是满足用户的需求。
如果连这一点都做不到,即使系统的功能再强大、界面再美观,也是一个失败的项目,因为它没有应用价值。
因此实用性是衡量软件的第一标准。
而系统功能的规划是软件实用性的核心。
下面是通讯录管理系统的功能规划。
1.系统登录模块
包括登录系统和退出应用程序2个功能,其功能结构如图1所示。
图1系统登录窗体功能结构图
2.家人信息模块
包括添加家人信息、修改家人信息、删除家人信息和查询家人信息4个功能,其功能结构如图2所示。
图2家人信息管理模块功能结构图
3.朋友信息模块
包括添加朋友信息、修改朋友信息、删除朋友信息和查询朋友信息4个功能,其功能结构如图3所示。
图3朋友信息管理模块功能结构图
4.同学信息模块
包括添加同学信息、修改同学信息、删除同学信息和查询同学信息4个功能,其功能结构如图4所示。
图4同学信息管理模块功能结构图
5.同事信息模块
包括添加同事信息、修改同事信息、删除同事信息和查询同事信息4个功能,其功能结构如图5所示。
图5同事信息管理模块功能结构图
6.其他信息模块
包括添加其他人信息、修改其他人信息、删除其他人信息和查询其他人信息4个功能,其功能结构如图6所示。
根据上述功能规划,可以对各功能模块设计功能结构图。
图6其他信息管理模块功能结构图
系统结构设计
1.总体设计
?
?
本系统的总体思想基于面向对象的程序设计。
着重实现管理系统的增、删、改、查等典型的管理功能。
因此,系统的设计方法是面向对象设计方法,开发手段是JAVA语言,在eclipse环境下开发。
2.系统模块结构图
依据需求分析结果,通讯录管理系统可以分为以下模块:
图7系统模块结构图
系统流程描述:
退出
否
是
图8系统流程图
设计数据库
在通讯录管理系统中,我们采用MySQL作为后台数据库,存储系统信息。
对于用户信息和联系人信息我们要存储起来,这样可以方便以后的使用,因此我们需要创建一个数据库,这里我们创建了一个名为“db_addresslist”的数据库,创建完数据库,接下来就可以创建所需要的表了,本系统需要两个数据表,一个用于存储用户信息,另一个用户存储联系人信息:
(1)根据系统的需要,只有合法用户才能进入系统,为此我们设计了存放用户信息的表tb_user,tb_user表的结构如表A.1所示。
表1tb_user表的结构
(2)根据系统的需要,还要能够快速操作联系人的信息,如添加联系人信息、修改联系人信息、删除联系人信息和查找联系人信息,为此我们设计了存放联系人信息的表tb_message,tb_message表的结构如表A.2所示。
表2tb_message表的结构
结果与分析(可以加页):
随着社会的发展,人际关系变得越来越重要,为了保持良好的人际关系,必须经常与亲戚、朋友、同学、同事和其他一些人保持联系,因此,为了能够快速查找到联系人的信息,节省查找时间,创建了一个通讯录管理系统,在该系统中为了防止信息被他人窃取,可以通过密码进行验证,只有通过密码验证才能进入系统。
通讯录管理系统主窗体界面如图9所示。
图9通讯录管理系统主窗体
由于整个系统分为家人、朋友、同学、同事和其他5类,并且这5类信息的操作过程是一样的,所以下面主要以家人信息进行介绍。
1.系统运行后,首先进入系统登录模块,效果如图10所示。
图10系统登录窗体
2.在图10所示的系统登录模块中可以通过输入正确的用户“myz”和密码“123”,单击“登录”按钮进入通讯录管理系统的主窗体界面,通讯录管理系统的主窗体界面如图11所示,可以通过菜单和工具栏进入相应的模块。
图11通讯录管理系统主窗体
3.在通讯录管理系统的主窗体中,单击“家人”/“添加信息”菜单项,可以打开添加家人信息模块,如图12所示,在该界面中可以输入家人的联系信息,然后单击“保存”按钮,保存此次输入的家人联系信息。
图12添加家人信息模块
4.在通讯录管理系统的主窗体中,单击“家人”/“修改信息”菜单项,可以打开修改家人信息模块,如图13所示,在该界面中可以修改家人的联系信息,方法是首先在下面的表格中选择要修改的家人信息,然后在编辑组件中输入要修改的内容,单击“修改”按钮,保存此次信息的修改。
图13修改家人信息模块
5.在通讯录管理系统的主窗体中,单击“家人”/“删除信息”菜单项,可以打开删除家人信息模块,如图14所示,从表格中选择要删除的家人信息,然后单击“删除”按钮,即可删除所选择的家人联系信息。
图14删除家人信息模块
6.在通讯录管理系统的主窗体中,单击“家人”/“查询信息”菜单项,可以打开查询家人信息模块,如图15所示,在该界面中默认在表格中显示所有家人的联系信息,也可以从“查询条件:
”标签右侧的组合框中选择查询字段,然后在右侧的文本框中输入对应的查询内容,单击“查询”按钮,即可查询出指定条件的家人联系信息。
图15查询家人信息模块
设计体会与建议:
本次Java课程设计我们这组做的课题是设计通讯录管理系统,刚开始拿到题目我们组员都不知如何下手,经过小组成员一起查找资料,并且开会讨论,我们确定了设计的设计目标以及具体实现方式,包括如何将Java的思想运用到实际系统的详细设计之中。
?
实验过程中,首先要将系统要实现的功能分为几大模块,然后每个组员分别完成,在此过程中使我们加深了对Java的理解,以及如何进行团队工作的划分,学会发现各组员的长处并将其发挥出来。
通过努力实验,进一步培养我们利用Java语言进行编程和调试程序的能力,同时使我们能够学会用Java语言编写较复杂具有实际意义和算法复杂度较小的程序。
与此同时熟练掌握Java语言的编辑,编译,调试程序,并将算法转变为程序实现。
正确理解各种数据结构的逻辑特性和存储表示和基本操作的算法实现。
掌握算法的时间分析和空间分析的技术。
针对问题的特点选择合适的数据结构,设计实用高效的算法,提高大家的算法设计的能力和动手实验的技能,同时在这次的实验中,培养了我们独立思考、动手操作的能力,在各种其它能力上也都有了提高。
在实验中,我们学会了很多学习的方法。
而这是日后最实用的。
要面对社会的挑战,只有不断的学习、实践,再学习、再实践。
这对于我的将来也有很大的帮助。
以后,不管有多苦,我想我都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。
就像中国提倡的艰苦奋斗一样,我都可以在实验结束之后变的更加成熟,会面对需要面对的事情,以及学会遇到问题,不急不慌,慢慢解决它。
附录(部分源代码):
packagecf.background;
publicclassBackgroundPanelextendsJPanel//继承了swing.JPanel,给系统登录窗口和主窗口设置背景
{
privateImageimage;//定义图像对象
publicBackgroundPanel(Imageimage)
{
super();//调用父类的构造方法
this.image=image;//为图像对象赋值
}
/*
*重写paintComponent方法
*/
protectedvoidpaintComponent(Graphicsg)
{
super.paintComponent(g);//调用父类的方法
Graphics2Dg2=(Graphics2D)g;//创建Graphics2D对象
if(image!
=null)
{
intwidth=getWidth();//获得面板的宽度
intheight=getHeight();//获得面板的高度
//绘制图像
g2.drawImage(image,0,0,width,height,this);//用本类作为图像的监听器this
}
}
}
packagecf.db;
publicclassMessage{//一个封装联系人信息的实体类
privateStringid;//编号
privateStringname;//姓名
privateStringsex;//性别
privateStringbirthday;//生日
privateStringnation;//民族
privateStringzuoji;//座机号码
privateStringshouji;//手机号码
privateStringqq;//QQ号码
privateStringemail;//电子信箱
privateStringaddress;//家庭住址
privateStringyoubian;//邮政编码
privateStringtype;//类型
privateStringmemo;//备注
publicStringgetId(){//id的get方法
returnid;
}
publicvoidsetId(Stringid){//id的set方法
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetSex(){
returnsex;
}
publicvoidsetSex(Stringsex){
this.sex=sex;
}
publicStringgetBirthday(){
returnbirthday;
}
publicvoidsetBirthday(Stringbirthday){
this.birthday=birthday;
}
publicStringgetNation(){
returnnation;
}
publicvoidsetNation(Stringnation){
this.nation=nation;
}
publicStringgetZuoji(){
returnzuoji;
}
publicvoidsetZuoji(Stringzuoji){
this.zuoji=zuoji;
}
publicStringgetShouji(){
returnshouji;
}
publicvoidsetShouji(Stringshouji){
this.shouji=shouji;
}
publicStringgetQq(){
returnqq;
}
publicvoidsetQq(Stringqq){
this.qq=qq;
}
publicStringgetEmail(){
returnemail;
}
publicvoidsetEmail(Stringemail){
this.email=email;
}
publicStringgetAddress(){
returnaddress;
}
publicvoidsetAddress(Stringaddress){
this.address=address;
}
publicStringgetYoubian(){
returnyoubian;
}
publicvoidsetYoubian(Stringyoubian){
this.youbian=youbian;
}
publicStringgetType(){
returntype;
}
publicvoidsetType(Stringtype){
this.type=type;
}
publicStringgetMemo(){
returnmemo;
}
publicvoidsetMemo(Stringmemo){
this.memo=memo;
}
}
packagecf.frame;
publicclassLoginFrameextendsJFrame{
privateJPasswordFieldpw_password;
privateJTextFieldtf_user;
publicstaticvoidmain(String[]args){
newLoginFrame().setVisible(true);
}
publicLoginFrame(){
super();
setResizable(false);
setTitle("系统登录");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setBounds(260,140,355,237);
Imageimage=newImageIcon(url).getImage();//创建图像对象
BackgroundPanelgbPanel=newBackgroundPanel(image);//创建背景面板
gbPanel.setLayout(null);//设置背景面板为绝对布局
getContentPane().add(gbPanel);//将背景面板添加到窗体容器中部
finalJLabellabel=newJLabel();
label.setText("用户名:
");
label.setBounds(61,75,66,18);
gbPanel.add(label);
finalJLabellabel_1=newJLabel();
label_1.setText("密码:
");
label_1.setBounds(61,108,66,18);
gbPanel.add(label_1);
tf_user=newJTextField();
tf_user.setBounds(112,73,169,22);
gbPanel.add(tf_user);
pw_password=newJPasswordField();
pw_password.setEchoChar('*');
pw_password.setBounds(112,106,169,22);
gbPanel.add(pw_password);
finalJButtonbutton=newJButton();
button.addActionListener(newActionListener(){
publicvoidactionPerformed(finalActionEventarg0){
Stringuser=tf_user.getText();//获得输入的用户名
Stringpassword=newString(pw_password.getPassword());//获得输入的密码
if(user.equals("")||password.equals("")){//如果用户名或密码为空
JOptionPane.showMessageDialog(null,"用户名和密码不能为空。
");
}else{
booleanok=DAO.okUser(user,password);//调用DAO的方法判断用户名和密码
if(ok){//用户名和密码正确
newMainFrame().setVisible(true);//创建并显示主窗体
}
}
}
});
button.setText("登录");
button.setBounds(61,145,106,28);
gbPanel.add(button);
finalJButtonbutton_1=newJButton();
button_1.addActionListener(newActionListener(){
publicvoidactionPerformed(finalActionEventarg0){
System.exit(0);//退出应用程序
}
});
button_1.setText("\u53D6\u6D88");
button_1.setBounds(175,145,106,28);
gbPanel.add(button_1);
}
}
packagecf.swtdesigner;
publicclassSwingResourceManager{//SWING资源管理,包括颜色,字体图片等
privatestaticHashMap
//hashMap哈希映射,基本操作有put(向容器中加入元素)和get(检索与键对象对应的值对象)
privatestaticImagegetImage(InputStreamis){
try{
ByteArrayOutputStreambaos=newByteArrayOutputStream();
bytebuf[]=newbyte[1024*4];
while(true){
intn=is.read(buf);
if(n==-1)
break;
baos.write(buf,0,n);
}
baos.close();
returnToolkit.getDefaultToolkit().createImage(baos.toByteArray());
}catch(Throwablee){
returnnull;
}
}
/**
*Returnsanimagestoredinthefileatthespecifiedpathrelativetothespecifiedclass
*@paramclazzClassTheclassrelativetowhichtofindtheimage
*@parampathStringThepathtotheimagefile
*@returnImageTheimagestoredinthefileatthespecifiedpath
*/
publicstaticImagegetImage(Class
>clazz,Stringpath){
Stringkey=clazz.getName()+'|'+path;
Imageimage=m_ClassImageMap.get(key);
if(image==null){
if((path.length()>0)&&(path.charAt(0)=='/')){
StringnewPath=path.substring(1,path.length());
image=getImage(newBufferedInputStream(clazz.getClassLoader().getResourceAsStream(newP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 通讯录 管理 系统 课程设计 报告