数据库课程设计报告教学管理系统+java实现.docx
- 文档编号:30444407
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:22
- 大小:646.73KB
数据库课程设计报告教学管理系统+java实现.docx
《数据库课程设计报告教学管理系统+java实现.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告教学管理系统+java实现.docx(22页珍藏版)》请在冰豆网上搜索。
数据库课程设计报告教学管理系统+java实现
数据库课程设计报告-教学管理系统(+java实现)
1、相关技术简介
1.1RDBMS简介
SQLServer是一个关系数据库管理系统它最初是由MicrosoftSybase和Ashton-Tate三家公司共同开发的于1988年推出了第一个OS/2版本在WindowsNT推出后Microsoft与Sybase在SQLServer的开发上就分道扬镳了Microsoft将SQLServer移植到WindowsNT系统上专注于开发推广SQLServer的WindowsNT版本Sybase则较专注于SQLServer在UNIX操作系统上的应用在本书中介绍的是MicrosoftSQLServer以后简称为SQLServer或MSSQLServer。
SQLServer2000是Microsoft公司推出的SQLServer数据库管理系统的最新版本该版本继承了SQLServer7.0版本的优点同时又比它增加了许多更先进的功能具有使用方便可伸缩性好与相关软件集成程度高等优点可跨越从运行MicrosoftWindows98的膝上型电脑到运行MicrosoftWindows2000的大型多处理器的服务器等多种平台使用。
1.2Eclipse简介
Eclipse是一种可扩展的开放源代码IDE。
2001年11月,IBM公司捐出价值4,000万美元的源代码组建了Eclipse联盟,并由该联盟负责这种工具的后续开发。
集成开发环境(IDE)经常将其应用范围限定在“开发、构建和调试”的周期之中。
为了帮助集成开发环境(IDE)克服目前的局限性,业界厂商合作创建了Eclipse平台。
Eclipse允许在同一IDE中集成来自不同供应商的工具,并实现了工具之间的互操作性,从而显著改变了项目工作流程,使开发者可以专注在实际的嵌入式目标上。
Eclipse框架的这种灵活性来源于其扩展点。
它们是在XML中定义的已知接口,并充当插件的耦合点。
扩展点的范围包括从用在常规表述过滤器中的简单字符串,到一个Java类的描述。
任何Eclipse插件定义的扩展点都能够被其它插件使用,反之,任何Eclipse插件也可以遵从其它插件定义的扩展点。
除了解由扩展点定义的接口外,插件不知道它们通过扩展点提供的服务将如何被使用。
利用Eclipse,我们可以将高级设计(也许是采用UML)与低级开发工具(如应用调试器等)结合在一起。
如果这些互相补充的独立工具采用Eclipse扩展点彼此连接,那么当我们用调试器逐一检查应用时,UML对话框可以突出显示我们正在关注的器件。
事实上,由于Eclipse并不了解开发语言,所以无论Java语言调试器、C/C++调试器还是汇编调试器都是有效的,并可以在相同的框架内同时瞄准不同的进程或节点。
Eclipse的最大特点是它能接受由Java开发者自己编写的开放源代码插件,这类似于微软公司的VisualStudio和Sun微系统公司的NetBeans平台。
Eclipse为工具开发商提供了更好的灵活性,使他们能更好地控制自己的软件技术。
Eclipse联盟已经宣布将在2004年中期发布其3.0版软件。
这是一款非常受欢迎的java开发工具,这国内的用户越来越多,实际上实用它java开发人员是最多的。
缺点就是较复杂,对初学者来说,理解起来比较困难。
2、需求分析
数据流图
学生或管理员等
教学管理系统
管理员
增删改信息
取得信息
取得信息
选课
教师师
取得信息
管理成绩
说明:
1、用户请求包括:
(1)学生基本信息管理
新生信息录入。
学生信息修改:
按学号查询出某学生的信息并做信息修改。
(2)系基本信息管理:
系的基本信息输入、修改、删除
(3)课程信息管理:
课程信息的输入、修改、删除
(4)教职工信息管理:
教职工信息的输入、修改、删除
(5)选课管理:
每学期所选课程的学分不能超过15分。
学生可以同时选修一门或多门课程。
可以同时为多个学生选修某一门或某几门课程。
删除和修改选课信息。
(6)成绩管理
按课程输入和修改成绩。
按学生输入和修改成绩。
(7)信息查询
按学号、姓名、系号查询学生基本信息。
按职工号、姓名、系号查询教职工基本信息。
按系号、系名称查询系的基本信息。
按课程号、课程名称、上课教师姓名查询课程基本信息。
按学号、学生姓名、课程号、课程名称、上课教师姓名、系号查询学生成绩,内容包括课程基本情况。
若查询涉及多门课程,则按课程分组。
每门课程按总评成绩从高分到低分给出选修该门课程的所有学生的成绩(平时成绩、考试成绩和总评成绩)。
(8)统计报表
成绩登记表,内容包括课程基本信息(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间)、选课学生名单(学号、姓名、性别),每个学生的平时成绩(空格)、考试成绩(空格)和总评成绩(空格),按学号排序:
顺序输出所有课程的成绩登记表。
按课程号、课程名称、教师姓名输出对应课程的成绩登记表。
2、以上的用户请求经应用程序的转化,化为对数据库中的相应的表或视图的操作,数据库再把处理的结果(或都是错误信息)返回结应用程序。
3、应用程序把结果返回给用户,该结果可能为一个对表操作的结果(如插入,删除等),也可能为一个查询的结果,甚至可能为一个错误的信息。
数据字典
根据题目的需求,教学系统主要是对学生,教职工,学院,课程,成绩等的管理。
由此分析得到如下数据结构:
数据库的表结构的设计,数据项如下,表名分别为:
users,score,department,student,teach_job,course:
安全性和完整性要求:
通过设置外键,建立它们之间的关系,并使它们级联更新相关的字段,级联删除相关的记录。
对于构成了环的级联更新或删除,而不能建立级联更新或删除的,通过建立触发器,使得它们保持数据的完整性。
通过不同权限的人登录而设置其对数据的增删改的权限增强数据的安全性。
本系统的外键设置和级联操作有:
外键:
stuent表的depth_id。
course表的t_id。
score表的stu_id和c_id等。
由于score表的两个键若都级联操作会构成环,所以级联不成功。
所以在这里建立两个触发器取代级联操作,从而实现数据库的完整性。
3、概念结构设计
3.1E-R图
系
系号
系名称
系的简介
属于
1
m
教师
职工号
姓名
性别
生日
系号
职称
方向
拥有
1
学生
m
学号
姓名
性别
出生年月
入学成绩
系号
讲授
m
n
课程
课程号
课程名
职工号
学时
学分
上课时间
上课地点
考试时间
选修
m
n
成绩
p
学号
课程号
成绩
ER图
4、逻辑结构设计
4.1关系模型
4.1.1关系模型的设计
学生(学号、姓名、性别、出生日期、入学成绩、所在系号、密码)
教师(职工号、姓名、性别、出生年月、所在系号、职称、专业及教学方向)
系(系号、系名称、系的简介)
课程(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间)
成绩(学号、课程号、平时成绩、考试成绩、总评成绩)
拥有(学号、系号)
属于(职工号、系号)
讲授(职工号、课程号、上课时间)
选修(学号、课程号、上课时间)
4.2用户子模式
成绩视图(学号、学生姓名、教师号、教师姓名、课程号、上课时间、课程名、
平时成绩、考试成绩、总评成绩、)
选课视图(学号、课程号、上课时间、平时成绩、考试成绩、总评成绩、课程名、学时、学分)
统计视图(课程号、上课时间、课程名称、任课教师号、学时、学分、上课地点、考试时间、学号、学生姓名、学生性别、平时成绩、考试成绩、总评成绩)
历史表
学生表
系表
课程表
教师表
成绩表
学生号
学生号
教师号
系
号
课程号
学生号
上课时间
课程号
上课时间
选课视图
成绩视图
统计视图
4.3安全性
安全性的实现主要是通过应用程序来实现,在程序中设定一个检查用户名和密码的机构,用户要进入系统就先要输入授权了的用户名和密码方能进入。
5、数据库物理设计
5.1建立索引
为各个表的主码建立索引。
学生(学号)
教师(职工号)
系(系号)
课程(课程号、上课时间)
成绩(学号、课程号)
5.2数据库存放位置
数据的存储和数据处理
在综合考虑存取时间,存储空间的利用率,维护的代价3个方面的因素,进行权衡,选择折中的方案。
将易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。
5.3系统配置
(1)WindowsXP
(2)MicorSoftSQLServer2000(必需升级到SP3)
(3)Eclipse开发环境
6、数据库实施
6.1创建数据库及数据对象(括号中为对应的SQL脚本文件)
1、创建数据库的对象:
createdatabaseteach;
2、创建表的过程如下:
createtableusers(user_namevarchar(15)notnull,
passwordvarchar(15),
popedomtinyintnotnull);
createtabledepartment(depth_idsmallintprimarykey, depth_namechar(14),
discriptionvarchar(50));
createtableteach_job(t_idintprimarykey, t_namechar(8), sexchar
(2),
birthdaysmalldatetime,
depth_idsmallintforeignkeyreferencesdepartment(depth_id),
jobchar(10), specialitychar(16), directionchar(16));
createtablecourse(c_idsmallintprimarykey, c_namechar(16)notnull,
t_idintforeignkeyreferencesteach_job(t_id), creditsmallint,
periodsmallint, class_timesmalldatetime,
class_areachar(10), exam_timesmalldatetime);
createtablestudent(stu_idchar(6)primarykey, s_namechar(8),
birthdaysmalldatetime, scoreint,
depth_idsmallintforeignkeyreferencesdepartment(depth_id));
createtablescore(stu_idchar(6), c_idsmallint, u_scoreint, exam_scoreint,
totalint, primarykey(stu_id,c_id));
6.2数据备份和恢复方案
事务故障的恢复是由系统自动完成的,对用户透明。
系统故障的恢复由系统重新启动时自动完成,不需要用户干预。
介质故障的恢复则由人干预完成,方法为重装数据库,然后重做已完成的事务。
1、数据库备份方案:
<1>每月进行一次数据库的完整备份,包括所有的数据及数据库对象。
速度较慢,占用大量磁盘空间。
应该在整个数据库不进行其他事务操作的时候备份可以提高数据备份的速度。
<2>每天进行事务日志备份,事务日志备份是指对数据库发生的事务进行备份,包括上次进行事务日志备份,差异备份和数据库完全备份之后所有已经完成的事务。
所需的时间和磁盘空间要求较少
<3>每小时进行差异备份,是备份一次数据备份以来的数据变化。
a)恢复解决方案:
先恢复最近一次的数据库备份,接着进行差异备份的恢复,最后进行事务日志血仇的恢复。
6.3用户界面的设计和实现及相关应用程序编码
本系统的程序代码结构如下图所示:
主要是四个包:
1〉其中中frame包中包含一个layout包。
frame包主要是视图层的代码,主界面,登录界面,各种操作的界面都在其中。
此外包含一个包layout,在其中有一个类,用于网格组布局的封装了网格组布局的一些代码。
在MyAction中封装的是主窗口里面的所有菜单事件。
2〉在model包中主要处理的是模型层,对数据的操作封装其中。
3〉query一个类包含了对学生信息的查询。
4〉此外在util中包含的是对数据库的所有操作。
其中有对数据库的更改,把数据库的数据和表格模型相关联起来的等操作。
主界面如下所示:
〈5〉关键代码如下:
由于代码太多,以下只写出很少的一部分代码
1》对数据库的操作:
publicclassConneJdbc{
protectedstaticConnectionconnection=null;
privateConnectioncon=null;
privateResultSetrs=null;
privateResultSetMetaDatarsmd=null;
publicConneJdbc(){
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.ClassNotFoundExceptionclassnotfound){
classnotfound.printStackTrace();
}catch(java.sql.SQLExceptionsql){
sql.printStackTrace();
}
}
publicConnectiongetCon(){
returnconnection;
}
publicVectorselectSql(Stringsql){
Vectorvdata=newVector();
try{
rs=connection.prepareStatement(sql).executeQuery();
rsmd=rs.getMetaData();
while(rs.next())
vdata.addElement(rs.getObject
(1));
}catch(SQLExceptione){
e.printStackTrace();
}
returnvdata;
}
publicStringselectOne(Stringsql){
ResultSetrs=null;
ResultSetMetaDatarsmd=null;
try{
rs=connection.prepareStatement(sql).executeQuery();
rsmd=rs.getMetaData();
if(rs.next())
return(String)rs.getObject
(1);
}catch(SQLExceptione){
e.printStackTrace();
}
returnnull;
}
publicbooleaninTable(Stringuser,Stringpa)throwsSQLException{
Statementstmt=null;
PreparedStatementpstmt=null;
ResultSetrs=null;
Stringsql="selectpasswordfromusers"+
"whereuser_name='"+user+"'andpassword='"
+pa+"'";
rs=connection.prepareStatement(sql).executeQuery();
if(rs.next())returntrue;
elsereturnfalse;
}
}
2》表格模型的处理:
publicclassSqlTableModelextendsDefaultTableModel{
privateConnectioncon=null;
privateResultSetrs=null;
privateResultSetMetaDatarsmd=null;
publicSqlTableModel(StringsqlStr,String[]name){
con=newConneJdbc().getCon();
try{
rs=con.prepareStatement(sqlStr).executeQuery();
rsmd=rs.getMetaData();
for(inti=0;i addColumn(name[i]); } while(rs.next()){ Vectorvdata=newVector(); for(inti=1;i<=rsmd.getColumnCount();i++){ vdata.addElement(rs.getObject(i)); } addRow(vdata); } }catch(java.sql.SQLExceptionsql){ sql.printStackTrace(); }finally{ try{ con.close(); }catch(SQLExceptione){ e.printStackTrace(); } } } 3)Updatabase的一部分代码: publicclassUpdateDatebaseextendsConneJdbc{ privateStatementstmt=null; privatePreparedStatementpstmt=null; privateStringinfoStr=null; privateStringsql; publicUpdateDatebase(){ } publicbooleaninsert(DepDatadata)throwsSQLException{ Stringsql="insertintodepartment(depth_name,discription)values('" +data.getDepth_name()+"','"+data.getDiscription()+"')"; pstmt=connection.prepareStatement(sql); pstmt.execute(); returntrue; } publicbooleaninsert(StuDatadata)throwsSQLException{ sql="insertintostudentvalues('" +data.getStu_id()+"','"+data.getS_name()+"','" +data.getSex()+"','"+data.getBirthday()+"'," +data.getScore()+","+data.getDepth_id()+")"; pstmt=connection.prepareStatement(sql); pstmt.execute(); returntrue; } publicbooleaninsert(Teadatadata)throwsSQLException{ sql="insertintoteach_jobvalues(" +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(); returntrue; } publicbooleaninsert(CourseDatadata)throwsSQLException{ sql="insertintocourse(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()+"','"+data.getExam_time()+"')"; pstmt=connection.prepareStatement(sql); pstmt.execute(); returntrue; } 7、系统测试方案和测试报告 系统的测试: 由于测试的数据众多,窗口众多,就不一一截图,以下是部分的测试截图: 1)学生管理测试窗口如下: 2)院系管理测试: 3)教工管理测试: 4)成绩管理: 8、安装和使用说明 8.1JDK的安装 先双击JDK的安装可执行文件,按提示把JDK安装到指定的目录下,然后在“控制面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 报告 教学管理 系统 java 实现