Java Swing GUI + JDBC + base de datos Oracle para realizar el sistema de gestión de información del campus

Este artículo ha participado en el evento "Ceremonia de creación de recién llegados" para comenzar juntos el camino de la creación de oro.

prefacio

  • Este artículo es un informe mío de un experimento de base de datos. El propósito de escribir este artículo es registrar el proceso de desarrollo de este experimento, compartirlo juntos para aprender y mejorar, y recibir consejos.

nombre del proyecto

  • Experimento completo de diseño de sistema de base de datos.

tema

Supongamos que hay tres entidades: "Profesor", "Estudiante" y "Curso" . La información básica del profesor incluye: número de trabajo, nombre, título y salario. La información básica del curso incluye: número de curso, nombre del curso , créditos e información básica de los estudiantes La información incluye: número de estudiante, nombre, sexo, edad. El sistema debe cumplir con los siguientes requisitos:

(1) Solo un maestro puede impartir un curso y un maestro puede tomar varios cursos ;

(2) Un estudiante puede tomar varios cursos , y varios estudiantes pueden tomar un curso , y registrar las calificaciones de diferentes estudiantes que toman diferentes cursos;

(3) Configure un administrador para mantener (tareas básicas como agregar, eliminar y modificar) la información básica de los estudiantes, la información básica del maestro y los cursos impartidos por los maestros. Además, al agregar estudiantes, el administrador establece una contraseña inicial para Cuando un estudiante elige un curso, el administrador ingresa la calificación del curso;

(4) Los estudiantes pueden usar su ID de estudiante y contraseña para iniciar sesión en el sistema.Después de iniciar sesión en el sistema, pueden seleccionar cursos, modificar contraseñas e información personal básica, y consultar sobre su selección de cursos y créditos totales;

(5) Ser capaz de contar el número de docentes con diferentes títulos profesionales, el salario promedio de los docentes con diferentes títulos profesionales, la calificación promedio, el puntaje más alto y el puntaje más bajo de cada curso, y el total de créditos de los cursos electivos de cada estudiante ;

realización del proyecto

herramientas de desarrollo

  • Base de datos: Oracle19.3
  • 数据库管理工具:Navicat、sqlPlus、sql Developer
  • 开发语言:Java(版本为1.8)
  • GUI工具包:Java Swing
  • 数据库连接:JDBC
  • IDE: IntelliJ IDEA Ultimate Edition 2019.2

数据库设计

E-R图

在这里插入图片描述

UML图

在这里插入图片描述

关系模型

Teacher(Tno,Tname,Tposition,Tsalary,Tpwd),其中,Tno为teacher表的主码
Course(Cno,Cname,Ccredit,Tno),其中,Cno为course表的主码,Tno为外码,Tno参照Teacher(Tno)
Student(Sno,Sname,Ssex,Sage,Spwd),其中,Sno为Student表的主码
SC(Sno,Con,Grade),其中,(Sno,Cno)为SC表的主码,Sno为外码,参照Student(Sno),Cno为外码,参照Course(Cno)
复制代码

创建数据库

  • 创建一个用户
create user cyf identified by admin;  --创建新用户
grant resource,connect,DBA to cyf;  --授权
复制代码
  • 建表

teacher表

Create table teacher
(
    Tno varchar2(10) primary key,  --教师职工号
    Tname varchar2(20) Not Null Unique,  --姓名
    Tsex varchar2(4) CHECK(Tsex IN ('男','女') ),  --性别(E-R图中没有)
    Tposition varchar2(20) Not NULL, --教师职称
    Tsalary number Not NULL,  --薪水
    Tpwd varchar2(16)  --登录密码
);

复制代码

course表

Create table course
(
    Cno varchar2(10) primary key, --课程号
    Cname varchar2(20) ,  --课程名
    Ccredit number,  --学分
    Tno varchar2(10),  --教师职工号
    FOREIGN key(Tno) references teacher(Tno)  --Tno参考teacher表的Tno
);

复制代码

student表

Create table student
(
    Sno varchar2(10) primary key, --学号
    Sname varchar2(20) Not NULL Unique,  --姓名
    Ssex varchar2(4) CHECK(Ssex IN ('男','女') ),  --性别
    Sage number Not NULL,  --年龄
    Spwd varchar2(16)  --密码
);

复制代码

sc表

Create table SC
(
    Sno varchar2(10) Not NULL,  --学号
    Cno varchar2(10) Not NULL,  --课程号
    Grade number,  --成绩
    foreign key(SNO) references Student(Sno),
    foreign key(Cno) references Course(Cno)
)

复制代码

管理员用户表admin_Users

Create table admin_Users
(
    admin_id varchar2(10) not null primary key,  --用户名
    admin_pwd varchar2(16) not null  --密码
)
复制代码
  • 插入数据
-- teacher表
insert into teacher(tno,tname,tsex, tposition, tsalary) values('T001','张三','男','教授',30000);
insert into teacher(tno,tname,tsex, tposition, tsalary) values('T002','李四','男','教授',28000);
insert into teacher(tno,tname,tsex, tposition, tsalary) values('T003','王五','女','副教授',25000);
insert into teacher(tno,tname,tsex, tposition, tsalary) values('T004','赵六','男','教授',35000);
insert into teacher(tno,tname,tsex, tposition, tsalary) values('T005','孙七','女','讲师',18000);
-- student表
insert into student(sname,ssex,sno, sage) values('李勇','男','1806100001',20);
insert into student(sname,ssex,sno, sage) values('刘晨','女','1806100002',19);
insert into student(sname,ssex,sno, sage) values('王敏','女','1806100003',18);
insert into student(sname,ssex,sno, sage) values('张立','男','1806100004',19);
insert into student(sname,ssex,sno, sage) values('赵明','男','1806100005',19);--课程信息
--course表
insert into course (cno,cname,ccredit,Tno) values('C001','数据库',2,'T001');
insert into course (cno,cname,ccredit,Tno) values('C002','操作系统',2,'T002');
insert into course (cno,cname,ccredit,Tno) values('C003','数值分析',1,'T003');
insert into course (cno,cname,ccredit,Tno) values('C004','数据结构',2,'T004');
insert into course (cno,cname,ccredit,Tno) values('C005','计算机网络',2,'T005');
--SC表
insert into sc (sno,cno,grade) values('1806100001','C001',80);
insert into sc (sno,cno,grade) values('1806100002','C001',88);
insert into sc (sno,cno,grade) values('1806100003','C001',95);
insert into sc (sno,cno,grade) values('1806100004','C001',86);
insert into sc (sno,cno,grade) values('1806100005','C001',93);
insert into sc (sno,cno,grade) values('1806100001','C002',86);
insert into sc (sno,cno,grade) values('1806100001','C002',90);

--admin_Users表
insert into admin_Users(Uid,Upwd) values(‘admin’,’admin’);
insert into admin_Users(Uid,Upwd) values(‘admin2’,’admin2’);
--验证
select * from teacher;
select * from student;
select * from course;
select * from sc;
select * from admin_Users;

复制代码
  • 结果

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

连接数据库

驱动下载并测试

①打开IDEA,新建一个工程 ②下载oracle数据库驱动(jar文件):【注意驱动版本需要跟Oracle版本相匹配!!!】 【若oracle版本不是最新版,可以尝试采用idea自动下载的驱动测试能连通】 驱动下载 ③在IDEA中配置驱动,并测试连通 可参考的文章:文章1 文章2 在这里插入图片描述 在这里插入图片描述

JDBC连接

  • 数据库名称为orcl,用户名为cyf,密码为admin
import java.sql.*;

public class sqlOperator {  //一个名为sqlOperator的类

    private static Connection conn;

    static {  //与数据库建立连接
        try {
            conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "cyf", "admin");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
复制代码

开始编写代码

系统功能模块拆分

  • 管理员子系统
  • 学生子系统
  • 教师子系统

代码框架分析

在这里插入图片描述

  • 整个系统划分为6个部分:系统选择窗口(InfoSysMain)、登录窗口(LoginSys)、管理员子系统(adminSys)、学生子系统(studentSys)、教师子系统(teacherSys)、数据库交互函数(sqlOperator)
  • 调用关系:主窗口infoSysMain进行子系统选择,选择后将系统选择系统作为参数调用登录窗口LoginSys,登录窗口根据选择的系统参数调用SQLOperator的Auth认证函数查询相应的数据库进行登录认证,登录成功后,LoginSys调用对应的子系统的函数,进入相应的系统(adminSys、studentSys、teacherSys)。

实现效果

主窗口(提供两种界面风格,可在工程中调整)

在这里插入图片描述 在这里插入图片描述

管理员模块

在这里插入图片描述

  • 管理员子系统(分为三个模块)

在这里插入图片描述

  • 子模块1:学生信息管理:

①查询学生信息 ②添加、修改、删除学生信息; ③为没有设置初始密码的学生设置初始密码 ④为学生录入所选课程的成绩(只显示学生选择了的课程) 在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 子模块2:教师信息管理:

①查询教师信息 ②添加、修改、删除教师信息 ③查看教师选课名称和所有课程名称(课程只能由教师通过教师系统选课) ④添加新开设的课程 在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 子模块3:修改管理员密码

在这里插入图片描述在这里插入图片描述

学生模块

在这里插入图片描述

  • 功能:

①学生可修改除学号以外的信息 ②学生可选择除已选课程以外的课程 ③学生可查看已选课程的信息(学分、任课教师等) ④学生可查看自己已选课程的总学分 在这里插入图片描述在这里插入图片描述在这里插入图片描述

教师模块

在这里插入图片描述

  • 功能:

①教师可查看、修改个人除职工号以外的个人信息 ②教师可选择目前没有任课教师的课程(教师可选择多门课程,但一门课程只能由一位教师当任课教师) ③教师可查看相关课程的信息(课程名、学分、任课教师、选课人数等) ④教师可查看所有学生的选课总学分信息 ⑤教师可查看不同职称教师的人数和平均工资信息 在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

各模块的代码

设计初稿及Swing工具包概述

  • 本人在写此代码前,先花了些时间回顾熟悉Swing工具包的框架特点,并绘制了设计初稿,依照初稿完成以上窗口的设计,并制作成一个PPT。为了方便学习交流,跟代码一块分享出来。
  • 界面设计及Swing使用.pptx

Supongo que te gusta

Origin juejin.im/post/7088521367955439623
Recomendado
Clasificación