广工数据库课程教学设计.doc

收藏

编号:2607408    类型:共享资源    大小:251.11KB    格式:DOC    上传时间:2020-04-23
8
金币
关 键 词:
数据库 课程 教学 设计
资源描述:
^. 教师信息管理系统 题目名称 专业班级 学 号 学生姓名 指导教师 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。课设系统能实现对表的增删改查,但不能实现在线注册用户。
展开阅读全文
提示  淘文阁 - 分享文档赚钱的网站所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:广工数据库课程教学设计.doc
链接地址:https://www.taowenge.com/p-2607408.html
关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

收起
展开