Compare commits

..

32 Commits
main ... master

Author SHA1 Message Date
hahaha 6d5bd5d0a1 细节改动
2 years ago
hahaha f7119293a5 页面美化
2 years ago
pria8sljn 46552cdf42 Update login.vue
2 years ago
ablishup 5f89a6e113 Merge branch 'master' of https://bdgit.educoder.net/p59mgulzx/Demo
2 years ago
Rui. 0f62406b6a 建立数据库
2 years ago
ablishup 7a7fc3e307 补充了CourseController的功能
2 years ago
Rui. e17d6e8e36 增加了wave.vue的调用
2 years ago
Rui. 944bf765f6 鼠标点击特效
2 years ago
Mei 7e3b108f90 更新学生上传资料及登录页面动态效果
2 years ago
Mei 46fc5685e1 更新学生上传资料及登录页面动态效果
2 years ago
pria8sljn 4cbd286b4a Update Course.vue
2 years ago
pria8sljn 7ec8962d9c Update Course.vue
2 years ago
pria8sljn bd05965fe0 Update CourseService.java
2 years ago
pria8sljn b286e87fa2 Update CourseController.java
2 years ago
pria8sljn ee90e49032 Update Course.java
2 years ago
pria8sljn a9998c851a Update Course.vue
2 years ago
pria8sljn 4ceb0161e1 Update Course.vue
2 years ago
pria8sljn 1ffe022327 Update index.js
2 years ago
pria8sljn 62aa0908c3 Update Home.vue
2 years ago
pria8sljn 852b06a79b Update Admin.java
2 years ago
pria8sljn 46ef52116c Update Manager.vue
2 years ago
pria8sljn 4ceed4a1c2 Update AdminService.java
2 years ago
pria8sljn adda50424a Update WebController.java
2 years ago
pria8sljn 73a25b7ac8 Update login.vue
2 years ago
pria8sljn 7093dd3076 Update login.vue
2 years ago
pria8sljn e456f9736e Update login.vue
2 years ago
pria8sljn c797041cc8 Update login.vue
2 years ago
Rui. ed31f0da7a Merge remote-tracking branch 'origin/master'
2 years ago
Rui. 1fe0a4d75d Merge remote-tracking branch 'origin/master'
2 years ago
Rui. 0d4fbd0407 Merge remote-tracking branch 'origin/master'
2 years ago
Mei ba21edf770 login + course-manipulation
2 years ago
Mei 70ce758de5 login + course-manipulation
2 years ago

@ -1 +0,0 @@
hahahhah

@ -1,58 +0,0 @@
package com.example.entity;
public class Course {
private Integer id;
private String name;
private String no;
private String descr;
private String times;
private String teacher;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getDescr() {
return descr;
}
public void setDescr(String descr) {
this.descr = descr;
}
public String getTimes() {
return times;
}
public void setTimes(String times) {
this.times = times;
}
public String getTeacher() {
return teacher;
}
public void setTeacher(String teacher) {
this.teacher = teacher;
}
}

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="FacetManager">
<facet type="Spring" name="Spring">
<configuration />
</facet>
</component>
</module>

@ -0,0 +1,47 @@
package com.example.controller;
import com.example.entity.Course;
import com.example.common.Result;
import com.example.service.CourseService;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("/course")
public class CourserController {
@Resource
private CourseService courseService;
/** 分页条件查询课程*/
@GetMapping("/selectPage")
public Result selectPage(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "5") Integer pageSize,
Course course) { // ?name=xx&no=xx
PageInfo<Course> pageInfo = courseService.selectPage(pageNum, pageSize, course);
return Result.success(pageInfo);
}
/**新增课*/
@PostMapping("/add")
public Result add(@RequestBody Course course) {
courseService.add(course);
return Result.success();
}
/*** 更新课程*/
@PutMapping("/update")
public Result update(@RequestBody Course course) {
courseService.updateById(course);
return Result.success();
}
/*** 删除课程*/
@DeleteMapping("/delete/{id}")
public Result delete(@PathVariable Integer id) {
courseService.deleteById(id);
return Result.success();
}
}

@ -52,7 +52,7 @@ public class WebController {
@PostMapping("/register")
public Result register(@RequestBody Account account) {
if (ObjectUtil.isEmpty(account.getUsername()) || ObjectUtil.isEmpty(account.getPassword())) {
return Result.error("账号或密码必填");
return Result.error("账号或密码未填完整!");
}
studentService.register(account);
return Result.success();

@ -0,0 +1,130 @@
/*
Navicat Premium Data Transfer
Source Server : localhost_3306
Source Server Type : MySQL
Source Server Version : 50737
Source Host : localhost:3306
Source Schema : student
Target Server Type : MySQL
Target Server Version : 50737
File Encoding : 65001
Date: 26/11/2023 16:31:45
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for admin
-- ----------------------------
DROP TABLE IF EXISTS `admin`;
CREATE TABLE `admin` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '账号',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '密码',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称',
`role` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '角色',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '管理员' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of admin
-- ----------------------------
INSERT INTO `admin` VALUES (1, 'admin', 'admin', '管理员', 'ADMIN');
-- ----------------------------
-- Table structure for course
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '课程名称',
`no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '课程编号',
`descr` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '课程描述',
`times` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '课时',
`teacher` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '任课老师',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '课程信息' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of course
-- ----------------------------
INSERT INTO `course` VALUES (1, '大学英语', 'CS10012313', '大学英语真好玩', '24节', '张三三');
INSERT INTO `course` VALUES (2, '大学物理', 'CS12332131', '大学物理真枯燥', '24节', '李思思');
INSERT INTO `course` VALUES (5, '线性代数', 'CS10012325', '线性代数真好学', '20节', '王二二');
INSERT INTO `course` VALUES (6, '李思思', NULL, NULL, NULL, NULL);
INSERT INTO `course` VALUES (7, '2', '2', '2', '2', '2');
-- ----------------------------
-- Table structure for grade
-- ----------------------------
DROP TABLE IF EXISTS `grade`;
CREATE TABLE `grade` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`course_id` int(11) NULL DEFAULT NULL COMMENT '课程ID',
`student_id` int(11) NULL DEFAULT NULL COMMENT '学生ID',
`score` double(10, 1) NULL DEFAULT NULL COMMENT '分数',
`comment` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '评语',
`feedback` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '学生反馈',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '成绩' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of grade
-- ----------------------------
INSERT INTO `grade` VALUES (1, 1, 8, 90.0, '非常nice 哈哈哈\n\n我现在更新数据', '老师非常用心,我很喜欢青哥哥的课程 哈哈哈');
INSERT INTO `grade` VALUES (3, 2, 1, 60.0, '继续加油', '');
-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '学号',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '密码',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称',
`phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '手机号',
`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱',
`sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '性别',
`birth` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '生日',
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '头像',
`role` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '角色',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '学生信息' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (1, '20191001', '123', '小白白', '13788997788', 'xbb@xm.com', '', '2000-10-01', 'http://localhost:9090/files/download?fileName=1700576780918_QQ截图20230330090301.png', 'STUDENT');
INSERT INTO `student` VALUES (2, '20191002', '123', '20191002', NULL, NULL, NULL, NULL, NULL, 'STUDENT');
INSERT INTO `student` VALUES (3, '20191003', '123', '20191003', NULL, NULL, NULL, NULL, NULL, 'STUDENT');
INSERT INTO `student` VALUES (4, '20191004', '123', '20191004', NULL, NULL, NULL, NULL, NULL, 'STUDENT');
INSERT INTO `student` VALUES (5, '20191005', '123', '20191005', NULL, NULL, NULL, NULL, NULL, 'STUDENT');
INSERT INTO `student` VALUES (6, '20191006', '123', '20191006', NULL, NULL, NULL, NULL, NULL, 'STUDENT');
INSERT INTO `student` VALUES (7, '20191007', '123', '20191007', NULL, NULL, NULL, NULL, NULL, 'STUDENT');
INSERT INTO `student` VALUES (8, '20191010', '123', '李思思', '13988998899', 'lss@xm.com', '', '2001-11-01', 'http://localhost:9090/files/download?fileName=1700575670771_QQ图片20230301222231.gif', 'STUDENT');
-- ----------------------------
-- Table structure for student_course
-- ----------------------------
DROP TABLE IF EXISTS `student_course`;
CREATE TABLE `student_course` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '课程名称',
`no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '课程编号',
`student_id` int(11) NULL DEFAULT NULL COMMENT '学生ID',
`course_id` int(11) NULL DEFAULT NULL COMMENT '课程ID',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '学生选课' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of student_course
-- ----------------------------
INSERT INTO `student_course` VALUES (4, '大学物理', 'CS12332131', 1, 2);
INSERT INTO `student_course` VALUES (5, '大学英语', 'CS10012313', 8, 1);
SET FOREIGN_KEY_CHECKS = 1;

@ -1,111 +0,0 @@
//waves.vue
<template>
<div data-tname="WaveItem">
<div class="main-container">
<div class="waves">
<div class="wave" v-for="(item, key) in waves" :key="key" :style="item">
<div
v-for="n in wavesConfig.total"
:key="n"
class="wave-item"
:style="{
transform: `scale(${0.1 * Math.sqrt(n - 1)})`, // 使
opacity: 0.3 * (1 / n), //
animationDelay: `${(n - 1) * 0.12}s`, //
animationDuration: `${0.6 +
n * 0.3 +
parseInt(item.width) * 0.002}s`, // 波纹动画时间渐增,表现波纹向外扩散渐慢的效果,波纹尺寸越大动画时间越长。
backgroundColor: wavesConfig.waveColor
}"
></div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "WaveItem",
data() {
return {
waves: [],
wavesConfig: {
maxSize: 300, // px
minSize: 100, // px
zIndexCount: 999, // z-index
waveColor: "#3E8CE3", //
total: 5 //
},
clear: {
delay: 5000,
timeoutId: null
}
};
},
mounted() {
document.getElementById("app").onclick = e => {
this.createWave(e);
this.intervalClearWave();
};
},
methods: {
createWave(e) {
//
if (this.wavesConfig.zIndexCount > 99999) {
this.wavesConfig.zIndexCount = 999;
} else {
this.wavesConfig.zIndexCount++;
}
//
const waveSize = parseInt(
Math.random() * (this.wavesConfig.maxSize - this.wavesConfig.minSize) +
this.wavesConfig.minSize
);
//
this.waves.push({
left: `${e.clientX - waveSize / 2}px`,
top: `${e.clientY - waveSize / 2}px`,
zIndex: this.wavesConfig.zIndexCount,
width: `${waveSize}px`,
height: `${waveSize}px`
});
},
intervalClearWave() {
clearTimeout(this.clear.timeoutId);
this.clear.timeoutId = setTimeout(() => {
this.waves = [];
}, this.clear.delay);
}
}
};
</script>
<style lang="scss" scoped>
.waves {
.wave {
position: fixed;
pointer-events: none; // 穿使穿ie11
@keyframes wave {
to {
//
transform: scale(1);
opacity: 0;
}
}
.wave-item {
width: 100%;
height: 100%;
position: absolute;
border-radius: 100%;
animation: {
name: wave;
fill-mode: forwards; //
timing-function: ease-out; //
}
}
}
}
</style>

@ -1,3 +1,21 @@
<template>
<RouterView />
</template>
<div id="app">
<wave />
</div>
</template>
<script>
import WaveItem from './components/wave.vue';
export default {
name: 'App',
components: {
WaveItem
}
};
</script>
<style>
/* Your global styles here */
</style>

@ -103,7 +103,7 @@ const register = () => {
}
.register-button:hover {
background-color: #b87eff;
background-color: #2899FF;
transform: scale(1.05);
}
</style>

@ -1,109 +0,0 @@
<template>
<div>
<div class="login-container">
<div style="width: 350px" class="login-box">
<div style="font-weight: bold; font-size: 24px; text-align: center; margin-bottom: 30px"> </div>
<el-form :model="data.form" ref="formRef" :rules="rules">
<el-form-item prop="username">
<el-input prefix-icon="User" v-model="data.form.username" placeholder="请输入账号" />
</el-form-item>
<el-form-item prop="password">
<el-input show-password prefix-icon="Lock" v-model="data.form.password" placeholder="请输入密码" />
</el-form-item>
<el-form-item>
<el-button type="primary" class="register-button" style="width: 100%" @click="register"> </el-button>
</el-form-item>
</el-form>
<div style="margin-top: 30px; text-align: right">
已有账号 <a href="/login">登录</a>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { reactive, ref } from "vue";
import request from "@/utils/request";
import { ElMessage } from "element-plus";
import router from "@/router";
const data = reactive({
form: {}
});
const rules = reactive({
username: [
{ required: true, message: '请输入账号', trigger: 'blur' },
],
password: [
{ required: true, message: '请输入密码', trigger: 'blur' },
],
});
const formRef = ref();
const register = () => {
formRef.value.validate((valid) => {
if (valid) {
request.post('/register', data.form).then(res => {
if (res.code === '200') {
ElMessage.success('注册成功');
router.push('/login'); //
} else {
ElMessage.error(res.msg);
}
});
}
});
};
</script>
<style scoped>
.login-container {
min-height: 100vh;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
background-image: url("@/assets/imgs/bkg.jpg"), linear-gradient(to bottom right, rgba(170, 85, 255, 0), rgba(120, 70, 255, 0));
background-size: cover;
background-blend-mode: overlay;
animation: backgroundAnimation 10s infinite alternate;
}
@keyframes backgroundAnimation {
0% { background-position: top left; }
100% { background-position: bottom right; }
}
.login-box {
background-color: #fff;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
padding: 30px;
border-radius: 5px;
transition: transform 0.3s;
}
.login-box:hover {
transform: scale(1.05);
}
.el-input, .el-select {
transition: all 0.3s;
}
.el-input:focus, .el-select:focus {
border-color: #b87eff;
box-shadow: 0 0 8px rgba(0, 0, 0, 0);
}
.register-button {
transition: background-color 0.3s, transform 0.3s;
}
.register-button:hover {
background-color: #b87eff;
transform: scale(1.05);
}
</style>

@ -2,7 +2,7 @@
<div>
<div class="login-container">
<div style="width: 350px" class="login-box">
<div style="font-weight: bold; font-size: 24px; text-align: center; margin-bottom: 30px"></div>
<div style="font-weight: bold; font-size: 24px; text-align: center; margin-bottom: 30px">欢迎来到学绩云端</div>
<el-form :model="data.form" ref="formRef" :rules="rules">
<el-form-item prop="username">
<el-input prefix-icon="User" v-model="data.form.username" placeholder="请输入账号" />
@ -20,15 +20,15 @@
<el-button type="primary" class="login-button" style="width: 100%" @click="login"> </el-button>
</el-form-item>
</el-form>
<div style="margin-top: 30px; text-align: right">
还没有账号 <a href="/register">注册</a>
<div style="margin-top: 5px; text-align:center;">
点击 <a href="/register">注册</a>
</div>
</div>
</div>
</div>
</template>
<script setup>
<script setup>//vue3
import { reactive, ref } from "vue";
import request from "@/utils/request";
import { ElMessage } from "element-plus";
@ -88,9 +88,10 @@ const login = () => {
.login-box {
background-color: #fff;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
padding: 30px;
border-radius: 5px;
padding: 70px;
border-radius: 60px;
transition: transform 0.3s;
background-color: #fffacf;
}
.login-box:hover {
@ -111,7 +112,7 @@ const login = () => {
}
.login-button:hover {
background-color: #b87eff;
background-color: #2899FF;
transform: scale(1.05);
}
</style>

Loading…
Cancel
Save