✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌
文末获取项目下载方式
一、项目背景介绍:
在现代教育环境中,教师们需要有效地管理和评估学生的学习成果。然而,传统的手动成绩管理方式存在着许多问题,如繁琐的数据录入、容易出现错误和困难的数据分析。因此,开发一种学生平时成绩管理系统成为迫切的需求,以提供教师们一个高效、准确的成绩管理解决方案。之所以设计和开发一个学生平时成绩管理系统,是为了帮助教师轻松记录学生的各项成绩,并根据预先设定的打分规则进行自动计算和评估。通过该系统,教师们可以及时了解学生的学习进展,进行个性化的教育支持和决策,提高教学效果和学生学业成果。
首先,该系统可以大大提高成绩管理的效率和准确性,减少人为错误的发生,为教师节省时间和精力。其次,系统提供的实时反馈和监控功能有助于教师及时了解学生的学习状况,帮助他们制定有针对性的教学计划和个性化辅导方案。此外,通过系统记录的学生成绩数据和数据分析,教育管理部门可以更好地了解学校的教育质量和资源利用情况,优化教育资源的配置和分配,提高教育效益。最后,学生平时成绩管理系统的研究对于促进家校合作也具有积极意义,家长可以及时了解学生的学习状况,与教师共同关注学生的成长和发展。
二、项目技术简介:
三、系统功能模块介绍:
四、数据库设计:
1:‘管理员信息表’(admin)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键 |
account | varchar | NULL | 账号 |
password | varchar | NULL | 密码 |
admin_name | varchar | NULL | 姓名 |
img | varchar | NULL | 头像 |
remark | varchar | NULL | 备注 |
2:‘班级信息表’(classes)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键 |
classes_name | varchar | NULL | 班级名称 |
remark | varchar | NULL | 备注 |
3:‘课程信息表’(course)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键 |
course_name | varchar | NULL | 课程名称 |
classes_id | bigint | NULL | 班级 |
teacher_id | bigint | NULL | 老师 |
remark | varchar | NULL | 备注 |
4:‘分数信息表’(score)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键 |
student_id | bigint | NULL | 学生 |
course_id | bigint | NULL | 课程 |
teacher_id | bigint | NULL | 老师 |
score | decimal | NULL | 分数 |
remark | varchar | NULL | 备注 |
5:‘分数详情表’(score_detail)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键 |
score_id | bigint | NULL | 总分 |
weight_info_detail_id | bigint | NULL | 权重详情 |
detail_score | decimal | NULL | 详细分数 |
6:‘学生信息表’(student)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键 |
account | varchar | NULL | 账号 |
password | varchar | NULL | 密码 |
school_number | varchar | NULL | 学号 |
student_name | varchar | NULL | 姓名 |
img | varchar | NULL | 头像 |
sex | tinyint | NULL | 性别[0:男,1女] |
address | varchar | NULL | 居住地址 |
phone | varchar | NULL | 联系方式 |
birthday | varchar | NULL | 生日 |
classes | bigint | NULL | 班级 |
reamrk | varchar | NULL | 备注 |
7:‘教师信息表’(teacher)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键 |
account | varchar | NULL | 账号 |
password | varchar | NULL | 密码 |
teacher_name | varchar | NULL | 姓名 |
img | varchar | NULL | 头像 |
sex | tinyint | NULL | 性别[0:男,1女] |
address | varchar | NULL | 居住地址 |
phone | varchar | NULL | 联系方式 |
birthday | varchar | NULL | 生日 |
professional_title | varchar | NULL | 职称 |
reamrk | varchar | NULL | 备注 |
8:‘权重信息表’(weight_info)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键 |
course_id | bigint | NULL | 课程 |
teacher_id | bigint | NULL | 老师 |
9:‘权重详情表’(weight_info_detail)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键 |
weight_info_id | bigint | NULL | 权重信息 |
project | varchar | NULL | 打分项目 |
weight | bigint | NULL | 所占权重 |
remark | varchar | NULL | 备注 |
五、功能模块:
管理员管理:管理员可以添加、编辑和删除系统管理员的账户信息。
教师信息管理:管理员可以管理教师的个人信息,包括添加、编辑和删除教师账户。
学生信息管理:管理员可以管理学生的个人信息,包括添加、编辑和删除学生账户。
班级信息管理:管理员可以管理班级的信息,包括添加、编辑和删除班级。
课程信息管理:管理员可以管理课程的信息,包括添加、编辑和删除课程。
学生分数信息查看:管理员可以查看学生的分数信息,包括按照学生、课程或班级进行查询。
个人信息管理:教师可以管理自己的个人信息,包括修改密码和更新个人资料。学生可以管理自己的个人信息,包括修改密码和更新个人资料。
学生信息管理:教师可以管理学生的个人信息,包括查看学生列表和学生详情。
班级信息管理:教师可以管理班级的信息,包括查看班级列表和班级详情。
我的课程:教师可以查看自己所教授的课程信息,包括课程名称、上课时间等。
自动打分规则管理:教师可以设置自动打分规则,例如根据作业提交情况自动计算学生分数。
学生分数信息管理:教师可以录入和管理学生的分数信息。系统会根据打分规则自动进行计算打分。
我的分数信息查看:学生可以查看自己的分数信息,包括各门课程的分数和总分。
六、代码示例:
/**
* 生成验证码
*/
@GetMapping("/captchaImage")
public AjaxResult getCode(HttpServletResponse response) throws IOException
{
AjaxResult ajax = AjaxResult.success();
boolean captchaEnabled = configService.selectCaptchaEnabled();
ajax.put("captchaEnabled", captchaEnabled);
if (!captchaEnabled)
{
return ajax;
}
// 保存验证码信息
String uuid = IdUtils.simpleUUID();
String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
String capStr = null, code = null;
BufferedImage image = null;
// 生成验证码
String captchaType = RuoYiConfig.getCaptchaType();
if ("math".equals(captchaType))
{
String capText = captchaProducerMath.createText();
capStr = capText.substring(0, capText.lastIndexOf("@"));
code = capText.substring(capText.lastIndexOf("@") + 1);
image = captchaProducerMath.createImage(capStr);
}
else if ("char".equals(captchaType))
{
capStr = code = captchaProducer.createText();
image = captchaProducer.createImage(capStr);
}
redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
// 转换流信息写出
FastByteArrayOutputStream os = new FastByteArrayOutputStream();
try
{
ImageIO.write(image, "jpg", os);
}
catch (IOException e)
{
return AjaxResult.error(e.getMessage());
}
ajax.put("uuid", uuid);
ajax.put("img", Base64.encode(os.toByteArray()));
return ajax;
}
/**
* 通用的本地文件上传
*
* @param multipartFile 文件对象
* @return 文件访问链接URL
*/
@PostMapping("/file")
public SimpleResponse uploadImg(@RequestParam("file") MultipartFile file) {
// 文件后缀
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
File savePathFile = new File(newTomcatFolder);
if (!savePathFile.exists()) {
// 若不存在该目录,则创建目录
savePathFile.mkdir();
}
// 通过UUID生成唯一文件名
String filename = UUID.randomUUID() + "." + suffix;
try {
// 将文件保存指定目录
file.transferTo(new File(newTomcatFolder + filename));
} catch (Exception e) {
e.printStackTrace();
return SimpleResponse.error("保存文件异常");
}
// 返回访问链接
return SimpleResponse.success(newTomcatHost + filename);
}
/**
* 用户登录
*/
@PostMapping("/login")
public ReturnMsg manageLogin(@RequestBody Map<String, String> param) {
if (StrUtil.isEmpty(param.get("username")) || StrUtil.isEmpty(param.get("password"))) {
return ReturnMsg.error("用户名或密码错误!");
}
ManageDTO manageDTO = new ManageDTO();
manageDTO.setUserName(param.get("username"));
manageDTO.setPassWord(param.get("password"));
QueryWrapper<ManageDTO> manageDTOQueryWrapper = new QueryWrapper<>(manageDTO);
manageDTOQueryWrapper.last("limit 1");
ManageDTO adminDTOS = manageService.getOne(manageDTOQueryWrapper);
if (adminDTOS == null) return ReturnMsg.error("用户名或密码错误!");
Map<String, Object> map = new HashMap<>();
map.put("avatar", StrUtil.isNotBlank(adminDTOS.getPhotoImg()) ? adminDTOS.getPhotoImg() : "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif");
map.put("introduction", adminDTOS.getName() + ",你好!");
map.put("name", adminDTOS.getName());
map.put("roles", Arrays.asList("admin"));
map.put("type", adminDTOS.getStatus());
Map<String, String> returnMap = new HashMap<>();
String uuid = UUID.randomUUID().toString();
returnMap.put("token", uuid);
userInfoMap.put(uuid, JSON.toJSONString(map));
return ReturnMsg.ok(returnMap);
}
七、论文参考:
八、项目总结:
基于MVC的本科生平时成绩管理系统在系统功能上由管理员对学校的基本信息进行管理,这里的管理员可以看做学校的教务处对班级、教师、管理员、学生、课程等基本信息进行管理。而老师主要负责对自己名下的课程的评分规则进行管理通过录入学科的评分规则在后续录入具体分数从而达到自动评分的功能,学生在功能上只能查看修改自己的基本信息和查看自己的学习的课程的分数,在系统的最后通过测试功能能是否达到预期后最终得到了一个完整的平时成绩管理系统。
本文在第一章节介绍了基于MVC的本科生平时成绩管理系统的研究背景和意义然后紧接着介绍了本系统先如今的国内外研究现状。在第二章节介绍了系统开发上用到的一些关键技术。在第三章节中对系统开发的需求进行了分析,分别从业务背景、业务建模、系统角色分析、系统用例分析、非功能性需求五大分别来进行分析。在第四章节对系统进行了分析与设计其中包括系统功能的设计和数据库结构的设计。在第五章节主要介绍了系统核心功能的实现。在第六章章节对系统整体进行测试确保系统的功能是符合预期且是完善的。最后对本次开发过程进行总结并且对未来做成展望
系统的核心在与由教师录入自己所教课程的打分规则,打分规则不限定种类与数量,只需要打分总比和为100即可,然后在老师给学生进行打分的时候,系统会自动将对应课程的打分规则即打分项目与所占比重进行渲染,教师只需要在后面给与对应的评分即可,在教师录入各个打分项的具体分数以后系统会根据各个打分项所占的权重来进行计算,并且最后会同时保存各个打分项的分数与计算后的总分数,以便于后续的学生、管理员、老师来查看总分与打分详情。在查看分数的时候实习是查看的总分,但是如果需要查看详情也可在对应的分数上点击详情从而查看当前课程的打分项、打分项分数所占权重、当前学生的当前打分项所得分数。
九、源码获取:
大家点赞、收藏、关注、评论啦 、查看获取项目下载链接,博主联系方式
链接点击直达:下载链接