




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在线作业系统的设计与实现毕业论文目 录摘要IAbstract:II第一章 绪论11.1 研究的背景11.2 研究的内容11.3 研究的意义2第二章 系统的设计模式与技术准备32.1 系统的设计模式32.2 技术准备3第三章 系统分析93.1可行性分析93.1.1 经济可行性分析93.1.2 技术可行性分析93.2需求分析93.2.1系统运行环境93.2.2系统功能需求93.2.3系统性能需求123.2.4主要功能要求13第四章 系统设计144.1 系统业务流程分析144.2 功能模块的分析与设计14第五章 数据库设计165.1数据库需求分析165.2数据的组织与存储165.3 逻辑设计17第六章 系统实现206.1 系统研发原则206.2 系统的实现21第七章 结论487.1 工作总结与成果487.2 不足及尚待解决的问题48参考文献49致 谢5038. 第一章 绪论1.1 研究的背景 随着计算机以及网络的普及,教师与学生对辅助教学方式的要求也越来越高,在教学辅助方式上追求质量及效率。作为教学核心组成之一的作业管理也趋向更加便捷快速的方式。经过调查,现阶段高校进行作业管理的方式主要有三种:情况一:老师与学生的课外教学互动通过公共邮箱,如老师一般把教学资料上传到公共邮箱供生下载,学生把电子版作业上交到公共邮箱。这种方式的局限性是邮箱的容量有限,对于大容量邮件,服务器只保存有限的时间而且老师难以统计学生提交作业的情况,也难以批改。情况二:通过U盘拷贝教师发布作业以及提交作业,这种方式的成本高,一旦U盘损坏会导致作业丢失。情况三:部分有该方面技术的教师会建立起个人辅助教学网站,网站开发需花费教师较多的时间和精力,一旦建成,修改要手动编辑源代码,比较麻烦,而且教师的个人教学辅助网站相对分散,其共享性不强,可管理性较差。针对目前的状况,很有必要开发一个操作简单,功能完备,为教师学生进行作业管理提供便捷的在线作业管理系统,简化作业管理的步骤,从根本上解决作业提交步骤复杂的问题。1.2 研究的内容本文以所设计的作业管理系统为背景,阐述了该系统的设计思路和功能分析。首先对该作业管理系统做出简要的概述,分析系统的背景及意义,再从需求分析,总体设计再到其各个功能的详细设计,再选择合适的开发语言工具对其进行代码实现。1.3 研究的意义 每次教授了新的章节或者内容之后,教师都有可能需要布置相应的作业或练习以保证学生可以牢固掌握相应知识。作为教学的核心之一的作业管理,其传统的实现方式步骤既繁琐又耗时,还不能很好的保证作业发布的即时性及可控性,即教师无法在他需要的时候立即发布作业,教师也无法提前预设将要发布的作业,删除,编辑,批改等操作也不够便捷。这时,作业管理系统的作用就体现出来了。教师可以在网上发布自己的课程作业,而且还可以选择及时发布还是定时发布,对过期的作业进行删除,查看学生作业提交的情况,批改学生作业等,既方便快捷也省时高效。第二章 系统的设计模式与技术准备2.1 系统的设计模式 系统采用现今流行的B/S模式开发,分层设计如下:JSP页面Action控制层数据访问层 数据库Struts2Mysql 图2-1 系统分层设计图2.2 技术准备l Java Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。Java的语言特点如下:1.Java是简单的 Java与C+极为相似,但却简单得多。高级编程语言的所有特性中,不是绝对需要的都已删去了。例如,Java没有算符过载、标题文件、预处理、指针运算、结构、联合、多维数组、模板及隐式类型变换。如果你知道一点C、C+或Pascal,你很快就会驾驭Java。这里是一个简单的JavaHelloWorld程序: publicclassHelloInternetpublicstaticvoidmain(Stringargv)System.out.println(“HelloIn-ternet!”) 2.Java是面向对象的 Java是一种面向对象的编程语言。除了简单的类型,如数字和布尔算子之外,Java中的大部分都是对象。 正如任何面向对象的语言一样,Java代码也按类组织。每个类定义一组规定对象行为的方法。一个类可以继承另一个类的行为。在类的根层次上,通常是类对象。 3.Java是静态类型的 在一个Java程序中,必须定义所用对象(数字、字符、数组等)的类型。这有助于编程人员很快发现问题,因为当程序编译时可以检测类型错误。 不过,Java系统中的对象也有动态类型。要求一个对象为动态类型往往是可能的,所以编程人员写的程序可以对不同类型的对象做不同的事。 4.Java是编译型的 当运行Java程序时,它首先被编译成字节代码。字节代码非常类似于机器指令,所以Java程序非常高效。然而,字节代码并不专对一种特定的机器,所以Java程序无需重新编译便可在众多不同的计算机上执行。 Java源程序被编译成类文件,它相当于程序的字节代码表现。在一个Java类文件中,所有对方法及实例变量的参照均按名进行,并在第一次执行代码时加以分辨。这使得代码更通用,更不易受修改的影响,而仍具高效。 5.Java是体系结构中立的 Java语言对每种计算机都一样。比如,简单的类型都是不变的:整数总是32位,长整数总是64位。令人奇怪的是,诸如C及C+等时髦的编程语言却不是这样。由于这些语言定义如此自由,每种编译器及开发环境便各有不同了,这使程序的移植成为讨厌的问题。Java程序的移植却很容易,而且不需要进行重新编译。 6.Java是健全的 Java程序不可能造成计算机崩溃。Java系统仔细检测对内存的每次访问,确认它是合法的,而且不致引起任何问题。 不过,即使Java程序也可能有错误。如果出现某种出乎意料之事,程序不会崩溃,而把该例外抛弃。程序会发现这类例外,并加以处理。 传统的程序可以访问计算机的全部内存。程序可能(无意识地)修改内存中的任何值,这就会造成问题。Java程序只能访问内存中允许它们访问的那些部分,所以Java程序不可能修改不拟修改的值。 7.Java是小巧的 由于Java的设计是要在小的计算机上运行,作为一种编程语言来说其系统是相对较小的。它能有效地在4MB以上RAM的PC机上运行。Java翻译器只占用几百KB。这种翻译器对Java的平台无关性和可移植性是可靠的。 由于Java很小,它对内存很小的计算机,如基于Java的PC机,以及电视机、烤箱、电话机及家用计算机等,是很理想的。 8.Java是多线程的 Java程序可以执行一个以上的线程。比如,它可以在一个线程中完成某一耗时的计算,而其它线程与用户进行交互对话。所以用户不必停止工作,等待Java程序完成耗时的计算。 在多线程环境中的编程通常是困难的,因为许多东西可能同时出现。但是,Java提供了易于使用的同步特性,使编程更为方便。 Java线程通常被映射为实际的操作系统线程,只要底层操作系统支持这种映射。因此,用Java写的应用程序可说是“MP热”。这就是说,如果它们在多处理器机器上运行,它们更将表现不凡。 9.Java是可收集无用的存储单元的 用C及C+写软件的编程人员必须仔细跟踪所用的内存块。当一个块不再使用时,他们务必让程序释放它,从而方可再用。在大的项目中,这可能很困难,并往往成为出错和内存不足的根源。 在Java的情况下,编程人员不必为内存管理操心。Java系统有一个叫做“无用单元收集器”的内置程序,它扫描内存,并自动释放那些不再使用的内存块。 10.Java是快速的 Java比典型的脚本语言大为有效,但它比C慢20倍。这对大多数应用是可接受的。 不久的将来,代码生成器就可供利用了,这将使Java程序几近于用C或C+编写的程序那么快。 11.Java是安全的 Java程序没有指针,而且象这样的字节代码程序强在类型,所以在执行之前它可能验证Java程序。谎橹腏ava程序得以保证不突破Java语言的任何限制,而且可以安全地执行。Java字节代码验证被Web浏览器用来确保小程序不含病毒。 12.Java是可扩展的 Java程序可与用其它语言编写的现存程序库连接。由于Java数据结构与C的数据结构的类型极为相似,这是相当方便的。最大的问题在于,现有多线程程序库为数不多。 Java程序可以声明某些方法是内部的,然后,把这些内部方法映射成软件库所定义的功能,从而动态地链接到虚拟机。l Struts2Struts 2是Struts的下一代产品。是在 struts 和WebWork的技术基础上进行了合并,全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。因为Struts 2和Struts 1有着太大的变化,但是相对于WebWork,Struts 2只有很小的变化。一个请求在Struts2框架中的处理大概分为以下几个步骤:1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求;2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin);3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;6、ActionProxy创建一个ActionInvocation的实例。7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper。l Entity存放实体类,实体类主要是作为数据管理和业务逻辑处理层面上存在的类别; 它们主要在分析阶段区分 实体类的主要职责是存储和 管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关。大多情况下,实体类和数据库中的表(这里指实体表,不包括表示多对多对应的关系表)是一一对应的,但这并不是一个限制,在复杂的数据库设计中,有可能出现一个实体类对应多个表,或者交叉对应的情况。l DaoDAO(数据访问对象)是一种应用程序编程接口(API),存在于微软的Visual Basic中,它允许程序员请求对微软的Access数据库的访问。DAO是微软的第一个面向对象的数据库接口。DAO对象封闭了Access的Jet函数。通过Jet函数,它还可以访问其他的结构化查询语言(SQL)数据库。 DAO是Data Access Object数据访问接口,数据访问:顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。在核心J2EE模式中是这样介绍DAO模式的:为了建立一个健壮的J2EE应用,应该将所有对数据源的访问操作抽象封装在一个公共API中。用程序设计的语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口在逻辑上对应这个特定的数据存储。l Mysql数据库MySQL是一个小型关系型数据库管理系统, 目前被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。l Mysql作业调度作业调度的主要功能是根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。然后再将新创建的进程插入就绪队列,准备执行。因此,有时也把作业调度称为接纳调度。事件调度器是在 MySQL 5.1 中新增的另一个特色功能,可以作为定时任务调度器,取代部分原先只能用操作系统任务调度器才能完成的定时功能。例如,Linux 中的 crontabe 只能精确到每分钟执行一次,而 MySQL事件调度器则可以实现每秒钟执行一个任务,这在一些对实时性要求较高的环境下就非常实用了。事件调度器是定时触发执行的,在这个角度上也可以称作是临时的触发器。触发器只是针对某个表产生的事件执行一些语句,而事件调度器则是在某一个(间隔)时间执行一些语句。事件是由一个特定的线程来管理的,也就是所谓的事件调度器。启用MySQL 事件调度器后,拥有 SUPER 权限的账户执行 SHOW PROCESSLIST 就可以看到这个线程了。通过设定全局变量event_scheduler 的值即可动态的控制事件调度器是否启用。第三章 系统分析3.1可行性分析 3.1.1 经济可行性分析因为该系统只是一般的作业管理系统,系统的管理与操作的要求不是很高,系统管理员可征集有相关专业基础学生义务担任或作为学校勤工助学的岗位。而且该系统的经费不高,系统逻辑不复杂,可由学生担任一部分的开发工作。3.1.2 技术可行性分析该系统使用B/S模式开发,技术使用java、struts2、mysql作业调度等, 开发环境使用windows XP、MyEclipse和Tomcat。经过详细的分析,设计模式、技术、开发环境和人员配备都可满足系统开发的条件。3.2需求分析3.2.1系统运行环境(1)软件环境:操作系统:Windows XP浏览器: IE 8数据库: MySQL 5.1.*(2)硬件环境服务器专用双核或四核CPU,内存4G以上,硬盘用SCSI或SAS 。3.2.2系统功能需求作业功能模块的用户分为教师和学生,他们各自的主要功能需求如下:(1)教师的主要功能需求:1)查看教师所教的所有课程2)上传作业以及相应作业参考答案,可以选择定时发布作业3)下载发布的作业及答案4)删除、修改已发布的作业,删除时可连带删除相关信息5)查看作业批改情况,下载学生作业,批改学生所上传的作业6)查看作业提交情况7)查询学生成绩,修改学生成绩(2)学生的主要功能需求:1)查看教师发布的作业2)查看自己所选课程3)查看自己完成作业的情况4)上传作业5)下载自己提交的作业以及删除自己上传但教师尚未批改的作业6)查看个人作业的以及教师评语7)查看已提交作业的参考答案系统用例图如下:根据作业模块的用户可创建两类角色是教师和学生,他们的关系用例图分别如下:(1) 学生角色的用例图关系如下: 图3-1 学生角色用例图(2)教师角色的用例图关系如下: 图3-2 教师角色用例图a) 教师发布作业情况的用例图如下:图3-3 教师发布作业用例图b) 教师管理已发布作业的用例图如下: 图3-4 教师管理作业用例图c) 教师批改作业的用例图如下: 图3-5 教师批改作业用例图3.2.3系统性能需求实用性:为网上教学提供方便,有效进行作业管理,尽量最大限度降低管理员日常管理工作量,提高教学质量和效率,优化资源,实现效益最大化。 操作简单:本系统应该适用于不同水平的使用者,包括教师和学生,同时系统不应太复杂和烦琐,因此要求系统的操作尽可能简单易行。 技术先进:产品的系统设计和开发应紧跟着整个计算机发展潮流,采用当时最先进的设计思想,利用最新的开发技术和开发工具。使系统能够无论在功能设计上,还是在技术实现上,都处于同行业的领先地位。 安装使用简便:服务器端的安装简洁明了,客户机无需再装任何软件,通过浏览器就可以直接访问,可以直接接入Internet,无论您身在何处,只要您可以访问Internet都可以使用本系统。 代码可读性好:文中的代码将尽可能简洁,易懂。3.2.4主要功能要求 主要功能:为方便教师检查学生的实验作业,减少大量数据处理,复杂的排版操作从而经常出现错误率高、网页样式不一、重覆枯燥计算机操作和网页美观性的问题,提高学生的实验效率。查看实验作业时应保证查准率,查看的记录应与给定的实验项内容完全匹配。数据安全性,修改数据时,一定要保证输入正确,并且数据保密性要高。输入要求:数据完整、详实输出要求:简捷、快速、实时安全与保密要求:客户端要求提供身份验证,只允许通过身份验证的用户使用本系统要求能在发生意外(如掉电)的情况下,保证不丢失数据。第四章 系统设计4.1 系统业务流程分析教 师登 陆发布作业(定时发布)学生查看并提交作业教师查看批改情况 批改作业学生查看成绩和评价教师删除过期作业及相关文件学生查看参考答案 图4-1 系统业务流程图4.2 功能模块的分析与设计教师用户的模块及功能设计如下:(1)作业发布子模块:通过文件上传框上传相应作业文档,还可以选择性得选择是否上传该次作业的答案文档。教师还可以选择定时发布作业,作业将在教师选定的日期才显示出来。系统还会在用户按下提交按钮之后检测教师是否输入了文件名以及上传了作业文档,检测通过后才可以正式发布这次作业。(2)作业列表模块:分页显示所有教师发布过的作业列表,每次作业的右边都会有删除,批改,提交情况的超链接,点击会跳到相应的功能页面。点击删除超链接时,会提示教师,将会连带删除学生所交作业和成绩,是否继续,点击确定后将删除相应作业及学生的相关作业和成绩。(3)批改作业子模块:在作业显示列表页面点击了批改按钮之后,会弹出一个显示作业批改情况的页面,里面是一个列表,其中列表项包括:学号,已(未)批改(超链接),分数,评语(评语设定显示六个字,后面用省略号代替)。点击已(未)批改链接会出现相应学号该次作业的批改页面,里面显示学生学号,姓名,学生所提交作业的下载链接,提交日期等信息。下面有两个输入框,分别用于输入成绩和批语,若之前教师已批改过次作业,成绩及批语输入框内将显示之前的内容,成绩输入框只能输入数字,而且提交时还会检测分数的范围是否正确。(4)提交作业情况子模块:教师只需要在作业列表右边点击相应作业的“提交情况”的超链接,就会弹出相应的提交作业查看页面,可以看到的信息包括:学号,姓名,班级,提交状态(5)成绩管理子模块:教师可通过此模块对其学生的成绩进行管理作业模块的总体结构如下:作业功能模块 教师作业功能提交作业我的作业文件作业管理提交情况管理参考答案成绩管理发布作业我的成绩学生作业功能 图4-2 作业模块功能图第五章 数据库设计5.1数据库需求分析l 发布作业:首先要记录作业明,作业文档上传后存放到指定文件夹,因此必须记录文件存放路径,参考答案选择性上传,但必须有存放其路径的地方,还要记录作业发布日期,为了区分作业,必须把作业与教师及相应课程关联起来,因此有任课id。l 提交作业:区分学生作业要有相应ID,记录学生学号信息,学生作业的名称,存放路径,为了方便教师查看还要记录提交时间。l 学生成绩管理:学生、教师都能对相应权限的成绩进行查看,学生成绩表应记录每个学生每次作业的成绩及评语。l 学生提交情况功能要求设置一个表专门记录作业提交情况,表中只需有学号和作业的编号两个字段,相应记录存在则该学生该次作业有提交。5.2数据的组织与存储 系统将作业信息分为两类:记录和文件。记录是与作业相关的信息,主要包括学号,姓名,班别,作业名称,作业文件名,作业存储路径,上传时间等信息,而文件主要指存储教师发布的作业及学生提交作业的文件。系统采用mysql作为后台数据库,该数据库名称为edumgsys,主要包括user,studeng_info,class,course,recordeventnum,s_tc, teacher_info,t_c,tb_homework,tb_stdnhomework,tb_stdnscore,等多个表。其中user主要用于验证用户登录信息以及提取学生学号信息;表studeng_info用于记录学生的详细信息;表teacher_info用于记录教师的详细信息,表class用于记录班别信息,表course记录课程信息,表s_tc记录学生选课信息,表t_c记录教师所教授课程信息,表tb_homework记录教师上传作业存储路径等相关信息,表tb_stdnhomework记录学生提交作业相关信息,表tb_stdnscore记录学生成绩信息,表recordeventnum用于在定时发布作业时唯一标识mysql中的作业调度时间名称。5.3 逻辑设计下面为mysql数据库的逻辑设计:1.用户表 表5-1 用户表字段说明类型是否允许为空是否为外键备注id用户IDbigint否是loginname登录名varchar(20)否对应学生学号,教师工号Password密码Varchar(20)否User_type用户类型Varchar(1)否0代表管理员,1代表老师,2代表学生2.学生信息表 表5-2 学生信息表字段说明类型是否允许为空是否为外键备注id学生IDbigint否是U_id用户IDbigint否是对应user表的idName学生姓名Varchar(20)否Cl_id班级IDint否是3.班级信息表 表5-3 班级信息表字段说明类型是否允许为空是否为外键备注id班级IDint否是grade年纪Varchar(4)否是name专业名Varchar(20)否no班别Varchar(2)否4.课程信息表 表5-4 课程信息表字段说明类型是否允许为空是否为外键备注id课程IDint否是name课程名称Varchar(20否credit学号tinyint否5.教师信息表 表5-5 教师信息表字段说明类型是否允许为空是否为外键备注id教师IDint否是u_id用户IDbigint否是name教师姓名Varchar(20)否6.教师任课表 表5-6 教师任课表字段说明类型是否允许为空是否为外键备注id任课IDint否是c_id课程IDint否是t_id教师IDint否是7.学生选课信息 表5-7 学生选课信息表字段说明类型是否允许为空是否为外键备注id选课IDbigint否是s_id学生IDint否是tc_id任课IDint否是8.作业信息表 表5-8 作业信息表字段说明类型是否允许为空是否为外键备注id作业IDint否否filename作业文件名Varchar(50)否否filepath作业存放路径Varchar(50)否否answerkey参考答案路径Varchar(50)是否submitdate发布日期date否否tc_id任课IDint否是9. 回收学生作业信息表 表5-9 回收学生作业信息表字段说明类型是否允许为空是否为外键备注id回收学生作业IDInt否否s_id学号bigint否是hw_id作业IDint否是shw_name学生作业文件名Varchar(50)否否shw_path学生作业存放路径Varchar(50)否否shw_date提交日期date否否10.学生成绩表 表5-10 学生成绩表字段说明类型是否允许为空是否为外键备注shw_id回收学生作业IDint否是s_id学号bigint否是hw_id作业IDint否是score成绩int否否evaluation评语text是否11.辅助变量表 表5-11 辅助变量表字段说明类型是否允许为空是否为外键备注ididint否否num作业调度数int否否用于唯一标识作业调度第六章 系统实现 6.1 系统研发原则1. 完整性原则本系统需为用户提供完整的操作流程,确保用户在任何页面上均能按实际需求实现页面跳转,数据库建设必需能完整获取用户输入的数据内容,确保使用流程和输入输出的完整性。2适应性原则本系统除了预先在数据库导入必要数据,为用户提供参考以外,必需顺应用户实际需求,提供用户可以自定义的功能。此外,本系统务必操作简便,界面指引清晰,适应不同人群操作和使用,与此同时,可根据实际需求添加更多新功能,可见能很好地适应未来对手机地图发展的需求。3. 易用性原则本系统要广泛普及,必需让用户觉得操作简便。然而,对于研发人员来说,系统也应尽可能地操作简单、维护简单、使用方便。为使系统顺利地推广使用,需要更多的人掌握系统的相关技术,因此系统遵循严格的文档规范,拥有完备的文档,程序有完备的中文注释。4. 可靠性原则由于操作失误出现的故障,重新使用时,系统应有自举功能,一时的设备故障,系统应可进行恢复,不破坏数据的一致性和完整性。5. 健壮性原则本系统接受用户在界面上输入数据,系统应对错误的数据和结构不合理的数据进行识别,拒绝接受错误数据和结构不合理数据。6.2 系统的实现6.2.1下面是本系统教师模块的类图结构:所有Action类GradeHomeworkT_homeworkListT_cDisplayHomeworkDeleteSubmitStatusStdhwDownloadHomeworkUploadHwanswerdownloadHwdownloadIfsessionSaveScoreStdhwDisplayHwrecord(DAO)Homework(entity)SubmitStatus (entity)Remark(entity)StdnHomework(entity) 图6-1系统的类图设计6.2.3 系统代码展示:现针对作业系统的教师模块贴出关键代码:(1)把教师及课程信息列表存到session的Action主要代码 public String execute() throws Exception remarks = HWrecord.querytc_info(t_id) ; HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); session.setAttribute(remarks, remarks); tc_id=HWrecord.querytc(t_id); session.setAttribute(tc_id, tc_id); return SUCCESS ; (2)显示作业列表的Action主要代码 public String execute() throws Exception int a =1; homeworks = HWrecord.queryByPage(tc_id, pageSize, pageNow) ; HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); session.setAttribute(tc_id, tc_id); String c_name=HWrecord.queryC_name(tc_id); session.setAttribute(c_name, c_name); return SUCCESS ; (3)作业上传Action主要代码public String getCurrentDate() Calendar calendar = new GregorianCalendar(); int month=calendar.get(Calendar.MONTH)+1; String currentDate=calendar.get(Calendar.YEAR)+-+month+-+calendar.get(Calendar.DAY_OF_MONTH); return currentDate;public String execute() throws Exception if(file=null)return ERROR; HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); tc_id=(Integer)session.getAttribute(tc_id); savepath=savepath+Integer.toString(tc_id)+/;/tc_id的值是否有变 File f=new File(savepath); String savefilepath2; String savefilepath1; if(!f.exists() f.mkdirs(); savefilepath1=savepath+this.getFileFileName().get(0); File target1=new File(savefilepath1); if(!target1.exists() target1.createNewFile(); FileUtils.copyFile(file.get(0), target1); else return INPUT; String a=this.getFileFileName().get(1); if(!a.equals() savefilepath2=savepath+this.getFileFileName().get(1); File target2=new File(savefilepath2); if(!target2.exists() target2.createNewFile(); FileUtils.copyFile(file.get(1), target2); else File file=new File(savefilepath1); file.delete(); return INPUT; else savefilepath2=; currentdate=getCurrentDate(); String hwname=this.fileFileName.get(0); hwname=hwname.substring(0, hwname.lastIndexOf(.); if(test=null|test.equalsIgnoreCase() result=HWrecord.insertHW(hwname,savefilepath1,savefilepath2,currentdate,tc_id,1);/即时上传 else if(java.sql.Date.valueOf(test).after(java.sql.Date.valueOf(currentdate) result=HWrecord.insertHW(hwname,savefilepath1,savefilepath2,test,tc_id,2);/定时上传 else result=HWrecord.insertHW(hwname,savefilepath1,savefilepath2,currentdate,tc_id,1);/即时上传 if(result) return SUCCESS; elsereturn ERROR; (4)删除作业的Action主要代码/删除文件public void delfile(String filesavepath) File file= new File(filesavepath); file.delete();public String execute() throws Exception String hwsavepath=null; savepath=HWrecord.getSavePath(hw_id); int a=savepath.length; if(a0) for(int i=0;isavepath.length;i+) /删除相应hw_id的学生作业 delfile(savepathi); hwsavepath=HWrecord.gethwSavePath(hw_id); delfile(hwsavepath0); if(!hwsavepath1.equals() delfile(hwsavepath1); boolean result= HWrecord.delRecord(hw_id); HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); tc_id=(Integer)session.getAttribute(tc_id); if (result = true) return SUCCESS;elsereturn ERROR;(5)作业下载的Action主要代码(与学生作业下载以及答案下载代码与之相似,故略) public InputStream getFile() throws Exception/ 添加要下载的文件名String filelocation = HWrecord.querysavepath(hw_id,1);contentDisposition = HWrecord.queryfilename(hw_id,1);File file = new File(filelocation);InputStream is = new FileInputStream(file);return is; (6)存放数据访问代码的HwrecordDao的主要代码public class HWrecord private DataSource ds = null;private Connection conn = null;private PreparedStatement stat = null; private PreparedStatement stat1 = null; private PreparedStatement stat2= null; pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长沙市K郡双语实验中学2025年高二化学第二学期期末经典试题含解析
- 重庆西南大学附属中学2025年数学高二下期末学业质量监测模拟试题含解析
- 云南省泸水五中2024-2025学年高二下化学期末复习检测模拟试题含解析
- 特色火锅店承包经营合同模板
- 产城融合厂房出租居间服务合同
- 车辆转让附带原厂保养及救援服务合同
- 桥梁工程-毕业设计开题报告
- 评选新时代好少年的主要事迹(27篇)
- 2024年河北省政务服务管理办公室下属事业单位真题
- 员工语言规范管理制度
- SL631水利水电工程单元工程施工质量验收标准第1部分:土石方工程
- 2025年湖南出版中南传媒招聘笔试参考题库含答案解析
- GB/T 44880-2024因果矩阵
- (高清版)TDT 1075-2023 光伏发电站工程项目用地控制指标
- 新高考理解性默写之意象关键词类题目60练
- 新生入学报到证明(新生)
- XMT温度控制仪说明书
- 教学能力比赛国赛一等奖教案设计模板
- 19QAKE质量保证关键要素(Quality Assurance Key Elements)稽核手册
- 人教版英语(一年级起点)1-3年级单词表【完整版】
- 实验室生物安全程序文件(共43页)
评论
0/150
提交评论