广工数据库课程设计文档格式.docx
《广工数据库课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《广工数据库课程设计文档格式.docx(14页珍藏版)》请在冰点文库上搜索。
2.实体完整性:
通过设置主键都已实现。
数据字典
该软件的数据库由下述信息组成:
1.教师信息
字段
字段名
类型
宽度
说明
1
职工号
Int型
2
教师姓名
字符型
10
3
年龄
大于等于18且小于等于65
4
性别
男或女
2.课程信息
课程号
课程名
16
学分
3.课程评价信息
等级
优,良,中,差
4.奖金信息
序号
奖金
5.用户信息
登录名
8
密码
用户组
6
三、概念结构设计
1.教师信息实体
2.课程实体
3.课程评价实体
4.奖金实体
5.用户实体
概念模型:
E-R图
四、逻辑结构设计
关系模型
教师信息表(职工号,教师姓名,年龄,性别),其主码为职工号。
课程表(课程号,课程名,学分),其主码为课程号。
课程评价表(职工号,课程号,等级),其主码为职工号与课程号。
奖金表(序号,等级,奖金),其主码为序号。
用户表(登录名,密码,用户组),其主码为登录名。
用户子模式
应用程序功能模块图
安全性
该系统的用户只有两种,一种是管理员,另一种是教师,管理员具有对数据库操作的所有权限,教师只有对教师的信息、课程信息、课程评价、奖金信息的查询权限。
完整性
实体完整性:
参照完整性:
课程评价表中的职工号和课程号分别参照教师信息表中的职工号和课程表中的课程号。
用户自定义完整性:
教师信息表中的年龄必须在18到60之间,性别必须为男、女,课程评价表和奖金表中的等级必须为优、良、中、差。
五、数据库物理设计
数据的存放位置说明
D:
\ProgramFiles\MicrosoftSQLServer\
MSSQL10_50.SQLEXPRESS\MSSQL\DATA
系统配置说明
使用登录名:
sa登陆密码:
123登陆SQLServer2008
模块设计(模块IPO图)
六、数据库实施
1.创建教师信息表
CREATETABLE教师信息表
(职工号INTNOTNULLPRIMARYKEY,
教师姓名CHAR(10),
年龄INTCHECK(年龄>
=18AND年龄<
=60),
性别CHAR
(2)CHECK(性别IN('
男'
'
女'
))
)
2.创建课程表
CREATETABLE课程表
(课程号INTNOTNULLPRIMARYKEY,
课程名CHAR(16),
学分INT
3.创建课程评价表
CREATETABLE课程评价表
(职工号INT,
课程号INT,
等级CHAR
(2)CHECK(等级IN('
优'
良'
中'
差'
)),
PRIMARYKEY(职工号,课程号),
FOREIGNKEY(职工号)REFERENCES教师信息表(职工号),
FOREIGNKEY(课程号)REFERENCES课程表(课程号)
4.创建奖金表
CREATETABLE奖金表
(等级CHAR
(2)CHECK(等级IN('
))PRIMARYKEY,
奖金INT
)
5.创建用户表
CREATETABLE用户表
(登录名CHAR(8)NOTNULLPRIMARYKEY,
密码INT,
用户组CHAR(6)
6.各表元组
INSERTINTO教师信息表VALUES(201501,'
翁嘉民'
20,'
)
INSERTINTO教师信息表VALUES(201502,'
陈天翔'
19,'
INSERTINTO教师信息表VALUES(201503,'
周诗妍'
21,'
INSERTINTO教师信息表VALUES(201504,'
宋嘉莹'
INSERTINTO课程表VALUES(100,'
语文'
5)
INSERTINTO课程表VALUES(101,'
数学'
INSERTINTO课程表VALUES(102,'
英语'
4)
INSERTINTO课程表VALUES(103,'
物理'
3)
INSERTINTO课程表VALUES(104,'
化学'
INSERTINTO课程表VALUES(105,'
生物'
INSERTINTO课程表VALUES(106,'
地理'
INSERTINTO课程表VALUES(107,'
历史'
INSERTINTO课程表VALUES(108,'
政治'
INSERTINTO课程评价表VALUES(201501,100,'
INSERTINTO课程评价表VALUES(201501,107,'
INSERTINTO课程评价表VALUES(201501,108,'
INSERTINTO课程评价表VALUES(201502,101,'
INSERTINTO课程评价表VALUES(201502,103,'
INSERTINTO课程评价表VALUES(201502,106,'
INSERTINTO课程评价表VALUES(201503,102,'
INSERTINTO课程评价表VALUES(201503,105,'
INSERTINTO课程评价表VALUES(201503,107,'
INSERTINTO课程评价表VALUES(201504,104,'
INSERTINTO课程评价表VALUES(201504,105,'
INSERTINTO课程评价表VALUES(201504,106,'
INSERTINTO奖金表VALUES('
1'
8000)
2'
4000)
3'
2000)
4'
0)
INSERTINTO用户表VALUES('
admin'
123,'
管理员'
admin2'
456,'
七、数据库运行和维护
主要窗口截图
主要代码
1.数据库的连接
Connectioncon=null;
StringJDriver
="
com.microsoft.sqlserver.jdbc.SQLServerDriver"
;
//SQL数据库引擎
StringconnectDB
jdbc:
sqlserver:
//127.0.0.1:
1433;
DatabaseName=Teacher"
//数据源注意IP地址和端口号,数据库名字Teacher为数据库名
try
{
Class.forName(JDriver);
//加载数据库引擎,返回给定字符串名的类
}catch(ClassNotFoundExceptione)
//e.printStackTrace();
System.out.println("
加载数据库引擎失败"
);
System.exit(0);
}
Stringuser="
sa"
//你自己创建的用户名字和密码
Stringpassword="
fuxiao456"
con=DriverManager.getConnection(connectDB,user,password);
//连接数据库对象
Statementstmt=con.createStatement();
//创建SQL命令对象
//关闭连接
stmt.close();
//关闭命令对象连接
con.close();
//关闭数据库连接
catch(SQLExceptione)
e.printStackTrace();
//System.out.println("
数据库连接错误"
2.更新函数
publicstaticvoidfunction10(Stringid17,Stringid18,Stringid19,Connectioncon){
inta=0;
try{
Stringsql="
update课程评价表set等级=?
where职工号=?
and课程号=?
"
PreparedStatementstmta=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(Exceptione){
if(a==1)System.out.println("
修改成功"
//通过受影响的行数来判断SQL语句是否执行成功
if(a==0)System.out.println("
修改失败"
}
3.增加函数
publicstaticvoidfunction11(Stringid20,Stringid21,Stringid22,Connectioncon){
inta=0;
try{
Stringsql="
insertinto课程评价表values(?
?
)"
PreparedStatementstmta=con.prepareStatement(sql);
stmta.setString(1,id20);
//用id20的字符串代替SQL语句中的第一个?
stmta.setString(2,id21);
//用id21的字符串代替SQL语句中的第一个?
stmta.setString(3,id22);
//用id22的字符串代替SQL语句中的第一个?
a=stmta.executeUpdate();
}
catch(Exceptione){
if(a==1)System.out.println("
插入成功"
if(a==0)System.out.println("
插入失败"
4.连接查询
publicstaticvoidfunction15(Stringid27,Connectioncon){
select教师信息表.职工号,教师信息表.教师姓名,课程名,学分,奖金表.等级,奖金from教师信息表,课程表,课程评价表,奖金表where教师信息表.职工号=课程评价表.职工号and课程表.课程号=课程评价表.课程号and课程评价表.等级=奖金表.等级and教师信息表.职工号=?
stmta.setString(1,id27);
//用id27的字符串代替SQL语句中的第一个?
ResultSetrs=stmta.executeQuery();
System.out.println("
职工号"
+"
\t"
教师姓名"
课程名"
学分"
等级"
奖金"
while(rs.next()){//输出选择结果
System.out.println(rs.getString("
)+"
+rs.getString("
)+rs.getString("
));
5.分组求和
publicstaticvoidfunction19(Connectioncon){
select教师信息表.职工号,教师信息表.教师姓名,sum(奖金)as总奖金from教师信息表,课程评价表,奖金表where教师信息表.职工号=课程评价表.职工号and课程评价表.等级=奖金表.等级groupby教师信息表.教师姓名,教师信息表.职工号"
ResultSetrs=stmta.executeQuery();
System.out.println("
总奖金"
while(rs.next()){
System.out.println(rs.getString("
}
系统测试方案
1.查询职工号为201502的教师信息;
2.修改课程号为102的学分为3;
3.在课程评价表中增加职工号为201503,课程号为103,等级为优的元组;
4.在课程评价表中删除职工号为201502,课程号为101的元组;
5.查询职工号为201501的课程信息。
6.查询每个老师获得的总奖金
测试截图
1.
2.
3.
4.
5.
6.
八、系统安装说明
1.在SQLServer数据库新建Teacher数据库;
2.在SQLServerTeacher数据库中建立查询,执行SQL语句;
3.在Eclipse运行教师信息管理系统代码。
九、收获和体会
通过本次课程设计,熟悉掌握了表的创建,数据的录入,元组的增删改查以及数据库的完整性、安全性,了解了如何使用Eclipse连接SQLServer2008。
课设系统能实现对表的增删改查,但不能实现在线注册用户。