教学评价系统的设计-学位论文.doc
1 绪论1.1 课题背景随着计算机技术的发展,网络技术对我们的生活和工作显得越来越重要,特别是信息高度发达的今天,人们对最新信息的需求和发布迫切需要及时性。而动态交互式网页刚好提供了这些功能。目前,网上已经有一些类似的评教系统,通过对这些系统的观察以及对使用过这些系统的老师和同学们的了解,我们发现:这些系统只是简单的将评价内容以网页的形式展现出来,让同学们选择,然后将结果统一的保存提交到服务器。这样做有很大的弊端,评教内容难于更新;教评结果的可信度有待提高;同时有多个用户登录时,系统的运行状况不好等诸多问题。本系统是为了教务老师提供相关决策支持,为职称评聘提供教学工作质量的科学依据,同时减轻了教务老师的工作量。系统是基于Windows XP操作系统,采用JSP开发,并使用MYSQL数据库来实现。1.2 目的和意义随着计算机技术的发展,网络技术对我们的生活和工作显得越来越重要,特别是信息高度发达的今天,人们对最新信息的需求和发布迫切需要及时性。而动态交互式网页刚好提供了这些功能,本系统就是一个能够在网上实现教师评教系统,能够大大减轻教工人员的工作量,提高办事效率;设计教师教学质量评教系统只是一种手段, 通过它使我可以更好的了解计算机的工作过程,掌握开发语言的使用方法,掌握开发各种项目的工作技能,适应迅猛发展的社会。1.3 系统设计思想对于典型的数据库管理系统,尤其是对于像教学评价系统这样的数据流量特别大的网络管理系统,必须要满足使用方便、操作灵活等要求。本系统在设计时应该满足以下几个目标(1) 采用人机对话的操作方式,界面美观、友好,信息查询灵活、方便,数据存储准确、安全可靠;(2) 系统最大限度地实现了易维护性和易操作性;(3) 系统运行稳定、安全可靠。1.4 本文的结构本文具体内容包括:可行性分析、需求分析、系统总体设计、系统详细设计与实现、系统的测试。本文着重描述了教学评价系统的组成与结构,阐述了系统的设计方案、实现方法以及所采用的开发工具和相关技术,另外,重点剖析了部分环节的开发过程。本系统在一定的环境下对系统的重要模块进行了模拟测试,证实了系统的可用性、可靠性。2 可行性分析教师教学评价已经成为教育事业中不可忽视的一个重要的方面,拥有一个全面的、功能强大的、操作简单的管理系统,已经成为教育事业发展的一个必然趋势。2.1 业务流程图根据教学评价系统的具体情况,调查管理业务流程是顺着系统信息流动的过程逐步地进行,内容包括各环节的业务处理、信息来源、处理方法、计算方法、信息流经去向、信息提供的时间和形态(报告、单据等)。1系统业务流图描述如下(1)系统管理员管理整个系统,包括公司老师信息的管理、学生信息的管理、评价指标管理、评价查看管理等。(2)老师信息的管理,录入老师信息,浏览管理已经录入的老师信息,对于过期的老师信息予以删除。(3)学生信息管理,录入学生的基本信息,浏览管理已经录入的学生信息,对于错误的学生信息予以删除或者更新。(4)评价指标管理,要想评价老师,必须有评价指标,管理员负责维护这些评价指标信息。 (5)评价结果浏览,学生登录系统后,选择老师进行评价,评价完毕后,管理员登录系统,可以浏览学生对老师的评价信息 。(6)修改密码功能,为了保证系统的安全性,管理员可以修改自己的密码 (7)系统管理,管理员可以添加普通管理员,用于协助管理本系统,系统业务流图如图2-1所示。图2-1 系统业务流图 新系统的目标确定后,可以从经济可行性、技术可行性和运行可行性三个方面对能否实现新系统目标进行可行性分析。2.2 经济可行性软件的经济可行性是指软件所能带来的经济效益与开发设计所需要的投资相比,是否相适宜,同时还要看此软件能否真正给用户带来足够的经济效益,我们开发的这套系统正是考虑为教学评价系统的使用者提高工作效率,节省工作时间,方便操作与管理而设计。本系统的开发在经济上是完全可行的。开发此软件不需要大量经费,而且是个人独立设计,可以节省许多费用,同时也可提高个人的实际动手能力。2.3 技术可行性根据该系统目标来衡量所需的技术是否具备,一般可从硬软件的性能要求、环境条件、操作人员水平和数量等方面去考虑和分析。考虑到系统实施的可行性,在软件方面选择了如今较流行的MyEclipse工具来进行开发管理平台的设计,使用MYSQL数据库存储数据。在硬件方面,则选择空间较大,硬件的配置越高,系统的开发与运行会更流畅。考虑到如今的家用或商用电脑硬件的整体配置水平,系统在硬件方面是可行的。在软件方面,由于MyEclipse和MYSQL是两个非常成熟的开发工具,无论在安全性、可用性、可靠性方面都毫无置疑,因此软件方面是可行的。2.4 运行可行性本教学评价系统操作简单易行,所以使用前的培训也比较容易,此系统网站的管理人员对开发此应用项目的态度确定而且管理方面的条件都比较成熟。经过以上分析,运行方面是可行的。2.5 小章总结可行性分析的任务是明确应用项目开发的必要性和可行性。本章主要对系统开发的可行性进行具体的分析,从用户角度考虑本系统是否可行,主要通过有力的数据和软件运行环境方面作为依据。通过经济可行性、技术可行性、运行可行性等方面的分析说明本工程的技术成熟、完备,测试手段可靠,具有良好的市场拓展,它追求的是简单、易学、易懂、易用,因此,本系统具有一定的开发前景,具有开发的价值。3 需求分析3.1 教学评价系统需求分析经过对教师教学评价过程的考察、分析,要求本系统具有以下功能。(1) 系统管理员管理整个系统,包括公司老师信息的管理、学生信息的管理、评价指标管理、评价查看管理等。(2) 老师信息的管理,录入老师信息,浏览管理已经录入的老师信息,对于过期的老师信息予以删除。(3) 学生信息管理,录入学生的基本信息,浏览管理已经录入的学生信息,对于错误的学生信息予以删除或者更新。(4) 评价指标管理,要想评价老师,必须有评价指标,管理员负责维护这些评价指标信息。 (5) 评价结果浏览,学生登录系统后,选择老师进行评价,评价完毕后,管理员登录系统,可以浏览学生对老师的评价信息 。(6) 修改密码功能,为了保证系统的安全性,管理员可以修改自己的密码 (7) 系统管理,管理员可以添加普通管理员,用于协助管理本系统。3.2 数据流图 系统总数据流图如图3-1所示图3-1系统总数据数据流图 3.3 本章小结需求分析报告是对系统需求的全面分析,是软件生存周期中最关键的一步,是建立软件开发的基础。经过需求分析要得到系统将要“做什么”,同时理解在做什么的基础上抽取出其“怎么做”的本质。4 总体设计4.1 系统模块总体设计利用层次图来表示系统中各模块之间的关系。层次方框图是用树形结构的一系列多层次的矩形框描绘数据的层次结构。树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面的各层矩形框代表各个数据的子集,最底层的各个矩形框代表组成这个数据的实际数据元素(不能再分割的元素)。随着这种结构的精细化,层次方框图对数据结构也描绘得越来越详细,这种模式非常适合于需求分析阶段的需要。从对顶层开始,沿着图中每条路径反复细化,直到确定了数据结构的全部细节为止。本系统一共分为管理员模块、学生模块,各个模块之间虽然在表面上是相互独立的,但是在对数据库的访问上是紧密相连的,各个模块访问的是同一个数据库,只是所访问的表不同而已。每个模块的功能都是按照在调研中搜集的资料进行编排制作的。依据上述功能分析,系统在两个模块的基础上每一个模块又分为几个模块。1 管理员功能模块:(1) 系统管理员管理整个系统,包括公司老师信息的管理、学生信息的管理、评价指标管理、评价查看管理等。(2) 老师信息的管理,录入老师信息,浏览管理已经录入的老师信息,对于过期的老师信息予以删除。(3) 学生信息管理,录入学生的基本信息,浏览管理已经录入的学生信息,对于错误的学生信息予以删除或者更新。(4) 评价指标管理,要想评价老师,必须有评价指标,管理员负责维护这些评价指标信息。 (5) 评价结果浏览,学生登录系统后,选择老师进行评价,评价完毕后,管理员登录系统,可以浏览学生对老师的评价信息 。(6) 修改密码功能,为了保证系统的安全性,管理员可以修改自己的密码 (7) 系统管理,管理员可以添加普通管理员,用于协助管理本系统,管理员模块功能结构图如图4-1所示。图4-1系统管理员用户功能结构图2 学生模块:(1) 评价老师,学生登录系统后可以选择在线评价老师教学质量,首先选择老师,然后选择分数,点击保存按钮,如果该学生对这个老师已经评价过,系统提示已经评价。不能进行重复评价,学生功能结构图如图4-2所示。图4-2学生模块结构图4.2 数据库设计对于一个管理系统而言,为了支持较大的访问量,带来的数据访问需求,使用桌面型的数据库管理系统是不能满足需要的,而且安全性也没有充分保障。因此,需要使用大型商业化企业级服务用途的数据库管理系统,如SQL Server,Oracle等。本系统采用MYSQL5.0数据库管理系统。4.2.1 数据分析对于本系统的数据库的需求而言,由于其主要是用于信息的提供、保存、更新和查询等。因此,需要分析该系统功能所隐含的对数据应用的需求,从而确定数据库的结构。(1) 老师信息管理功能需要对老师信息建立数据表,其中的数据项可能包括老师编号、姓名、性别、年龄等;(2) 学生信息管理,负责维录入学生的信息。其中的数据线可能包括学生好、姓名、性别、年龄、帐号、密码等(3) 评价指标管理,管理评价指标信息。其中的数据线可能包括指标名称、分数等(4) 评价结果浏览,学生评价完毕老师后。管理员可以浏览对老师的评价信息,其中的数据线可能包括指标名称、分数、老师编号、学生学号、评价时间等(5) 需要系统管理员对该系统进行管理,因而需要建立管理员信息数据表,其中的数据项包括管理员ID、密码等。4.2.2 数据库的详细设计在设计数据库时,应考虑以下事项(1) 数据库的用途及该用途将如何影响设计,应创建符合用途的数据库计划;(2) 数据库规范化规则,防止数据库设计中出现错误;(3) 对数据完整性的保护;(4) 数据库和用户权限的安全要求;(5) 应用程序的性能需求,设计数据库时必须利用 MYSQL5.0 中能够提高性能的功能。对于性能而言,在数据库大小和硬件配置之间权衡也是很重要的;(6) 数据库维护。数据库E-R如图4-4所示。图4-4 数据库E-R图根据此评价管理系统的实际情况,本系统的数据库命名为db_pingjia,db_ pingjia数据库中共分为6张数据表。1. 老师信息表4-5t_tea(老师信息表) 序号名称别名类型长度(字符)1ID IDInt42bianhao老师编号varchar 503name姓名varchar 504sex性别varchar505age 年龄varchar50 2. 学生信息表 此表用于记录学生的基本信息,如表4-6所示。表4-6t_stu(学生信息表)序号名称别名类型长度(字符)1id编号int42xuehao学好varchar503name姓名varchar504sex性别varchar505age年龄varchar506loginname登录帐号varchar507loginpw登录密码varchar503. 评价指标信息表 此表用于记录评价指标的基本信息,如表4-7所示。表4-7t_zhibiao(评价指标信息表)序号名称别名类型长度(字符)1id编号int42mincheng指标名称varchar503fenshu指标分数int504 评价信息表 此表用于记录对老师的评价信息,如表4-8所示。表4-8t_pingjia(评价信息表)序号名称别名类型长度(字符)1id评价IDint42tea_id老师IDint43zongfenshu 评价分数int44stu_id 学生IDint45shijian评价时间date5 评价选项信息表此表用于记录对老师评价的详细信息,如表4-9所示。表4-9t_pingjia_xuanxiang(评价选项表)序号名称别名类型长度(字符)1id IDint42zhibiao_id指标IDint43fenshu分数int44pingjia_id评价IDint46. 管理员信息表 此表用于记录不同权限管理员的基本信息,可以管理系统的所有信息。如表4-10所示。表4-10t_admin(管理员信息表)序号名称别名类型长度(字符)1userId 管理员IDint42userName管理员名称varchar503 userPw管理员密码varchar504.3 本章小结本章介绍了对本系统的总体设计,给出了教学评价系统系统的功能结构图、E-R图等,说明了各子系统的之间的联系。本章完成了系统数据库的数据需求分析的过程,说明了数据库由概念结构设计转换成逻辑结构设计的过程,并把各个物理数据模型结合起来形成了一个整体的关系数据库模型,为系统详细设计作好了充足的准备工作。5 详细设计与实现5.1 系统运行平台设置本系统的运行平台设置分为硬件环境和软件环境。5.2 运行环境1. 硬件环境系统的硬件环境配置为处理器Pentium III800,内存512M,硬盘1G。2 软件环境系统的软件环境配置为Windows XP操作系统,MYSQL5.0数据库,JDK1.5、MyEclipse5.1开发工具包和Tomcat6.0服务器。 5.3 开发工具及技术简介以下内容是对本系统所采用的开发工具和技术进行的简单介绍。5.3.1 开发工具简介MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。在结构上,MyEclipse的特征可以分为7类:(1)J2EE模型;(2)WEB开发工具;(3)EJB开发工具;(4)应用程序服务器的连接器;(5)J2EE项目部署服务;(6)数据库服务;(7)MyEclipse整合帮助。对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。MYSQL5.0是一种采用T-SQL语言,基于C/S模式的关系型数据库管理系统。MYSQL5.0存储和管理数据有以下优点(1) 每个数据项都存储在中央位置,所有用户都可在这个位置使用它们;(2) 各个客户端上不单独存储数据项复本,从而消除了因用户不得不确保使用的信息相同所带来的麻烦。系统不需要确保使用当前值更新所有数据复本,因为中央位置仅有一个复本;(3) 可以在服务器上一次性定义业务和安全规则,并对所有的用户平等执行(4) 可以在数据库内通过使用约束、存储过程和触发器来强制执行规则。还可在服务器应用程序中执行规则,因为这些应用程序也是许多客户端访问的中央资源;(5) 关系数据库服务器只返回应用程序所需要的数据,优化了网络流量;(6) 最大程度地降低硬件的成本,由于数据不是存储在每个客户端上,客户端不必耗费磁盘空间来存储数据。客户端无需在本地增加管理数据的功能,同时,服务器不需将处理能力耗费在显示数据上;(7) 可以配置服务器以优化检索数据所需的磁盘输入/输出容量,配置客户端以优化从服务器检索数据的格式;(8) 可以将服务器存储在一个相对安全的位置,并配备如不间断电源供应系统这样的设备,这比完全保护每个客户端更经济;(9) 维护任务(例如备份和恢复数据)得到简化,因为这些任务都可以集中在中央服务器上执行。 5.3.2 技术简介本系统采用MVC框架,MVC(Model-View-Controller)是一种设计 模式,它强制性地把应用程序的输入、处理和输出分开。MVC把应用程序分成3个核心:模型层、视图层和控制层,它们分别担负不同的任务。其中视图层向用户显示相关的数据,并能接受用户的输入数据,但是它并不进行任何实际的业务处理。模型层表示业务数据和业务逻辑。控制层接收用户输入并调用模型和视图去完成用户的需求。本系统需要用到的Java相关技术有jsp技术、servlet技术、jdbc技术、SSH框架。其中,关键的技术难点在于Struts技术的运用。Struts技术是基于MVC的Web应用框架。在Struts框架中,模型层由实现业务逻辑的JavaBean组件构成,控制层由ActionServlet和Action来实现,视图层由一组JSP文件构成。5.4 系统登录设计要先使用本系统,必须先登录。界面设计如图5-1所示。图5-1登录界面当用户输入用户名和密码后首先要进行身份验证,如果用户存在,则成功登录,反之,如果用户不存在,提示错误信息“输入的用户名或密码不存在,请注册”,返回登录界面重新输入用户名和密码,用户登录的程序流程图如图5-2所示。图5-2用户登录程序流程图登陆核心代码:public String login(String userName,String userPw,int userType)System.out.println("userType"+userType);tryThread.sleep(700); catch (InterruptedException e)/ TODO Auto-generated catch blocke.printStackTrace();String result="no"if(userType=0)/系统管理员登陆WebContext ctx = WebContextFactory.get(); HttpSession session=ctx.getSession(); String sql="select * from t_admin where userName=? and userPw=?"Object params=userName,userPw;DB mydb=new DB();mydb.doPstm(sql, params);try ResultSet rs=mydb.getRs();boolean mark=(rs=null|!rs.next()?false:true);if(mark=false) result="no"else result="yes" TAdmin admin=new TAdmin(); admin.setUserId(rs.getInt("userId"); admin.setUserName(rs.getString("userName"); admin.setUserPw(rs.getString("userPw"); session.setAttribute("userType", 0); session.setAttribute("admin", admin);rs.close(); catch (SQLException e)System.out.println("登录失败!");e.printStackTrace();finallymydb.closed();if(userType=1)if(userType=2)WebContext ctx = WebContextFactory.get(); HttpSession session=ctx.getSession(); String sql="select * from t_stu where del='no' and loginname=? and loginpw=?"Object params=userName,userPw;DB mydb=new DB();mydb.doPstm(sql, params);try ResultSet rs=mydb.getRs();boolean mark=(rs=null|!rs.next()?false:true);if(mark=false) result="no"else result="yes" Tstu stu=new Tstu();stu.setId(rs.getInt("id");stu.setXuehao(rs.getString("xuehao");stu.setName1(rs.getString("name1");stu.setSex(rs.getString("sex");stu.setAge(rs.getInt("age");stu.setLoginname(rs.getString("loginname");stu.setLoginpw(rs.getString("loginpw"); System.out.println(stu.getAge()+"%"); session.setAttribute("userType", 2); session.setAttribute("stu", stu); rs.close(); catch (SQLException e)System.out.println("登录失败!");e.printStackTrace();finallymydb.closed();return result;5.5 各功能设计与实现5.5.1 老师信息管理设计与实现1实现目标该功能实现对老师的统一管理,主要功能有老师信息的录入、修改、删除等操作,界面如。图5-3老师信息管理模块2 实现过程所属页面名:teaMana.jsp老师信息管理主要是使用tea_servlet中下的teaAdd和teaDel方法来删除和获取数据库中的数据。进入老师管理界面时通过teaMana方法来显示所有老师的信息,点击删除时,通过findById方法获取指定的老师ID信息,使用sql语句进行操作。核心代码:public void teaAdd(HttpServletRequest req,HttpServletResponse res)String bianhao=req.getParameter("bianhao");String name=req.getParameter("name");String sex=req.getParameter("sex");int age=Integer.parseInt(req.getParameter("age");String del="no"String sql="insert into t_tea(bianhao,name,sex,age,del) values(?,?,?,?,?)"Object params=bianhao,name,sex,age,del;DB mydb=new DB();mydb.doPstm(sql, params);mydb.closed();req.setAttribute("message", "操作成功");req.setAttribute("path", "tea?type=teaMana");String targetURL = "/common/success.jsp"dispatch(targetURL, req, res);public void teaDel(HttpServletRequest req,HttpServletResponse res)String sql="update t_tea set del='yes' where id="+Integer.parseInt(req.getParameter("id");Object params=;DB mydb=new DB();mydb.doPstm(sql, params);mydb.closed();req.setAttribute("message", "操作成功");req.setAttribute("path", "tea?type=teaMana");String targetURL = "/common/success.jsp"dispatch(targetURL, req, res);public void teaMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOExceptionList teaList=new ArrayList();String sql="select * from t_tea where del='no'"Object params=;DB mydb=new DB();try mydb.doPstm(sql, params);ResultSet rs=mydb.getRs();while(rs.next()Ttea tea=new Ttea();tea.setId(rs.getInt("id");tea.setBianhao(rs.getString("bianhao");tea.setName(rs.getString("name");tea.setSex(rs.getString("sex");tea.setAge(rs.getInt("age");teaList.add(tea); rs.close();catch(Exception e)e.printStackTrace();mydb.closed();req.setAttribute("teaList", teaList);req.getRequestDispatcher("admin/tea/teaMana.jsp").forward(req, res);5.5.2 学生信息管理设计与实现1 实现目标该模块是对学生信息的管理,包括学生录入、查询、删除等操作,界面的设计如图5-14所示。图5-4学生管理模块2 实现过程所属页面名:stuMana.jsp老师信息管理主要是使用stu_servlet中下的stuAdd和stuDel方法来删除和获取数据库中的数据。进入学生管理界面时通过stuMana方法来显示所有学生的信息,点击删除时,通过findById方法获取指定的学生信息,使用sql语句进行操作。核心代码:public void stuAdd(HttpServletRequest req,HttpServletResponse res)String xuehao=req.getParameter("xuehao");String name1=req.getParameter("name1");String sex=req.getParameter("sex");int age=Integer.parseInt(req.getParameter("age");String loginname=req.getParameter("loginname");String loginpw=req.getParameter("loginpw");String del="no"Stringsql="insertinto t_stu(xuehao,name1,sex,age,loginname,loginpw,del) values(?,?,?,?,?,?,?)"Object params=xuehao,name1,sex,age,loginname,loginpw,del;DB mydb=new DB();mydb.doPstm(sql, params);mydb.closed();req.setAttribute("message", "操作成功");req.setAttribute("path", "stu?type=stuMana"); String targetURL = "/common/success.jsp"dispatch(targetURL, req, res);public void stuDel(HttpServletRequest req,HttpServletResponse res)String sql="update t_stu set del='yes' where id="+Integer.parseInt(req.getParameter("id");Object params=;DB mydb=new DB();mydb.doPstm(sql, params);mydb.closed();req.setAttribute("message", "操作成功");req.setAttribute("path", "stu?type=stuMana"); 5 String targetURL = "/common/success.jsp"dispatch(targetURL, req, res);public void stuMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOExceptionList stuList=new ArrayList();String sql="select * from t_stu where del='no'"Object params=;DB mydb=new DB();trymydb.doPstm(sql, params);ResultSet rs=mydb.getRs();while(rs.next()Tstu stu=new Tstu();stu.setId(rs.getInt("id");stu.setXuehao(rs.getString("xuehao");stu.setName1(rs.getString("name1");stu.setSex(rs.getString("sex");stu.setAge(rs.getInt("age");stu.setLoginname(rs.getString("loginname");stu.setLoginpw(rs.getString("loginpw");stuList.add(stu); rs.close();catch(Exception e)e.printStackTrace();mydb.closed();req.setAttribute("stuList", stuList);req.getRequestDispatcher("admin/stu/stuMana.jsp").forward(r