【软件工程】详细设计(二)

news2024/11/27 0:34:20

这里是详细设计文档的第二部分。前一部分点这里

4. 学生端模块详细设计

学生端模块主要由几个组件构成:学生登录界面,成绩查询界面等界面。因为学生端的功能相对来说比较单一,因此这里只给出两个最重要的功能。

img

图4.1 学生端模块流程图

4.1 学生登录界面模块

4.1.1类描述

定义了对学生的登录操作功能结构。

4.1.2功能

给定账号和密码,实现登录功能。每次登录时都需要验证账号与密码是否正确(通过查询数据库与正则表达式验证),学生比较特殊,他们的学号就是他们的账号。

4.1.3代码实现

JavaScript代码(通过正则表达式实现密码验证):

else {
  debugger;
  var userName = param.userName;
  var reg = /^[\d]{6,10}$/;
  if (userName.length > 10) {
    layer.msg('学号长度不能大于10位', {
      icon: 5
    });
  }
  if (reg.test(userName)) {
    $.ajax({
      //几个参数需要注意一下
      type: "POST",//方法类型
      dataType: "json",//预期服务器返回的数据类型
      url: "/user/studentLogin",//url
      data: param,
      success: function (result) {
        if (result.code == "0") {
          location.href = "/student-index.html";
        } else {
          layer.msg('用户名密码错误', {
            icon: 5
          });
        }
      },
      error: function () {
        layer.msg('服务器错误', {
          icon: 5
        });
      }
    });
  } else {
    layer.msg('学生角色登录请使用学号', {
      icon: 5
    });
  }
}

4.1.4性能

在执行相关操作时,均可以正常实现学生登录功能。

4.2成绩查询界面

4.2.1类描述

定义了对学生的成绩查询操作功能结构。

4.2.2功能

学生查询自己的相关信息与所有的成绩信息。

4.2.3代码实现

HTML代码:

<table class="layui-table"   lay-data="{ url:'/score/getMyScore', page:true, id:'scoreSum'}"   lay-filter="demo">   <thead>      <tr>         <th lay-data="{type:'checkbox', }"></th>         <th lay-data="{field:'studentNo',sort: true}">学号</th>         <th lay-data="{field:'studentName'}">姓名</th>         <th lay-data="{field:'score1'}">习题成绩</th>         <th lay-data="{field:'score2'}">测验成绩</th>         <th lay-data="{field:'score3'}">考试成绩</th>         <th lay-data="{field:'sumScore'}">合计成绩</th>      </tr>   </thead></table>

Java代码:

//获取我的成绩
@RequestMapping("/getMyScore")
public ResultObject<List<TStudent>> getAllSumScore(HttpServletRequest request,@RequestParam("limit") int limit,@RequestParam("page") int page) {
  TStudent student = (TStudent)request.getSession().getAttribute("student");
  PageInfo<TStudent> pageInfo =scoreService.getAllFinalScore(student, limit, page);
  ResultObject<List<TStudent>> rs=new ResultObject<List<TStudent>>();
  rs.setCode(Constant.SUCCESS_RETUEN_CODE);
  rs.setMsg("查询成功");
  rs.setData(pageInfo.getList());
  rs.setCount(pageInfo.getTotal());
  return rs;

} 

@RequestMapping("/getMyScoreInfo")
public ResultObject<List<TScore>> getMyScoreInfo(HttpServletRequest request,@RequestParam("limit") int limit,@RequestParam("page") int page) {
  TStudent student = (TStudent)request.getSession().getAttribute("student");
  TScore score=new TScore();
  score.setStudentId(student.getStudentNo());
  PageInfo<TScore> pageInfo=scoreService.getAllScore(score,limit, page);
  ResultObject<List<TScore>> rs=new ResultObject<List<TScore>>();
  List<TScore> list=pageInfo.getList();
  for(TScore temp:list) {
   String type=temp.getScoreType();
   if("1".equals(type)) {
     temp.setScoreTypeName("习题");
   }
   if("2".equals(type)) {
     temp.setScoreTypeName("测验");
   }
   if("3".equals(type)) {
     temp.setScoreTypeName("考试成绩");
   }
  }
  rs.setCode(Constant.SUCCESS_RETUEN_CODE);
  rs.setMsg("查询成功");
  rs.setData(list);
  rs.setCount(pageInfo.getTotal());
  return rs;

} 

4.2.4性能

在执行相关操作时,均可以正常实现学生成绩查询功能,目前为止未发现错误。

4.2.5 设计方法

运用了面向对象的思想,按Java面向对象编程设计。

5. 管理员端模块详细设计

管理员端模块主要由几个组件构成:管理员登录界面,数据查询界面、搜索功能、学生信息修改界面界面,学生成绩修改界面和教师信息修改界面。管理员端模块需要实现的功能最多,其中有一部分与之前教师端的功能有重叠,本着代码复用和简洁的原则,这里就不再给出详细设计,而只给出之前没有的功能的详细设计。

管理员端模块如下图所示:

img

图5.1 管理员端模块流程图

5.1管理员登录界面

5.1.1类描述

定义了对管理员的登录操作功能结构。

5.1.2功能

给定账号和密码,实现登录功能。每次登录时都需要验证账号与密码是否正确(通过查询数据库与正则表达式验证)。

5.1.3代码实现

JavaScript代码(通过正则表达式实现密码验证):

else if ("3" == param.type) {
  $.ajax({
    //几个参数需要注意一下
    type: "POST",//方法类型
    dataType: "json",//预期服务器返回的数据类型
    url: "/user/login",//url
    data: param,
    success: function (result) {
      if (result.code == "0") {
        location.href = "/admin-index.html";
      } else {
        layer.msg('管理员密码错误', {
          icon: 5
        });
      }
    },
    error: function () {
      layer.msg('服务器错误', {
        icon: 5
      });
    }
  });
} 

5.1.4性能

在执行相关操作时,均可以正常实现管理员登录功能。

5.2学生信息修改界面

5.2.1类描述

定义了管理员的修改学生信息的操作功能结构。

5.2.2功能

管理员能自由地修改学生信息,而教师不能,教师只能查看学生信息。而修改信息又分为三种,添加学生信息、修改学生信息、删除学生信息。

5.2.3代码实现

Java代码:

1.添加学生信息

@RequestMapping("/addStudent")
public ResultObject<Object> addStudent(TStudent student) {

  Integer studentNo=student.getStudentNo();
  student.setStuPass(studentNo.toString());
  TStudent result=studentService.selectByNo(studentNo);
  //统一返回
  ResultObject<Object> rs=new ResultObject<Object>();
  if(null==result) {
   studentService.addStudent(student);
   rs.setCode(Constant.SUCCESS_RETUEN_CODE);
   rs.setMsg("增加学生信息成功");
  }else {
   rs.setCode(Constant.HASE_RETUEN_CODE);
    rs.setMsg("学号已存在");
  }
  return rs;
}

2.删除学生信息

@RequestMapping("/deleteStudent")
public ResultObject<Object> deleteStudent(@RequestParam("studentNo") int studentNo) {
  Integer total=studentService.deleteStudent(studentNo);
  //统一返回
  ResultObject<Object> rs=new ResultObject<Object>();
  if(null==total||0==total) {
   rs.setCode(Constant.FAILURE_RETUEN_CODE);
   rs.setMsg("删除学生信息失败");
  }else {
   rs.setCode(Constant.SUCCESS_RETUEN_CODE);
   rs.setMsg("删除学生信息成功");
  }
  return rs;
}

3.修改学生信息

@RequestMapping("/updateStudent")
public ResultObject<Object> updateStudent(TStudent student) {
  Integer total=studentService.updateStudent(student);
  //统一返回
  ResultObject<Object> rs=new ResultObject<Object>();
  if(null==total||0==total) {
   rs.setCode(Constant.FAILURE_RETUEN_CODE);
   rs.setMsg("修改学生信息失败");
  }else {
   rs.setCode(Constant.SUCCESS_RETUEN_CODE);
   rs.setMsg("修改学生信息成功");
  }
  return rs;
}

5.2.4性能

在执行相关操作时,均可以正常实现管理员删除、添加和修改学生信息的功能。

5.2.5 设计方法

运用了面向对象的思想,按Java面向对象编程设计。

5.3教师信息修改界面

5.3.1类描述

定义了管理员的修改教师信息的操作功能结构。

5.3.2功能

管理员能自由地修改教师信息。修改信息又分为三种,添加教师信息、修改教师信息、删除教师信息。

5.3.3代码实现

Java代码:

1.添加教师信息

@RequestMapping("/addTeacher")
public ResultObject<Object> addTeacher(TTeacher Teacher) {

  Integer TeacherNo=Teacher.getTeacherNo();
  Teacher.setStuPass(TeacherNo.toString());
  TTeacher result=TeacherService.selectByNo(TeacherNo);
  //统一返回
  ResultObject<Object> rs=new ResultObject<Object>();
  if(null==result) {
   TeacherService.addTeacher(Teacher);
   rs.setCode(Constant.SUCCESS_RETUEN_CODE);
   rs.setMsg("增加教师信息成功");
  }else {
   rs.setCode(Constant.HASE_RETUEN_CODE);
    rs.setMsg("账号已存在");
  }
  return rs;
}

2.删除教师信息

@RequestMapping("/deleteTeacher")
public ResultObject<Object> deleteTeacher(@RequestParam("TeacherNo") int TeacherNo) {
  Integer total=TeacherService.deleteTeacher(TeacherNo);
  //统一返回
  ResultObject<Object> rs=new ResultObject<Object>();
  if(null==total||0==total) {
   rs.setCode(Constant.FAILURE_RETUEN_CODE);
   rs.setMsg("删除教师信息失败");
  }else {
   rs.setCode(Constant.SUCCESS_RETUEN_CODE);
   rs.setMsg("删除教师信息成功");
  }
  return rs;
}

3.修改教师信息

@RequestMapping("/updateTeacher")
public ResultObject<Object> updateTeacher(TTeacher Teacher) {
  Integer total=TeacherService.updateTeacher(student);
  //统一返回
  ResultObject<Object> rs=new ResultObject<Object>();
  if(null==total||0==total) {
   rs.setCode(Constant.FAILURE_RETUEN_CODE);
   rs.setMsg("修改教师信息失败");
  }else {
   rs.setCode(Constant.SUCCESS_RETUEN_CODE);
   rs.setMsg("修改教师信息成功");
  }
  return rs;
}

5.3.4性能

在执行相关操作时,均可以正常实现管理员删除、添加和修改教师信息的功能。

5.3.5 设计方法

运用了面向对象的思想,按Java面向对象编程设计,未发现错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1565184.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库加载驱动问题(java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver)

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 遇到此问题&#xff0c;首先检查IDEA外部库中是否有mysql数据库驱动。如下所示&#xff1a; 如果发现外部库中存有mysql数据库驱动&#xff0c;需要在数据库配置文件中查看是否设置有时区mysql8.0以上版本需要设…

多态--下

文章目录 概念多态如何实现的指向谁调谁&#xff1f;例子分析 含有虚函数类的大小是多少&#xff1f;虚函数地址虚表地址多继承的子类的大小怎么计算&#xff1f;练习题虚函数和虚继承 概念 优先使用组合、而不是继承; 继承会破坏父类的封装、因为子类也可以调用到父类的函数;…

Springboot整合Milvus向量库

1. Milvus的Maven依赖&#xff0c; 配置如下 <dependency><groupId>io.milvus</groupId><artifactId>milvus-sdk-java</artifactId><version>2.3.4</version><exclusions><exclusion><artifactId>log4j-slf4j-imp…

【蓝桥备赛】异或和——树状数组、DFS

题目链接 异或和 思路分析 树上每个点都有一个点权&#xff0c;对树上的更新操作是修改指定点的点权&#xff0c;查询操作是查询指定点为根结点的子树点权异或和。 这里的这些操作都和树状数组的单点修改和区间查询非常相似&#xff0c;即我们在修改一个点时&#xff0c;同时…

浅谈物联网高速公路智慧配电室系统构建方案

关键词&#xff1a;高速公路&#xff1b;智慧供配电&#xff1b;电力监控&#xff1b;配电室智能运维托管&#xff1b;安全隐患 0、引言 随着高速公路事业的不断发展和路网的不断延伸&#xff0c;传统的管理方式已难以满足日益增长的需求&#xff0c;动态管理和安全隐患预警成…

当面试官问你插入排序算法,你敢说自己会吗?

算法学习的重要性 在程序员的世界里&#xff0c;算法就如同一座桥梁&#xff0c;连接着问题与解决方案&#xff0c;是实现优秀程序的关键。 掌握算法&#xff0c;就能够在面对各种问题时&#xff0c;找到最合适的解决方法&#xff0c;以最少的时间和空间&#xff0c;实现最优的…

【airtest】自动化入门教程(四)Poco元素定位

目录 一、基础操作 1、通过属性名等方式 2、通过属性组合 3、子节点方式 4、子节点加属性组合方式 5、孙节点offspring 6、兄弟节点sibling 7、父节点parent 8、正则表达式 9、直到某个元素出现 10、直到某个元素消失 二、通过局部坐标定位 1、使用局部坐标系的cli…

计算多个元素的累乘结果累乘器start默认初始为1 math.prod()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算多个元素的累乘结果 累乘器start默认初始为1 math.prod() [太阳]选择题 请问题目中的代码最后输出什么? import math list1 [1, 2, 3] print("【显示】list1 ",list1) pri…

留学生在美国大学利用AI工具到底算不算作弊呢?

自2022年以来&#xff0c;美国大学就开启了一场AI作弊与反作弊大战 战场小至测验&#xff0c;大至申请 这场战争并没有一方胜利&#xff0c;作弊者心思费尽 校方反作弊弄得教授们苦不堪言 那么作为中国留学生该如何避免这场战役呢&#xff1f; 毕竟还是学业要紧呢…… 故事…

[Leetcode笔记] 动态规划相关

前言 写题目写到了一些和动态规划相关的内容&#xff0c;所以在这里记录一下 LCR 089 题解思路 总的来说&#xff0c;就是用一个数组去存储当前的最优解&#xff0c;然后从0开始一路向上顺推过去&#xff0c;求得最后一位的最优解。 class Solution { public:int rob(vect…

【HTML】标签学习(下.2)

&#xff08;大家好哇&#xff0c;今天我们将继续来学习HTML&#xff08;下.2&#xff09;的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 二.列表标签 2.1 无序列表(重点) 2.2有序列表(理解) 2.3 自定义列表(重点…

数据结构算法系列----广度优先搜索(bfs)

目录 一、什么是bfs 二、bfs和dfs的差异 搜索顺序&#xff1a; 数据结构&#xff1a; 搜索方式&#xff1a; 三、bfs解决的主要问题 四、例题 一、什么是bfs BFS&#xff08;广度优先搜索&#xff09;是一种图搜索算法&#xff0c;用于在图或树数据结构中进行遍历。BFS从…

管理科学笔记

1.线性规划 画出区域&#xff0c;代入点计算最大最小值 2.最小生成树 a.断线法&#xff0c;从大的开始断 b.选择法&#xff0c;从小的开始选 3.匈牙利法 维度数量直线覆盖所有的0 4.一直选最当前路线最短路径 5.线性规划 6.决策论

反射——获取Class对象的三种方法,构造器、成员变量、方法

作用 学习如何获取类的信息&#xff0c;操作它们 获取class对象的三种方法 package com.zz.reflection;import com.zz.Interface.studentMannger.ClassManager;//目标&#xff1a;获取class对象 public class Test1Class {public static void main(String args[]) throws Class…

【Qt】使用Qt实现Web服务器(九):EventSource+JSON实现工业界面数据刷新

1、效果 效果如下,实时刷新温度、湿度 2、源码 2.1 index.html <html><body> <!-- 页面布局,本人对HTML标签不熟悉,凑合看吧 --> <div><label for

微信怎么恢复好友?7个方法助你轻松寻回失联好友

在数字化社交日益盛行的今天&#xff0c;微信作为我们日常生活中不可或缺的沟通工具&#xff0c;承载着与亲朋好友、同事伙伴之间的深厚情谊。然而&#xff0c;有时由于误操作或其他原因&#xff0c;我们可能会不小心删除了某些重要的微信好友&#xff0c;这时&#xff0c;如何…

【二叉树】Leetcode 105. 从前序与中序遍历序列构造二叉树【中等】

从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例1&#xff1a; 输入: preorder [3,9,20,15,7], inorder …

刷题之动态规划-子数组

前言 大家好&#xff0c;我是jiantaoyab&#xff0c;开始刷动态规划的子数组类型相关的题目 动态规划5个步骤 状态表示 &#xff1a;dp数组中每一个下标对应值的含义是什么>dp[i]表示什么状态转移方程&#xff1a; dp[i] 等于什么1 和 2 是动态规划的核心步骤&#xff0c;…

深度学习理论基础(五)卷积神经网络CNN

目录 前述&#xff1a;卷积神经网络基础1.卷积网络流程2.卷积网络核心3.卷积下采样4.卷积上采样--转置卷积 一、卷积神经网络层1.卷积层&#xff08;1&#xff09;内部参数&#xff1a;卷积核权重&#xff08;2&#xff09;内部参数&#xff1a;偏置&#xff08;3&#xff09;外…