【JAVA+oracle】数据库综合型实验----教务管理系统

本文详述了一个使用Java Swing构建的教务管理系统,系统包括学生、教师、课室和课程管理,与Oracle数据库进行连接。通过实验介绍了数据库的设计,如关系模式、实体联系、完整性条件和规范化,并展示了数据库操作的关键代码,如连接数据库和增删查改操作。
摘要由CSDN通过智能技术生成

前言

这次实验用到了很久没写的javaswing,其中各种组件的使用可谓是花了一番工夫复习;其中遇到最大的问题是如何将java和oracle进行连接,这个问题搞了我一个晚上,一开始用的是eclipse,代码是没问题的,死活连不上,第二天把代码搬到IDEA那边后再鼓捣鼓捣终于可以了。这次实验可谓是费了一番功夫,如有错误,欢迎指出;如果本文对你有帮助,请点个赞吧👍。

实验概述

1.系统概述

本数据库系统为教务管理系统,用于管理学生、教师基本信息,以及管理教学楼栋和课程的信息。
可以对相关信息进行数据库的增删查改操作,提供可视化界面,并具备错误提示功能,在管理员账户密码不正确,或者进行数据库的增删改时不符合数据库完整性约束或不符合范式时会弹出错误提示。
本系统一共有四个实体,分别为学生、教师、上课地点以及课程。一共生成有四个关系模式,分别为学生Student、教师Teacher、上课地点Place以及课程Course。

2.关系模式

学生(学号,姓名,性别,年龄,班级)
教师(教师号,教师名,性别,年龄,工龄)
上课地点(地点编号,楼栋,教室号)
课表(教师号,学号,课程名,地点编号,上课时间,节次)

3.关系模式属性

学生关系模式属性有:
学号VARCHAR(10)、姓名 VARCHAR(8)、性别VARCHAR(2)、年龄SMALLINT、班级VARCHAR(10)。
教师关系模式属性有:
教师号VARCHAR(10)、教师名VARCHAR(8)、性别VARCHAR(2),年龄 NUMBER,工龄NUMBER。
上课地点关系模式属性有:
地点编号VARCHAR(10)、楼栋VARCHAR(12)、教室号 VARCHAR(4)。
课表关系模式属性有:
教师号VARCHAR(10)、学号VARCHAR(10)、课程名VARCHAR(16)、地点编号VARCHAR(10)、上课时间(星期)VARCHAR(6)、节次 VARCHAR(10)。

4.实体间的联系

学生实体和教师实体之间是多对多的关系;
学生实体和上课地点实体之间是多对多的关系;
教师实体和上课地点实体之间是多对多的关系;
学生实体和课程实体之间是多对多的关系;
教师实体和课程实体之间是多对多的关系;

5.完整性条件:

1.学生关系模式
主码为学号PRIMARY KEY,姓名不能为空NOT NULL,性别只允许取‘男’或‘女’CHECK IN(SEX IN (‘男’,’女’))。
2.教师关系模式
主码为教师号PRIMARY KEY,教师名不能为空NOT NULL,性别只允许取‘男’或‘女’CHECK IN(SEX IN (‘男’,’女’))。
3.上课地点关系模式
主码为地点编号PRIMARY KEY,楼栋和教室号不能为空NOT NULL。
4.课表关系模式
主码为教师号和学号PRIMARY KEY,地点编号参照引用Place的主码地点编号 FOREIGN KEY(地点编号) REFERENCES Place(地点编号),上课时间在星期一到星期五之间 CHECK上课时间 IN(“星期一”,“星期二”,“星期三”,“星期四”,“星期五”,)

6.相关描述

一个学生只能归属于某个班级,不能同时归属于多个班级,学生的姓名允许重复,学生的唯一标识为学号。
学生的某一门课程仅由一位教师教学,一个班里的学生的某门课程对应一位老师。上课时间在星期一到星期五之间。
每个楼栋有多间教室。不同楼栋的不同教室地点编号不同。
每个教师有一个唯一的教师号标识,允许教师名重复。每个教师每个星期给多个班级上课,每个教师可以教多门课程,但对于同一班级只教一门课程。

创建相对应的触发器处理相应的数据变动。

7.规范化

1.学生关系模式:
学号为主码,学号–>姓名,学号–>性别,学号–>年龄,学号–>班级。每一个非主属性不存在部分函数依赖和传递依赖,所有的决定因素都包含码,因此学生关系模式属于BCNF。
2.教师关系模式:
教师号为主码,教师号–>教师名,教师号–>性别。每一个非主属性不存在部分函数依赖和传递依赖,所有的决定因素都包含码,因此教师关系模式属于BCNF。
3.上课地点关系模式:
地点编号为主码,地点编号–>楼栋,地点编号–>教室号。每一个非主属性不存在部分函数依赖和传递依赖,所有的决定因素都包含码,因此上课地点关系模式属于BCNF。
4. 课表关系模式:
教师号+学号为主码,教师号+学号–>课程名,教师号+学号–>地点编号,教师号+学号–>上课时间,教师号+学号–>节次,每一个非主属性不存在部分函数依赖和传递依赖,所有的决定因素都包含码,因此课表关系模式属于BCNF。

二.实验构思及数据库对应的图

1.业务流程图

在这里插入图片描述

2.数据流图

在这里插入图片描述

3.用例图

在这里插入图片描述

4.E-R图

在这里插入图片描述

三.实验流程

(1).构建数据库并创建初始数据

1.创建用户manager并授权
create user manager identified by 123456;
grant connect,resource,dba to manager;

2.使用用户manager登录数据库

3.创建学生表STUDENT

CREATE TABLE STUDENT(
    学号 VARCHAR(10) PRIMARY KEY,
    姓名 VARCHAR(10) NOT NULL,
    性别 VARCHAR(3) CHECK (性别 IN('男','女')),
    年龄 SMALLINT,
    班级 VARCHAR(10)
);

4.创建教师表TEACHER

CREATE TABLE TEACHER(
    教师号 VARCHAR(10) PRIMARY KEY,
    教师名 VARCHAR(10) NOT NULL,
    性别 VARCHAR(3) CHECK (性别 IN('男','女')),
    年龄 NUMBER,
    工龄 NUMBER,
    
);

5.创建课室表PLACE

CREATE TABLE PLACE(
    地点编号 VARCHAR(10) PRIMARY KEY,
    楼栋 VARCHAR(12) NOT NULL,
    教室号 VARCHAR(4) NOT NULL
)

6.创建课程表COURSE

CREATE TABLE COURSE(
    教师号 VARCHAR(10) ,
    学号 VARCHAR(10) ,
    课程名 VARCHAR(16),
    地点编号 VARCHAR(10),
    上课时间 VARCHAR(10) CHECK (上课时间 IN('星期一','星期二','星期三','星期四','星期五')),
    节次 VARCHAR(10),
    FOREIGN KEY(教师号) REFERENCES TEACHER(教师号),
    FOREIGN KEY(学号) REFERENCES STUDENT(学号),
    FOREIGN KEY(地点编号) REFERENCES Place(地点编号),
    PRIMARY KEY (教师号,学号)
);

7.向学生表STUDENT插入数据

INSERT INTO STUDENT(学号,姓名,性别,年龄,班级) VALUES('1906300087','张三','男',19,'软件192');
INSERT INTO STUDENT(学号,姓名,性别,年龄,班级) VALUES('1906300001','周南','男',20,'网络194');
INSERT INTO STUDENT(学号,姓名,性别,年龄,班级) VALUES('1906300002','何洛','女',19,'计科191');
INSERT INTO STUDENT(学号,姓名,性别,年龄,班级) VALUES('1906300028','焉栩','女',18,'软件191');
INSERT INTO STUDENT(学号,姓名,性别,年龄,班级) VALUES('1906300034','夏光','男',20,'计科192');
INSERT INTO STUDENT(学号,姓名,性别,年龄,班级) VALUES('1906300015','姚琛','男',21,'软件191');
INSERT INTO STUDENT(学号,姓名
评论 60
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值