Java Swing GUI + JDBC + banco de dados Oracle para realizar o sistema de gerenciamento de informações do campus

Este artigo participou do evento "Newcomer Creation Ceremony" para iniciar juntos o caminho da criação de ouro.

prefácio

  • Este artigo é um relatório meu de um experimento de banco de dados. O objetivo de escrever este artigo é registrar o processo de desenvolvimento deste experimento, compartilhá-lo para aprender e melhorar e receber conselhos.

Nome do Projeto

  • Experimento abrangente de design de sistema de banco de dados

tema

Suponha que existam três entidades: "Professor", "Aluno" e "Curso" . As informações básicas do professor incluem: número do cargo, nome, cargo e salário. As informações básicas do curso incluem: número do curso, nome do curso , créditos e informações básicas dos alunos. As informações incluem: número do aluno, nome, sexo, idade. O sistema deve atender aos seguintes requisitos:

(1) Apenas um professor pode ministrar um curso e um professor pode fazer vários cursos ;

(2) Um aluno pode cursar vários cursos , e um curso pode ser cursado por vários alunos , e registrar as notas de diferentes alunos em cursos diferentes;

(3) Configure um administrador para manter (tarefas básicas como adicionar, excluir e modificar) as informações básicas dos alunos, as informações básicas do professor e os cursos ministrados pelos professores. Além disso, ao adicionar alunos, o administrador define uma senha inicial para quando um aluno escolhe um curso, a nota do curso é inserida pelo administrador;

(4) Os alunos podem usar seu ID e senha de aluno para fazer login no sistema . Após fazer login no sistema, eles podem selecionar cursos, modificar senhas e informações pessoais básicas e consultar sobre sua seleção de cursos e créditos totais;

(5) Ser capaz de contar o número de professores com diferentes títulos profissionais, o salário médio dos professores com diferentes títulos profissionais, a nota média, a maior e a menor nota de cada curso e o total de créditos das disciplinas eletivas de cada aluno ;

Realização do projeto

ferramentas de desenvolvimento

  • Banco de dados: 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

Acho que você gosta

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