为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

简易WEB_通讯录_数据库课程设计

2012-07-02 43页 doc 3MB 93阅读

用户头像

is_515520

暂无简介

举报
简易WEB_通讯录_数据库课程设计数据库系统课程设计 琼州学院 课 程 设 计 报 告 (2010~2011年度第二学期) 专业计算机科学与技术(专升本) 课程 数据库原理及其应用教程 班级  2010级专升本2班 姓名  龙晓英   学号  10253030 教师  王海丰 琼州学院电子信息工程学院制 摘要 随着市场经济的发展和人们生活的提高,随着科学技术的发展,计算机领域不断取得新的研究成果。计算机在代替和延伸脑力劳动方面发挥越来越重要的...
简易WEB_通讯录_数据库课程设计
数据库系统课程设计 琼州学院 课 程 设 计 报 告 (2010~2011年度第二学期) 专业计算机科学与技术(专升本) 课程 数据库原理及其应用教程 班级  2010级专升本2班 姓名  龙晓英   学号  10253030 教师  王海丰 琼州学院电子信息工程学院制 摘要 随着市场经济的发展和人们生活的提高,随着科学技术的发展,计算机领域不断取得新的研究成果。计算机在代替和延伸脑力劳动方面发挥越来越重要的作用,不仅在工业方面而且在日常生活中也越来越离不开计算机。人们已经不满足于上网浏览页面,而是想通过网络来实现现实生活中需要处理的事情。伴随着通讯录数据的规模不断增多,像数据查询,维护,管理等都将越来越复杂,工作量也将越来越大。但一直以来人么使用传统人工的方式管理各种数据,这种管理方式存在着很多缺点,比如:效率低,保密性差,随着时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。作为计算机应用的一部分,使用计算机对各项信息进行管理,具有着手工管理所不能及的高效性和灵活性。通过浏览器来随时查阅自己所需要的信息,而不必在大费周章去翻开那些繁琐的记事本是本系统开发的目的.本系统是一套以ISO/IEC17025、ISO9000等标准化管理规范为基础,采用先进的计算机技术、网络技术,采用三层结构,完全B/S模式,纯面向对象思想(OOP),利用SQL Server 2008作为数据库管理工具,模块复用率高、系统维护代价小,方便、灵活、高效,是一种使用数据库技术和信息管理技术的Web管理的新模式,本系统是一个专门针对储存用户联系方式以及一些简单个人信息的实用管理系统,它方便了用户对众多客户、朋友、同事等个人信息的储存和快速查阅的功能,大大减少了查找过程时间,在轻松快捷中沟通你我。 关键词: SQL Server 2008、JSP、JavaBean、Servlet、SQL _JDBC、开发模式、Ajax 目录 1第一章 系统概述 11.1系统开发背景和意义 11.1.1选题的背景 11.1.2系统设计目标 11.2开发系统的软硬件环境 11.2.1 硬件 11.2.2软件 21.3开发工具简介 21.3.1 Jsp(JavaServer Pages) 21.3.2 Ajax 31.3.3 SQL Server 2008 31.3.4 Eclipse 41.3.5 Tomcat 51.4系统安全性设计 51.4.1 MD5加密用户密码 6第二章 系统设计 62.1系统总体结构设计 62.1.1系统总体功能模块图(见图2.1) 72.1.2系统图(简称为DFD 见图2.2) 82.1.3 系统用户活动图 82.2总体设计思想 92.3系统E-R图及分析 92.3.1系统的E-R图: 92.3.2各实体的属性 102.4 Web开发模型:Java+Servlet+javaBean 102.5数据库设计 102.5.1各实体属性表 122.6数据库操作 122.6.1创建view_relation视图(代码见表2-4,结果见图2.9) 122.6.2默认值、规则的建立 132.6.3触发器的建立 142.6.4 创建存储过程 17第三章 功能设计与实现 173.1系统详细功能模块图 173.1.1管理员用户部分功能图 173.1.2 会员用户部分功能图 183.2 各模块功能实现 183.2.1 用户登录窗体的设计 183.2.2 管理员主界面窗体的设计 193.2.3 会员主界面窗体的设计 193.2.4 修改个人信息窗体的设计 203.2.5 查看会员信息窗体的设计 203.2.6 修改会员信息窗体的设计 213.2.7新建联系人窗体的设计 223.2.8 搜索会员窗体的设计 233.2.9关于系统信息窗体设计 233.2.10新用户注册窗体功能设计 243.3关键代码分析 243.3.1 Ajax 请求xmlHttpRequest对象关键代码 26参考文献 27 28附录 28登录信息 28JSP部分程序 36SQL 编程语言 第一章 系统概述 1.1系统开发背景和意义 1.1.1选题的背景 日益繁多的人际交往使得我们很难搞清楚与每个人之间的联系方式,特别是对于做经常出差的人来说更是难,所以通讯录能够便捷的给我们带来所需要的相关信息。而随着计算机的普及,人们的生活摆脱了传统式的记事本、电话薄,越来越多的靠计算机来帮助人们记得这些事情,极其简便。这就需要有一个使用的通讯录管理系统,用户可以方便的通过自己电脑的通讯录管理系统,来随时查阅自己所需要的信息,而不必在大费周章去翻开那些繁琐的记事本。 网络通讯录管理系统是典型的管理信息系统(MIS),是面向所有网民的通讯录及附属服务,包括通讯录管理,个人信息管理等业务。其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 为此我针对以上情况,设计和实现了此系统。 1.1.2系统设计目标 通过使用Web 通讯录管理系统,使现代人摆脱了传统式的记事本、电话薄,使用计算机科学技术来随时查阅自己所需要的信息。 1.2开发系统的软硬件环境 1.2.1 硬件 CPU:Intel(R) Core(TM)2 Duo CPU 内存:2GB 硬盘:250GB 显示器:Mobile Intel(R) 45 Express Chipset Family (Microsoft Corporation - WDDM 1.1) 1.2.2软件 操作系统:Windows 7 旗舰版 开发工具:Eclipse-jee-galileo-SR2-win32、apache-tomcat-6.0.20、Jdk6.0、SQL_JDBC 数据库环境:SQL Server 2008 1.3开发工具简介 1.3.1 Jsp(JavaServer Pages) JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。 JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet 是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。 JSP技术的强势 (1)一次编写,到处运行。除了系统之外,代码不用做任何更改。 (2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/.net的局限性是显而易见的。 (3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。 (4)多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。 (5)支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。 1.3.2 Ajax AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML),AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词,是指一种创建交互式网页应用的网页开发技术。 国内翻译常为“阿贾克斯”和阿贾克斯足球队读音。Web应用的交互如Flickr, Backpack和Google在这方面已经有质的飞跃。这个术语源自描述从基于Web的应用到基于数据的应用的转换。在基于数据的应用中,用户需求的数据如联系人列表,可以从独立于实际网页的服务端取得并且可以被动态地写入网页中,给缓慢的Web应用体验着色使之像桌面应用一样。 AJAX 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。通过 AJAX,您的 JavaScript 可使用 JavaScript 的 XMLHttpRequest 对象来直接与服务器进行通信。通过这个对象,您的 JavaScript 可在不重载页面的情况与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面.AJAX 可使因特网应用程序更小、更快,更友好。 主要包含的技术   基 web标准(standards-based presentation)XHTML+CSS的表示;   使用 DOM(Document Object Model)进行动态显示及交互;   使用 XML 和 XSLT 进行数据交换及相关操作;   使用 XMLHttpRequest 进行异步数据查询、检索; 使用 JavaScript 将所有的东西绑定在一起。 1.3.3 SQL Server 2008 SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本。SQL Server 2008出现在微软数据平台愿景上是因为它使得公司可以运行他们最关键任务的应用程序,同时降低了管理数据基础设施和发送观察和信息给所有用户的成本。它具有可信任性、高效性、智能性。 1.3.4 Eclipse Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。 Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——Eclipse Platform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。 1.3.5 Tomcat Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。目前最新版本是6.0。 Tomcat 是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 这里的诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为7.0.12 Released . 1.4系统安全性设计 1.4.1 MD5加密用户密码 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,MD5用以提供消息的完整性保护,MD5用的是哈希函数,在计算机网络中应用较多的不可逆加密算法有RSA公司发明的MD5算法和由美国国家技术标准研究所建议的安全散列算法SHA。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992) 第二章 系统设计 2.1系统总体结构设计 2.1.1系统总体功能模块图(见图2.1) 图2.1系统总体功能模块图 2.1.2系统流程图(简称为DFD 见图2.2) 图2.2 系统DFD 2.1.3 系统用户活动图 图2.3系统活动图 2.2总体设计思想 Web 通讯录管理系统主要是实现通讯录信息的Internet管理,包括个人信息的修改,添加、删除、修改联系人以及修改联系人组;管理人员的修改个人信息和管理注册用户信息(包括重置密码、修改权限、删除注册用户、添加用户),本系统采用纯B/S模式,使用J2EE开发框架,登录采用md5密码安全登录,对于本系统的任何查询都必须通过登录确认身份才能使用相应的功能模块。 2.3系统E-R图及分析 2.3.1系统的E-R图: 图2.4 系统E-R图 2.3.2各实体的属性 (1)用户表(用户编号,用户名,真实名,密码,性别,Email,QQ,权限级别,电话号码,上次登录时间,isDel),其中权限等级中1表示会员,2表示管理员 图2.5 实体用户属性图 (2)权限表(ID,权限名) 图2.6 权限属性图 (3)联系人表(编号,会员名,名字,性别,Email,QQ,电话号码,关系组等级,,isDel),关系组等级0代表同学,1代表朋友,2代表同事 图2.7 实体联系人属性图 2.4 Web开发模型:Java+Servlet+javaBean 图2.8 Web开发模型图 2.5数据库设计 有了前面的工作,还需要将上面的数据库概念结构转化为SQL Server 2008数据库所支持的实际数据模型,也就是数据库的逻辑结构。 2.5.1各实体属性表 表2-1权限信息表 字段名称 数据类型 字段大小 允许空字符串 default ID int 长整型 not null 名字 varchar 255 not null 表2-2用户信息表 字段名称 数据类型 字段大小 允许空字符串 default 用户编号 bigint not null 用户名 varchar 255 not null 真实名 varchar 255 not null 密码 varchar 255 not null 性别 bit 1 not null 0 Email varchar 255 not null QQ varchar 100 not null 权限级别 int not null 电话号码 varchar 50 not null 上次登录时间 varchar 100 not null isDel bit 1 not null 0 表2-3联系人信息表 字段名称 数据类型 字段大小 允许空字符串 default 编号 bigint not null 会员名 varchar 255 not null 名字 varchar 255 not null 性别 bit 1 not null 0 Email varchar 255 not null QQ varchar 100 not null 电话号码 varchar 50 not null 关系组名字 varchar 255 not null isDel bit 1 not null 0 2.6数据库操作 2.6.1创建view_relation视图(代码见表2-4,结果见图2.9) 表2-4 创建view_relation视图 use PepCon go create view view_relation as select users.ID as preid,relation.* from users left join relation on users.username = relation.prename 图2.9 创建view_relation视图 2.6.2默认值、规则的建立 (1)创建规则 创建规则 CREATE RULE qq_rule AS @qq>=0,将规则绑定到列上sp_bindrule qq_rule, 'relation.qq'.(见图2.10) 图2.10创建规则qq_rule图 (2)创建默认值 创建默认值CREATE default D_sex AS '0' (见图2.11) 将默认值绑定在列上sp_bindefault D_sex,'users.sex'(见图2.12) 图2.11 图2.12 2.6.3触发器的建立 建立更新会员表中删除属性isDel值为’1’时的触发器trgUpdateRelation.当在系统中管理员删除某个会员时同时删除关系表中相应的联系人(代码见表2-5,结果见图2.13)。 表2-5 trgUpdateRelation 触发器 use PepCon go CREATE TRIGGER trgUpdateRelation ON relation FOR UPDATE AS DECLARE @isdel bit DECLARE @username varchar(255) SELECT @isdel = isDel,@username=username FROM users IF(@isdel=1) BEGIN update relation set isdel=1 where username=@username ROLLBACK TRANSACTION END RETURN 图2.13 trgUpdateRelation触发器 2.6.4 创建存储过程 (1)创建prcListUsers的存储过程(代码见表2-6,结果见图2.14) use PepCon go CREATE PROC prcListUsers @ID bigint, @username varchar(50), @realname varchar(50), @password varchar(200), @qq int , @email varchar(50), @phone varchar(50), @sex bit, @isDel char(1), @role char(1) , @ltime varchar(200) as BEGIN PRINT 'List of Contract Recruiters' SELECT ID,username,realname,password,qq,email,phone,sex,isDel,role, ltime FROM users END 图2.14 创建存储过程prcListUsers的SQL界面 (2)创建relation的存储过程(代码见表2-7,结果见图2.15) 表2-7创建prcListRelation的存储过程代码 use PepCon go CREATE PROC prcListRelation @id int, @prename varchar(100), @username varchar(100), @qq int, @email varchar(100), @phone int, @sex bit, @relation int, @isdel bit as BEGIN PRINT 'List of Contract prcListRelation' SELECT id,prename,username,qq,email,phone,sex,relation,isdel FROM relation END 图2.15创建存储过程prcListRelation的SQL界面 (3)创建prcListRole的存储过程(代码见表2-8,结果见图2.16) 表2-8创建prcListRole的存储过程代码 use PepCon go CREATE PROC prcListRole @id int, @name varchar(100) as BEGIN PRINT 'List of Contract prcListRole' SELECT id,name FROM Role END 图2.16创建存储过程prcListRole的SQL界面 第三章 功能设计与实现 3.1系统详细功能模块图 3.1.1管理员用户部分功能图 管理员通过登录验证权限成功后进入主窗体,可以对注册会员进行管理(包括会员添加、删除、重置密码)及个人信息的修改和会员查询,其中删除会员时在数据库中创立一个触发器,当该会员被删除时同时删除他的联系人.(见图3.1) 图3.1管理员用户部分功能图 3.1.2 会员用户部分功能图 会员通过登录权限验证后进入主窗体,对个人信息修改及联系人的管理,其中联系人管理包括联系人添加、联系人删除、联系人基本信息修改. (见图3.2) 图3.2会员用户部分功能图 3.2 各模块功能实现 3.2.1 用户登录窗体的设计 本窗体以蓝色背景为主,有用户名、密码和验证码框,用户输入注册过的用户名和密码以及当前的验证码,点击登录,有系统判断权限和是否登录成功。其中验证码可以点击更换,新用户注册链接可以进入注册窗体注册。(见图3.3) 图3.3 用户登录窗体 3.2.2 管理员主界面窗体的设计 管理员在登录时经过系统验证成功后进入图3.4窗体,该窗体显示了注册过的会员所有以及管理员的基本信息,其中左边有总注册人数统计,还有修改个人信息、查询会员、添加管理员/会员、关于个连接,点击可以进入不同的窗体,实现相应的功能。(见图3.4) 图3.4 管理员主界面窗体 3.2.3 会员主界面窗体的设计 会员在登录经过系统验证成功后进入图3.5窗体,该窗体显示该会员添加过的所有联系人,点击查看链接可以查看联系人所有的信息,单击修改、删除按钮给以对该联系进行修改和删除。(见图3.5) 图3.5 会员主界面窗体 3.2.4 修改个人信息窗体的设计 管理员和会员点击修改个人信息,都能进入图3.6窗体,进行相应数据项的修改,然后点击提交,系统会显示与后台数据库的交互结果,并以提示框的形式显示相应的信息。(见图3.6) 图3.6 修改个人信息窗体 3.2.5 查看会员信息窗体的设计 该窗体只向管理员开发,管理员点击相应的记录的详情链接,窗体会显示该会员的所有信息,并有修改、重置密码、关闭显示会员详细信息显示。但当你点击详情的时候,所显示的会员信息是不能修改的。(见图3.7) 图3.7 查看会员信息窗体 3.2.6 修改会员信息窗体的设计 管理点击修改,会员信息部分由不能改变成可编辑,管理员可以修改联系人信息然后点击提交,系统会提示是否修改成功,如果修改成功就跳到管理员主窗口。不成功就还在当前窗体。(见图3.8、图3.9) 图3.8 修改会员信息窗体 图3.9修改会员信息成功窗体 3.2.7新建联系人窗体的设计 该窗体只向会员开发,会员在点击添加联系人链接后会跳到如图3.10所示的窗体,用户在窗体中填入相应的信息,然后点击提交,系统会根据和数据库交互数据的结果以提示框的信息提示用户,如果成功,则在用户确定提示框后跳到会员的主体窗体,不成功则还停留在该窗体。(见图3.10、图3.11) 图3.10 新建联系人窗体 图3.11新建联系人成功窗体 3.2.8 搜索会员窗体的设计 该窗体根据用户输入的内容和选择的搜索项,在用户点击搜索后,由系统和数据库进行交互,把操作结果反馈给用户。(见图3.12) 图3.12搜索会员窗体 3.2.9关于系统信息窗体设计 该窗体主要是显示系统的基本信息,其中包括开发人员的信息,系统的开发平台和框架以及安全机制、系统特点。(见图3.13) 图3.13关于系统信息窗体 3.2.10新用户注册窗体功能设计 该窗体要求用户输入相关信息,并对个输入框内容限制了格式和长度。例如密码,它要求密码为6为或6位以上,如果输入的是6位一下,系统会在用户点击提交,经过javascript检验,提示用户密码必须为6位或6为以上。(见图3.14) 图3.14新用户注册窗体 3.3关键代码分析 3.3.1 Ajax 请求xmlHttpRequest对象关键代码 var xmlHttp; var showmodel; var flag=false; var part; function createXMLHttpRequest() { xmlHttp = false; //开始初始化XMLHttpRequest对象 if(window.XMLHttpRequest) { //Mozilla 浏览器 xmlHttp = new XMLHttpRequest(); if (xmlHttp.overrideMimeType) {//设置MiME类别 xmlHttp.overrideMimeType('text/xml'); } } else if (window.ActiveXObject) { // IE浏览器 try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!xmlHttp) { // 异常,创建对象实例失败 window.alert("不能创建XMLHttpRequest对象实例."); return false; } } /* 请求页面 */ function selectPage(page,model,pd,stat) { var pn="",str=""; showmodel=model; if(pd!=null&&pd!=""&&pd!="null") { pn="&pd="+pd; } if(stat!=null&&stat!=""&&stat!="null") { str="&relation="+stat; } if(page=="reg") page="../"+page; var url=page+".jsp?time="+new Date().getTime()+pn+str; createXMLHttpRequest(); document.getElementById(showmodel).innerHTML="
等待加载……
"; xmlHttp.open("POST", url, true); xmlHttp.onreadystatechange = selectPageSuccess; xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xmlHttp.send(null); } function selectPageSuccess() { if(xmlHttp.readyState == 4) { if(xmlHttp.status == 200) { document.getElementById(showmodel).innerHTML=xmlHttp.responseText; } else { alert("服务器异常,不能响应!"); document.getElementById(showmodel).innerHTML=""; } } } 参考文献 [1] 孙鑫. Java Web开发三部曲·Servlet JSP深入详解:基于Tomcat的Web开发. 电子工业出版社: 2008. 第1版 [2] 王黎、于永军、张豪等. JSP+Dreamweaver CS4+CSS+Ajax动态网站开发典型案例. 清华大学出版社: 2010. 第1版 [3]耿祥义. JSP基础教程:黑魔方.清华大学出版社: 2004. 第1版 [4] 陈华. Ajax从入门到精通. 清华大学出版社: 2008. 第1版 总结 这个Web 通讯录系统完成了基本的功能实现,由于时间问题,在需求分析上还不够完善,其中在线导出、导入通讯数据,打印等功能没有加入需求设计中,不过通过这次数据库设计,使我们把过去学过的有关知识系统的整理和实践,使我对JSP程序设计有了更深层次的认识和理解,尤其是在设计网站方面有关数据库的设计,懂得了灵活运用JAVA和SQL Server 2008等工具。在当今计算机飞速发展的今天,懂得一门计算机语言技术是非常必要的。同时,我们清楚的认识到,只有自己肯努力,愿意去付出劳动,就能够得到属于我们自己所期望的东西。 经过这次实践,使得我的能力有了提高,得到了充分的锻炼 附录 登录信息 管理员帐号: user:admin; password:000000 注册用户帐号: user:yasmine Password:000000 JSP部分程序 JSP连接数据库(DB/DBManage.java) package DB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DBManager { // Declare the JDBC objects. private Connection con=null; private Statement stmt=null; private ResultSet rs=null; public DBManager(){ super(); } // Create a variable for the connection string. public Connection CreateCon(){ String databse="PepCon"; String USER = "yasmine"; String PASSWORD = ""; String connectionUrl = "jdbc:sqlserver://localhost:1433;" + "databaseName="+databse+";integratedSecurity=true;user="+USER+"password="+PASSWORD; try { // Establish the connection. Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); con = DriverManager.getConnection(connectionUrl); return con; }catch(Exception e){ e.printStackTrace(); return null;} } // Create a variable for the Statement string. public Statement CreateStmt(){ stmt = null; try { if (con == null) { con = this.CreateCon(); } stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); return stmt; } catch (Exception fe) { System.err.println("CreatStat(): " + fe.getMessage()); return null; } } // Create a variable for the Resultset public ResultSet getResult(String sql) { rs = null; try { stmt = this.CreateStmt(); rs = stmt.executeQuery(sql); return rs; } catch (SQLException ex) { System.err.println("getResult: " + ex.getMessage()); return null; } } //更新数据方法 public int executeSql(String sql) { int RowCount; try { stmt = this.CreateStmt(); RowCount = stmt.executeUpdate(sql); if (!con.getAutoCommit()) { con.commit(); } return RowCount; } catch (SQLException e) { System.err.println("exectueSql: " + e.toString()); return 0; } } public PreparedStatement prepare(String sql, int autoGenereatedKeys) { PreparedStatement pstmt = null; try { if (con == null){ con = this.CreateCon(); } pstmt = con.prepareStatement(sql, autoGenereatedKeys); } catch (SQLException e) { e.printStackTrace(); return null; } return pstmt; } // Create a variable for close DB public void Release() throws SQLException { if (rs != null) { rs.close(); rs = null; } if (stmt != null) { stmt.close(); stmt = null; } if (con != null) { con.close(); con = null; } } } 页面分页JavaBean(page/page.java) /** * 分页算法实现类 * */ package page; public class Page { public int recordCount;// 总记录 public int pageSize;// 每页显示记录数 public int pageCount;// 页数 public int pageId;// 当前页码 int startId;// 当前页在的开始位置 int endId;// 当前页的结束位置 /** * @构造方法,完成一些属性的设置 */ public Page(int recordCount, int pageSize) { this.recordCount = recordCount; this.pageSize = pageSize; if (recordCount % pageSize > 0) { this.pageCount = recordCount / pageSize + 1; } else { this.pageCount = recordCount / pageSize; } } public void setStartEndId() { if (pageId <= pageCount && pageId > 0) { startId = (pageId - 1) * pageSize; endId = pageId * pageSize; } else { pageId = pageCount; startId = (pageId - 1) * pageSize; endId = pageId * pageSize; } } public int getStartId(int pageId) { this.pageId = pageId; this.setStartEndId(); return this.startId; } public int getEndId(int pageId) { this.pageId = pageId; this.setStartEndId(); return this.endId; } public int getPageSize(){ return pageSize; } } 验证码的创建(yzm/CheckNum.java) /** * 验证码 */ package yzm; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class CheckNum extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { private static final long serialVersionUID = 1L; // 在内存中创建图象 private int width =50, height =25; private BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); // 获取图形上下文 Graphics g = image.getGraphics(); Random random = new Random(); g.setColor(getRandColor(200, 250)); g.fillRect(0, 0, width, height); g.setFont(new Font("宋体", Font.ITALIC,18)); // 画边框 // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到 g.setColor(getRandColor(120, 250)); for (int i = 0; i < 90; i++) { int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(12); int yl = random.nextInt(12); g.drawLine(x, y, x + xl, y + yl); } // 取随机产生的认证码(4位数字) String sRand = ""; for (int i = 0; i < 4; i++) { String rand = String.valueOf(random.nextInt(10)); sRand += rand; /
/
本文档为【简易WEB_通讯录_数据库课程设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索