课设--学生成绩管理系统(核心代码部分)

news2024/11/24 19:06:42

2a20c54b85e042bfa2440367ae4807e9.gif

欢迎来到 Papicatch的博客

2a20c54b85e042bfa2440367ae4807e9.gif

系统介绍

课设--学生成绩管理系统(一)-CSDN博客

课设--学生成绩管理系统(二)-CSDN博客

课设--学生成绩管理系统(三)-CSDN博客

2a20c54b85e042bfa2440367ae4807e9.gif

目录

🍉内部接口

🍈 登录接口

🍈课程管理接口

🍈成绩管理接口

🍈用户管理接口

🍈 文件管理接口


2a20c54b85e042bfa2440367ae4807e9.gif

🍉内部接口

🍈 登录接口

@GetMapping("/login")
@PassToken
public User getStudentInfo(@RequestParam Map<String, Object> condition) {
    Map<String, Object> map = new HashMap<>();
    map.put("username", condition.get("username").toString());
    map.put("password", condition.get("password").toString());
    map.put("level", condition.get("level"));
    User user = userService.getStudentInfo(map);
    String token = userService.getToken(user, 24 * 60 * 60 * 1000);
    String refreshToken = userService.getToken(user, 24 * 60 * 60 * 1000); // 有效期一天
    user.setToken(token);
    user.setRefreshToken(refreshToken);
    return user;
}

🍈课程管理接口

@PostMapping
public void addCourse(@RequestBody Course course) {
    courseService.addCourse(course);
}

@DeleteMapping("/{ids}")
public void delete(@PathVariable("ids") Integer[] ids) {
    List<Integer> idsList = Arrays.asList(ids);
    courseService.delete(idsList);
}

@PutMapping
public void update(@RequestBody Course course) {
    courseService.update(course);
}

@GetMapping("/getCourseList")
private PagingResult<Course> getCourseList(@RequestParam Map<String, Object> condition,
                                           @RequestParam(required = false, name = "$limit", defaultValue = "10") Integer limit,
                                           @RequestParam(required = false, name = "$offset", defaultValue = "0") Integer offset) {
    RowBounds rowBounds = new RowBounds(offset, limit);
    return courseService.getCourseList(rowBounds, condition);
}

@GetMapping("/getCourseByMap")
private List<Course> getCourseByMap(@RequestParam Map<String, Object> condition) {
    return courseService.getCourseByMap(condition);
}

🍈成绩管理接口

@GetMapping("/getCourseList")
public PagingResult<Course> getCourseList(@RequestParam Map<String, Object> condition,
                                          @RequestParam(required = false, name = "$limit", defaultValue = "10") Integer limit,
                                          @RequestParam(required = false, name = "$offset", defaultValue = "0") Integer offset) {
    RowBounds rowBounds = new RowBounds(offset, limit);
    return scoreService.getCourseList(rowBounds, condition);
}

@PostMapping
private void addEntry(@RequestBody JSONArray UserScore) {
    List<Score> list = JSONObject.parseArray(UserScore.toJSONString(), Score.class);
    scoreService.addEntry(list);
}

@GetMapping("/export")
public List<Course> getExportList(@RequestParam Map<String, Object> condition) {
    return scoreService.getExportList(condition);
}

@GetMapping("/getUserNum")
public List<Map<String, Object>> getUserNum(@RequestParam Map<String, Object> condition) {
    return scoreService.getUserNum(condition);
}

@GetMapping("/getUserTotal")
public Map<String, Object> getUserTotal(@RequestParam Map<String, Object> condition) {
    return scoreService.getUserTotal(condition);
}

🍈用户管理接口

@GetMapping("/edit/password")
public boolean update(@RequestParam Map<String, Object> condition) {
    Map<String, Object> map = new HashMap<>();
    map.put("username", condition.get("username").toString());
    map.put("password", condition.get("password").toString());
    map.put("passwordAgain", condition.get("passwordAgain").toString());
    ;
    map.put("level", condition.get("level").toString());
    return userService.update(map);
}

@GetMapping("/getTree")
public List<Object> getTree() {
    return userService.getTree();
}

@PassToken
@GetMapping("/getSilent")
public boolean getSilent() {
    return userService.getSilent();
}

@PutMapping("/setSilent/{state}")
public boolean setSilent(@PathVariable("state") Integer state) {
    return userService.setSilent(state);
}

🍈 文件管理接口

@PostMapping("/headImg")
@ResponseBody
public String upload(MultipartFile file, HttpServletRequest request) throws IOException {
    if (!file.isEmpty()) {
        try {
            byte[] bytes = file.getBytes();
            // 储存位置
            String staticDir = ResourceUtil.getPath();

            // 图片名
            String ImgName = file.getOriginalFilename();

            String uid = UUID.randomUUID().toString();
            assert ImgName != null;
            // 获取后缀名
            String str = ImgName.substring(ImgName.lastIndexOf("."));
            // 重定义文件名
            String newName = uid + str;

            // 图片存储地址
            Path path = Paths.get(staticDir + newName);
            // 写入文件
            Files.write(path, bytes);
            String imgUrl = "/files/" + newName;

            String userId = request.getParameter("id");
            int level = parseInt(request.getParameter("level"));
            Upload upload = new Upload();
            upload.setUserId(userId);
            upload.setLevel(level);
            upload.setUrl(imgUrl);
            uploadService.upload(upload);

            // url去除"sms"
            return imgUrl;
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return "";
}

@GetMapping("/getHeadImg")
@UserLoginToken
public String getAdminList(@RequestParam Map<String, Object> condition, HttpServletRequest httpServletRequest) {
    return uploadService.getHeader(condition);
}

🍉性能 

🍈精度 

        要按照严格的数据格式输入,不能输入非法字符,否则系统不给予响应进行处理,查询时要保证准确率为100%,所有包含查询关键字的书籍都应能查到,不能有遗漏。 

🍈时间特性

(1)响应时间:用户任意操作后5秒内系统给予反馈信息。

(2)更新处理时间:由系统运行状态来决定。

(3)数据的转换和传送时间:能够在20秒内完成。

🍈灵活性 

        当需求发生某些变化时,该软件的基本操作、数据结构、运行环境等等基本不会发生变化,只是对系统的数据库的文件和记录进行处理,就可以满足需求。 

🍉测试

功能点

测试用例

输出结果

管理员用户登录

选择管理员角色,输入管理员的用户名和密码,点击登录

跳转到学生成绩管理系统首页,并展示管理员相关功能菜单

教师用户登录

选择教师角色,输入管理员的用户名和密码,点击登录

跳转到学生成绩管理系统首页,并展示教师相关功能菜单

学生用户登录

选择管理员角色,输入管理员的用户名和密码,点击登录

跳转到学生成绩管理系统首页,并展示读者相关功能菜单

课程信息新增

点击新增,输入课程信息,点击确认新增

未填写完整表单,提示对应异常,填写完整表单,提示新增成功

课程信息查询

输入对应查询条件,点击查询

课程信息列表

课程信息修改

选中课程信息,弹出课程信息修改框,修改对应信息,点击修改

未填写完整表单,提示对应异常,填写完整表单,提示修改成功

课程信息删除

选中删除的数据

提示删除成功

录入课程表

选中对应学年对应学期的课程表,录入对应课程

出现下拉框录入课程信息

成绩信息查询

输入对应查询条件,点击查询

成绩信息列表

录入成绩

选中对应成绩信息

录入成绩

修改成绩

选中对应成绩信息

修改成绩

修改课程表

选中对应学年学期的课程表,修改已有的课程表信息

出现下拉框修改课程信息

用户新增

点击新增,输入用户信息,点击确认新增

未填写完整表单,提示对应异常,填写完整表单,提示新增成功

用户信息查询

输入对应查询条件,点击查询

用户信息列表

用户修改

选中用户信息,弹出用户信息修改框,修改对应信息,点击修改

未填写完整表单,提示对应异常,填写完整表单,提示修改成功

用户删除

选中删除的数据

提示删除成功

2a20c54b85e042bfa2440367ae4807e9.gif

上面代码为主要核心代码

2a20c54b85e042bfa2440367ae4807e9.gif

源码资源包已上传哦

2a20c54b85e042bfa2440367ae4807e9.gif

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

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

相关文章

探索未来工作新伙伴:机器人流程自动化(RPA)揭秘

想象一下&#xff0c;如果你的日常工作中那些繁琐、重复的任务&#xff0c;比如数据录入、文件整理、邮件发送等&#xff0c;都能自动完成&#xff0c;你将拥有更多时间专注于真正需要创造力和智慧的工作&#xff0c;是不是听起来就像拥有了一个私人助理&#xff1f;这并不是遥…

基于Java的度分秒坐标转纯经纬度坐标的漂亮国基地信息管理

目录 前言 一、空间表设计 1、物理表结构 二、后台数据管理 1、数据去重 2、去重的具体实现 3、度分秒数据格式转换 4、具体的转换方法 5、新增界面的实现 三、数据管理界面 总结 前言 众所周知&#xff0c;漂亮国在全球范围内部署了大量的基地&#xff0c;用以维持其…

安卓实现圆形按钮轮廓以及解决无法更改按钮颜色的问题

1.实现按钮轮廓 在drawable文件新建xml文件 <shape xmlns:android"http://schemas.android.com/apk/res/android"<!--实现圆形-->android:shape"oval"><!--指定内部的填充色--><solid android:color"#FFFFFF"/><!-…

Python网络数据抓取(9):XPath

引言 XPath 是一种用于从 XML 文档中选取特定节点的查询语言。如果你对 XML 文档不太熟悉&#xff0c;XPath 可以帮你完成网页抓取的所有工作。 实战 XML&#xff0c;即扩展标记语言&#xff0c;它与 HTML&#xff0c;也就是我们熟知的超文本标记语言&#xff0c;有相似之处&am…

韩顺平0基础学java——第25天

p509-522 List接口 ArrayList 1.Arraylist 可以加入null&#xff0c;并且多个定什么都能放 2.ArrayRist 和yector其生一致&#xff0c;但A)是成程不安全的源码没有synchronized.优总是效率高 王.Amayeit底层由数数组实现. 阶以变线程的情况下不建议用Arroyst 源码分析 )Arangla…

MyBatisPlus基础学习

一、简介 二、集成MP 三、入门HelloWorld 四、条件构造器EntityWrapper 五、ActiveRecord(活动记录 ) 六、代码生成器 七、插件扩展 八、自定义全局操作 九、公共字段自动填充 十、Oracle主键Sequence 十一、Idea快速开发插件 十二、mybatis-plus实践及架构原理

SSRF学习,刷题

[HNCTF 2022 WEEK2]ez_ssrf 给了一个Apache2的界面&#xff0c;翻译一下 就是一个默认的界面,目录扫描 可以看到flag.php,肯定是不能直接访问得到的&#xff0c;还有index.php&#xff0c;访问这个 可以看到三个参数data,host,port 还有fsockopen() 函数是 PHP 中用于打开一个…

【网络编程】套接字的多种可选项

可以看出&#xff0c;套接字可选项是分层的。IPPROTOIP层可选项是IP协议相关事项IPPROTO TCP层可选项是TCP协议相关的事项&#xff0c;SOLSOCKET层是套接字相关的通用可选项 getsockopt&&setsockopt #include <sys/socket.h> int getsockopt(int sock, int lev…

第2讲:pixi.js 绘制HelloWorld

基于第0讲和第1讲&#xff0c;我们增添了vite.config.ts文件。并配置了其他的http端口。 此时&#xff0c;我们删除掉没用的东西。 删除 conter.ts、typescript.svg 在main.ts中改成如下内容&#xff1a; import {Application, Text} from pixi.js import ./style.css// 指明…

Aeron:Aeron Agent

Aeron Agent 是一个 Java 代理&#xff0c;用于提供 Aeron、Aeron Archive 和 Aeron Cluster 中发生的运行时低级日志信息。这些日志语句包括从高级管理员事件到大容量数据帧事件。 在调试 Archive 和 Cluster 问题时&#xff0c;Aeron Agent 的日志数据尤其有用。 一、Availab…

github国内加速访问有效方法

这里只介绍实测最有效的一种方法&#xff0c;修改主机的Hosts文件&#xff0c;如果访问github网站慢或者根本无法访问的时候可以采用下面方法进行解决。 1、搜索一个IP查询网站 首先百度搜索选择一个IP查询的网站&#xff0c;这里我用下面这个网站&#xff08;如果该网站失效…

shop APP UI

APP和微信小程序不一样&#xff0c; APP的客户端需要两个(一个安卓&#xff0c;一个苹果IOS); APP的服务端需要&#xff08;管理端后台&#xff0c;接口&#xff09;&#xff1b;

分布式理论与设计 三、分布式一致性协议

1.两阶段提交协议&#xff08;2PC&#xff09; 1&#xff09;两阶段提交协议 两阶段提交协议&#xff0c;简称2PC(2 Prepare Commit)&#xff0c;是比较常用的解决分布式事务问题的方式&#xff0c;要么所有参与进程都提交事务&#xff0c;要么都取消事务&#xff0c;即实现A…

Xlua三方库Android编译出错解决办法

Xlua三方库Android编译出错解决办法 最近听老师的热更教程&#xff0c;讲到xlua编译android平台会报错&#xff0c;也是看了老师的博客&#xff0c;按照方法去解决&#xff0c;然而问题并没有解决。应该是因为代码更新或者版本不一样&#xff0c;在此简单记录一下解决过程。 参…

SpringBoot三层架构

目录 一、传统方式 二、三层架构 三、代码拆分 1、dao层 2、service层 3、control层 四、运行结果 一、传统方式 上述代码存在一定的弊端&#xff0c;在进行软件设计和软件开发中提倡单一责任原则&#xff0c;使代码的可读性更强&#xff0c;复杂性更低&#xff0c;可扩展性…

【Linux硬盘数据读取】WIN10访问linux分区解决方案:ext2fsd

<div id"content_views" class"htmledit_views" style"user-select: auto;"><p>尝试ext2explore、Paragon ExtFS都不好用&#xff0c;强烈安利ext2fsd&#xff0c;可读写&#xff0c;很强大</p> 转自&#xff1a;https://blog…

超高清图像生成新SOTA!清华唐杰教授团队提出Inf-DiT:生成4096图像比UNet节省5倍内存。

清华大学唐杰教授团队最近在生成超高清图像方面的新工作&#xff1a;Inf-DiT&#xff0c;通过提出一种单向块注意力机制&#xff0c;能够在推理过程中自适应调整内存开销并处理全局依赖关系。基于此模块&#xff0c;该模型采用了 DiT 结构进行上采样&#xff0c;并开发了一种能…

JMU 数科 数据库与数据仓库期末总结(4)实验设计题

E-R图 实体-关系图 E-R图的组成要素主要包括&#xff1a; 实体&#xff08;Entity&#xff09;&#xff1a;实体代表现实世界中可相互区别的对象或事物&#xff0c;如顾客、订单、产品等。在图中&#xff0c;实体通常用矩形表示&#xff0c;并在矩形内标注实体的名称。 属性…

Java项目:基于SSM框架实现的汽车养护保养管理系统【ssm+B/S架构+源码+数据库+开题+毕业论文+任务书】

一、项目简介 本项目是一套基于SSM框架实现的汽车养护保养管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、…

VirtualBox 安装UOS统信服务器操作系统

1、准备 1.1安装VirtualBox 由于过程简单&#xff0c;不做赘述&#xff01; 1.2下载UOS服务器版本 下载免费版本即可 服务器与云计算操作系统-统信软件 (uniontech.com)https://uniontech.com/os-serverCloud.html 2、安装 2.1新建虚拟机 2.2选择虚拟机模式&#xff0c;这…