数据库课程设计报告.docx

上传人:b****0 文档编号:25864590 上传时间:2023-06-16 格式:DOCX 页数:19 大小:1.18MB
下载 相关 举报
数据库课程设计报告.docx_第1页
第1页 / 共19页
数据库课程设计报告.docx_第2页
第2页 / 共19页
数据库课程设计报告.docx_第3页
第3页 / 共19页
数据库课程设计报告.docx_第4页
第4页 / 共19页
数据库课程设计报告.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数据库课程设计报告.docx

《数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告.docx(19页珍藏版)》请在冰豆网上搜索。

数据库课程设计报告.docx

数据库课程设计报告

浙江科技学院

课程设计

课程名称 数据库原理     

题目名称 教学管理系统    

学生学院 电子信息工程学院

专业班级软件工程122

学号 1120290062     

学生姓名 陆昌柱       

指导教师 王老师        

 

2015年6月26日

 

1、需求分析……………………………………………………………………………………2

1.1数据流图…………………………………………………………………………………2

1.2数据字典…………………………………………………………………………………3

1.3安全性和完整性要求……………………………………………………………………4

2、概念结构设计………………………………………………………………………………4

2.1E-R图…………………………………………………………………………………4

3、逻辑结构设计………………………………………………………………………………5

3.1关系模型…………………………………………………………………………………5

3.2关系模型的设计…………………………………………………………………5

3.3用户子模式………………………………………………………………………………5

3.4系统结构图……………………………………………………………………………6

3.5安全性…………………………………………………………………………………6

4、数据库物理设计…………………………………………………………………………6

4.1建立索引………………………………………………………………………………6

4.2数据库存放位置………………………………………………………………………6

4.3系统配置………………………………………………………………………………7

4.4模块设计………………………………………………………………………………7

5、数据库实施………………………………………………………………………………7

5.1创建数据库及数据对象(括号中为对应的SQL脚本文件)……………………7

5.2数据备份和恢复方案………………………………………………………………7

5.3用户界面的设计和实现及相关应用程序编码………………………………………7

教学管理系统

1引言

1.1编写目的

随着知识经济,科技的不断发展以及科技在各领域的不断深入,越来越多的行业和领域步入信息的智能化阶段。

信息自动化处理也是提高效益,规范管理,迅速客观审查的有效途径。

管理系统在当今教育领域是一个不可缺少的工具软件。

然而,一个好的高质量的软件少只有少,并为根本实现智能化,也不利于科学的管理和审查。

因此,在本软件中心准备开发一个功能完善的成绩管理系统。

2定义

1系统名称:

教师查询管理系统

2数据库管理软件:

navicatforMySQL

3数据库设计人员:

陆昌柱。

4数据库设计采用软件:

MicrosoftOfficeVisio2003

1、需求分析

2.1数据流图

说明:

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表的两个键若都级联操作会构成环,所以级联不成功。

所以在这里建立两个触发器取代级联操作,从而实现数据库的完整性。

2、概念结构设计

3.1E-R图

ER图

3、逻辑结构设计

4.1关系模型

4.1.1关系模型的设计

学生(学号、姓名、性别、出生日期、入学成绩、所在系号、密码)

教师(职工号、姓名、性别、出生年月、所在系号、职称、专业及教学方向)

系(系号、系名称、系的简介)

课程(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间)

成绩(学号、课程号、平时成绩、考试成绩、总评成绩)

拥有(学号、系号)

属于(职工号、系号)

讲授(职工号、课程号、上课时间)

选修(学号、课程号、上课时间)

4.2用户子模式

成绩视图(学号、学生姓名、教师号、教师姓名、课程号、上课时间、课程名、

平时成绩、考试成绩、总评成绩、)

选课视图(学号、课程号、上课时间、平时成绩、考试成绩、总评成绩、课程名、学时、学分)

统计视图(课程号、上课时间、课程名称、任课教师号、学时、学分、上课地点、考试时间、学号、学生姓名、学生性别、平时成绩、考试成绩、总评成绩)

4.3安全性

安全性的实现主要是通过应用程序来实现,在程序中设定一个检查用户名和密码的机构,用户要进入系统就先要输入授权了的用户名和密码方能进入。

4、数据库物理设计

5.1建立索引

为各个表的主码建立索引。

学生(学号)

教师(职工号)

系(系号)

课程(课程号、上课时间)

成绩(学号、课程号)

5.2数据库存放位置

数据的存储和数据处理

在综合考虑存取时间,存储空间的利用率,维护的代价3个方面的因素,进行权衡,选择折中的方案。

将易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。

5.3系统配置

(1)WindowsXP

(2)MicorSoftSQLServer2000(必需升级到SP3)

(3)Eclipse开发环境

5、数据库实施

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;

}

6、系统测试方案和测试报告

系统的测试:

由于测试的数据众多,窗口众多,就不一一截图,以下是部分的测试截图:

1)学生管理测试窗口如下:

2)院系管理测试:

3)教工管理测试:

4)成绩管理:

8.1程序的运行

系统的使用简单,根据可视化的界面直接操作。

系统的主函数放在类:

EnterFrame中,通过登录界面的登录进入MainFrame这个主界面程序。

运行EnterFrame,则出来登录界面如下:

本系统的管理员用户是root,密码也是root。

在程序的运行前,先要导入数据库的JDBC驱动程序的包,在工程文件夹的lib文件夹中有三个包,msbase,mssqlserver,msutil。

这样就可以运行程序了。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1