Skip to content

mind-dance/assignment-collection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

学生作业管理系统

简介

本项目是数据库大作业(数据库课程设计)。本项目较为综合,包含了数据导入导出(csv和json)、数据库的连接、编写测试所需的测试用例,是本人目前(截止至2024年六一儿童节)最为复杂的项目之一(另一个是CS50x的tideman)。

程序主入口为分为两部分,backend目录下的app.py和frontend目录下运行npm run devtests目录下包含了一些自动化测试,包含一些简单的测试用例。可以在改错代码的时候适当提醒。测试可以确保你的代码按照你的想法运作,我建议各位一遍写代码一遍写测试,不然后期会很痛苦。不会写测试的可以查看下面的参考文献。

有问题可以提issue,有优化可以提PR。

绘图使用draw.io,代码编辑器是vscode。

许可证

许可证为GPLv2 or later。所有说明文档与图表等如果没有特别说明均为CC4.0-BY-SA授权(如果是交作业的可以豁免署名,但仍然要遵守知识共享)。如果需要其他授权的请联系我(这么简单的东西真的会有人需要商业授权吗?)。

技术栈

Python, Flask, SQLite。

将数据存放在SQLite中,通过Python进行调用。

E-R图

E-R
注意:该图片包含了源数据,使用draw.io打开README.assets/er.png即可编辑。

数据表类图

class
注意:该图片包含了源数据,使用draw.io打开README.assets/class.png即可编辑。

学生表记录学生的姓名和学号

-- 学生表
CREATE TABLE "students" (
	"student_id" VARCHAR(50) NOT NULL,
	"student_name" VARCHAR(50) NOT NULL,
	PRIMARY KEY ("student_id")
)
;

登记表记录学生作业提交状态

-- 作业统计表
CREATE TABLE "submits" (
    "student_id" VARCHAR(50) NOT NULL,
    "status" INTEGER NOT NULL DEFAULT 0,
    CONSTRAINT "fk_student_id" FOREIGN KEY ("student_id") REFERENCES "students" ("student_id") ON UPDATE CASCADE ON DELETE NO ACTION
);

使用说明

构建开发环境

安装Python虚拟环境,自行调整requirements的路径。

py -3 -m venv venv
venv\Scripts\activate
pip install -r requirements.txt

开发说明

流程

向程序提供已提交作业所在的位置,程序会历遍文件夹,读取所有文件名。load_filenames

程序会从数据库中查询学号read_sid和本次实验标题,生成一份标准名单。 create_std_list 比较读取的文件名在不在标准名单中check_filenames,若在则视为已提交1,不在提交名单中的视为缺交0,不在标准名单中的视为错误文件名error
尝试从错误的文件名中读取学号,如果成功,记为提交并重命名,rename_filenames不成功则记入其他列表etc。最后不应该存在error。

将已提交作业的名单写入数据库。如果存在则忽略。

与数据库中全体学生相比较,顺便修正文件名错误的文件,并写入数据库。

{
	sid: 202415210201,
	hw: "202415210201-张三-实验报告"
	status: 0,
	path: null
}

获取文件名

切换到作业所在位置。check_tools.py提供函数支持。t.get_all_file(abs_path)接受一个绝对路径并查找路径中所有的文件名,返回一个列表。

查找已提交作业

数据库联查s_id和a_titled.load_data()。 生成文件名名单t.generate_filenames(),比较文件t.check_files()。查找学生IDt.read_id(),修正文件名t.rename_file()。判断提交与缺交。

传入路径后,给出列表,根据id和破损文件名元组,生成争取文件名元组,将fix_list[i]替换src[i][0]

写入数据库

将已提交的写入submitsd.save_data(),未提交的记入字典保存。

参考文献

Python文档库:os

Python文档库:re

Python文档库:csv

Python文档库:json

Python文档库:open

Python文档库:sqlite3

Python文档库:os.path

Python文档库:unittest

哔哩哔哩:unittest新手入门

正则表达式测试网站:regex101

绘图工具:draw.io

ant design vue组件总览

About

作业管理系统Count the collected homework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published