1、数据库课程设计报告教学管理系统+java实现doc数据库课程设计报告-教学管理系统(+java实现)1、相关技术简介1.1RDBMS简介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 Serve
2、r在UNIX 操作系统上的应用在本书中介绍的是Microsoft SQL Server 以后简称为SQL Server或MS SQL Server 。SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统的最新版本该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能具有使用方便可伸缩性好与相关软件集成程度高等优点可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。1.2Eclipse简介Eclipse是一种可扩展的
3、开放源代码IDE。2001年11月,IBM公司捐出价值4,000万美元的源代码组建了Eclipse联盟,并由该联盟负责这种工具的后续开发。集成开发环境(IDE)经常将其应用范围限定在“开发、构建和调试”的周期之中。为了帮助集成开发环境(IDE)克服目前的局限性,业界厂商合作创建了Eclipse平台。Eclipse允许在同一IDE中集成来自不同供应商的工具,并实现了工具之间的互操作性,从而显著改变了项目工作流程,使开发者可以专注在实际的嵌入式目标上。 Eclipse框架的这种灵活性来源于其扩展点。它们是在XML中定义的已知接口,并充当插件的耦合点。扩展点的范围包括从用在常规表述过滤器中的简单字符
4、串,到一个Java类的描述。任何Eclipse插件定义的扩展点都能够被其它插件使用,反之,任何Eclipse插件也可以遵从其它插件定义的扩展点。除了解由扩展点定义的接口外,插件不知道它们通过扩展点提供的服务将如何被使用。 利用Eclipse,我们可以将高级设计(也许是采用UML)与低级开发工具(如应用调试器等)结合在一起。如果这些互相补充的独立工具采用Eclipse扩展点彼此连接,那么当我们用调试器逐一检查应用时,UML对话框可以突出显示我们正在关注的器件。事实上,由于Eclipse并不了解开发语言,所以无论Java语言调试器、C/C+调试器还是汇编调试器都是有效的,并可以在相同的框架内同时瞄
5、准不同的进程或节点。 按学生输入和修改成绩。(7) 信息查询按学号、姓名、系号查询学生基本信息。按职工号、姓名、系号查询教职工基本信息。按系号、系名称查询系的基本信息。按课程号、课程名称、上课教师姓名查询课程基本信息。按学号、学生姓名、课程号、课程名称、上课教师姓名、系号查询学生成绩,内容包括课程基本情况。若查询涉及多门课程,则按课程分组。每门课程按总评成绩从高分到低分给出选修该门课程的所有学生的成绩(平时成绩、考试成绩和总评成绩)。(8) 统计报表成绩登记表,内容包括课程基本信息(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间)、选课学生名单(学号、姓名、性别),每个
6、学生的平时成绩(空格)、考试成绩(空格)和总评成绩(空格),按学号排序:顺序输出所有课程的成绩登记表。按课程号、课程名称、教师姓名输出对应课程的成绩登记表。2、以上的用户请求经应用程序的转化,化为对数据库中的相应的表或视图的操作,数据库再把处理的结果(或都是错误信息)返回结应用程序。3、应用程序把结果返回给用户,该结果可能为一个对表操作的结果(如插入,删除等),也可能为一个查询的结果,甚至可能为一个错误的信息。2.2数据字典根据题目的需求,教学系统主要是对学生,教职工,学院,课程,成绩等的管理。由此分析得到如下数据结构:数据库的表结构的设计,数据项如下,表名分别为:users, score,
7、department, student, teach_job, course:2.3安全性和完整性要求安全性和完整性要求:通过设置外键,建立它们之间的关系,并使它们级联更新相关的字段,级联删除相关的记录。对于构成了环的级联更新或删除,而不能建立级联更新或删除的,通过建立触发器,使得它们保持数据的完整性。通过不同权限的人登录而设置其对数据的增删改的权限增强数据的安全性。本系统的外键设置和级联操作有:外键:stuent表的depth_id。course表的t_id。score表的stu_id和c_id等。由于score表的两个键若都级联操作会构成环,所以级联不成功。所以在这里建立两个触发器取代级联
8、操作,从而实现数据库的完整性。2、概念结构设计3.1ER图ER图3、逻辑结构设计4.1关系模型4.1.1关系模型的设计学生(学号、姓名、性别、出生日期、入学成绩、所在系号、密码)教师(职工号、姓名、性别、出生年月、所在系号、职称、专业及教学方向)系(系号、系名称、系的简介)课程(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间)成绩(学号、课程号、平时成绩、考试成绩、总评成绩)拥有(学号、系号)属于(职工号、系号)讲授(职工号、课程号、上课时间)选修(学号、课程号、上课时间)4.2用户子模式成绩视图(学号、学生姓名、教师号、教师姓名、课程号、上课时间、课程名、 平时成绩、
9、考试成绩、总评成绩、)选课视图(学号、课程号、上课时间、平时成绩、考试成绩、总评成绩、课程名、学时、学分)统计视图(课程号、上课时间、课程名称、任课教师号、学时、学分、上课地点、考试时间、学号、学生姓名、学生性别、平时成绩、考试成绩、总评成绩)4.3安全性安全性的实现主要是通过应用程序来实现,在程序中设定一个检查用户名和密码的机构,用户要进入系统就先要输入授权了的用户名和密码方能进入。4、数据库物理设计5.1建立索引为各个表的主码建立索引。学生(学号)教师(职工号)系(系号)课程(课程号、上课时间)成绩(学号、课程号)5.2数据库存放位置数据的存储和数据处理在综合考虑存取时间,存储空间的利用率
10、,维护的代价3个方面的因素,进行权衡,选择折中的方案。将易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。5.3系统配置(1)Windows XP(2)MicorSoft SQL Server 2000 (必需升级到SP3)(3)Eclipse开发环境5、数据库实施6.1创建数据库及数据对象(括号中为对应的SQL脚本文件)1、创建数据库的对象:create database teach;2、 创建表的过程如下:create table users(user_name varchar(15) not null,password varchar(15),popedom tinyint n
11、ot 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(depth_id),job char(10),speciality char(16),dir
12、ection 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(stu_id char(6) primary key,s_name char(8),
13、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数据备份和恢复方案事务故障的恢复是由系统自动完成的,对用户透明。系统故障的恢复由系统重新启动时自动完成,不需要用户干预。介质故障的恢复则由人干预完成,方法为重装数据库,然后重做已完成的
14、事务。1、数据库备份方案:每月进行一次数据库的完整备份,包括所有的数据及数据库对象。速度较慢,占用大量磁盘空间。应该在整个数据库不进行其他事务操作的时候备份可以提高数据备份的速度。每天进行事务日志备份,事务日志备份是指对数据库发生的事务进行备份,包括上次进行事务日志备份,差异备份和数据库完全备份之后所有已经完成的事务。所需的时间和磁盘空间要求较少每小时进行差异备份,是备份一次数据备份以来的数据变化。a)恢复解决方案:先恢复最近一次的数据库备份,接着进行差异备份的恢复,最后进行事务日志血仇的恢复。6.3用户界面的设计和实现及相关应用程序编码本系统的程序代码结构如下图所示:主要是四个包:1其中中f
15、rame包中包含一个layout包。frame包主要是视图层的代码,主界面,登录界面,各种操作的界面都在其中。此外包含一个包layout,在其中有一个类,用于网格组布局的封装了网格组布局的一些代码。在MyAction中封装的是主窗口里面的所有菜单事件。2在model包中主要处理的是模型层,对数据的操作封装其中。3query一个类包含了对学生信息的查询。4此外在util中包含的是对数据库的所有操作。其中有对数据库的更改,把数据库的数据和表格模型相关联起来的等操作。主界面如下所示:5关键代码如下:由于代码太多,以下只写出很少的一部分代码1对数据库的操作:public class ConneJdbc
16、 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.getConnection( jdbc:microsoft:sqlserver:/1
17、27.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(String sql) Vector vdata = new Vector();
18、 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 rsmd = null; try rs = connection
19、.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 pstmt = null; ResultSet r
20、s = 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 = null; private
21、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(rs.next() Vecto
22、r 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.2Eclipse的安装把压缩包解压到任意的目录下即可。8.3数据库的升级与数据的
23、导入SQL Sever 2000安装完成后,请升级到SP3,双击chs_sql2ksp3.exe,解压到任一文件夹,再双击setup.bat,即可。数据的导入请选用SQL Sever 2000的“附加数据库”功能,在企业管理器中,选中“数据库”,右键,选中“附加数据库”再按提示选出要附加的数据库即可。8.4程序的运行本系统的使用简单,根据可视化的界面直接操作。系统的主函数放在类:EnterFrame中,通过登录界面的登录进入MainFrame这个主界面程序。运行EnterFrame,则出来登录界面如下:本系统的管理员用户是root,密码也是root。在程序的运行前,先要导入数据库的JDBC驱动程序的包,在工程文件夹的lib文件夹中有三个包,msbase, mssqlserver, msutil。这样就可以运行程序了。8、参考文献参考资料:Java 核心技术第7版数据库系统概论王珊编第四版SQL Server 数据库应用技术张水平编软件工程李代平编第二版Java API文档电子版等
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1