- 前端:
demo-vue/目录,基于 Vue3 + TypeScript + Ant Design Vue - 后端:
demo/目录,基于 Go + Gin + GORM - 数据库脚本:`demo/script/init.go(插入一系列的原始语句)
前端:
yarn install
yarn serve
后端
go mod init mod_name
go mod tidy
go run main.go
- 开发环境:
- 操作系统: Ubuntu 22.04
- 编辑器:VSCode
- 前端技术栈:
- 框架:Vue 3
- 语言:TypeScript
- UI库:Ant Design Vue
- 包管理:npm/yarn
- 后端技术栈:
- 语言:Go 1.21
- 框架:Gin
- ORM:GORM
- 数据库:
- MySQL 8.1
- 其他工具:
- GIT(队内组员分工)
- APIFOX(测试)
- 用户分为三类:管理员、教师、学生
- 学生端:查询成绩、学分统计、选课、个人信息管理
- 教师端:课程管理、成绩录入、成绩查询与统计、个人信息管理
- 管理员端:学生、教师、课程、成绩的增删改查,系统统计
graph TD
A[用户登录] --> B{用户类型}
B -- 学生 --> C[学生功能模块]
B -- 教师 --> D[教师功能模块]
B -- 管理员 --> E[管理员功能模块]
graph LR
前端(Vue3) --API请求--> 后端(Gin)
后端(Gin) --GORM--> MySQL
学生端模块
graph TD
S1[成绩查询] --> S2[个人信息]
S1 --> S3[学分统计]
S1 --> S4[加入课程]
S1 --> S5[课程成绩]
教师端模块
graph TD
T1[课程管理] --> T5[学生成绩录入]
T1 --> T3[学生成绩查询]
T1 --> T4[学生成绩总评]
T1 --> T2[个人信息]
管理员端模块
graph TD
A1[管理员] --> A2[教师管理]
A1 --> A3[课程管理]
A1 --> A4[成绩管理]
A1 --> A5[学生管理]
A1 --> A[系统统计]
erDiagram
STUDENT ||--o{ GRADE : "属于"
STUDENT ||--o{ COURSE : "参与"
TEACHER ||--o{ COURSE : "拥有"
ADMIN ||--o{ SYSTEM : "管理"
MSG ||--o{ STUDENT : "拥有"
STUDENT {
uint ID PK
int64 CreatedAt
int64 UpdatedAt
string Sid "学号(唯一)"
string Name "姓名"
string Gender "性别"
string Birthday "出生日期"
string Email "邮箱"
string Telephone "电话"
string Class "班级"
string Major "专业"
string School "学院"
string Password "密码"
}
TEACHER {
uint ID PK
int64 CreatedAt
int64 UpdatedAt
string Email "邮箱(唯一)"
string Name "姓名"
string Password "密码"
string Gender "性别"
string Telephone "电话"
string Title "职称"
}
COURSE {
uint ID PK
int64 CreatedAt
int64 UpdatedAt
string Code "课程代码(唯一)"
string Name "课程名称"
float64 Credit "学分"
uint TeacherID FK "授课教师ID"
string Semester "学期"
string Description "课程描述"
}
GRADE {
uint ID PK
int64 CreatedAt
int64 UpdatedAt
uint StudentID FK "学生ID"
uint CourseID FK "课程ID"
float64 Score "成绩"
string Semester "学期"
string Remark "备注"
}
ADMIN {
uint ID PK
int64 CreatedAt
int64 UpdatedAt
string Email "邮箱(唯一)"
string Name "姓名"
string Password "密码"
}
INFO {
uint ID PK
string Sid "学号(唯一)"
uint ClassID FK "班级ID"
string Name "姓名"
string Gender "性别"
string Email "邮箱"
string Telephone "电话"
}
MSG {
uint ID PK
int64 CreatedAt
int64 UpdatedAt
string Sid "学号"
}
gorm中自带建表语句,只需要
db.AutoMigrate(&model.User{})
db.AutoMigrate(&model.Admin{})
db.AutoMigrate(&model.Teacher{})
db.AutoMigrate(&model.Student{})
db.AutoMigrate(&model.Course{})
db.AutoMigrate(&model.Grade{})
db.AutoMigrate(&model.Info{})
db.AutoMigrate(&model.Msg{})
db.AutoMigrate(&model.School{})
db.AutoMigrate(&model.Class{})
db.AutoMigrate(&model.Major{})就可以针对我们在model层设计的表自动创建对应的table
-
后端:使用 GORM 连接 MySQL,直接使用viper库实现gorm操作,只需要config文件改变参数
-
本机配置(
config.yaml):db: host: 127.0.0.1 port: 3307 user: root password: *** name: demo