Computer Knowledge and Technology电脑知识与技术第7卷第2期(2011年1月)E-mail:wltx@Tel:+86-551-56909635690964 ISSN1009-3044Computer Knowledge and Technology电脑知识与技术Vol.7,No.2,January2011,pp.370-373高等院校课程作业提交与评阅系统的设计与实现杜建荣,乔永瑞,袁玉飞(河西学院信息技术中心,甘肃张掖734000)摘要:为了方便高校教师和学生作业的提交与评阅,设计实现了一种基于B/S结构的作业提交与评阅系统。
该文介绍了保证该系统实现的需求分析、界面设计、体系结构设计和具体的数据库设计,并有重点的介绍了系统个别功能模块实现的关键技术。
关键词:高校学生作业;提交;评阅;系统设计;实现中图分类号:TP393文献标识码:A文章编号:1009-3044(2011)02-0370-04在高等院校的课程教学中,学生作业的提交与教师评阅环节凸显出其存在的问题,但随着计算机技术、数据库技术、网络技术的快速发展,为我们提供了便利条件,可借助信息技术支撑手段开发《高等院校课程作业提交与评阅系统》,有效解决学生作业的提交与教师评阅问题。
1《高等院校课程作业提交与评阅系统》总体设计1.1系统需求分析高等院校中,由于学生和教师受到空间和时间的限制,师生面对面交流的机会少、信息反馈少,导致教师布置作业、学生作业提交、教师布置作业、评阅作业、作业反馈都极不方便。
在高校一般的做法是教师布置作业是采用口述或发邮件的方式布置,但是口述可能导致布置作业不清楚,而发邮件可能会使信息传达不到,不能及时阅读,并且发布也不是很方便,需确认是否给所有学生都传达到,这个工作需要仔细核对。
开发此系统正是弥补了这些不足,实现了教师和班级课程的对应,学生和班级的对应,教师布置的作业会发给所有本课程对应班级的学生,保证了每个学生都能接收到作业,学生提交的作业,教师立即就可以看到,并且实现已提交作业统计,下载方便。
教师查看了作业后可以对作业评分给出反馈意见,学生可以方便看到教师的批改意见,及时修改并能保存,方便以后的使用和查阅。
1.2系统体系结构本系统的设计和开发主要设计采用B/S模式,利用JAVA网络编程语言,开发适合用于高等学校任课教师使用。
本系统主要使用MyEclipse7.0作为开发工具,服务器采用Tomcat6.0,数即库采用MySQL5.0,采用JAVA作为后台开发语言,结合JavaScript脚本语言,采用主流框架Struts2+Hibernate实现,同时辅助以基本的Photoshop图片处理技术、网站开发技术。
B/S架构使得教师和学生可以直接通过浏览器随时进行作业的评阅与提交,在进行其各自工作是只需要输人账号和密码登陆,其余操作均可通过功能按钮借助鼠标完成[1]。
1.3系统界面设计本系统使用框架技术来进行网站的总体构架设计,界面采用上方放置LOGO标志和导航菜单,而页面中间的区域是显示区域。
导航菜单采用横向放置的动态展开式显示方式;整个界面设计简单明了,方便使用、为用户提供必要的帮助信息;界面色彩设计以淡绿色为主,避免用户使用较长时间后不感到视觉疲劳;设计过程中尽可能降低图片文件大小和数量,加快加载速度;系统界面可适应不同用户屏幕大小。
总的来说界面设计友好、风格活泼、颜色样式搭配合理、导航清晰、易操作[2]。
1.4系统功能及角色设计本系统可以由管理员实现对系,班级,课程,用户(教师、学生)各信息的分别管理。
学生能实现作业的提交、下载、查看,教师能实现作业布置、下载、评阅与信息反馈。
其主要的角色有管理员,学生和教师。
管理员可实现对系和班级的添加、删除、查询;添加课程;添加用户(批量导入用户和直接添加)、查询和修改用户信息等功能。
教师可实现布置作业、已布置作业的修改、作业下载控制、作业评阅、作业评分等功能。
学生可及时查看教师发布的作业信息、提交作业、下载作业、查阅评阅意见与成绩、共享同学作业等功能。
1.5系统数据库设计因MySQL功能强,使用简单,管理方便,运行速度快,可靠性高,安全保密等特点,故本系统采用MySQL来实现。
数据库中各表基本结构如表1~表8所示[3]。
收稿日期:2010-11-08作者简介:杜建荣,男,讲师,在读硕士,河西学院信息技术中心,主要研究方向为教育技术基本理论与实践、教学系统设计理论与实践。
表1系信息表t_department(用来存储系信息)表2班级信息表t_class(用来存储班级信息)Computer Knowledge and Technology 电脑知识与技术第7卷第2期(2011年1月)2《高等院校课程作业提交与评阅系统》主要功能模块的实现2.1“EXCEL 批量添加用户”功能设计与实现本系统添加用户模块中实现了通过Excel 批量导入用户,这里采用POI 开源项目来实现。
Apache POI 是Apache 软件基金会的开放源码函式库,POI 提供API 给Java 程式对Microsoft Office 格式档案读和写的功能。
下段示例程序实现如何读取Excel 文档中的数据。
假定在D 盘JTest 目录下有一个文件名为test1.xls 的Excel 文件。
程序如下:import ermodel.HSSFWorkbook;import ermodel.HSSFSheet;import ermodel.HSSFRow;import ermodel.HSSFCell;import java.io.FileInputStream;public class ReadXL {public static String fileToBeRead="D:\\test1.xls";public static void main(String argv[]){try{HSSFWorkbook workbook =new HSSFWorkbook(new FileInputStream(file -ToBeRead));HSSFSheet sheet =workbook.getSheet("Sheet1");HSSFRow row =sheet.getRow(0);HSSFCell cell =row.getCell((short)0);System.out.println("左上端单元是:"+cell.getStringCellValue());}catch(Exception e){System.out.println("已运行xlRead():"+e );}}}2.2“添加课程时动态显示教师”功能的设计与实现本功能的实现主要采用Ajax 技术。
核心代码如下:$(function(){$("#addstudent_departmentid").change(function(){var departmentid=$("#addstudent_departmentid").val();$.get ("../GetClassByDepartmentID?departmentid ="+departmentid,null,function(response){$("#adduser_classlist").html(response);});});$("#modifystudent_departmentid").change(function(){var departmentid=$("#modifystudent_departmentid").val();$.get ("../GetModifyClassByDepartmentID?departmentid ="+departmentid,null,function(response){$("#modifystudent_classlist").html(response);});});})2.3“教师下载作业”功能模块的设计与实现本模块主要采用Struts 的common-file upload 来实现[4],核心代码如下:public class TeacherDownHomework implements Action {private String fileName;private String studentid;private String temppath;private String inputPath;public void setInputPath(String value){inputPath =value;}public String getStudentid(){return studentid;}public void setStudentid(String studentid){this.studentid =studentid;}public void setFileName(String fileName){ActionContext act =ActionContext.getContext();Session session =HibernateUtils.getSession();if(fileName.indexOf("W")>=0){String[]names=fileName.split("W");this.temppath=names[0];表3教师课程表t_classcourseteacher(用来存储教师对应班级的课程)表4教师信息表t_teacherinfo(用来存储教师和管理员信息)表5学生信息表t_studentinfo (存储学生信息)表6教师布置的作业信息表t_homeworkhublish (用来存储教师布置的作业信息)表7学生提交的作业信息表t_homework (存储学生提交的作业信息)表8作业评价信息表t_homeworkcomment(用来存储老师对学生作业评价信息)Computer Knowledge and Technology电脑知识与技术第7卷第2期(2011年1月) int homeworkid=Integer.parseInt(names[1]);String tempname="";HomeworkPublishhb=(HomeworkPublish)session.get(HomeworkPublish.class,homeworkid);int times=hb.getTimes();ClassCourseTeachercct=(ClassCourseTeacher)session.get(ClassCourseTeacher.class,hb.getCourseid());int courseid=cct.getId();Class c=(Class)session.get(Class.class,cct.getClassid());int classid=c.getId();Department d=(Department)session.get(Department.class,c.getDepartmentid());String hometitle=hb.getTitle();if(hometitle.length()>=15){hometitle=hometitle.substring(0,15)+"...";}tempname=d.getName()+c.getClassname()+"班第"+times+"次作业("+hb.getTitle()+")";this.fileName=tempname+".zip";}else{Homeworkhomework=(Homework)session.get(Homework.class,Integer.parseInt(fileName));String path=homework.getHomeworkpath();int i=stIndexOf("/");this.temppath=path.substring(0,i+1);this.fileName=path.substring(i+1,path.length());}}public String getFileName(){DateFormat df=new SimpleDateFormat("yyyy-MM-dd");String fileName=this.fileName;System.out.println(fileName);try{fileName=new String(fileName.getBytes(),"ISO-8859-1");return fileName;}catch(UnsupportedEncodingException e){return"impossible.xls";}}public InputStream getInputStream()throws Exception{String url=inputPath+"/"+this.temppath+fileName;int size=url.length()-1;for(int i=0;i<size;i++)url=url.replace("\\","/");return ServletActionContext.getServletContext().getResourceAsStream(url);}public String execute()throws Exception{ServletActionContext.getResponse().setHeader("Conent-Disposition","attachment;filename="+new String(fileName.getBytes("utf-8")," iso-8859-1"));String downloadDir=ServletActionContext.getServletContext().getRealPath("/WEB-INF/homeworks");String downloadFile=ServletActionContext.getServletContext().getRealPath(inputPath)+"/"+this.temppath+this.fileName;return SUCCESS;}}2.4“防止未登录用户浏览页面”功能的设计与实现此功能的实现主要采用Filter过滤器,所有请求的页面都必须经过过滤器,登录界面即登陆页面的css,输出验证码的Servlet和登录页面图片被放过,其他的页面首先要判断SESSION中是否保存登录信息,如果不存在登录信息,则禁止访问[4],核心代码如下:public class CharacterEncodingFilter implements Filter{public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException{HttpServletRequest req=(HttpServletRequest)request;HttpSession session=(HttpSession)req.getSession();HttpServletResponse res=(HttpServletResponse)response;req.setCharacterEncoding("utf-8");res.setCharacterEncoding("utf-8");第7卷第2期(2011年1月)Computer Knowledge and Technology电脑知识与技术String url=req.getRequestURL().toString();String str=url.substring(stIndexOf("/")+1,url.length());String username=(String)session.getAttribute("sys_username");if(str.equals("logon.jsp")||str.equals("style.css")||str.equals("getImageCode")||str.equals("logon.gif")||str.equals("validateLogon.action")|| (username!=null&&!username.equals("null")&&!username.equals(""))){chain.doFilter(req,res);}}}2.5“页面展示与后台交互”功能的设计与实现本功能的实现主要采用流行的Struts最新框架Struts2来达到页面展示和后台的交互功能。