当前位置: 首页 > news >正文

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

1. 引言

1.1 编写目的

该文档的目的是描述《学生成绩管理系统》项目的详细设计,其主要内容包括:

  • 系统功能简介

  • 系统详细设计简述

  • 各个模块的实现逻辑

  • 最小模块组件的伪代码

本文档的预期的读者是:

  • 开发人员

  • 项目管理人员

  • 测试人员

1.2 背景

  1. 待开发系统的名称:学生成绩管理系统

  2. 本项目的任务提出者:xx老师

  3. 本项目的开发者:第x小组

  4. 用户:教师、学生和管理员

1.3 定义

t_admin:管理员信息表

t_user:教师信息表

t_student:学生信息表

t_score:学生成绩表

2. 体系结构

本系统采用B/S体系结构。

2.1 B/S体系结构

现在的信息系统平台的体系结构主要有客户机/服务器(C/S)体系和浏览器 /服务器(B/S)体系。下面简单介绍一下B/S体系结构。

B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Chrome、Safari、Microsoft Edge、Netscape Navigator或Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server 同数据库进行数据交互。

在我们的系统中,我们就采用的是B/S体系结构。采用这种结构具有成本低、维护方便、 分布性强、开发简单的优势。

2.2 系统体系结构

B/S体系架构图如图3.1所示。

img

图3.1 B/S系统架构

通过上文对B/S体系架构的分析,以及对本系统需要完成的功能的分析。本系统的可分为以下三层结构:

  • 用户层:在这里就是浏览器端。是直接与用户交互的部分。具体来说,用户的所有操作都是在这层进行的,用户的所有对数据的修改都会传到逻辑层进行处理。作为直接展示给用户的部分,需要具有美观和易用的特点。

  • 逻辑层:在这里就是网络服务器端。接受用户输入的信息,对其进行功能要求的逻辑处理,并将处理后的数据传递给数据访问层;对于数据访问层传送的数据也进行相应的处理。作为表示层与数据层之间的信息处理接口,是前后端数据交互的桥梁。

  • 数据层:在这里就是数据库服务器端。主要包含两种功能。一是完成对数据的存储,即完成数据库表的建立等功能;二是完成对数据的各种操作,具体进行何种操作取决于逻辑层的逻辑处理。

本系统的结构拓扑图如图3.2所示:

img

图3.2 系统结构拓扑图

用户层本系统主要用HTML+CSS+JavaScript 进行完成,完成与用户正常友好交互的任务。

逻辑层由Java代码及其相应框架编写,完成所需的逻辑处理操作。并把正常处理后的数据传递给用户层或数据层。

数据层主要是数据库系统,这里所用的数据库系统为关系数据库 MySQL, 并且使用DataGrip或idea内置的数据库工具构建需要的库和表,进行相应SQL脚本的编写。

3.教师端详细设计

教师端模块主要分为登录注册模块、数据查询模块、搜索模块和成绩添加或修改模块构成。

下图为教师端模块流程图。

img

图3.1 教师端模块流程图

3.1登录模块

3.1.1类描述

定义了教师的登录功能架构。

3.1.2功能

按给定的账号和密码进入系统。

3.1.3 代码实现

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

3.1.4 性能分析

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

3.2数据查询模块

3.2.1类描述

定义了数据查询的功能结构。

3.2.2功能

查看学生基本信息和成绩信息。

3.2.3代码实现

查看学生基本信息:

JavaScript代码:

var data = obj.data;
if (obj.event === 'detail') {var detailFrom = layui.layer.open({title : "查看学生信息",type : 2,content : "/studentDetail.html",//弹出层页面area: ['500px', '200px'],success : function(layero, index){var body = layui.layer.getChildFrame('body', index);body.find("#studentNo").text(data.studentNo);body.find("#studentName").text(data.studentName);body.find("#studentSex").text(data.studentSex);}});
} 

Java代码:

@RequestMapping("/student")
@RestController //标识为返回类型为Json的控制
public class StudentController {@Autowiredprivate TStudentService studentService;//标识请求地址@RequestMapping("/getAllStudent")public ResultObject<List<TStudent>> getUsers(TStudent student,@RequestParam("limit") int limit,@RequestParam("page") int page) {System.out.println(student);PageInfo<TStudent> pageInfo=studentService.getAll(student, page, limit);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;}

查看学生成绩信息:

Java代码:

@RequestMapping("/getAllScore")
public ResultObject<List<TScore>> getAllScore(TScore score,@RequestParam("limit") int limit,@RequestParam("page") int page) {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;
}

3.2.4性能

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

3.2.5设计方法(算法)

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

3.3搜索模块

3.3.1类描述

定义了教师的检索信息功能结构。

3.3.2功能

按名字来检索学生:

3.3.3 代码实现

Java代码:

@RequestMapping("/studentSelect")
public ResultObject<List<TStudent>> studentSelect() {ResultObject<List<TStudent>> rs=new ResultObject<List<TStudent>>();List<TStudent> list=studentService.selectAllStudent();rs.setCode(Constant.SUCCESS_RETUEN_CODE);rs.setMsg("查询成功");rs.setData(list);int total=list.size();Long a=Long.parseLong(String.valueOf(total));rs.setCount(a);return rs;
}

HTML代码:

<button class="layui-btn layui-btn-normal site-demo-active"data-type="search" id="searchStudent">搜索</button>

3.3.4性能

在执行相关操作时,均可以正常实现检索功能,暂时还没有出过错。

3.3.5设计方法

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

3.4 成绩修改模块

3.4.1类描述

定义了成绩修改的功能结构。

3.4.2功能

教师根据实际情况修改学生成绩信息。

3.4.3 代码实现

修改成绩代码:

Java代码:

//标识请求地址
@RequestMapping("/updateScore")
public ResultObject<Object> updateScore(TScore score) {Integer total=scoreService.updateScore(score);//统一返回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;
}

JavaScript代码:

if (obj.event === 'edit') {var editFrom = layui.layer.open({title : "编辑学生信息",type : 2,content : "/studentEdit.html",//弹出层页面area: ['800px', '400px'],success : function(layero, index){var body = layui.layer.getChildFrame('body', index);//获取窗口对象var iframeWindow = layero.find('iframe')[0].contentWindow;body.find("#studentNo").val(data.studentNo);body.find("#studentName").val(data.studentName);body.find(".studentSex option[value="+data.studentSex+"]").attr("selected","selected");iframeWindow.layui.form.render();iframeWindow.layui.form.render('select');}});
}

删除成绩代码:

Java代码:

//标识请求地址
@RequestMapping("/deleteScore")
public ResultObject<Object> deleteScore(TScore score) {Integer total=scoreService.deleteScore(score.getScoreId());//统一返回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;
}

JavaScript代码:

if (obj.event === 'del') {layer.confirm('真的删除该学生吗?', function(index) {var data = obj.data;$.ajax({//几个参数需要注意一下type: "POST",//方法类型dataType: "json",//预期服务器返回的数据类型url: "/student/deleteStudent",//urldata: data,success: function (result) {if (result.code == "0") {layer.close(index);layer.msg('删除学生成功');layui.table.reload('idTest',{page:{curr:1}});}else{layer.msg('删除学生失败', {icon: 5});}},error : function() {layer.msg('服务器错误', {icon: 5});}});});
} 

3.4.4性能

在执行相关操作时,均可以正常实现修改成绩或删除成绩功能,未发现错误。

3.4.5 设计方法

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

ps:第二部分点这里

相关文章:

  • Autodesk AutoCAD 2025 (macOS, Windows) - 自动计算机辅助设计软件
  • 文件操作讲解
  • Golang基础-9
  • 后端前行Vue之路(三):计算属性和监视属性
  • YARN集群 和 MapReduce 原理及应用
  • Git 常用命令集
  • GitGithub小册:版本管理必备利器
  • 超文本传输协议HTTP
  • exec命令 – 调用并执行指定的命令
  • 路径规划——曲线拟合详解(一):多项式轨迹与QP优化(minimum-snap算法核心部分)
  • PHP教程_PHP5函数str_replace替换字符串中的字符
  • 软考中级(网络工程师考核要点)第一章 计算机网络系统(信道特性应用)第七期(采样、量化、编码和通讯方式和交换方式)
  • c# 如何调用指定文件夹里面的动态库dll
  • 探索Java多线程编程的奥秘
  • 选数(dfs,isprime)
  • 【剑指offer】让抽象问题具体化
  • JavaScript-Array类型
  • Java到底能干嘛?
  • STAR法则
  • v-if和v-for连用出现的问题
  • Vue.js源码(2):初探List Rendering
  • 从setTimeout-setInterval看JS线程
  • 关于List、List?、ListObject的区别
  • 一个JAVA程序员成长之路分享
  • 用element的upload组件实现多图片上传和压缩
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 智能合约Solidity教程-事件和日志(一)
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​2020 年大前端技术趋势解读
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)计算机毕业设计ssm电影分享网站
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (十六)串口UART
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)Oracle 9i 数据库设计指引全集(1)
  • .NET项目中存在多个web.config文件时的加载顺序
  • .stream().map与.stream().flatMap的使用
  • @FeignClient注解,fallback和fallbackFactory
  • @RequestMapping-占位符映射
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [Android学习笔记]ScrollView的使用
  • [BZOJ3223]文艺平衡树
  • [C#]winform部署yolov9的onnx模型
  • [C语言]——分支和循环(4)
  • [emacs] CUA的矩形块操作很给力啊
  • [github全教程]github版本控制最全教学------- 大厂找工作面试必备!
  • [IE编程] 多页面基于IE内核浏览器的代码示例
  • [INSTALL_FAILED_TEST_ONLY],Android开发出现应用未安装
  • [Linux]进程间通信(system V共享内存 | system V信号量)
  • [LuoguP1141]01迷宫