基于Oracle的通讯录管理系统Word格式.docx
《基于Oracle的通讯录管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《基于Oracle的通讯录管理系统Word格式.docx(20页珍藏版)》请在冰点文库上搜索。
1.1设计背景
我们现在如何管理与我们联系的人的信息呢?
有多种方式,比如说,有储存电话号码到手机上的,有记录电话等信息到本子上的,还有用名片夹存放名片的,也有记录在WORD文档中或打印出来的,等等很多种形式。
对于存储电话号码到手机上的方式,比较方便,随时随地可以联系,不过只能通过电话联系,没有记录其他的联系方式,如果手机丢了可能就谁也联系不上了;
对于记录电话等信息到本子上的方式,第一也可能丢失本子,第二是查找起来比较困难,需要人工查找,而且更新时不容易,需要涂改以前记录的信息,第三格式比较死板,不利于跟随用户的需求扩展;
对于用名片夹存放名片的形式也是查找起来不方便,有丢失的危险;
对于记录到WORD文档或打印出来的,也是扩展性不强,查找起来不方便。
如此多的方式我们都感觉有一定的缺陷,那我们如何管理我们的联系人通讯资料呢?
提出一个大胆的假设,如果我们在网络上建立一个WEB系统专门提供通讯录管理功能,这样我们就可以随时随地通过网络对通讯录进行管理,而现在我们的手机都逐渐更新换代成可以连接计算机网络了,这样我们可以随时随地查找任意信息,查找快速,维护方便,丢失手机也不会丢失联系方式,而且可以根据用户的需要定制,比较灵活,这个可能是最完美的方案了。
1.2设计目的和意义
将网络和通讯录管理结合起来。
使用普通的通讯录系统用户数据丢失有时是不可避免的,本设计将网络和通讯录管理联系起来使得用户的数据不易丢失。
该设计分为用户权限和管理员权限。
使得管理员对用户信息的管理变得更加方便。
同时计算机具有手工管理所无法比拟的优点。
传统的人工管理随着人们之间的距离愈来愈远了,范围也愈来愈大了,这种管理方式存在的缺点就明显起来。
这就迫切要求我们把所有人的联系方式统一管理起来,作为计算机应用的一部分,使用计算机对通讯信息进行管理,具有绝对的优势,比如:
查询迅速方便,可靠性高,存储量大,保密性好,不易丢失等。
为此,本设计就为用户提供了一个管理联系方式的方法,本系统设计采用JSP建立一个WEB平台管理联系方式信息,使用户可以随时随地的管理自己的联系资料,这个系统改变了人们生活中关于通讯管理这一块。
所以通讯簿管理系统一改能够为用户提供充足的信息和快捷的查询手段及联系方式。
这样管理员和用户在工作起来效率高,可以不用再做大量的记录。
第二章需求分析
2.1开发平台
本次设计开发的平台分为硬(软)件平台和技术平台。
硬(软)件主要包括:
服务器:
tomcat7.0;
操作系统
:
WINDOWS
浏览器
Internet
Explorer;
软件平台:
JDK1.7+myEclipse10.0+Oracle11g
技术平台主要包括:
Struts2+MVC模式+JSP设计+JAVA
2.1.1Oralce数据库简介
Oracle简称甲骨文,是仅次于微软公司的世界第二大软件公司,该公司名称就叫Oracle。
该公司成立于1979年,是加利福尼亚州的第一家在世界上推出以关系型数据管理系统(RDBMS)为中心的一家软件公司。
Oracle不仅在全球最先推出了RDBMS,并且事实上掌握着这个市场的大部分份额。
现在,他们的RDBMS被广泛应用于各种操作环境:
WindowsNT、基于UNIX系统的小型机、IBM大型机以及一些专用硬件操作系统平台。
事实上,Oracle已经成为世界上最大的RDBMS供应商,并且是世界上最主要的信息处理软件供应商。
由于Oracle公司的RDBMS都以Oracle为名,所以,在某种程度上Oracle己经成为了RDBMS的代名词。
Oracle数据库管理系统是一个以关系型和面向对象为中心管理数据的数据库管理软件系统,其在管理信息系统、企业数据处理、因特网及电子商务等领域有着非常广泛的应用。
因其在数据安全性与数据完整性控制方面的优越性能,以及跨操作系统、跨硬件平台的数据互操作能力,使得越来越多的用户将Oracle作为其应用数据的处理系统。
Oracle数据库是基于“客户端/服务器”模式结构。
客户端应用程序执行与用户进行交互的活动。
其接收用户信息,并向“服务器端”发送请求。
服务器系统负责管理数据信息和各种操作数据的活动。
Oracle数据库有如下几个强大的特性:
支持多用户、大事务量的事务处理
数据安全性和完整性的有效控制
支持分布式数据处理
可移植性很强
Oracle体系庞大,对于初学者来说,大体上要明白定位思想:
Oracle大体上分两大块,一块是应用开发,一块是系统管理。
开发主要是写存储过程、触发器什么的,还有就是用Oracle的Develop工具做form。
有点类似于程序员,需要有较强的逻辑思维和创造能力。
管理则需要对Oracle数据库的原理有深刻的认识,有全局操纵的能力和紧密的思维,责任较大,因为一个小的失误就会丢失整个数据库,相对前者来说,后者更看重经验。
2.1.2MVC设计模式
模块、视图和控制器(MVC)模式是80年代Smalltalk-806出现的一种软件设计模式,现在已经被广泛使用。
MVC模式是一个描述重现问题及其解决方案的设计范式,其中控制器位于视图和模块之间,对视图如何与模块交互进行管理,这使得视图能够完全独立于控制器和模型,可以轻松实现客户端的设计。
将控制器和模型分开就可以在互不影响的情况下修改任何一方。
这样有助于减少各个部分之间的关联性。
随着电子邮件系统的应用,各领域可以随时方便地进行信息的交流而无须掌握复杂的技术,从而改进了传统的信息交流的模式。
MVC设计模式把一个软件组件区分为三个不同的部分:
model、view、controller。
模型(MODEL)
模型是应用程序的主体部分。
模型表示业务数据,或者业务逻辑,代表组件状态和低级行为的部分,它管理着自己的状态并且处理所有对状态的操作,Model自己本身并不知道使用自己的view和controller是谁,系统维护着它和view之间的关系,当Model发生了改变系统还负责通知相应的view。
视图(VIEW)
视图是应用程序中用户界面相关的部分,是用户能看到并与之交互的界面。
它代表了管理Model所含有的数据的一个视觉上的呈现,一个Model可以有一个以上的view。
控制器(CONTROLLER)
控制器的工作就是根据用户的输入,控制用户界面数据显示更新Model对象状态,并管理着Model和用户之间的交互的控制,它提供了一些方法去处理当Model的状态发生了变化时的情况。
图2.1MVC框架图
2.1.3Struts2介绍
Struts2是Struts的下一代产品,是在struts和WebWork的技术基础上进行了合并的全新的Struts2框架。
其全新的Struts2的体系结构与Struts1的体系结构的差别巨大。
Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品。
虽然从Struts1到Struts2有着太大的变化,但是相对于WebWork,Struts2只有很小的变化。
Struts2应用流程注解
Struts2的体系与Struts1体系的差别非常大,因为Struts2使用了WebWork的设计核心,而不是Struts1的设计核心。
Struts2中大量使用拦截器来处理用户的请求,从而允许用户的业务逻辑控制器与ServletAPI分离。
Struts2框架的大概处理流程如下:
1、加载类(FilterDispatcher)
2、读取配置(struts配置文件中的Action)
3、派发请求(客户端发送请求)
4、调用Action(FilterDispatcher从struts配置文件中读取与之相对应的Action)
5、启用拦截器(WebWork拦截器链自动对请求应用通用功能,如验证)
6、处理业务(回调Action的execute()方法)
7、返回响应(通过execute方法将信息返回到FilterDispatcher)
8、查找响应(FilterDispatcher根据配置查找响应的是什么信息如:
SUCCESS、ERROR,将跳转到哪个JSP页面)
9、响应用户(JSP--->
客户浏览器端显示)
10、struts2标签库(相比struts1的标签库,struts2是大大加强了,对数据的操作功能很强大)
2.2系统需求
2.2.1系统功能需求
通讯录系统主要是为了用户之间能进行更好的管理和沟通。
因此,通讯录系统提供的角色权限示意图如下:
图2.2系统功能图
用户角色:
用户输入自己设置的用户名和密码进入系统主页面,用户会拥有本人信息修改,用户的联系人信息的查询、修改、删除、增加的功能。
系统管理员:
系统管理员拥有对用户的增加、删除、查询,对管理员密码的修改权限。
2.3系统的用例图
用户的用例图:
展现了用户权限在登录的情况下能使用的功能。
图2.3.1用户用例图
管理员的用例图:
展现了管理员角色在登录的情况下能使用的功能。
图2.3.2管理员用例图
2.4系统的界面需求
系统的用户界面作为人机接口起着越来越重要的作用,它的好坏直接影响到系统的寿命,具有友好用户界面的系统,对于用户来说,无疑是一种享受。
因此,必须重视用户界面设计。
用户界面应具备的特征:
可使用性
用户界面的可使用性是用户界面设计最重要的也是最基本的目标。
它包括:
使用的简单性:
用户界面应能方便地处理各种经常进行的交互对话。
问题的输入格式应当易于理解,附加的信息量少;
能直接处理指定媒体上的信息和数据,且自动化程度高,操作简便。
用户界面中所用术语的标准化和一致性:
所有专业术语都应标准化;
软件技术用语应符合软件工程规范;
应用领域的术语应符合软件面向专业的专业标准;
在输入、输出说明里,同一术语的涵义应完全一致。
用户界面应具有容错能力:
即应当具有错误诊断、修正错误以及出错保护的功能。
灵活性
考虑到用户的特点、能力、知识水平,应使用户界面能够满足不同用户的要求。
系统能够按照用户的希望和需要,提供不同详细程度的系统响应信息,包括提示信息、反馈信息、帮助信息、出错信息等。
复杂性和可靠性
用户界面的复杂性:
用户界面的规模和组织的复杂程度就是界面的负责性。
在完成预定功能的前提下,应当使得用户界面越简单越好。
用户界面的可靠性:
用户界面的可靠性是指无故障使用的间隔时间。
用户界面应能保证用户正确、可靠地使用系统,保证有关程序和数据的安全性。
对于电子邮件系统的界面,尽量地将界面设计为简单、方便、清晰、美观。
第三章通讯录系统设计
3.1界面设计
在界面中使用check()函数判定用户名和密码是否为空。
functioncheck(form){
if(form.name.value=="
"
){
alert("
请输入用户名!
);
form.name.focus();
returnfalse;
}
if(form.pwd.value=="
请输入密码!
form.pwd.focus();
}}
图3.1.1登陆界面
输入用户名和密码,点击确定进入用户模式下的主界面。
图3.1.3用户主界面
点击“联系人”可以查看所有联系人的电话与QQ。
图3.1.4联系人界面
点击“编辑通讯录”,可以增加,修改和删除联系人。
点击”更改口令“进入密码修改界面,该页面调用的action为User_Updatepwd。
<
/div>
formaction="
User_Updatepwd"
>
divalign="
center"
<
tablewidth="
600"
height="
432"
border="
0"
cellpadding="
cellspacing="
bgcolor="
#FFFFFF"
tr>
tdalign="
旧密码:
/td>
td>
inputname="
opwd"
>
/tr>
输入新密码:
pwd"
再次输入密码:
repwd"
图3.1.5密码更新界面
3.2数据库设计
通讯录管理系统包括三张表,一个是adm表示管理员表,tongxunlu表是用户的联系人信息表,usr表示用户表。
管理员表
用户表
通讯录表
连接数据库的方法。
publicstaticConnectiongetConnection(){
Connectioncon=null;
//创建用于连接数据库的Connection对象
try{
Class.forName("
oracle.jdbc.driver.OracleDriver"
//加载数据库驱动
con=DriverManager.getConnection("
jdbc:
oracle:
thin:
@180.84.33.254:
1522/orcl"
"
A_CZH"
123"
//创建数据连接
System.out.println("
数据库连接success"
}catch(Exceptione){
数据库连接失败"
+e.getMessage());
}
returncon;
//返回所建立的数据库连接
}
3.3模块设计
用户的功能包括,登录功能;
查看联系人,增加,修改,删除联系人功能;
更改密码功能。
User_LoginAction继承ActionSupport类,实现了RequestAware、SessionAware、ApplicationAware接口访问ServletAPI。
publicclassUser_LoginActionextendsActionSupportimplementsRequestAware,
SessionAware,ApplicationAware{
}
privateMap<
String,Object>
request;
privateMap<
session;
application;
UserDAOuserDAO=newUserDAO();
在execute()方法中实现对用户名及密码的检查。
if(null==newUserDAO().CheckLoginpt(zhanghao,pwd)){
Msg="
用户名或者密码错误"
;
return"
input"
}else{
//获取ID
StringYonghu_ID=newUserDAO().CheckLoginpt(zhanghao,pwd);
//创建session
HttpSessionsession=ServletActionContext.getRequest()
.getSession();
session.setAttribute("
id"
Yonghu_ID);
//session.setAttribute("
type"
1"
success"
}}
View_UserItemlianxirenAction继承ActionSupport类,实现了SessionAware接口访问ServletAPI。
publicclassView_UserItemlianxirenActionextendsActionSupportimplementsSessionAware{
在execute()方法中实现对用户的密码更改操作。
publicStringexecute()throwsException{
zhanghao=(String)session.get("
zhanghao"
System.out.println("
我是showbyzhanghao账号是"
+zhanghao);
tongxunlus=tongxunluDAO.list(zhanghao);
Pagepage=PageUtil.creatPage(10,tongxunlus.size(),currentPage);
intendIndex=page.getBeginIndex()+page.getEveryPage();
if((page.getBeginIndex()+page.getEveryPage())>
page.getTotalCount()){
endIndex=page.getTotalCount();
tongxunlus=tongxunlus.subList(page.getBeginIndex(),endIndex);
ServletActionContext.getRequest().setAttribute("
tongxunlus"
tongxunlus);
ServletActionContext.getRequest().setAttribute("
page"
page);
returnSUCCESS;
Stringzhanghao=(String)session.get("
System.out.print(name);
t.setName(name);
t.setAddr(addr);
t.setBeizhu(beizhu);
t.setQq(qq);
t.setTel(tel);
tongxunluDAO.create(t,zhanghao);
publicStringupdatebyid()throwsSQLException{
Tongxunluto=newTongxunlu();
to.setAddr(addr);
to.setBeizhu(beizhu);
to.setId(id);
to.setName(name);
to.setQq(qq);
to.setTel(tel);
tDAO.updatebyid(to);
return"
guoguan"
publicStringdeletebyid()throwsException{
System.out.print(id);
tDAO.deleteby(id);
returnLOGIN;
publicStringexecute()throwsSQLException{
UserDAOuserDAO=newUserDAO();
Stringquanxian="
yonghu"
StringYonghu_ID=newUserDAO().CheckLogin(zhanghao,pwd);
HttpSessionsession=ServletActionContext.getRequest().getSession();
session.setAttribute("
userDAO.updatepwd(zhanghao,pwd);
结束语
通过这次Oracle课程设计,我对数据库有了更深刻的理解,对Oracle11g的配置使用更加熟练,自己的编程能力得到了提高,也巩固了基础知识,在课程设计中也遇到了一些问题,通过上网查资料,翻阅书籍以及向老师或者同学请教,都得到了解决,在写代码的过程中会遇到各种各样的问题,但是我们不是慌张,而应该沉着冷静的思考,想办法将问题解决,在不断的解决问题的过程中成长,在以后的学习中,我一定要努力掌握好编程技巧,提高的编程能力,成为一名合格的软件开发人员,当然也要提高自己各个方面的能力,适应社会的发展,在软件领域献出自己的一点力量
参考文献
[1]StevenFeuerstein,BillPribyl著OraclePL/SQL程序设计(第5版)
张红强
.Oracle数据库实例教程
[2]ThomasKyte.ExpertOne-on-One[M].Apress,2003.8
[3]BenjaminRosenzweig,ElenaSilvestrovaRakhimov.OraclePLSQL实例精解第4版
[4]ThomasKyte.ExpertOracleD