毕业设计高校成绩管理系统大数据库设计与实现.docx

上传人:b****5 文档编号:7691375 上传时间:2023-01-25 格式:DOCX 页数:51 大小:1.99MB
下载 相关 举报
毕业设计高校成绩管理系统大数据库设计与实现.docx_第1页
第1页 / 共51页
毕业设计高校成绩管理系统大数据库设计与实现.docx_第2页
第2页 / 共51页
毕业设计高校成绩管理系统大数据库设计与实现.docx_第3页
第3页 / 共51页
毕业设计高校成绩管理系统大数据库设计与实现.docx_第4页
第4页 / 共51页
毕业设计高校成绩管理系统大数据库设计与实现.docx_第5页
第5页 / 共51页
点击查看更多>>
下载资源
资源描述

毕业设计高校成绩管理系统大数据库设计与实现.docx

《毕业设计高校成绩管理系统大数据库设计与实现.docx》由会员分享,可在线阅读,更多相关《毕业设计高校成绩管理系统大数据库设计与实现.docx(51页珍藏版)》请在冰豆网上搜索。

毕业设计高校成绩管理系统大数据库设计与实现.docx

毕业设计高校成绩管理系统大数据库设计与实现

高校成绩管理系统数据库设计与实现

班级_________学号_________某某_

1、需求分析

计算机已经深入到日常工作和生活的方方面面,成为我们学习和工作的得力助手,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。

随着越来越多的应用软件出现,人们对它的要求也越来越高;虽然现在世界上的各种软件层出不穷,但它们依然不能满足用户的各种特殊需要,所以人们仍是不得不开发适合特殊需求的软件。

高校成绩管理系统记录了一个大学生成绩的系统,它的出现使得查询、更新、插入简单化,高效化,成本也随之大大减少。

使用计算机对成绩信息的管理,具有手工管理所无法比拟的优点:

信息存储及时,检索迅速、查找方便、可靠性高、存储量大、某某性好、寿命长、成本低等。

这些优点能够极大地提高学生成绩管理的效率,也是高校成绩正规化管理的重要途径。

本软件控件均以中文形式表示,对普通程序使用者的查询提供简单方便的快捷操作,不需要技术含量。

以SQLSERVER数据库管理系统为平台,通过设计数据库概念模型、逻辑模型以及利用标准SQL语言的数据库实现,掌握关系数据库系统的设计与实现方法,增强数据库设计和数据库应用系统开发能力。

操作人员与维护人员应懂的SQL语言。

运行环境:

硬件环境:

高性能计算机一台

软件环境:

A.windows系列B.MicrosoftSQLServer2008C.MicrosoftVisualStudio2010

1.1数据需求描述

顶层数据流图

详细数据流图

1.2系统功能需求

(1)学生成绩按每学年进行成绩统计;

(2)学生成绩名次排定;

(3)每门课程平均成绩统计;

(4)学生所学课程及学分统计;

(5)输入每个学生成绩时,自动生成该学生已修总学分;

(6)学生成绩查询;

(7)教师任课查询;

(8)班级课程开设查询;

系统功能图:

1.3其他性能需求

(1)可供多用户同时使用。

(2)用户输入出错时,有错误提示。

(3)安全性高。

(4)存储需求描述。

2、概念结构设计

局部E-R图:

全局E-R图:

3、逻辑结构设计

3.1关系模式设计

教师lh(教师编号lh、教师某某lh、教师性别lh、教师年龄lh、职称lh、联系lh)

上课lh(教师编号lh,班级编号lh)

授课lh(教师编号lh,课程编号lh)

课程lh(课程编号lh、课程名称lh、教师某某lh、开课学期lh、学时lh、考试或考查lh、学分lh)

学习lh(学号lh,课程编号lh,学期lh,课程名称lh,成绩lh,教师某某lh)

学生lh(学号lh、学生某某lh、学生性别lh、学生年龄lh、生源所在地lh、已修学分总数lh,班级编号lh)地区信息,用于统计某一地区的学生数

开设lh(课程编号lh,班级编号lh)

班级lh(班级编号lh,班级名称lh,专业编号lh)

专业lh(专业编号lh,专业名称lh)

3.2数据类型定义

(1)教师Teacherslh

数据项名

数据类型

长度

完整性约束

教师编号

char

20

主键,唯一,非空

教师某某

char

10

教师性别

char

2

教师年龄

char

20

职称

char

10

联系

char

20

(2)上课Teachlh

数据项名

数据类型

长度

完整性约束

教师编号

char

20

主键,唯一,非空

班级编号

char

20

外键

(3)授课Instructlh

数据项名

数据类型

长度

完整性约束

教师编号

char

20

主键,唯一,非空

课程编号

char

20

外键

(4)课程Courseslh

数据项名

数据类型

长度

完整性约束

课程编号

char

20

主键,唯一,非空

课程名

char

20

教师某某

char

10

开课时间

char

20

学时

int

10

>0

考试或考查

char

4

学分

int

4

>0

(5)学习Studylh

数据项名

数据类型

长度

完整性约束

学号

char

20

主键,唯一,非空

课程编号

char

20

外键

学期

char

10

课程名称

char

20

成绩

int

10

教师某某

int

10

(6)学生Studentslh

数据项名

数据类型

长度

完整性约束

学生学号

char

12

主键,唯一,非空

学生某某

char

10

学生性别

char

2

学生年龄

int

4

生源所在地

Char

20

已修学分总数

int

4

班级编号

char

10

外键

(7)开设Setuplh

数据项名

数据类型

长度

完整性约束

课程编号

char

20

主键,唯一,非空

班级编号

char

20

外键

(8)班级Classeslh

数据项名

数据类型

长度

完整性约束

班级编号

char

20

主键,唯一,非空

班级名称

char

20

专业编号

char

20

外键

(9)专业Majorlh

数据项名

数据类型

长度

完整性约束

专业编号

char

20

主键,唯一,非空

专业名称

char

20

3.3关系模式的优化

对关系模式进行规X化处理,对关系模式进行评价与修正。

4、物理结构设计

4.1聚簇设计

该高校成绩管理系统数据库可建立一下聚簇:

Teacherslh(教师编号lh)

Courseslh(课程编号lh)

Studentslh(学生学号lh,班级编号lh)

Classeslh(班级编号lh)

这几个聚簇设计是因为这几X表都是实体表,,且聚簇中的属性都是主键或是外键,被访问的概率很高,而其他表或者这些表上的其他属性被访问的概率就相对较低。

4.2索引设计

索引就是表中数据和相应存储位置的列表,使用索引可以大大减少数据的查询时间。

对于一个确定的关系,通常在下列情况下可以考虑建立索引。

(1)在主键属性列和外键属性列上通常都可以分别建立索引,不仅有助于唯一性检查和完整性检查,而且可以加快连接查询的速度。

(2)以查询为主的关系可建立尽可能多的索引。

(3)对等值连接,但满足条件的元组较少的查询可以考虑建立索引。

(4)如果查询可以从索引直接得到结果而不必访问关系,则对此种查询可以建立索引。

该高校成绩管理系统数据库可建立以下索引:

Teachers(教师编号)

Courses(课程编号)

Students(学生学号,班级编号)

Classes(班级编号)

Study(学号,课程编号)

4.3分区设计

涉及到数据库文件和日志文件的分区问题。

磁盘分区设计的一般原则:

(1)减少访问冲突,提高I/O并发性。

多个事物并发访问同一磁盘时,会产生磁盘访问冲突而导致效率低下,如果事务访问数据均能分布于不同磁盘上,则I/O可并发执行,从而提高数据库访问速度。

(2)分散热点数据,均衡I/O负担。

在数据库中数据访问的频率是不均匀的,那些经常被访问的数据成为热点数据,此类数据宜分散存在于不同的磁盘上,以均衡各个磁盘的负荷,充分发挥多磁盘的并行操作的优势。

(3)保证关键数据快速访问,缓解系统瓶颈。

在数据库中有些数据如数据字典等的访问频率很高,为保证对它的访问不直接影响整个系统的效率,可以将其存放在某一固定磁盘上,以保证其快速访问。

该成绩管理系统由于程序较小,所以不进行分区设计。

5、数据库实施

5.1基本表建立

(1)教师表Teacherslh

数据项名

数据类型

长度

完整性约束

教师编号lh

char

20

主键,唯一,非空

教师某某lh

char

10

教师性别lh

char

2

教师年龄lh

char

20

职称lh

char

10

联系lh

char

20

SQL语句为:

CREATETABLETeacherslh

教师编号lhCHAR(20)PRIMARYKEY,

教师某某lhCHAR(10),

教师性别lhCHAR

(2),

教师年龄lhINT,

职称lhCHAR(20),

联系lhCHAR(10),

);

SQL执行结果截图:

(2)专业表Majorslh

数据项名

数据类型

长度

完整性约束

专业编号lh

char

20

主键,唯一,非空

专业名称lh

char

20

SQL语句为:

CREATETABLEMajorslh

专业编号lhCHAR(20)PRIMARYKEY,

专业名称lhCHAR(20),

);

SQL执行结果截图:

(3)班级表Classeslh

数据项名

数据类型

长度

完整性约束

班级编号lh

char

20

主键,唯一,非空

班级名称lh

char

20

专业编号lh

char

20

外键

SQL语句为:

CREATETABLEClasseslh

班级编号lhCHAR(20)PRIMARYKEY,

班级名称lhCHAR(20),

专业编号lhCHAR(20)

constraintMajor_Classforeignkey(专业编号lh)referencesMajorslh

);

SQL执行结果截图:

(4)课程表Courseslh

数据项名

数据类型

长度

完整性约束

课程编号

char

20

主键,唯一,非空

课程名

char

20

教师某某

char

10

学时

int

10

考试或考查

char

4

学分

int

4

SQL语句为:

CREATETABLECourseslh

课程编号lhCHAR(20)PRIMARYKEY,

课程名lhCHAR(20),

教师某某lhCHAR(10),

学时lhINT,

考试或考查lhCHAR(4),

学分lhCHAR(4)

SQL执行结果截图:

(5)学生表Studentslh

数据项名

数据类型

长度

完整性约束

学生学号

char

20

主键,唯一,非空

学生某某

char

10

学生性别

char

2

学生年龄

int

4

生源所在地

Char

20

已修学分总数

int

4

班级编号

char

20

外键

SQL语句为:

CREATETABLEStudentslh

学生学号lhCHAR(20)PRIMARYKEY,

学生某某lhCHAR(10),

学生性别lhCHAR

(2),

学生年龄lhint,

生源所在地lhchar(20),

已修学分总数lhint,

班级编号lhCHAR(20)

constraintClass_Studentforeignkey(班级编号lh)referencesClasseslh

SQL执行结果截图:

(6)上课表Teachlh

数据项名

数据类型

长度

完整性约束

教师编号lh

char

20

主键,唯一,非空

班级编号lh

char

20

外键

SQL语句为:

CREATETABLETeachlh

教师编号lhCHAR(20)PRIMARYKEY,

班级编号lhCHAR(20),

CONSTRAINTClass_TeachFOREIGNKEY(班级编号lh)REFERENCESClasseslh,

SQL执行结果截图:

(7)授课表Instructlh

数据项名

数据类型

长度

完整性约束

教师编号

char

20

主键,唯一,非空

课程编号

char

20

外键

SQL语句为:

CREATETABLEInstructlh

教师编号lhCHAR(20)PRIMARYKEY,

课程编号lhCHAR(20),

CONSTRAINTCourse_InstructFOREIGNKEY(课程编号lh)REFERENCESCourseslh

SQL执行结果截图:

(8)学习表Studylh

数据项名

数据类型

长度

完整性约束

学生学号

char

20

主键,唯一,非空

课程编号

char

20

外键

学期

char

10

课程名称

char

20

成绩

int

10

教师某某

char

10

SQL语句为:

CREATETABLEStudylh

学生学号lhCHAR(20)PRIMARYKEY,

课程编号lhCHAR(20),

学期lhchar(10),

课程名称lhchar(20),

成绩lhint,

教师某某lhchar(10),

CONSTRAINTCourse_StudyFOREIGNKEY(课程编号lh)REFERENCESCourseslh

SQL执行结果截图:

(9)开设Setuplh

数据项名

数据类型

长度

完整性约束

课程编号

char

20

主键,唯一,非空

班级编号

char

20

外键

SQL语句为:

CREATETABLESetuplh

课程编号lhCHAR(20)PRIMARYKEY,

班级编号lhchar(20),

CONSTRAINTClass_SetupFOREIGNKEY(班级编号lh)REFERENCESClasseslh

SQL执行结果截图:

5.2数据输入

专业表Majorslh:

班级表Classeslh:

课程表Courseslh:

教师表Teacherslh:

学生表Studentslh:

学习表Studylh:

上课表Teachlh:

授课表Instructlh:

开设表Setuplh:

5.3视图的建立

(1)学生成绩统计

createview学生成绩统计lh

as

selectStudylh.学生学号lh,学生某某lh,Studylh.课程名称lh,

班级名称lh,Studylh.教师某某lh,学分lh,学期lh,成绩lh

fromStudentslh,Courseslh,Classeslh,Studylh

whereStudentslh.学生学号lh=Studylh.学生学号lh

ANDStudylh.课程编号lh=Courseslh.课程编号lh

ANDClasseslh.班级编号lh=Studentslh.班级编号lh

(2)每门课程平均成绩统计

createview每门课程平均成绩lh

as

selectavg(成绩lh)平均成绩lh,课程编号lh

fromStudylh

groupby课程编号lh

(3)学生所学课程及学分统计

createview学生所学课程及学分统计lh

as

select学生成绩统计lh.学生学号lh,学生成绩统计lh.课程名称lh,学生成绩统计lh.学分lh

from学生成绩统计lh

(4)教师任课查询

createview教师任课查询lh

as

select教师编号lh,Teacherslh.教师某某lh,课程编号lh,课程名lh,学时lh,学分lh

fromTeacherslh,Courseslh

whereTeacherslh.教师某某lh=Courseslh.教师某某lh

(5)班级课程开设查询

createview班级课程开设查询lh

as

selectClasseslh.班级编号lh,班级名称lh,Courseslh.课程编号lh,课程名lh,学时lh,学分lh

fromClasseslh,Courseslh,Setuplh

whereClasseslh.班级编号lh=Setuplh.班级编号lhANDSetuplh.课程编号lh=Courseslh.课程编号lh

5.4索引的建立

因为每一个表建立,SSMS会自动生成一个聚集索引,所以不需要再手动建立聚集索引。

下面根据4.2来建立索引:

(1)教师编号lh:

createuniqueindexSY_教师编号lhonTeacherslh(教师编号lh)

(2)专业编号lh:

createuniqueindexSY_专业编号lhonMajorslh(专业编号lh)

(3)班级编号lh,专业编号lh:

createuniqueindexSY_班专lhonClasseslh(班级编号lh,专业编号lh)

(4)课程编号lh:

createuniqueindexSY_课程编号lhonCourseslh(课程编号lh)

(5)学生学号lh,班级编号lh:

createuniqueindexSY_学班lhonStudentslh(学生学号lh,班级编号lh)

(6)学生学号lh,课程编号lh:

createuniqueindexSY_学课lhonStudylh(学生学号lh,课程编号lh)

5.5触发器建立

(1)当删除教师表Teacherslh中的教师编号lh记录时,需要相应地删除授课表Instructlh和上课表Teachlh里的教师编号lh,所以在教师表Teacherslh上建立触发器

sql语句:

createtriggertr_del_教师编号lh

ONTeacherslh

fordelete

as

delete教师编号lh

whereInstructlh.教师编号lh=(select教师编号lhfromdeleted)

ANDTeachlh.教师编号lh=(select教师编号lhfromdeleted)

sql执行结果:

(2)当更新教师表Teacherslh中的教师编号lh记录时,需要相应地更新授课表Instructlh和上课表Teachlh里的教师编号lh,所以在教师表Teacherslh上建立触发器

sql语句为:

createtriggertr_upd_教师编号lh

ONTeacherslh

forupdate

as

ifupdate(教师编号lh)

begin

updateInstructlh

set教师编号lh=i.教师编号lh

fromdeletedd,insertedi,Instructlhk

wherek.教师编号lh=d.教师编号lh

end

begin

updateTeachlh

set教师编号lh=i.教师编号lh

fromdeletedd,insertedi,Teachlhs

wheres.教师编号lh=d.教师编号lh

end

sql语句执行结果:

5.6存储过程建立

(1)建立一个对学生表插入信息的存储过程

sql语句如下:

createprocedurepro_学生表插入信息lh

snochar(20),

snamechar(12),

ssexchar

(2),

sageint,

ssourceadchar(20),

screditint,

sclasschar(12)

as

insertStudentslh(学生学号lh,学生某某lh,学生性别lh,学生年龄lh,生源所在地lh,已修学分总数lh,班级编号lh)

Values(sno,sname,ssex,sage,ssourcead,scredit,sclass)

SELECT*

FROMStudentslh

Go

Sql执行结果如下:

(2)建立一个输入成绩,自动生成其总学分的存储过程

sql语句如下:

createprocedurepro_输入成绩自动生成学分lh

学生学号lhchar(20),

课程编号lhchar(12),

课程名lhchar(20),

学期lhchar(10),

成绩lhint,

教师某某lhchar(10),

学分lhint

as

begin

insertintopro选修lh

values(学生学号lh,课程编号lh,成绩lh)

updateStudentslh

setStudentslh.已修学分总数lh=Studentslh.已修学分总数lh+学分lh

whereStudentslh.学生学号lh=学生学号lh

end

Sql执行结果如下:

6、应用系统开发与试运行

6.1开发平台和开发环境介绍

开发平台:

MicrosoftVisualStudio2010

开发环境:

VisualStudio是微软公司推出的开发环境。

是目前最流行的Windows平台应用程序开发环境。

VisualStudio2010版本于2010年4月12日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。

VisualStudio2010同时带来了NETFramework4.0、MicrosoftVisualStudio2010CTP(munityTechnologyPreview--CTP),并且支持开发面向Windows7的应用程序。

除了MicrosoftSQLServer,它还支持IBMDB2和Oracle数据库。

与此同时,微软还引入了一门新的语言C#,C#是一门建立在C++和Java基础上的编写.NET框架的现代语言。

我的数据库是在MicrosoftVisualStudio2010平台上以C#语言开发的。

6.2系统功能图

(1)创建功能窗体

(2)数据库

C#代码:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Data;

usingSystem.Data.SqlClient;

usingSystem.Windows.Forms;

namespaceC01luhai

{

classsqlConnect

{

publicSqlConnectioncoon=null;

publicsqlConnect()

{

if(coon==null)

{

coon=newSqlConnection("Datasource=(local);IntegratedSecurity=SSPI;"+"InitialCatalog=C01luhai");

if(coon.State==ConnectionState.Closed)coon.Open();

}

}

publicvoidcloseConnect()

{

if(coon.St

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

当前位置:首页 > 农林牧渔 > 林学

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

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