Java Swing GUI工具包+JDBC实现校园信息管理系统

文章目录

  • 前言
  • 项目名称
  • 题目
  • 项目实现
    • 开发工具
    • 数据库设计
      • E-R图
      • UML图
      • 关系模型
      • 创建数据库
    • 连接数据库
      • 驱动下载并测试
      • JDBC连接
    • 开始编写代码
      • 系统功能模块拆分
      • 代码框架分析
      • 实现效果
        • 主窗口(提供两种界面风格,可在工程中调整)
        • 管理员模块
        • 学生模块
        • 教师模块
      • 各模块的代码
      • 设计初稿及Swing工具包概述

前言

  • 此文章是本人的一份数据库实验报告,写本文章的目的是记录本次实验的开发历程,分享出来一起学习改进不足,欢迎指教。

项目名称

  • 数据库系统设计综合实验

题目

  • 假设有“教师”、“学生”、“课程”三个实体,教师的基本信息包括:工号、姓名、职
    称、工资,课程的基本信息包括:课程号、课程名、学分数,学生的基本信息包括:学
    号、姓名、性别、年龄。系统必须满足以下要求:
    (1) 一门课程只能有一个教师任课,一个教师可以上多门课程
    (2) 一个学生可以选修多门课程,一门课程可以由多个学生来选修,记录不同学生选修不同课程的成绩;
    (3) 设置一个管理员,用于维护(添加、删除和修改等基本任务)学生基本信息、教师基本信息和教师所授课程等工作,此外,管理员添加学生时,为其设置初始密码;当学生选修了某门课程,课程成绩由管理员录入;
    (4) 学生可以利用学号和密码登录系统,登陆系统后,可以进行选课、修改密码和个人基本信息、查询自己的选课及总学分等操作;
    (5) 能够统计不同职称的教师的数量、不同职称的教师的平均工资,可以统计每门课程的平均成绩、最高分、最低分,统计每个学生选修课程的总学分;

项目实现

开发工具

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

数据库设计

E-R图

Java Swing GUI工具包+JDBC实现校园信息管理系统_第1张图片

UML图

Java Swing GUI工具包+JDBC实现校园信息管理系统_第2张图片

关系模型

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;

  • 结果
    Java Swing GUI工具包+JDBC实现校园信息管理系统_第3张图片
    Java Swing GUI工具包+JDBC实现校园信息管理系统_第4张图片
    Java Swing GUI工具包+JDBC实现校园信息管理系统_第5张图片
    Java Swing GUI工具包+JDBC实现校园信息管理系统_第6张图片
    Java Swing GUI工具包+JDBC实现校园信息管理系统_第7张图片

连接数据库

驱动下载并测试

①打开IDEA,新建一个工程
②下载oracle数据库驱动(jar文件):【注意驱动版本需要跟Oracle版本相匹配!!!】
【若oracle版本不是最新版,可以尝试采用idea自动下载的驱动测试能连通】
驱动下载
③在IDEA中配置驱动,并测试连通
可参考的文章:文章1 文章2
Java Swing GUI工具包+JDBC实现校园信息管理系统_第8张图片
Java Swing GUI工具包+JDBC实现校园信息管理系统_第9张图片

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();
        }
    }
}

开始编写代码

系统功能模块拆分

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

代码框架分析

Java Swing GUI工具包+JDBC实现校园信息管理系统_第10张图片

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

实现效果

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

Java Swing GUI工具包+JDBC实现校园信息管理系统_第11张图片
Java Swing GUI工具包+JDBC实现校园信息管理系统_第12张图片

管理员模块

Java Swing GUI工具包+JDBC实现校园信息管理系统_第13张图片

  • 管理员子系统(分为三个模块)
    Java Swing GUI工具包+JDBC实现校园信息管理系统_第14张图片
  • 子模块1:学生信息管理:
    ①查询学生信息
    ②添加、修改、删除学生信息;
    ③为没有设置初始密码的学生设置初始密码
    ④为学生录入所选课程的成绩(只显示学生选择了的课程)
    Java Swing GUI工具包+JDBC实现校园信息管理系统_第15张图片Java Swing GUI工具包+JDBC实现校园信息管理系统_第16张图片Java Swing GUI工具包+JDBC实现校园信息管理系统_第17张图片Java Swing GUI工具包+JDBC实现校园信息管理系统_第18张图片Java Swing GUI工具包+JDBC实现校园信息管理系统_第19张图片Java Swing GUI工具包+JDBC实现校园信息管理系统_第20张图片
  • 子模块2:教师信息管理:
    ①查询教师信息
    ②添加、修改、删除教师信息
    ③查看教师选课名称和所有课程名称(课程只能由教师通过教师系统选课)
    ④添加新开设的课程
    Java Swing GUI工具包+JDBC实现校园信息管理系统_第21张图片Java Swing GUI工具包+JDBC实现校园信息管理系统_第22张图片Java Swing GUI工具包+JDBC实现校园信息管理系统_第23张图片
  • 子模块3:修改管理员密码
    Java Swing GUI工具包+JDBC实现校园信息管理系统_第24张图片Java Swing GUI工具包+JDBC实现校园信息管理系统_第25张图片

学生模块

Java Swing GUI工具包+JDBC实现校园信息管理系统_第26张图片

  • 功能:
    ①学生可修改除学号以外的信息
    ②学生可选择除已选课程以外的课程
    ③学生可查看已选课程的信息(学分、任课教师等)
    ④学生可查看自己已选课程的总学分
    Java Swing GUI工具包+JDBC实现校园信息管理系统_第27张图片Java Swing GUI工具包+JDBC实现校园信息管理系统_第28张图片Java Swing GUI工具包+JDBC实现校园信息管理系统_第29张图片

教师模块

Java Swing GUI工具包+JDBC实现校园信息管理系统_第30张图片

  • 功能:
    ①教师可查看、修改个人除职工号以外的个人信息
    ②教师可选择目前没有任课教师的课程(教师可选择多门课程,但一门课程只能由一位教师当任课教师)
    ③教师可查看相关课程的信息(课程名、学分、任课教师、选课人数等)
    ④教师可查看所有学生的选课总学分信息
    ⑤教师可查看不同职称教师的人数和平均工资信息
    Java Swing GUI工具包+JDBC实现校园信息管理系统_第31张图片Java Swing GUI工具包+JDBC实现校园信息管理系统_第32张图片Java Swing GUI工具包+JDBC实现校园信息管理系统_第33张图片Java Swing GUI工具包+JDBC实现校园信息管理系统_第34张图片

各模块的代码

  • 由于代码比较多,因此,已资源形式上传。

  • 主窗口:InfoSysMain.java

  • 登录窗口:LoginSys.java

  • 管理员子系统:adminSys.java

  • 学生子系统:studentSys.java

  • 教师子系统:teacherSys.java

  • 数据库交互:sqlOperator.java

  • 整合版代码:《Java Swing GUI工具包+JDBC实现校园信息管理系统》代码整合.zip

  • github:https://github.com/1732562137/Campus-Information-Management-System

设计初稿及Swing工具包概述

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

你可能感兴趣的:(Java开发,数据库系统设计)