学生选课功能

root 2 years ago
parent 8f2eea69f8
commit ad43980ff1

@ -0,0 +1,50 @@
package com.example.controller;
import com.example.common.Result;
import com.example.entity.Course;
import com.example.entity.StudentCourse;
import com.example.service.StudentCourseService;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("/studentCourse")
public class StudentCourseController {
@Resource
StudentCourseService studentCourseService;
/**
*
*/
@PostMapping("/add")
public Result add(@RequestBody StudentCourse studentCourse) {
studentCourseService.add(studentCourse);
return Result.success();
}
/**
*
*/
@DeleteMapping("/delete/{id}")
public Result delete(@PathVariable Integer id){
studentCourseService.deleteById(id);
return Result.success();
}
/**
*
*/
@GetMapping("/selectPage")
public Result selectPage(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "5") Integer pageSize,
StudentCourse studentCourse){
PageInfo<StudentCourse> pageInfo = studentCourseService.selectPage(pageNum, pageSize,studentCourse);
return Result.success(pageInfo);
}
}

@ -0,0 +1,58 @@
package com.example.entity;
public class StudentCourse {
private Integer id;
private String name;
private String no;
private Integer studentId;
private Integer courseId;
private String studentName;
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 Integer getStudentId() {
return studentId;
}
public void setStudentId(Integer studentId) {
this.studentId = studentId;
}
public Integer getCourseId() {
return courseId;
}
public void setCourseId(Integer courseId) {
this.courseId = courseId;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
}

@ -0,0 +1,23 @@
package com.example.mapper;
import com.example.entity.StudentCourse;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface StudentCourseMapper {
@Insert("insert into student_course (name,no,student_id,course_id) values (#{name},#{no},#{studentId},#{courseId})")
void insert(StudentCourse studentCourse);
@Select("select * from student_course where student_id = #{studentId} and course_id = #{courseId}")
StudentCourse selectByCondition(StudentCourse studentCourse);
// @Select("select * from student_course where name like concat('%',#{name},'%') and no like concat('%',#{no},'%') and student_id=#{studentId}")
List<StudentCourse> selectAll(StudentCourse studentCourse);
@Delete("delete from student_course where id=#{id}")
void deleteById(Integer id);
}

@ -0,0 +1,39 @@
package com.example.service;
import com.example.entity.StudentCourse;
import com.example.exception.CustomException;
import com.example.mapper.StudentCourseMapper;
import com.example.mapper.StudentMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class StudentCourseService {
@Resource
StudentCourseMapper studentCourseMapper;
public void add(StudentCourse studentCourse) {
StudentCourse course = studentCourseMapper.selectByCondition(studentCourse);//通过学生Id和课程ID筛选看这个学生是否选过这门课
if (course != null) {
throw new CustomException("您已选过这门课程");
}
studentCourseMapper.insert(studentCourse);
}
public PageInfo<StudentCourse> selectPage(Integer pageNum, Integer pageSize,StudentCourse studentCourse) {
PageHelper.startPage(pageNum,pageSize);
List<StudentCourse> list = studentCourseMapper.selectAll(studentCourse);
return PageInfo.of(list);
}
public void deleteById(Integer id) {
studentCourseMapper.deleteById(id);
}
}

@ -6,7 +6,7 @@ spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123
password: zyh1234567890
url: jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8&allowPublicKeyRetrieval=true
servlet:
multipart:
@ -18,5 +18,6 @@ mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
mapper-locations: classpath:mapper/*.xml
ip: localhost

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.StudentCourseMapper">
<select id="selectAll" resultType="com.example.entity.StudentCourse">
select student_course.*,student.name as studentName from student_course
left join student
on student_course.student_id = student.id
<where>
<if test="name != null"> and student_course.name like concat('%',#{name},'%') </if>
<if test="no != null">and student_course.no like concat('%',#{no},'%')</if>
<if test="studentId!= null">and student_course.student_id = #{studentId}</if>
</where>
order by id desc
</select>
</mapper>

@ -6,7 +6,7 @@ spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123
password: zyh1234567890
url: jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8&allowPublicKeyRetrieval=true
servlet:
multipart:
@ -18,5 +18,6 @@ mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
mapper-locations: classpath:mapper/*.xml
ip: localhost

@ -1,206 +1,215 @@
{
"hash": "5854fb98",
"browserHash": "be58fd9d",
"hash": "7b87647c",
"browserHash": "3783bdee",
"optimized": {
"@element-plus/icons-vue": {
"src": "../../@element-plus/icons-vue/dist/index.js",
"file": "@element-plus_icons-vue.js",
"fileHash": "4421ada3",
"fileHash": "b9f59230",
"needsInterop": false
},
"axios": {
"src": "../../axios/index.js",
"file": "axios.js",
"fileHash": "24e32da7",
"fileHash": "3c866bcf",
"needsInterop": false
},
"element-plus": {
"src": "../../element-plus/es/index.mjs",
"file": "element-plus.js",
"fileHash": "01f3cf17",
"fileHash": "07d81f07",
"needsInterop": false
},
"element-plus/dist/locale/zh-cn.mjs": {
"src": "../../element-plus/dist/locale/zh-cn.mjs",
"file": "element-plus_dist_locale_zh-cn__mjs.js",
"fileHash": "9fd92fc4",
"fileHash": "731ceabb",
"needsInterop": false
},
"vue": {
"src": "../../vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js",
"fileHash": "df9e8daf",
"fileHash": "d542d8c4",
"needsInterop": false
},
"vue-router": {
"src": "../../vue-router/dist/vue-router.mjs",
"file": "vue-router.js",
"fileHash": "7d324a06",
"fileHash": "cfaa6634",
"needsInterop": false
},
"element-plus/es": {
"src": "../../element-plus/es/index.mjs",
"file": "element-plus_es.js",
"fileHash": "ec86269b",
"fileHash": "a22f5d6f",
"needsInterop": false
},
"element-plus/es/components/base/style/index": {
"src": "../../element-plus/es/components/base/style/index.mjs",
"file": "element-plus_es_components_base_style_index.js",
"fileHash": "9b555476",
"fileHash": "c200b7a8",
"needsInterop": false
},
"element-plus/es/components/menu/style/index": {
"src": "../../element-plus/es/components/menu/style/index.mjs",
"file": "element-plus_es_components_menu_style_index.js",
"fileHash": "a3ebe234",
"fileHash": "64291ef6",
"needsInterop": false
},
"element-plus/es/components/sub-menu/style/index": {
"src": "../../element-plus/es/components/sub-menu/style/index.mjs",
"file": "element-plus_es_components_sub-menu_style_index.js",
"fileHash": "97e782a0",
"fileHash": "03bf85d6",
"needsInterop": false
},
"element-plus/es/components/menu-item/style/index": {
"src": "../../element-plus/es/components/menu-item/style/index.mjs",
"file": "element-plus_es_components_menu-item_style_index.js",
"fileHash": "9c7655d4",
"fileHash": "a2dee0d4",
"needsInterop": false
},
"element-plus/es/components/icon/style/index": {
"src": "../../element-plus/es/components/icon/style/index.mjs",
"file": "element-plus_es_components_icon_style_index.js",
"fileHash": "f5787b33",
"fileHash": "04400642",
"needsInterop": false
},
"element-plus/es/components/message/style/index": {
"src": "../../element-plus/es/components/message/style/index.mjs",
"file": "element-plus_es_components_message_style_index.js",
"fileHash": "f220d27c",
"needsInterop": false
},
"element-plus/es/components/dialog/style/index": {
"src": "../../element-plus/es/components/dialog/style/index.mjs",
"file": "element-plus_es_components_dialog_style_index.js",
"fileHash": "6d89c9c6",
"fileHash": "bfcc6e5d",
"needsInterop": false
},
"element-plus/es/components/form/style/index": {
"src": "../../element-plus/es/components/form/style/index.mjs",
"file": "element-plus_es_components_form_style_index.js",
"fileHash": "21cd1f83",
"fileHash": "826d74eb",
"needsInterop": false
},
"element-plus/es/components/button/style/index": {
"src": "../../element-plus/es/components/button/style/index.mjs",
"file": "element-plus_es_components_button_style_index.js",
"fileHash": "298368e4",
"needsInterop": false
},
"element-plus/es/components/select/style/index": {
"src": "../../element-plus/es/components/select/style/index.mjs",
"file": "element-plus_es_components_select_style_index.js",
"fileHash": "b03ae1f4",
"needsInterop": false
},
"element-plus/es/components/option/style/index": {
"src": "../../element-plus/es/components/option/style/index.mjs",
"file": "element-plus_es_components_option_style_index.js",
"fileHash": "0d7e30fb",
"needsInterop": false
},
"element-plus/es/components/form-item/style/index": {
"src": "../../element-plus/es/components/form-item/style/index.mjs",
"file": "element-plus_es_components_form-item_style_index.js",
"fileHash": "aff18c5d",
"fileHash": "fe81150d",
"needsInterop": false
},
"element-plus/es/components/input/style/index": {
"src": "../../element-plus/es/components/input/style/index.mjs",
"file": "element-plus_es_components_input_style_index.js",
"fileHash": "71692cbd",
"needsInterop": false
},
"element-plus/es/components/dialog/style/index": {
"src": "../../element-plus/es/components/dialog/style/index.mjs",
"file": "element-plus_es_components_dialog_style_index.js",
"fileHash": "ee419574",
"needsInterop": false
},
"element-plus/es/components/pagination/style/index": {
"src": "../../element-plus/es/components/pagination/style/index.mjs",
"file": "element-plus_es_components_pagination_style_index.js",
"fileHash": "3b540d19",
"fileHash": "3c169117",
"needsInterop": false
},
"element-plus/es/components/table/style/index": {
"src": "../../element-plus/es/components/table/style/index.mjs",
"file": "element-plus_es_components_table_style_index.js",
"fileHash": "b3fb1239",
"fileHash": "4ac26944",
"needsInterop": false
},
"element-plus/es/components/table-column/style/index": {
"src": "../../element-plus/es/components/table-column/style/index.mjs",
"file": "element-plus_es_components_table-column_style_index.js",
"fileHash": "4ba5d987",
"needsInterop": false
},
"element-plus/es/components/button/style/index": {
"src": "../../element-plus/es/components/button/style/index.mjs",
"file": "element-plus_es_components_button_style_index.js",
"fileHash": "19b1483e",
"needsInterop": false
},
"element-plus/es/components/input/style/index": {
"src": "../../element-plus/es/components/input/style/index.mjs",
"file": "element-plus_es_components_input_style_index.js",
"fileHash": "d170d25b",
"fileHash": "37b1f53a",
"needsInterop": false
},
"element-plus/es/components/message-box/style/index": {
"src": "../../element-plus/es/components/message-box/style/index.mjs",
"file": "element-plus_es_components_message-box_style_index.js",
"fileHash": "884ffcde",
"fileHash": "4b13d5b3",
"needsInterop": false
},
"element-plus/es/components/upload/style/index": {
"src": "../../element-plus/es/components/upload/style/index.mjs",
"file": "element-plus_es_components_upload_style_index.js",
"fileHash": "238313e0",
"needsInterop": false
},
"element-plus/es/components/date-picker/style/index": {
"src": "../../element-plus/es/components/date-picker/style/index.mjs",
"file": "element-plus_es_components_date-picker_style_index.js",
"fileHash": "e77deab5",
"fileHash": "37769ea1",
"needsInterop": false
},
"element-plus/es/components/radio-group/style/index": {
"src": "../../element-plus/es/components/radio-group/style/index.mjs",
"file": "element-plus_es_components_radio-group_style_index.js",
"fileHash": "ca0d5678",
"fileHash": "0481c8fb",
"needsInterop": false
},
"element-plus/es/components/radio/style/index": {
"src": "../../element-plus/es/components/radio/style/index.mjs",
"file": "element-plus_es_components_radio_style_index.js",
"fileHash": "03174476",
"needsInterop": false
},
"element-plus/es/components/select/style/index": {
"src": "../../element-plus/es/components/select/style/index.mjs",
"file": "element-plus_es_components_select_style_index.js",
"fileHash": "eb71cf6b",
"needsInterop": false
},
"element-plus/es/components/option/style/index": {
"src": "../../element-plus/es/components/option/style/index.mjs",
"file": "element-plus_es_components_option_style_index.js",
"fileHash": "0cf440ff",
"needsInterop": false
},
"element-plus/es/components/upload/style/index": {
"src": "../../element-plus/es/components/upload/style/index.mjs",
"file": "element-plus_es_components_upload_style_index.js",
"fileHash": "b46595a2",
"fileHash": "2d48a94a",
"needsInterop": false
},
"element-plus/es/components/image/style/index": {
"src": "../../element-plus/es/components/image/style/index.mjs",
"file": "element-plus_es_components_image_style_index.js",
"fileHash": "767a365f",
"fileHash": "5adb848e",
"needsInterop": false
}
},
"chunks": {
"chunk-7OET6BVI": {
"file": "chunk-7OET6BVI.js"
"chunk-LLX57AWP": {
"file": "chunk-LLX57AWP.js"
},
"chunk-DJEZ4JTC": {
"file": "chunk-DJEZ4JTC.js"
},
"chunk-PPVUTFQ4": {
"file": "chunk-PPVUTFQ4.js"
},
"chunk-5JJABUIZ": {
"file": "chunk-5JJABUIZ.js"
"chunk-GWFAMI2R": {
"file": "chunk-GWFAMI2R.js"
},
"chunk-GU4PFDPT": {
"file": "chunk-GU4PFDPT.js"
"chunk-AJCL53Z6": {
"file": "chunk-AJCL53Z6.js"
},
"chunk-PENNLVNN": {
"file": "chunk-PENNLVNN.js"
"chunk-MNGJP5CX": {
"file": "chunk-MNGJP5CX.js"
},
"chunk-5RN2MMBU": {
"file": "chunk-5RN2MMBU.js"
"chunk-GKVWLPNN": {
"file": "chunk-GKVWLPNN.js"
},
"chunk-JYTBIKBH": {
"file": "chunk-JYTBIKBH.js"
"chunk-DS4Y6AOL": {
"file": "chunk-DS4Y6AOL.js"
},
"chunk-54HZGGPY": {
"file": "chunk-54HZGGPY.js"
"chunk-NHX6JBU6": {
"file": "chunk-NHX6JBU6.js"
},
"chunk-GOKZPI4P": {
"file": "chunk-GOKZPI4P.js"
"chunk-CI3L27KN": {
"file": "chunk-CI3L27KN.js"
},
"chunk-772POZ6I": {
"file": "chunk-772POZ6I.js"
},
"chunk-MFXAVKGL": {
"file": "chunk-MFXAVKGL.js"
@ -213,15 +222,6 @@
},
"chunk-5WWUZCGV": {
"file": "chunk-5WWUZCGV.js"
},
"chunk-33Y6QZEF": {
"file": "chunk-33Y6QZEF.js"
},
"chunk-3XR3YXSA": {
"file": "chunk-3XR3YXSA.js"
},
"chunk-U4EIEHT3": {
"file": "chunk-U4EIEHT3.js"
}
}
}

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/tooltip/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/tooltip.scss";
//# sourceMappingURL=chunk-33Y6QZEF.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/tooltip/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\r\nimport 'element-plus/theme-chalk/src/tooltip.scss';\r\nimport '../../popper/style/index.mjs';\r\n//# sourceMappingURL=index.mjs.map\r\n"],
"mappings": ";AACA,OAAO;",
"names": []
}

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/popper/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/popper.scss";
//# sourceMappingURL=chunk-3XR3YXSA.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/popper/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\r\nimport 'element-plus/theme-chalk/src/popper.scss';\r\n//# sourceMappingURL=index.mjs.map\r\n"],
"mappings": ";AACA,OAAO;",
"names": []
}

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/tag/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/tag.scss";
//# sourceMappingURL=chunk-54HZGGPY.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/tag/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\r\nimport 'element-plus/theme-chalk/src/tag.scss';\r\n//# sourceMappingURL=index.mjs.map\r\n"],
"mappings": ";AACA,OAAO;",
"names": []
}

@ -1,6 +0,0 @@
// node_modules/element-plus/es/components/option-group/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/option-group.scss";
// node_modules/element-plus/es/components/select/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/select.scss";
//# sourceMappingURL=chunk-5JJABUIZ.js.map

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/overlay/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/overlay.scss";
//# sourceMappingURL=chunk-5RN2MMBU.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/overlay/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\r\nimport 'element-plus/theme-chalk/src/overlay.scss';\r\n//# sourceMappingURL=index.mjs.map\r\n"],
"mappings": ";AACA,OAAO;",
"names": []
}

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/button/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/button.scss";
//# sourceMappingURL=chunk-7OET6BVI.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/button/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\r\nimport 'element-plus/theme-chalk/src/button.scss';\r\n//# sourceMappingURL=index.mjs.map\r\n"],
"mappings": ";AACA,OAAO;",
"names": []
}

@ -0,0 +1,6 @@
// node_modules/element-plus/es/components/option-group/style/index.mjs
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/option-group.scss";
// node_modules/element-plus/es/components/select/style/index.mjs
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/select.scss";
//# sourceMappingURL=chunk-DJEZ4JTC.js.map

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/checkbox/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/checkbox.scss";
//# sourceMappingURL=chunk-GOKZPI4P.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/checkbox/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\r\nimport 'element-plus/theme-chalk/src/checkbox.scss';\r\n//# sourceMappingURL=index.mjs.map\r\n"],
"mappings": ";AACA,OAAO;",
"names": []
}

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/input/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/input.scss";
//# sourceMappingURL=chunk-GU4PFDPT.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/input/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\r\nimport 'element-plus/theme-chalk/src/input.scss';\r\n//# sourceMappingURL=index.mjs.map\r\n"],
"mappings": ";AACA,OAAO;",
"names": []
}

@ -0,0 +1,3 @@
// node_modules/element-plus/es/components/option/style/index.mjs
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/option.scss";
//# sourceMappingURL=chunk-GWFAMI2R.js.map

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/scrollbar/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/scrollbar.scss";
//# sourceMappingURL=chunk-JYTBIKBH.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/scrollbar/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\r\nimport 'element-plus/theme-chalk/src/scrollbar.scss';\r\n//# sourceMappingURL=index.mjs.map\r\n"],
"mappings": ";AACA,OAAO;",
"names": []
}

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/option/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/option.scss";
//# sourceMappingURL=chunk-PENNLVNN.js.map

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/base/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/base.scss";
//# sourceMappingURL=chunk-U4EIEHT3.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/base/style/index.mjs"],
"sourcesContent": ["import 'element-plus/theme-chalk/src/base.scss';\r\n//# sourceMappingURL=index.mjs.map\r\n"],
"mappings": ";AAAA,OAAO;",
"names": []
}

@ -1,2 +1,2 @@
import "./chunk-U4EIEHT3.js";
import "./chunk-772POZ6I.js";
//# sourceMappingURL=element-plus_es_components_base_style_index.js.map

@ -1,3 +1,3 @@
import "./chunk-7OET6BVI.js";
import "./chunk-U4EIEHT3.js";
import "./chunk-GKVWLPNN.js";
import "./chunk-772POZ6I.js";
//# sourceMappingURL=element-plus_es_components_button_style_index.js.map

@ -1,9 +1,9 @@
import "./chunk-7OET6BVI.js";
import "./chunk-GU4PFDPT.js";
import "./chunk-JYTBIKBH.js";
import "./chunk-3XR3YXSA.js";
import "./chunk-U4EIEHT3.js";
import "./chunk-GKVWLPNN.js";
import "./chunk-DS4Y6AOL.js";
import "./chunk-NHX6JBU6.js";
import "./chunk-CI3L27KN.js";
import "./chunk-772POZ6I.js";
// node_modules/element-plus/es/components/date-picker/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/date-picker.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/date-picker.scss";
//# sourceMappingURL=element-plus_es_components_date-picker_style_index.js.map

@ -1,6 +1,6 @@
import "./chunk-5RN2MMBU.js";
import "./chunk-U4EIEHT3.js";
import "./chunk-LLX57AWP.js";
import "./chunk-772POZ6I.js";
// node_modules/element-plus/es/components/dialog/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/dialog.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/dialog.scss";
//# sourceMappingURL=element-plus_es_components_dialog_style_index.js.map

@ -1,5 +1,5 @@
import "./chunk-U4EIEHT3.js";
import "./chunk-772POZ6I.js";
// node_modules/element-plus/es/components/form-item/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/form-item.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/form-item.scss";
//# sourceMappingURL=element-plus_es_components_form-item_style_index.js.map

@ -1,5 +1,5 @@
import "./chunk-U4EIEHT3.js";
import "./chunk-772POZ6I.js";
// node_modules/element-plus/es/components/form/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/form.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/form.scss";
//# sourceMappingURL=element-plus_es_components_form_style_index.js.map

@ -1,5 +1,5 @@
import "./chunk-U4EIEHT3.js";
import "./chunk-772POZ6I.js";
// node_modules/element-plus/es/components/icon/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/icon.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/icon.scss";
//# sourceMappingURL=element-plus_es_components_icon_style_index.js.map

@ -1,8 +1,8 @@
import "./chunk-U4EIEHT3.js";
import "./chunk-772POZ6I.js";
// node_modules/element-plus/es/components/image/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/image.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/image.scss";
// node_modules/element-plus/es/components/image-viewer/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/image-viewer.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/image-viewer.scss";
//# sourceMappingURL=element-plus_es_components_image_style_index.js.map

@ -1,3 +1,3 @@
import "./chunk-GU4PFDPT.js";
import "./chunk-U4EIEHT3.js";
import "./chunk-DS4Y6AOL.js";
import "./chunk-772POZ6I.js";
//# sourceMappingURL=element-plus_es_components_input_style_index.js.map

@ -1,5 +1,5 @@
import "./chunk-U4EIEHT3.js";
import "./chunk-772POZ6I.js";
// node_modules/element-plus/es/components/menu-item/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/menu-item.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/menu-item.scss";
//# sourceMappingURL=element-plus_es_components_menu-item_style_index.js.map

@ -1,7 +1,7 @@
import "./chunk-33Y6QZEF.js";
import "./chunk-3XR3YXSA.js";
import "./chunk-U4EIEHT3.js";
import "./chunk-MNGJP5CX.js";
import "./chunk-CI3L27KN.js";
import "./chunk-772POZ6I.js";
// node_modules/element-plus/es/components/menu/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/menu.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/menu.scss";
//# sourceMappingURL=element-plus_es_components_menu_style_index.js.map

@ -1,8 +1,8 @@
import "./chunk-7OET6BVI.js";
import "./chunk-GU4PFDPT.js";
import "./chunk-5RN2MMBU.js";
import "./chunk-U4EIEHT3.js";
import "./chunk-LLX57AWP.js";
import "./chunk-GKVWLPNN.js";
import "./chunk-DS4Y6AOL.js";
import "./chunk-772POZ6I.js";
// node_modules/element-plus/es/components/message-box/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/message-box.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/message-box.scss";
//# sourceMappingURL=element-plus_es_components_message-box_style_index.js.map

@ -1,8 +1,8 @@
import "./chunk-U4EIEHT3.js";
import "./chunk-772POZ6I.js";
// node_modules/element-plus/es/components/badge/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/badge.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/badge.scss";
// node_modules/element-plus/es/components/message/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/message.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/message.scss";
//# sourceMappingURL=element-plus_es_components_message_style_index.js.map

@ -1,3 +1,3 @@
import "./chunk-PENNLVNN.js";
import "./chunk-U4EIEHT3.js";
import "./chunk-GWFAMI2R.js";
import "./chunk-772POZ6I.js";
//# sourceMappingURL=element-plus_es_components_option_style_index.js.map

@ -1,11 +1,11 @@
import "./chunk-5JJABUIZ.js";
import "./chunk-GU4PFDPT.js";
import "./chunk-PENNLVNN.js";
import "./chunk-JYTBIKBH.js";
import "./chunk-54HZGGPY.js";
import "./chunk-3XR3YXSA.js";
import "./chunk-U4EIEHT3.js";
import "./chunk-DJEZ4JTC.js";
import "./chunk-PPVUTFQ4.js";
import "./chunk-GWFAMI2R.js";
import "./chunk-DS4Y6AOL.js";
import "./chunk-NHX6JBU6.js";
import "./chunk-CI3L27KN.js";
import "./chunk-772POZ6I.js";
// node_modules/element-plus/es/components/pagination/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/pagination.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/pagination.scss";
//# sourceMappingURL=element-plus_es_components_pagination_style_index.js.map

@ -1,5 +1,5 @@
import "./chunk-U4EIEHT3.js";
import "./chunk-772POZ6I.js";
// node_modules/element-plus/es/components/radio-group/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/radio-group.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/radio-group.scss";
//# sourceMappingURL=element-plus_es_components_radio-group_style_index.js.map

@ -1,5 +1,5 @@
import "./chunk-U4EIEHT3.js";
import "./chunk-772POZ6I.js";
// node_modules/element-plus/es/components/radio/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/radio.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/radio.scss";
//# sourceMappingURL=element-plus_es_components_radio_style_index.js.map

@ -1,8 +1,8 @@
import "./chunk-5JJABUIZ.js";
import "./chunk-GU4PFDPT.js";
import "./chunk-PENNLVNN.js";
import "./chunk-JYTBIKBH.js";
import "./chunk-54HZGGPY.js";
import "./chunk-3XR3YXSA.js";
import "./chunk-U4EIEHT3.js";
import "./chunk-DJEZ4JTC.js";
import "./chunk-PPVUTFQ4.js";
import "./chunk-GWFAMI2R.js";
import "./chunk-DS4Y6AOL.js";
import "./chunk-NHX6JBU6.js";
import "./chunk-CI3L27KN.js";
import "./chunk-772POZ6I.js";
//# sourceMappingURL=element-plus_es_components_select_style_index.js.map

@ -1,5 +1,5 @@
import "./chunk-U4EIEHT3.js";
import "./chunk-772POZ6I.js";
// node_modules/element-plus/es/components/sub-menu/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/sub-menu.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/sub-menu.scss";
//# sourceMappingURL=element-plus_es_components_sub-menu_style_index.js.map

@ -1,7 +1,7 @@
import "./chunk-54HZGGPY.js";
import "./chunk-GOKZPI4P.js";
import "./chunk-U4EIEHT3.js";
import "./chunk-PPVUTFQ4.js";
import "./chunk-AJCL53Z6.js";
import "./chunk-772POZ6I.js";
// node_modules/element-plus/es/components/table-column/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/table-column.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/table-column.scss";
//# sourceMappingURL=element-plus_es_components_table-column_style_index.js.map

@ -1,9 +1,9 @@
import "./chunk-JYTBIKBH.js";
import "./chunk-GOKZPI4P.js";
import "./chunk-33Y6QZEF.js";
import "./chunk-3XR3YXSA.js";
import "./chunk-U4EIEHT3.js";
import "./chunk-AJCL53Z6.js";
import "./chunk-MNGJP5CX.js";
import "./chunk-NHX6JBU6.js";
import "./chunk-CI3L27KN.js";
import "./chunk-772POZ6I.js";
// node_modules/element-plus/es/components/table/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/table.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/table.scss";
//# sourceMappingURL=element-plus_es_components_table_style_index.js.map

@ -1,8 +1,8 @@
import "./chunk-U4EIEHT3.js";
import "./chunk-772POZ6I.js";
// node_modules/element-plus/es/components/upload/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/upload.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/upload.scss";
// node_modules/element-plus/es/components/progress/style/index.mjs
import "D:/Code/information_system/vue/node_modules/element-plus/theme-chalk/src/progress.scss";
import "D:/虚拟C盘/CODE/GIt/vue/node_modules/element-plus/theme-chalk/src/progress.scss";
//# sourceMappingURL=element-plus_es_components_upload_style_index.js.map

@ -12,7 +12,8 @@ const router = createRouter({
{ path: 'home', name: 'Home', component: () => import('@/views/manager/Home.vue')},
{ path: 'course', name: 'Course', component: () => import('@/views/manager/Course.vue')},
{ path: 'student', name: 'Student', component: () => import('@/views/manager/Student.vue')},
{ path: 'person', name: 'Person', component: () => import('@/views/manager/Person.vue')},
{ path: 'courseList', name: 'CourseList', component: () => import('@/views/manager/CourseList.vue')},
{ path: 'studentCourse', name: 'StudentCourse', component: () => import('@/views/manager/StudentCourse.vue')},
]
},
{ path: '/login', name: 'Login', component: () => import('@/views/Login.vue'),},

@ -30,10 +30,18 @@
<el-icon><Memo /></el-icon>
<span>课程管理</span>
</template>
<el-menu-item index="/course">
<el-menu-item index="/course" v-if="user.role === 'ADMIN'">
<el-icon><Document /></el-icon>
<span>课程信息</span>
</el-menu-item>
<el-menu-item index="/courseList" v-if="user.role === 'STUDENT'">
<el-icon><Document /></el-icon>
<span>学生选课</span>
</el-menu-item>
<el-menu-item index="/studentCourse">
<el-icon><Document /></el-icon>
<span>选课记录</span>
</el-menu-item>
</el-sub-menu>
<el-sub-menu index="3" v-if="user.role === 'ADMIN'">
<template #title>

@ -18,7 +18,7 @@
<el-table-column prop="descr" label="课程描述" />
<el-table-column prop="times" label="课时" />
<el-table-column prop="teacher" label="任课老师" />
<el-table-column>
<el-table-column label="操作" width="180">
<template #default="scope">
<el-button type="primary" size="small" plain @click="handleEdit(scope.row)"> </el-button>
<el-button type="danger" size="small" plain @click="del(scope.row.id)"> </el-button>

@ -0,0 +1,90 @@
<template>
<div class="card" style="margin-bottom: 10px">
<el-input v-model="data.name" style="width: 240px;margin-right:10px" placeholder="请输入课程名称查询" :prefix-icon="Search"/>
<el-input v-model="data.no" style="width: 240px;margin-right: 10px" placeholder="请输入课程编号查询" :prefix-icon="Search"/>
<el-input v-model="data.teacher" style="width: 240px" placeholder="请输入任课老师查询" :prefix-icon="Search"/>
<el-button type="primary" style="margin-left: 10px" @click="load"> </el-button>
<el-button type="info" @click="reset"> </el-button>
</div>
<div class="card" style="margin-bottom: 10px">
<div>
<el-table :data="data.tableData" style="width: 100%">
<el-table-column prop="id" label="序号" width="70" />
<el-table-column prop="name" label="课程名称" />
<el-table-column prop="no" label="课程编号" />
<el-table-column prop="descr" label="课程描述" />
<el-table-column prop="times" label="课时" />
<el-table-column prop="teacher" label="任课老师" />
<el-table-column label="操作" width="180">
<template #default="scope">
<el-button type="primary" @click="selectCourse(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="card">
<el-pagination v-model:current-page="data.pageNum" v-model:page-size="data.pageSize"
@current-change = "handleCurrentChange"
background layout="prev, pager, next" :total="data.total" />
</div>
</div>
</template>
<script setup>
import {reactive} from "vue";
import {Search} from "@element-plus/icons-vue";
import request from "@/utils/request";
import {ElMessage, ElMessageBox} from "element-plus";
const data = reactive({
name:'',
no:'',
teacher:'',
tableData:[],
total:0,
pageSize:5,//
pageNum: 1, //
student:JSON.parse(localStorage.getItem('student-user') || '{}')
})
const load =()=>{
request.get('course/selectPage',{
params:{
pageNum:data.pageNum,
pageSize:data.pageSize,
name:data.name,
no:data.no,
teacher:data.teacher
}
}).then((res)=>{
data.tableData =res.data?.list || []
data.total=res.data?.total || 0
})
}
//
load()
const handleCurrentChange = (pageNum)=>{
//
load()
}
const reset =()=>{
data.name = ''
data.no = ''
data.teacher = ''
load()
}
const selectCourse = (row) => {
request.post('/studentCourse/add',{studentId: data.student.id, name:row.name,no:row.no,courseId:row.id}).then(res => {
if(res.code === '200'){
ElMessage.success("操作成功")
}else {
ElMessage.error(res.msg)
}
})
}
</script>

@ -0,0 +1,97 @@
<template>
<div class="card" style="margin-bottom: 10px">
<el-input v-model="data.name" style="width: 240px;margin-right:10px" placeholder="请输入课程名称查询" :prefix-icon="Search"/>
<el-input v-model="data.no" style="width: 240px;margin-right: 10px" placeholder="请输入课程编号查询" :prefix-icon="Search"/>
<el-button type="primary" style="margin-left: 10px" @click="load"> </el-button>
<el-button type="info" @click="reset"> </el-button>
</div>
<div class="card" style="margin-bottom: 10px">
<div>
<el-table :data="data.tableData" style="width: 100%">
<el-table-column prop="id" label="序号" width="70" />
<el-table-column prop="name" label="课程名称" />
<el-table-column prop="no" label="课程编号" />
<el-table-column prop="studentName" label="学生名称" />
<el-table-column label="操作" width="180">
<template #default="scope">
<el-button type="danger" @click="del(scope.row.id)"></el-button>
<el-button type="primary" @click="addGrade(scope.row)" v-if="data.user.role==='ADMIN'"></el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="card">
<el-pagination v-model:current-page="data.pageNum" v-model:page-size="data.pageSize"
@current-change = "handleCurrentChange"
background layout="prev, pager, next" :total="data.total" />
</div>
</div>
</template>
<script setup>
import {reactive} from "vue";
import {Search} from "@element-plus/icons-vue";
import request from "@/utils/request";
import {ElMessage, ElMessageBox} from "element-plus";
const data = reactive({
name:'',
no:'',
tableData:[],
total:0,
pageSize:5,//
pageNum: 1, //
user:JSON.parse(localStorage.getItem('student-user') || '{}')
})
const load =()=>{
let params = {
pageNum:data.pageNum,
pageSize:data.pageSize,
name:data.name,
no:data.no
}
if(data.user.role === 'STUDENT') {//
params.studentId=data.user.id
}
request.get('studentCourse/selectPage',{
params:params
}).then((res)=>{
data.tableData =res.data?.list || []
data.total=res.data?.total || 0
})
}
//
load()
const handleCurrentChange = (pageNum)=>{
//
load()
}
const reset =()=>{
data.name = ''
data.no = ''
load()
}
const del = (id) => {
ElMessageBox.confirm('删除数据数据后无法恢复','确认删除吗',{type:'warning'}).then(() => {
request.delete('studentCourse/delete/' + id).then((res)=>{
if(res.code === '200'){
load()//
ElMessage.success("操作成功")
}else{
ElMessage.error(res.msg)
}
})
}).catch(res=>{})
}
//
const addGrade = () => {
//
}
</script>
Loading…
Cancel
Save