《数据库课程设计报告(共15页).doc》由会员分享,可在线阅读,更多相关《数据库课程设计报告(共15页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 浙江科技学院课 程 设 计 课程名称数据库原理题目名称教学管理系统学生学院电子信息工程学院专业班级 软件工程122学 号学生姓名陆昌柱指导教师王老师 2015年6月26日目录1、 需求分析2 1.1数据流图2 1.2数据字典3 1.3安全性和完整性要求42、 概念结构设计4 2.1 ER图43、 逻辑结构设计5 3.1关系模型5 3.2关系模型的设计5 3.3用户子模式5 3.4系统结构图63.5安全性64、 数据库物理设计64.1建立索引64.2数据库存放位置64.3系统配置74.4模块设计75、 数据库实施75.1创建数据库及数据对象(括号中为对应的SQL脚本文
2、件)75.2数据备份和恢复方案75.3用户界面的设计和实现及相关应用程序编码7 教学管理系统 1 引言 1.1 编写目的随着知识经济,科技的不断发展以及科技在各领域的不断深入,越来越多的行业和领域步入信息的智能化阶段。信息自动化处理也是提高效益,规范管理,迅速客观审查的有效途径。管理系统在当今教育领域是一个不可缺少的工具软件。然而,一个好的高质量的软件少只有少,并为根本实现智能化,也不利于科学的管理和审查。因此,在本软件中心准备开发一个功能完善的成绩管理系统。2 定义1 系统名称:教师查询管理系统2 数据库管理软件:navicat for MySQL3 数据库设计人员:陆昌柱。4 数据库设计采
3、用软件:Microsoft Office Visio 20031、 需求分析2.1数据流图学生或管理员等教学管理系统管理员增删改信息取得信息取得信息选课教师取得信息管理成绩说明:1、用户请求包括:(1) 学生基本信息管理新生信息录入。学生信息修改:按学号查询出某学生的信息并做信息修改。(2) 系基本信息管理:系的基本信息输入、修改、删除(3) 课程信息管理:课程信息的输入、修改、删除(4) 教职工信息管理:教职工信息的输入、修改、删除(5) 选课管理: 每学期所选课程的学分不能超过15分。学生可以同时选修一门或多门课程。 可以同时为多个学生选修某一门或某几门课程。删除和修改选课信息。(6) 成
4、绩管理按课程输入和修改成绩。按学生输入和修改成绩。(7) 信息查询按学号、姓名、系号查询学生基本信息。按职工号、姓名、系号查询教职工基本信息。按系号、系名称查询系的基本信息。按课程号、课程名称、上课教师姓名查询课程基本信息。按学号、学生姓名、课程号、课程名称、上课教师姓名、系号查询学生成绩,内容包括课程基本情况。若查询涉及多门课程,则按课程分组。每门课程按总评成绩从高分到低分给出选修该门课程的所有学生的成绩(平时成绩、考试成绩和总评成绩)。(8) 统计报表成绩登记表,内容包括课程基本信息(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间)、选课学生名单(学号、姓名、性别)
5、,每个学生的平时成绩(空格)、考试成绩(空格)和总评成绩(空格),按学号排序:顺序输出所有课程的成绩登记表。按课程号、课程名称、教师姓名输出对应课程的成绩登记表。2、以上的用户请求经应用程序的转化,化为对数据库中的相应的表或视图的操作,数据库再把处理的结果(或都是错误信息)返回结应用程序。3、应用程序把结果返回给用户,该结果可能为一个对表操作的结果(如插入,删除等),也可能为一个查询的结果,甚至可能为一个错误的信息。2.2数据字典根据题目的需求,教学系统主要是对学生,教职工,学院,课程,成绩等的管理。由此分析得到如下数据结构:数据库的表结构的设计,数据项如下,表名分别为:users, scor
6、e, department, student, teach_job, course:2.3安全性和完整性要求安全性和完整性要求:通过设置外键,建立它们之间的关系,并使它们级联更新相关的字段,级联删除相关的记录。对于构成了环的级联更新或删除,而不能建立级联更新或删除的,通过建立触发器,使得它们保持数据的完整性。通过不同权限的人登录而设置其对数据的增删改的权限增强数据的安全性。本系统的外键设置和级联操作有:外键:stuent表的depth_id。course表的t_id。score表的stu_id和c_id等。由于score表的两个键若都级联操作会构成环,所以级联不成功。所以在这里建立两个触发器取
7、代级联操作,从而实现数据库的完整性。2、 概念结构设计3.1 ER图系系号系名称系的简介属于1m教 师职工号姓名性别生日系号职称方向拥 有1学 生m学号姓名性别出生年月入学成绩系号讲 授mn课程课程号课程名职工号学时学分上课时间上课地点考试时间选修mn成绩p学号课程号成绩ER图3、 逻辑结构设计4.1 关系模型4.1.1 关系模型的设计学生(学号、姓名、性别、出生日期、入学成绩、所在系号、密码)教师(职工号、姓名、性别、出生年月、所在系号、职称、专业及教学方向)系(系号、系名称、系的简介)课程(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间)成绩(学号、课程号、平时成绩
8、、考试成绩、总评成绩)拥有(学号、系号)属于(职工号、系号)讲授(职工号、课程号、上课时间)选修(学号、课程号、上课时间)4.2 用户子模式成绩视图(学号、学生姓名、教师号、教师姓名、课程号、上课时间、课程名、 平时成绩、考试成绩、总评成绩、)选课视图(学号、课程号、上课时间、平时成绩、考试成绩、总评成绩、课程名、学时、学分)统计视图(课程号、上课时间、课程名称、任课教师号、学时、学分、上课地点、考试时间、学号、学生姓名、学生性别、平时成绩、考试成绩、总评成绩)历史表学生表系表课程表教师表成绩表学生号学生号教师号系 号课程号学生号上课时间课程号上课时间选课视图成绩视图统计视图4.3 安全性安全
9、性的实现主要是通过应用程序来实现,在程序中设定一个检查用户名和密码的机构,用户要进入系统就先要输入授权了的用户名和密码方能进入。4、 数据库物理设计5.1 建立索引为各个表的主码建立索引。学生(学号)教师(职工号)系(系号)课程(课程号、上课时间)成绩(学号、课程号)5.2 数据库存放位置数据的存储和数据处理在综合考虑存取时间,存储空间的利用率,维护的代价3个方面的因素,进行权衡,选择折中的方案。将易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。5.3 系统配置(1) Windows XP(2) MicorSoft SQL Server 2000 (必需升级到SP3)(3) Ecl
10、ipse开发环境5、 数据库实施6.1 创建数据库及数据对象(括号中为对应的SQL脚本文件)1、 创建数据库的对象:create database teach;2、 创建表的过程如下:create table users(user_name varchar(15) not null,password varchar(15),popedom tinyint not null); create table department(depth_id smallint primary key,depth_name char(14),discription varchar(50);create table
11、 teach_job(t_id int primary key,t_name char(8),sex char(2),birthday smalldatetime,depth_id smallint foreign key references department(depth_id),job char(10),speciality char(16),direction char(16);create table course(c_id smallint primary key,c_name char(16) not null,t_id int foreign key references t
12、each_job(t_id),credit smallint,period smallint,class_time smalldatetime,class_area char(10),exam_time smalldatetime);create table student(stu_id char(6) primary key,s_name char(8),birthday smalldatetime,score int,depth_id smallint foreign key references department(depth_id);create table score(stu_id
13、 char(6),c_id smallint,u_score int,exam_score int,total int,primary key(stu_id,c_id);6.2 数据备份和恢复方案事务故障的恢复是由系统自动完成的,对用户透明。系统故障的恢复由系统重新启动时自动完成,不需要用户干预。介质故障的恢复则由人干预完成,方法为重装数据库,然后重做已完成的事务。1、数据库备份方案:每月进行一次数据库的完整备份,包括所有的数据及数据库对象。速度较慢,占用大量磁盘空间。应该在整个数据库不进行其他事务操作的时候备份可以提高数据备份的速度。每天进行事务日志备份,事务日志备份是指对数据库发生的事务进
14、行备份,包括上次进行事务日志备份,差异备份和数据库完全备份之后所有已经完成的事务。所需的时间和磁盘空间要求较少每小时进行差异备份,是备份一次数据备份以来的数据变化。a) 恢复解决方案:先恢复最近一次的数据库备份,接着进行差异备份的恢复,最后进行事务日志血仇的恢复。6.3 用户界面的设计和实现及相关应用程序编码本系统的程序代码结构如下图所示:主要是四个包:1其中中frame包中包含一个layout包。frame包主要是视图层的代码,主界面,登录界面,各种操作的界面都在其中。此外包含一个包layout,在其中有一个类,用于网格组布局的封装了网格组布局的一些代码。在MyAction中封装的是主窗口里
15、面的所有菜单事件。2在model包中主要处理的是模型层,对数据的操作封装其中。3query一个类包含了对学生信息的查询。4此外在util中包含的是对数据库的所有操作。其中有对数据库的更改,把数据库的数据和表格模型相关联起来的等操作。主界面如下所示:5关键代码如下:由于代码太多,以下只写出很少的一部分代码1对数据库的操作:public class ConneJdbc protected static Connection connection = null;private Connection con = null; private ResultSet rs = null; private Re
16、sultSetMetaData rsmd = null;public ConneJdbc() try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);connection = DriverManager.getConnection(jdbc:microsoft:sqlserver:/127.0.0.1:1433;DatabaseName=teaching ,sa, ); catch (java.lang.ClassNotFoundException classnotfound) classnotfound.printSta
17、ckTrace(); catch (java.sql.SQLException sql) sql.printStackTrace();public Connection getCon() return connection;public Vector selectSql(String sql) Vector vdata = new Vector();try rs = connection.prepareStatement(sql).executeQuery();rsmd = rs.getMetaData();while (rs.next()vdata.addElement(rs.getObje
18、ct(1); catch (SQLException e) e.printStackTrace();return vdata;public String selectOne(String sql) ResultSet rs = null; ResultSetMetaData rsmd = null;try rs = connection.prepareStatement(sql).executeQuery();rsmd = rs.getMetaData();if (rs.next()return (String)rs.getObject(1); catch (SQLException e) e
19、.printStackTrace();return null;public boolean inTable(String user, String pa) throws SQLException Statement stmt = null;PreparedStatement pstmt = null;ResultSet rs = null;String sql = select password from users +where user_name= + user + and password=+ pa + ;rs = connection.prepareStatement(sql).exe
20、cuteQuery();if(rs.next()return true;else return false;2表格模型的处理:public class SqlTableModel extends DefaultTableModel private Connection con = null; private ResultSet rs = null; private ResultSetMetaData rsmd = null;public SqlTableModel(String sqlStr, String name) con = new ConneJdbc().getCon(); try r
21、s = con.prepareStatement(sqlStr).executeQuery(); rsmd = rs.getMetaData(); for(int i=0; irsmd.getColumnCount(); i+) addColumn(namei); while(rs.next() Vector vdata = new Vector(); for ( int i = 1 ; i = rsmd.getColumnCount() ; i +) vdata.addElement(rs.getObject(i); addRow(vdata); catch(java.sql.SQLExce
22、ption sql) sql.printStackTrace(); finally try con.close(); catch (SQLException e) e.printStackTrace(); 3)Updatabase的一部分代码:public class UpdateDatebase extends ConneJdbc private Statement stmt = null;private PreparedStatement pstmt = null;private String infoStr = null;private String sql;public UpdateD
23、atebase() public boolean insert(DepData data) throws SQLException String sql = insert into department (depth_name,discription) values (+ data.getDepth_name() + , + data.getDiscription() + );pstmt = connection.prepareStatement(sql); pstmt.execute();return true;public boolean insert(StuData data) thro
24、ws SQLException sql = insert into student values (+ data.getStu_id() + , + data.getS_name() + , + data.getSex() + , + data.getBirthday() + ,+ data.getScore() +, + data.getDepth_id() + );pstmt = connection.prepareStatement(sql); pstmt.execute();return true;public boolean insert(Teadata data) throws S
25、QLException sql = insert into teach_job values (+ data.getT_id() + , + data.getT_name() + , + data.getSex() + , + data.getBirthday() + ,+ data.getDepth_id() +, + data.getJob() + ,+data.getSpeciality() + ,+ data.getDirection() + );pstmt = connection.prepareStatement(sql); pstmt.execute();return true;
26、public boolean insert(CourseData data) throws SQLException sql = insert into course (c_name,t_id,credit,period,class_time, +class_area,exam_time) values (+ + data.getC_name() + , + data.getT_id() + , + data.getCredit() + ,+ data.getPeriod() +, + data.getClass_time() + ,+ data.getClass_area() +, + da
27、ta.getExam_time() + );pstmt = connection.prepareStatement(sql); pstmt.execute();return true;6、 系统测试方案和测试报告系统的测试:由于测试的数据众多,窗口众多,就不一一截图,以下是部分的测试截图:1)学生管理测试窗口如下:2)院系管理测试:3)教工管理测试:4)成绩管理:8.1 程序的运行系统的使用简单,根据可视化的界面直接操作。系统的主函数放在类:EnterFrame中,通过登录界面的登录进入MainFrame这个主界面程序。运行EnterFrame,则出来登录界面如下:本系统的管理员用户是root,密码也是root。在程序的运行前,先要导入数据库的JDBC驱动程序的包,在工程文件夹的lib文件夹中有三个包,msbase, mssqlserver, msutil。这样就可以运行程序了。专心-专注-专业