1、Java EE课程设计案例课程设计案例(SSH)第九章第九章了解Java EE课程设计要求掌握Java EE集成框架开发过程学习内容熟悉Java EE中SSH框架的综合应用熟悉后台数据库的设计原理掌握Java EE模块化开发步骤课程设计简述1需求分析2搭建开发环境 3功能流程设计方案4目 录CONTENTS平台功能实现5课程设计简述1课程设计简述课程设计简述本次课程设计使用了一套基于SSH的课程辅导教学系统,它采用模块化方式来开发,完成具有不同用户身份验证登录,上机代码的上传与下载,作业下载与提交,上机实验演示系统(包括视频演示与PPT演示),发布作业信息与学习资料管理,信息维护等相关功能的W
2、eb应用程序。课程设计简述课程设计简述对于这套系统的基本要求如下:p 完成PPT的上传和下载功能;p 完成作业下载与提交;p 完成上机实验演示系统;p 完成发布留言讨论功能;p 完成发布系统公告功能;p 完成信息维护;p 完成不同用户身份的验证登录,管理员,老师,学生登陆后进入不同界面,能够使用不同功能,管理不同信息。课程设计简述课程设计简述其中,管理员负责老师信息管理,学生信息管理和公告管理,同时可以修改自己的登录密码。老师账号和学生账号必须由管理员导入后才能进行登录。老师可以进行教学资料管理,教学视频管理,信息交流管理,布置作业管理和个人信息管理。学生可以进行作业下载,作业管理和个人信息修
3、改。需求分析 功能性描述 设计思想2 系统功能结构需求分析需求分析功能性描述项目需求分析是一个项目的开端,也是项目建设的基石。在以往建设失败的项目中,大多数是由于需求分析的不明确而造成。需求分析是分析系统在功能上需要“实现什么”,而不是考虑如何去“实现”。需求分析的目标是把用户对待开发软件提出的“要求”或“需要”进行分析与整理,确认后形成描述完整、清晰与规范的文档,确定软件需要实现哪些功能,完成哪些工作。需求分析需求分析功能性描述课程辅导教学系统旨在解决老师和学生通过系统进行教与学,在系统帮助下进行学习或辅导教学的问题。主要实现教学资料(包括PPT)和视频的上传、下载以及在线浏览,作业的发布和
4、提交,教师和学生的交流以及学生和学生之间的交流等功能。本系统使用管理员、老师、学生三种不同的用户身份验证登录,不同的用户身份权限不同。整个系统分为主要由老师信息管理,学生信息管理,系统公告管理,教学资料管理,教学视频管理,信息交流管理,作业信息管理和个人信息管理等组成。其具体功能如下:需求分析需求分析功能性描述 老师信息管理和学生信息管理:由管理员进行管理,可以对老师和学生的各类信息进行增加,删除操作。只有老师或学生的信息被管理员增加到系统中后,该教师或学生才能登陆本系统。系统公告管理:由管理员进行管理,对系统公告进行增加、删除操作。教学资料管理和教学视频管理:由老师进行操作,对PPT、视频、
5、文本文档或其他文件进行上传和删除操作。视频上传后,学生可以进行下载或在线播放。信息交流管理:由老师进行管理,可以发布留言信息,也可以对自己或学生发布的留言信息进行删除操作。需求分析需求分析功能性描述 作业信息管理:由老师和学生共同管理。老师可以发布作业任务并上传相关附件,也可以删除作业任务。老师上传作业任务后,学生可以下载或在线浏览作业任务。学生完成作业任务,可以通过系统将作业上传。这时老师能够查看学生提交的作业任务信息,并给出评语,同时可以删除学生完成的作业任务。登录密码管理:对自己可以在验证旧密码成功之后,修改新密码。个人信息管理:除管理员可以对所有老师和学生用户的信息进行管理外,老师或学
6、生也可以对自己的个人信息进行修改。需求分析需求分析设计思想在平台系统功能设计的过程当中,所遵循的思想为:p 为了满足多数用户浏览网页的习惯,可以利用SSH当中的MVC模式,能彻底分开前台页面的处理和后台服务器的操作。p 采用面向对象技术能使得整个系统的高度和准确抽象。这是整个Java语言的特点。p 划分系统,分成若干个小的功能块,有利于代码的重载,简化设计和实现过程。p 将系统的界面设计的简单友好。使用户能够快速的操作。p 为了更加全面的满足用户的需求,有任何可能需要修改进步的地方,都要很细致的完成修改,达到用户的设计需求。需求分析需求分析系统功能结构跟据系统功能需求,把整个系统分析来划分成几
7、个功能模块:管理员模块,学生和老师模块。系统的功能模块如下图所示:搭建开发环境 配置实例3MyBatis 配置配置配置实例本系统采用SSH,即Struts2+Spring+DAO+DWR+Hibernate框架架构。SSH集成开发中,Struts 为表示层主要负责控制使用,Hibernate 为持久层负责操作数据库的,Spring为业务逻辑层用于各层解耦业务使用。MyBatis 配置配置配置实例1.在MySQL中建立数据库db_javaxc和各个对应的表,并在表中添加相关信息。2.在MyEclipse中建立Web项目javaxc。给项目添加Spring核心容器。右击项目名称选择:MyEclip
8、se-Project Facts Capabilities-Install Spring Facet。然后选择Spring版本和服务器运行环境配置,配置Spring,选择Spring包,即可将Spring容器添加完毕。MyBatis 配置配置配置实例3.给项目添加Hibernate框架。添加Hibernate框架之前要先将MyEclipse链接数据库,正确填写相关信息,并使用mysql.jar即可链接成功。右击项目名称选择:MyEclipse-Project Facts Capabilities-Install Hibernate Facet,选择Hibernate版本运行时信息,即可添加成功
9、。4.给项目添加Struts框架。右击项目名称选择:选择 MyEclipse-Project Facets Capabilities-Install Apache Struts(2.x)Facet添加Struts,配置Struts2,选择Spring包。MyBatis 配置配置配置实例5.生成数据库表对应的Java类对象和映射文件。打开前面创建的MySQL链接,对每个表启动Hibernate Reverse Engineering向导,从已有的数据库表生成对应的POJO对象及映射文件。6.分别在src目录下创建各个类文件,并修改web.xml、applicationContext.xml、st
10、ruts.xml等配置文件。添加JSP页面在每个JSP页面对用户进行拦截操作。将系统部署到Tomcat中,在浏览器中输入url即可显示界面。功能流程设计方案 设置界面关系 类设计4 数据库逻辑结构设计功能流程设计方案功能流程设计方案设计界面关系1.设计界面关系课程辅导教学系统的界面关系如图所示:在系统主页面首先要选择身份登陆,不同的身份意味着有不同的操作权限,因此,在身份的选择上,本系统提供了三种:管理员、老师和学生。选择相对应的身份,方可进入相应的操作界面。功能流程设计方案功能流程设计方案设计界面关系2.用户登陆流程用户登陆需要输入信息验证,信息包括用户名和密码。校验的根据是输入的内容是否与
11、先前存储在数据库中的信息一致。当校验成功后,会有验证码验证环节,成功输对验证码后方可登陆成功,否则其他情况一律失败。用户登陆流程图如图所示。功能流程设计方案功能流程设计方案设计界面关系3.老师信息管理和学生信息管理流程用户的信息管理方式主要包含两大功能:信息添加与信息管理。信息添加时所添加的内容只有全部符合才会被成功写到数据库中。信息管理主要做的工作就是查询和删除,流程图如图所示:功能流程设计方案功能流程设计方案设计界面关系3.老师信息管理和学生信息管理流程功能流程设计方案功能流程设计方案设计界面关系4.系统公告管理流程系统公告管理同样分为两大块系:公告添加和公告管理。但它添加了清空信息项和返
12、回学生主界面的操作。具体流程如图所示。功能流程设计方案功能流程设计方案设计界面关系5.教学资料管理和教学视频管理流程功能流程设计方案功能流程设计方案设计界面关系5.教学资料管理和教学视频管理流程功能流程设计方案功能流程设计方案设计界面关系6.信息交流管理流程在信息交流管理模块中,学生必须登陆后才能上传留言,而处理这些留言是由老师信息交流模块处理的。方式包括删除和回复,具体流程如图所示。功能流程设计方案功能流程设计方案设计界面关系7.作业信息管理流程作业信息管理模块较为复杂,对于学生而言,操作权限仅限于作业的下载和作业的上传。对于老师管理而言,操作权限包括布置作业、评作业以及作业信息发步。具体流
13、程如图所示。功能流程设计方案功能流程设计方案类设计p Action类action包里主要有adminAction、docAction、gonggaoAction、indexAction等类。他们的作用大致相同。action类在Struts2中承担了Model的角色,主要用于处理业务逻辑并存放HTTP请求处理过程中各个变量的值。Action充当着MVC中模型的角色,也就是Action既封装了业务数据,又要处理业务功能。在Struts2中,作为action的Java类不需要继承任何父类,也不需要实现任何接口。只要包含一个叫做execute()的方法,同时该execute()方法返回类型为Strin
14、g,那么这个Java类就可以作为Struts2应用程序中的action类而出现。这么做的原因很明显:降低了应用程序代码和Struts代码之间的耦合,让应用代码更加的独立。功能流程设计方案功能流程设计方案类设计p Service类即loginService类。Service层是业务层,做相应的业务逻辑处理,引用对应的Dao层数据库操作。功能流程设计方案功能流程设计方案类设计p Dao类dao包里主要有TadminDAO、TdocDAO、TgonggaoDAO、TLiuyanDAO、TShipinDao等类。DAO层负责数据库访问,在系统中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个
15、单独的类来实现这个接口,这个单独的类就是Dao类。DAO层处理的应该是对象关系相互转换的工作,它需要的是一个连接对象。功能流程设计方案功能流程设计方案类设计p Model类model包里主要有Tadmin、Tdoc、Tgonggao、TLiuyan、TShipin等类。Model层,代表模型,从已有的数据库表生成对应的POJO对象及映射文件。Model层里面的一个类对应数据库里面的一张表,类里面的每一个属性对应表里面的一个字段,每个属性都有自己的GET和SET方法,项目中的数据存取都要依靠GET和SET方法来实现。功能流程设计方案功能流程设计方案数据库逻辑结构设计为了提高整个系统的质量和效率,
16、有必要设计出好的数据库。需要进行数据的存储收集,数据的检索整理,和数据的更新加工等。规划数据后,进行需求分析,设计出数据概念,分析数据逻辑,最后物理实现。这就是核心数据库的开发设计过程。功能流程设计方案功能流程设计方案数据库逻辑结构设计数据库对应着特定独立的数据库概念模型。根据具体使用本平台的用户,将得到的关系模型有学生用户,老师用户和管理员用户等所需要的信息,如图所示。内部包含管理员注册的相关信息。功能流程设计方案功能流程设计方案数据库逻辑结构设计老师用户信息表如图所示,内部包含老师用户在系统中的基本信息。功能流程设计方案功能流程设计方案数据库逻辑结构设计学生用户信息表如下图所示,内部包含学
17、生用户在系统中的基本信息。功能流程设计方案功能流程设计方案数据库逻辑结构设计作业内容信息表如图所示,内部包含作业内容在系统中的相关信息。功能流程设计方案功能流程设计方案数据库逻辑结构设计教学视频内容信息表如图所示,内部包含教学内容在系统中的相关信息。功能流程设计方案功能流程设计方案数据库逻辑结构设计教学资料信息表如图所示,包含教学资料内容在系统中的相关信息。功能流程设计方案功能流程设计方案数据库逻辑结构设计留言信息表如图所示,内部包含学生用户留言内容的相关信息。功能流程设计方案功能流程设计方案数据库逻辑结构设计公告内容信息表如图所示,包含了系统中公告内容的基本信息。平台功能实现 创建工程项目
18、三层架构开发5 系统实现平台功能实现平台功能实现创建工程项目在MyEclipse 2017中新建J2EE项目,主要步骤如下:创建数据库和表;添加Spring核心容器;添加Hibernate框架;添加Struts框架;集成Spring与Struts2框架。平台功能实现平台功能实现创建工程项目项目src目录中各包放置代码用途如下:p com.action:放置Struts 2的Action控制模块。p com.dao:放置DAO实现类。p com.model:放置POJO类及映射文件。p com.service:放置业务逻辑实现类。p com.util:放置公用的工具类。平台功能实现平台功能实现三
19、层架构开发1.创建数据库和数据表利用Navicat工具,连接到MySQL,然后创建好名为db_javaxc的数据库,然后按照系统数据库设计中的设计图,新建表t_admin、t_doc、t_gonggao、t_liuyan、t_shipin、t_stu、t_tea、t_zuoyes、t_zuoyet,然后向表中添加数据。如图所示:平台功能实现平台功能实现三层架构开发2.在MyEclipse中连接MySQL数据库启 动 M y E c l i p s e 2 0 1 4,选 择 W i n d o w O p e n PerspectiveMyEclipse Database Explorer菜单
20、项,打开MyEclipse 中DB Browser浏览器,右击菜单,如下图所示。平台功能实现平台功能实现三层架构开发接下来选择MyEclipse Derby,右击选择New,将弹出Database Driver窗口。如后图所示。在Database Driver窗口内,将有几行对话框,其代表意思与输入数据如下:Driver template:选择数据库驱动模板。Driver Name:定义数据库连接名称。我们这里起名为MySQL。Connection URL:定义数据库的连接URL。如后图所示,因为采用的是M y S Q L 数 据 库,而 且 是 J D B C 的 方 法,所 以 前 面 为
21、jdbc:mysql:/localhost:3306/要连接数的据库名字(本实训为db_javaxc),所以最终URL为dbc:mysql:/localhost:3306/db_javaxc。平台功能实现平台功能实现三层架构开发 User name:定义登录数据库的用户名。一般为root。Password:输入登录的用户密码。之前配置MySQL所输入的密码。本实训为226485。Driver JARs:定义连接数据库采用的JAR包。需要导入数据库驱动程序,在资源里有,点击Add JARs,导入mysql-connector-java-5.1.13-bin.jar。如后图所示。Driver cl
22、assname:选择数据库连接驱动的类名称。完成上述步骤,自动生成。如后图所示,至此,数据库Driver配置完成。平台功能实现平台功能实现三层架构开发平台功能实现平台功能实现三层架构开发平台功能实现平台功能实现三层架构开发完成数据库Driver配置后,需要在左侧的DB Browser中打开连接,右击创建的数据库,此处为MySQL,选择Open connection。输入MySQL的密码,即可完成MyEclipse对MySQL数据库的连接。如图所示。平台功能实现平台功能实现三层架构开发完成数据库Driver配置后,需要在左侧的DB Browser中打开连接,右击创建的数据库,此处为MySQL,选
23、择Open connection。输入MySQL的密码,即可完成MyEclipse对MySQL数据库的连接。如图所示。平台功能实现平台功能实现三层架构开发3.创建Web项目,进行SSH集成开发在MyEclipse2014中,选择菜单File-new-Web Project,新建一个javaxc的项目。平台功能实现平台功能实现三层架构开发 添加Spring右击项目名称,选择MyEclipseProject FacetsCapabilitiesInstall Spring Facet命令,然后进入选择Spring版本和服务器运行环境配置界面。如图所示。平台功能实现平台功能实现三层架构开发 添加Hi
24、bernate首先需要创建数据库连接,然后添加Hibernate。MyEclipse连接MySQL数据库在上面有详细步骤。连接后,右击项目名称,选择MyEclipseProject FactsCapabilitiesInstall Hibernate Facet命令,如图所示。平台功能实现平台功能实现三层架构开发 添加Struts右 击 项 目 名 称,选 择 M y E c l i p s e P r o j e c t FacetsCapabilitiesInstall Apache Struts(2.x)Facet命令添加Struts。点击Next,进入配置界面,选择Struts版本和运
25、行信息对话框,如图所示。点击Next,进入配置界面,如图所示。平台功能实现平台功能实现三层架构开发 生成数据库对应的Java类对象和映射生成文件依次创建各表的POJO对象及映射文件。下面以t_admin表创建实例,其 他 表 类 似。从 主 菜 单 栏 中 选 择 W i n d o w O p e n PerspectiveOtherMyEclipse Database Explorer命令,打开MyEclipse Database Explorer视图。打开前面创建的MySQL数据连接,选择MySQLdboTABLE项,右击t_admin表,选择快捷菜单中的Hibernate Revers
26、e Engineering命令,如图所示。然后选择生成Java类和映像文件所在的位置,生成Hibernate映射文件和Java POJO类。平台功能实现平台功能实现三层架构开发平台功能实现平台功能实现三层架构开发 创建DAO、Service、Action类分别在src目录下创建com.action、com.dao、com.model、com.service和com.util四个包,然后分别在四个包中新建各个类文件(完整详细代码在实训资源包)。平台功能实现平台功能实现三层架构开发 修改配置文件修改web.xml修改applicationContext.xml修改struts.xml添加JSP页面
27、部署运行项目(具体项目源码见案例资源包)平台功能实现平台功能实现三层架构开发最后,将系统部署到Tomcat的sshjava目录中,打开浏览器后输入:http:/127.0.0.1:8080/sshjava,出现的系统主界面,如图所示。平台功能实现平台功能实现系统实现1.管理员和老师登陆界面在登录平台时,运用了Ajax方式进行用户验证,为了保证系统的安全性,使得不能不登录就可以操作数据库的内容,当用户在前台界面的所有信息后,系统将在后台对这些内容进行异步验证用户的账号、密码和登录类型,才能登录系统,继续操作。平台功能实现平台功能实现系统实现1.管理员和老师登陆界面就本平台系统的使用用户而言,需要
28、两种平台登录界面,如下图所示:平台功能实现平台功能实现系统实现2.不同验证身份主界面由于本系统有不同三种不同身份验证登录,每种身份对应不同的主界面,管理员主界面、老师主界面和学生主界面。当登陆到系统管理员主界面,管理员可以进行老师信息管理、学生信息管理、系统公告管理和修改登陆密码的操作。如下图所示。平台功能实现平台功能实现系统实现2.不同验证身份主界面平台功能实现平台功能实现系统实现2.不同验证身份主界面在老师用户登陆平台后,能够实现教学资料管理、教学视频管理、作业信息管理、留言交流、修改个人信息的功能模块。如下图所示。平台功能实现平台功能实现系统实现2.不同验证身份主界面平台功能实现平台功能
29、实现系统实现2.不同验证身份主界面学生用户可以直接在平台上面浏览网页内容,学习课程,完成作业,也可以观看教学视频。在登陆成功后能够与老师进行交流,就学习方面的事情进行讨论,如下图所示:平台功能实现平台功能实现系统实现2.不同验证身份主界面平台功能实现平台功能实现系统实现在修改登录密码操作中,需要点击“修改登陆密码”按钮,需要输入原密码进行验证,才可以完成密码修改的操作。平台功能实现平台功能实现系统实现在老师信息管理模块当中,管理员可以进行老师信息录入、删除操作功能,在学生信息管理模块当中的学生信息录入、删除操作功能,以及在系统公告管理模块当中的系统公告录入、删除操作功能。具体的老师信息录入操作
30、界面,如下图所示:平台功能实现平台功能实现系统实现对学生信息的录入操作界面,如下图所示:平台功能实现平台功能实现系统实现添加公告信息,是对公告信息的删除,如下图所示。平台功能实现平台功能实现系统实现3.老师信息管理和学生信息管理由系统管理员负责管理。可以进行老师或学生信息添加和管理。进行学生信息添加时分别输入学生的各类信息,如果每项信息填写都符合要求,点击提交后页面显示操作成功,学生信息被添加到底层数据库中,并能够在学生信息管理中查看到新加入的学生信息。否则需重新填写。点击取消则取消该信息的添加,跳回管理员主界面。平台功能实现平台功能实现系统实现3.老师信息管理和学生信息管理平台功能实现平台功
31、能实现系统实现3.老师信息管理和学生信息管理进行学生信息管理时,点击删除即可删除相应学生信息,删除成功后页面显示删除成功。老师信息添加和管理与此相同,不再赘述。平台功能实现平台功能实现系统实现在老师用户登陆平台后,能够实现修改个人信息、作业管理、教学视频管理、作业信息管理、留言交流的功能模块。在修改登录密码操作中,需要点击“修改个人信息”按钮,输入信息,就可以完成密码修改的操作。修改信息资料页面,如下图所示:平台功能实现平台功能实现系统实现老师在作业管理模块当中实现了作业的添加、删除操作功能,在作业视频管理模块当中实现了作业视频的添加、删除操作功能,在作业信息管理模块当中实现了学生作业查看、删
32、除操作功能,在交流互动模块实现了学生留言回复、删除操作功能。作业资料添加、删除功能实现,如图所示:平台功能实现平台功能实现系统实现老师在在教学资料管理模块当中实现了教学资料的添加、删除操作功能,在教学视频管理模块当中实现了教学视频的添加、删除操作功能,在作业信息管理模块当中实现了学生作业查看、删除操作功能,在交流互动模块实现了学生留言回复、删除操作功能。作业讲解视频添加、删除功能实现,如图所示:平台功能实现平台功能实现系统实现作业信息添加、删除功能,如下图所示:平台功能实现平台功能实现系统实现留言交流管理功能实现,如下图:平台功能实现平台功能实现系统实现4.系统公告管理由系统管理员进行管理,学
33、生可以进行查看。主要有系统公告添加和管理功能。进行系统公告添加时输入各项信息,如过信息填写符合要求,点击提交后页面显示操作成功,系统公告被添加到底层数据库中,并能够在系统公告管理中查看到新加入的系统公告。学生也能够在学生主界面中看到系统管理员发布的公告。如果填写不符合要求需重新填写。点击重置,使当前页面填写的信息全部清空。平台功能实现平台功能实现系统实现4.系统公告管理平台功能实现平台功能实现系统实现4.系统公告管理同时系统管理员能够删除系统公告。管理员删除公告后,学生在学生主界面无法再看到此公告信息。平台功能实现平台功能实现系统实现5.教学资料管理和教学视频管理由老师进行管理,学生进行使用。
34、老师对教学资料(包括PPT、上机代码和实验)、教学视频进行上传和删除操作。老师上传教学资料和教学视频后,学生可以进行下载或在线浏览。平台功能实现平台功能实现系统实现5.教学资料管理和教学视频管理老师可以进行教学视频添加,写入符合要求的视频标题、附件、介绍,即可提交,教学视频会添加到底层数据库中,并能够在教学视频管理中查看到新加入的教学视频。如果填入信息不符合要求,则需要重新填写。点击重置,该页面已填写的信息全部清空。老师上传教学视频后,学生可以在学生主界面演示系统中看件已上传的教学视频。平台功能实现平台功能实现系统实现5.教学资料管理和教学视频管理学生身份登录用户可以在演示系统中下载视频,也可
35、以在演示系统中在线浏览视频。平台功能实现平台功能实现系统实现5.教学资料管理和教学视频管理此外,老师也可以进行教学资料删除操作。教学资料删除后,学生无法在学生主界面看到该视频。教学资料管理与此类似,不再赘述。平台功能实现平台功能实现系统实现6.信息交流管理由老师进行和学生共同进行管理。学生在登陆后才可以发布留言,否则界面会提示登录。登录成功后填入信息内容点击提交就可以发布留言了。留言发布后,可以在留言板中查看到该留言。浏览此网页的用户都可以看到。平台功能实现平台功能实现系统实现6.信息交流管理老师可以在信息交流模块中对学生的留言进行删除和回复。平台功能实现平台功能实现系统实现7.作业信息管理由
36、老师和学生共同管理。老师可以进行作业信息发布,输入符合要求的信息,即可提交,作业信息会添加到底层数据库中,并能够在布置作业管理中查看到新加入的作业信息。如果填入信息不符合要求,则需要重新填写。点击重置,可以该页面已填写的信息全部清空。平台功能实现平台功能实现系统实现7.作业信息管理老师上传作业任务后,学生可以在个学生主界面中下载作业任务。学生完成作业任务后,可以通过系统将作业上传。这时老师能够查看学生提交的作业,并给出评语,同时可以删除学生完成的作业任务。平台功能实现平台功能实现系统实现8.个人信息管理各众身份的用户都有此功能。除管理员可以对所有老师和学生用户的信息进行管理外,老师或学生也可以
37、对自己的个人信息进行修改。小结本章主要介绍Struts2、Hibernate和Spring三个框架融合开发的系统的具体过程和步骤,按照课程设计的要求从软件工程开发的角度全方位介绍了可行性分析、需求分析、设计、编码、测试、部署等过程内容,在开发过程中灵活使用各种Ajax、JQuery、DWR、CKEditor等技术,进一步培养SSH架构综合应用开发能力。Java EE课程设计案例课程设计案例(SSM)第十章第十章了解Java EE面向接口开发概念掌握Java EE的应用分层框架学习内容熟悉项目后台数据库的设计了解SSM框架的综合应用项目需求分析1功能流程设计2数据库设计 3系统实现4目 录CON
38、TENTS系统运行界面展示5项目需求分析1 系统功能需求 系统流程分析项目需求分析项目需求分析该系统旨在解决学生选择毕业设计课程设计题目的问题。这个问题的要求包括学生对现有课题的了解过程,选择课题,重选课题,查看自身已选课题的过程,老师对课程题目的相关信息有增删改的功能,对已选课题学生有一个有总体情况的查看功能。其次老师为了实现所有课题都有一定或者适宜数量的人去选择,老师有权限去修改规定对应课题的对应库存(课题的最多可选人数)。以及基本的用户登陆验证问题。系统功能需求项目需求分析项目需求分析系统解决问题的过程中出现了以下的对象:学生用户对象,老师用户对象,课题对象等。学生用户对象对课题对象有选
39、择功能,一次选择生成一条记录,根据该记录在数据库课题选择情况表中生成相应的数据并更改课题表中相应课题的库存,重新选择课题功能需要将课题选择情况表中的该学号用户的选择记录删除,再添加入新的选题数据,并在课题表中修改相应课题的库存量。并且需要在用户选择课程库存量不足的情况下,向学生用户反馈信息,提示重选。学生用户有查看自己选课情况的功能需求。系统功能需求项目需求分析项目需求分析老师用户是学生用户中的一类特殊用户,老师用户相对于学生用户拥有对课题操作的特殊权限,因此系统需要分配给老师用户对课题操作的不同的功能权限需求,包括增加新课题数据,修改原有课题数据,限制规定课题库存量,查看所有已选学生的选课情
40、况。系统功能需求项目需求分析项目需求分析用户对象登录功能实现需求,系统通过用户名来区分用户所具有的权限,并在登录后自动的跳转到相应的操作页面。用户登陆时,为了避免机器穷举攻击登录他人用户,要求系统在登陆界面中添加验证码功能来区分用户和机器,防止用户账户遭到恶意入侵和更改。系统功能需求项目需求分析项目需求分析本章项目具体的需求分析,如图所示。用户登陆都需要验证信息,验证成功后才能登陆系统。用户按照执行任务和权限分为两种:学生和管理员,两者拥有不同的管理页面。学生用户主要做的即选择课题和查看已选择的课题;管理员做的是查看选课情况和对课题的增、删、改、查操作。系统流程分析功能流程设计 系统模块描述
41、系统编程环境2 前端页面设计 核心类设计功能流程设计功能流程设计整个系统体系结构框架如图所示。系统分为三大块:前台界面、后台以及数据库操作。相应的项目文件名称以及细分的模块如图所示。系统模块描述功能流程设计功能流程设计根据体系结构图可知,后端连接中有很多模块,下面简单介绍下相应的模块具体有什么作用。pDao模块中实现了三个接口:EnrollmentDao,ProjectDao,UserDao。三个接口分别用于与数据库表格的增删改查操作。三个接口的实现依赖于entitiy模块中的Enrollment,Project,User三个对象类以及util模块中的List类。pDto模块中实现了三个类:C
42、hecker,EnrollResult,SelectResult。Checker类提供了用于登陆验证的字符串比较。EnrollResult类用于生成选课记录表的结果记录。SelectResult类用于生成选课的记录。pEntitiy模块中实现了三个类:Enrollment,Project,User。三个类分别用于实例选课记录,课题项目,用户信息这三个对象。为其他模块提供依赖。系统模块描述功能流程设计功能流程设计pException模块中实现了6个类:EmptyFieldException,LoginException,ProjectUpdateException,RepeatSelectExc
43、eption,SelectException和StockException。分别用于实例空文本框异常,登陆异常,课题项目编辑更新异常,重复选择课题异常,选课异常和库存异常。pService模块中实现了三个类:EnrollmentServiceImpl,ProjectServiceImpl,UserServiceImpl;和三个接口EnrollmentService,ProjectService,UserService。三个类分别引用了这三个接口。pUtil模块中实现了Util类,Util类中导入了EmptyFieldException类。pWeb模块中实现了主要的SelectControlle
44、r类,控制类依赖于以上几乎所有的类,通过url来实现页面的跳转和功能的实现。系统模块描述功能流程设计功能流程设计本章项目的编程环境为:Windows操作系统,MyEclipse2014编译器,MySQL数据库。Windows操作系统7或10均可。MySQL数据库在第一章和第九章均有讲到过,读者如果感到陌生,可自行复习,在此便不再对MySQL做过多描述了。正版MyEclipse2014是需要收费的,读者可自行购买或下载破解版插件进行破解。安装破解等操作,请读者自行百度学习,在此不对其做详细介绍。系统编程环境功能流程设计功能流程设计关于前端页面设计,我们可以我们首先根据架构图,新建如图所示的目录。
45、具体代码见对应教材的课程设计源码。前端页面设计功能流程设计功能流程设计根据之前提到的架构图,我们需要在后台连接模块中写入实现类。图所示的是各个模块的目录。核心类设计功能流程设计功能流程设计下面我们介绍下操作后台连接的一些接口的具体功能。p EnrollmentDao接口方法:int insertEnrollment(Enrollment enrollment);插入选课记录方法Long selectProjectIdByUserId(Long userId);根据用户id查询课题id方法int deleteByUserId(Long enrollmentId);根据用户id删除记录方法List
46、 selectWithProjectAndUser();根据用户/课题查询方法核心类设计功能流程设计功能流程设计p ProjectDao接口方法:List listAllProjects();列出所以课题方法int reduceStock(Long projectId);减少库存方法int getStock(Long projectId);查询库存方法Project selectProjectById(Long projectId);根据id查询课题方法int insertWithoutId(Project project);插入课题方法Project getProjectById(Long
47、id);获取课题id方法int deleteProjectById(Long id);删除课题方法int updateProjectById(Project project);更新课题方法int increaseStock(Long projectId);增加库存方法核心类设计功能流程设计功能流程设计p UserDao接口方法:User queryByUsername(String username);查询用户方法List listAllUsers();列出所有用户方法核心类设计功能流程设计功能流程设计三个接口的方法具体实现方法见后面的详细代码。我们继续介绍下操作后台连接的一些类的具体功能。p
48、 Enrollment类 字段:enrollmentId,userId,projectId,project,user 方法:对各字段的get/set方法,无参构造方法,带参构造方法,toString()p Project类 字段:projectId,projectName,projectDescription,stock(库存)方法:对各字段的get/set方法,无参构造方法,带参构造方法,toString()p User类字段:userId,username,realname,password方法:对各字段的get/set方法,无参构造方法,带参构造方法,toString()核心类设计功能流
49、程设计功能流程设计p Checker类字段:checked(布尔型),userId,username方法:对各字段的get/set方法,无参构造方法,带参构造方法,toString()p EnrollResult类字段:enrolled(布尔型),enrollmentId,userId,projectId方法:对各字段的get/set方法,无参构造方法,带参构造方法,toString()p SelectResult类字段:success(布尔型),data,error(报错,字符型)方法:对各字段的get/set方法,无参构造方法,带参构造方法,toString()核心类设计功能流程设计功能流
50、程设计6个异常类如下:p EmptyFieldException类:方法:EmptyFieldException(String message)super(message);EmptyFieldException(String message,Throwable cause)super(message,cause);p LoginException类方法:LoginException(String message)super(message);LoginException(String message,Throwable cause)super(message,cause);p Project