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

news/2025/1/18 11:04:48/

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

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",//urldata: 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",//urldata: 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.ppmy.cn/news/1405056.html

相关文章

29-控制流(下):iam-apiserver服务核心功能实现讲解

我们再来看下 iam-apiserver 中的核心功能实现。 这些关键代码设计分为 3 类&#xff0c;分别是应用框架相关的特性、编程规范相关的特性和其他特性。 应用框架相关的特性 应用框架相关的特性包括三个&#xff0c;分别是优雅关停、健康检查和插件化加载中间件。 优雅关停 …

armbian等linux系统修改fstab实现开机自动挂载磁盘(详解)

当 Linux 操作系统启动时&#xff0c;它会尝试挂载您的硬盘和其他存储设备上的分区。为了实现这一目标&#xff0c;系统使用 /etc/fstab 文件来确定应该如何挂载文件系统。/etc/fstab 文件是一个文本文件&#xff0c;包含了在系统引导期间将要挂载的所有文件系统的定义。它通过…

Kaggle:收入分类

先看一下数据的统计信息 import pandas as pd # 加载数据&#xff08;保留原路径&#xff0c;但在实际应用中建议使用相对路径或环境变量&#xff09; data pd.read_csv(r"C:\Users\11794\Desktop\收入分类\training.csv", encodingutf-8, encoding_errorsrepl…

设计模式之旅:工厂模式全方位解析

简介 设计模式中与工厂模式相关的主要有三种&#xff0c;它们分别是&#xff1a; 简单工厂模式&#xff08;Simple Factory&#xff09;&#xff1a;这不是GoF&#xff08;四人帮&#xff0c;设计模式的开创者&#xff09;定义的标准模式&#xff0c;但被广泛认为是工厂模式的…

CSS基础语法-黑马跟课笔记-供记录与查询

一.CSS简介 1.1HTML局限性 只关注内容的语义&#xff0c;可以做简单的样式但是很臃肿且繁琐 1.2CSS优势 CSS层叠样式表&#xff0c;标记语言 设置HTML页面中的文本内容&#xff0c;图片外形&#xff0c;可以美化HTML&#xff0c;让页面布局更美观 HTML做框架&#xff0c;…

时间管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)大学生

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

GIN实例讲解

第一个gin程序 package mainimport ("github.com/gin-gonic/gin" )func main() {// 创建一个 Gin 引擎实例r : gin.Default()// 定义一个 GET 请求的路由&#xff0c;当访问 /hello 路径时执行匿名函数r.GET("/hello", func(c *gin.Context) {// 获取查询…

freertosday3

1.总结任务调度算法之间的区别&#xff0c;重新实现一遍任务调度算法的代码。 答&#xff1a; 一、抢占式调度&#xff1a; 高优先级可以打断低优先级的执行&#xff0c;适用于优先级不同的任务。 二、时间片轮转&#xff1a; 相同优先级的任务有相同的时间片&#xff08;1ms&…