基于JSP实现的校园师生交流系统

Tommorow

发布日期: 2019-02-19 18:17:30 浏览量: 3248
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

第1章 课设任务

1.1 课程题目

师生交流系统的设计与开发

1.2 课设目的

复习、巩固JavaWeb的基础知识,进一步加深对JavaWeb技术的理解和掌握;课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
培养学生在项目开发中团队合作精神、创新意识及能力

1.3 开发环境

  • 操作系统:Windows

  • 开发工具:MyEclipse

  • Java中间件服务器:Tomcat

  • 数据库: MySQL

MyEclipse 是一个十分优秀的用于开发Java, J2EE的 Eclipse 插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse可以支持Java Servlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse是几乎囊括了目前所有主流开源产品的专属eclipse开发工具。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

第2章 课设内容

师生交流系统是一个教学系统,主要是帮助学生和教师更好进行交流,更好地将若干课程更加紧密地结合起来,更好地达到学以致用;达到教、学结合的目的;让学生能够更加完整而系统地掌握相关知识和技能。

根据师生交流系统的基本需求,本系统需要完成以下任务:

  • 学生用户功能:学生登录之后可以对教学资料查询(可分页),教学视频播放和下载、试题下载

  • 教师用户功能:教师登录本系统可以上传教学资料、视频以及试题,另外可以对这些资料进行增删改查

  • 师生交流功能:学生可以向教师提问,教师可以对学生的提问进行答复

  • 管理用户功能:管理员登录系统之后可以分配学生和教师,对学生和教师进行管理

第3章 需求分析

从代码实现角度分析,该系统共包括以下几个部分:用户登录、信息的列表、信息的查询、信息的添加、信息的修改、信息的删除和退出登录。

3.1系统用户角色分析

用户分为学生用户、教师用户和管理员用户。

学生登录之后可以对教学资料、教学视频、试题进行查询和下载,还可以对教学视频进行播放;教师用户登录后可以上传教学资料、教学视频和试题,还可以对这些资料进行增删改查;管理员用户登录后可以分配学生和教师,对学生和教师信息进行增删改查。在论坛功能中,所有用户都可以发表帖子和回复,只有管理员可以对帖子信息进行删改。

3.2 功能需求分析

3.2.1 用户登录

功能描述:根据用户输入的用户名和密码,并选择用户角色(学生、教师或管理员)进行登录验证,输入正确则提示“成功”并进入系统主界面。输入错误则提示“失败”,并返回登录界面。

功能约束:用户登录必须输入用户名、密码,并选择用户角色。登录成功后会根据用户权限的不同,显示具有不同功能的系统主界面。

3.2.2 信息列表

功能描述:在资料列表、视频列表、试题列表、学生管理、教师管理、论坛列表中,需要列出数据库中的数据。

功能约束:需要按实际情况准确显示数据库表中的数据。

3.2.3 信息查询

功能描述:在列表的上方,通常要有输入框用于查询某一条或某几条特定信息,比如根据标题查找资料,根据用户名查找学生等。

功能约束:查询时不需要输入全部信息,只需输入部分信息。

3.2.4 信息添加

功能描述:资料上传、视频上传、试题上传、用户添加、发表帖子、帖子回复等功能需要用到信息添加模块,添加时需按要求填写或选择信息,添加成功后会跳转到相应的列表界面。

功能约束:添加信息时会自动获取当前时间并录入到数据表中,需要用到文件的上传。

3.2.5 信息修改

功能描述:管理员可以学生和教师进行编辑,还可以对帖子进行编辑,编辑成功会更新数据表中相应的信息,跳转到对应的列表。

功能约束:修改时也会自动修改数据表中的时间为当前时间。

3.2.6 信息删除

功能描述:管理员和教师可以对资料、视频、试题进行删除,管理员可以对学生、教师的用户信息和帖子进行删除,删除成功会删除数据表中相应的信息并跳转到对应的列表。

功能约束:删除数据会根据数据表的“id”进行删除。

3.2.7 退出登录

功能描述:当用户点击“退出”按钮时,会清空登录时保存的信息,并跳转到用户登录界面。

3.3 相关技术简介

3.3.1 前端技术

在前端的开发设计上,使用了bootstrap和jquary进行辅助开发,提高了开发的效率。

Bootstrap,来自 Twitter,是目前很受欢迎的前端框架。Bootstrap是基于 HTML、CSS、JavaScript的,它简洁灵活,使得Web开发更加快捷。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。Bootstrap一经推出后颇受欢迎,一直是GitHub上的热门开源项目,包括NASA的MSNBC(微软全国广播公司)的Breaking News都使用了该项目。国内一些移动开发者较为熟悉的框架,如WeX5前端开源框架等,也是基于Bootstrap源码进行性能优化而来。

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

3.3.2 后端技术

本系统采用了SpringMVC框架进行后台的开发,大大加快了开发速度,使后台代码更加简洁与清晰,利于后期拓展与维护。

Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。

Spring MVC框架提供了一个DispatcherServlet作用前端控制器来分派请求,同时提供灵活的配置处理程序映射、视图解析、语言环境和主题解析,并支持文件上传。Spring MVC还包含了多种视图技术,例如JSP、Velocity、Tiles、iText和POI等。Spring MVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

第4章 设计过程

4.1 总体设计

通过对用户需求和系统设计思想的分析,并根据界面展示需要,可以得出该系统可以分为六大模块:用户登录模块、教学资料模块、教学视频模块、试题资料模块、用户管理模块、论坛系统模块。

4.1.1 系统功能模块设计

经过分析,该系统要实现的是帮助学生和教师更好进行交流,达到辅助教学的目的。主要设计以下功能模块:

用户登录模块

用户在使用系统之前必须登录系统,登录时需要输入用户名、密码、验证码,选择用户角色进行登录。

教学资料模块

教学资料模块包括资料列表和资料上传两个部分,学生可以查看和下载资料,教师和管理员可以进行资料的增删改查。

教学视频模块

教学视频模块包括视频列表和视频上传两个部分,学生可以查看和下载视频,在线观看视频,教师和管理员可以进行视频的增删改查。

试题资料模块

试题资料模块包括试题列表和试题上传两个部分,学生可以查看和下载试题,教师和管理员可以进行试题的增删改查。

用户管理模块

管理员用户需要对学生用户和教师用户进行管理,包括学生列表、教师列表和用户添加三部分。用户添加功能需要首先选择角色,然后填写信息并提交。

论坛系统模块

论坛系统模块包括帖子列表和帖子发布两部分,所有用户都可以进行查看帖子列表和发表帖子,在帖子列表界面,点击帖子标题可以进入帖子详情,在帖子详情中用户可以查看回复内容及添加回复。

4.1.2 用户登录模块结构图

用户登录模块功能结构图,如图4.1所示:

4.1.3 管理员用户功能结构图

管理员用户功能结构图。如图4.2所示:

4.1.4 学生用户功能结构图

学生用户功能结构图,如图4.3所示:

4.1.5 教师用户功能结构图

教师用户功能结构图,如图4.4所示:

4.2 详细设计

4.2.1 系统主页面

系统主页面分为三部分,分别是头部,左侧菜单栏和右侧主内容区,在之前的设计中大多使用iframe标签进行布局,但我从网上了解到这个设计有很大的弊端,比如:

  • 页面样式调试麻烦,出现多个滚动条

  • 浏览器的后退按钮失效

  • 过多会增加服务器的HTTP请求

  • 小型的移动设备无法完全显示框架

  • 产生多个页面,不易管理

  • 不容易打印

  • 代码复杂,无法被一些搜索引擎解读

经过查阅资料,我了解到目前主流的应用都使用了ajax代替了iframe。把你本来想创建的iframe换成DIV。然后点击菜单的时候,调用ajax或者.load,调用后台,返回数据之后,直接填充到DIV里即可。

部分实现代码如下:

  1. //左侧菜单代码
  2. <ul class="list-group" id="nav">
  3. <li class="list-group-item li1" ><b>教学资料</b></li>
  4. <li class="list-group-item li" ><a target="data/list">资料列表</a></li>
  5. <li class="list-group-item li" ><a target="././data_upload">资料上传</a></li>
  6. </ul>
  7. //AJAX部分代码
  8. $("#nav .li").click(function(){
  9. var current = $(this);
  10. target = current.find('a').attr('target'); //找到a的链接
  11. $(".li").removeClass("active1");
  12. current.addClass("active1");
  13. $.get(target,function(data){
  14. $("#navContent").html(data);
  15. });
  16. });

系统主界面如图4.5所示:

4.2.2 基本功能实现

用户登录模块

  • 功能描述:用户只有通过登录成功后才能进入系统,进行相应的操作。

  • 用户登录功能流程图,如图4.6所示

  1. //登录判断代码
  2. @RequestMapping(value="/login")
  3. public void login(String role,String username,String password,String rem,HttpServletRequest request,HttpServletResponse response) throws IOException{
  4. User auser=null;
  5. auser=new User();
  6. auser.setPassword(password);
  7. auser.setUsername(username);
  8. auser.setRole(role);
  9. boolean flag=userService.login(auser);
  10. PrintWriter out = response.getWriter();
  11. if(flag){//记住我
  12. if("true".equals(rem)){
  13. System.out.println(URLEncoder.encode(username,"utf-8"));
  14. System.out.println(URLEncoder.encode(role,"utf-8"));
  15. Cookie cook =new
  16. Cookie("username",URLEncoder.encode(username,"utf-8"));
  17. cook.setMaxAge(14*24*60*60); //两个星期
  18. response.addCookie(cook);
  19. Cookie cook1 =new
  20. Cookie("role",URLEncoder.encode(role,"utf-8"));
  21. cook1.setMaxAge(14*24*60*60); //两个星期
  22. response.addCookie(cook1);
  23. }
  24. HttpSession session=request.getSession();
  25. session.setAttribute("username", username);
  26. session.setAttribute("role", role);
  27. out.print("1");//返回登录信息
  28. }else{
  29. out.print("0");
  30. }
  31. out.flush();
  32. out.close();
  33. }

用户登录界面如图4.7所示:

教学资料模块

教学资料模块包括资料列表和资料上传两个部分。

  • 功能描述:教师和管理员进行教学资料的增删改查,学生可以对教学资料进行查看和下载。
  1. //资料列表功能代码
  2. @RequestMapping(value="/list")
  3. public ModelAndView list(Integer currPage,String soukey){
  4. ModelAndView mv=new ModelAndView();
  5. String key="%%";
  6. if(soukey!=null){
  7. key="%"+soukey+"%";
  8. }
  9. int pageSize=5;
  10. if(currPage==null||currPage==0){
  11. currPage=1;
  12. }
  13. int index=(currPage-1)*pageSize;
  14. int totalCount=Integer.parseInt(dataService.findCount(key)
  15. .get(0).get("count(id)").toString());
  16. Page page=new Page();
  17. page.setPageSize(pageSize);
  18. page.setTotalCount(totalCount);
  19. page.setCurrPage(currPage);
  20. mv.addObject("page", page);
  21. List<Map<String,Object>> list=dataService.findAll(index,pageSize,key);
  22. mv.addObject("list", list);
  23. mv.addObject("key",soukey);
  24. mv.setViewName("list");
  25. return mv;
  26. }

资料列表界面如图4.8所示:

资料上传界面如图4.9所示:

教学视频模块

教学视频模块分为视频列表和视频上传两部分。

  • 功能描述:教师和管理员可以进行教学视频的增删改查,学生用户可以在线播放视频和下载视频。
  1. //视频上传功能代码
  2. @RequestMapping(value="/upload")
  3. public ModelAndView upload(HttpServletRequest request,HttpServletResponse response) throws IOException{
  4. multipartRequest=(MultipartHttpServletRequest)request;
  5. String title="";
  6. String path="";
  7. String author="";
  8. String fname="";
  9. response.setContentType("text/html;charset=utf-8");
  10. try {
  11. //1.创建DiskFileItemFactory工厂对象
  12. DiskFileItemFactory factory=new DiskFileItemFactory();
  13. File f=new File("E:\\temp");
  14. if(!f.exists())
  15. {
  16. f.mkdirs();
  17. }
  18. //2.创建ServletFileUpload对象
  19. ServletFileUpload fileupload=new ServletFileUpload(factory);
  20. fileupload.setHeaderEncoding("utf-8");
  21. //3.解析request,得到上传文件的FileItem对象
  22. List<FileItem> fileitems=fileupload.parseRequest(request);
  23. //获取字符流
  24. PrintWriter writer=response.getWriter();
  25. //遍历集合
  26. for(FileItem fileitem:fileitems){
  27. //判断是否为普通字段
  28. if(fileitem.isFormField()){
  29. //获得字段名和字段值
  30. String name=fileitem.getFieldName();
  31. if(name.equals("name"))
  32. {
  33. //如果name不为空,将其保存在value中
  34. if(!fileitem.getString().equals(""))
  35. {
  36. String value=fileitem.getString("utf-8");
  37. writer.print("上传者:"+value+"<br/>");
  38. author=value;
  39. }
  40. }
  41. }else{
  42. //获取上传文件名
  43. String filename=fileitem.getName();
  44. //数据表标题
  45. title=filename;
  46. //处理上传文件
  47. if(filename!=null&&!filename.equals("")){
  48. writer.print("上传的文件名称是:"+filename+"<br/>");
  49. //截取出文件名
  50. filename=filename.substring(filename.lastIndexOf("\\")+1);
  51. //文件名需要唯一
  52. filename=UUID.randomUUID().toString()+"_"+filename;
  53. fname=filename;
  54. //在服务器上创建同名文件
  55. String webPath="/upload/";
  56. //组合成完整的服务器路径
  57. String filepath=request.getServletContext()
  58. .getRealPath(webPath+filename);
  59. path=filepath;
  60. //创建文件
  61. File file=new File(filepath);
  62. file.getParentFile().mkdirs();
  63. file.createNewFile();
  64. //获得上传文件流
  65. InputStream in=fileitem.getInputStream();
  66. //使用FileOutputStream打开服务器端的上传文件
  67. FileOutputStream out=new FileOutputStream(file);
  68. //流的对拷
  69. byte[] buffer=new byte[1024];//每次读取一个字节
  70. int len;
  71. //上传文件的字节输出到服务器的上传文件输出流中
  72. while((len=in.read(buffer))>0){
  73. out.write(buffer,0,len);
  74. }
  75. //关闭流
  76. in.close();
  77. out.close();
  78. //删除临时文件
  79. fileitem.delete();
  80. writer.print("上传成功!<br/>");
  81. }
  82. }
  83. }
  84. } catch (FileUploadException e) {
  85. e.printStackTrace();
  86. }
  87. Video video=new Video();
  88. video.setTitle(title);
  89. video.setAuthor(author);
  90. video.setPath("upload\\"+fname);
  91. System.out.println(fname);
  92. video.setTime(new Date());
  93. videoService.add(video);
  94. return list(1,null);
  95. }

视频列表界面如图4.10所示:

视频上传界面如图4.11所示:

视频在线播放界面如图4.12所示:

试题资料模块

试题资料模块包括试题列表和试题上传两部分。

  • 功能描述:教师和管理员用户可以对试题进行增删改查,学生用户可以对试题进行查看和下载。
  1. //试题下载功能代码
  2. @RequestMapping(value=("/download"))
  3. public void download(HttpServletRequest request,HttpServletResponse response) throws IOException{
  4. /*
  5. * 获取下载地址,下载
  6. */
  7. //获取相对路径
  8. String filename = request.getParameter("path");
  9. //获取要下载的文件的物理路径
  10. String filepath = request.getServletContext().getRealPath("/")+filename;
  11. int index = filename.lastIndexOf("/");
  12. if(index!=-1)
  13. filename = filename.substring(index+1);//获取文件名
  14. // 为了使下载框中显示中文文件名称不出乱码!
  15. String framename = filenameEncoding(filename, request);
  16. String contentType = request.getServletContext()
  17. .getMimeType(filename);//通过文件名称获取MIME类型
  18. String contentDisposition = "attachment;filename=" + framename;
  19. //为了显示下载框
  20. // 输入流
  21. FileInputStream input = new FileInputStream(filepath); //设置头
  22. response.setHeader("Content-Type", contentType);
  23. response.setHeader("Content-Disposition", contentDisposition);
  24. // 获取绑定了响应端的流(输出流)
  25. ServletOutputStream output = response.getOutputStream();
  26. IOUtils.copy(input, output);//把输入流中的数据写入到输出流中。
  27. input.close();
  28. }

试题列表界面,如图4.13所示:

试题上传界面,如图4.14所示:

用户管理模块

学生和教师用户的账号需要由管理员用户来添加和分配,用户管理模块主要包括学生管理、教师管理和用户添加三部分。

  • 功能描述:管理员用户可以对学生和教师用户的用户信息进行增删改查。
  1. //用户信息添加和编辑代码
  2. @RequestMapping(value="/edit")
  3. public ModelAndView edit(String id,String role,String username,String password,String sex,String email,String phone,String birthday) throws ParseException{
  4. ModelAndView mv=new ModelAndView();
  5. User auser=new User();
  6. auser.setRole(role);
  7. auser.setUsername(username);
  8. auser.setPassword(password);
  9. auser.setSex(sex);
  10. auser.setEmail(email);
  11. auser.setPhone(phone);
  12. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  13. Date date = formatter.parse(birthday);
  14. auser.setBirthady(date);
  15. if(id==null||"".equals(id)){
  16. userService.addUser(auser);
  17. }else{
  18. auser.setId(Integer.parseInt(id));
  19. userService.editUser(auser);
  20. }
  21. return list(role,1,null);
  22. }

学生用户管理界面,如图4.15所示:

教师用户管理界面,如图4.16所示:

用户添加界面,如图4.17所示:

论坛系统模块

论坛系统包括论坛列表和发表帖子两部分。

  • 功能描述:所有用户都可以进行帖子的发表、浏览和回复,管理员用户可以对帖子内容进行增删改查。
  1. //帖子回复功能代码
  2. @RequestMapping(value="/replyAdd")
  3. public ModelAndView replyAdd(String forumid,String author,String lou,String content){
  4. //敏感词过滤
  5. content=KeyWordFilter.keyWordFilter(content);
  6. Reply areply=new Reply();
  7. areply.setForumid(Integer.parseInt(forumid));
  8. areply.setAuthor(author);
  9. areply.setContent(content);
  10. areply.setTime(new Date());
  11. areply.setLou(Integer.parseInt(lou));
  12. forumService.replyAdd(areply);
  13. return show(forumid,1);
  14. }

论坛列表界面,如图4.18所示:

论坛发帖界面,如图4.19所示:

帖子详情界面,如图4.20所示:

4.2.3 系统优势与特色

保存登录功能

  • 功能描述:用户在进行登录时,如果选中“记住我”复选框,系统会将用户信息保存到浏览器cookie中,保存时间为两周,在cookie生效时,用户进入系统时无需再次登录便可直接进入系统,极大地提升了用户体验,提高工作的效率。
  1. //保存用户信息到cookie中
  2. if("true".equals(rem)){
  3. Cookie cook =new Cookie("username",URLEncoder.encode(username,"utf-8"));
  4. cook.setMaxAge(14*24*60*60); //两个星期
  5. response.addCookie(cook);
  6. Cookie cook1 =new Cookie("role",URLEncoder.encode(role,"utf-8"));
  7. cook1.setMaxAge(14*24*60*60); //两个星期
  8. response.addCookie(cook1);
  9. }
  10. //从cookie中读取用户信息
  11. Cookie cookies[] =request.getCookies();
  12. if(cookies!=null){
  13. for(int i=0;i<cookies.length;i++){
  14. if(cookies[i].getName().equals("username")){
  15. String username=cookies[i].getValue();
  16. session.setAttribute("username", URLDecoder.decode(username, "utf-8"));
  17. }
  18. if(cookies[i].getName().equals("role")){
  19. String role=cookies[i].getValue();
  20. session.setAttribute("role", URLDecoder.decode(role, "utf-8"));
  21. }
  22. }
  23. }

用户登录界面如下:

AJAX动态验证功能

  • 功能描述:本系统使用AJAX技术进行用户名密码的验证,验证码的验证和用户添加时的用户名查重。实现了页面无刷新,在页面内与服务器通信,给用户的体验非常好。使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。
  1. //用户登录功能AJAX代码
  2. $.ajax({
  3. url:"user/login",
  4. data:{role:$("#role").val(),username:$("#username").val(),password:$("#password").val(),rem:$("#rem").is(':checked')},
  5. dataType: 'text',
  6. type: 'post',
  7. scriptCharset: 'utf-8',
  8. success:function(result){
  9. if(eval("("+result+")")=="0"){
  10. $("#unerr").removeClass("text-success");
  11. $("#unerr").addClass("text-danger");
  12. $("#unerr").text("用户名或密码错误");
  13. $("#username").focus();
  14. }else if(eval("("+result+")")=="1"){
  15. window.location.href = "user/success";
  16. }
  17. }
  18. });

用户名密码验证和验证码验证界面如图4.22所示:

第5章 调试过程

5.1 遇到的问题

  • 登录时输入错误,并不会提示登录失败,而是网页直接报错

  • 提交表单时出现乱码

  • rs.next()不能正确获取数据库中的数据

  • 不知道什么时候使用post提交,什么时候使用get提交。

5.2 解决方法

  • 登录判断页面(login_do.jsp)中,登录信息session的保存没有放在判断是否为空的判断语句(if(list!=null))中,导致登录失败也会保存session,这时就无法正确获取登录信息,导致网页报错。将session放在判断语句中就可以解决

  • 表单提交时以get的请求发送到tomcat服务器后又会以默认的(ISO8859-1)解码,这时会出现中文乱码,改为post提交方式就解决了

  • ResultSet是一个结果集,即ResultSet存有一个表(通过执行查询数据库的语句生成),该表的当前行可以访问(当前行的初始位置是null),可以使用rs.next()方法移动到下一行(即表的第一行),如果新的当前行有效(即有值)就返回true,然后就可以使用get方法获取该行各列的值了,如果不存在下一行,则返回 false;因为这个方法会抛出一个SQLException,故要捕捉(try-catch)。直接使用rs.next()不能获取,前面要加上判断语句(if(rs.next)或while(rs.next))

  • get方法传输数据会在地址栏显示,并且数据不能过长,但会优先读取本地缓存,很多时候会加速用户访问。一般获取数据用get,进行数据更改用post。

第6章 系统测试

以下测试均以管理员身份进行登录,测试师生交流系统的各项功能。

6.1 用户登录模块

用户登录输入管理员用户密码,选择管理员角色,如图6.1所示:

点击登录按钮,跳转进入系统主界面,如图6.2所示:

由上图可知,用户登录功能运行成功。

6.2 系统功能模块

对教学资料、教学视频、试题资料、用户资料、论坛帖子的增删改查和资料下载功能较为类似,这里以教学资料为例进行测试。

资料列表功能测试

点击左侧菜单“教学资料”,再点击“资料列表”,进入资料列表界面。资料列表界面如图6.3所示:

点击右侧“下载”,可以进行资料的下载,如图6.4所示。

资料上传功能测试

点击左侧菜单中的“资料上传”,进入资料上传界面,输入作者信息,选择资料文件,如图6.5所示:

点击“提交”按钮,提示“成功”,跳转进入资料列表界面,可以看到刚添加的信息,如图6.6所示:

查询资料功能测试

进入资料列表,在上方的查询框中输入标题的关键字,如图6.7所示:

点击“搜索”按钮,后台查询并显示要查询的信息,如图6.8所示:

教学资料的删除功能测试

这里进行批量删除功能的测试,进入资料列表,选中需要删除的资料,如下图所示:

点击“批量删除”按钮,成功删除指定信息,并自动刷新界面,如图6.10所示:

教学视频播放测试

点击左侧“视频列表”菜单,点击标题或右侧的“播放”,即可进入播放界面,如图6.11所示:

论坛系统测试

点击右侧“论坛系统”菜单,再点击“论坛”,进入论坛列表界面,如图6.12所示:

点击标题,进入帖子详情界面,如图6.13所示:

在下方的回复栏中可以进行帖子回复,如图6.14所示:

帖子发表功能测试

点击右侧“发表帖子”菜单,进入发表帖子页面,填写信息,如图6.14所示:

点击“提交”按钮,帖子成功发表,并转到论坛列表界面,如图6.15所示:

第7章 课设小结

经过这段时间的课设学习,我收获了很多。在自己的努力和老师的耐心指导下,终于完成了这次课设的内容。这其中的酸甜苦辣只有经历过才体会得到,曾无数次找错误找到崩溃,无数次想代码想到忘记吃饭,这一刻才体会到收获的喜悦,这是发自内心的。

同时在这次课设中,我培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。我学会了很多学习的方法。而这是日后最实用的。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我的将来也有很大的帮助。以后,不管有多苦,我想我都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。以后遇到困难的问题,我除了苦恼,更多的是欣喜,因为解决了它我就能成长。

我明白了自己知识还比较欠缺,只是学习书本知识还是远远不够的,自己不会的东西还有太多,学习需要自己长期的积累,在以后的学习、工作中都应该不断的学习,将课本的理论知识与生活中的实践知识相结合,不断提高自己文化知识和实践能力。

第8章 参考文献

[1] 张娜. JavaWeb开发技术教程(第二版).清华大学出版社,2018.1

[2] 王珊,萨师煊.数据库系统概论(第5版).高等教育出版社,2017.3

[3] Cay S. Horstmann / Gary Cornell. JAVA核心技术(卷1) 机械工业出版社,2008

[4] [美] Bruce Eckel. Java编程思想 [第4版] 机械工业出版社,2007

上传的附件 cloud_download 基于JSP实现的校园师生交流系统.7z ( 20.65mb, 174次下载 )
error_outline 下载需要14点积分

keyboard_arrow_left上一篇 : 基于QT和UDP Socket实现的即时通信软件 基于C#实现的电影院售票管理系统 : 下一篇keyboard_arrow_right



Jankin
2020-12-13 11:53:54
这个系统做的非常好 有设计说明 有截图 好评!
8&24后仰跳投
2021-01-03 20:46:09
好评,要是不要积分能下载源码就好了

发送私信

成功其实很简单,就是当你坚持不住的时候,再坚持一下

10
文章数
8
评论数
最近文章
eject