《数据库应用系统实践》2.0版本 — 6- 教师信息管理系统

系列文章

《数据库应用系统实践》2.0版本 — 6- 教师信息管理系统

👇🏻实践要求👇🏻

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

一个使用Java语言和SQLServer数据库设计的教师信息管理系统
1.对课题进行需求调研与分析,完成了系统功能图与功能模块设计;完成阶段开发。
2.给出课题的概念模型(即ER图),要求对课题ER图设计中至少5个实体;
3.根据设计的ER模型,结合DBMS(数据库管理系统)特点给出了系统的逻辑模型(关系模式);
4.给出实现数据库的SQL语句,包含创建数据库、数据表(含主键、外键定义及约束性条件设计)、插入数据(各表至少插入5条记录)、更新数据、删除数据、视图(单表或多表)等;根据需要设计了存储过程和触发器;完成阶段开发。
5.完成应用程序开发过程中的编码、调试、测试、Bug修复等工作;开发语言选用Java;开发工具可选用IDEA、Eclipse均可;程序中实现数据库连接、GUI开发、增删改查操作等内容。

包括有 Java源代码+数据库源码+实践报告+部署教程
在这里插入图片描述



一、需求分析

1、系统背景

设计的教师信息管理系统旨在提供一个完整的平台,用于有效管理教师、课程和学生信息。系统包括普通用户和管理员两类角色,普通用户通过用户名和密码登录,可以查看课程信息及教师基本资料;管理员则具备更高权限,负责整体系统的管理和维护。教师信息部分包括教师的个人资料和所属部门信息,帮助管理教师队伍和相关信息;课程信息则记录了每门课程的详细情况,包括课程名称、学分和当前选课学生人数等数据,用于教学资源的合理分配和管理。授课信息表明了每位教师授课的具体情况,包括教师ID、课程ID以及授课地点,使得课程安排更加有序和明确。系统通过这些数据的有效整合和管理,提高了教学效率和资源利用率,为教师、学生和管理者提供了一个便捷的信息查询和管理平台。

2、 系统功能结构

(1)功能结构图
在这里插入图片描述

(2)模块说明
包含普通用户信息、管理员信息、教师信息、课程信息、授课信息。

二、概念模型设计

1.基本要素(符号介绍说明)

① 矩形:表示实体。
② 椭圆形:表示属性,即实体的属性。
③ 菱形:表示联系。
④ 连线:该连线为没有方向的线段,分为连接实体与属性(矩形与椭圆形之间的连线)和连接实体与联系名(矩形与菱形之间的连线);实体与联系名的连线旁需标注联系的类型,如1:1、1:n、m:n。
注意:在联系类型标注时请按照约定俗成的方式标注,一对多使用1:n,多对多使用m:n,如果超过两个实体请采用m:n:p:q:

2.ER图

在这里插入图片描述

三、逻辑模型设计

1.ER模型向关系模型转换规则

(1)实体转换为单独的关系模式。
(2)一对一联系转换为关系模式有两种方法。
①、将联系转换为单独的关系模式;
②、将其中一个实体的之间加入到另外一个实体的关系模式中,作为外键。
(3) 一对多联系转换为关系模式有两种方法。
①、将联系转换为单独的关系模式;
②、将n实体的主键合并到1实体的关系模式中,作为1实体关系模式的外键。

2.转换后的关系模型

普通用户 (用户ID, 用户名, 密码)
管理员 (管理员ID, 管理员名, 密码)
教师信息 (教师ID, 教师姓名, 性别, 生日, 所属部门)
课程信息 (课程ID, 课程名称, 学分, 学生人数)
授课信息 (授课ID, 教师ID, 课程ID, 授课地点)

3.关系模型优化(达到3NF)

以上要素都属于第三范式

四、物理设计

1.创建数据库的SQL语句或截图

CREATE DATABASE 教师信息管理系统

2.创建所有表的SQL语句或截图(包含完整性约束)

-- 普通用户表
CREATE TABLE 普通用户 (
    用户ID INT PRIMARY KEY,
    用户名 NVARCHAR(50),
    密码 NVARCHAR(50)
);

-- 管理员表
CREATE TABLE 管理员 (
    管理员ID INT PRIMARY KEY,
    管理员名 NVARCHAR(50),
    密码 NVARCHAR(50)
);


-- 教师信息表
CREATE TABLE 教师信息 (
    教师ID INT PRIMARY KEY,
    教师姓名 NVARCHAR(100),
    性别 NVARCHAR(10),
    生日 DATE,
    所属部门 NVARCHAR(50)
);


-- 课程信息表
CREATE TABLE 课程信息 (
    课程ID INT PRIMARY KEY,
    课程名称 NVARCHAR(100),
    学分 INT,
    学生人数 INT
);


-- 授课信息表
CREATE TABLE 授课信息 (
    授课ID INT PRIMARY KEY,
    教师ID INT,
    课程ID INT,
    授课地点 NVARCHAR(50),
    FOREIGN KEY (教师ID) REFERENCES 教师信息(教师ID),
    FOREIGN KEY (课程ID) REFERENCES 课程信息(课程ID)
);

五、数据库实施

1.粘贴所创建的数据库关系图

在这里插入图片描述

2.数据录入

-- 普通用户表插入数据
INSERT INTO 普通用户 (用户ID, 用户名, 密码)
VALUES
    (1, N'张三', N'123456'),
    (2, N'李四', N'password'),
    (3, N'王五', N'qwerty'),
    (4, N'赵六', N'abc123'),
    (5, N'小明', N'mypassword');

-- 管理员表插入数据
INSERT INTO 管理员 (管理员ID, 管理员名, 密码)
VALUES
    (1, N'Admin1', N'adminpass'),
    (2, N'Admin2', N'admin123'),
    (3, N'超级管理员', N'superadmin'),
    (4, N'管理员A', N'managerA'),
    (5, N'管理员B', N'managerB');

-- 教师信息表插入数据
INSERT INTO 教师信息 (教师ID, 教师姓名, 性别, 生日, 所属部门)
VALUES
    (1, N'李老师', N'男', '1980-05-15', N'计算机科学系'),
    (2, N'张老师', N'女', '1982-08-20', N'外国语言文学系'),
    (3, N'王老师', N'男', '1975-03-10', N'数学系'),
    (4, N'赵老师', N'女', '1988-11-25', N'物理系'),
    (5, N'刘老师', N'男', '1983-06-18', N'化学系');

-- 课程信息表插入数据
INSERT INTO 课程信息 (课程ID, 课程名称, 学分, 学生人数)
VALUES
    (1, N'数据库原理', 3, 50),
    (2, N'操作系统', 4, 45),
    (3, N'英语写作', 2, 60),
    (4, N'高等数学', 5, 55),
    (5, N'有机化学', 4, 48);

-- 授课信息表插入数据
INSERT INTO 授课信息 (授课ID, 教师ID, 课程ID, 授课地点)
VALUES
    (1, 1, 1, N'A101'),
    (2, 2, 3, N'B202'),
    (3, 3, 4, N'C301'),
    (4, 4, 2, N'D102'),
    (5, 5, 5, N'E203');

3.数据处理(包含完整十个,篇幅限制,仅列举前5个)

(1)至少包括2张表的等值连接语句;
在这里插入图片描述

(2)创建视图的语句;
在这里插入图片描述

(3)更新数据语句;
在这里插入图片描述

(4)删除数据语句;
在这里插入图片描述

(5)包含聚集函数的查询语句;
在这里插入图片描述

(6)包含条件过滤的查询语句;

(7)修改表结构语句;

(8)用T-SQL语句写出一个对数据表处理的人机交互程序;

(9)编写一个触发器;

(10)编写一个存储过程;

六、数据库应用系统实现

1.相关界面截图

用户登录:
在这里插入图片描述

信息查询:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

管理员登录:
在这里插入图片描述

信息查询:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据增加:
在这里插入图片描述
在这里插入图片描述

数据修改:
在这里插入图片描述
在这里插入图片描述

数据删除:
在这里插入图片描述
在这里插入图片描述

2.和数据库连接的程序语句

String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
				String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=教师信息管理系统";
				String userName = "sa";
				String userPwd = "1";

3.具体实现代码

if (jr3.isSelected())// 
			{
				String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
				String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=教师信息管理系统";
				String userName = "sa";
				String userPwd = "1";
				userId = null; // 管理员
				try {
					Class.forName(driverName);
				} catch (Exception e1) {
					e1.printStackTrace();
				}
				try {
					Connection con = DriverManager.getConnection(dbURL, userName, userPwd);
					Statement s = con.createStatement();
					String r1 = "select * from 管理员  where 管理员ID=? and 密码=?";
					PreparedStatement P = con.prepareStatement(r1);
					P.setString(1, jtf1.getText());
					P.setString(2, jtf2.getText());
					ResultSet rs = P.executeQuery();
					if (rs.next()) {
						userId = rs.getString("管理员ID").trim();
						new Custom(userId);
						jfrm.setVisible(false);
					}

					else {
						JOptionPane.showMessageDialog(null, "管理员ID或密码不正确!");
					}
					s.close();
					con.close();
				} catch (Exception e1) {
					e1.printStackTrace();	

七、小组分工明细

注:1-2人一组,若2人一组,请说明每位组员的具体贡献明细,要求每位组员都需要既参加数据库设计又参加Java GUI项目编码,课程报告中内容组内自行商量分工。

学号-姓名身份贡献比例完成工作
组长%
组员%

八、开发环境说明

名录内容
操作系统Win11
Java GUI开发工具Eclipse/Idea
JDK版本1.8
数据库及版本SQL Server 2014或以上均可
JDBC版本8.2

九、总结

200字左右的小结,包括
(1)完成情况和不足之处
(2)心得体会
(3)建议

整体完成得相对完整,包含了普通用户、管理员、教师信息、课程信息和授课信息等表格的定义和填充。然而,设计中存在一些不足之处,比如密码存储应考虑加密安全性,表命名和字段选择可以进一步优化以提高可读性和一致性。通过这个项目,我深刻体会到了数据库设计的重要性和复杂性,尤其是外键关联和数据一致性的维护。建议在未来的工作中,加强对数据安全和规范化的考虑,例如使用加密存储敏感信息,确保数据库结构的一致性和清晰度,并且在实际应用中进行充分测试以确保系统的稳定性和性能。

十、参考文献

[1] 美 维埃拉 Vieira, Robert.SQL Server 2008高级程序设计[M].清华大学出版社,2010.
[2] 李玉波 韩光林.SQL SERVER完全自学手册(附光盘)[M].机械工业出版社,2007.
[3] 胡明政,何晓龙.浅析SQL Server数据库备份策略的设计[J].科技信息:学术版, 2008(05):216-217.DOI:CNKI:SUN:KJXI.0.2008-05-132.

十一、获取源码

大家 点赞、收藏、关注、评论啦、查看👇🏻 获取联系方式👇🏻

文章👇🏻下方名片👇🏻联系我即可~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AXiaoFighting

给小编价格鸡腿吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值