Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:教室信息管理系统(前后端源码 + 数据库 sql 脚本)

ops/2024/12/19 2:04:23/

🔥博客主页: 【小扳_-CSDN博客】
❤感谢大家点赞👍收藏⭐评论✍

        1.0 项目介绍

        开发工具:IDEA、VScode

        服务器:Tomcat, JDK 17

        项目构建:maven

        数据库:mysql 8.0

系统用户前台和管理后台两部分,项目采用前后端分离

        前端技术:vue3 + elementUI

        服务端技术:springboot + mybatis + redis + mysql

        1.1 项目功能

后台功能:

        1)登录、退出系统、首页

        2)教室管理

                (1) 教室管理:添加、修改、删除、查询等功能。

        3)教师管理

                (1) 教师管理:添加、修改、删除、查询等功能。

        4)课程管理

                (1) 课程管理:添加、修改、删除、查询等功能。

        5)设施管理

                (1) 设施管理:添加、修改、删除、查询等功能。

        6)教室设施信息

                (1) 教室设施信息:添加、修改、删除、查询等功能。

        7)课程安排

                (1) 课程安排:添加、修改、删除、查询等功能。

        8)教室使用记录

                (1)教室使用记录:添加、修改、删除、查询等功能。

        9)系统管理

                用户信息管理

                        (1)用户信息管理:添加、修改、删除、查询等功能。

                角色管理

                        (2)角色信息管理:添加、修改、删除、查询等功能。

                菜单管理

                        (3)菜单信息管理:添加、修改、删除、查询等功能。

                日志管理

                        (4)日志信息管理:添加、修改、删除、查询等功能。

        10)系统监控

                        查看在先用户、设置定时任务、数据监控、缓存监控、查看缓存列表等。

        11)权限管理

                (1) 角色信息管理:添加、修改、删除、分配权限等功能。

                (2) 资源信息管理:添加、修改、删除等功能。

注意:不一定非要完全符合开发环境,有稍微的差别也是可以开发的。

         若需要项目完整源码,可以在 CSDN 私信给我,我每天都有查看消息的,感谢大家支持,希

望可以帮助到大家!

        2.0 用户登录

        用户根据正确的用户名、密码且通过正确的校验码进行登录。使用了高质量的背景图片,希

望你喜欢。

        整体的主题颜色为:猛男粉

        实现了登录校验,还有用户注册功能:

        用到了 Spring Security 框架来实现登录、校验、验证等功能。 

相关的部分源码:

java">@RestController
public class SysLoginController
{@Autowiredprivate SysLoginService loginService;@Autowiredprivate ISysMenuService menuService;@Autowiredprivate SysPermissionService permissionService;/*** 登录方法* * @param loginBody 登录信息* @return 结果*/@PostMapping("/login")public AjaxResult login(@RequestBody LoginBody loginBody){AjaxResult ajax = AjaxResult.success();// 生成令牌String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),loginBody.getUuid());ajax.put(Constants.TOKEN, token);return ajax;}/*** 获取用户信息* * @return 用户信息*/@GetMapping("getInfo")public AjaxResult getInfo(){SysUser user = SecurityUtils.getLoginUser().getUser();// 角色集合Set<String> roles = permissionService.getRolePermission(user);// 权限集合Set<String> permissions = permissionService.getMenuPermission(user);AjaxResult ajax = AjaxResult.success();ajax.put("user", user);ajax.put("roles", roles);ajax.put("permissions", permissions);return ajax;}/*** 获取路由信息* * @return 路由信息*/@GetMapping("getRouters")public AjaxResult getRouters(){Long userId = SecurityUtils.getUserId();List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);return AjaxResult.success(menuService.buildMenus(menus));}
}
java">    public String login(String username, String password, String code, String uuid){// 验证码校验validateCaptcha(username, code, uuid);// 登录前置校验loginPreCheck(username, password);// 用户验证Authentication authentication = null;try{UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password);AuthenticationContextHolder.setContext(authenticationToken);// 该方法会去调用UserDetailsServiceImpl.loadUserByUsernameauthentication = authenticationManager.authenticate(authenticationToken);}catch (Exception e){if (e instanceof BadCredentialsException){AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));throw new UserPasswordNotMatchException();}else{AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));throw new ServiceException(e.getMessage());}}finally{AuthenticationContextHolder.clearContext();}AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));LoginUser loginUser = (LoginUser) authentication.getPrincipal();recordLoginInfo(loginUser.getUserId());// 生成tokenreturn tokenService.createToken(loginUser);}

        3.0 首页界面

        使用了各种各样的统计图表来直观展示数据。

相关的前端源码:

javascript"><template><div class="dashboard-container"><div class="chart-container"><div class="chart-header"><h2>教室使用情况统计</h2></div><div class="charts"><div id="barChart" class="chart"></div><div id="pieChart" class="chart"></div><div id="lineChart" class="chart"></div><div id="gaugeChart" class="chart"></div></div></div></div>
</template><script>
import * as echarts from 'echarts';export default {name: 'Dashboard',mounted() {this.initBarChart();this.initPieChart();this.initLineChart();this.initGaugeChart();},methods: {initBarChart() {const barChart = echarts.init(document.getElementById('barChart'));const option = {title: {text: '各教室使用次数',left: 'center',textStyle: {color: '#fff'}},tooltip: {trigger: 'axis',axisPointer: {type: 'shadow'}},xAxis: {type: 'category',data: ['教室3B-413', '教室3B-414', '教室3B-415', '教室3B-416', '教室3B-417'],axisLabel: {color: '#fff'}},yAxis: {type: 'value',axisLabel: {color: '#fff'}},series: [{data: [120, 200, 150, 80, 70],type: 'bar',itemStyle: {color: '#FF69B4'}}]};barChart.setOption(option);},initPieChart() {const pieChart = echarts.init(document.getElementById('pieChart'));const option = {title: {text: '教室使用比例',left: 'center',textStyle: {color: '#fff'}},tooltip: {trigger: 'item'},legend: {orient: 'vertical',left: 'left',textStyle: {color: '#fff'}},series: [{name: '教室',type: 'pie',radius: '50%',data: [{ value: 335, name: '教室3B-413' },{ value: 310, name: '教室3B-414' },{ value: 234, name: '教室3B-415' },{ value: 135, name: '教室3B-416' },{ value: 1548, name: '教室3B-417' }],emphasis: {itemStyle: {shadowBlur: 10,shadowOffsetX: 0,shadowColor: 'rgba(0, 0, 0, 0.5)'}},itemStyle: {color: function(params) {const colorList = ['#FF69B4', '#FF1493', '#DB7093', '#C71585', '#DA70D6'];return colorList[params.dataIndex];}}}]};pieChart.setOption(option);},initLineChart() {const lineChart = echarts.init(document.getElementById('lineChart'));const option = {title: {text: '教室使用时间趋势',left: 'center',textStyle: {color: '#fff'}},tooltip: {trigger: 'axis'},xAxis: {type: 'category',data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],axisLabel: {color: '#fff'}},yAxis: {type: 'value',axisLabel: {color: '#fff'}},series: [{data: [120, 200, 150, 80, 70, 110, 130],type: 'line',itemStyle: {color: '#FF69B4'}}]};lineChart.setOption(option);},initGaugeChart() {const gaugeChart = echarts.init(document.getElementById('gaugeChart'));const option = {title: {text: '总使用次数',left: 'center',textStyle: {color: '#fff'}},tooltip: {formatter: '{a} <br/>{b} : {c}'},series: [{name: '使用次数',type: 'gauge',detail: {formatter: '{value}',color: '#fff'},data: [{ value: 2500, name: '总次数' }],axisLabel: {color: '#fff'},axisLine: {lineStyle: {color: [[0.2, '#FF69B4'], [0.8, '#FF1493'], [1, '#DB7093']],width: 12}},pointer: {width: 5},axisTick: {length: 10,lineStyle: {color: 'auto'}},splitLine: {length: 15,lineStyle: {color: 'auto'}}}]};gaugeChart.setOption(option);}}
};
</script><style lang="scss">
$theme_color: #FF69B4;.dashboard-container {min-height: 100vh;width: 100%;background-image: url('../../assets/images/6.jpg'); /* 使用占位图片,你可以替换为实际图片 */background-size: cover;background-position: center;display: flex;justify-content: center;align-items: center;.chart-container {background-color: rgba(0, 0, 0, 0.7); /* 半透明背景 */border-radius: 20px;box-shadow: 0 0 40px rgba(0, 0, 0, 0.5);width: 80%;max-width: 1200px;padding: 40px;color: #fff;.chart-header {text-align: center;margin-bottom: 30px;h2 {color: $theme_color;font-weight: bold;}}.charts {display: flex;flex-wrap: wrap;justify-content: space-between;.chart {width: 48%;height: 400px;margin-bottom: 20px;}}}
}
</style>

        4.0 教室管理功能

        上传图片使用了第三方接口:x-File-Storage 框架。

相关源码:

java">@RestController
@RequestMapping("/manage/Classrooms")
public class ClassroomsController extends BaseController
{@Autowiredprivate IClassroomsService classroomsService;/*** 查询教室信息列表*/@PreAuthorize("@ss.hasPermi('manage:Classrooms:list')")@GetMapping("/list")public TableDataInfo list(Classrooms classrooms){startPage();List<Classrooms> list = classroomsService.selectClassroomsList(classrooms);return getDataTable(list);}/*** 导出教室信息列表*/@PreAuthorize("@ss.hasPermi('manage:Classrooms:export')")@Log(title = "教室信息", businessType = BusinessType.EXPORT)@PostMapping("/export")public void export(HttpServletResponse response, Classrooms classrooms){List<Classrooms> list = classroomsService.selectClassroomsList(classrooms);ExcelUtil<Classrooms> util = new ExcelUtil<Classrooms>(Classrooms.class);util.exportExcel(response, list, "教室信息数据");}/*** 获取教室信息详细信息*/@PreAuthorize("@ss.hasPermi('manage:Classrooms:query')")@GetMapping(value = "/{classroomId}")public AjaxResult getInfo(@PathVariable("classroomId") Long classroomId){return success(classroomsService.selectClassroomsByClassroomId(classroomId));}/*** 新增教室信息*/@PreAuthorize("@ss.hasPermi('manage:Classrooms:add')")@Log(title = "教室信息", businessType = BusinessType.INSERT)@PostMappingpublic AjaxResult add(@RequestBody Classrooms classrooms){return toAjax(classroomsService.insertClassrooms(classrooms));}/*** 修改教室信息*/@PreAuthorize("@ss.hasPermi('manage:Classrooms:edit')")@Log(title = "教室信息", businessType = BusinessType.UPDATE)@PutMappingpublic AjaxResult edit(@RequestBody Classrooms classrooms){return toAjax(classroomsService.updateClassrooms(classrooms));}/*** 删除教室信息*/@PreAuthorize("@ss.hasPermi('manage:Classrooms:remove')")@Log(title = "教室信息", businessType = BusinessType.DELETE)@DeleteMapping("/{classroomIds}")public AjaxResult remove(@PathVariable Long[] classroomIds){return toAjax(classroomsService.deleteClassroomsByClassroomIds(classroomIds));}
}

        5.0 教师管理功能

相关源码:

java">@RestController
@RequestMapping("/manage/Teachers")
public class TeachersController extends BaseController
{@Autowiredprivate ITeachersService teachersService;/*** 查询教师信息列表*/@PreAuthorize("@ss.hasPermi('manage:Teachers:list')")@GetMapping("/list")public TableDataInfo list(Teachers teachers){startPage();List<Teachers> list = teachersService.selectTeachersList(teachers);return getDataTable(list);}/*** 导出教师信息列表*/@PreAuthorize("@ss.hasPermi('manage:Teachers:export')")@Log(title = "教师信息", businessType = BusinessType.EXPORT)@PostMapping("/export")public void export(HttpServletResponse response, Teachers teachers){List<Teachers> list = teachersService.selectTeachersList(teachers);ExcelUtil<Teachers> util = new ExcelUtil<Teachers>(Teachers.class);util.exportExcel(response, list, "教师信息数据");}/*** 获取教师信息详细信息*/@PreAuthorize("@ss.hasPermi('manage:Teachers:query')")@GetMapping(value = "/{teacherId}")public AjaxResult getInfo(@PathVariable("teacherId") Long teacherId){return success(teachersService.selectTeachersByTeacherId(teacherId));}/*** 新增教师信息*/@PreAuthorize("@ss.hasPermi('manage:Teachers:add')")@Log(title = "教师信息", businessType = BusinessType.INSERT)@PostMappingpublic AjaxResult add(@RequestBody Teachers teachers){return toAjax(teachersService.insertTeachers(teachers));}/*** 修改教师信息*/@PreAuthorize("@ss.hasPermi('manage:Teachers:edit')")@Log(title = "教师信息", businessType = BusinessType.UPDATE)@PutMappingpublic AjaxResult edit(@RequestBody Teachers teachers){return toAjax(teachersService.updateTeachers(teachers));}/*** 删除教师信息*/@PreAuthorize("@ss.hasPermi('manage:Teachers:remove')")@Log(title = "教师信息", businessType = BusinessType.DELETE)@DeleteMapping("/{teacherIds}")public AjaxResult remove(@PathVariable Long[] teacherIds){return toAjax(teachersService.deleteTeachersByTeacherIds(teacherIds));}
}

        6.0 课程管理功能

相关源码:

java">@RestController
@RequestMapping("/manage/Courses")
public class CoursesController extends BaseController
{@Autowiredprivate ICoursesService coursesService;/*** 查询课程信息列表*/@PreAuthorize("@ss.hasPermi('manage:Courses:list')")@GetMapping("/list")public TableDataInfo list(Courses courses){startPage();List<Courses> list = coursesService.selectCoursesList(courses);return getDataTable(list);}/*** 导出课程信息列表*/@PreAuthorize("@ss.hasPermi('manage:Courses:export')")@Log(title = "课程信息", businessType = BusinessType.EXPORT)@PostMapping("/export")public void export(HttpServletResponse response, Courses courses){List<Courses> list = coursesService.selectCoursesList(courses);ExcelUtil<Courses> util = new ExcelUtil<Courses>(Courses.class);util.exportExcel(response, list, "课程信息数据");}/*** 获取课程信息详细信息*/@PreAuthorize("@ss.hasPermi('manage:Courses:query')")@GetMapping(value = "/{courseId}")public AjaxResult getInfo(@PathVariable("courseId") Long courseId){return success(coursesService.selectCoursesByCourseId(courseId));}/*** 新增课程信息*/@PreAuthorize("@ss.hasPermi('manage:Courses:add')")@Log(title = "课程信息", businessType = BusinessType.INSERT)@PostMappingpublic AjaxResult add(@RequestBody Courses courses){return toAjax(coursesService.insertCourses(courses));}/*** 修改课程信息*/@PreAuthorize("@ss.hasPermi('manage:Courses:edit')")@Log(title = "课程信息", businessType = BusinessType.UPDATE)@PutMappingpublic AjaxResult edit(@RequestBody Courses courses){return toAjax(coursesService.updateCourses(courses));}/*** 删除课程信息*/@PreAuthorize("@ss.hasPermi('manage:Courses:remove')")@Log(title = "课程信息", businessType = BusinessType.DELETE)@DeleteMapping("/{courseIds}")public AjaxResult remove(@PathVariable Long[] courseIds){return toAjax(coursesService.deleteCoursesByCourseIds(courseIds));}
}

        7.0 设施管理功能

相关源码:

java">@RestController
@RequestMapping("/manage/Facilities")
public class FacilitiesController extends BaseController
{@Autowiredprivate IFacilitiesService facilitiesService;/*** 查询教室设施列表*/@PreAuthorize("@ss.hasPermi('manage:Facilities:list')")@GetMapping("/list")public TableDataInfo list(Facilities facilities){startPage();List<Facilities> list = facilitiesService.selectFacilitiesList(facilities);return getDataTable(list);}/*** 导出教室设施列表*/@PreAuthorize("@ss.hasPermi('manage:Facilities:export')")@Log(title = "教室设施", businessType = BusinessType.EXPORT)@PostMapping("/export")public void export(HttpServletResponse response, Facilities facilities){List<Facilities> list = facilitiesService.selectFacilitiesList(facilities);ExcelUtil<Facilities> util = new ExcelUtil<Facilities>(Facilities.class);util.exportExcel(response, list, "教室设施数据");}/*** 获取教室设施详细信息*/@PreAuthorize("@ss.hasPermi('manage:Facilities:query')")@GetMapping(value = "/{facilityId}")public AjaxResult getInfo(@PathVariable("facilityId") Long facilityId){return success(facilitiesService.selectFacilitiesByFacilityId(facilityId));}/*** 新增教室设施*/@PreAuthorize("@ss.hasPermi('manage:Facilities:add')")@Log(title = "教室设施", businessType = BusinessType.INSERT)@PostMappingpublic AjaxResult add(@RequestBody Facilities facilities){return toAjax(facilitiesService.insertFacilities(facilities));}/*** 修改教室设施*/@PreAuthorize("@ss.hasPermi('manage:Facilities:edit')")@Log(title = "教室设施", businessType = BusinessType.UPDATE)@PutMappingpublic AjaxResult edit(@RequestBody Facilities facilities){return toAjax(facilitiesService.updateFacilities(facilities));}/*** 删除教室设施*/@PreAuthorize("@ss.hasPermi('manage:Facilities:remove')")@Log(title = "教室设施", businessType = BusinessType.DELETE)@DeleteMapping("/{facilityIds}")public AjaxResult remove(@PathVariable Long[] facilityIds){return toAjax(facilitiesService.deleteFacilitiesByFacilityIds(facilityIds));}
}

        8.0 教师与设施信息功能

相关源码:

java">@RestController
@RequestMapping("/manage/ClassroomFacilities")
public class ClassroomFacilitiesController extends BaseController
{@Autowiredprivate IClassroomFacilitiesService classroomFacilitiesService;/*** 查询教室与设施的多对多关系列表*/@PreAuthorize("@ss.hasPermi('manage:ClassroomFacilities:list')")@GetMapping("/list")public TableDataInfo list(ClassroomFacilities classroomFacilities){startPage();List<ClassroomFacilities> list = classroomFacilitiesService.selectClassroomFacilitiesList(classroomFacilities);return getDataTable(list);}/*** 导出教室与设施的多对多关系列表*/@PreAuthorize("@ss.hasPermi('manage:ClassroomFacilities:export')")@Log(title = "教室与设施的多对多关系", businessType = BusinessType.EXPORT)@PostMapping("/export")public void export(HttpServletResponse response, ClassroomFacilities classroomFacilities){List<ClassroomFacilities> list = classroomFacilitiesService.selectClassroomFacilitiesList(classroomFacilities);ExcelUtil<ClassroomFacilities> util = new ExcelUtil<ClassroomFacilities>(ClassroomFacilities.class);util.exportExcel(response, list, "教室与设施的多对多关系数据");}/*** 获取教室与设施的多对多关系详细信息*/@PreAuthorize("@ss.hasPermi('manage:ClassroomFacilities:query')")@GetMapping(value = "/{classroomFacilitiesId}")public AjaxResult getInfo(@PathVariable("classroomFacilitiesId") Long classroomFacilitiesId){return success(classroomFacilitiesService.selectClassroomFacilitiesByClassroomFacilitiesId(classroomFacilitiesId));}/*** 新增教室与设施的多对多关系*/@PreAuthorize("@ss.hasPermi('manage:ClassroomFacilities:add')")@Log(title = "教室与设施的多对多关系", businessType = BusinessType.INSERT)@PostMappingpublic AjaxResult add(@RequestBody ClassroomFacilities classroomFacilities){return toAjax(classroomFacilitiesService.insertClassroomFacilities(classroomFacilities));}/*** 修改教室与设施的多对多关系*/@PreAuthorize("@ss.hasPermi('manage:ClassroomFacilities:edit')")@Log(title = "教室与设施的多对多关系", businessType = BusinessType.UPDATE)@PutMappingpublic AjaxResult edit(@RequestBody ClassroomFacilities classroomFacilities){return toAjax(classroomFacilitiesService.updateClassroomFacilities(classroomFacilities));}/*** 删除教室与设施的多对多关系*/@PreAuthorize("@ss.hasPermi('manage:ClassroomFacilities:remove')")@Log(title = "教室与设施的多对多关系", businessType = BusinessType.DELETE)@DeleteMapping("/{classroomFacilitiesIds}")public AjaxResult remove(@PathVariable Long[] classroomFacilitiesIds){return toAjax(classroomFacilitiesService.deleteClassroomFacilitiesByClassroomFacilitiesIds(classroomFacilitiesIds));}
}

        9.0 课程安排功能

相关源码:

java">@RestController
@RequestMapping("/manage/Schedules")
public class SchedulesController extends BaseController
{@Autowiredprivate ISchedulesService schedulesService;/*** 查询课程安排列表*/@PreAuthorize("@ss.hasPermi('manage:Schedules:list')")@GetMapping("/list")public TableDataInfo list(Schedules schedules){startPage();List<Schedules> list = schedulesService.selectSchedulesList(schedules);return getDataTable(list);}/*** 导出课程安排列表*/@PreAuthorize("@ss.hasPermi('manage:Schedules:export')")@Log(title = "课程安排", businessType = BusinessType.EXPORT)@PostMapping("/export")public void export(HttpServletResponse response, Schedules schedules){List<Schedules> list = schedulesService.selectSchedulesList(schedules);ExcelUtil<Schedules> util = new ExcelUtil<Schedules>(Schedules.class);util.exportExcel(response, list, "课程安排数据");}/*** 获取课程安排详细信息*/@PreAuthorize("@ss.hasPermi('manage:Schedules:query')")@GetMapping(value = "/{scheduleId}")public AjaxResult getInfo(@PathVariable("scheduleId") Long scheduleId){return success(schedulesService.selectSchedulesByScheduleId(scheduleId));}/*** 新增课程安排*/@PreAuthorize("@ss.hasPermi('manage:Schedules:add')")@Log(title = "课程安排", businessType = BusinessType.INSERT)@PostMappingpublic AjaxResult add(@RequestBody Schedules schedules){return toAjax(schedulesService.insertSchedules(schedules));}/*** 修改课程安排*/@PreAuthorize("@ss.hasPermi('manage:Schedules:edit')")@Log(title = "课程安排", businessType = BusinessType.UPDATE)@PutMappingpublic AjaxResult edit(@RequestBody Schedules schedules){return toAjax(schedulesService.updateSchedules(schedules));}/*** 删除课程安排*/@PreAuthorize("@ss.hasPermi('manage:Schedules:remove')")@Log(title = "课程安排", businessType = BusinessType.DELETE)@DeleteMapping("/{scheduleIds}")public AjaxResult remove(@PathVariable Long[] scheduleIds){return toAjax(schedulesService.deleteSchedulesByScheduleIds(scheduleIds));}
}

        10.0 教室使用记录功能

        11.0 SQL 数据库设计

sql">-- 创建教室表 (Classrooms)
CREATE TABLE Classrooms (classroom_id INT AUTO_INCREMENT primary key COMMENT '教室唯一标识',building_name VARCHAR(100) NOT NULL COMMENT '所在建筑物名称',img VARCHAR(100) NOT NULL COMMENT '图片',room_number VARCHAR(20) NOT NULL COMMENT '房间号',capacity INT NOT NULL COMMENT '教室容量,即最大容纳人数',status INT NOT NULL COMMENT '教室当前状态:1.可用、2.维护中'
) COMMENT='教室信息表';-- 创建教师表 (Teachers)
CREATE TABLE Teachers (teacher_id INT AUTO_INCREMENT primary key COMMENT '教师唯一标识',img VARCHAR(100) NOT NULL COMMENT '图片',name VARCHAR(100) NOT NULL COMMENT '教师姓名',degree VARCHAR(100) NOT NULL COMMENT '学历',specialty VARCHAR(30) COMMENT '专业',honor VARCHAR(30) COMMENT '荣誉',email VARCHAR(100) COMMENT '教师的电子邮件地址'
) COMMENT='教师信息表';-- 创建课程表 (Courses)
CREATE TABLE Courses (course_id INT AUTO_INCREMENT primary key COMMENT '课程唯一标识',course_name VARCHAR(100) NOT NULL COMMENT '课程名称',credits INT NOT NULL COMMENT '课程学分',semester VARCHAR(20) COMMENT '开设学期',status INT NOT NULL COMMENT '课程状态,1.开设中、2.已结束',description TEXT COMMENT '课程描述'
) COMMENT='课程信息表';INSERT INTO Courses (course_name, credits, semester, status, description) VALUES
('分子生物学', 3, '2024秋季', 1, '本课程探讨生物分子的结构与功能,包括DNA、RNA及蛋白质的生物合成过程。'),
('数据结构与算法', 4, '2024春季', 1, '深入理解数据结构与算法的基本概念及其在计算机科学中的应用。'),
('医学影像学', 3, '2024秋季', 1, '学习医学影像的基本原理及其在临床中的应用,包括CT、MRI等技术。'),
('国际经济学', 3, '2024春季', 1, '研究国际经济理论及全球市场动态,分析贸易与投资的关键领域。'),
('纳米材料科学', 4, '2024秋季', 1, '探讨纳米材料的特性、合成方法及其在各个领域的应用。');-- 创建设施表 (Facilities)
CREATE TABLE Facilities (facility_id INT AUTO_INCREMENT primary key COMMENT '设施唯一标识',facility_name VARCHAR(100) NOT NULL COMMENT '设施名称',facility_type VARCHAR(50) COMMENT '设施类型',description TEXT COMMENT '设施描述'
) COMMENT='教室设施表';INSERT INTO Facilities (facility_name, facility_type, description) VALUES
('计算机实验室', '实验室', '配备先进计算机和软件的实验室,用于计算机科学相关课程的教学和实验。'),
('多功能教室', '教室', '可用于讲座、研讨会和小组活动的多功能教室,配备音响和投影设备。'),
('图书馆', '学习空间', '提供学习和研究资源的图书馆,内部有自习区和阅览区域。'),
('会议室', '会议室', '适用于小型会议和讨论的会议室,配备视频会议设备。'),
('体育馆', '体育设施', '提供篮球、排球等各种体育活动的设施,适合体育课程和课外活动。');-- 创建教室设施关联表 (ClassroomFacilities)
CREATE TABLE ClassroomFacilities (classroom_facilities_id INT AUTO_INCREMENT primary key COMMENT '教室设施关联唯一标识',classroom_id INT NOT NULL COMMENT '教室ID,逻辑上关联到Classrooms表的ClassroomID',facility_id INT NOT NULL COMMENT '设施ID,逻辑上关联到Facilities表的FacilityID'
) COMMENT='教室与设施的多对多关系表';-- 创建授课安排表 (Schedules)
CREATE TABLE Schedules (schedule_id INT AUTO_INCREMENT primary key COMMENT '排课唯一标识',classroom_id INT NOT NULL COMMENT '教室ID,逻辑上关联到Classrooms表的ClassroomID',course_id INT NOT NULL COMMENT '课程ID,逻辑上关联到Courses表的CourseID',teacher_id INT NOT NULL COMMENT '教师ID,逻辑上关联到Teachers表的TeacherID',weekday INT NOT NULL COMMENT '上课星期几,1表示星期一,2表示星期二,...,5表示星期五',sections INT NOT NULL COMMENT '上课节次,1表示第一节课,2表示第二节课等',in_week INT NOT NULL COMMENT '第几周',schedule_type INT NOT NULL COMMENT '课程安排状态,1.进行中,2.已结束'
) COMMENT='课程安排表';-- 创建使用记录表 (UsageRecords)
CREATE TABLE Usage_Records (record_id INT AUTO_INCREMENT primary key COMMENT '使用记录唯一标识',classroom_id INT NOT NULL COMMENT '教室',teacher_id INT NOT NULL COMMENT '预订人',usage_date DATE NOT NULL COMMENT '使用日期',Purpose TEXT COMMENT '使用目的描述'
) COMMENT='教室使用记录表';

        若需要项目完整源码,可以在 CSDN 私信给我,我每天都有查看消息的,感谢大家支持,希

望可以帮助到大家!


http://www.ppmy.cn/ops/143046.html

相关文章

Linux应用开发————mysql数据库表

mysql数据库表操作 查看表的结构 mysql> desc / describe 表名; 或者&#xff1a; mysql> show create table 表名; 常见数据库引擎&#xff1a; innodb, myISAM... 删除表 mysql> drop tabl…

UOS AI 2.0 发布,开启原生 AIOS 时代!

PC 终端作为最主流最高频的生产力工具&#xff0c;其操作系统承载着用户的大量场景、数据以及技能。随着生成式人工智能浪潮的来临&#xff0c;新的技术架构、交互模式和新的生态&#xff0c;都需要操作系统承担起更多责任&#xff0c;即需要新一代的操作系统产品 ——AIOS&…

纯CSS实现文本或表格特效(连续滚动与首尾相连)

纯CSS实现文本连续向左滚动首尾相连 1.效果图&#xff1a; 2.实现代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, init…

中阳科技:量化交易模型的探索与发展前景

在数字化浪潮的推动下&#xff0c;金融市场迎来了一场技术革命。量化交易作为融合金融与科技的产物&#xff0c;正在全球范围内深刻改变交易方式和市场格局。中阳科技通过不断优化量化模型和算法技术&#xff0c;正在引领智能化交易的新方向。 量化交易的核心概念 量化交易是…

关于linux的ld.so.conf.d

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

linux网络编程 | c | 多进程并发服务器实现

多进程并发服务器 基于该视频完成 11-多进程并发服务器思路分析_哔哩哔哩_bilibili 通过的是非阻塞忙轮询的方式实现的 和阻塞等待的区别就是&#xff0c;阻塞是真的阻塞了&#xff0c;而这个方式是一直在问有没有请求有没有请求 文章目录 多进程并发服务器1.核心思路&…

Git Push冲突怎么办

发生情况 在团队开发时&#xff0c;都没有pull&#xff0c;直接在同一个文件进行修改并push&#xff0c;后push的那个人就会出现冲突的情况 解决方法 在冲突后&#xff0c;首先merge&#xff0c;然后可以选择Accpet theirs, Accept yours, Merge Accpet theirs 去除自己的代…

mysql,数据库和表的核心语句

一.库操作1.创建库create database if not exists 库名 default 字符集 default 校对规则2.删除库drop database if exists 库名3.修改库的,字符集,校对规则alter databse 库名 default 字符集 default 校对规则4.查看当前使用的库seclect databse();5.查看库show databases;…