《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.精品课程在线学习系统的设计与实现在线课程学习系统课程设计软件工程4.3.2 数据库物理设计 17 第5章 系统实现 23 5.1 管理员功能实现 23 5.1.1 教学资源管理 23 5.1.2 试卷管理 23 5.1.3 试题管理 24 5.1.4 论坛管理 24 5.1.5用户管理25 5.2 用户功能实现 25 5.2.1 教学资源 25 5.2.2 在线论坛 26 5.2.3 试卷管理 26 https://blog.csdn.net/qq_53944577/article/details/143300668
2.在线教学系统课程设计.docx在线教学系统课程设计一、课程目标 知识目标: 1.理解在线教学系统的基本原理与功能,掌握其主要组成部分; 2.学习在线教学资源的选择与整合方法,能结合学科特点进行合理运用; 3.掌握在线教学互动的技巧,提高课堂参与度和活跃度。 技能目标: 1.学会使用在线教学平台,进行课程发布、作业布置与批改; 2.能够运用信息技术https://www.renrendoc.com/paper/341678153.html
3.在线课程教学系统设计2)教学系统设计作为连接教学理论与教学实践的桥梁,可以把已有的教学理论和研究成果运用于实际教学中,指导教学工作的进行;另一方面,也可以将教师的教学经验升华为教学科学,充实和完善教学理论,这样就把教学理论与教学实践紧密地结合起来。3)学习和运用教学系统设计的原理与技术,可促使教学工作的科学化,也为师资队伍的培养https://jyxy.wfu.edu.cn/2024/0612/c1418a223449/page.htm
4.网络教学系统的设计实现及分析6篇(全文)如果网络教学系统仅仅实现公布讲义、在线作业等功能,毕竟还是低层次的,如何利用该系统使教师方便的实现各种教学策略才是一个质的提高。比如,利用资源系统为学生提供大量的有用的学习资源得以实现基于资源的学习。另外,通过课程论坛等模块实现合作学习策略。设计系统时,就应该尽量使各种教学策略尽可能融合到系统中,让教师实https://www.99xueshu.com/w/fileo5i2sxld.html
5.在线学习系统的设计与实现本课题主要探索在学习中的一种新方式,实现网络技术,多媒体技术与课程资源相结合的新模式,在网络中信息丰富而且开放,传统学习方式的文档形式,已经不能再满足学习者了,从而产生了学习系统,在线学习平台充分发挥信息的交互性、共享性、、无限制、大容量等优点,使得不在同一时间、同一地域、同一院校的学者之间沟通交流,https://blog.51cto.com/u_15745565/7412241
6.基于J2EE的在线教学系统设计与实现本文以线上远程教学模式为研究对象,以当前较为流行的软件工程技术对基于J2EE的在线教学系统进行设计与实现。同时针对传统在线教学系统无法满足当前线上远程教育业务对海量教学数据的处理,及网络带宽资源无法满足日益增加的在线学生人数需求等现象,尝试采用当前较为流行的云计算技术及负载均衡算法,对系统进行设计优化, https://d.wanfangdata.com.cn/thesis/D02421467
7.439基于ASP.NET的课程设计在线学习系统的设计与实现.NET/Web标签:在线学习平台,课程学习网站,在线教学网站,教学平台 其它类似作品 N132基于JSP/Java的英语教育培训信息网的设计与实现 教育网站,培训网站,教学平台,教学网站,精品课程 基于SpringBoot+SSM的线上教学网站的设计与实现 教学平台,在线学习网站,精品课程 439基于ASP.NET的课程设计在线学习系统的设计与实现 在线学习https://jsjbysjw.com/work/show/10720
8.四川大学锦城学院网络教学系统平台的设计和实现学生与管理人员三者之间在共享环境下的交互性;最后,研究了基于传统C/S模式教学平台客户端的冗余性及便捷性,提出通过例图方式展示系统功能需求,并在该平台设计中采用JSF+EJB 3.0+MYSQL相结合的技术模式,以简化系统结构设计与增强客户端的灵活性,同时有效解决和实现了该教学平台的在线共享资源、申报项目与项目小组管理等https://wap.cnki.net/lunwen-1015705820.html
9.数字化网络教学平台的研究与实现AET1 系统设计与架构 数字化网络教学平台包括教学资源、在线辅导、毕业设计辅导、计算机等级考试辅导、在线测试、热门文章和师生风采等模块,主要包括课程教学资料、教师在线辅导答疑、教师在线收发并批改学生作业和实验报告、实践项目的视频演示、网上论谈、计算机等级考试专项训练及模拟、大学英语专项训练及模拟、大学生挑战杯竞赛http://www.chinaaet.com/article/213447/
10.重建生态:价值与系统的力量——第七届中国教育创新年会11月启幕王蔷(北京师范大学外文学院外语教育与教师教育研究所所长、教授) 云教研:如何实现信息技术与英语课堂教学的深度融合? 刘晓斌(华南师范大学外文学院副教授,英语系主任) 云教研:单元整体教学设计与实施策略 宋少铧(上海市特级教师,上海浦东教育发展研究院初中英语教研员) 张金秀(北京教育学院外语与国际教育学院院长https://sghexport.shobserver.com/html/toutiao/2020/08/26/250533.html
11.课堂秀创新设计学院第二季国际联合设计教学工作坊即将启动1.了解思辨设计、协同设计和参与性设计 2.概念化和成品化一件思辨设计人工制品 3.使用Raspberry Pi和或Ardunio进行数字/模拟输入和输出 4.了解Python、Javascript和NodeJS的核心用法 5.使用Python和NodeJS创建web服务器 6.了解网络系统的要素 7.在Processing library p5js中实现实时数据可视化 https://www.thepaper.cn/newsdetail_forward_7761577
12.评教系统的设计与实现(精选十篇)关键词:学生评教系统,评教系统的设计与实现 参考文献 [1]董纯奇等.多元化高职教学质量监控体系内学生评教系统的运行[J].CEPE中国电力教育, 2010. [2]岳付强, 罗明英, 韩德.SQL Server 2005从入门到实践, 清华大学出版社, 2009. [3]顾宁, 刘家茂, 柴晓路.Web Services原理与研发实践[M].机械工业出版社, https://www.360wenmi.com/f/cnkeyl76xd2g.html
13.如何实现在线学习的有效互动和个性化—中国教育在线第四,教学课程设计不合理。完全模仿全日制高等教育的培养方案,“普教化”严重,与成人实际学习需求和学习能力脱节。 针对这些问题,华东理工大学继续教育学院颠覆传统的教学模式,着力在SPOC教学模式中实现在线教育的有效互动和个性化,实现了“课堂翻转”,使课堂教学不再是“填鸭式”灌输,更不是被动学习,而是学生主动学习,https://cdce.eol.cn/1031/353032.html
14.MCA2024升级内容马士兵教育官网直播电商系统设计 电商 类目管理和品牌管理 商品管理系统设计 活动促销系统设计 库存系统设计 订单系统设计 2.8 实战项目 课程名称升级亮点 亿级流量网关自研实战 自研 网关整体设计与搭建 自研 网关拓展点之过滤器链 自研 网关限流机制实现 自研 网关熔断机制实现 自研网关之灰度发布的设计与实战 自研网关之全方位性能调https://www.mashibing.com/white_paper/mca
15.2020级五年制人才培养方案3.电子元器件性能与参数测试和应用能力;模拟电路与数字电路分析和设计能力;典型电子线路设计与调试能力;典型单片机控制系统设计与调试能力; 平时考核与期末考核各占50%。平时考核内容包括课堂纪律、课堂提问,课堂讨论,专题材料收集、项目的策划与实施情况,期末注重对能力目标实现的综合考核 http://www.jxxdjsxy.com/jiaowuzaixian/zhuanyeshezhi/2022-06-19/8135.html
16.市教委关于印发《上海市教育信息化“十三五”规划》的通知信息技术与教育教学的深度融合创新是提升教育质量、实现教育均衡的重要手段。目前,教学信息系统及优质资源与教师、学生的实际需求尚有差距,信息技术在课堂教学、在线教学中的应用有待深化。优质数字化教育资源建设、共享和更新的机制等平台不健全,不能完全有效满足教育教学实际需求;信息技术与教育教学深度融合的保障制度需要https://www.shanghai.gov.cn/shssswzxgh/20200820/0001-22403_50857.html
17.区域推进迈向数字教育:北京市教育数字化转型的现实意涵与实践应推进信息技术在课程教学和教育管理中的应用,运用新型多样的信息化教学手段,打造现代信息化教学课堂。同时,加大力度建设与国家课程相匹配的虚拟仿真实训系统、数字化实训基地等,充分开展“线上线下混合式”教学模式的改革。结合北京市数字教育发展现状,通过充分发挥互联网教育优势,实现教育从理念、机制到实践流程的数字化https://www.mbachina.com/html/ictedu/20221108/501756.html
18.计算机开题报告第五周 :对选题教学网站系统的功能进行需求分析。 第六周 :安装Sql Server数据库及VisualStudio软件,并熟悉其运行环境。 第七周 :网站系统规划和Sql Server数据库设计。 第八周 :前台:网站首页及基本功能的实现 。 第九周 :后台:管理端用户及在线测试模块的设计 https://www.fwsir.com/Article/html/Article_20221120154127_2088788.html