已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高校成绩管理系统数据库 设计与实现 班级_ 学号 _ 姓名 _ 1、需求分析计算机已经深 入到日常 工作和生活的方方面 面,成为我们学习和工作的得力助手,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。随着越来越多的应用软件出现,人们对它的要求也越来越高;虽然现在世界上的各种软件层出不穷,但它们依然不能满足用户的各种特殊需要,所以人们仍是不得不开发适合特殊需求的软件。高校成绩管理系统记录了一个大学生成绩的系统,它的出现使得查询、更新、插入简单化,高效化,成本也随之大大减少。使用计算机对成绩信息的管理,具有手工管理所 无法比拟的优点:信息存储及时,检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学 生成绩管理的效率,也是高校成绩正规化管理的重要途径。本软件控件均以中文形式表示,对普通程序使用者的查询提供简单方便的快捷操作,不需要技术含量。以SQL SERVER数据库管理系统为平台,通过设计数据库概念模型、逻辑模型以及利用标准SQL语言的数据库实现,掌握关系数据库系统的设计与实现方法,增强数据库设计和数据库应用系统开发能力。操作人员与维护人员应懂的SQL语言。运行环境:硬件环境:高性能计算机一台 软件环境: Awindows系列 BMicrosoft SQL Server 2008 CMicrosoft Visual Studio 20101.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数据项名数据类型长度完整性约束教师编号char20主键,唯一,非空教师姓名char10教师性别char2教师年龄char20职称char10联系电话char20(2)上课Teachlh数据项名数据类型长度完整性约束教师编号char20主键,唯一,非空班级编号char20外键(3)授课Instructlh数据项名数据类型长度完整性约束教师编号char20主键,唯一,非空课程编号char20外键(4)课程Courseslh数据项名数据类型长度完整性约束课程编号char20主键,唯一,非空课程名char20教师姓名char10开课时间char20学时int100考试或考查char4学分int40(5)学习Studylh数据项名数据类型长度完整性约束学号char20主键,唯一,非空课程编号char20外键学期char10课程名称char20成绩int10教师姓名int10(6)学生Studentslh数据项名数据类型长度完整性约束学生学号char12主键,唯一,非空学生姓名char10学生性别char2学生年龄int4生源所在地Char20已修学分总数int4班级编号char10外键(7)开设Setuplh数据项名数据类型长度完整性约束课程编号char20主键,唯一,非空班级编号char20外键(8)班级Classeslh数据项名数据类型长度完整性约束班级编号char20主键,唯一,非空班级名称char20专业编号char20外键(9)专业Majorlh数据项名数据类型长度完整性约束专业编号char20主键,唯一,非空专业名称char203.3 关系模式的优化对关系模式进行规范化处理,对关系模式进行评价与修正。4、物理结构设计4.1 聚簇设计 该高校成绩管理系统数据库可建立一下聚簇:Teacherslh(教师编号lh)Courseslh(课程编号lh)Studentslh(学生学号lh,班级编号lh)Classeslh(班级编号lh)这几个聚簇设计是因为这几张表都是实体表,且聚簇中的属性都是主键或是外键,被访问的概率很高,而其他表或者这些表上的其他属性被访问的概率就相对较低。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数据项名数据类型长度完整性约束教师编号lhchar20主键,唯一,非空教师姓名lhchar10教师性别lhchar2教师年龄lhchar20职称lhchar10联系电话lhchar20SQL语句为:CREATE TABLE Teacherslh(教师编号lh CHAR(20) PRIMARY KEY,教师姓名lh CHAR(10),教师性别lh CHAR(2),教师年龄lh INT,职称lh CHAR(20),联系电话lh CHAR(10),);SQL执行结果截图: (2)专业表Majorslh数据项名数据类型长度完整性约束专业编号lhchar20主键,唯一,非空专业名称lhchar20SQL语句为:CREATE TABLE Majorslh(专业编号lh CHAR(20) PRIMARY KEY,专业名称lh CHAR(20),);SQL执行结果截图:(3)班级表Classeslh数据项名数据类型长度完整性约束班级编号lhchar20主键,唯一,非空班级名称lhchar20专业编号lhchar20外键SQL语句为:CREATE TABLE Classeslh(班级编号lh CHAR(20) PRIMARY KEY,班级名称lh CHAR(20),专业编号lh CHAR(20)constraint Major_Class foreign key(专业编号lh) references Majorslh);SQL执行结果截图:(4)课程表Courseslh数据项名数据类型长度完整性约束课程编号char20主键,唯一,非空课程名char20教师姓名char10学时int10考试或考查char4学分int4SQL语句为:CREATE TABLE Courseslh(课程编号lh CHAR(20) PRIMARY KEY,课程名lh CHAR(20),教师姓名lh CHAR(10),学时lh INT,考试或考查lh CHAR(4),学分lh CHAR(4)SQL执行结果截图:(5)学生表Studentslh数据项名数据类型长度完整性约束学生学号char20主键,唯一,非空学生姓名char10学生性别char2学生年龄int4生源所在地Char20已修学分总数int4班级编号char20外键SQL语句为:CREATE TABLE Studentslh(学生学号lh CHAR(20) PRIMARY KEY,学生姓名lh CHAR(10),学生性别lh CHAR(2),学生年龄lh int,生源所在地lh char(20),已修学分总数lh int,班级编号lh CHAR(20)constraint Class_Student foreign key(班级编号lh) references Classeslh)SQL执行结果截图:(6)上课表Teachlh数据项名数据类型长度完整性约束教师编号lhchar20主键,唯一,非空班级编号lhchar20外键SQL语句为:CREATE TABLE Teachlh(教师编号lh CHAR(20) PRIMARY KEY,班级编号lh CHAR(20) ,CONSTRAINT Class_Teach FOREIGN KEY(班级编号lh) REFERENCES Classeslh,)SQL执行结果截图:(7)授课表Instructlh数据项名数据类型长度完整性约束教师编号char20主键,唯一,非空课程编号char20外键SQL语句为:CREATE TABLE Instructlh(教师编号lh CHAR(20) PRIMARY KEY,课程编号lh CHAR(20),CONSTRAINT Course_Instruct FOREIGN KEY(课程编号lh) REFERENCES Courseslh)SQL执行结果截图:(8)学习表Studylh数据项名数据类型长度完整性约束学生学号char20主键,唯一,非空课程编号char20外键学期char10课程名称char20成绩int10教师姓名char10SQL语句为:CREATE TABLE Studylh(学生学号lh CHAR(20) PRIMARY KEY,课程编号lh CHAR(20),学期lh char(10),课程名称lh char(20),成绩lh int,教师姓名lh char(10),CONSTRAINT Course_Study FOREIGN KEY(课程编号lh) REFERENCES Courseslh)SQL执行结果截图:(9)开设Setuplh数据项名数据类型长度完整性约束课程编号char20主键,唯一,非空班级编号char20外键SQL语句为:CREATE TABLE Setuplh(课程编号lh CHAR(20) PRIMARY KEY,班级编号lh char(20),CONSTRAINT Class_Setup FOREIGN KEY(班级编号lh) REFERENCES Classeslh)SQL执行结果截图:5.2 数据输入专业表Majorslh:班级表Classeslh:课程表Courseslh:教师表Teacherslh:学生表Studentslh:学习表Studylh:上课表Teachlh:授课表Instructlh:开设表Setuplh:5.3视图的建立(1)学生成绩统计create view 学生成绩统计lhas select Studylh.学生学号lh,学生姓名lh,Studylh.课程名称lh, 班级名称lh,Studylh.教师姓名lh,学分lh,学期lh,成绩lh from Studentslh, Courseslh, Classeslh,Studylh where Studentslh.学生学号lh = Studylh.学生学号lh AND Studylh.课程编号lh = Courseslh.课程编号lh AND Classeslh.班级编号lh = Studentslh.班级编号lh(2)每门课程平均成绩统计create view 每门课程平均成绩lhas select avg(成绩lh) 平均成绩lh,课程编号lh from Studylhgroup by 课程编号lh(3)学生所学课程及学分统计create view 学生所学课程及学分统计lh as select 学生成绩统计lh.学生学号lh, 学生成绩统计lh.课程名称lh, 学生成绩统计lh.学分lh from 学生成绩统计lh(4)教师任课查询create view 教师任课查询lhas select 教师编号lh, Teacherslh.教师姓名lh, 课程编号lh, 课程名lh, 学时lh, 学分lh from Teacherslh, Courseslh where Teacherslh.教师姓名lh = Courseslh.教师姓名lh(5)班级课程开设查询create view 班级课程开设查询lhas select Classeslh.班级编号lh, 班级名称lh, Courseslh.课程编号lh, 课程名lh, 学时lh, 学分lh from Classeslh, Courseslh,Setuplh where Classeslh.班级编号lh = Setuplh.班级编号lh AND Setuplh.课程编号lh = Courseslh.课程编号lh5.4 索引的建立因为每一个表建立,SSMS会自动生成一个聚集索引,所以不需要再手动建立聚集索引。下面根据4.2来建立索引:(1) 教师编号lh:create unique index SY_教师编号lh on Teacherslh(教师编号lh)(2) 专业编号lh:create unique index SY_专业编号lh on Majorslh(专业编号lh)(3) 班级编号lh,专业编号lh:create unique index SY_班专lh on Classeslh(班级编号lh,专业编号lh)(4) 课程编号lh:create unique index SY_课程编号lh on Courseslh(课程编号lh)(5) 学生学号lh,班级编号lh:create unique index SY_学班lh on Studentslh(学生学号lh,班级编号lh)(6) 学生学号lh,课程编号lh:create unique index SY_学课lh on Studylh(学生学号lh,课程编号lh)5.5 触发器建立 (1)当删除教师表Teacherslh中的教师编号lh记录时,需要相应地删除授课表Instructlh和上课表Teachlh里的教师编号lh,所以在教师表Teacherslh上建立触发器sql语句:create trigger tr_del_教师编号lhON Teacherslhfor deleteas delete 教师编号lh where Instructlh.教师编号lh = (select 教师编号lh from deleted) AND Teachlh.教师编号lh = (select 教师编号lh from deleted)sql执行结果:(2)当更新教师表Teacherslh中的教师编号lh记录时,需要相应地更新授课表Instructlh和上课表Teachlh里的教师编号lh,所以在教师表Teacherslh上建立触发器sql语句为:create trigger tr_upd_教师编号lhON Teacherslhfor update as if update (教师编号lh) begin update Instructlh set 教师编号lh = i.教师编号lh from deleted d,inserted i ,Instructlh k where k.教师编号lh=d.教师编号lhendbegin update Teachlh set 教师编号lh = i.教师编号lh from deleted d,inserted i ,Teachlh s where s.教师编号lh=d.教师编号lhendsql语句执行结果:5.6存储过程建立(1)建立一个对学生表插入信息的存储过程sql语句如下:create procedure pro_学生表插入信息lhsno char(20),sname char(12),ssex char(2),sage int,ssourcead char(20),scredit int,sclass char(12)as insert Studentslh(学生学号lh, 学生姓名lh, 学生性别lh, 学生年龄lh, 生源所在地lh, 已修学分总数lh, 班级编号lh) Values(sno,sname,ssex,sage,ssourcead,scredit,sclass)SELECT *FROM StudentslhGoSql执行结果如下:(2)建立一个输入成绩,自动生成其总学分的存储过程sql语句如下:create procedure pro_输入成绩自动生成学分lh学生学号lh char(20),课程编号lh char(12),课程名lh char(20),学期lh char(10),成绩lh int,教师姓名lh char(10),学分lh intas begin insert into pro选修lh values( 学生学号lh,课程编号lh,成绩lh ) update Studentslh set Studentslh.已修学分总数lh = Studentslh.已修学分总数lh + 学分lh where Studentslh.学生学号lh=学生学号lhendSql执行结果如下: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框架的现代语言。我的数据库是在Microsoft Visual Studio 2010平台上以C#语言开发的。6.2 系统功能图(1)创建功能窗体(2)链接数据库C#代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;using System.Windows.Forms;namespace C01luhai class sqlConnect public SqlConnection coon = null; public sqlConnect() if (coon = null) coon = new SqlConnection(Data source =(local);Integrated Security=SSPI; + Initial Catalog =C01luhai); 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(); sqlcom.CommandText = sql; sqlcom.CommandType = 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.Tables0; return ds; 截图:(3)登录窗口:C#代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace C01luhai public partial class frmLogin : Form public frmLogin() InitializeComponent(); private void btnLogin_Click(object sender, EventArgs e) if(txtName.Text = | txtPwd.Text = ) MessageBox.Show(用?户名?或密码?不?能为a空?!?,提示?,MessageBoxButtons.OK,MessageBoxIcon.Information); else frmMain fmain = new frmMain(); fmain.Show(); this.Hide(); private void btnExit_Click(object sender, EventArgs e) this.Dispose(); 截图:(5) 主窗口:C#代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace C01luhai public partial class frmMain : Form public frmMain() InitializeComponent(); private void 退?出?ToolStripMenuItem_Click_1(object sender, EventArgs e) Application.Exit(); private void 学生成绩统3计?ToolStripMenuItem_Click(object sender, EventArgs e) frmReport1 fReport1 = new frmReport1(); fReport1.Show(); private void 学生成绩名?次?排?定ToolStripMenuItem_Click(object sender, EventArgs e) frmReport2 fReport2 = new frmReport2(); fReport2.Show(); private void 每?门?课?平?均成绩统3计?ToolStripMenuItem_Click(object sender, EventArgs e) frmReport3 fReport3 = new frmReport3(); fReport3.Show(); private void 学生所学课?程及学分?统3计?ToolStripMenuItem_Click(object sender, EventArgs e) frmCourse1 fCourse1 = new frmCourse1(); fCourse1.Show(); private void 教师|任?课?查询ToolStripMenuItem_Click(object sender, EventArgs e) frmCourse2 fCourse2 = new frmCourse2(); fCourse2.Show(); private void 班级?课?程开a设查询ToolStripMenuItem_Click(object sender, EventArgs e) frmCourse3 fCourse3 = new frmCourse3(); fCourse3.Show(); private void 学生信?息插?入?ToolStripMenuItem_Click(object sender, EventArgs e) frmStudent fStudent = new frmStudent(); fStudent.Show(); private void 调用?存?储过y程演Y示?ToolStripMenuItem_Click(object sender, EventArgs e) frmProcedure fProcedure = new frmProcedure(); fProcedure.Show(); 截图:6.3 系统功能界面截图以几个功能界面图为例:(1)学生成绩统计C#代码;using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace C01luhai public partial class frmReport1 : Form sqlConnect con = new sqlConnect(); public DataSet ds = new DataSet(); private string lh; protected void SetBind() try lh = select * from 学生成绩统3计?lh; con.BindDataGridView(dataGridView1 ,lh); dataGridView1.Columns0.ReadOnly=true; dataGridView1.AllowUserToAddRows =false; catch MessageBox.Show(不?能操作?, 提示?,MessageBoxButtons.OK, MessageBoxIcon.Information); public frmReport1() InitializeComponent(); SetBind(); private void frmReport1_Load(object sender, EventArgs e) private void button1_Click(object sender, EventArgs e) try lh = select * from 学生成绩统3计?lh where 学生学号?lh=+txtSno.Text+; con.BindDataGridView(dataGridView1, lh); dataGridView1.Columns0.ReadOnly =true; dataGridView1.AllowUserToAddRows = false; catch MessageBox.Show(不?能操作?, 提示?, MessageBoxButtons.OK, MessageBoxIcon.Information); private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 截图:(2)学生成绩名次排定:截图:(3)教师任课查询:截图:(4)学生信息插入:C#代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace C01luhai public partial class frmStudent : Form sqlConnect con = ne
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 济宁学院《基本乐理1》2021-2022学年第一学期期末试卷
- 济宁学院《高等代数Ⅰ》2021-2022学年第一学期期末试卷
- 福建省莆田市仙游县枫亭中学2024届高三七校联考数学试题试卷
- 不同消费群体对肉类替代品需求特征分析
- 课程设计中的英文摘要
- 驱蚊香囊研学课程设计
- 盆栽移植课程设计案例
- 课程设计圆柱圆锥
- eda课程设计看门狗
- 多效蒸发课程设计
- WDZANYJY23低压电力电缆技术规格书
- 《水循环》-完整版课件
- 抗高血压药物基因检测课件
- 西游记 品味经典名著导读PPT
- 金坛区苏科版四年级心理健康教育第1课《我的兴趣爱好》课件(定稿)
- 心肌缺血和心肌梗死的心电图表现讲义课件
- 小学生性教育调查问卷
- 学历案的编写课件
- 旅游行政管理第二章旅游行政管理体制课件
- 卫生院关于召开基本公共卫生服务项目培训会的通知
- 有机化学ppt课件(完整版)
评论
0/150
提交评论