广工数据库课程教学设计.doc
.教师信息管理系统 题目名称 专业班级 学 号 学生姓名 指导教师 2016 年 3 月 26 日一、实验环境硬件环境:处理器: Intel(R) Core(TM) i5-3230M CPU 2.60FHz 2.60GHz已安装的内存(RMA): 4.00GB软件环境操作系统: Windows 10数据库管理系统: SQL Server 2008开发工具: Eclipse二、需求分析信息需求教师信息(职工号,教师姓名,年龄,性别)课程信息(课程号,课程名,学分)课程评价信息(职工号,课程号,等级)奖金信息(序号,等级,奖金)用户信息(登录名,密码,用户组)功能需求1. 教师用户: (1)对教师信息、课程信息、课程评价、奖金信息的查询。2. 管理员 (1)对教师信息、课程信息、课程评价的查询,修改,增加,删除; (2)对教师的奖金等信息的查询,修改。安全性与完整性需求1. 不同的身份有不同的功能权限。2.实体完整性:通过设置主键都已实现。数据字典该软件的数据库由下述信息组成:1. 教师信息字段字段名类型宽度说明1职工号 Int型2教师姓名 字符型103年龄 Int型大于等于18且小于等于654性别 字符型2男或女2.课程信息字段字段名类型宽度说明1课程号 Int型2课程名 字符型163学分 Int型3. 课程评价信息字段字段名类型宽度说明1职工号 Int型2课程号 Int型3等级 字符型2优,良,中,差4. 奖金信息字段字段名类型宽度说明1序号 Int型2等级 字符型2优,良,中,差3奖金 Int型5. 用户信息字段字段名类型宽度说明1登录名 字符型82密码 Int型3用户组 字符型6三、概念结构设计1. 教师信息实体2. 课程实体3. 课程评价实体4. 奖金实体5. 用户实体概念模型:E-R图四、逻辑结构设计关系模型教师信息表(职工号,教师姓名,年龄,性别),其主码为职工号。课程表(课程号,课程名,学分),其主码为课程号。课程评价表(职工号,课程号,等级),其主码为职工号与课程号。奖金表(序号,等级,奖金),其主码为序号。用户表(登录名,密码,用户组),其主码为登录名。用户子模式应用程序功能模块图安全性该系统的用户只有两种,一种是管理员,另一种是教师,管理员具有对数据库操作的所有权限,教师只有对教师的信息、课程信息、课程评价、奖金信息的查询权限。完整性实体完整性:通过设置主键都已实现。参照完整性:课程评价表中的职工号和课程号分别参照教师信息表中的职工号和课程表中的课程号。用户自定义完整性:教师信息表中的年龄必须在18到60之间,性别必须为男、女,课程评价表和奖金表中的等级必须为优、良、中、差。五、数据库物理设计数据的存放位置说明D:Program Files Microsoft SQL Server MSSQL10_50.SQLEXPRESSMSSQLDATA系统配置说明使用登录名:sa 登陆密码:123 登陆SQL Server 2008模块设计(模块IPO图)六、数据库实施1.创建教师信息表CREATE TABLE 教师信息表 (职工号 INT NOT NULL PRIMARY KEY, 教师姓名 CHAR(10), 年龄 INT CHECK(年龄=18 AND 年龄=60), 性别 CHAR(2) CHECK(性别 IN(男,女) )2. 创建课程表CREATE TABLE 课程表 (课程号 INT NOT NULL PRIMARY KEY, 课程名 CHAR(16), 学分 INT )3. 创建课程评价表CREATE TABLE 课程评价表 (职工号 INT, 课程号 INT, 等级 CHAR(2) CHECK(等级 IN(优,良,中,差), PRIMARY KEY(职工号,课程号), FOREIGN KEY (职工号) REFERENCES 教师信息表(职工号), FOREIGN KEY (课程号) REFERENCES 课程表(课程号) )4. 创建奖金表CREATE TABLE 奖金表 (等级 CHAR(2) CHECK(等级 IN(优,良,中,差) PRIMARY KEY, 奖金 INT )5. 创建用户表CREATE TABLE 用户表 (登录名 CHAR(8) NOT NULL PRIMARY KEY, 密码 INT, 用户组 CHAR(6) )6. 各表元组INSERT INTO 教师信息表 VALUES(201501,翁嘉民,20,男)INSERT INTO 教师信息表 VALUES(201502,陈天翔,19,男)INSERT INTO 教师信息表 VALUES(201503,周诗妍,21,女)INSERT INTO 教师信息表 VALUES(201504,宋嘉莹,20,女)INSERT INTO 课程表 VALUES(100,语文,5)INSERT INTO 课程表 VALUES(101,数学,5)INSERT INTO 课程表 VALUES(102,英语,4)INSERT INTO 课程表 VALUES(103,物理,3)INSERT INTO 课程表 VALUES(104,化学,3)INSERT INTO 课程表 VALUES(105,生物,3)INSERT INTO 课程表 VALUES(106,地理,3)INSERT INTO 课程表 VALUES(107,历史,3)INSERT INTO 课程表 VALUES(108,政治,3)INSERT INTO 课程评价表 VALUES(201501,100,优)INSERT INTO 课程评价表 VALUES(201501,107,良)INSERT INTO 课程评价表 VALUES(201501,108,优)INSERT INTO 课程评价表 VALUES(201502,101,良)INSERT INTO 课程评价表 VALUES(201502,103,良)INSERT INTO 课程评价表 VALUES(201502,106,优)INSERT INTO 课程评价表 VALUES(201503,102,中)INSERT INTO 课程评价表 VALUES(201503,105,良)INSERT INTO 课程评价表 VALUES(201503,107,优)INSERT INTO 课程评价表 VALUES(201504,104,良)INSERT INTO 课程评价表 VALUES(201504,105,优)INSERT INTO 课程评价表 VALUES(201504,106,良)INSERT INTO 奖金表 VALUES(1,优,8000)INSERT INTO 奖金表 VALUES(2,良,4000)INSERT INTO 奖金表 VALUES(3,中,2000)INSERT INTO 奖金表 VALUES(4,差,0)INSERT INTO 用户表 VALUES(admin,123,管理员)INSERT INTO 用户表 VALUES(admin2,456,管理员)7、 数据库运行和维护主要窗口截图主要代码1. 数据库的连接Connection con=null;StringJ Driver=com.microsoft.sqlserver.jdbc.SQLServerDriver;/SQL数据库引擎String connectDB=jdbc:sqlserver:/127.0.0.1:1433;DatabaseName=Teacher;/数据源注意IP地址和端口号,数据库名字 Teacher为数据库名try Class.forName(JDriver);/加载数据库引擎,返回给定字符串名的类catch(ClassNotFoundException e)/e.printStackTrace();System.out.println(加载数据库引擎失败);System.exit(0);tryString user=sa;/你自己创建的用户名字和密码String password=fuxiao456; con=DriverManager.getConnection(connectDB,user,password);/连接数据库对象Statement stmt=con.createStatement();/创建SQL命令对象/关闭连接stmt.close();/关闭命令对象连接con.close();/关闭数据库连接catch(SQLException e)e.printStackTrace();/System.out.println(数据库连接错误);System.exit(0);2. 更新函数public static void function10(String id17,String id18,String id19,Connection con) int a = 0;try String sql = update 课程评价表 set 等级=? where 职工号=? and 课程号=?;PreparedStatement stmta = con.prepareStatement(sql); /执行SQL语句stmta.setString(1, id19); /用id27的字符串代替SQL语句中的第一个?stmta.setString(2, id17); /用id27的字符串代替SQL语句中的第二个?stmta.setString(3, id18); /用id27的字符串代替SQL语句中的第三个?a=stmta.executeUpdate(); /将受影响的行数赋值给acatch (Exception e) if(a=1) System.out.println(修改成功); /通过受影响的行数来判断SQL语句是否执行成功if(a=0) System.out.println(修改失败);3. 增加函数public static void function11(String id20,String id21,String id22,Connection con) int a = 0;try String sql = insert into 课程评价表 values(?,?,?);PreparedStatement stmta = con.prepareStatement(sql); /执行SQL语句 stmta.setString(1, id20); /用id20的字符串代替SQL语句中的第一个?stmta.setString(2, id21); /用id21的字符串代替SQL语句中的第一个?stmta.setString(3, id22); /用id22的字符串代替SQL语句中的第一个? a=stmta.executeUpdate(); /将受影响的行数赋值给acatch (Exception e) if(a=1) System.out.println(插入成功); /通过受影响的行数来判断SQL语句是否执行成功if(a=0) System.out.println(插入失败);4. 连接查询public static void function15(String id27,Connection con) try String sql = select 教师信息表.职工号,教师信息表.教师姓名,课程名,学分,奖金表.等级,奖金 from 教师信息表,课程表,课程评价表,奖金表 where 教师信息表.职工号=课程评价表.职工号 and 课程表.课程号=课程评价表.课程号 and 课程评价表.等级=奖金表.等级 and 教师信息表.职工号=?;PreparedStatement stmta = con.prepareStatement(sql); /执行SQL语句stmta.setString(1, id27); /用id27的字符串代替SQL语句中的第一个?ResultSet rs = stmta.executeQuery(); System.out.println(职工号+t+教师姓名+t+课程名+t+学分+t+等级+t+奖金);while (rs.next() /输出选择结果System.out.println(rs.getString(职工号)+t+rs.getString(教师姓名)+t+rs.getString(课程名)+rs.getString(学分)+t+rs.getString(等级)+t+rs.getString(奖金);catch (Exception e) 5. 分组求和public static void function19(Connection con) try String sql = select 教师信息表.职工号,教师信息表.教师姓名,sum(奖金) as 总奖金 from 教师信息表,课程评价表,奖金表 where 教师信息表.职工号=课程评价表.职工号 and 课程评价表.等级=奖金表.等级 group by 教师信息表.教师姓名,教师信息表.职工号;PreparedStatement stmta = con.prepareStatement(sql);ResultSet rs = stmta.executeQuery();System.out.println(职工号+t+教师姓名+t+总奖金);while (rs.next() System.out.println(rs.getString(职工号)+t+rs.getString(教师姓名)+t+rs.getString(总奖金);catch (Exception e) 系统测试方案1. 查询职工号为201502的教师信息;2. 修改课程号为102的学分为3;3. 在课程评价表中增加职工号为201503,课程号为103,等级为优的元组;4. 在课程评价表中删除职工号为201502,课程号为101的元组;5. 查询职工号为201501的课程信息。6. 查询每个老师获得的总奖金测试截图1.2.3.4.5.6.8、 系统安装说明1. 在SQL Server数据库新建Teacher数据库;2. 在SQL Server Teacher数据库中建立查询,执行SQL语句;3. 在Eclipse运行教师信息管理系统代码。9、 收获和体会通过本次课程设计,熟悉掌握了表的创建,数据的录入,元组的增删改查以及数据库的完整性、安全性,了解了如何使用Eclipse连接SQL Server 2008。课设系统能实现对表的增删改查,但不能实现在线注册用户。
收藏
- 资源描述:
-
^.
教师信息管理系统
题目名称
专业班级
学 号
学生姓名
指导教师
2016 年 3 月 26 日
一、实验环境
硬件环境:
处理器: Intel(R) Core(TM) i5-3230M CPU @ 2.60FHz 2.60GHz
已安装的内存(RMA): 4.00GB
软件环境
操作系统: Windows 10
数据库管理系统: SQL Server 2008
开发工具: Eclipse
二、需求分析
信息需求
教师信息(职工号,教师姓名,年龄,性别)
课程信息(课程号,课程名,学分)
课程评价信息(职工号,课程号,等级)
奖金信息(序号,等级,奖金)
用户信息(登录名,密码,用户组)
功能需求
1. 教师用户:
(1)对教师信息、课程信息、课程评价、奖金信息的查询。
2. 管理员
(1)对教师信息、课程信息、课程评价的查询,修改,增加,删除;
(2)对教师的奖金等信息的查询,修改。
安全性与完整性需求
1. 不同的身份有不同的功能权限。
2.实体完整性:通过设置主键都已实现。
数据字典
该软件的数据库由下述信息组成:
1. 教师信息
字段
字段名
类型
宽度
说明
1
职工号
Int型
2
教师姓名
字符型
10
3
年龄
Int型
大于等于18且小于等于65
4
性别
字符型
2
男或女
2.课程信息
字段
字段名
类型
宽度
说明
1
课程号
Int型
2
课程名
字符型
16
3
学分
Int型
3. 课程评价信息
字段
字段名
类型
宽度
说明
1
职工号
Int型
2
课程号
Int型
3
等级
字符型
2
优,良,中,差
4. 奖金信息
字段
字段名
类型
宽度
说明
1
序号
Int型
2
等级
字符型
2
优,良,中,差
3
奖金
Int型
5. 用户信息
字段
字段名
类型
宽度
说明
1
登录名
字符型
8
2
密码
Int型
3
用户组
字符型
6
三、概念结构设计
1. 教师信息实体
2. 课程实体
3. 课程评价实体
4. 奖金实体
5. 用户实体
概念模型:E-R图
四、逻辑结构设计
关系模型
教师信息表(职工号,教师姓名,年龄,性别),其主码为职工号。
课程表(课程号,课程名,学分),其主码为课程号。
课程评价表(职工号,课程号,等级),其主码为职工号与课程号。
奖金表(序号,等级,奖金),其主码为序号。
用户表(登录名,密码,用户组),其主码为登录名。
用户子模式
应用程序功能模块图
安全性
该系统的用户只有两种,一种是管理员,另一种是教师,管理员具有对数据库操作的所有权限,教师只有对教师的信息、课程信息、课程评价、奖金信息的查询权限。
完整性
实体完整性:通过设置主键都已实现。
参照完整性:课程评价表中的职工号和课程号分别参照教师信息表中的职工号和课程表中的课程号。
用户自定义完整性:教师信息表中的年龄必须在18到60之间,性别必须为男、女,课程评价表和奖金表中的等级必须为优、良、中、差。
五、数据库物理设计
数据的存放位置说明
D:\Program Files \Microsoft SQL Server\
MSSQL10_50.SQLEXPRESS\MSSQL\DATA
系统配置说明
使用登录名:sa 登陆密码:123 登陆SQL Server 2008
模块设计(模块IPO图)
六、数据库实施
1.创建教师信息表
CREATE TABLE 教师信息表
(职工号 INT NOT NULL PRIMARY KEY,
教师姓名 CHAR(10),
年龄 INT CHECK(年龄>=18 AND 年龄<=60),
性别 CHAR(2) CHECK(性别 IN(男,女))
)
2. 创建课程表
CREATE TABLE 课程表
(课程号 INT NOT NULL PRIMARY KEY,
课程名 CHAR(16),
学分 INT
)
3. 创建课程评价表
CREATE TABLE 课程评价表
(职工号 INT,
课程号 INT,
等级 CHAR(2) CHECK(等级 IN(优,良,中,差)),
PRIMARY KEY(职工号,课程号),
FOREIGN KEY (职工号) REFERENCES 教师信息表(职工号),
FOREIGN KEY (课程号) REFERENCES 课程表(课程号)
)
4. 创建奖金表
CREATE TABLE 奖金表
(等级 CHAR(2) CHECK(等级 IN(优,良,中,差)) PRIMARY KEY,
奖金 INT
)
5. 创建用户表
CREATE TABLE 用户表
(登录名 CHAR(8) NOT NULL PRIMARY KEY,
密码 INT,
用户组 CHAR(6)
)
6. 各表元组
INSERT INTO 教师信息表 VALUES(201501,翁嘉民,20,男)
INSERT INTO 教师信息表 VALUES(201502,陈天翔,19,男)
INSERT INTO 教师信息表 VALUES(201503,周诗妍,21,女)
INSERT INTO 教师信息表 VALUES(201504,宋嘉莹,20,女)
INSERT INTO 课程表 VALUES(100,语文,5)
INSERT INTO 课程表 VALUES(101,数学,5)
INSERT INTO 课程表 VALUES(102,英语,4)
INSERT INTO 课程表 VALUES(103,物理,3)
INSERT INTO 课程表 VALUES(104,化学,3)
INSERT INTO 课程表 VALUES(105,生物,3)
INSERT INTO 课程表 VALUES(106,地理,3)
INSERT INTO 课程表 VALUES(107,历史,3)
INSERT INTO 课程表 VALUES(108,政治,3)
INSERT INTO 课程评价表 VALUES(201501,100,优)
INSERT INTO 课程评价表 VALUES(201501,107,良)
INSERT INTO 课程评价表 VALUES(201501,108,优)
INSERT INTO 课程评价表 VALUES(201502,101,良)
INSERT INTO 课程评价表 VALUES(201502,103,良)
INSERT INTO 课程评价表 VALUES(201502,106,优)
INSERT INTO 课程评价表 VALUES(201503,102,中)
INSERT INTO 课程评价表 VALUES(201503,105,良)
INSERT INTO 课程评价表 VALUES(201503,107,优)
INSERT INTO 课程评价表 VALUES(201504,104,良)
INSERT INTO 课程评价表 VALUES(201504,105,优)
INSERT INTO 课程评价表 VALUES(201504,106,良)
INSERT INTO 奖金表 VALUES(1,优,8000)
INSERT INTO 奖金表 VALUES(2,良,4000)
INSERT INTO 奖金表 VALUES(3,中,2000)
INSERT INTO 奖金表 VALUES(4,差,0)
INSERT INTO 用户表 VALUES(admin,123,管理员)
INSERT INTO 用户表 VALUES(admin2,456,管理员)
7、 数据库运行和维护
主要窗口截图
主要代码
1. 数据库的连接
Connection con=null;
StringJ Driver
="com.microsoft.sqlserver.jdbc.SQLServerDriver";//SQL数据库引擎
String connectDB
="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Teacher";//数据源注意IP地址和端口号,数据库名字 Teacher为数据库名
try
{
Class.forName(JDriver);//加载数据库引擎,返回给定字符串名的类
}catch(ClassNotFoundException e)
{
//e.printStackTrace();
System.out.println("加载数据库引擎失败");
System.exit(0);}
try
{
String user="sa";//你自己创建的用户名字和密码
String password="fuxiao456"; con=DriverManager.getConnection(connectDB,user,password);//连接数据库对象
Statement stmt=con.createStatement();//创建SQL命令对象
//关闭连接
stmt.close();//关闭命令对象连接
con.close();//关闭数据库连接
}
catch(SQLException e)
{
e.printStackTrace();
//System.out.println("数据库连接错误");
System.exit(0);
}
2. 更新函数
public static void function10(String id17,String id18,String id19,Connection con) {
int a = 0;
try {
String sql = "update 课程评价表 set 等级=? where 职工号=? and 课程号=?";
PreparedStatement stmta = con.prepareStatement(sql); //执行SQL语句
stmta.setString(1, id19); //用id27的字符串代替SQL语句中的第一个?
stmta.setString(2, id17); //用id27的字符串代替SQL语句中的第二个?
stmta.setString(3, id18); //用id27的字符串代替SQL语句中的第三个?
a=stmta.executeUpdate(); //将受影响的行数赋值给a
}
catch (Exception e) {
}
if(a==1) System.out.println("修改成功"); //通过受影响的行数来判断SQL语句是否执行成功
if(a==0) System.out.println("修改失败");
}
3. 增加函数
public static void function11(String id20,String id21,String id22,Connection con) {
int a = 0;
try {
String sql = "insert into 课程评价表 values(?,?,?)";
PreparedStatement stmta = con.prepareStatement(sql); //执行SQL语句
stmta.setString(1, id20); //用id20的字符串代替SQL语句中的第一个?
stmta.setString(2, id21); //用id21的字符串代替SQL语句中的第一个?
stmta.setString(3, id22); //用id22的字符串代替SQL语句中的第一个?
a=stmta.executeUpdate(); //将受影响的行数赋值给a
}
catch (Exception e) {
}
if(a==1) System.out.println("插入成功"); //通过受影响的行数来判断SQL语句是否执行成功
if(a==0) System.out.println("插入失败");
}
4. 连接查询
public static void function15(String id27,Connection con) {
try {
String sql = "select 教师信息表.职工号,教师信息表.教师姓名,课程名,学分,奖金表.等级,奖金 from 教师信息表,课程表,课程评价表,奖金表 where 教师信息表.职工号=课程评价表.职工号 and 课程表.课程号=课程评价表.课程号 and 课程评价表.等级=奖金表.等级 and 教师信息表.职工号=?";
PreparedStatement stmta = con.prepareStatement(sql); //执行SQL语句
stmta.setString(1, id27); //用id27的字符串代替SQL语句中的第一个?
ResultSet rs = stmta.executeQuery();
System.out.println("职工号"+"\t"+"教师姓名"+"\t"+"课程名"+"\t"+"学分"+"\t"+"等级"+"\t"+"奖金");
while (rs.next()) { //输出选择结果
System.out.println(rs.getString("职工号")+"\t"+rs.getString("教师姓名")+"\t"+rs.getString("课程名")+rs.getString("学分")+"\t"+rs.getString("等级")+"\t"+rs.getString("奖金"));
}
}
catch (Exception e) {
}
}
5. 分组求和
public static void function19(Connection con) {
try {
String sql = "select 教师信息表.职工号,教师信息表.教师姓名,sum(奖金) as 总奖金 from 教师信息表,课程评价表,奖金表 where 教师信息表.职工号=课程评价表.职工号 and 课程评价表.等级=奖金表.等级 group by 教师信息表.教师姓名,教师信息表.职工号";
PreparedStatement stmta = con.prepareStatement(sql);
ResultSet rs = stmta.executeQuery();
System.out.println("职工号"+"\t"+"教师姓名"+"\t"+"总奖金");
while (rs.next()) {
System.out.println(rs.getString("职工号")+"\t"+rs.getString("教师姓名")+"\t"+rs.getString("总奖金"));
}
}
catch (Exception e) {
}
}
系统测试方案
1. 查询职工号为201502的教师信息;
2. 修改课程号为102的学分为3;
3. 在课程评价表中增加职工号为201503,课程号为103,等级为优的元组;
4. 在课程评价表中删除职工号为201502,课程号为101的元组;
5. 查询职工号为201501的课程信息。
6. 查询每个老师获得的总奖金
测试截图
1.
2.
3.
4.
5.
6.
8、 系统安装说明
1. 在SQL Server数据库新建Teacher数据库;
2. 在SQL Server Teacher数据库中建立查询,执行SQL语句;
3. 在Eclipse运行教师信息管理系统代码。
9、 收获和体会
通过本次课程设计,熟悉掌握了表的创建,数据的录入,元组的增删改查以及数据库的完整性、安全性,了解了如何使用Eclipse连接SQL Server 2008。课设系统能实现对表的增删改查,但不能实现在线注册用户。
展开阅读全文