《JavaEE编程技术》综合应用系统开发作业管理系统Struts2设计报告studyhardforever

(这里下面的文档结构由于格式原因,序号标题等产生了一些问题,请见谅)

在拿到老师的项目要求之后,首先确定项目的大体方向,然后根据软件工程的基本思想对该项目进行进一步分析和设计,从而使项目的开发思路更加清晰,项目架构更加合理。

合理确定软件的任务与目标,从需求来看,该系统可分为两个模块(教师端与学生端),下面就这两个模块进行进一步需求分析(老师给出的需求报告说明书是基础的需求,在此基础上进行扩充,由于设计需要,一部分设计思路包含在了需求分析中,严格的需求分析是不包含设计和实现思路的):

教师:

一、教学班导入:

1.将教学班信息一次导入(Excel格式导入即可),按教学班号进行导入(ExcelToDB执行多条insert语句)。

二、发布作业:

1.数据库记录题目方式:一次可发布多个内容即设置多条insert语句对数据库进行题目补充(根据题目数量执行foreach循环即可)。

2.文件记录题目方式:将多个题目记录在文件中(Word、PDF等格式),学生通过文件预览或者下载的方式获取题目信息(在本地服务器上由于不能引用微软等API服务,不支持在线预览,故在本地服务器下,文件预览时,会将Word等文档转换成图片格式,如果将项目部署到阿里或者腾讯等外网可以访问的服务器地址下则可以引用微软的API服务实现真正的Word预览。)

三、教师批阅作业:

1.对每个题目给出评阅意见和成绩,批阅完成后,自动形成该次的评阅成绩和意见。

前端可以采用数据表格格式对每位同学(student_id)的每个答题情况(answer_id)进行打分和给出意见。提交后,后端对表格数据依次插入insert到数据库。

注意事项:

有的题目可能是以文件形式发布的,在数据库题目发布统计表中可能不存在,因此如有必要还可以对数据表规定发布属性(简单题目,文件题目)的信息。

2.对于上传的附件文档,可以直接打开(不用下载),这样方便教师的批阅。

如有必要,可以将文档分为一栏,批阅作业分为一栏(方便批阅)

(对于学生上传的文档加入必要的信息形成唯一的文件名保存到服务器相应位置上)

教师可以统计到目前为止,学生作业完成情况以及相应的成绩与评价。

select*from学生成绩评价表where...;

即可完成查询操作,返回到前端列表中。

学生:

一、学生查阅所布置的作业,并选择题目完成解答并提交(可以上传附件文件):

1.将学生答题信息放入答题卡表中(应设置是否存在附件(方便老师查看附件信息并打分等,这里对于教师端前端可设置附件按钮,如果有附件则返回附件地址并查看,如果没有则不展示)、批阅状态信息以方便查看是否被批阅),方便老师批阅(批阅后应将成绩等信息insert到成绩审批表)。

2.对于上传的文件附件可必要的信息形成唯一的文件名保存到服务器相应位置上。

二、可以查阅教师返回的批阅意见和成绩,若对成绩或评阅有问题,可以返回信息给教师:

select*from学生成绩评价表wherestudent_id=studentId...;

如果可按作业批次查询则可以:

select*from学生成绩评价表wherestudent_id=studentIdandhomeworkcount=count...;

返回给列表并空余一列供学生提出意见或问题,update学生成绩评价表set学生疑问=...;这里只允许修改学生意见或问题列,不应修改成绩等信息(也可以单独列一张表记录学生反馈的信息)。

三、可以列出到目前所作的所有作业情况(包括成绩与评阅信息):

select*from学生提交作业表(发布作业表)wherestudent_id=studentId...;

可将上述两张表结合到一起(注意附件),查看自己的作业情况和成绩评价等情况。

数据库DB——>通过JDBC数据库驱动连接或者c3p0数据库连接池——>dao层——>(传递给service服务层)——>Action控制层——>通过EL表达式或者json数据串等格式返回给前端展示。

一、数据库设计与实现(数据库字典文档):

这里为了实现的简便,简化了数据表数量和数据表单内容(但属性和必要值不缺少,只是在一定程度上简化了关系,重点注意主外键的设计)。

序号

表名

注释/说明

1

publish

发布作业表

2

student

3

submit

提交作业表(包含提交后教师对学生的打分评价情况以及学生查看成绩后的疑问反馈情况)

4

teacher

1、student

列名

数据类型

长度

主键

允许空

列说明

s_id

int

学生id(账号)

s_password

varchar

20

密码(最初与id一致)

s_name

学生姓名

s_college

30

学院

5

s_department

系别

6

s_class

教学班号,按int类型进行定义,分为1班、2班等等(此处教学班也应单独设置一张表,然后建立外键对应关系,这里简略处理,不再建表)

7

s_sex

10

性别

8

s_email

邮件,这里为了简便,联系方式统一使用邮件

2、teacher

t_id

教师id(账号)

t_password

t_name

教师姓名

t_college

t_department

t_sex

t_email

3、publish发布作业表

id

每次发布时的题号

content

255

题目内容

requirement

题目要求

publish_count

该次发布题目的次数(第几次作业)

publish_time

datetime

deadline

_time

哪个老师发布的(哪个老师出的题)

(包含提交后教师对学生的打分评价情况以及学生查看成绩后的疑问反馈情况)

学生id(账号)(哪个学生做的该题目)

answer

学生对题目的回答

achievement

老师对学生回答情况进行打分(成绩)

evaluation

老师对学生回答的评价(建议或意见等)

feedback

学生对教师评价后的反馈信息(学生提交后不允许修改回答等表中其他信息,比如成绩等)

外键名

字段

参考模式

参考表

参考字段

删除时

更新时

teacher_id_publish

homework

CASCADE

publish_id_submit

publish_time,id,t_id

student_id_submit

teacher_id_submit

首先将struts2必须的jar包并构建到路径中:

其次将项目中用到的其他jar包构建到项目中(如c3p0数据池管理jar包,commons-fileupload文件上传下载的jar包,jxl实现数据库与Excel互相转换的jar包,mysql数据驱动连接的jar包等等):

struts2

org.apache.struts2.dispatcher.ng.filter

.StrutsPrepareAndExecuteFilter

/*

注意必须遵守JavaBean规范,必须要有默认构造函数,注意命名规范。

当时在测试StudentAction与jsp传值时便一直在报null错误,代码静态结构分析也没有观察出有什么错误,而且在在动态分析下发现初始传值部分即为null而不是数据库或者dao层之间的问题,完全可以确定是发生在StudentAction与jsp页面之间的传值错误。修改student实体类的命名规范后发现传值成功。(细节决定成败,一定注意规范。)(不过这也是struts一点非常不好的地方,格式过于死板。在文件上传下载时命名规范更是有着严格的要求。)

引入业务模型对象属性(JavaBean)(private),每次通过get方法获取该JavaBean对象的参数值,注意必要属性一定要有get、set函数。否则获取不到无法进行传值。

例如:

//必要字段属性的get、set方法publicStudentEntitygetStudentEntity(){returnstudentEntity;}publicvoidsetStudentEntity(StudentEntitystudentEntity){this.studentEntity=studentEntity;}publicStringgetRe_password(){returnre_password;}publicvoidsetRe_password(Stringre_password){this.re_password=re_password;}publicStringgetMsg(){returnmsg;}publicvoidsetMsg(Stringmsg){this.msg=msg;}actionname是调用Action方法的名字,class是对应的Action类,method是对应的execute方法。

再次记录一个bug:

该属性指定需要Struts2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。起初要访问的资源不属于action,跳转就出现404,即被struts2拦截掉了。

因此一定要注意配置文件选合适的,配正确的。

例如from数据提交界面,表单中action配置与struts.xml文件中的actionname一一对应。同时在from表单中的属性名name要与业务控制层Action中的属性一一对应。(各组件实现数据共享是通过“Action容器”实现的,所以,在提交页面和从Action实现的跳转页面中所共享的数据,必须与Action属性一样。)

①可以采用JDBC方式对数据库进行访问,这里对于JDBC方式不再赘述。

②c3p0数据池方式:

首先进行c3p0的配置(c3p0.properties文件):

注意时区、字符格式等(很容易出现时区问题)

c3p0.user=rootc3p0.password=123456mjgc3p0.driverClass=com.mysql.cj.jdbc.Driverc3p0.jdbcUrl=jdbc:mysql://localhost:3306/homeworkuseUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaic3p0.initPoolSize=5c3p0.maxPoolSize=10然后在数据库工具类里引用c3p0数据库连接池:

//该类使用C3P0连接池技术实现数据库连接组件packagedb_util;importcom.mchange.v2.c3p0.ComboPooledDataSource;importjavax.sql.DataSource;importjava.sql.*;publicclassJdbcPoolUtils{privatestaticDataSourcedataSource=newComboPooledDataSource();publicstaticConnectiongetConnection()throwsSQLException{returndataSource.getConnection();}......}为了实现技术的练习,分别采用配置文件和注解实现不同的模块,例如在学生模块采用配置文件实现,在教师模块采用注解实现。同时增加了输入验证的内容。

这里不再赘述。

需要同时运行两个项目(端口号不一样)以实现本地服务器在线预览等功能。

选用该开源项目原因:

同时此项目为文件文档在线预览项目解决方案,对标业内付费产品有【永中office】【office365】【idocv】等,在取得公司高层同意后以Apache协议开源出来反哺社区。该项目使用流行的springboot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,Excel,pdf,txt,zip,rar,图片等等。

项目运行简略结构图:

项目引用服务:(运行该开源项目时需要的一系列工作略去):

首页界面:

输入验证失败并返回信息:

进入学生信息管理界面:

修改、删除(移除教学班)学生信息等:

添加学生信息:

注册学生信息:

上述学生信息可实现从Excel表到数据库之间的转换等(从Excel表中导入到数据库、从数据表导出到Excel):

文档的在线预览功能(老师对作业的在线批改功能(不用一一下载)和实现老师发布文档形式的题目以便同学们查看):

这里以老师发布的任务为例:

由于篇幅原因,具体运行界面不再一一赘述。

凑巧的bug(数据表单null测试用例):

因此我们在复用代码时一定要仔细检查逻辑的正确性,注意细节问题。

一、学会查看tomcatlocalhostLog日志文件信息:

二、在前端提交表单访问Action时需要注意是jsp标签还是struts2标签(重点注意路径区别):

jsp标签:

<%

Stringpath=request.getContextPath();

StringbasePath=request.getScheme()+"://"

+request.getServerName()+":"+request.getServerPort()

+path+"/";

%>

struts2标签:

(不用添加基础路径,直接访问相应的

<%@taglibprefix="s"uri="/struts-tags"%>

注意jsp(HTML)标签与struts2标签属性值的区别:

jsp(HTML)标签:

账户名:

真实姓名:

三、注意Action中type类型的取值:

尤其注意type="dispatcher"与type="redirect"、type="redirectAction"的区别:

type="dispatcher"为默认类型,表示转发,上一个界面中的信息不会丢失,可以被获取,而type="redirect"、type="redirectAction"表示重定向到URL或者Action,上一个界面的信息将会丢失。

易产生问题:在EL表达式需要获取值时应采用type="dispatcher",而不是type="redirect"。

type的一些其他取值:

stream:向浏览器发送InputStream对象,通常用于处理文件下载(比如在导出Excel数据时),还可用于Ajax数据。

当然还有chain,用于处理Action链,被跳转的Action中仍能获取上个页面的值如request信息等等。

THE END
1.网络教学系统中的用例图分析学生参与的用例图教师参与的用例图在网络教学系统中,用例图是一种用于描述系统功能和用户之间交互的图形化工具。它展示了系统中各个角色(如学生、教师、系统管理员等)与系统之间的各种用例(功能需求)以及它们之间的关系。 首先,我们来看学生参与的用例图。学生是网络教学系统的主要用户之一,他们可以进行以下一些操作: https://wenku.csdn.net/answer/3wk7xbkp2e
2.远程网络教学系统用例图系统数据UML用例图 免费 使用模版 远程网络教学系统图学校教学 免费 使用模版 学生系统用例图 免费 使用模版 系统用例图 免费 使用模版 系统用例图 免费 使用模版 在线购物系统用例图 免费 使用模版 系统用例图模板 免费 使用模版 网上订餐系统用例图 免费 https://imiaoban.com/pic/39522.html
3.在线教育系统线上教学系统基于Springboot+Vue+Nodejs实现在线根据市场调研和用户走访,并进行整理分析,得知本次设计实现的<<计算机网络>>课程教学网站用户一共有三类,一是学生用户,一类是教师用户,还有一类是平台提供的用于管理系统基本信息的管理员账户。这三类用户的角色和操作功能权限各不不同,下面通过用例图的方式来进行展示。 https://developer.aliyun.com/article/1402599
4.教学资源共享平台的用例图设计学工管理系统UML是一种面向对象的图形建模语言,易于表达,定义友好,适用范围广,功能强大。用例图是一种用例模型。需求分析人员可以使用用例图来表示用户的操作行为。教学资源共享平台的用例图设计主要包括学生用例图设计和教师用例图设计。 上海劳动信息技术有限公司(以下简称劳动)是上海双软企业、高新技术企业、专业新企业,深度劳动力管https://www.yixinjie.com/lib/xuegong-50078.html
5.远程网络教学系统20240817131924.pdf远程网络教学系统.pdf 关闭预览 想预览更多内容,点击免费在线预览全文 免费在线预览全文 适用标准文案 远程网络教课系统实验报告 一、用例图 1.学生参加者的用例图如图(1)所示:学生登录后才能正常使用该系统的全部功能。学生 登录网站后,能够阅读课件、查找课件、下载课件、观看教课视频。假如忘掉密码,能够 https://max.book118.com/html/2024/0817/5004010334011310.shtm
6.电子商务系统分析与设计参考题目11篇(全文)5.UML(统一建模语言):UML是用来对软件系统进行可视化建模的一种语言,是进行需求分析和概要设计的建模语言,UML为面向对象开发系统的产品进行说明、可视化和编制文档的一种标准语言。 二、填空题: 1.企业内部网Intranet2.关键成功因素法,企业系统规划法 3.树状因果图4.完备性检验,一致性检验,无冗余检验 https://www.99xueshu.com/w/filelkm376qw.html
7.教学管理系统ER图裕奥在线绘图工具Freedgo提供方框图-矩阵相关的制图工具,可以创建思维导图,云架构图,软件架构图,UML,BPMN,ER模型,流程图,UX设计图,软件流程图。立即开始免费试用!https://www.freedgo.com/diagramdetail/140/1407/d_0_140_1407_192380765680435202_1_0_0.html
8.随之用来管理远程网络教学的“远程网络教学系统”也诞生了请画出教师参与者的用例图。 答案解析 (简答题) 网络的普及带给了人们更多的学习途径,随之用来管理远程网络教学的“远程网络教学系统”也诞生了。? “远程网络教学系统”的功能需求如下:? 学生登录网站后,可以浏览课件、查找课件、下载课件、观看教学视频。? 教师登录网站后,可以上传课件、上传教学视频、发布https://www.examk.com/p/2136510774.html
9.山东传媒职业学院教学资源共享服务系统的设计与实现因此,现在需要开发一套全新的教学资源共享服务系统来促进教学资源的共享发展,改变传统的备课模式,促进学院教学资源优化、教师教学水平提高。本文采用面向对象的分析与设计方法对教学资源共享服务业务需求进行分析与设计,以管理者和教师为视角采用用例图、用例描述表定义系统业务需求,又将教师的角色细化为主题教研发起者、主题https://wap.cnki.net/lunwen-1020009440.html
10.网上教学公共服务平台系统.pdf该【网上教学公共服务平台系统 】是由【焦大】上传分享,文档一共【21】页,该文档可以免费在线阅读,需要了解更多关于【网上教学公共服务平台系统 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:. https://www.taodocs.com/p-843677454.html
11.教务系统软件构件构架自己做的,可供参考哦教务管理信息系统的设计目标: 1.采用先进的分布式数据处理技术,以提高管理工作的质量、效率和规范性; 2.按照教务部门的管理体制分层进行数据管理,为不同层级的管理教师设置相应的使用权限,保障系统的可靠性与安全性; 3.以校园网为平台,实现学校教学职能部门与各教学业务部门之间的数据通信,及时为https://www.iteye.com/resource/tanglifen19871129-790367
12.以“远程网络教学系统“为例,在该系统中,系统管理员需要登录系统以“远程网络教学系统”为例,在该系统中系统管理员需要登录系统才能进行系统维护工作,如添加教师信息、删除教师信息等。为系统管理员添加教师信息用例创建相关序列图。 参考答案: 点击查看答案进入题库练习 问答题 网络的普及带给了人们更多的学习途径,随之用来管理远程网络教学的“远程网络教学系统”也诞生了。 “远程https://m.ppkao.com/tiku/shiti/7bcc937aa6f24a75b5ee8f932174102b.html
13.计算机毕业设计范例15篇与此相对的是我们现在使用的'各种计算机软件,特别是在以图形化特点著称的Windows操作系统下,各种软件的使用方法与具体操作无法通过在黑板上书写板书或者口头讲解向学生讲解清楚,必须配合教材使用多媒体演示设备才能将书本中的知识简单明了地展示出来。因此,计算机课程教学应该以“讲解+演示+操作+指导”的阶段法来开展。与https://www.fwsir.com/fanwen/html/fanwen_20240616130224_3879194.html
14.宜宾学院智慧在线教学平台12 面向对象分析 面向对象分析;类图;用例图;行为图;示例 4 SEF-MA.tm.1~2SEF-MA.md.1~6SEF-MA.rsd.3SEF-MA.af.1~313 需求规格说明 文档化的作用、手段和类型;需求文档的标准规范;文档化技巧;优秀文档的特性 2 SEF-MA.rsd.1~3SEF-MA.af.1 14 需求验证 需求验证的目的;需求验证的方法(审查、原型https://mooc.yibinu.edu.cn/portal/course/548/592.mooc
15.软件工程——理论与实践人工智能本书是计算机领域本科教育教学改革试点工作(“101计划”)系列教材之一。本书系统介绍软件工程基础理论和技术,包括软件过程、开发方法和支撑工具,涵盖需求、分析、设计、编码、测试、部署、维护、演化和管理等。 全书分为6部分,共16章。第一部分基础篇(第1~3章),介绍软件工程的基本概念和思想、常见的软件过程及主流https://univs.cn/zx/a/hd_sxjm_rgzn/240710/1893150.shtml
16.电子商务毕业论文范文3000字(通用11篇)UML统一建模语言,又称标准化建模语言,始于1997年的一个OMG标准,是一种支持模型化和软件系统开发的图形化语言,能够为软件开发的所有阶段(包括从需求分析到软件构造部署)提供模型化和可视化的基础技术支持[1]。UML主要由用例图、静态图、行为图、交互图和实现图组成[2]。在此,对各种图类的功能分析作如下论述。 https://www.yjbys.com/biyelunwen/fanwen/dianzishangwu/727599.html