《数据库课程设计报告-教学管理系统(+java实现).doc》由会员分享,可在线阅读,更多相关《数据库课程设计报告-教学管理系统(+java实现).doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1、 相关技术简介1.1 RDBMS简介SQL Server 是一个关系数据库管理系统它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的于1988 年推出了第一个OS/2 版本在Windows NT 推出后Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了Microsoft 将SQL Server 移植到Windows NT 系统上专注于开发推广SQL Server 的Windows NT 版本Sybase 则较专注于SQL Server在UNIX 操作系统上的应用在本书中介绍的是Microsoft SQL Server 以后简称
2、为SQL Server或MS SQL Server 。SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统的最新版本该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能具有使用方便可伸缩性好与相关软件集成程度高等优点可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。1.2 Eclipse简介Eclipse是一种可扩展的开放源代码IDE。2001年11月,IBM公司捐出价值4,000万美元的源代码组建了Eclip
3、se联盟,并由该联盟负责这种工具的后续开发。集成开发环境(IDE)经常将其应用范围限定在“开发、构建和调试”的周期之中。为了帮助集成开发环境(IDE)克服目前的局限性,业界厂商合作创建了Eclipse平台。Eclipse允许在同一IDE中集成来自不同供应商的工具,并实现了工具之间的互操作性,从而显著改变了项目工作流程,使开发者可以专注在实际的嵌入式目标上。 Eclipse框架的这种灵活性来源于其扩展点。它们是在XML中定义的已知接口,并充当插件的耦合点。扩展点的范围包括从用在常规表述过滤器中的简单字符串,到一个Java类的描述。任何Eclipse插件定义的扩展点都能够被其它插件使用,反之,任何
4、Eclipse插件也可以遵从其它插件定义的扩展点。除了解由扩展点定义的接口外,插件不知道它们通过扩展点提供的服务将如何被使用。 利用Eclipse,我们可以将高级设计(也许是采用UML)与低级开发工具(如应用调试器等)结合在一起。如果这些互相补充的独立工具采用Eclipse扩展点彼此连接,那么当我们用调试器逐一检查应用时,UML对话框可以突出显示我们正在关注的器件。事实上,由于Eclipse并不了解开发语言,所以无论Java语言调试器、C/C+调试器还是汇编调试器都是有效的,并可以在相同的框架内同时瞄准不同的进程或节点。 Eclipse的最大特点是它能接受由Java开发者自己编写的开放源代码插
5、件,这类似于微软公司的Visual Studio和Sun 微系统公司的NetBeans平台。Eclipse为工具开发商提供了更好的灵活性,使他们能更好地控制自己的软件技术。Eclipse 联盟已经宣布将在2004年中期发布其3.0版软件。这是一款非常受欢迎的java开发工具,这国内的用户越来越多,实际上实用它java开发人员是最多的。缺点就是较复杂,对初学者来说,理解起来比较困难。2、 需求分析2.1数据流图学生或管理员等教学管理系统管理员增删改信息取得信息取得信息选课教师师取得信息管理成绩说明:1、用户请求包括:(1) 学生基本信息管理新生信息录入。学生信息修改:按学号查询出某学生的信息并做
6、信息修改。(2) 系基本信息管理:系的基本信息输入、修改、删除(3) 课程信息管理:课程信息的输入、修改、删除(4) 教职工信息管理:教职工信息的输入、修改、删除(5) 选课管理: 每学期所选课程的学分不能超过15分。学生可以同时选修一门或多门课程。 可以同时为多个学生选修某一门或某几门课程。删除和修改选课信息。(6) 成绩管理按课程输入和修改成绩。按学生输入和修改成绩。(7) 信息查询按学号、姓名、系号查询学生基本信息。按职工号、姓名、系号查询教职工基本信息。按系号、系名称查询系的基本信息。按课程号、课程名称、上课教师姓名查询课程基本信息。按学号、学生姓名、课程号、课程名称、上课教师姓名、系
7、号查询学生成绩,内容包括课程基本情况。若查询涉及多门课程,则按课程分组。每门课程按总评成绩从高分到低分给出选修该门课程的所有学生的成绩(平时成绩、考试成绩和总评成绩)。(8) 统计报表成绩登记表,内容包括课程基本信息(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间)、选课学生名单(学号、姓名、性别),每个学生的平时成绩(空格)、考试成绩(空格)和总评成绩(空格),按学号排序:顺序输出所有课程的成绩登记表。按课程号、课程名称、教师姓名输出对应课程的成绩登记表。2、以上的用户请求经应用程序的转化,化为对数据库中的相应的表或视图的操作,数据库再把处理的结果(或都是错误信息)返
8、回结应用程序。3、应用程序把结果返回给用户,该结果可能为一个对表操作的结果(如插入,删除等),也可能为一个查询的结果,甚至可能为一个错误的信息。2.2数据字典根据题目的需求,教学系统主要是对学生,教职工,学院,课程,成绩等的管理。由此分析得到如下数据结构:数据库的表结构的设计,数据项如下,表名分别为:users, score, department, student, teach_job, course:2.3安全性和完整性要求安全性和完整性要求:通过设置外键,建立它们之间的关系,并使它们级联更新相关的字段,级联删除相关的记录。对于构成了环的级联更新或删除,而不能建立级联更新或删除的,通过建立
9、触发器,使得它们保持数据的完整性。通过不同权限的人登录而设置其对数据的增删改的权限增强数据的安全性。本系统的外键设置和级联操作有:外键:stuent表的depth_id。course表的t_id。score表的stu_id和c_id等。由于score表的两个键若都级联操作会构成环,所以级联不成功。所以在这里建立两个触发器取代级联操作,从而实现数据库的完整性。3、 概念结构设计3.1 ER图系系号系名称系的简介属于1m教 师职工号姓名性别生日系号职称方向拥 有1学 生m学号姓名性别出生年月入学成绩系号讲 授mn课程课程号课程名职工号学时学分上课时间上课地点考试时间选修mn成绩p学号课程号成绩ER
10、图4、 逻辑结构设计4.1 关系模型4.1.1 关系模型的设计学生(学号、姓名、性别、出生日期、入学成绩、所在系号、密码)教师(职工号、姓名、性别、出生年月、所在系号、职称、专业及教学方向)系(系号、系名称、系的简介)课程(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间)成绩(学号、课程号、平时成绩、考试成绩、总评成绩)拥有(学号、系号)属于(职工号、系号)讲授(职工号、课程号、上课时间)选修(学号、课程号、上课时间)4.2 用户子模式成绩视图(学号、学生姓名、教师号、教师姓名、课程号、上课时间、课程名、 平时成绩、考试成绩、总评成绩、)选课视图(学号、课程号、上课时间
11、、平时成绩、考试成绩、总评成绩、课程名、学时、学分)统计视图(课程号、上课时间、课程名称、任课教师号、学时、学分、上课地点、考试时间、学号、学生姓名、学生性别、平时成绩、考试成绩、总评成绩)历史表学生表系表课程表教师表成绩表学生号学生号教师号系 号课程号学生号上课时间课程号上课时间选课视图成绩视图统计视图4.3 安全性安全性的实现主要是通过应用程序来实现,在程序中设定一个检查用户名和密码的机构,用户要进入系统就先要输入授权了的用户名和密码方能进入。5、 数据库物理设计5.1 建立索引为各个表的主码建立索引。学生(学号)教师(职工号)系(系号)课程(课程号、上课时间)成绩(学号、课程号)5.2
12、数据库存放位置数据的存储和数据处理在综合考虑存取时间,存储空间的利用率,维护的代价3个方面的因素,进行权衡,选择折中的方案。将易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。5.3 系统配置(1) Windows XP(2) MicorSoft SQL Server 2000 (必需升级到SP3)(3) Eclipse开发环境6、 数据库实施6.1 创建数据库及数据对象(括号中为对应的SQL脚本文件)1、 创建数据库的对象:create database teach;2、 创建表的过程如下:create table users(user_name varchar(15) not n
13、ull,password varchar(15),popedom tinyint not null); create table department(depth_id smallint primary key,depth_name char(14),discription varchar(50);create table teach_job(t_id int primary key,t_name char(8),sex char(2),birthday smalldatetime,depth_id smallint foreign key references department(dept
14、h_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 teach_job(t_id),credit smallint,period smallint,class_time smalldatetime,class_area char(10),exam_time smalldatetime);create table student(
15、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 char(6),c_id smallint,u_score int,exam_score int,total int,primary key(stu_id,c_id);6.2 数据备份和恢复方案事务故障的恢复是由系统自动完成的,对用户透明。系统故障的恢复由系统重新启动时自动
16、完成,不需要用户干预。介质故障的恢复则由人干预完成,方法为重装数据库,然后重做已完成的事务。1、数据库备份方案:每月进行一次数据库的完整备份,包括所有的数据及数据库对象。速度较慢,占用大量磁盘空间。应该在整个数据库不进行其他事务操作的时候备份可以提高数据备份的速度。每天进行事务日志备份,事务日志备份是指对数据库发生的事务进行备份,包括上次进行事务日志备份,差异备份和数据库完全备份之后所有已经完成的事务。所需的时间和磁盘空间要求较少每小时进行差异备份,是备份一次数据备份以来的数据变化。a) 恢复解决方案:先恢复最近一次的数据库备份,接着进行差异备份的恢复,最后进行事务日志血仇的恢复。6.3 用户
17、界面的设计和实现及相关应用程序编码本系统的程序代码结构如下图所示:主要是四个包:1其中中frame包中包含一个layout包。frame包主要是视图层的代码,主界面,登录界面,各种操作的界面都在其中。此外包含一个包layout,在其中有一个类,用于网格组布局的封装了网格组布局的一些代码。在MyAction中封装的是主窗口里面的所有菜单事件。2在model包中主要处理的是模型层,对数据的操作封装其中。3query一个类包含了对学生信息的查询。4此外在util中包含的是对数据库的所有操作。其中有对数据库的更改,把数据库的数据和表格模型相关联起来的等操作。主界面如下所示:5关键代码如下:由于代码太多
18、,以下只写出很少的一部分代码1对数据库的操作:public class ConneJdbc protected static Connection connection = null;private Connection con = null; private ResultSet rs = null; private ResultSetMetaData rsmd = null;public ConneJdbc() try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);connection = DriverManager.
19、getConnection(jdbc:microsoft:sqlserver:/127.0.0.1:1433;DatabaseName=teaching ,sa, ); catch (java.lang.ClassNotFoundException classnotfound) classnotfound.printStackTrace(); catch (java.sql.SQLException sql) sql.printStackTrace();public Connection getCon() return connection;public Vector selectSql(St
20、ring sql) Vector vdata = new Vector();try rs = connection.prepareStatement(sql).executeQuery();rsmd = rs.getMetaData();while (rs.next()vdata.addElement(rs.getObject(1); catch (SQLException e) e.printStackTrace();return vdata;public String selectOne(String sql) ResultSet rs = null; ResultSetMetaData
21、rsmd = null;try rs = connection.prepareStatement(sql).executeQuery();rsmd = rs.getMetaData();if (rs.next()return (String)rs.getObject(1); catch (SQLException e) e.printStackTrace();return null;public boolean inTable(String user, String pa) throws SQLException Statement stmt = null;PreparedStatement
22、pstmt = null;ResultSet rs = null;String sql = select password from users +where user_name= + user + and password=+ pa + ;rs = connection.prepareStatement(sql).executeQuery();if(rs.next()return true;else return false;2表格模型的处理:public class SqlTableModel extends DefaultTableModel private Connection con
23、 = null; private ResultSet rs = null; private ResultSetMetaData rsmd = null;public SqlTableModel(String sqlStr, String name) con = new ConneJdbc().getCon(); try rs = con.prepareStatement(sqlStr).executeQuery(); rsmd = rs.getMetaData(); for(int i=0; irsmd.getColumnCount(); i+) addColumn(namei); while
24、(rs.next() Vector vdata = new Vector(); for ( int i = 1 ; i “系统”-“高级”-“环境变量”中新建或修改如下几个环境变量:(注意,安装的JDK的位置不同,设置也不同,只要设为相应的目录下的相应文件即可) 用户变量中,path变量需要新增值“C:j2sdk1.6.0bin;.” 系统变量中,CLASSPATH变量需要新增值“C:j2sdk1.6.0libtools.jar;C:j2sdk1.6.0libdt.jar” 系统变量中,HOME_PATH变量需要设置值“C:j2sdk1.6.0”.8.2 Eclipse的安装把压缩包解压到任意
25、的目录下即可。8.3 数据库的升级与数据的导入SQL Sever 2000安装完成后,请升级到SP3,双击chs_sql2ksp3.exe,解压到任一文件夹,再双击setup.bat,即可。数据的导入请选用SQL Sever 2000的“附加数据库”功能,在企业管理器中,选中“数据库”,右键,选中“附加数据库”再按提示选出要附加的数据库即可。8.4 程序的运行本系统的使用简单,根据可视化的界面直接操作。系统的主函数放在类:EnterFrame中,通过登录界面的登录进入MainFrame这个主界面程序。运行EnterFrame,则出来登录界面如下:本系统的管理员用户是root,密码也是root。在程序的运行前,先要导入数据库的JDBC驱动程序的包,在工程文件夹的lib文件夹中有三个包,msbase, mssqlserver, msutil。这样就可以运行程序了。9、 参考文献参考资料:Java 核心技术第7版数据库系统概论王珊编第四版SQL Server 数据库应用技术张水平编软件工程李代平编第二版Java API文档电子版等