版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生信息管理系统的设计与实现PAGEIV学生信息管理系统的设计与实现摘要随着信息技术的高速发展,越来越多的高校将其应用于学生信息管理、课程设计等多方面。其中,学生信息管理系统应用最为广泛,该系统能够高效管理学生信息,方便学生个人基本信息、课程信息、奖惩情况的快速查找与更新,从而实现网络化、规范化、系统化的信息管理过程。一个设计良好的信息管理系统能够帮助使用者节省大量时间与精力,且相比于传统的信息管理方法,能容纳更多的信息资料。本文学生信息管理系统的设计以JSP作为前台开发语言,后台为SQLServer,开发环境为MyEclipse,服务器则是tomcat,开发出一个基于Web技术的B/S结构的学生信息管理系统。关键词:学生信息、管理系统,JSP,B/S结构
ABSTRACTKeywords:studentinformation,managementsystem,JSP,B/Sstructure
目录TOC\o"1-2"\h\z\t"标题3,3,标题4,4"学生信息系统的设计与实现 I摘要 IABSTRACT II第一章绪论 11.1课题背景 11.2目的和意义 11.3开发工具及技术 21.3.1MVC技术 21.3.2Struct2框架 31.3.3Hibernate框架 41.3.4Spring框架 61.3.5开发工具 6第二章需求分析 72.1需求调研 72.2可行性分析 72.2.1法律的可行性 72.2.2经济的可行性 72.2.3技术的可行性 82.2.4操作的可行性 82.3系统用户用例图 82.3.1管理员用例图 82.3.2学生用例图 82.4功能模块需求分析 92.5设计的基本思想 102.6性能需求 102.6.1系统的安全性 102.6.2数据的完整性 102.7界面需求 11第三章系统分析与设计 113.1数据库的分析与设计 113.1.1数据库的概念设计 113.1.2数据库的逻辑设计 143.1.3数据库的连接原理 163.2中文乱码问题处理 17第四章系统功能实现 194.1系统登陆页面实现 194.2管理员功能模块 214.2.1学生信息管理 224.2.2老师信息管理 254.2.3课程信息管理 274.2.4课表信息管理 294.2.5奖惩信息管理 324.2.6修改密码 344.2.7退出系统 354.3学生功能模块 354.3.1学生选课管理 35第五章系统测试 395.1系统测试目的与意义 395.2测试过程 395.2.1主页面的登录模块测试 395.3其他错误 40结论 41参考文献 42致谢 43学生信息管理系统的设计与实现第一章绪论1.1课题背景现今,信息技术飞速发展,网络已渗入人们的日常生活及工作中,成为必不可少的一部分。随着计算机科学的逐渐完善,它已渗透到社会的各个领域,在各行各业均被普遍利用,高校更是如此。学生信息管理系统在高校中应用最为广泛,一个设计完全的信息管理系统应具备功能性、简便性等特点,功能性即指应具备为使用者提供完全的信息和便捷的查询手段的功能,简便性即指操作简便,这不仅要体现在页面设计上,还要体现在实际使用过程中。对于管理者来说,能够节省大量时间与精力的信息管理系统是迫切需要的;对于决策者来说,能够容纳完全的信息,从而便于关键时刻做出重要决策的信息管理系统是存在重要价值的。学生信息管理系统作为计算机应用的一部分,相比于传统的信息管理方法,具有如下优点:安全性高、存储性高、成本低、容量大、使用时间长等。这些优点在较大程度上提高了使用效率和管理效率,也加快了高校迈进正规化、科学化管理的进程。1.2目的和意义管理信息系统,英文全称是ManagementInformationSystem,日常被人们简称为MIS,在现代社会中,被大型企事业单位、高校、政府部门等广泛应用,普及性极高。管理信息系统作为一门新兴学科,是多个学科和领域的融合,例如系统科学、运筹学、统计学和计算机科学等。其意义体现在以下三个方面:首先,管理信息系统作为一个复杂的设计,它是知识运用和创造的过程;其次,现今的企事业单位迫于规模越来越大,传统信息管理方法已无法满足日常需要,且耗费大量人力和物力,因此信息管理系统是管理者亟需的一个信息管理平台;最后,为方便企事业单位各部门之间工作的协调,信息的互通,这样的平台是不可或缺的。现如今,随着信息管理系统的逐渐普及与日益完善,越来越多的企事业单位将其应用到自己的日常运作中,用来管理每天都在变化和增长的信息或资料。教育单位的学生信息管理系统也有着很大的发展空间,商业化的学生信息管理软件在市场上越发常见,由此可见,信息管理系统已成为社会发展必不可少的一部分。相比于传统的人工管理方式,信息管理系统的优点显而易见。例如,传统信息管理方式效率十分低下,占用空间极大,安全性不高,最重要的是随着时间的积累,越来越多的文件和数据极大地增加了人员管理的难度。而信息管理系统作为一个软件,占着极小的空间,缺拥有着很大的容量,加密的信息管理系统很难被破解,因此保密性较高,同时它的便携性也保证了它的安全性,最重要的是极大地提高了管理效率,同时也节省了大量的人力和物力资源,为单位节省一比不小的开支。总而言之,信息管理系统的存在是十分必需的,对于高校来说,有着数量庞大的学生群体,且每年学生信息都会随着年级的升高而变化,倘若以传统方法管理学生信息,带来的庞大工作量是难以接受的,因此,学生管理信息系统的应用是非常必要的。1.3开发工具及技术1.3.1MVC技术二十世纪八十年代,XeroxPARC为编程语言Smalltalk-80发明了一种软件模式,即模型-视图-控制器(MVC,Model-View-Controller),它是用来设计创建Web应用程序的一种模式,M是指业务模型,V则是指用户界面,C是控制器。现今,MVC模式作为一个有用的工具箱,被广泛应用到程序设计中,它同时提供了对JavaScript、HTML等的控制,受到许多开发者的喜爱。MVC模式由以下部分构成:模型(Model):表示应用程序核心部分,例如数据库记录列表。一般用来处理数据结构和逻辑,体现应用程序的实际状态。在有的时候,它可能只包含状态信息,因为它对视图或控制器的信息并不了解。视图(View):用来显示数据,在数据库中,则显示数据库记录,是应用程序的界面显示。然而,它可以访问模型的数据,但是不了解模型的情况,也无法了解控制器的情况。因此,在某一时刻模型发生改变的话,视图能够得到通知,可以访问改动后的模型的数据,但不能改写数据。控制器(Controller):是应用程序中处理用户交互的部分,起到协调的作用。能够回应用户的输入,与此同时将模型和视图联系起来,由它创建并设置模块。例如,Servlets能够收到客户端的HTTP请求,并且根据实际需要创建JavaBeans,然后将模块产生的变化通知给视图。MVC模式中业务响应过程如图2-1所示:图2-1MVC模式1.3.2Struct2框架Struts2框架由三个部分组成:核心和业务控制器,以及业务逻辑组件。核心控制器:包含了Struts2框架内部中的控制流程和处理机制,它主要负责拦截用户请求,并对请求进行分发,把满足条件的请求过滤到业务控制器去处理。业务控制器和业务逻辑组件:需要用户自己实现,用户在开发它们的同时,需要编写相关配置文件,供核心控制器使用。Struts2框架的大致处理流程如下:图2-2Struts2框架的处理流程Struts2的优点:Struts2符合传统的MVC思想,核心的Action、Interceptor、校验技术被开发人员方便灵活地使用,而且还集成了Ajax技术,在Ajax返回的结果类型中,返回XML、Json数据类型。开发人员可以根据自己的需要选择返回结果类型。相比于传统的Struts1,Struts2的优势在于Action可以使用传统的Java对象;Action的execute()与ServletAPI也不存在耦合关系,从而更容易被测试;除此之外,Struts2还能够支持更多的视图技术,可扩展性更高;输入校验功能也更加完善等。在Strut2中全面体现了面向切面编程的思想。其中,最重要的就是拦截器的使用。用户可以将具有小功能单位的拦截器合成大的拦截器,而这个被合成的拦截器只要配置到指定的Action中就能够使用。Struts2有丰富的Tag可以使用,标记库较为灵活,很大程度上提高了开发者的程序开发效率。而Struts2的缺点则是:存在不方便测试的情况。该框架下的每个Action都与Web层耦合,导致它的测试依赖于Web层容器。此外,必须采用Junit的扩展工具才能实现单元测试,这也是缺点之一。最后,Struts十分依赖Servlet,很难摆脱Servlet容器。1.3.3Hibernate框架在基于MVC设计模式的JAVAWEB应用中,Hibernate可以作为模型层/数据访问层。它通过配置文件(pertiesorhibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(PersistentObject,持久化对象)映射到数据库中的数据库,然后通过操作PO,对数据表中的数据进行增、删、改、查等操作。Hibernate核心API如图2-3所示:图2-3Hibernate体系结构持久化对象可以是普通的JavaBeans,它的特殊性在于只能与一个Session相关联。JavaBeans以三种状态存在于Hibernate中:瞬时状态:当一个JavaBean对象是孤立存在的时候,即与数据库中的数据没有任何联系,那么这个JavaBeans就称为临时对象,它处于一个瞬时状态。持久化状态:当一个JavaBean对象与一个Session存在关联时,就从临时对象转变成持久化对象,从瞬时状态变为持久化状态。游离状态:当关联的这个Session被关闭时,这个JavaBean对象会脱离持久化状态,因此就成为了游离状态,能够被应用程序的任何层使用。以上三种状态的转换过程如图2-4所示:图2-4Hibernate域对象状态转换图1.3.4Spring框架Spring是由RodJohnson创建的一个开源框架,旨在解决应用程序开发的复杂性。它的优点有:Spring不强迫开发者必须在每一层中使用Spring,用户能够根据自身需求选择使用它的任一模块;同时,它能够为不同的数据访问技术提供统一接口,提供了简洁的AOP并据此实现TranscationManagment等等。另外,使用Spring的最重要目的是使J2EE开发更加简便。它可以将单层框架随机匹配以实现最佳组合,从而建立起一个连贯的体系。可以说Spring提供了更优良的开发环境,以统一且高效的方式构造了整个应用。然而,Spring也存在一些缺点,那就是Spring没有完美的页面标签库,因此JSP语言中要写很多代码。1.3.5开发工具具体的开发工具有MyEclipse9.0;DreamweaverCS5;PotoshopCS3;MySQL。其中MyEclipse是对EclipseIDE的扩展,利用它开发者可以在数据库和J2EE的开发、发布,以及应用等方面提高工作效率。在结构上,MyEclipse的功能有以下几类:J2EE模型;WEB开发工具;EJB开发工具;应用程序服务器的连接器;WEB项目部署服务;数据库服务;MyEclipse整合帮助。每一种功能均对应Eclipse中的部件,并通过一系列的插件来实现。第二章需求分析2.1需求调研教育是科学之本,随着知识经济时代的到来,越来越多的人投入到教育事业中,也有越来越多的人走上求学的道路。现今,高校不断扩大招生规模,一个普通大学的在校生人数达到三万余人,且未来有不断上升的趋势。在如此庞大的学生数量面前,如何有效的管理学生信息是每一所高校面临的难题。为解决这一难题,学生信息管理系统应运而生,它的开发与运用是迎合时代潮流的,是必须首当其中的。只有在高效地管理学生信息的情况下,才能很好地培养学生,因材施教。只有拥有一套完善的学生信息管理系统,才能促成良好的学习与生活环境。2.2可行性分析任何一个应用程序的开发都需要耗费大量的时间和精力,当然也会受到资源上的限制。因此,在一个新的项目开发之前,都要做一份可行性分析报告,从而减少和控制项目开发过程中可能存在的风险。本文将从四个方面来阐述学生信息管理系统开发的可行性,分别是法律、经济、技术和操作。2.2.1法律的可行性法律是首先必须考虑的因素,随着知识产权保护力度的加强,侵权行为受到越来越严重的打击,倘若开发一个软件存在侵犯他人知识产权的可能性,在软件开发成功后,可能会引起权利纠纷,带来大量的赔偿或终止软件使用权,那样便前功尽弃。本文的学生信息管理系统的开发环境、所使用数据库等都是开源代码,不存在侵权行为,因此,在法律上是可行的,成功开发后将不会存在侵权风险。2.2.2经济的可行性在法律可行的基础上,其次需要考虑的是经济,众所周知,开发一个软件并非易事,前期需要一定的经济投入,因此考虑经济可行性是十分必要的。随着知识经济时代的到来,信息化管理可以使学生信息管理工作更加系统化、快速化、全面化,这样可以大大地提升高校的工作效益,与此同时带来的经济效益也是不可小觑的。开发一个学生信息管理系统所需要的资源、设备等并不多,一台拥有基础配置的计算机足矣,相比于系统开发后带来的巨大便利,前期开发投入成本是极低的。因此,学生信息管理系统的开发在经济上也是可行的。2.2.3技术的可行性学生信息管理系统的开发需要用到的工具是MyEclipse和SqlServer,使用的开发语言是Java,该语言是面向对象编程语言,是所有与计算机有关专业的必修课,使用的技术是J2EE。本人在大二时就学习了Java课程,大学期间也系统学习了J2EE的知识,本人平时也对系统开发存在很大的兴趣,自行学习了相关拓展课程。因此,在系统分析、设计和测试方面,具备较高的综合能力,实现该系统的开发在技术上是具有可行性的。2.2.4操作的可行性该系统具有操作简便性,下拉框是输入页面的主要选择形式,甚至在某些页面上,有自动生成的功能,不需手工输入,时间也是由日历控件进行输入的,操作十分简便易上手,对开发人员具有较低的专业要求。综上所述,学生信息管理系统的开发在各方面的可行性均较高,失败率较低。2.3系统用户用例图2.3.1管理员用例图信息系统的核心用户便是我们所说的管理员,任何一个系统都拥有它的平台管理员,学生信息管理系统中的管理员拥有着最广泛的操作权限,具体如下图所示。图2.1管理员用例图2.3.2学生用例图学生登录该系统,仅有查看本人信息的权限,对其中信息无法修改。图2.2学生用例图2.4功能模块需求分析学生信息管理系统能够实现如下主要基本功能:(1)页面简洁性较高,容易操作,发生错误时能够出现友好提示;(2)安全性较高,能够避免除管理员之外其他人员的恶意篡改和操作;(3)管理员用户主要具有六个管理模块,分别是系统管理、课程信息管理、老师信息管理、课表信息管理、学生信息管理和奖惩信息管理,具体如图2.3所示。图2.3管理员用户功能模块图学生功能模块如下(具体如图2.4所示):(1)课表信息浏览:可以浏览课表信息和实现选课功能;(2)我的选课信息:在该模块中查询涉及到当前登录学生的所有选课信息;(3)我的奖惩信息:在该模块中查询涉及到当前登录学生的所有奖惩信息。图2.4学生用户功能模块图2.5设计的基本思想设计的基本思想应遵循几个原则:(1)操作简便,符合众多用户习惯使用网页的方式;(2)稳定性高;(3)运行效率好;(4)重点突出,涵盖完全,根据用户需求进行改进和扩展。2.6性能需求2.6.1系统的安全性系统的安全性是必须首要保证的,一个不安全的系统形同虚设,系统内用户信息保密性一定要高,在管理权限上需进行严格控制,具体操作如下:想登录信息管理系统进行操作,必须具有操作权限,一般管理员具有该权限,其他普通用户不能以任何方式登录该系统篡改和查看全部信息。2.6.2数据的完整性一个好的信息管理系统,里面包含的信息应是全面的。首先,每条记录都需保持完整,不能为空;其次,各条记录间的联系必须是正确的,不能够出现标注体重的地方,显示的是身高;最后,同样的数据在不同的记录中需保持完全一致性,例如学生选课信息和学生课表中的内容应保持一致,不能存在出入。2.7界面需求界面是软件设计完成后,首先展现在用户面前的,界面设计的好坏在一定程度上决定了软件设计质量的高低。一般而言,设计简洁大方的用户界面能够给用户带来愉悦的使用感,增加用户对该系统的喜爱,从而真正意义上实现工作效率的提高,达到软件设计的最终使命。界面设计通常包括输出、输入、人-机对话的界面格式等多个步骤,输出即指计算机对输入的原始信息进行处理,形成有效信息,一般带有一定的格式,方便接下来的输入,输入设计关系到整个系统质量的高低。值得一提的是,先输出再输入与一般系统设计的过程正好相反,其原因是:该系统设计的出发点是保证输出的内容能够方便用户使用,输出设计的原则既要保证全面性又要考虑独特性。第三章系统分析与设计3.1数据库的分析与设计数据库是每一个系统的核心所在,在其支持下,才能够进行信息搜集、整理、存储等过程,数据库的设计包括以下几个步骤:规划、需求分析、概念设计、逻辑设计和物理设计。其中,概念设计、逻辑设计和物理设计是重点所在,接下来将进行详细介绍。3.1.1数据库的概念设计概念设计一般是指在在前期对相关数据进行分析的基础上,从最低端向上来建立数据库的概念结构。一般采用实体—联系(E-R)模型设计方法,该模型包含的元素有:实体、属性和联系,在数学中,实体一般用方框表示,属性一般用椭圆形表示,实体间联系则用棱型表示。概念设计旨在反应组织所需要的数据库概念结构。概念结构独立于逻辑结构。接下来具体展示了学生信息管理系统内各信息的实体-联系图。(1)学生信息实体-联系图如下:图3.1学生信息实体E-R图(2)老师信息实体-联系图如下:图3.2老师信息实体E-R图(3)课程信息实体-联系图如下:图3.3课程信息实体E-R图(4)课表信息实体-联系图如下:图3.4课表信息实体E-R图(5)选课信息实体-联系图如下:图3.5选课信息实体E-R图(6)奖惩信实体-联系图如下:图3.6奖惩信息实体E-R图(7)管理员信息实体-联系图如下:图3.7管理员信息实体E-R图3.1.2数据库的逻辑设计由上文可知,数据库的概念模型是独立存在的,不依赖于数据库管理系统,因此,应根据需要进行转换,即将概念设计模型转化为依据计算机特征处理的逻辑关系模型,具体的转换过程遵循以下原则:每个实体对应转换成一个关系;全部主键为非空;针对二元联系,须按照一对一、一对多、弱对实等来定义外键。基于上面的E-R模型,将其转换成如下逻辑数据结构,下面是各数据表的详细说明。(1)学生信息表主要记录每一位学生的基本信息。表结构如表3.1所示。表3.1学生信息表(t_xuesheng)列名数据类型长度允许空是否主键说明idint4否是编号xuehaovarchar50否否学号xingmingvarchar50否否姓名xingbievarchar50否否性别nianlingvarchar50否否年龄banjivarchar20否否班级loginnamevarchar20否否登录名loginpwvarchar20否否登录密码(2)老师信息表主要记录各任课教师的基本信息。表结构如表3.2所示。表3.2老师信息表(t_laoshi)列名数据类型长度允许空是否主键说明idint4否是编号bianhaovarchar50否否教师号xingmingvarchar50否否姓名xingbievarchar50否否性别nianlingvarchar50否否年龄zhichengvarchar20否否职称(3)课程信息表主要记录课程的基本信息,表结构如图3.3所示。表3.3课程信息表(t_kecheng)列名数据类型长度允许空是否主键说明idint4否是编号bianhaovarchar50否否课程编号mingchengvarchar50否否课程名称keshivarchar50否否课时(4)课表信息表主要记录学生课表的基本信息,表结构如图3.4所示。表3.4课表信息表(t_kebiao)列名数据类型长度允许空是否主键说明idInt4否是编号kecheng_idInt4否否课程IDshijianvarchar50否否上课时间jiecivarchar50否否节次jiaoshivarchar50否否上课教室laoshi_idInt4否否老师ID(5)选课信息表主要记录学生选课信息,表结构如图3.5所示。表3.5课表信息表(t_xuesheng_kebiao)列名数据类型长度允许空是否主键说明idint4否是编号xuesheng_idint4否否学生IDkebiao_idint4否否课表ID(6)奖惩信息表主要记录学生奖惩信息,表结构如图3.6所示。表3.6奖惩信息表(t_jiangcheng)列名数据类型长度允许空是否主键说明idInt4否是编号xuesheng_idInt4否否学生IDshijianvarchar50否否奖惩时间shuxingvarchar50否否奖惩类型beizhuvarchar50否否备注(7)管理员信息表主要记录管理员账号信息,包括用户名、密码等,表结构如表3.4所示。表3.7管理员信息表(t_admin)列名数据类型长度允许空是否主键说明userIdint4否是编号userNamevarchar50否否用户名userPwvarchar50否否密码3.1.3数据库的连接原理该系统主要采用JDBC方式连接数据库,只需导入对应数据库的jar包,就可以十分便捷的将数据库进行连接,在程序设计中,首先用Class.forName()进行加载,接着用DriverManager的getConnection()创建数据库连接。一般采用DAO对数据库进行操作,该操作方式是Java中的经典模式,被广泛运用于程序设计中。它的主要思想是利用抽象数据源获取操纵数据的方法。具体如图3.10所示:封装使用封装使用DataSourceDataAccessObjectBusinessObjectDataSourceDataAccessObjectBusinessObject创建/使用获取/修改创建/使用获取/修改DataTransferObjectDataTransferObject图3.10DAO模式类图BussinessObject指的是使用DAO模式的客户端,即业务对象;DataTransferObject为数据传输对象;DataObjectAcces数据输入/输出对象封装了对数据源的一些基本操作;DataSource指的是数据源。可以从图中看出,DAO模式分离了业务逻辑和数据罗即将,是的编写的软件具有良好的层次式体系结构。本系统为了方便数据库的操作,主要使用DBContent的对象来接一个数据库(建立一个类DBContent),代码如下:publicDBContent(){ StringCLASSFORNAME="com.SqlServer.jdbc.Driver";//连接数据库的驱动 Stringurl="jdbc:SqlServer://localhost:3306/gy1"; Stringuser="root";//连接数据库的用户名 Stringpassword="root";//连接数据库的密码 try{ Class.forName(CLASSFORNAME); con=DriverManager.getConnection(url,user,password);//加载数据库的驱动 stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); } catch(Exceptionex){ ex.printStackTrace(); } } 在程序需要连接数据库的地方,只需要生成一个DBConnet的对象,就可以对数据库进行连接并操作。3.2中文乱码问题处理在程序中经常会遇到中文乱码的情况,如果手动的在servlet和jsp页面进行设置,相当麻烦。因此,在程序的开始就写了一个过滤器SetCharacterEncodingFilter。在web.xml中配置:<filter><filter-name>SetCharacterEncodingFilter</filter-name><filter-class>myweb.util.filter.SetCharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>gb2312</param-value></init-param></filter><filter-mapping><filter-name>SetCharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern>//*表示工程下所有的页面都会有此过滤器的处理</filter-mapping>对应的SetCharacterEncodingFilter.java文件中的重要代码,在初始化init()方法中定义:publicvoidinit(FilterConfigfilterConfig)throwsServletException{ this.filterConfig=filterConfig;this.encoding=filterConfig.getInitParameter("encoding");Stringvalue=filterConfig.getInitParameter("ignore");}在工具包util包中同样定义了DataFormate类来处理字符转换:publicstaticStringtoUni(StringgbStr){StringuniStr="";/*把字符串转换成uincode编码*/if(gbStr==null){gbStr="";}try{byte[]tempByte=gbStr.getBytes("GB2312");uniStr=newString(tempByte,"ISO8859_1");}catch(Exceptionex){}returnuniStr;}/*把字符串转换成Utf8编码*/publicstaticStringtoUtf8String(Strings){StringBuffersb=newStringBuffer();for(inti=0;i<s.length();i++){charc=s.charAt(i);if(c>=0&&c<=255){sb.append(c);}else{byte[]b;try{b=Character.toString(c).getBytes("utf-8");}catch(Exceptionex){System.out.println(ex);b=newbyte[0];}for(intj=0;j<b.length;j++){intk=b[j];if(k<0){k+=256;}sb.append("%"+Integer.toHexString(k).toUpperCase());}} returnsb.toString();}
第四章系统功能实现系统设计完成后,便开始系统实施阶段。系统实施阶段主要是将前面的设计转化为物理实现,得到最终的成果。4.1系统登陆页面实现描述:为了保证系统足够安全,用户登录系统首先需要输入正确的用户名和密码,用户名或密码出现任一错误,便无法实现系统的登录,接下来的操作也将终止。程序运行效果图如图4.1所示:图4.1系统登陆页面设计用户在登陆页面输入正确的用户名和密码,点击登录,跳转到登陆的service中,在该service中会对所填信息进行快速判断,验证通过后才能进入对应的页面,loginservice关键代码: publicStringlogin(StringuserName,StringuserPw,intuserType) { Stringresult="no"; if(userType==0)//系统管理员登陆 { Stringsql="select*fromt_adminwhereuserName=?anduserPw=?"; Object[]params={userName,userPw}; DBmydb=newDB(); mydb.doPstm(sql,params); try { ResultSetrs=mydb.getRs(); booleanmark=(rs==null||!rs.next()?false:true); if(mark==false) { result="no"; } else { result="yes"; TAdminadmin=newTAdmin(); admin.setUserId(rs.getInt("userId")); admin.setUserName(rs.getString("userName")); admin.setUserPw(rs.getString("userPw")); WebContextctx=WebContextFactory.get(); HttpSessionsession=ctx.getSession(); session.setAttribute("userType",0); session.setAttribute("admin",admin); } rs.close(); } catch(SQLExceptione) { System.out.println("登录失败!"); e.printStackTrace(); } finally { mydb.closed(); } } if(userType==2) { Stringsql="select*fromt_xueshengwheredel='no'andloginname=?andloginpw=?"; Object[]params={userName,userPw}; DBmydb=newDB(); mydb.doPstm(sql,params); try { ResultSetrs=mydb.getRs(); booleanmark=(rs==null||!rs.next()?false:true); if(mark==false) { result="no"; } else { result="yes"; Txueshengxuesheng=newTxuesheng(); xuesheng.setId(rs.getInt("id")); xuesheng.setXuehao(rs.getString("xuehao")); xuesheng.setXingming(rs.getString("xingming")); xuesheng.setXingbie(rs.getString("xingbie")); xuesheng.setNianling(rs.getString("nianling")); xuesheng.setBanji(rs.getString("banji")); xuesheng.setLoginname(rs.getString("loginname")); xuesheng.setLoginpw(rs.getString("loginpw")); xuesheng.setDel(rs.getString("del")); WebContextctx=WebContextFactory.get(); HttpSessionsession=ctx.getSession(); session.setAttribute("userType",2); session.setAttribute("xuesheng",xuesheng); } rs.close(); } catch(SQLExceptione) { System.out.println("登录失败!"); e.printStackTrace(); } finally { mydb.closed(); } } returnresult; }4.2管理员功能模块描述:界面左上角展示了管理员可操作的几大功能,点击相关的管理模块,随即可以链接到对应的子菜单。程序运行效果图如图4.2所示:图4.2管理员主页面在每个jsp页面均会对用户进行拦截操作,拥有操作权限方可进入,这样能够提高系统的安全性,保证信息不被泄露,具体代码如下:if(session.getAttribute("user")==null){out.print("<script>alert('请先登录!');window.open('../index.jsp','_self')</script>"); }4.2.1学生信息管理学生信息录入描述:管理员输入学生信息后,点击提交按钮,如果信息不完整将会被提示,知道录入完整且格式正确的信息才能显示录入成功。程序效果图如下图4.3所示:图4.3学生信息录入3.流程图如下图4.4所示: 图4.4学生信息录入流程图学生信息管理描述:管理员点击左侧菜单的“学生信息管理”条目,页面随即跳转到学生信息管理界面,调用后台的action类能够查询全部学生信息。.程序效果图如下图4.5所示:图4.5学生信息管理学生信息管理关键代码: publicvoidxueshengAdd(HttpServletRequestreq,HttpServletResponseres) { Stringxuehao=req.getParameter("xuehao"); Stringxingming=req.getParameter("xingming"); Stringxingbie=req.getParameter("xingbie"); Stringnianling=req.getParameter("nianling"); Stringbanji=req.getParameter("banji"); Stringloginname=req.getParameter("loginname"); Stringloginpw=req.getParameter("loginpw"); Stringdel="no"; Stringsql="insertintot_xueshengvalues(?,?,?,?,?,?,?,?)"; Object[]params={xuehao,xingming,xingbie,nianling,banji,loginname,loginpw,del}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","xuesheng?type=xueshengMana");StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); } publicvoidxueshengMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListxueshengList=newArrayList(); Stringsql="select*fromt_xueshengwheredel='no'"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Txueshengxuesheng=newTxuesheng(); xuesheng.setId(rs.getInt("id")); xuesheng.setXuehao(rs.getString("xuehao")); xuesheng.setXingming(rs.getString("xingming")); xuesheng.setXingbie(rs.getString("xingbie")); xuesheng.setNianling(rs.getString("nianling")); xuesheng.setBanji(rs.getString("banji")); xuesheng.setLoginname(rs.getString("loginname")); xuesheng.setLoginpw(rs.getString("loginpw")); xuesheng.setDel(rs.getString("del")); xueshengList.add(xuesheng); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("xueshengList",xueshengList); req.getRequestDispatcher("admin/xuesheng/xueshengMana.jsp").forward(req,res); } publicvoidxueshengDel(HttpServletRequestreq,HttpServletResponseres) { Stringsql="updatet_xueshengsetdel='yes'whereid="+Integer.parseInt(req.getParameter("id")); Object[]params={}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","xuesheng?type=xueshengMana");StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); }4.2.2老师信息管理老师信息录入老师信息录入与学生信息录入大致相同,程序效果图如下图4.7所示:图4.7老师信息录入老师信息管理描述:管理员点击“老师信息管理”菜单,页面随即跳转到相关界面,调用后台的action类查询全部老师信息。程序效果图如下图4.8所示:图4.8老师信息管理老师信息管理关键代码: publicvoidlaoshiAdd(HttpServletRequestreq,HttpServletResponseres) { Stringbianhao=req.getParameter("bianhao"); Stringxingming=req.getParameter("xingming"); Stringxingbie=req.getParameter("xingbie"); Stringnianling=req.getParameter("nianling"); Stringzhicheng=req.getParameter("zhicheng"); Stringloginname=req.getParameter("loginname"); Stringloginpw=req.getParameter("loginpw"); Stringdel="no"; Stringsql="insertintot_laoshivalues(?,?,?,?,?,?,?,?)"; Object[]params={bianhao,xingming,xingbie,nianling,zhicheng,loginname,loginpw,del}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","laoshi?type=laoshiMana");StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); } publicvoidlaoshiMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListlaoshiList=newArrayList(); Stringsql="select*fromt_laoshiwheredel='no'"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Tlaoshilaoshi=newTlaoshi(); laoshi.setId(rs.getInt("id")); laoshi.setBianhao(rs.getString("bianhao")); laoshi.setXingming(rs.getString("xingming")); laoshi.setXingbie(rs.getString("xingbie")); laoshi.setNianling(rs.getString("nianling")); laoshi.setZhicheng(rs.getString("zhicheng")); laoshi.setDel(rs.getString("del")); laoshiList.add(laoshi); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("laoshiList",laoshiList); req.getRequestDispatcher("admin/laoshi/laoshiMana.jsp").forward(req,res); } publicvoidlaoshiDel(HttpServletRequestreq,HttpServletResponseres) { Stringsql="updatet_laoshisetdel='yes'whereid="+Integer.parseInt(req.getParameter("id")); Object[]params={}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","laoshi?type=laoshiMana");StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); }4.2.3课程信息管理课程信息录入描述:管理员逐步输入课程信息,包括课程编号、课程名称和课时,相关信息正确输入后,点击提交,信息则保证在系统中。程序效果图如下图4.10所示:图4.10课程信息录入课程信息管理描述:管理员点击“课程信息管理”菜单,页面跳转到课程信息管理界面,调用后台的action类查询全部课程信息。如果查询的课程信息没有录入系统,将会提示不存在。程序效果图如下图4.11所示图4.11课程信息管理课程信息管理关键代码: publicvoidkechengAdd(HttpServletRequestreq,HttpServletResponseres) { Stringbianhao=req.getParameter("bianhao"); Stringmingcheng=req.getParameter("mingcheng"); Stringkeshi=req.getParameter("keshi"); Stringdel="no"; Stringsql="insertintot_kechengvalues(?,?,?,?)"; Object[]params={bianhao,mingcheng,keshi,del}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","kecheng?type=kechengMana");StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); } publicvoidkechengMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListkechengList=newArrayList(); Stringsql="select*fromt_kechengwheredel='no'"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Tkechengkecheng=newTkecheng(); kecheng.setId(rs.getInt("id")); kecheng.setBianhao(rs.getString("bianhao")); kecheng.setMingcheng(rs.getString("mingcheng")); kecheng.setKeshi(rs.getString("keshi")); kecheng.setDel(rs.getString("del")); kechengList.add(kecheng); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("kechengList",kechengList); req.getRequestDispatcher("admin/kecheng/kechengMana.jsp").forward(req,res); } publicvoidkechengDel(HttpServletRequestreq,HttpServletResponseres) { Stringsql="updatet_kechengsetdel='yes'whereid="+Integer.parseInt(req.getParameter("id")); Object[]params={}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","kecheng?type=kechengMana");StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); }4.2.4课表信息管理课表信息录入课表信息录入与课程信息录入过程相同,在此将不再赘述。程序效果图如下图4.13所示:图4.13课表信息录入课表信息管理描述:管理员点击“课表信息管理”菜单,页面跳转到课表信息管理界面,调用后台的action类查询所有课表信息。程序效果图如下图4.14所示:图4.14课表信息管理课表信息管理关键代码: publicvoidkebiaoAdd(HttpServletRequestreq,HttpServletResponseres) { intkecheng_id=Integer.parseInt(req.getParameter("kecheng_id")); Stringshijian=req.getParameter("shijian"); Stringjieci=req.getParameter("jieci"); Stringjiaoshi=req.getParameter("jiaoshi"); intlaoshi_id=Integer.parseInt(req.getParameter("laoshi_id")); Stringsql="insertintot_kebiaovalues(?,?,?,?,?)"; Object[]params={kecheng_id,shijian,jieci,jiaoshi,laoshi_id}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","kebiao?type=kebiaoMana");StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); } publicvoidkebiaoMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListkebiaoList=newArrayList(); Stringsql="select*fromt_kebiao"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Tkebiaokebiao=newTkebiao(); kebiao.setId(rs.getInt("id")); kebiao.setKecheng_id(rs.getInt("kecheng_id")); kebiao.setShijian(rs.getString("shijian")); kebiao.setJieci(rs.getString("jieci")); kebiao.setJiaoshi(rs.getString("jiaoshi")); kebiao.setLaoshi_id(rs.getString("laoshi_id")); kebiao.setKecheng(utilService.get_kecheng(rs.getInt("kecheng_id"))); kebiao.setLaoshi(utilService.get_laoshi(rs.getInt("laoshi_id"))); kebiaoList.add(kebiao); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("kebiaoList",kebiaoList); req.getRequestDispatcher("admin/kebiao/kebiaoMana.jsp").forward(req,res); } publicvoidkebiaoDel(HttpServletRequestreq,HttpServletResponseres) { Stringsql="deletefromt_kebiaowhereid="+Integer.parseInt(req.getParameter("id")); Object[]params={}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","kebiao?type=kebiaoMana");StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); }4.2.5奖惩信息管理奖惩信息录入描述:管理员输入奖惩信息,备注信息不能为空,如果没有则填“无”。相关信息正确录入后点击提交按钮。输入数据都通过form表单中定义的方法onsubmit="returncheckForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。程序效果图如下图4.16所示:图4.16奖惩信息录入奖惩信息管理程序效果图如下图4.17所示:图4.17奖惩信息管理奖惩信息管理关键代码: publicvoidjiangchengAdd(HttpServletRequestreq,HttpServletResponseres) { intxuesheng_id=Integer.parseInt(req.getParameter("xuesheng_id")); Stringshijian=req.getParameter("shijian"); Stringshuxing=req.getParameter("shuxing"); Stringbeizhu=req.getParameter("beizhu"); Stringsql="insertintot_jiangchengvalues(?,?,?,?)"; Object[]params={xuesheng_id,shijian,shuxing,beizhu}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","jiangcheng?type=jiangchengMana");StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); } publicvoidjiangchengDel(HttpServletRequestreq,HttpServletResponseres) { Stringsql="deletefromt_jiangchengwhereid="+Integer.parseInt(req.getParameter("id")); Object[]params={}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","jiangcheng?type=jiangchengMana");StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); } publicvoidjiangchengMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListjiangchengList=newArrayList(); Stringsql="select*fromt_jiangcheng"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Tjiangchengjiangcheng=newTjiangcheng(); jiangcheng.setId(rs.getInt("id")); jiangcheng.setXuesheng_id(rs.getInt("xuesheng_id")); jiangcheng.setShijian(rs.getString("shijian")); jiangcheng.setShuxing(rs.getString("shuxing")); jiangcheng.setBeizhu(rs.getString("beizhu")); jiangcheng.setXuesheng(utilService.get_xuesheng(rs.getInt("xuesheng_id"))); jiangchengList.add(jiangcheng); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("jiangchengList",jiangchengList); req.getRequestDispatcher("admin/jiangcheng/jiangchengMana.jsp").forward(req,res); }4.2.6修改密码描述:用户如果想要修改密码,首先必须输入正确的用户名和原始密码,成功后才能输入新密码,再点击修改按钮,修改成功或失败会有提示。程序效果图如图4.21所示:图4.21修改密码4.2.7退出系统描述:点此“退出”按钮则返回登录界面。关键代码:主要是通过javascript语句来实现,item_word[8][4]="退出系统";item_link[8][4]="javascript:window.open('../index.jsp','_self')";4.3学生功能模块4.3.1学生选课管理添加选课信息描述:用户点击左侧的“课表信息浏览”菜单,页面跳转到课表信息浏览界面,调用后台的action类查询所有课表信息,选择某一项课表内容,完成选课。程序效果图如下图4.22、图4.23所示图4.22课表信息浏览图4.23学生选课操作学生选课管理关键代码: publicvoidkebiaoAll1(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListkebiaoList=newArrayList(); Stringsql="select
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 187红色喜庆金榜题名感谢恩师升学宴活动策划模板下载 2
- 大型设备技术管理制度培训
- 2025《窦娥冤》女性抗争意识课件
- 2025《百合花》中通讯员与新媳妇之间情感的微妙变化课件
- 2026年生态农业观光园开发协议
- 2026年跨境品牌维权代理合同
- 机械安全操作一般规定培训课件
- 楼宇自控运行技师岗位职责培训
- 农电公司安全考核办法培训课件
- 配电室值班安全工作制度培训
- 2026年部编版新教材语文小学三年级下册教学计划(含进度表)
- 铁路路基防护栅栏工程监理细则
- 2023版思想道德与法治专题1 担当复兴大任 成就时代新人
- 钢结构工程监理实施细则
- 地下室顶板行车与堆载验算与加固方案(完整资料)
- GB/T 8629-2001纺织品试验用家庭洗涤和干燥程序
- GB 20904-2007水平定向钻机安全操作规程
- 土方平衡方案
- 毛笔字教学讲解课件
- 大班课件《有序排队》
- 新苏教版小学科学一年级下册教案(全套)
评论
0/150
提交评论