通讯录管理系统.docx
- 文档编号:3756151
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:42
- 大小:606.54KB
通讯录管理系统.docx
《通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统.docx(42页珍藏版)》请在冰豆网上搜索。
通讯录管理系统
沈阳航空航天大学
软件综合课程设计报告
课程设计名称:
软件综合课程设计
课程设计题目:
电话簿管理系统
院(系):
计算机学院
专业:
网络工程
班级:
学号:
姓名:
王文强
指导教师:
林娜
说明:
结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要
求;数据不实,不予通过。
报告和电子数据必须作为实验现象重复的关键依据。
学术诚信声明
本人声明:
所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。
尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。
与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。
报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。
本人签名:
日期:
年月日
沈阳航空航天大学
课程设计任务书
课程设计名称
软件综合课程设计
专业
网络工程
学生姓名
王文强
班级
网络1201
学号
2014040102028
题目名称
电话簿管理系统
起止日期
2015
年
12
月
7
日起至
2016
年
1
月
4
日止
课设内容和要求:
内容:
要求实现一个电话簿管理系统,界面美观,方便实用。
系统主要包括如下功能:
(1)输入记录模块,记录由与联系人有关的信息组成,可以采用结构体类型数组存储。
(2)查询记录模块,用户可以按照联系人姓名或电话等信息查找,并返回结果。
(3)更新记录模块,实现对记录的更改、删除、插入和排序操作,系统完成这些操作之后,要将修改的数据存入源数据文件中。
(4)输出记录模块,要能生成表格,打印输出,报表可以预览。
参考资料:
姜灵芝,于健,C语言课程设计案例精编[M],清华大学出版社,2008
教研室审核意见:
教研室主任签字:
指导教师(签名)
年
月
日
学生(签名)
年
月
日
课程设计总结:
自从考研完事,一直都提不起精神状态,一边实习,一边慢慢转变生活状态,刚开始几天着实不想做课设。
后来我好好看了看,因为javaweb,我在大三的时候稍微有点接触过,看了看,还是可以试试做做。
我在网上找资料,当时我有两个选择,也么采取高级javaweb开始模式SSH框架和MODE2,或者采取相对低级一些的MODE1(javabean)来做课设。
我选择了后者,因为,我当时没有很好的状态,也没有多余的时间去学习更多的知识。
所以我选择了我感觉相对容易一些选择。
我很遗憾的说,我没能好好完成这个课设,第一是汉字乱码没有解决,不是我不想解决,我前期在网上找了好多,改了两天,最后实在是整不来了,所以这个很遗憾没解决,还有一个是课设里面的有个打印预览,我完成的不是很好。
这点对老师说声抱歉。
不过这些天,我还是很感谢老师,原以为交个报告,向老师求个请就过了,但是老师一直都松口,也让我没办法,只好好好做下去了,反而学到了多学会了一些东西。
课设,我一直都觉得,就是个找资料和自己能否将找到的资料化为己用的问题。
这一点很重要,自学能力,我觉得才是上大学以来最该培养的一种素质,授人鱼不如授渔。
Javaweb,就我班而言,之前没怎么学过,mysql都不知道怎么和网页联系起来,书中的东西,真是只有用于实践的时候,才会变成自己的东西,我在这个过程中遇到阻碍,因为对各种配置文件不熟悉,导致我在进行jar包倒换的时候,结果,导致我的tomcat没法用了,没办法,我把该删的都删了,重来了一遍。
这件事情,就在四天前。
有时候就感觉真是有点造化弄人,不过好歹还是整回来了。
其实感觉还可以了,课设做完了,我也想回家了。
最大的收获就是,感觉有点自信了,网页这方面其实没有想象中的难吧。
目录
沈阳航空航天大学I
学术诚信声明I
1课程设计任务分析5
1.1课程设计内容5
1.2需求分析5
2电话簿管理系统规划6
2.1数据库的设计6
2.1E-R图的设计6
2.2物理建模7
2.3表格设计8
2.4系统功能设计9
2.4.1各模块操作界面9
3模块功能实现12
3.1数据库设计模块:
12
3.2联系人设计模块:
13
3.2真实实现类设计模块:
14
3.3代理实现类设计模块:
17
3.4工厂实现类设计模块:
20
3.5方法申明设计模块:
20
4运行结果20
4.1.1使用工具20
4.1.2工程部署20
4.1.3运行程序22
参考文献24
附录25
1课程设计任务分析
1.1课程设计内容
内容:
要求实现一个电话簿管理系统,界面美观,方便实用。
系统主要包括如下功能:
(1)输出记录模块,记录由与联系人相关的信息组成,可以采用结构体类型数组。
(2)查询记录模块,用户可以按照联系人的姓名或电话信息查找,并返回查找结果。
(3)更新记录模块,要将实现记录的更改,删除,插入,和排序操作,系统完成些操作后,要将修改的数据存入数据源文件中。
(4)输出记录模块,要能生成表格,打印输出,报表可以预览。
1.2需求分析
我们现在管理与我们联系的人的信息方式有多种,比如说,有储存电话号码到手机上的,有记录电话等信息到本子上的,等等很多种形式。
对于存储电话号码到手机上的方式,比较方便,随时随地可以联系,不过只能通过电话联系,没有记录其他的联系方式,如果手机丢了可能就谁也联系不上了;对于记录电话等信息到本子上的方式,第一也可能丢失本子,第二是查找起来比较困难,需要人工查找,而且更新时不容易,需要涂改以前记录的信息,第三格式比较死板,不利于跟随用户的需求扩展;对于用名片夹存放名片的形式也是查找起来不方便,有丢失的危险;如此多的方式我们都感觉有一定的缺陷,那我们如何管理我们的联系人通讯资料呢?
提出一个大胆的假设,如果我们在网络上建立一个WEB系统专门提供通讯录管理功能,这样我们就可以随时随地通过网络对通讯录进行管理,而现在我们的手机都逐渐更新换代成可以连接计算机网络了,这样我们可以随时随地查找任意信息,查找快速,维护方便,丢失手机也不会丢失联系方式,而且可以根据用户的需要定制,比较灵活,这个可能是最完美的方案了。
2电话簿管理系统规划
2.1数据库的设计
2.1E-R图的设计
系统关系实体E-R图的设计是建立在需求分析,系统分析基础之上的。
建立电话簿管理系统,具体的E-R图之间的设计关系如下:
1.普通用户实体:
图2.1.1普通用户实体E-R图
2联系人信息实体:
图2.1.2联系人信息实体E-R图
3整体的E-R的关系:
图2.1.3联系人信息实体E-R图
2.2物理建模
物理建模即数据库建模,建立在概念模型的基础上,每一个实体对应一个数据库表,实体中的每一个属性对应数据库表中的一个字段。
有关系连接的实体在生成物理模型以后,字表会继承父表的主键,生成字表的外键。
1.用户登录数据库的脚本:
图2.2.1用户登录数据脚本E-R图
2.联系人联系人数据库脚本:
图2.2.2联系人信息数据脚本E-R图
如上图所示,列出了表的所有字段及字段类型。
至此,已经确定了建立数据库的相关信息。
下面就将创建相关的数据库表。
在创建数据库表之前,首先要创建一个数据库。
本章系统使用的数据库系统为MySQL,数据库名mysql,数据库用户为:
root,密码:
mysqladmin。
2.3表格设计
下面是此系统用到的两个表的表格
1用户登录表:
图2.3.1用户登录表格E-R图
2联系人信息表:
图2.2.1联系人信息表
上面很清晰的看到两个数据库的表格,所有的增删该查都将在这里面的显示出来,也都是基于这两个表才可以进行的。
2.4系统功能设计
2.4.1各模块操作界面
1.在登录界面中,输入用户名和密码,单击登录按钮,便可进入到电话簿管理系统的操作界面,也可按重置操作,进行重新输入。
图2.4.1联系人信息表
设置登录操作的意义在于,这样有利于安全性的提升,而且,人们注重隐私来讲,有利于个人是使用。
用户名:
admin,密码:
admin.
2这是登陆后所跳转大的操作界面:
图2.4.2增删该查排序操作界面
可以看到课设内容所要求的这些界面增上改查以及打印排序都在此界面上可以实习相应的功能。
3.下面是添加联系人的操作:
图2.4.3增加联系人信息的界面
按照上面的空,依次输入,当输入有错时,有相应的提示错误功能。
添加后会一次的将信息写入到数据库当中。
4.下面是删除操作的界面:
图2.4.4删除联系人信息的界面
操作功能比较简单,此功能可以按照用户姓名来进行进行删除功能。
5.下面查看操作的界面:
图2.4.5查询操作联系人信息的界面
此系统设计的操作,可以通过电话号码和电话联系人的姓名进行查找。
6.下面查看操作的界面:
图2.4.6修改操作联系人信息的界面
此界面要求用户输入正确的所要删除的用户名信息,如果用户删除的用户不存在,将会返回错误。
7下图是打印操作界面所示:
图2.4.7打印操作联系人信息的界面
此界面要求打印,按相应的操作,调用浏览器界面的组件,对所需界面的打印部分进行打印。
8排序操作界面的图如下所示:
图2.4.8排序操作联系人信息的界面
此界面要求按人名的首字母排序,这里我只实现了升序排序,其实还有降序排序,但是我没有做,因为真实的电话簿是按人名字母的首字母按升序排的。
3模块功能实现
3.1数据库设计模块:
packagecn.mldn.lxh.dbc;
importjava.sql.Connection;
importjava.sql.DriverManager;
publicclassDatabaseConnection{
privatestaticfinalStringDBDRIVER="org.gjt.mm.mysql.Driver";
privatestaticfinalStringDBURL="jdbc:
mysql:
//localhost:
3306/mldn";//数据库操作的端口
privatestaticfinalStringDBUSER="root";//用户root
privatestaticfinalStringDBPASSWORD="mysqladmin";//数据库的密码
privateConnectionconn;
//下面的操作是连接数据的操作,所有的异常都往外抛
publicDatabaseConnection()throwsException{
Class.forName(DBDRIVER);
this.conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
}
publicConnectiongetConnection(){//连接操作
returnthis.conn;
}
publicvoidclose()throwsException{//关闭数据库操作
if(this.conn!
=null){
try{
this.conn.close();
}catch(Exceptione){
throwe;
}
}
}
}
这个程序后面所有操作的基础。
3.2联系人设计模块:
packagecn.mldn.lxh.vo;
importjava.util.Date;
publicclassEmp{//实例化人这个方法
privateintempno;
privateStringename;
privateStringjob;
privateDatehiredate;
privatefloatsal;
publicvoidsetEmpno(intempno){
this.empno=empno;
}
publicvoidsetEname(Stringename){
this.ename=ename;
}
publicvoidsetJob(Stringjob){
this.job=job;
}
publicvoidsetHiredate(Datehiredate){
this.hiredate=hiredate;
}
publicvoidsetSal(floatsal){
this.sal=sal;
}
publicintgetEmpno(){
returnthis.empno;
}
publicStringgetEname(){
returnthis.ename;
}
publicStringgetJob(){
returnthis.job;
}
publicDategetHiredate(){
returnthis.hiredate;
}
publicfloatgetSal(){
returnthis.sal;
}
}
3.2真实实现类设计模块:
packagecn.mldn.lxh.dao.impl;
importjava.util.*;
importjava.sql.*;
importcn.mldn.lxh.dao.*;
importcn.mldn.lxh.vo.*;
publicclassEmpDAOImplimplementsIEmpDAO{//数据库连接
privateConnectionconn=null;
privatePreparedStatementpstmt=null;
publicEmpDAOImpl(Connectionconn){
this.conn=conn;
}
publicbooleandoCreate(Empemp)throwsException//添加联系人的方法
{
booleanflag=false;
Stringsql="INSERTINTOemp(empno,ename,job,hiredate,sal)VALUES(?
?
?
?
?
)";
this.pstmt=this.conn.prepareStatement(sql);
this.pstmt.setInt(1,emp.getEmpno());
this.pstmt.setString(2,emp.getEname());
this.pstmt.setString(3,emp.getJob());
this.pstmt.setDate(4,newjava.sql.Date(emp.getHiredate().getTime()));
this.pstmt.setFloat(5,emp.getSal());
if(this.pstmt.executeUpdate()>0){
flag=true;
}
this.pstmt.close();
returnflag;
}
publicList
List
Stringsql="SELECTempno,ename,job,hiredate,salFROMempWHEREenameLIKE?
ORempnoLIKE?
";
this.pstmt=this.conn.prepareStatement(sql);
this.pstmt.setString(1,"%"+keyWord+"%");
this.pstmt.setString(2,"%"+keyWord+"%");
ResultSetrs=this.pstmt.executeQuery();
Empemp=null;
while(rs.next()){
emp=newEmp();
emp.setEmpno(rs.getInt
(1));
emp.setEname(rs.getString
(2));
emp.setJob(rs.getString(3));
emp.setHiredate(rs.getDate(4));
emp.setSal(rs.getFloat(5));
all.add(emp);
}
this.pstmt.close();
returnall;
}
publicEmpfindById(intempno)throwsException{//查找要删除的电话是否存在
Empemp=null;
Stringsql="SELECTempno,ename,job,hiredate,salFROMempWHEREempno=?
";
this.pstmt=this.conn.prepareStatement(sql);
this.pstmt.setInt(1,empno);
ResultSetrs=this.pstmt.executeQuery();
if(rs.next()){
emp=newEmp();
emp.setEmpno(rs.getInt
(1));
emp.setEname(rs.getString
(2));
emp.setJob(rs.getString(3));
emp.setHiredate(rs.getDate(4));
emp.setSal(rs.getFloat(5));
}
this.pstmt.close();
returnemp;
}
publicbooleandelByname(Stringename)throwsException{//实现删除操作
booleanflag=false;
Stringsql="deleteFROMempWHEREename=?
";
this.pstmt=this.conn.prepareStatement(sql);
this.pstmt.setString(1,ename);
if(this.pstmt.executeUpdate()>0)
{
flag=true;
}
this.pstmt.close();
returnflag;
}
publicbooleanupdateEmp(Empemp)throwsException{//实现更新操作
booleanflag=false;
Stringsql="updateempsetempno=?
ename=?
job=?
hiredate=?
sal=?
whereename=?
";
this.pstmt=this.conn.prepareStatement(sql);
this.pstmt.setInt(1,emp.getEmpno());
this.pstmt.setString(2,emp.getEname());
this.pstmt.setString(3,emp.getJob());
this.pstmt.setDate(4,newjava.sql.Date(emp.getHiredate().getTime()));
this.pstmt.setFloat(5,emp.getSal());
this.pstmt.setString(6,emp.getEname());
if(this.pstmt.executeUpdate()>0){
flag=true;
}
this.pstmt.close();
returnflag;
}
publicList
List
Stringsql="select*fromemporderbyenameasc";
this.pstmt=this.conn.prepareStatement(sql);
//this.pstmt.setString(1,"%"+keyWord+"%");
//this.pstmt.setString(2,"%"+keyWord+"%");
ResultSetrs=this.pstmt.executeQuery();
Empemp=null;
while(rs.next()){
emp=newEmp();
emp.setEmpno(rs.getInt
(1));
emp.setEname(rs.getString
(2));
emp.setJob(rs.getString(3));
emp.setHiredate(rs.getDate(4));
emp.setSal(rs.getFloat(5));
all.add(emp);
}
this.pstmt.close();
returnall;
}
}
3.3代理实现类设计模块:
packagecn.mldn.lxh.dao.proxy;
importjava.util.List;
importjava.sql.*;
importcn.mldn.lxh.dao.*;
importcn.mldn.lxh.dbc.*;
importcn.mldn.lxh.dao.impl.*;
importcn.mldn.lxh.vo.*;
publicclas
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录 管理 系统