数据库设计任务
:
(1) 实现学生信息、课程信息、教师信息管理;
(2) 实现学生选课、退课功能;
(3) 实现教师及任课信息管理;
(4) 实现教师开课、录入成绩功能
(5) 实现管理员创建和删除学生和教师用户;
(6) 实现选课登记,要保证学生不能选修重复的课程(实用触发器实现);
(7) 创建存储过程统计各学生指定学期选修课程的总学分数;
(8) 创建视图查询2006-2007学年,没有被选修的课程;
(9) 创建存储过程统计各教师任课的学生人数;
(10) 具有数据备份和数据恢复功能。*
功能:
1.用户的需求:
学生:查询个人信息、修改密码、查询课程、选课、查询已选课程、查学期学分、查成绩
教师:查询个人信息、修改密码、开设课程、录入学生成绩、查询自己的课程、 加入或退出别的课程、取消开设的课程
管理员:添加教师用户和学生用户、删除教师和学生、查询教师和学生、选课通知
2.不允许重复的学号和工号;
3.学生完善个人信息后所在班级人数自动加减;
4.学生选课后该课程选课人数自动加减;
5.课程达到人数上限后,学生无法选此课;
6.选课人数未达到要求,教师可选择取消此门课
7.创建用户后自动添加到登陆表里
实体之间的联系
根据需求分析,归结出合适的联系:
1、一个学生能够选多门课,一门课可以被多个学生选;
2、一个老师能教多门课,一门课可以被多个老师教授;
3、一个学生属于一个班级,一个班级可以有多名学生
局部E-R图
(1)学生课程联系E-R图
(2)学生班级联系E-R图
(3)教师课程联系E-R图
总E-R图
数据字典
用户界面
---------2019.9.30更新-----------------------------
关于解决时间地点冲突的算法
这是我后来在写web端时的一套实现方法,这里我就不详细说明了,各位可以参考参考
其核心思想就是设置一套有规则地编码,根据这个编码分部分判断
public boolean judgeExist(String Sno, String CourseCode, String CourseCodeSC) {
String halfTerm1 = CourseCode.substring(0, 13);
String halfTerm2 = CourseCode.substring(13, 26);
String halfTermSC1 = CourseCodeSC.substring(0, 13);
String halfTermSC2 = CourseCodeSC.substring(13, 26);
if (judgeTerm(halfTerm1, halfTermSC1) || judgeTerm(halfTerm2, halfTermSC2)) {
System.out.println(halfTerm1 + "," + halfTerm2 + "," + halfTermSC1 + ","