文章目录

  • 零.前言
  • 一.实验前准备
  • 1.概述
  • 2.关系模式
  • 3.关系模式属性
  • 4.实体间的联系
  • 5.完整性条件:
  • 6.相关描述
  • 7.规范化
  • 8.流程
  • 二、SQL数据库编程工作
  • 1.创建用户cc并授权
  • 2.使用用户RouTineD 登录数据库
  • 3.创建表学生STUDENT
  • 4.创建表教师TEACHER
  • 5.创建表地点PLACE
  • 6.创建表课表COURSE
  • 7.向学生表STUDENT插入数据
  • 8.创建序列TEACHER_SEQUENCE
  • 9.向教师表TEACHER插入数据
  • 10.向地点表PLACE中插入数据
  • 11.向课表COURSE中插入数据
  • 12.创建触发器TEACHER_TRIGGER
  • 13.创建触发器STUDENT_TRIGGER
  • 14.创建触发器PLACE_TRIGGER
  • 三、JAVA可视化编程工作
  • 1.创建学生课表数据库的登录界面
  • 2.管理调用界面
  • 3.管理界面
  • (1)学生管理
  • ① 查询
  • ② 增加
  • ③ 修改
  • ④ 删除
  • (2)教师管理
  • ① 查询
  • ② 增加
  • ③ 修改
  • ④ 删除
  • (4)上课地点
  • ① 查询
  • ② 增加
  • ③ 修改
  • ④ 删除
  • (4)课程表管理
  • ① 查询
  • ② 增加
  • ③ 修改
  • ④ 删除
  • 四、可视化界面一览
  • 1.登录界面
  • 2.管理系统界面
  • 3.学生管理界面
  • 4.教师管理界面
  • 5.上课地点界面
  • 6.课程表管理界面


零.前言

以下内容仅供参考,SQL代码均已给出,JAVA关键性代码均已给出,可以仿着写,但是不要抄袭。
如果这篇文章对您有用,请点个赞吧。

一.实验前准备

1.概述

本数据库为存储学生、教师的课表信息,以及教学楼层的管理信息。
一共有四个实体,分别为学生、教师、负责人以及上课地点。一共有一个联系,为课程内容联系。一共生成有四个关系模式,分别为学生Student、教师Teacher、课表Course以及上课地点Place。

2.关系模式

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

3.关系模式属性

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

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。

8.流程

选择面向对象语言JAVA,利用JDBC进行数据库编程,使用awt和swing框架进行可视化编程:
1.创建学生课表数据库的登录界面,界面中有两个输入框和一个登录按钮,输入框分别输入对应的账号和密码。

2.账号密码输入正确即可进入对应的管理界面,共有4个按钮,包括增删改查的基本操作,可处理四个关系模式。

3.点击管理系统里的四个按钮,即可对数据库中对应的关系模式进行增删改查,并显示数据。
(1)学生管理
①查询
②增加
③修改
④删除

(2)教师管理
①查询
②增加
③修改
④删除

(3)上课地点
①查询
②增加
③修改
④删除

(4)课程表管理
①查询
②增加
③修改
④删除

二、SQL数据库编程工作

1.创建用户cc并授权

create user RouTineD identified by 123456;
grant connect,resource,dba to RouTineD;

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

3.创建表学生STUDENT

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

分析:使用CREATE语句创建表STUDENT,主码为学号,性别使用约束条件,只能为男或女。

4.创建表教师TEACHER

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

分析:使用CREATE语句创建表TEACHER,主码为教师号,性别使用约束条件,只能为男或女。

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('1806223333','RouTineD','女',19,'智能181');
INSERT INTO STUDENT(学号,姓名,性别,年龄,班级) VALUES('1806200001','周震南','男',20,'网络184');
INSERT INTO STUDENT(学号,姓名,性别,年龄,班级) VALUES('1806100002','何洛洛','女',19,'计科181');
INSERT INTO STUDENT(学号,姓名,性别,年龄,班级) VALUES('1806300003','焉栩嘉','女',18,'软件181');
INSERT INTO STUDENT(学号,姓名,性别,年龄,班级) VALUES('1806100004','夏之光','男',20,'计科182');
INSERT INTO STUDENT(学号,姓名,性别,年龄,班级) VALUES('1806300005','姚琛','男',21,'软件181');
INSERT INTO STUDENT(学号,姓名,性别,年龄,班级) VALUES('1806300006','翟潇闻','男',22,'软件181');
INSERT INTO STUDENT(学号,姓名,性别,年龄,班级) VALUES('1806300007','张颜齐','女',20,'软件182');
INSERT INTO STUDENT(学号,姓名,性别,年龄,班级) VALUES('1806300008','刘也','女',21,'软件183');
INSERT INTO STUDENT(学号,姓名,性别,年龄,班级) VALUES('1806300009','任豪','男',21,'软件184');
INSERT INTO STUDENT(学号,姓名,性别,年龄,班级) VALUES('1806300010','赵磊','男',20,'软件184');
INSERT INTO STUDENT(学号,姓名,性别,年龄,班级) VALUES('1806100011','赵让','男',19,'计科181');

分析:插入数据使用INSERT INTO …VALUES()关键字

8.创建序列TEACHER_SEQUENCE

CREATE SEQUENCE TEACHER_SEQUENCE  MINVALUE 1 INCREMENT BY 1  START WITH 10001;

分析:创建序列使用CREATE SEQUENCE 关键字,INCREMENT BY 表示以1递增,START WITH 10001表示从10001开始。

9.向教师表TEACHER插入数据

INSERT INTO TEACHER(教师号,教师名,性别) VALUES(TEACHER_SEQUENCE.NEXTVAL,'杨柳','女');
INSERT INTO TEACHER(教师号,教师名,性别) VALUES(TEACHER_SEQUENCE.NEXTVAL,'杨朔','男');
INSERT INTO TEACHER(教师号,教师名,性别) VALUES(TEACHER_SEQUENCE.NEXTVAL,'高鹰','男');
INSERT INTO TEACHER(教师号,教师名,性别) VALUES(TEACHER_SEQUENCE.NEXTVAL,'苏申','男');
INSERT INTO TEACHER(教师号,教师名,性别) VALUES(TEACHER_SEQUENCE.NEXTVAL,'汤茂斌','男');
INSERT INTO TEACHER(教师号,教师名,性别) VALUES(TEACHER_SEQUENCE.NEXTVAL,'王建雄','男');
INSERT INTO TEACHER(教师号,教师名,性别) VALUES(TEACHER_SEQUENCE.NEXTVAL,'颜国风','男');
INSERT INTO TEACHER(教师号,教师名,性别) VALUES(TEACHER_SEQUENCE.NEXTVAL,'古鹏','男');
INSERT INTO TEACHER(教师号,教师名,性别) VALUES(TEACHER_SEQUENCE.NEXTVAL,'王显珉','男');
INSERT INTO TEACHER(教师号,教师名,性别) VALUES(TEACHER_SEQUENCE.NEXTVAL,'张俊荣','女');
INSERT INTO TEACHER(教师号,教师名,性别) VALUES(TEACHER_SEQUENCE.NEXTVAL,'张艳玲','女');

10.向地点表PLACE中插入数据

INSERT INTO PLACE(地点编号,楼栋,教室号) VALUES('LN204','理南','204');
INSERT INTO PLACE(地点编号,楼栋,教室号) VALUES('LN211','理南','211');
INSERT INTO PLACE(地点编号,楼栋,教室号) VALUES('WX305','文新','305');
INSERT INTO PLACE(地点编号,楼栋,教室号) VALUES('LN308','理南','308');
INSERT INTO PLACE(地点编号,楼栋,教室号) VALUES('WX619','文新','619');
INSERT INTO PLACE(地点编号,楼栋,教室号) VALUES('WX503','文新','503');
INSERT INTO PLACE(地点编号,楼栋,教室号) VALUES('LB304','理北','304');
INSERT INTO PLACE(地点编号,楼栋,教室号) VALUES('LB301','理北','301');
INSERT INTO PLACE(地点编号,楼栋,教室号) VALUES('WQ305','文清','305');
INSERT INTO PLACE(地点编号,楼栋,教室号) VALUES('WY308','文逸','308');
INSERT INTO PLACE(地点编号,楼栋,教室号) VALUES('DZ416','电子楼','416');
INSERT INTO PLACE(地点编号,楼栋,教室号) VALUES('WJ603','文俊','603');
INSERT INTO PLACE(地点编号,楼栋,教室号) VALUES('DZ418','电子楼','418');
INSERT INTO PLACE(地点编号,楼栋,教室号) VALUES('JSJ211','计算机楼','211');
INSERT INTO PLACE(地点编号,楼栋,教室号) VALUES('LX305','理学实验楼','305');
INSERT INTO PLACE(地点编号,楼栋,教室号) VALUES('LN408','理南','408');

分析:插入数据使用INSERT INTO …VALUES()关键字

11.向课表COURSE中插入数据

INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10005','1806100077','离散数学','LN204','星期一','1-2');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10008','1806300003','计算机组成','LN211','星期一','3-4');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10011','1806300005','操作系统','LN408','星期四','5-6');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10010','1806200001','线性代数','DZ416','星期二','1-2');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10004','1806100004','数据结构','LB304','星期四','9-11');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10002','1806300006','数据库','LN308','星期三','9-11');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10001','1806300007','数值分析','WX503','星期五','3-4');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10003','1806300008','操作系统','JSJ211','星期二','3-4');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10003','1806300009','操作系统','WJ603','星期一','5-6');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10009','1806300010','数据结构','WJ603','星期三','5-6');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10011','1806100011','操作系统','WQ305','星期三','7-8');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10005','1806200001','离散数学','LN204','星期一','1-2');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10005','1806100002','离散数学','LN204','星期一','1-2');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10011','1806300009','操作系统','LN408','星期四','5-6');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10004','1806100077','数据结构','LB304','星期四','9-11');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10002','1806200001','数据库','LN308','星期三','9-11');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10009','1806200001','数据结构','WJ603','星期三','5-6');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10011','1806100002','操作系统','WQ305','星期三','7-8');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10001','1806300003','数值分析','WX619','星期五','1-2');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10001','1806100004','数值分析','WY308','星期五','5-6');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10003','1806100004','汇编原理','LB304','星期二','1-2');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10006','1806300007','汇编原理','LB301','星期三','1-2');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10003','1806100077','计算机组成','LB304','星期一','7-8');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10007','1806100077','汇编原理','WJ603','星期二','5-6');
INSERT INTO COURSE(教师号,学号,课程名,地点编号,上课时间,节次) VALUES('10001','1806100077','数值分析','WX619','星期五','3-4');

分析:插入数据使用INSERT INTO …VALUES()关键字

12.创建触发器TEACHER_TRIGGER

当删除教师表TEACHER中的记录时,先删除课程表COURSE中对应的教师。因为Course表中的数据引用TEACHER表中的数据。

CREATE TRIGGER TEACHER_TRIGGER BEFORE DELETE ON TEACHER FOR EACH ROW
BEGIN 
    DELETE FROM COURSE WHERE 教师号=:OLD.教师号;
END;

分析:因为课程表COURSE中的属性教师号是引用了教师表TEACHER中的属性教师号,因此创建触发器可以保证删除教师表TEACHER中的数据前,先从课程表COURSE中删除对应的数据。

13.创建触发器STUDENT_TRIGGER

当删除学生表STUDENT中的记录时,先删除课程表COURSE中对应的学生。因为Course表中的数据引用STUDENT表中的数据。

CREATE TRIGGER STUDENT_TRIGGER BEFORE DELETE ON STUDENT FOR EACH ROW
BEGIN 
    DELETE FROM COURSE WHERE 学号=:OLD.学号;
END;

分析:因为课程表COURSE中的属性学号是引用了学生表STUDENT中的属性学号,因此创建触发器可以保证删除学生表STUDENT中的数据前,先从课程表COURSE中删除对应的数据。

14.创建触发器PLACE_TRIGGER

当删除地点表PLACE中的记录时,删除课程表COURSE中对应的地点和教室对应负责人表PM中对应的地点。因为Course表和PM表中的数据引用PLACE表中的数据。

CREATE TRIGGER PLACE_TRIGGER BEFORE DELETE ON PLACE FOR EACH ROW
BEGIN 
    DELETE FROM COURSE WHERE 地点编号=:OLD.地点编号;
     DELETE FROM PM WHERE 地点编号=:OLD.地点编号;
END;

分析:因为课程表COURSE中的属性地点编号是引用了地点表PLACE中的属性地点编号,因此创建触发器可以保证删除地点表PLACE中的数据前,先从课程表COURSE中删除对应的数据。

三、JAVA可视化编程工作

选择面向对象语言JAVA,利用JDBC进行数据库编程,使用awt和swing框架进行可视化编程:
JDBC关键代码如下:

public static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
public static final String USER = "RouTineD";
public static final String PASSWORD = "123456";

//1.加载驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");
//2. 获得数据库连接
Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);

分析
① url = "jdbc:oracle:thin:@localhost:1521:orcl"为创建的数据库,本机使用的数据库ID名为“orcl”,localhost为本地主机,1521为端口号。
② "oracle.jdbc.driver.OracleDriver"为JDBC驱动程序
③ uname = "RouTineD"为创建的用户名,在SQLDEVELOPER中创建并授权的用户
④ pwd = "123456"为用户RouTineD对应的密码,本机的数据库密码为“123456”
⑤ conn = DriverManager.getConnection()将java与数据库连接

1.创建学生课表数据库的登录界面

界面中有两个输入框和一个登录按钮,输入框分别输入对应的账号和密码。
部分代码如下:

//主界面设置
lb[0].setText("欢迎使用教学管理系统");
lb[1].setText("账号");
lb[2].setText("密码");
btn[0].setText("登录");
frame[0].setTitle("教学管理系统");
frame[0].setBounds(400, 300, 250, 185);
frame[0].setVisible(true);
frame[0].setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btn[0].addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
if(tf[0].getText().toString().equals("RouTineD")&&pws.getText().equals("123456"))
        {}
          else
         {
              JOptionPane msg=new JOptionPane();
              msg.setVisible(true);
              JOptionPane.showMessageDialog(msg, "密码错误!", "错误",JOptionPane.WARNING_MESSAGE);
         }
    }
});

当密码输入错误之后:

java 给数据库某字段设置为null java课设数据库_创建表

2.管理调用界面

账号密码输入正确即可进入对应的管理界面,共有4个按钮,包括增删改查的基本操作,可处理四个关系模式。点击管理系统里的四个按钮,即可对数据库中对应的关系模式进行增删改查,并显示数据。
部分代码如下:

//10.2 设计界面
btn[2].setText("学生管理");
btn[3].setText("教师管理");
btn[4].setText("上课地点");
btn[5].setText("课程表管理");
frame[1].setTitle("管理系统");
frame[1].setBounds(300, 300, 320, 140);
frame[1].setVisible(true);
frame[1].setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

分析:JButton为按钮对象,setText为设置文本函数,setBounds为绝对定位函数。管理员进入管理系统后可以对所有的数据库信息进行增删改查,具有最高权限。

3.管理界面

(1)学生管理

点击“学生管理”按钮进入学生管理界面

① 查询
Statement st = conn.createStatement();
    ResultSet rs = st.executeQuery(sql);   //获取数据
    listmodel.clear();                //清空
    while(rs.next())                  //逐条读取数据
    {  //学生五项参数
        String getNo= rs.getString("学号");
        String getClass= rs.getString("班级");
        String getSex= rs.getString("性别");
        String getAge= rs.getString("年龄");
        String getName= rs.getString("姓名");
        listmodel.addElement(getNo+"    "+getClass+"    "+getSex+"    "+getAge+"    "+getName);
    }
② 增加
String sql = "INSERT INTO STUDENT(学号,班级,性别,年龄,姓名) "+ "VALUES(?,?,?,?,?)";
PreparedStatement st = conn.prepareStatement(sql);
st.setString(1, tf[1].getText());
st.setString(2, tf[2].getText());
st.setString(3, tf[3].getText());
st.setInt(4, Integer.parseInt(tf[4].getText()));
st.setString(5, tf[5].getText());
st.executeUpdate();
listmodel.addElement(tf[1].getText()+"    "+tf[2].getText()+"    "+
tf[3].getText()+"    "+tf[4].getText()+"    "+tf[5].getText());
③ 修改
String sql = "update STUDENT set 学号=?,班级=?,性别=?,年龄=?,姓名=? where 姓名 = ?";
    PreparedStatement st = conn.prepareStatement(sql);
    st.setString(1, tf[1].getText());
    st.setString(2, tf[2].getText());
    st.setString(3, tf[3].getText());
    st.setInt(4, Integer.parseInt(tf[4].getText()));
    st.setString(5, tf[5].getText());
    st.setString(6, strs[4]);
    st.executeUpdate();
    listmodel.set(list.getSelectedIndex(),tf[1].getText() + "    " +tf[2].getText()+"    " +tf[3].getText() + "    " + tf[4].getText() + "    " +tf[5].getText());
④ 删除
String sql = "delete from STUDENT where 姓名 = ?";
    PreparedStatement st = conn.prepareStatement(sql);
    st.setString(1, strs[4]);
    st.executeUpdate();
    listmodel.remove(list.getSelectedIndex());

(2)教师管理

点击“教师管理”按钮进入教师管理界面

① 查询
String sql = new String("select *  from TEACHER");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);   //获取数据
while(rs.next())                  //逐条读取数据
{  //教师三项参数
    String getNo= rs.getString("教师号");
    String getSex= rs.getString("性别");
    String getName= rs.getString("教师名");
    listmodel.addElement(getNo+"    "+getSex+"    "+getName);
}
② 增加
String sql = "INSERT INTO TEACHER(教师号,性别,教师名) "
    + "VALUES(?,?,?)";
PreparedStatement st = conn.prepareStatement(sql);
st.setString(1, tf[1].getText());
st.setString(2, tf[2].getText());
st.setString(3, tf[3].getText());
st.executeUpdate();
listmodel.addElement(tf[1].getText()+"    "+tf[2].getText()+"    "+
    tf[3].getText());
③ 修改
String sql = "update TEACHER set 教师号=?,性别=?,教师名=? where 教师名 = ?";
    PreparedStatement st = conn.prepareStatement(sql);
    st.setString(1, tf[1].getText());
    st.setString(2, tf[2].getText());
    st.setString(3, tf[3].getText());
    st.setString(4, strs[2]);
    st.executeUpdate();
    listmodel.set(list.getSelectedIndex(),tf[1].getText() + "    " +tf[2].getText()+"    " +tf[3].getText());
④ 删除
String sql = "delete from TEACHER where 教师名 = ?";
PreparedStatement st = conn.prepareStatement(sql);
st.setString(1, strs[2]);
st.executeUpdate();
listmodel.remove(list.getSelectedIndex());

(4)上课地点

点击“上课地点”按钮进入上课地点界面

① 查询
String sql = new String("select *  from PLACE");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);   //获取数据
while(rs.next())                  //逐条读取数据
{  //楼栋三项参数
    String getNo= rs.getString("地点编号");
    String getFLoor= rs.getString("楼栋");
    String getNum= rs.getString("教室号");
listmodel.addElement(getNo+temp1+getFLoor+temp2+getNum);
}
② 增加
String sql = "INSERT INTO PLACE(地点编号,楼栋,教室号) "
    + "VALUES(?,?,?)";
PreparedStatement st = conn.prepareStatement(sql);
st.setString(1, tf[1].getText());
st.setString(2, tf[2].getText());
st.setString(3, tf[3].getText());
st.executeUpdate();
listmodel.addElement(tf[1].getText()+temp1+tf[2].getText()+temp2+
        tf[3].getText());
③ 修改
String sql = "update PLACE set 地点编号=?,楼栋=?,教室号=? where 地点编号 = ?";
PreparedStatement st = conn.prepareStatement(sql);
st.setString(1, tf[1].getText());
st.setString(2, tf[2].getText());
st.setString(3, tf[3].getText());
st.setString(4, strs[0]);
st.executeUpdate();
listmodel.set(list.getSelectedIndex(),tf[1].getText() + temp1 +     		tf[2].getText()+temp2 +tf[3].getText());
④ 删除
String sql = "delete from PLACE where 地点编号 = ?";
PreparedStatement st = conn.prepareStatement(sql);
st.setString(1, strs[0]);
st.executeUpdate();
listmodel.remove(list.getSelectedIndex());

(4)课程表管理

点击“课程表管理”按钮进入课程表管理界面

① 查询
String sql = new String("select *  from COURSE");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);   //获取数据
while(rs.next())                  //逐条读取数据
{  //楼栋三项参数
    String getTNo= rs.getString("教师号");
    String getSno= rs.getString("学号");
    String getCName= rs.getString("课程名");
    String getPN= rs.getString("地点编号");
    String getCT= rs.getString("上课时间");
    String getTN= rs.getString("节次");
listmodel.addElement(getTNo+"        "+getSno+"        "+getCName+temp1+getPN+temp2+getCT+"        "+getTN);
}
② 增加
String sql = "INSERT INTO PLACE(地点编号,楼栋,教室号) "
    + "VALUES(?,?,?)";
PreparedStatement st = conn.prepareStatement(sql);
st.setString(1, tf[1].getText());
st.setString(2, tf[2].getText());
st.setString(3, tf[3].getText());
st.executeUpdate();
listmodel.addElement(tf[1].getText()+temp1+tf[2].getText()+temp2+
        tf[3].getText());
③ 修改
String sql = "update PLACE set 地点编号=?,楼栋=?,教室号=? where 地点编号 = ?";
PreparedStatement st = conn.prepareStatement(sql);
st.setString(1, tf[1].getText());
st.setString(2, tf[2].getText());
st.setString(3, tf[3].getText());
st.setString(4, strs[0]);
st.executeUpdate();
listmodel.set(list.getSelectedIndex(),tf[1].getText() + temp1 + tf[2].getText()+temp2 +tf[3].getText());
④ 删除
String sql = "delete from PLACE where 地点编号 = ?";
PreparedStatement st = conn.prepareStatement(sql);
st.setString(1, strs[0]);
st.executeUpdate();
listmodel.remove(list.getSelectedIndex());

四、可视化界面一览

1.登录界面

java 给数据库某字段设置为null java课设数据库_数据_02

2.管理系统界面

java 给数据库某字段设置为null java课设数据库_插入数据_03

3.学生管理界面

java 给数据库某字段设置为null java课设数据库_创建表_04

4.教师管理界面

java 给数据库某字段设置为null java课设数据库_数据_05

5.上课地点界面

java 给数据库某字段设置为null java课设数据库_插入数据_06

6.课程表管理界面

java 给数据库某字段设置为null java课设数据库_数据_07