系列文章
《数据库应用系统实践》------ 运动员比赛系统
一、需求分析
1、系统背景
运动员比赛系统旨在为各类体育赛事提供全面、系统的管理功能,通过记录项目、班级、运动员、比赛、院系及裁判员等信息,构建一个高效、便捷的管理平台。系统设计包括项目记录,涵盖项目编号、项目名称、比赛地点以及个人项目和团体项目的区分,同时关联判员编号信息;班级记录则包含班级编号、班级名称、专业和人数,确保班级信息的完整性;运动员记录包含运动员编号、姓名、性别、年龄、班级编号及院系编号,便于管理每位运动员的基本信息及所属班级、院系情况;比赛记录详细记录运动员在各项目中的参赛情况,包括运动员编号、项目编号、名次、成绩以及预赛、半决赛、决赛等重要阶段;院系记录涵盖院系编号与名称,确保院系信息的准确管理;裁判员记录则包括裁判员编号、裁判员姓名、项目编号与项目名称,便于裁判员的管理与安排。通过以上设计,系统能够实现对运动员、赛事、裁判员等各方面信息的有效整合与管理,提高赛事组织效率和管理质量。
2、 系统功能结构(需包含功能结构框图和模块说明)
(1)功能结构图
(2)模块说明
包含班级信息、运动员信息、项目信息、比赛信息模块。
3.系统功能简介
实现运动员比赛系统的设计
实现项目记录,包含项目号、项目名、比赛地点、个人项目、团体项目,判员号信息。
实现班级记录,包含班级号、班级名、专业、人数信息。
实现运动员记录,包含运动员号、姓名、性别、年龄、班级号、院系号信息
实现比赛记录,包含运动员号、项目号、名次、成绩、比赛预赛、半决赛、决赛信息
实现院系记录,包含院系号,院系名。
实现裁判员记录,包含裁判员号,裁判员名,项目号,项目名。
以上信息都是经过多次研究设计得到的。
二、概念模型设计
1.基本要素(符号介绍说明)
.基本要素(符号介绍说明)
① 矩形:表示实体。
② 椭圆形:表示属性,即实体的属性。
③ 菱形:表示联系。
④ 连线:该连线为没有方向的线段,分为连接实体与属性(矩形与椭圆形之间的连线)和连接实体与联系名(矩形与菱形之间的连线);实体与联系名的连线旁需标注联系的类型,如1:1、1:n、m:n。
注意:在联系类型标注时请按照约定俗成的方式标注,一对多使用1:n,多对多使用m:n,如果超过两个实体请采用m:n:p:q:
2.ER图
三、逻辑模型设计
1.ER模型向关系模型转换规则
① 实体转换为单独的关系模式。
② 一对一联系转换为关系模式有两种方法。一、将联系转换为单独的关系模式;二、将其中一个实体的之间加入到另外一个实体的关系模式中,作为外键。
③ 一对多联系转换为关系模式有两种方法。一、将联系转换为单独的关系模式;二、将n实体的主键合并到1实体的关系模式中,作为1实体关系模式的外键。
2.转换后的关系模型
班级(班级号,班级名,专业,人数)主键:班级号
运动员(运动员号,姓名,性别,年龄,班级号,院系号)主键:运动员号 外键:班级号,院系号
项目(项目号,项目名,比赛地点,个人项目,团体项目,裁判员号)主键:项目号,外键:裁判员号
比赛(运动员号,项目号,名次,成绩,比赛预赛,半决赛,决赛)主键:运动员号,项目号 外键:运动员号,项目号
院系(院系号,院系名)
裁判员(裁判员号 裁判员名,项目号,项目名)
3.关系模型优化(达到3NF)
以上要素都属于第三范式
四、物理设计
1.创建数据库的SQL语句或截图
CREATE DATABASE 运动员比赛系统
ON PRIMARY
(NAME=YAN,
FILENAME='E:\SQLDate\运动员比赛系统.mdf',
SIZE=5MB,
MAXSIZE=UNLIMITED)
LOG ON
(NAME=YAN_log,
FILENAME='E:\SQLDate\运动员比赛系统_log.ldf',
SIZE=5MB,
MAXSIZE=UNLIMITED)
2.创建所有表的SQL语句或截图(包含完整性约束)
CREATE TABLE 裁判员(
裁判员号 CHAR(20) PRIMARY KEY,
裁判员名 CHAR(20) NOT NULL,
项目号 CHAR(20) NOT NULL,
项目名 CHAR(20) NOT NULL
)
CREATE TABLE 项目(
项目号 CHAR(20) PRIMARY KEY,
项目名 CHAR(20) NOT NULL,
比赛地点 CHAR(20) NOT NULL,
个人项目 CHAR(20) NOT NULL,
团体项目 CHAR(20) NOT NULL,
裁判员号 CHAR(20) NOT NULL
)
CREATE TABLE 院系(
院系号 CHAR(20) PRIMARY KEY,
院系名 CHAR(20) NOT NULL
)
CREATE TABLE 班级(
班级号 CHAR(20) PRIMARY KEY,
班级名 CHAR(20) NOT NULL,
专业 CHAR(20) NOT NULL,
人数 CHAR(20) NOT NULL
)
CREATE TABLE 运动员(
运动员号 CHAR(20) PRIMARY KEY,
姓名 CHAR(20) NOT NULL,
性别 CHAR(20) NOT NULL,
年龄 CHAR(20) NOT NULL,
班级号 CHAR(20) NOT NULL,
院系号 CHAR(20) NOT NULL,
FOREIGN KEY (班级号) REFERENCES 班级(班级号),
FOREIGN KEY (院系号) REFERENCES 院系(院系号)
)
CREATE TABLE 比赛(
运动员号 CHAR(20) NOT NULL,
项目号 CHAR(20) NOT NULL,
名次 CHAR(20) NOT NULL,
成绩 CHAR(20) NOT NULL,
比赛预赛 CHAR(20) NOT NULL,
半决赛 CHAR(20) NOT NULL,
决赛 CHAR(20) NOT NULL,
PRIMARY KEY(运动员号,项目号),
FOREIGN KEY (运动员号) REFERENCES 运动员(运动员号),
FOREIGN KEY (项目号) REFERENCES 项目(项目号)
)
五、数据库实施
1.粘贴所创建的数据库关系图
2.数据录入
INSERT INTO 项目 VALUES ('001','跑步','操场跑步处','个人测试1','团体测试1','001')
INSERT INTO 项目 VALUES ('002','跳高','操场跳高处','个人测试2','团体测试2','002')
INSERT INTO 项目 VALUES ('003','跳绳','操场跳绳处','个人测试3','团体测试3','003')
INSERT INTO 项目 VALUES ('004','跳远','操场跳远处','个人测试4','团体测试4','004')
INSERT INTO 项目 VALUES ('005','体前屈','操场体前屈处','个人测试5','团体测试5','005')
INSERT INTO 班级 VALUES ('001','一班','计算机','10')
INSERT INTO 班级 VALUES ('002','二班','艺术设计','20')
INSERT INTO 班级 VALUES ('003','三班','计算机','30')
INSERT INTO 班级 VALUES ('004','四班','艺术设计','40')
INSERT INTO 班级 VALUES ('005','五班','计算机','50')
INSERT INTO 院系 VALUES ('001','院系1')
INSERT INTO 院系 VALUES ('002','院系2')
INSERT INTO 院系 VALUES ('003','院系3')
INSERT INTO 院系 VALUES ('004','院系4')
INSERT INTO 院系 VALUES ('005','院系5')
INSERT INTO 运动员 VALUES ('001','张一','男','23','001','001')
INSERT INTO 运动员 VALUES ('002','张二','女','21','002','002')
INSERT INTO 运动员 VALUES ('003','张三','男','22','003','003')
INSERT INTO 运动员 VALUES ('004','张四','女','25','004','004')
INSERT INTO 运动员 VALUES ('005','张五','男','20','005','005')
INSERT INTO 比赛 VALUES ('001','001','1','80','比赛预赛1','半决赛1','决赛1')
INSERT INTO 比赛 VALUES ('002','002','2','81','比赛预赛2','半决赛2','决赛2')
INSERT INTO 比赛 VALUES ('003','003','3','82','比赛预赛3','半决赛3','决赛3')
INSERT INTO 比赛 VALUES ('004','004','4','83','比赛预赛4','半决赛4','决赛4')
INSERT INTO 比赛 VALUES ('005','005','5','84','比赛预赛5','半决赛5','决赛5')
INSERT INTO 裁判员 VALUES ('001','裁判员1','001','跑步')
INSERT INTO 裁判员 VALUES ('002','裁判员2','002','跳高')
INSERT INTO 裁判员 VALUES ('003','裁判员3','003','跳绳')
INSERT INTO 裁判员 VALUES ('004','裁判员4','004','跳远')
INSERT INTO 裁判员 VALUES ('005','裁判员5','005','提前屈')
3.数据处理(处理完成后请附上截图,请至少完成5项)
(1)至少包括2张表的等值连接;
(2)创建视图;
(3)编写包含子查询的SQL语句;
(4)有修改语句;
(5)有删除语句;
(6)有包含聚集函数;
(7)有记录过滤,条件过滤语句;
(8)有修改表结构的SQL语句;
(9)用T-SQL语句写出一个对数据表处理的人机交互程序;
(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 (jr1.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 运动员号=? 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("运动员号").trim();
new YG(userId);
jfrm.setVisible(false);
}
else {
JOptionPane.showMessageDialog(null, "运动员号或班级号不正确!");
}
s.close();
con.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}
七、总结
(可选,200字左右的小结,包括
(1)完成情况和不足之处
(2)心得体会
(3)建议)
经过本次数据库的实践,掌握了很多有关数据库的知识,首先是进行选题,好的选题是实验成功的一半,进行的选题是运动员比赛系统,其次进行数据库的分析与设计。完成了系统功能结构图和ER图的设计,完成了设计的全过程,后面便是对设计好的ER图转换为关系模式,关系模式的规范需要满足第三范式,尽量少存在数据冗余以及胀数据的产生。关系模式都规范好之后,就需要建立相应的表,最后是往表中录入相关的数据。
参考文献:
1、《数据库设计模式介绍》——科学出版社
2、《数据库原理应用与实践指导》——科学出版社
3、《Java Swing入门编程与指导》——清华大学大学出版社
八、内容包括
八、内容包括
包括有 Java源代码+数据库源码+实践报告+部署教程
九、获取源码
大家 点赞、收藏、关注、评论啦、查看👇🏻 获取联系方式👇🏻
文章👇🏻下方名片👇🏻联系我即可~