基于JSP的雅致信息管理系统-论文(含源文件)


获取项目源文件,联系Q:1225467431,可指导毕设,课设



目 次
1 引言………………………………………………………………………………2
1.1 系统开发背景………………………………………………………………… 2
1.2 系统开发目标 ……………………………………………………………… 2
2 系统相关技术介绍…………………………………………………………… 3
1.1 JSP技术 …………………………………………………………………3
1.2 B/S模式………………………………………………………………………… 3
2.3 SQL Server 2005………………………………………………………………4
2.4 JQuery………………………………………………………………………… 4
2.5 正则表达式………………………………………………………………………5
2.6 JavaScript…………………………………………………………………… 5
2.7 CSS………………………………………………………………………………5
3 系统分析………………………………………………………………… 6
3.1 需求分析……………………………………………………………………… 6
3.2 可行性分析…………………………………………………………………… 6
3.3 系统配置要求………………………………………………………………… 7
4 系统设计 …………………………………………………………………… 7
4.1 系统总体结构设计……………………………………………………………7
4.2 数据库设计………………………………………………………………… 8
5 系统实现 …………………………………………………………………… 11
5.1 数据库实现………………………………………………………………… 11
5.2 系统主要功能模块的实现……………………………………………………13
6 技术难点及其解决方法………………………………………………………… 29
结论 ……………………………………………………………………………………30
参考文献………………………………………………………………………………31
致谢…………………………………………………………………………………32
1 引言
1.1 系统开发背景
由于企业规模进一步扩大,企业信息的管理也变得越来越复杂。为此,切实有效的把企业信息管理系统引入企业管理领域中,对于促进企业管理制度和提高企业质量有着显着意义。
Internet的发展使我们的企业越来越现代化,现在网上企业信息管理是我们现在企业管理中的一个热点。现在,员工跟公司的之间的信息传播只在一指之间。目前国家的企业管理体制也正处在不断改革、创新的阶段,我国的工商部门充分吸取国外优秀的管理模式,结合国内多年的企业管理经验,逐步探索出适合中国特色的企业管理形式。因此,企业信息管理软件应充分依托企业自身信息,实现企业信息的集中管理、分散操作、信息共享,、使传统的管理朝数字化无纸化、智能化、综合化的方向发展,并为进一步实现完善的信息系统打下良好的基础。由于 Internet 具有影响范围广,能够方便快捷的传递信息,具有近乎实时的交互性,本身又是一个巨大无比的信息库等诸多优点。本企业信息系统,可以提高企业的信息管理效率。我们的目标是用本企业信息系统实现最快对企业信息的综合管理。在这里,运用计算机辅助管理,即能实时地对大量信息数据进行检验和统计,十分方便地输出管理结果,同时也避免了人工处理时容易产生的错误。
1.2 系统开发目标
根据本系统任务书的具体要求,近阶段查阅了与本课题内容相关的资料以及学习了实现本系统所需的相关技术,对系统进行了相应的整体分析。系统主要实现以下功能:
 用户管理模块:当用户使用管理系统时,若没有账号就必须注册,然后使用相应的注册的用户名和密码才能登录系统;在用户管理模块中,普通用户有查询和修改个人信息的权限,管理员有查询员工、修改员工、添加员工、删除员工以及修改管理员密码权限。以不同身份登录系统,显示的界面也会不同;
 项目管理模块:普通用户的项目管理权限是查看与查询;管理员可以对项目进行相应的修改、删除等;
 邮箱管理模块:管理员和普通用户负责自己邮件的管理的相应管理;
 企业管理信息管理:用户可以访问到企业的各种新闻信息,同时也可以给公司留言,管理员可以即时的更新各种信息和管理留言板。
2 系统相关技术介绍
2.1 JSP技术
JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页 (​http:​/​​/​baike.baidu.com​/​view​/​348756.htm _blank​)技术标准。JSP技术有点类似ASP技术,它是在传统的网页 (​http:​/​​/​baike.baidu.com​/​view​/​828.htm _blank​)HTML文件(*.htm,*.html)中插入Java程序段 (​http:​/​​/​baike.baidu.com​/​view​/​1005329.htm _blank​)(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统 (​http:​/​​/​baike.baidu.com​/​view​/​880.htm _blank​)上运行。JSP技术有以下优势:
  (1)一次编写,到处运行。除了系统之外,代码不用做任何更改。
  (2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP (​http:​/​​/​baike.baidu.com​/​view​/​2616.htm _blank​)/.net的局限性是显而易见的。
  (3)强大的可伸缩性。从只有一个小的Jar (​http:​/​​/​baike.baidu.com​/​view​/​50457.htm _blank​)文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息 (​http:​/​​/​baike.baidu.com​/​view​/​89742.htm _blank​)处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。
(4)多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。
(5)支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。
2.2 B/S模式
B/S(Browser/Server,浏览器 (​http:​/​​/​baike.baidu.com​/​view​/​7718.htm _blank​)/服务器)模式又称B/S结构。它是随着Internet技术 (​http:​/​​/​baike.baidu.com​/​view​/​4632922.htm _blank​)的兴起,对C/S模式 (​http:​/​​/​baike.baidu.com​/​view​/​292856.htm _blank​)应用的扩展。在这种结构下,用户工作界面是通过IE浏览器 (​http:​/​​/​baike.baidu.com​/​view​/​529879.htm _blank​)来实现的。B/S模式最大的好处是运行维护比较简便,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据;最大的缺点是对企业外网环境依赖性太强,由于各种原因引起企业外网中断都会造成系统瘫痪。
B/S结构的优点:
  (1)具有分布性特点,可以随时随地进行查询、浏览等业务处理。
  (2)业务扩展简单方便,通过增加网页即可增加服务器功能。
  (3)维护简单方便,只需要改变网页,即可实现所有用户的同步更新。
  (4)开发简单,共享性强
B/S 模式的缺点:
  (1)个性化特点明显降低,无法实现具有个性化的功能要求。
  (2)操作是以鼠标为最基本的操作方式,无法满足快速操作的要求。
  (3)页面动态刷新,响应速度明显降低。
  (4)无法实现分页显示,给数据库访问造成较大的压力。
(5)功能弱化,难以实现传统模式下的特殊功能要求。
2.3 SQL Server 2005
SQL Server 是一个关系数据库管理系统 (​http:​/​​/​baike.baidu.com​/​view​/​687948.htm _blank​)。它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server在UNIX 操作系统 (​http:​/​​/​baike.baidu.com​/​view​/​880.htm _blank​)上的应SQL Server安装界面用。
2.4 JQuery
Jquery是继prototype之后又一个优秀的Javascrīpt框架。它是轻量级的js库(压缩后只有21k) ,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jQuery使用户能更方便地处理HTML documents、events,实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。
2.5 正则表达式
在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
一个正则表达式,就是用某种模式去匹配一类字符串的一个公式。正则表达式由一些普通字符和一些元字符 (​http:​/​​/​baike.baidu.com​/​view​/​1061241.htm _blank​)(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。
2.6 JavaScript
Javascript是一种由Netscape (​http:​/​​/​baike.baidu.com​/​view​/​153922.htm _blank​)的LiveScript (​http:​/​​/​baike.baidu.com​/​view​/​2373233.htm _blank​)发展而来的原型化继承的面向对象 (​http:​/​​/​baike.baidu.com​/​view​/​125370.htm _blank​)的动态类型的区分大小写的客户端脚本语言 (​http:​/​​/​baike.baidu.com​/​view​/​76320.htm _blank​),主要目的是为了解决服务器端语言,比如Perl (​http:​/​​/​baike.baidu.com​/​view​/​46614.htm _blank​),遗留的速度问题,为客户提供更流畅的浏览效果。当时服务端需要对数据进行验证,由于网络速度 (​http:​/​​/​baike.baidu.com​/​view​/​1065551.htm _blank​)相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是Netscape的浏览器Navigator (​http:​/​​/​baike.baidu.com​/​view​/​887414.htm _blank​)加入了Javascript,提供了数据验证 (​http:​/​​/​baike.baidu.com​/​view​/​3248821.htm _blank​)的基本功能。
JavaScript是一种基于对象和事件驱动 (​http:​/​​/​baike.baidu.com​/​view​/​536048.htm _blank​)并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。
2.7 CSS
CSS(Cascading Style Sheet,可译为层叠样式表”或级联样式表”)是一组格式设置规则,用于控制Web页面的外观。通过使用CSS样式设置页面的格式,可将页面的内容与表现形式分离。页面内容存放在HTML文档中,而用于定义表现形式的CSS规则则存放在另一个文件中或HTML文档的某一部分,通常为文件头部分。将内容与表现形式分离,不仅可使维护站点的外观更加容易,而且还可以使HTML文档代码更加简练,缩短浏览器的加载时间。
3 系统分析
3.1 需求分析
我国不少企业都实行了企业信息管理系统,即把信息得到的自主权交给员工。在这里,员工得到信息时的制约因素比较复杂,工作量也很大,而且有些信息往往在较短的时间内就会失效。运用计算机辅助管理,开发自主信息系统,即能实时地对大量信息数据进行检验和统计,十分方便的输出结果,同时也避免了人工处理时产生的错误。可以提高管理工作的效率、提高信息的开放性、改善员工对其最新信息查询的准确性。
通过对系统需求进行分析,我们确定系统中的二类用户:管理员、普通用户(员工)。各类用户的具体描述如下:
(1) 管理员
描述:管理员维护整个系统,包括设置自身和员工的信息以及相应的企业信息。
(2) 普通用户(员工)
描述:普通用户(员工)负责查询企业相应的信息,以及自身的基本信管理。
3.2 可行性分析
1.经济性:
系统界面友好,操作简单,系统的配置要求不高,实现可行,因此经济可行。该系统可以容易实现员工,管理员与公司之间的联系,提高办事效率和周期。
2.技术性:
随着互联网的蓬勃发展,越来越多的机构将信息管理与Internet融合到一起,以方便企业信息管理。在这样一个社会背景下,基于Windows和SQL Server 2005 ,运用先进的JSP技术,采用B/S模式开发的雅致企业信息管理系统,将员工和企业有机地结合在一起,有效地提高管理水平和效率。随着科学技术的不断提高,计算机科学日渐成熟,基于以上的技术在现今比较容易实现。
3.操作性:
   该系统操作方便,简单。
3.3 系统配置要求
硬件平台:
CPU:P4 1.8GHz以上;
内存:256MB以上。
软件平台:
操作系统:Windows 2000 Server及以上;
数据库:SQL Server 2005;
主要开发工具:UltraEdit;
JSP 服务器:Tomcat 6.0。
4 系统设计
4.1 系统总体结构设计
本系统实现了四个管理模块:用户管理模块、项目管理模块、邮件管理模块以及企业管理模块。由于登录人的权限的不同,该四个模块会根据登录人的身份的差别而进行不同的显示,本系统最终是要实现企业信息的优化管理。
其结构图见图4.1。
图4.1
其系统操作流程图见图4.2。
图4.2
4.2 数据库设计
雅致软件公司信息管理系统的要求是要准确快捷地处理员工和企业之间的交流以及管理相应的企业的信息。首先,作为一个管理系统需要有相应的管理员,而管理员需要有管理员编号和密码,以便登录和管理系统;其次,要有员工,员工也要有用户编号和密码以及其他各种信息;最后,由于在该系统中分为四个模快,每个模块都需要有相应的数据库表,所以应根据相应的需求作出相应的设计,例如,在邮件管理中,需要邮件表等。
由此总结出如下信息:
用户分为管理员和普通用户(员工)。
管理员,其管理权限最广,负责整个系统的安全和维护;
员工,主要负责自身信息的修改和查询相应的企业或者其他信息。
经过对上述系统功能的分析和需求总结,设计如下数据表:
管理员表、普通用户表、邮件信息表、项目组信息表、留言表、回复留言表、新闻表、公司部门信息表。
管理员表(admin)主要用于存储管理员的编号和密码的相关信息,负责登录的验证,其具体结构见表4.1。
表 4.1
字段名称 数据类型 字段长度 是否为空 说明
userno varchar 8 No Key
password varchar 15 Yes 密码
普通用户表(myuser)主要用于存储普通用户的编号和密码等相关信息,其中的相关信息是在用户注册时由注册人员进行添加完善或者由管理员进行添加完善,具体结构见表4.2。
表 4.2
字段名称 数据类型 字段长度 是否为空 说明
userno varchar 8 No Key
password varchar 15 No 密码
name varchar 50 No 姓名
adept varchar 10 No 所属部门
sex varchar 5 No 性别
mobile varchar 15 No 手机号码
address varchar 50 Yes 联系地址
telephone varchar 15 Yes 联系电话
time datetime 8 Yes 最后更新时间
mail varchar 20 Yes 邮箱
item varchar 20 Yes 现属项目组
项目信息表(items)主要用于存储公司项目的相关信息,其中的相关信息是由管理员进行添加完善,其具体结构见表4.3。
表 4.3
字段名称 数据类型 字段长度 是否为空 说明
name varchar 10 No Key
master varchar 10 Yes 项目负责人
affect varchar 100 Yes 项目主要内容
部门信息表(adepts)主要用于存储公司项目的相关信息,其中的相关信息是由管理员进行添加完善,其具体结构见表4.4。
表 4.4
字段名称 数据类型 字段长度 是否为空 说明
name varchar 10 No Key
master varchar 10 Yes 部门负责人
affect varchar 1000 Yes 部门负责内容
邮件信息表(mail)主要用于存储普通用户或者管理员的相关邮件信息,其中的相关邮件信息是由管理员或者普通用户进行收发邮件时产生,其具体结构见表4.5。
表 4.5
字段名称 数据类型 字段长度 是否为空
id int 4 No Key
title varchar 20 No 邮件主题
faid varchar 8 No 发件人
shouid varchar 8 No 收件人
time datetime 8 No 发送时间
subject varchar 1000 No 邮件内容
isread int 4 No 是否已读
留言表(liuyan)主要用于存储普通用户的相关留言,其相关留言是由普通用户进行留言时产生,其具体结构见表4.6。
表4.6
字段名称 数据类型 字段长度 是否为空
id int 4 No Key
name varchar 10 No 留言人
title varchar 20 No 留言主题
time datetime 8 No 留言时间
subject varchar 100 No 留言内容
回复留言表(huifu)主要用于存储管理员对相关留言的回复信息,其具体结构见表4.7。
表4.7
字段名称 数据类型 字段长度 是否为空 说明
id int 4 No Key
name varchar 10 No 回复人
idd int 4 No
time datetime 8 No 回复时间
subject varchar 100 No 回复内容
新闻表(news)主要用于存储公司通知或新闻的相关信息,其相关信息是由管理员进行发布或管理时产生,其具体结构见表4.8。
表4.8
字段名称 数据类型 字段长度 是否为空 说明
id int 4 No Key
title varchar 20 No 主题
subject varchar 1000 No 内容
userno varchar 8 No 发布人
time datetime 8 No 发布时间
5 系统实现
5.1 数据库实现
经过数据库设计的具体分析,本系统应含有以下8个数据库表,其包含的内容为:管理员表(admin):管理员编号(userno)、密码(password)
员工信息表(myuser):用户编号(userno)、密码(password)、姓名(name)、所属部门(adept)、性别(sex)、手机号码(mobile)、联系地址(address)、联系电话(telephone)、最后修改时间(time)、邮箱(mail)、现属项目组(item)
项目信息表(items):项目名称(name)、项目负责人(master)、项目主要内容(affect)
公司部门表(adepts):部门名称(name)、部门负责人(master)、部门主要职责(affect)
邮件信息表(mail):邮件ID(id)、邮件主题(title)、发件人(faid)、收件人(shouid)、发送时间(time)、邮件内容(subject)、是否已读(isread)
留言表(liuyan):留言ID(id)、留言人(name)、留言主题(title)、留言时间(time)、留言内容(subject)
回复留言表(huifu):回复ID(id)、回复人(name)、留言ID(idd)、回复时间(time)、回复内容(subject)
新闻表(news):新闻ID(id)、主题(title)、发布人(name)、新闻内容(subject)、发布时间(time)
由于本系统使用JDBC技术实现对数据库中数据的具体操作,简单地说,JDBC只要能完成三件工作:
 连接到数据库
 向数据库发送SQL语句
 处理查询结果
其具体操作如下:
在连接到数据库之前先要建立JDBC-ODBC桥接器,即加载桥接器驱动程序。
try{ Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); } //加载java驱动
catch(ClassNotException e){ }
连接到数据库,首先使用包java.sql中的Connection类声明一个对象,然后再使用类DriverManager调用它的静态方法getConnection创建这个连接对象:
try{Connection con =
DriverManager.getConnection(jdbc:odbc:数据源名称,登录名,密码);}
catch(SQLException e){ }
向数据库发送SQL语句,首先使用Statement类声明一个SQL语句对象,然后通过刚才创建的连接数据库的对象con调用方法createStatement()创建这个SQL对象:
try{Statement sql=con.createStatement(); }
catch(SQLException e){ }
返回查询结果,有了SQL对象后就可以调用方法实现对表的数据的操作,并将查询的结果存放在ResultSet类声明的对象中:
ResultSet rs=sql.executeQuery(SQL语句”);
5.2 系统主要功能模块的实现
5.2.1 系统登录和注册页面的实现
登录页面的具体实现由三个文件组成:登录界面(index.jsp)、登录验证界面(yanzheng.jsp)和注册界面(regester.jsp)、注册验证界面(do_regester.jsp)。登录界面和注册主要实现画面的显示和用户的输入提交,以及一部分的输入验证;登录验证界面和注册验证界面实现登录和注册的数据库验证以及画面提交的验证。四个界面互相依托,缺一不可。
在登录页面和注册页面的实现上,以蓝色风调为主,画面显示明朗,给人以轻松、惬意。其登录界面如图5.1。
图5.1
其注册界面显示如图5.2。
图 5.2
以登录界面为例,在登录界面(index.jsp)的代码实现中,除了运用了相应的JSP语句之外,在输入的验证中,使用了JavaScript语言和JQuery相应的语法知识,利用了各自的优点,进行了良好的实现。例如,在初次显示该页面时,该页面的焦点会集中在用户这个输入框上,以便登录人的输入;在用户未输入的情况下,或者输入过长的情况下,会出现相应的信息,提示用户的输入,其代码为:


…… ……
<%try{ //验证返回值的画面显示
if( err.equals(1)) out.print(用户名错误!);
if(err.equals(2)) out.print(密码错误!);
}catch(Exception e){}%>
在上述代码中还有对验证界面的返回值(err)的获取,在验证界面(yanzheng.jsp)的实现上,如果用户名或者密码载不正确或者不存在的情况下的时候,验证界面就会向登录界面返回,并提交相应的值,以供用户的重新输入。其代码实现如下:
if(!rs.next()) //在用户名不存在的情况下,返回相应值,并跳到登录界面
{ %>


<% }
else{ //利用session对象传值,以便以后的利用
session.setAttribute(userID,uname);
session.setAttribute(type,uno);
pwd1=(String)rs.getString(password).trim();
if(pwd1.equals(pwd))
{%> <%}
else{%> //在密码不正确的情况下,返回相应值,并跳到登录界面


<%}}}
catch(SQLException e1){ out.print(出错了~~~ + e1);} %>
在注册界面和注册界面的验证的代码实现上,同样运用了JavaScript和JQuery的相应知识来限制用户的输入,与登录界面的实现大致相同,这里不再赘述。值得一提的是,在注册(regester.jsp)的实现上,加入了日期的输入,以此来实现最后修改的日期。该日期不需要用户的输入,是系统自动获取的,在该日期的处理上,采用了与登录代码不同的方式,其代码如下所示:
<%@ page import=java.util.Date %> //导入日期处理的相应的包
<%@ page import=java.text.DateFormat%>
<%@ page import=java.text.*%> ……
<%! DateFormat df = new SimpleDateFormat(yyyyMMdd);%> //格式化处理时间
<%! String datetime = df.format(new Date());%> //获取系统的格式化具体时间
5.2.2 系统主页面的实现
当用户登录成功之后,系统会自动跳转到主页面上,由于登录人权限不同,在主页面的实现上,页面的显示也会出现相应的调整,其不同之处主要体现在页面的中左部显示部分。例如,当你以管理员身份登录并成功之时,其页面显示如图5.3。
图5.3
当你以普通用户身份登录并成功之时,其页面显示如图5.4。
图5.4
从以上画面中我们可以看到,在画面的中左部会有明显的不同。在该页面的显示上,画面上部会出现当前用户的登录号,同时呢,在上部的右侧会出现当前系统的经过格式化处理的日期。
主页面有三个部分组成;上部、中部以及下部,其实现是由三个不同的框架组成:上部框架(topFrame)由top.jsp构成、中部框架(mainFrame)由center.html构成、底部框架(bottomFrame)由down.html构成。在各部分的实现上,应用了CSS格式设置规则,以此来控制界面的显示。
在top.jsp界面的代码实现中,应用了JavaScript脚本语言,以此来控制各个按钮以及控件的实现,例,在点击退出系统”按钮时,会触发相应的事件,其代码实现为:

…… …… //在各自的事件中写入相应的触发函数
 

main_18.gif



其显示登录用户的实现是通过session对象进行传值的,其代码为
<% str = (String)session.getAttribute(userID);%> //获得session属性值
…… ……
 
当前用户:<%=str%>
//显示相应的属性值
值得一提的是,在事件处理上,同样采用了格式化的处理,其具体实现为:
<%! DateFormat df = new SimpleDateFormat(yyyy年MM月dd日 E);%>
<%! String datetime = df.format(new Date());%> …… ……
今天是:<%=datetime%>
在center.html界面的代码实现中,把中部部分划分为两个框架(I1、I2),I1负责左边的显示,I2负责右边的显示。这两个框架是互相依存的,I1控制着I2的具体显示,I2的显示体现出I1得结果。I1框架是由left.jsp和一张按钮图片构成的,按钮图片控制着left.jsp的显示与不显示;而I2则是由不同的页面构成。
其I1按钮图片的实现,利用了JavaScript脚本语言,为:
…… ……
main_55.gif //加载点击函数
根据不同的权限,left.jsp的显示不尽相同,点击不同的标签,显示依旧不同,其实现为:
function showsubmenu(sid) //当点击标签时,子标签的显示
{ whichEl = eval(submenu + sid);
imgmenu = eval(imgmenu + sid);
if (whichEl.style.display == none){
eval(submenu + sid + .style.display=\;);
imgmenu.background=images/main_47.gif;}
else{eval(submenu + sid + .style.display= one;);
imgmenu.background=images/main_48.gif;}}
function yincang(){ //根据权限的不同进行不同的标签显示
var typee = <%=(String)session.getAttribute(type)%>;
if(typee == admin){
document.getElementById(tr1).style.display=none;
document.getElementById(tra1).style.display=;
document.getElementById(tra2).style.display=;
document.getElementById(tru1).style.display=none;}
else if(typee == myuser){
document.getElementById(tr1).style.display=;
document.getElementById(tra1).style.display=none;
document.getElementById(tra2).style.display=none;
document.getElementById(tri1).style.display=none;
document.getElementById(tri2).style.display=none;
document.getElementById(tr2).style.display=none;
document.getElementById(tra3).style.display=none;}}
5.2.3 用户管理模块的实现
用户管理模块主要实现以下几个功能:查询用户、添加用户、修改删除用户、个人资料修改以及修改管理员密码。其中添加用户、修改删除用户和修改管理员密码权限由管理员进行操作。由于管理员没有个人信息,因此个人资料修改由普通用户去具体实现。
在查询用户功能(userchaxun.jsp)模块上,包含两部分的内容:上部(查询部)和下下部(显示结果部)。查询部由普通JSP结构组成,要求用户输入查询的内容,如果没有输入的内容,则默认全部查询;显示结果部,用于用户的查询结果的显示,其界面显示如图5.5所示。
图 5.5
查询部的代码实现如下:
  //显示提交页面和提交相应值










 
用户编号:
用户姓名:
部门:
所在项目组:

查询结果部的实现比较复杂,除了运用到各种基本JSP语句之外,还运用了各种脚本语言来判断结果的正确输出。当结果集正确输出之时,点击用户编号可以进行用户的详细信息的查看。由于本结果的显示设定为每页显示5行数据,所以设定了翻页的功能,以此来查看未查看到的内容。对于查询的输出,支持单独项目和混合项目的查询。其点击用户编号的函数具体实现为:
function tableclicking(){ //鼠标点击用户编号之时触发函数的实现
source=event.srcElement;
if (source.tagName==TR||source.tagName==TABLE)
return;
while(source.tagName!=TD)
source=source.parentElement;
source=source.parentElement;
cs = source.children; //确定要查看的内容
if(confirm(你要查看+cs[1].innerText+的基本信息吗?)){
window.location=userchakan.jsp?ID=+cs[1].innerText;}
return false;}

…… ……
翻页显示比上述复杂,首先需要查询相关的数据库,然后经过计算得出显示的页数。翻页时要在点击按钮之时触发,其具体实现为:
<%! static int showPage=1;//当前显示的初始页面
String sno,uname,adept,nowObject; //获得提交值
%>
<% Connection con; Statement sql; ResultSet rs;
int jilu=0; //总的记录数
int pageSize = 5;//每页显示的记录数
int pageCount = 0;//分页后的总页数
int count = 0; //checkbox的标签
…… ……
if(!sno.equals()){ //实现单项目查询和多项目的混合查询
queryword = select * from myuser where userno = + + sno + ;
if(!uname.equals())
queryword = queryword + and name = + + uname +;
if(!adept.equals())
queryword = queryword + and adept = + + adept +;
if(!nowObject.equals())
queryword = queryword + and item = + + nowObject +;
}else{
if(!uname.equals()){
queryword = select * from myuser where name = + + uname + ;
if(!adept.equals())
queryword = queryword + and adept = + + adept +;
if(!nowObject.equals())
queryword = queryword + and item = + + nowObject +;
}else{
if(!adept.equals()){
queryword = select * from myuser where adept = + + adept + ;
if(!nowObject.equals())
queryword = queryword + and item = + + nowObject +;
}else{
if(!nowObject.equals())
queryword = select * from myuser where item = + + nowObject + ;
else{ queryword = select * from myuser;}}}}
con=DriverManager.getConnection(jdbc:odbc:sun,sa,); sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); //产生可滚动的结果集
rs=sql.executeQuery(queryword);
rs.last();
jilu = rs.getRow(); //获得结果集的个数
rs.beforeFirst();
pageCount = (jilu%pageSize==0)?(jilu/pageSize):(jilu/pageSize+1); //获得总页数
String yeshu = request.getParameter(a); //设置当前页数
if(yeshu == null || yeshu == ){
yeshu = 1; }
if(yeshu.equals(shou)){
yeshu = 1;
}else if(yeshu.equals(shang)){
if(showPage - 1 <= 0)
yeshu = String.valueOf(showPage);
else{ yeshu = String.valueOf(showPage - 1); }
}else if(yeshu.equals(xia)){
if(showPage > pageCount){
yeshu = 1;
}else{ yeshu = String.valueOf(showPage + 1); }
}else if(yeshu.equals(wei)){
yeshu = String.valueOf(pageCount); }
try{
showPage = Integer.parseInt(yeshu);
if( showPage > pageCount){
showPage = pageCount;
}else if(showPage < 1){
showPage = 1; }
}catch(Exception e){%>

<% showPage = 1; }
在添加用户功能(adduser.jsp)模块上,其实现与用户注册之时大同小异,这里不再赘述。修改删除用户(tab.jsp)的实现是该模块的精髓,该模块利用结果集得查询,进入相应的修改和删除,实现起来顺手顺利。在该功能的实现上使用了大量的JavaScript语句和JQuery语句,两者相辅相成,构成改模块的中心。其界面效果如
图5.6。
图 5.6
在该模块中,可以点击右侧的编辑键进行用户信息的修改,点击删除键删除相应行的用户,表的上侧有全选和取消全选,可以点击产生效果,表的左侧有多选框,选择多个项目,点击右上角的删除进行多项删除。其具体实现为:
function bianjiclicking(){ //编辑某用户的信息的实现
source=event.srcElement;
if (source.tagName==TR||source.tagName==TABLE)
return;
while(source.tagName!=TD)
source=source.parentElement;
source=source.parentElement;
cs = source.children;
if(confirm(你确定要编辑+cs[2].innerText+的基本信息吗?))
window.location=xiugaiuser.jsp?no=he&ID=+cs[2].innerText+&str2=<%=str2%>;
return false;}
function shanchuclicking(){ //删除某用户的信息的实现
source=event.srcElement;
if (source.tagName==TR||source.tagName==TABLE)
return;
while(source.tagName!=TD)
source=source.parentElement;
source=source.parentElement;
cs = source.children;
if(confirm(你确定要删除+cs[2].innerText+的基本信息吗?)){
window.location=shanchuuser.jsp?ID=+cs[2].innerText+&str2=<%=(String)session.getAttribute(type)%>; }
return false;}
function xuanze(){ //全部选择的实现
$(input[name=checkbox2]).each(function() {
$(this).attr(checked, $(#checkbox62).attr(checked));
}); }
function quxiao(){ //取消选择的实现
if($(#checkbox63).attr(checked))
$(input[name=checkbox2]).each(function() {
$(this).attr(checked, false);
}); }
function shanchu(){ //删除多个用户的信息的实现
var chuan = ,chuan1 = ; //选中删除的选项
var count = 1;
$(input[name=checkbox2]).each(function() {
if($(this).attr(checked)){
source = $(this)[0].parentElement;
while(source.tagName!=TD)
source = source.parentElement;
source = source.parentElement;
cs = source.children;
chuan = chuan + &a + cs[1].innerText + = + cs[2].innerText
chuan1 = chuan1 + cs[2].innerText + ,;} });
if(chuan == ){
alert(你还没有选中要删除的内容!请选择!);
return true; }
chuan = chuan.substring(1,chuan.length);
if(confirm(你确定要删除+chuan1+的基本信息吗?)){
window.location=duoxiangshanchuuser.jsp?+chuan+&str2=<%=(String)session.getAttribute(type)%>; }
return false; }
在编辑页面显示时,每一个编辑框会显示数据库中存有的信息的详情,但点击修改按钮时,系统会提交修改的内容并保存到数据库中。如图5.7。
图 5.7
在修改过程中,会有相应的提示。修改密码之时需要有进入另外的密码修改页面进行修改,目的是为了防止密码修改的模糊性。修改用户的个人信息和修改管理员密码与上述大致相同,模式基本一样,以此是想不同的功能。
在项目管理模块中,其信息的修改、查询以及添加等与用户管理大致相同,这里不再赘述。
5.2.4 邮件管理模块的实现
邮件管理模块包括两个功能:发邮件和收邮件。其实发邮件的数据库表与收邮件的数据库表是同一个,即mail表。这样做,不但可以减少表的使用,而且易于管理。
其发邮件的界面显示简单、易用,如图5.8。
图 5.8
从上图可以看到,不需要填写发件人,因为发件人默认为登录用户,这一点可以方便用户的发送,其代码实现为:
String strr = (String)request.getParameter(str1); //得到发送人
…… ……
> //隐藏发件人,提交到发送界面
在收件箱的实现中,利用了与用户查看模块相同的成分,但值得一提的是,在邮件邮件箱的回复功能的实现上所应用的不同,应用了与隐藏发件人相同的技术,但在回复时各文本框的书写不太一样,其收件箱的界面显示如图5.9。
图5.9
其回复界面的显示与发送界面有些不同,其界面如图5.10。
图 5.10
以回复界面为例,其代码实现为:
String strID = (String)request.getParameter(ID); //得到收件人
String title = (String)request.getParameter(title); //得到发送主题
if(strID == null){ strID = ; } //在没有主题和收件人的情况下
if(title == null){ title = ; }
else{ title=new String(title.getBytes(ISO-8859-1),gbk);
title = 回复: + title; }%> …… ……
邮件主题: //相应赋值
> *
收件人:
> *
5.2.5 企业管理模块的实现
企业管理模块包括三个功能:企业基本信息、用户留言中心、企业新闻管理以及企业新闻浏览。对于不同的身份的登录,相应的页面会有所不同。在用户留言中心界面中,普通用户点击进入后是留言界面,若不想留言,则可以点击查看留言;管理员没有留言权限,所以点击进入后,直接进入管理留言界面。
企业基本信息模块,是对企业一些简单的介绍,帮助用户了解一部分的企业文化,其实现较为简单,这里同样不再赘述。
用户留言中心功能的实现是本模块的重心,用户可以在权限允许范围内,进行留言的相对管理。当普通用户想要删除或者回复留言之时,会有相应的系统提示,如图5.11。
图5.11
上述代码实现为:
type=(String)request.getParameter(str2); //执行人身份
if(type.equals(myuser)){%>

其留言板实现和新闻管理的实现与邮件管理模块的收发邮件大同小异,这里不再具体说明。
6 技术难点及其解决方法
由于对JSP技术了解的局限性,加之自己动手开发软件的经验尚少,在软件开发过程中遇到各种各样的问题也很平常。其问题主要集中在语言的应用上和软件开发工具的使用上。
 数据库连接问题:在数据库连接过程中,按照参考资料的具体操作步骤,在数据库连接过程中还是出现了错误,原因是由于在创建数据源时,应选用系统DSN,而采用用户DSN时会出项连接错误的提示。
 数据库文字乱码问题:在从数据库中取中文字符数据时,出现了乱码的问题,开始时不知道如何去解决,在翻阅了大量的资料之后,了解到了文字编码出现了问题,于是在中文字符输入输出时,加上了这样的语句:
Words=new String(words.getBytes(ISO-8859-1),gbk);
 Session对象属性丢失问题:在系统开发的过程中,出现了session对象的属性值的丢失,在出此等问题之时,一头雾水,不知从何下手,后来从网上查知原因不少,很有可能是浏览器出的问题。在解决该问题时,采用了session对象属性的重写和提交,这样问题得到了解决。
 编辑器的使用问题:在使用UltraEdit使用时,总是会出现备份,对于页面的编写造成了一定的困扰。经过网上查询,对编辑器的了解进一步的加深,相信对以后的使用会有所改观。
结 论
进过几个月的努力,基本完成了企业信息管理系统,并在具体的环境下运行良好。通过该设计的具体开发,亲自体会到了开发软件的复杂性。要做好一个好的软件,就必须要进行全面细致的调查,要全面的考虑软件的可行性,这就要求要有一定的开发经验和对开发工具的深入了解。
本次毕业设计的工作已基本完成,因为本系统使用于相对严肃的毕业设计中,本人采用了简明,清晰的风格。在功能上还算比较完整。虽然对本系统的功能完整性做出了很大的努力,但是仍然存在一些不足之处,由于开发人员进行软件开发的经验不是很多,编写的代码可读性稍差一些。
通过本次毕业设计,自己学习并掌握了一些关键技术:JavaScript、JQuery等等。在开发过程中获得的乐趣颇多,相信对自己以后工作和学习会有不小得到帮助。
参 考 文 献
1 武延军,黄飞跃. 精通JSP编程技术. 北京:人民邮电出版社,2001
2 柏亚军. JSP编程基础及应用实例集锦.北京:人民邮电出版社,2001
3 清宏计算机工作室.JSP编程技巧.北京:机械工业出版社,2000
4 周影 .网络编程语言JSP实例教程[M].北京:电子工业出版社,2003
5 张爱平 (​http:​/​​/​wenwen.soso.com​/​z​/​Search.e?sp=S%E5%BC%A0%E7%88%B1%E5%B9%B3&ch=w.search.yjjlink&cid=w.search.yjjlink _blank​),赖欣. 在JSP中调用JavaBean实现Web数据库访问. 计算机时代, 2007
6 仲伟和. 基于JSP网页自动生成工具的设计与实现. 科技信息 (​http:​/​​/​wenwen.soso.com​/​z​/​Search.e?sp=S%E7%A7%91%E6%8A%80%E4%BF%A1%E6%81%AF&ch=w.search.yjjlink&cid=w.search.yjjlink _blank​)(科学教研), 2007
7 李佳 (​http:​/​​/​wenwen.soso.com​/​z​/​Search.e?sp=S%E6%9D%8E%E4%BD%B3&ch=w.search.yjjlink&cid=w.search.yjjlink _blank​). 基于JSP技术的网页自动生成工具的实现. 电脑开发与应用, 2009
8 梁玉环, 李村合, 索红光. 基于JSP的网站访问统计系统的设计与实现. 计算机应用 (​http:​/​​/​wenwen.soso.com​/​z​/​Search.e?sp=S%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%BA%94%E7%94%A8&ch=w.search.yjjlink&cid=w.search.yjjlink _blank​)研究, 2004
9 熊皓, 杨月英. JSP自动生成工具的设计与实现. 黄石理工学院 (​http:​/​​/​wenwen.soso.com​/​z​/​Search.e?sp=S%E9%BB%84%E7%9F%B3%E7%90%86%E5%B7%A5%E5%AD%A6%E9%99%A2&ch=w.search.yjjlink&cid=w.search.yjjlink _blank​)学报, 2005
10 韩世芬. 基于JSP网页自动生成工具的开发. 科技资讯 (​http:​/​​/​wenwen.soso.com​/​z​/​Search.e?sp=S%E7%A7%91%E6%8A%80%E8%B5%84%E8%AE%AF&ch=w.search.yjjlink&cid=w.search.yjjlink _blank​), 2006,(17)
11 万晓凤, 谢毅. 基于JSP的电子政务 (​http:​/​​/​wenwen.soso.com​/​z​/​Search.e?sp=S%E7%94%B5%E5%AD%90%E6%94%BF%E5%8A%A1&ch=w.search.yjjlink&cid=w.search.yjjlink _blank​)系统通知模块的设计. 南昌水专学报, 2004
12 马云飞 (​http:​/​​/​wenwen.soso.com​/​z​/​Search.e?sp=S%E9%A9%AC%E4%BA%91%E9%A3%9E&ch=w.search.yjjlink&cid=w.search.yjjlink _blank​), 张良 (​http:​/​​/​wenwen.soso.com​/​z​/​Search.e?sp=S%E5%BC%A0%E8%89%AF&ch=w.search.yjjlink&cid=w.search.yjjlink _blank​)均. 利用JSP开发动态Web应用系统. 现代计算机 (​http:​/​​/​wenwen.soso.com​/​z​/​Search.e?sp=S%E7%8E%B0%E4%BB%A3%E8%AE%A1%E7%AE%97%E6%9C%BA&ch=w.search.yjjlink&cid=w.search.yjjlink _blank​), 2001
13 叶俊民,汪望珠.面向对象软件工程.第二版.清华大学出版社,2006,9
14 郑阿奇.SQL Server教程.清华大学出版社.2005,8
15 SQL Server数据库开发经典案例解析.清华大学出版社,2006
16 Nielsen Paul.SQL Server 2005宝典.北京:人民邮电出版社,2008
致 谢
在这三个月的学习时间里,在老师的悉心指导和本人的积极努力下,本人所开发的基于JSP的雅致信息管理系统终于取得了比较另人满意的结果,现就此次设计谈一下自己的体会:
首先,对个人的学习能力有一定的提高,为了这次设计,本人在图书馆和网上查阅了不少的资料,思考了不少的问题,以前的学习通常是老师手把手的把一门课程从头讲到尾,这次却基本上靠自己来系统地学习JSP网页制作,碰到问题的时候先通过查书或上机自己先试着解决,如果还不能解决的话,再请教导师。这样的过程锻炼可自己的独立解决问题的能力。
再者,通过本次毕业设计,我从对知识的低程度的了解到开发一个完整的系统,基本掌握了按照生命周期法进行软件开发和设计。通过上机实践,认识到自身的不足,以此激励自己不断的学习和实践。
毕业论文能够顺利完成,离不开学校提供的教学环境,各位教师的悉心指导和同学的热情帮助。在整个毕业设计过程中,老师以严谨的治学态度对我遇到的问题给予认真详细的解答,并对该论文从选题、构思到最后定稿的各个环节给予细心指引与教导,使我得以最终完成毕业论文设计。在此由衷感谢本人的指导教师的悉心指导,同时感谢在此期间给予过帮助的其他老师和同学。
雅致信息管理系统
用户管理
项目管理
邮件管理
企业管理
查询用户
添加用户
删除修改
修改密码
修改信息
查询项目
添加项目
修改删除
发送邮件
收件箱
用户留言
新闻管理
基本信息
查询浏览
输入用户名和密码
进入登录页面
判断输入
输入正确
主页面
结束
输入错误
重新输入
注册
PAGE
14
获取项目源文件,联系Q:1225467431,可指导其它毕设,课设

猜你喜欢

转载自blog.csdn.net/u010783228/article/details/86438987