数据库课程设计报告教学管理系统+java实现Word文档下载推荐.docx
《数据库课程设计报告教学管理系统+java实现Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告教学管理系统+java实现Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
![数据库课程设计报告教学管理系统+java实现Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-1/23/14101182-348a-4740-aa24-1b5a3e31dfbd/14101182-348a-4740-aa24-1b5a3e31dfbd1.gif)
1、用户请求包括:
(1)学生基本信息管理
新生信息录入。
学生信息修改:
按学号查询出某学生的信息并做信息修改。
(2)系基本信息管理:
系的基本信息输入、修改、删除
(3)课程信息管理:
课程信息的输入、修改、删除
(4)教职工信息管理:
教职工信息的输入、修改、删除
(5)选课管理:
每学期所选课程的学分不能超过15分。
学生可以同时选修一门或多门课程。
可以同时为多个学生选修某一门或某几门课程。
删除和修改选课信息。
(6)成绩管理
按课程输入和修改成绩。
按学生输入和修改成绩。
(7)信息查询
按学号、姓名、系号查询学生基本信息。
按职工号、姓名、系号查询教职工基本信息。
按系号、系名称查询系的基本信息。
按课程号、课程名称、上课教师姓名查询课程基本信息。
按学号、学生姓名、课程号、课程名称、上课教师姓名、系号查询学生成绩,内容包括课程基本情况。
若查询涉及多门课程,则按课程分组。
每门课程按总评成绩从高分到低分给出选修该门课程的所有学生的成绩(平时成绩、考试成绩和总评成绩)。
(8)统计报表
成绩登记表,内容包括课程基本信息(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间)、选课学生名单(学号、姓名、性别),每个学生的平时成绩(空格)、考试成绩(空格)和总评成绩(空格),按学号排序:
顺序输出所有课程的成绩登记表。
按课程号、课程名称、教师姓名输出对应课程的成绩登记表。
2、以上的用户请求经应用程序的转化,化为对数据库中的相应的表或视图的操作,数据库再把处理的结果(或都是错误信息)返回结应用程序。
3、应用程序把结果返回给用户,该结果可能为一个对表操作的结果(如插入,删除等),也可能为一个查询的结果,甚至可能为一个错误的信息。
2.2数据字典
根据题目的需求,教学系统主要是对学生,教职工,学院,课程,成绩等的管理。
由此分析得到如下数据结构:
数据库的表结构的设计,数据项如下,表名分别为:
users,score,department,student,teach_job,course:
2.3安全性和完整性要求
安全性和完整性要求:
通过设置外键,建立它们之间的关系,并使它们级联更新相关的字段,级联删除相关的记录。
对于构成了环的级联更新或删除,而不能建立级联更新或删除的,通过建立触发器,使得它们保持数据的完整性。
通过不同权限的人登录而设置其对数据的增删改的权限增强数据的安全性。
本系统的外键设置和级联操作有:
外键:
stuent表的depth_id。
course表的t_id。
score表的stu_id和c_id等。
由于score表的两个键若都级联操作会构成环,所以级联不成功。
所以在这里建立两个触发器取代级联操作,从而实现数据库的完整性。
3、概念结构设计
3.1E-R图
系
系号
系名称
系的简介
属于
1
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();
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;
if(rs.next())
return(String)rs.getObject
(1);
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{
publicSqlTableModel(StringsqlStr,String[]name){
con=newConneJdbc().getCon();
try{
rs=con.prepareStatement(sqlStr).executeQuery();
rsmd=rs.getMetaData();
for(inti=0;
i<
rsmd.getColumnCount();
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{
con.close();
}catch(SQLExceptione){
e.printStackTrace();
}
3)Updatabase的一部分代码:
publicclassUpdateDatebaseextendsConneJdbc{
privateStatementstmt=null;
privatePreparedStatementpstmt=null;
privateStringinfoStr=null;
privateStringsql;
publicUpdateDatebase(){
publicbooleaninsert(DepDatadata)throwsSQLException{
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()+"
publicbooleaninsert(Teadatadata)throwsSQLException{
insertintoteach_jobvalues("
+data.getT_id()+"
+data.getT_name()+"
+data.getDepth_id()+"
+data.getJob()+"
+data.getSpeciality()+"
+data.getDirection()+"
publicbooleaninsert(CourseDatadata)throwsSQLException{
insertintocourse(c_name,t_id,credit,period,class_time,"
class_area,exam_time)values("
+"
+data.getC_name()+"
+data.getCredit()+"
+data.getPeriod()+"
+data.getClass_time()+"
+data.getClass_area()+"
+data.getExam_time()+"
7、系统测试方案和测试报告
系统的测试:
由于测试的数据众多,窗口众多,就不一一截图,以下是部分的测试截图:
1)学生管理测试窗口如下:
2)院系管理测试:
3)教工管理测试:
4)成绩管理:
8、安装和使用说明
8.1JDK的安装
先双击JDK的安装可执行文件,按提示把JD