文章目录
- 零.前言
- 一.实验前准备
- 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);
}
}
});
当密码输入错误之后:
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.登录界面
2.管理系统界面
3.学生管理界面
4.教师管理界面
5.上课地点界面
6.课程表管理界面