《高校成绩管理系统数据库设计与实现实验报告书--本科毕业设计论文.doc》由会员分享,可在线阅读,更多相关《高校成绩管理系统数据库设计与实现实验报告书--本科毕业设计论文.doc(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、高校成绩管理系统数据库设计与实现班级 计科1201 学号 2012261001XX 姓名 XXX 目录:-1.需求分析1.1数据需求描述1.2 系统功能需求 1.3 其他性能需求-2.概念结构设计2.1画出局部E-R图;2.2合并成全局E-R图;-3.逻辑结构设计3.1 关系模式设计3.2 数据类型定义-4.物理结构设计4.1 聚簇设计4.2 索引设计4.3 分区设计-5.数据库实施5.1 基本表建立5.2 数据输入5.3 视图的建立5.4 索引的建立5.5 触发器建立 5.6 建存储过程-6.应用系统开发与试运行6.1 开发平台和开发环境介绍。6.2 前台界面与后台数据库连接说明,代码实现。
2、6.3 系统各功能设计和运行界面截图。-7.实验总结7.1 遇到的问题和解决的办法7.2 系统设计的不足7.3 进一步改进思路和体会1、 需求分析高校成绩管理系统是一个记录了大学生成绩的系统,它的出现使得查询、更新、插入简单化,高效化,成本也随之大大减少。使用计算机对成绩信息的管理,具有手工管理所无法比拟的优点:信息存储及时,检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生成绩管理的效率,也是高校成绩正规化管理的重要途径。根据实际工作需要,提出了以下数据和业务处理需求:学生信息至少需要包含学号、姓名、性别、年龄、生源所在地、已修学分总数等数据项;课
3、程信息表至少需包含课程编号、课程名称、任课教师、开课学期、学时、考试或考查、学分等数据项,课程根据班级开设。教师信息至少需要包含教师编号、姓名、性别、年龄、职称、联系电话等数据项;学生成绩至少需要学号,学期,课程名称,成绩,任课老师等数据项;班级信息至少需要班级号,所设置课程编号,任课教师等数据项;需要实现以下业务处理和查询功能:学生成绩按每学年成绩统计学生成绩名次排定每门课程平均成绩统计学生所学课程及学分统计学生已修学分总数查询教师任课查询班级课程开设查询硬件环境:LENOVO-G470 软件环境:Windows 7旗舰版 Microsoft SQL Server 2008 Microsof
4、t Visual Studio 2010教师1.1 数据需求描述 登入处理查询登入教师信息学生信息管理人员高校成绩管理系统数据库学生查询课程信息顶层数据流图班级信息学生信息课程信息教师信息1.11.21.31.42.12.22.32.42.5成绩查询课程查询按成绩排名按学年成绩统计按课程成绩查询教师所授课程查询所学课程学分统计已修学分查询班级所设课程查询详细数据流图1.2 系统功能需求 (1)学生成绩按每学年进行成绩统计; (2)学生成绩名次排定; (3)每门课程平均成绩统计; (4) 学生所学课程及学分统计; (5) 输入每个学生成绩时,自动生成该学生已修总学分; (6) 学生成绩查询; (
5、7) 教师任课查询; (8) 班级课程开设查询; 成绩管理系统信息维护系统登入退出成绩查询学生所学课程学分查询班级设置课程信息查询教师任信息查询调用存储过程系统功能图1.3 其他性能需求(1)可供多用户同时使用。(2)用户输入出错时,有错误提示。(3)安全性高。(4)存储需求描述。(5)响应时间2、概念结构设计2.1局部E-R图:2.2合并成全局E-R图:3、逻辑结构设计3.1 关系模式设计教师wmq(教师编号wmq、教师姓名wmq、教师性别wmq、教师年龄wmq、职称wmq、联系电话wmq)上课wmq(教师编号wmq,班级编号wmq)授课wmq(教师编号wmq,课程编号wmq)课程wmq(课
6、程编号wmq、课程名称wmq、教师姓名wmq、开课学期wmq、课程学时wmq、考核方式wmq、学分wmq)学习wmq(学号wmq,课程编号wmq,学期wmq,成绩wmq,教师姓名wmq)学生wmq(学号wmq、姓名wmq、性别wmq、年龄wmq、生源所在地wmq、已修学分总数wmq,班级编号wmq)开设wmq(课程编号wmq,班级编号wmq)班级wmq(班级编号wmq,班级名称wmq,专业编号wmq)专业wmq(专业编号wmq,专业名称wmq)登陆wmq(用户名wmq,密码wmq,权限wmq)3.2 数据类型定义 (1)教师wmq数据项名数据类型长度完整性约束教师编号wmqchar5主键教师姓
7、名wmqchar10教师性别wmqchar5教师年龄wmqint5职称wmqchar10联系电话wmqchar20(2)上课wmq数据项名数据类型长度完整性约束教师编号wmqchar5主键外键班级编号wmqchar5外键(3)授课wmq数据项名数据类型长度完整性约束教师编号wmqchar5主键外键课程编号wmqchar5外键(4)课程wmq数据项名数据类型长度完整性约束课程编号wmqchar5主键课程名称wmqchar10教师姓名wmqchar10开课时间wmqchar20课程学时wmqint100考核方式wmqchar5学分wmqint50(5)学习wmq数据项名数据类型长度完整性约束学号w
8、mqchar5主键外键课程编号wmqchar5外键学期wmqchar10成绩wmqint10教师姓名wmqchar10(6)学生wmq数据项名数据类型长度完整性约束学号wmqchar5主键姓名wmqchar10性别wmqchar5年龄wmqint5生源所在地wmqChar20已修学分总数wmqint5班级编号wmqchar5外键(7)开设wmq数据项名数据类型长度完整性约束课程编号wmqchar5主键外键班级编号wmqchar5外键(8)班级wmq数据项名数据类型长度完整性约束班级编号wmqchar5主键班级名称wmqchar10专业编号wmqchar5外键(9)专业wmq数据项名数据类型长度
9、完整性约束专业编号wmqchar5主键专业名称wmqchar10(10)登陆wmq数据项名数据类型长度完整性约束用户名wmqchar20主键密码wmqchar20权限wmqchar104、物理结构设计4.1 聚簇设计教师wmq(教师编号wmq)课程wmq(课程编号wmq)学生wmq(学号wmq,班级编号wmq)班级wmq(班级编号wmq)这几个聚簇设计是因为这几张表都是实体表,且聚簇中的属性都是主键或是外键,被访问的概率很高,而其他表或者这些表上的其他属性被访问的概率就相对较低。4.2 索引设计建立索引的一般规则:(1) 在主键属性列和外键属性列上通常都可以分别建立索引,不仅有助于唯一性检查和
10、完整性检查,而且可以加快连接查询的速度。(2) 以查询为主的关系可建立尽可能多的索引。(3) 对等值连接,但满足条件的元组较少的查询可以考虑建立索引。(4) 如果查询可以从索引直接得到结果而不必访问关系,则对此种查询可以建立索引。所以在高线成绩管理数据库中建立索引如下: 教师wmq(教师编号wmq)课程wmq(课程编号wmq)学生wmq(学生学号wmq,班级编号wmq)班级wmq(班级编号wmq)学习wmq(学号wmq,课程编号wmq)4.3 分区设计涉及到数据库文件和日志文件的分区问题。磁盘分区设计的一般原则:(1) 减少访问冲突,提高I/O并发性。多个事物并发访问同一磁盘时,会产生磁盘访问
11、冲突而导致效率低下,如果事务访问数据均能分布于不同磁盘上,则I/O可并发执行,从而提高数据库访问速度。(2) 分散热点数据,均衡I/O负担。在数据库中数据访问的频率是不均匀的,那些经常被访问的数据成为热点数据,此类数据宜分散存在于不同的磁盘上,以均衡各个磁盘的负荷,充分发挥多磁盘的并行操作的优势。(3) 保证关键数据快速访问,缓解系统瓶颈。在数据库中有些数据如数据字典等的访问频率很高,为保证对它的访问不直接影响整个系统的效率,可以将其存放在某一固定磁盘上,以保证其快速访问。该成绩管理系统由于程序较小,所以不进行分区设计。5、数据库实施数据库的建立:5.1 基本表建立(1)教师wmq表建立:(2
12、)课程wmq表建立:(3)专业wmq表建立:(4)班级wmq表建立:(5)学生wmq表建立:(6)上课wmq表建立:(7)授课wmq表建立:(8)学习wmq表建立:(9)开设wmq表建立:(10)登陆wmq表建立:5.2数据输入(1)专业表数据插入:(2)班级表数据插入:(3)学生表数据插入:(4)教师表插入:(5)课程表数据插入:(6)授课表数据插入:(7)学习表数据插入:(8)开设表数据插入:(9)上课表数据插入:(10)登陆表数据插入:5.3 视图的建立(1)学生成绩统计:(2)每门课程平均成绩统计:(3)学生所学课程及学分统计(4)教师任课查询:(5)班级课程开设查询:(6)生源地平均
13、成绩查询5.4 索引的建立因为每一个表建立,SSMS会自动生成一个聚集索引,所以不需要再手动建立聚集索引。下面根据4.2来设计索引:(1)教师编号wmq:(2)专业编号wmq:(3)班级编号wmq,专业编号wmq:(4)课程编号wmq:(5)学生学号wmq,班级编号wmq:(6)学生学号wmq,课程编号wmq:5.5 触发器建立 (1)学分统计wmq当用户insert新的成绩且该成绩=60分时,增加相应学分(2)删除教师wmq当删除教师表中的教师编号wmq记录时,需要相应地删除授课表和上课表里的教师编号wmq,所以在教师表上建立触发器(3)更新教师wmq当更新教师表中的教师编号wmq记录时,需
14、要相应地更新授课表和上课表里的教师编号wmq,所以在教师表上建立触发器5.6 建存储过程(1)建立一个对学生表插入信息的存储过程:(2)建立一个输入成绩,自动生成其总学分的存储过程:6、应用系统开发与试运行6.1 开发平台和开发环境介绍。开发平台:Microsoft Visual Studio 2010开发环境:Visual Studio是微软公司推出的开发环境。是目前最流行的Windows平台应用程序开发环境。Visual Studio 2010版本于2010年4月12日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。Visual Studio 2010同时带来了 N
15、ET Framework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview-CTP),并且支持开发面向Windows 7的应用程序。除了Microsoft SQL Server,它还支持 IBM DB2和Oracle数据库。与此同时,微软还引入了一门新的语言C#,C#是一门建立在C+和Java基础上的编写.NET框架的现代语言。6.2 前台界面与后台数据库连接说明,代码实现:using System;using System.Collections.Generic;using System.Linq;using
16、 System.Text;using System.Data;using System.Data.SqlClient;using System.Windows.Forms;namespace D01wangminqian class sqlConnect public SqlConnection coon = null; public sqlConnect() if (coon = null) coon = new SqlConnection(Data source =(local);Integrated Security=SSPI; + Initial Catalog =D01wangmin
17、qian); if (coon.State = ConnectionState.Closed) coon.Open(); public void closeConnect() if (coon.State = ConnectionState.Open) coon.Close(); public DataSet Getds(string sql) if (coon.State = ConnectionState.Closed) coon.Open(); DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(sql,
18、coon); da.Fill(ds); coon.Close(); return ds; public int OperateData(string sql) if (coon.State = ConnectionState.Closed) coon.Open(); SqlCommand sqlcom = new SqlCommand(); sqlcom.CommandText = sql; sqlcom.CommandType = CommandType.Text; sqlcom.Connection = coon; int x = sqlcom.ExecuteNonQuery(); coo
19、n.Close(); return x; public DataSet BinDataGriView(DataGridView dgv, string sql) if (coon.State = ConnectionState.Closed) coon.Open(); SqlDataAdapter da = new SqlDataAdapter(sql, coon); DataSet ds = new DataSet(); da.Fill(ds); dgv.DataSource = ds.Tables0; return ds; 6.3 系统各功能设计和运行界面截图。登陆系统各功能流程图:登陆管
20、理员教师学生管理员操作主界面教师操作主界面学生操作主界面教务安排信息管理信息转储信息查询成绩录入信息查询教师安排班级信息管理课程信息管理学生信息管理信息转储成绩录入学生信息教师任课已修学分教师任课班级开课学生成绩生源地(1)登陆界面:不同的用户类型进入的界面不同:(2)管理员界面:(3)教师界面:(4)学生界面:(5)管理员进入界面后,主要的操作是教务安排,以及教师、班级、学生信息的管理操作,各操作界面如下:(6)教师进入界面后的主要操作是教师任课、学生信息查询,以及成绩的录入,各操作界面如下:(7)学生进入界面后主要的操作是生源地平均成绩查询、教师任课查询、班级开课查询、成绩、已修学分查询:
21、7、实验总结7.1 遇到的问题和解决的办法(1)概念结构设计 在系统需求分析完成以后,我根据用户需求设计概念结构的时候遇到了数据冗余等多种问题,经过慢慢的分解关系最终得到了相对来说还比较完善的概念结构,通过ER图表示出来。(2)数据插入 在进行高校成绩管理数据库插入时,我出现了许多错误,后来检验下来,发现主要错在数据的类型、大小以及各个约束关系上,导致一些插入无法进行。而删除、重建基本表,会发现完整性约束导致基本表不能删除,所以我利用基本表的修改ALTER来进行改动。(3)触发器和存储过程开始一直搞不清楚这两个到底是个什么作用,应该怎样设计,最后通过查阅书本以及网络资料,弄清了这两个概念,并设
22、计了触发器和存储过程。现将触发器和存储过程的概念如下:触发器:触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete,update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。存储过程:存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,是利用SQL Server 所提供的Transact-SQL 语言所编写的程序。经编译后存储在数据库中。存储过程是数据库中
23、的一个重要对象,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,存储过程可由应用程序通过一个调用来执行,而且允许用户声明变量 。同时,存储过程可以接收和输出参数、返回执行存储过程的状态值,也可以嵌套调用。(4)连接数据库刚开始我打开microsoft visual studio ,在创建C#工程的时候发现工程选项中根本就没有visual c#这一项,通过请教同学才知道可能是我的visual studio没有安装完整,于是我又通过重新下载软件安装,由于网速种种原因这个过程确实消耗了我很
24、多时间。后来总算来装上了,然后通过查看书本上的连接步骤和代码,总算是顺利将它连接上了。 (5)界面代码编写在界面代码的调试过程中也遇到了不少错误,由于是第一次接触c#语言,也不是很熟练,很多错误都不知道怎么改正,后来也是通过查阅大量的网络知识,以及请教身边同学才解决的。7.2 系统设计的不足(1)在系统功能方面,学生、老师这两种登入权限方面有交叉,所以在系统的实用性方面还存在着很大的缺陷。(2)在进行学生成绩排名的时候,只能显示排名结果,但是不能显示名次。(3)在整个系统的稳定性方面做的不足。如果再增加其他功能很有可能导致系统奔溃。(4)隐私和安全性做的不够。也就是说别人也可查询我的信息。7.
25、3 进一步改进思路和体会改进思路:首先,我觉得各种操作的实现代码可以经过日后的学习得到进一步的改善,使得应用系统稳定性更加好,不容易奔溃。然后对于数据库的实现功能也可以增加些,还有控制权限应该要做得更好,做到对用户隐私的保护。体会:可以说这是我第一次自己亲手去感受一个应用程序的完成过程,虽然过程真的是很艰辛,但是当它完成的时候那种喜悦真的旁人无法体会。以前没有怎么接触过C#,第一次接触还真是有些棘手,方方面面都得先请教别人,到最后都不好意思去打扰大神了,只能靠自己默默得百度完成。或许对于别人来说很简单的问题,在我这里都要经过一番波折后才能解决。不过这次实验给我带来的收获还是挺多的,至少我学会了一种新的语言,经过日后的练习,我会继续巩固它;另外,我也学习到了自己如何独立坚定地去完成一个程序。