高校成绩管理系统数据库设计与实现班级计科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 前台界面与后台数据库连接说明,代码实现。
6.3 系统各功能设计和运行界面截图。
------------------------------------------7.实验总结7.1 遇到的问题和解决的办法7.2 系统设计的不足7.3 进一步改进思路和体会1、需求分析高校成绩管理系统是一个记录了大学生成绩的系统,它的出现使得查询、更新、插入简单化,高效化,成本也随之大大减少。
使用计算机对成绩信息的管理,具有手工管理所无法比拟的优点:信息存储及时,检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学生成绩管理的效率,也是高校成绩正规化管理的重要途径。
根据实际工作需要,提出了以下数据和业务处理需求:◆学生信息至少需要包含学号、姓名、性别、年龄、生源所在地、已修学分总数等数据项;◆课程信息表至少需包含课程编号、课程名称、任课教师、开课学期、学时、考试或考查、学分等数据项,课程根据班级开设。
◆教师信息至少需要包含教师编号、姓名、性别、年龄、职称、联系电话等数据项;◆学生成绩至少需要学号,学期,课程名称,成绩,任课老师等数据项;◆班级信息至少需要班级号,所设置课程编号,任课教师等数据项;◆需要实现以下业务处理和查询功能:学生成绩按每学年成绩统计学生成绩名次排定每门课程平均成绩统计学生所学课程及学分统计学生已修学分总数查询教师任课查询班级课程开设查询◆硬件环境:LENOVO-G470◆软件环境:Windows 7旗舰版Microsoft SQL Server 2008Microsoft Visual Studio 20101.1数据需求描述顶层数据流图详细数据流图1.2 系统功能需求(1)学生成绩按每学年进行成绩统计;(2)学生成绩名次排定;(3)每门课程平均成绩统计;(4)学生所学课程及学分统计;(5)输入每个学生成绩时,自动生成该学生已修总学分;(6)学生成绩查询;(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(课程编号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 数据类型定义4、物理结构设计4.1 聚簇设计教师wmq(教师编号wmq)课程wmq(课程编号wmq)学生wmq(学号wmq,班级编号wmq)班级wmq(班级编号wmq)这几个聚簇设计是因为这几张表都是实体表,且聚簇中的属性都是主键或是外键,被访问的概率很高,而其他表或者这些表上的其他属性被访问的概率就相对较低。
4.2 索引设计建立索引的一般规则:(1)在主键属性列和外键属性列上通常都可以分别建立索引,不仅有助于唯一性检查和完整性检查,而且可以加快连接查询的速度。
(2)以查询为主的关系可建立尽可能多的索引。
(3)对等值连接,但满足条件的元组较少的查询可以考虑建立索引。
(4)如果查询可以从索引直接得到结果而不必访问关系,则对此种查询可以建立索引。
所以在高线成绩管理数据库中建立索引如下:教师wmq(教师编号wmq)课程wmq(课程编号wmq)学生wmq(学生学号wmq,班级编号wmq)班级wmq(班级编号wmq)学习wmq(学号wmq,课程编号wmq)4.3 分区设计涉及到数据库文件和日志文件的分区问题。
磁盘分区设计的一般原则:(1)减少访问冲突,提高I/O并发性。
多个事物并发访问同一磁盘时,会产生磁盘访问冲突而导致效率低下,如果事务访问数据均能分布于不同磁盘上,则I/O可并发执行,从而提高数据库访问速度。
(2)分散热点数据,均衡I/O负担。
在数据库中数据访问的频率是不均匀的,那些经常被访问的数据成为热点数据,此类数据宜分散存在于不同的磁盘上,以均衡各个磁盘的负荷,充分发挥多磁盘的并行操作的优势。
(3)保证关键数据快速访问,缓解系统瓶颈。
在数据库中有些数据如数据字典等的访问频率很高,为保证对它的访问不直接影响整个系统的效率,可以将其存放在某一固定磁盘上,以保证其快速访问。
该成绩管理系统由于程序较小,所以不进行分区设计。
5、数据库实施数据库的建立:5.1 基本表建立(1)教师wmq表建立:(2)课程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)生源地平均成绩查询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记录时,需要相应地更新授课表和上课表里的教师编号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同时带来了NET 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 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 =D01wangminqian");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, coon);da.Fill(ds);coon.Close();return ds;}public int OperateData(string sql){if (coon.State == ConnectionState.Closed) coon.Open();SqlCommand sqlcom = new SqlCommand();mandText = sql;mandType = CommandType.Text;sqlcom.Connection = coon;int x = sqlcom.ExecuteNonQuery();coon.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.Tables[0];return ds;}}}6.3 系统各功能设计和运行界面截图。