《教师管理系统—用户管理模块论文设计.doc》由会员分享,可在线阅读,更多相关《教师管理系统—用户管理模块论文设计.doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目 录1 引言11.1 课题背景11.2 目的和意义11.3 开发工具及技术11.3.1 开发工具11.3.1.1 MyEclipse11.3.1.2 Tomcat21.3.1.3 MySql21.3.2 JSP21.3.3 JavaScript31.4软硬件需求42 需求分析52.1需求分析调研52.2可行性分析52.2.1技术的可行性52.2.2经济的可行性52.2.3操作可行性52.2.4法律的可行性62.3功能模块需求分析62.4设计的基本思想62.5性能需求62.5.1系统的安全性62.6界面需求73 系统分析与设计93.1数据库的分析与设计93.1.1数据库的概念结构设计93.1.
2、2数据库的逻辑结构设计93.1.3数据库的连接原理103.2中文乱码问题处理114 系统功能实现144.1系统登陆页144.2系统主页面164.3教师信息查询164.3.1教师信息查询164.3.2教师信息查询184.4教师工资查询234.5修改个人密码254.6安全退出系统265 软件测试275.1 软件测试的方法与步骤275.2 测试用例设计与测试用例的运行过程及测试结果分析285.2.1模块测试285.2.2集成测试295.2.3 验收测试295.3 评价296 结论31参考文献32致谢33第 II 页 共 II 页1 引言1.1 课题背景计算机网络技术的发展,给信息时代的人们带来了很大
3、的方便。如今在Internet上,随处都可以看到种类繁多的信息管理系统,比如,企业办公化自动管理系统,电子商务系统,学校教务管理系统等等。随着信息技术的日益发展已深入到社会的各个角落,教职工管理也不例外,尤其作为高等院校的教职工管理工作,是高校各项工作的重要组成部分,其管理能力和服务水平的高低直接关系到教职工的利益、正常的教学和整体办学水平,直接影响到人才的培养质量.目前,我校教职工管理工作还是存在着很多问题。我校教职工现为手工管理,效率低、易出错、手续繁琐,而且耗费大量的人力,物力,财力。基于以上等一些实际存在的情况,以及与我校管理人员的沟通反馈结果来看,他们希望有一个教师管理系统,能够实现
4、教职工智能化网络化功能。通过此系统,管理员人员可以对教职工的各项情况实行电脑化管理,这样可以提高工作效率,也使得教职工管理所需的各项信息能方便快速进行录入,查询,删除和更新,对相应关键数据也能够方便的统计结果并且以报表或者图形的方式展现出来1.2 目的和意义长久以来,教职工的管理工作大多数都采用的是传统的手工方式来记录相关信息,这种管理方式存在很多缺点,比如说,教职工信息、工资信息的录入,查询,更新,分析都要完全依赖管理人员的手工记录和人工分析,人工记录是相当麻烦的。为满足需求,决定采用各种编程语言JSP开发了基于B/S架构的教师管理系统,教师管理系统是涉及信息科学、数据计算和计算机技术的复杂
5、的人机交互系统。通过这些系统,可以对教职工和管理进行智能化管理,有效地记录并查询教职工的各项情况,为管理者提供了诸多方便。1.3 开发工具及技术1.3.1 开发工具此次设计主要采用MyEclipse加Tomcat后台服务器进行,设计过程中页面主要使用JSP技术完成,下面对MyEclipse、Tomcat和MySql数据库进行简要介绍。(1) MyEclipseMyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。MyEclipse企业级工作平台(MyEclipse Ente
6、rprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。(2) Tomcat Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。可以这样认为,当在一台机器上配置好Apahce服务器,可利用它响应对
7、HTML页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。(3) MySql MySql使用C和C+编写,并使用了多种编译器进行测试,保证源代码的可移植性;支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统;为多种编程语言提供了API;支持多线程,充分利用CPU资源;提供TCP/IP、ODBC和JDBC等多种数据库连接途径;可以处理拥有上千万条记录的大型
8、数据库。对于一般的个人使用者和中小型企业来说,MySql提供的功能已经绰绰有余,而且由于MySql是开放源码软件,因此可以大大降低总体拥有成本。1.3.2 JSPJSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段
9、可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端就是一个HTML文本,因此客户端只要有浏览器能浏览。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。JSP技术的优点:(1)一次编写,到处运行。
10、除了系统之外,代码不用做任何更改。 (2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/.net的局限性是显而易见的。 (3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。 (4)多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下 (5)支持服务器端组件。web应用需要强
11、大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。内部对象说明:request 客户端请求,此请求会包含来自GET/POST请求的参数; response网页传回客户端的响应;pageContext 网页的属性是在这里管理; session 与请求有关的会话; application servlet正在执行的内容;out 用来传送响应的输出流; config代码片段配置对象;pageJSP网页本身; exception针对错误网页,未捕捉的例外1.3.3 JavaScript
12、JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。在HTML基础上,使用Javascript可以开发交互式Web网页。Javascript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。在本系统中很多地方使用了javascript技术,比如说,检验用户输入数据的有效性,是否重
13、复,是否为空等等。1.4 软硬件需求 表 1.1 软硬件需求表 硬件需求CPUPentium以上计算机内存512M以上软件需求操作系统版本Windows XP /vista/Win7开发工具MyEclipse 6.0.1后台服务器Apache Tomcat 6.0开发语言Java浏览器IE6.02 需求分析2.1 需求分析调研在项目的开始是需求调研,并且走访了一些高校,经过一系列的调查与谈话中发现,现行的教职工管理工作还是存在着很多不足之处,手工记录的方式不易保存,容易丢失,同样也不利于数据的查询和统计分析。根据教职工的实际情况及调查结果,发现实现教职工管理的网络化、信息化是十分有必要的,因此
14、设计了本套教师管理系统。2.2 可行性分析开发任何一个系统,都会受到时间和资源上的限制。因此,在每一个项目开发之前,都要进行可行性分析,可以减少项目的开发风险,避免人力、物力和财力的浪费。下面就技术、经济、操作和法律四个方面来介绍。2.2.1技术的可行性本系统开发工具是MyEclipse和MySql数据库,开发语言是Java,主要使用了J2EE的技术,java是一种面向对象编程语言,简单易学而且灵活方便。大三时就学习了java课程,大四期间也系统的了解了J2EE的知识,教师管理系统总体上开发难度不高,数据库的设计和操作是本系统设计的核心。在大学期间学习过软件工程,软件测试,UML统一建模语言等
15、课程,每个学期也会完成对应的课程设计,具备一定的系统分析、设计和测试能力,因此,完成系统实现在技术上完全具有可行性。2.2.2经济的可行性如今是信息化时代,信息化管理可以使教职工管理工作更加系统化、快速化、全面化。这样可以为企业带来较高的工作效益和经济效益,在提高工作效率的基础上,可以考虑减少教职工管理人员的数量,本系统对计算机配置的要求不高,机房更换下来的低配置电脑都可以完全满足需要。所以在经济上具有完全的可行性。2.2.3操作可行性本系统操作简单,输入信息页面大多数都是下拉框的选择形式,在某些页面,信息可以自动生成,无需输入,时间的输入也是用的日历控件,操作简便,对操作人员的要求很低,只需
16、对WINDOWS操作熟练,加之对本系统的操作稍加培训即可工作,而且本系统可视性非常好,所以在技术上不会有很大难度。2.2.4法律的可行性本教师管理系统是自行开发的管理系统,是很有实际意义的系统,开发环境软件和使用的数据库都是开源代码,开发这个系统不同于开发普通的系统软件,不存在侵权等问题,即法律上是可行的。综上所述,开发一个教师管理系统与人工记录的方式相比具有速度更快,操作更准确,节省开支等有利之处,因此,建立一个教师管理系统是必要可行的。2.3 功能模块需求分析本系统最大的特点是使用操作简单、友好的提示信息。本系统将实现以下基本功能:(1)系统具有简洁大方的页面,使用简便,友好的错误操作提示
17、(2)教师用户具有教职工信息查询,所属学院信息等功能。2.4 设计的基本思想设计思想遵循以下几点:1. 采用B/S模式进行开发,其优点是后台与前台处理层次分明,而且符合众多已经习惯网页方式的用户。2. 采用面向对象的开发与设计理念。运用面向对象技术的前提是对整体系统的高度和准确抽象,通过它可以保证系统良好的框架,进而带来产品较强的稳定性和运行效率。3. 采用模块化设计。模块化设计要求将整个系统划分成基于小的模块,有利于代码的重载,简化设计和实现过程。4. 简单方便的系统界面。设计简单友好的系统界面,方便用户较快的适应系统的操作。5速度优先原则。由于此工具最重要的评测标准就是速度,因此在设计过程
18、中,具体过程尽量做到资源占用少,速度快。6设计既要突出重点,又要细致周到。要符合设计需求,在有可能改进的地方进行扩充,使系统更适应用户的需要。2.5 性能需求2.5.1系统的安全性教师管理系统在管理权限上要严格进行控制,具体要求如下:1.想登陆教师管理系统进行操作,必须有某些操作权限,没有权限的用户不能通过任何方式登录系统查看系统的任何信息和数据,以确保系统的严密性和安全性。2.5.2数据的完整性1.各种记录信息的完整性,信息记录内容不能为空2.各种数据间相互联系的正确性3.相同数据在不同记录中的一致性2.6 界面需求界面设计目前已经成为评价软件质量的一条重要指标,一个好的用户界面可以增加用户
19、使用系统的信心和兴趣,提高工作效率,JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。 创建动态页面非常方便。用户界面是指软件系统与用户交互的接口,通常包括输出、输入、人-机对话的界面格式等。1.输出设计输出是由计算机对输入的原始信息进行加工处理,形成高质量的有效信息,并使之具有一定的格式,提供管理者使用,这是输出设计的主要职责和目标。系统设计的过程正好和实施过程相反,并不是从输入设计到输出设计,而是从输出设计到输入设计,这是因为输出表格直接与使用者相联系,设计的出发点应当是保证输出表格方便地为使用者服务,正确及时反映和
20、组成用于各部门的有用信息。输出设计的原则是考虑既要全面反映不同管理层的各项需要,又要言简意赅,不要将用户需要和不需要的都提供给用户。2.输入设计输入数据的收集和录入是比较费事的,需要大量的人力和一定设备,并且容易出错。如果输入系统的数据有错误,则处理后的输出将扩大这些错误,因此输入数据的正确性对于整个系统质量的好坏是具有决定性意义的。输入设计的原则有如下几点:1)输入量应保持在能满足处理要求的最低限度。设计中可采用设置字段初值,下拉式数据窗口等方式尽量减少用户键盘输入量。输入量越少,错误率就越少,数据准备时间也减少。2)输入的准备及输入过程应尽量容易进行,从而减少错误的发生。3)应尽量早对输入
21、数据进行检查(尽量接近原数据发生点),以便使错误及时得到更正。4)输入数据尽早地用其处理所需的形式被记录,以避免数据由一种介质转移到另一种介质时需要转录而可能发生的错误。3 系统分析与设计3.1 数据库的分析与设计计算机信息系统以数据库为核心,在数据库管理系统的支持下,进行信息的收集、整理、存储、检索、更新、加工、统计和传播等操作。数据库已经成为现在信息系统等计算机系统的基础与核心部分。数据库设计的好坏直接影响到整个系统的质量和效率。数据库的设计一般经过规划、需求分析、概念设计、逻辑设计、物理设计5个步骤。3.1.1数据库的概念结构设计概念设计是指在数据分析的基础上自底向上的建立整个系统的数据
22、库概念结构,从用户的角度进行视图设计,然后将视图集成,最后对集成的结构分析优化得到最后结果。数据库的概念结构设计采用实体联系(E-R)模型设计方法。E-R模型法的组成元素有:实体、属性、联系,E-R模型用E-R图表示,是提示用户工作环境中所涉及的事物,属性则是对实体特性的描述。概念设计的目标是产生反映企业组织信息要求的数据库概念结构,即概念模式。概念模式是独立于数据库逻辑结构,独立于支持数据库的DBMS,不依赖于计算机系统的,根据以上对数据库的需求分析,并结合系统概念模型的特点及建立方法,建立E-R模型图。3.1.2数据库的逻辑结构设计我们知道,数据库概念模型独立于任何特定的数据库管理系统,因
23、此,需要根据具体使用的数据库管理系统的特点进行转换。即转化为按计算机观点处理的逻辑关系模型,E-R模型向关系数据库模型转换应遵循下列原则:*每一个实体要转换成一个关系*所有的主键必须定义非空(NOT NULL)*对于二元联系应按照一对多、弱对实、一对一、多对多等联系来定义外键。根据E-R模型,教师管理系统建立了以下逻辑数据结构,下面是各数据表的详细说明。(1) 教师信息表主要是记录了教师的基本信息。表结构如表3.1所示。表3.1教师信息表(t_jaoshi)列名数据类型长度允许空是否主键说明idint4否是IDgonghaovarchar50否否教师号xingmingvarchar50否否姓名
24、xingbievarchar50否否性别nianlingvarchar20否否年龄shengrivarchar20否否出生日期gongzuovarchar50否否工作时间zhuanyevarchar50否否专业zhaopianvarchar50否否照片beizhuvarchar50否否备注信息(2) 工资信息表主要是记录了教职工工资的基本信息。表结构如表3.2所示。表3.2工资信息表(t_gongzi)列名数据类型长度允许空是否主键说明idint4否是IDjsidvarchar50否否教师IDriqivarchar50否否工资月份gongzivarchar50否否工资数jiangjinvarc
25、har20否否奖金(6)管理员信息表主要记录的管理员的账号信息,包括用户名和密码,表结构如表3.3所示。表3.3管理员信息表(t_admin)列名数据类型长度允许空是否主键说明userIdint4否是编号userNamevarchar50否否用户名userPwvarchar50否否密码3.1.3数据库的连接原理采用JDBC连接数据库的方式,只需在工程中导入对应数据库的jar包,就可以方便的对数据库进行连接,在程序中,用Class.forName()方法来加载驱动程序,在用DriverManager的getConnection()方法就可以创建一个数据库连接。程序采用的是DAO模式来操作数据库,
26、DAO(Data Access Object,数据访问对象),是Java编程中的一种经典模式,已被广泛应用,也是J2EE架构中持久层框架的基础知识,基于分层次式的软件架构来实现对数据库的访问操作。DAO模式的主要思想就是从抽象数据源获取与操纵数据的方法。抽象数据的含义就是编写应用程序的程序员不必关心数据库的物理位置,已经是何种数据库,只需使用封装数据库中表示记录的数据对象即可。3.2 中文乱码问题处理在程序中经常会遇到中文乱码的情况,如果手动的在servlet和jsp页面进行设置,相当麻烦。因此,在程序的开始就写了一个过滤器SetCharacterEncodingFilter。在web.xml
27、中配置:SetCharacterEncodingFiltermyweb.util.filter.SetCharacterEncodingFilterencodinggb2312SetCharacterEncodingFilter/*/*表示工程下所有的页面都会有此过滤器的处理对应的SetCharacterEncodingFilter.java文件中的重要代码,在初始化init()方法中定义:public void init(FilterConfig filterConfig) throws ServletException this.filterConfig = filterConfig; t
28、his.encoding = filterConfig.getInitParameter(encoding); String value = filterConfig.getInitParameter(ignore); 在工具包util包中同样定义了DataFormate类来处理字符转换: public static String toUni(String gbStr) String uniStr = ; /*把字符串转换成uincode编码*/ if(gbStr = null) gbStr = ; try byte tempByte = gbStr.getBytes(GB2312); uni
29、Str = new String(tempByte,ISO8859_1); catch(Exception ex) return uniStr; /* 把字符串转换成Utf8编码*/ public static String toUtf8String(String s) StringBuffer sb = new StringBuffer(); for (int i = 0; i = 0 & c = 255) sb.append(c); else byte b; try b = Character.toString(c).getBytes(utf-8); catch (Exception ex
30、) System.out.println(ex); b = new byte0; for (int j = 0; j b.length; j+) int k = bj; if (k 0) k += 256; sb.append(% + Integer.toHexString(k). toUpperCase(); return sb.toString(); 4 系统功能实现在管理信息系统的生命周期中,仅过了需求分析、系统设计等阶段之后,便开始了系统实施阶段。在系统分析和设计阶段,系统开发工作主要是集中在逻辑、功能和技术设计上,系统实施阶段要继承此前面各个阶段的工作成果,将技术设计转化为物理实现,
31、因此系统实施的成果是系统分析和设计阶段的结晶。4.1 系统登陆页1.描述:为了保证系统的安全性,要先使用本系统必须先登陆到系统中。2.程序运行效果图如图4.1所示:图4.1 系统登陆页面设计3.在登陆页面输入用户名和密码以,选择登陆身份后,点击提交按钮,跳转到登陆的service中,在该service中会对用户名,密码,验证码进行判断,并根据相应的用户角色进入对应的页面,loginservice关键代码:public class UserInfoService Autowiredprivate UserInfoDao userInfoDao; public UserInfo login(Str
32、ing username, String password) throws Exception UserInfo user = this.userInfoDao.findUserInfoByUsername(username);if (null = user) throw new Exception(不存在用户名为 + username + 的用户信息!);if (!StringUtils.equals(user.getPassword(), DigestUtils.md5Hex(password) throw new Exception(密码错误!);return user;public b
33、oolean checkUsernameExists(String username) throws Exception UserInfo user = this.userInfoDao.findUserInfoByUsername(username);return null != user;Transactionalpublic void register(UserInfo user) throws Exception this.userInfoDao.save(user);Transactionalpublic void modifyPassword(UserInfo user, Stri
34、ng newPassword) throws Exception user.setPassword(DigestUtils.md5Hex(newPassword);this.userInfoDao.update(user);Transactionalpublic void removeUserInfo(Long id) throws Exception this.userInfoDao.delete(this.userInfoDao.findById(id);4.2 系统主页面1.描述:管理员主页面:左方页面展示了管理员可操作的七大功能,进入相关的管理页面可以链接到子菜单,并且高亮显示,每个管
35、理模块下面都有相应的子菜单。2.程序运行效果图如图4.2所示: 图4.2管理员主页面4.3 教师信息查询4.3.1教师信息查询1. 描述:管理员输入教师相关正确信息后点击录入按钮。2. 程序效果图如下图4.3所示: 图4.3 教师信息查询3.流程图如下图4.4所示:登陆系统管理员录入教职工信息系统验证教职工信息录入成功结 束通过未通过图4.4 教师录入流程图4.3.2教师信息查询1.描述:管理员点击左侧的菜单“教师信息查询”,页面跳转到做教师界面,调用后台的servlet类查询所有教师的信息。2.程序效果图如下图4.5所示图4.5 教师信息查询教师信息查询关键代码:public class T
36、eacherService Autowiredprivate TeacherDao teacherDao;Autowiredprivate UserInfoService userInfoService;Autowiredprivate TeacherWageDao teacherWageDao;public DataGrid findAllTeacher(int page, int rows) throws Exception Long total = this.teacherDao.count();List teachers = this.teacherDao.pageQueryByHql
37、(page, rows);return new DataGrid(total, teachers);public DataGrid findTeacherByCondition(String name, String specialty, int page, int rows) throws Exception Long total = this.teacherDao.countTeacherByCondition(name, specialty);List teachers = this.teacherDao.findTeacherByCondition(name, specialty, p
38、age, rows);return new DataGrid(total, teachers);Transactionalpublic String saveOrUpdateTeacher(Teacher teacher, FileTransfer ft) String result = StringUtils.EMPTY;InputStream input = null;OutputStream out = null;String savePath = StringUtils.EMPTY;try Teacher t = findTeacherById(teacher.getId();if (
39、null = t) if (StringUtils.isNotBlank(ft.getFilename() savePath = getPhotoPath(ft);input = ft.getInputStream();out = new FileOutputStream(savePath);IOUtils.copy(input, out);if (StringUtils.isNotBlank(savePath) teacher.setPhoto(savePath.substring(savePath.indexOf(upload).replaceAll(, /); else teacher.
40、setPhoto(savePath);this.teacherDao.save(teacher); else if (StringUtils.isNotBlank(ft.getFilename() savePath = getPhotoPath(ft);input = ft.getInputStream();out = new FileOutputStream(savePath);IOUtils.copy(input, out);if (StringUtils.isNotBlank(savePath) teacher.setPhoto(savePath.substring(savePath.i
41、ndexOf(upload).replaceAll(, /); else teacher.setPhoto(savePath);BeanUtils.copyProperties(t, teacher);this.teacherDao.update(t);result = Constants.STATUS_SUCCESS; catch (Exception e) if (StringUtils.isNotBlank(savePath) FileUtils.deleteQuietly(new File(savePath);result = Constants.STATUS_ERROR; finally IOUtils.closeQuietly(out);IOUtils.closeQuietly(input);return result;public Teac