《学生成绩管理系统》设计报告摘要本数据库的主要功能如下:学生信息设置,该模块包括数据的添加、修改、删除、查询,数据库后台SQL Sever 2000和前台Delphi都可实现这些功能;院系信息设置,该模块包括数据的添加、修改、删除、查询,数据库后台SQL Sever 2000和前台Delphi都可实现这些功能;课程信息设置,该模块包括数据的添加、修改、删除、查询,数据库后台SQL Sever 2000和前台Delphi 都可实现这些功能;学生成绩查询,该模块包括学生各门课程成绩的查询,因为该模块是利用数据库视图,所以不能对数据进行修改、添加及删除。
关键字:教学管理数据库SQL Sever 2000 Delphi 表查询修改添加删除第一章绪论1.1数据库技术的现状数据库技术是计算机科学技术的一个重要分支。
从20世纪50年代中期开始,计算机应用从科学研究部门扩展到企业管理及政府行政部门,人们对数据处理的要求也越来越高。
1968年,世界上诞生了第一个商品化的信息管理系统IMS(Information Management System),从此,数据库技术得到了迅猛发展。
在互联网日益被人们接受的今天,Internet又使数据库技术、知识、技能的重要性得到了充分的放大。
现在数据库已经成为信息管理、办公自动化、计算机辅助设计等应用的主要软件工具之一,帮助人们处理各种各样的信息数据。
在这30多年的历程中,人们在数据库技术的理论研究和系统开发上都取得了辉煌的成就,而且已经开始对新一代数据库系统的深入研究。
数据库系统已经成为现代计算机系统的重要组成部分。
1.2、学生成绩管理系统开发的目的与意义1.掌握数据库设计的基本技术,熟悉数据库设计的每个步骤中的任务和实施方案,并加深对数据库系统系统概念和特点的理解。
2.初步掌握数据库应用系统分析、设计和实现方法。
3.进一步提高学生的知识综合运用能力。
4.为学习更高深的计算机技术打下基础。
提高其综合素质,便于未来就业以及更深发展。
第二章系统需求分析2.1 概述1.信息需求高校学生的成绩管理工作量大、繁杂,人工处理非常困难。
学生成绩管理系统借助于计算机强大的处理能力,大大减轻了管理人员的工作量,并提高了处理的准确性。
学生成绩管理系统的开发运用,实现了学生成绩管理的自动化,不仅能使管理者从繁重的成绩管理工作中解脱出来、把学校从传统的成绩管理模式中解放出来,而且对学生成绩的判断和整理更合理、更公正,同时也给教师提供了一个准确、清晰、轻松的成绩管理环境。
2.功能需求能够进行数据库的数据定义、数据操纵、数据控制等处理功能,进行联机处理的相应时间要短。
具体功能应包括:系统应该提供课程安排数据的插入、删除、更新、查询;课程的添加、删除、查询,学生基本信息查询的功能。
3. 安全性与完整性要求一个学生可以选修多门课程,一门课程可供多名学生选修;一个学生选修一门课程会有一个成绩。
一个院系有一个系名,对应有一个系主任。
2.2 学生成绩管理系统需求分析1.2.1 数据流图1.2.2 系统功能需求能够进行数据库的数据定义、数据操纵、数据控制等处理功能,进行联机处理的相应时间要短。
具体功能应包括:系统应该提供课程安排数据的插入、删除、更新、查询;成绩的添加、修改、删除、查询,学生所在院系及其对应系主任的功能。
1.2.3 系统数据需求(数据字典)关系模式的定义(表、字段、类型、长度及是否为空),分析各关系的函数依赖,并规范到第三范式。
设计学生成绩管理数据库,包括课程、学生、院系、成绩四个关系, 其关系模式中对每个实体定义的属性如下:(1)学生(学号,姓名,性别,年龄,所属院系),其主关键字为学号;(2)课程(课程名,课程号,学时,学分,教学教师),其中主关键字为课程号;(3)成绩(课程号,学号,学生,课程名,分数)其中主关键字为学号和课程号。
(4)院系(系号,系名,系主任)其中主键为院系名称。
第三章系统设计3.1 概念设计(E-R图)3.1.1 设计方法及关键技术逻辑设计采用3NF(第三范式)的设计方法。
该方法用关系数据理论为指导来设计数据库的逻辑模型,是设计关系数据库时在逻辑阶段可以采用的一种有效方法。
设计逻辑结构时一般要分3步进行:(1)将概念结构转换为一般的关系、网状、层次模型;(2)将转换来的关系、网状、层次模型向特定的支持下的数据模型转换;(3)对数据模型进行优化。
此教学管理数据库采用关系模型。
院系名3.1.2 系统的E-R图3.2 逻辑设计3.2.1 设计方法及关键技术逻辑设计采用3NF(第三范式)的设计方法。
该方法用关系数据理论为指导来设计数据库的逻辑模型,是设计关系数据库时在逻辑阶段可以采用的一种有效方法。
设计逻辑结构时一般要分3步进行:(1)将概念结构转换为一般的关系、网状、层次模型;(2)将转换来的关系、网状、层次模型向特定的支持下的数据模型转换;(3)对数据模型进行优化。
此教学管理数据库采用关系模型。
3.2.2 系统的逻辑模型关系模式的定义(表、字段、类型、长度及是否为空)备注数据库表名关系模式名称学生表学生学生表课程表课程课程表成绩表成绩成绩表院系表院系院系表学生表,结构如下:课程表,结构如下:成绩表,结构如下:院系表,结构如下:3.3.3系统的完整性与安全性设计包括主外键,参照完整性、用户自定义完整性(约束、默认值与规则)和触发器,安全性3.3 物理设计数据库物理设计的任务是为上一阶段得到的数据库逻辑模式,即数据库的逻辑结构选择合适的应用环境的物理结构,既确定有效地实现逻辑结构模式的数据库存储模式,确定在物理设备上所采用的存储结构和存取方法,然后对该存储模式进行性能评价、修改设计,经过多次反复,最后得到一个性能较好的存储模式。
数据库物理设计内容包括记录存储结构的设计,存储路径的设计。
3.4 系统功能设计3.5 系统开发平台选择此系统的后台选择SQL Server 2000,前台选择Delphi 7。
SQL Server能够满足今天的商业环境要求不同类型的数据库解决方案。
它一种应用广泛的数据库管理系统,具有许多显著的优点:易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。
性能、可伸缩性及可靠性是基本要求,而进入市场时间也非常关键。
Delphi提供了多种32位可视组件库。
Delphi是一种面向对象的程序设计语言,因此可做到可视窗体的继承。
Delphi采用3层数据管理模式(数据层、对象层、应用程序层),把诸如数据模型、业务规则、窗体、对象等集中存储在对象存储库中。
应用程序可通过在Delphi中使用Borland公司提供的数据引擎(BDE)功能,可以毫无障碍地使用多种数据库,不论是大型数据库还是PC机中的数据库。
Delphi中的数据库感知功能,可使用户在开发应用程序时就可看到数据库的动态变化。
使用Delphi提供的数据库浏览器,则可使用用户在Delphi的集成开发环境中,方便浏览、修改、索引数据库。
为了便于维护程序,Delphi将数据访问与业务规则从程序中分离出来,集中存储在数据模型对象中,当业务规则需要修改时,只需在数据模型级进行修改。
程序运行调用这些数据模型时,修改的结果会自动反映在应用程序中。
第四章数据库应用系统的实现4.1 数据库的定义4.1.1 数据库的定义1.数据库的创建点击开始——所有程序——Microsoft SQL server——企业管理器——Microsoft SQL servers——SQL server组——(local) (Windows NT)——数据库——新建数据库(名为:学生成绩管理系统)2.数据库对象的定义将设计的数据库表用SQL语言(create table ****)或企业管理器中对象树状结构的展开图,各对象要与设计时的名称一致。
包括数据库的定义、表的定义、主键外键定义(关系图)、默认值、规则、约束、触发器、索引、视图等的定义4.2 应用系统的开发登陆代码为procedure TForm1.Button1Click(Sender: TObject);beginif (edit2.Text = mima) and (edit1.text = yonghu)thenbeginShowMessage('Hello! '+edit1.Text) ; // 显示欢迎信息edit1.clear;edit2.clear;form2.Show ;endelsebeginShowMessage(edit1.Text+'对不起,你不能使用本系统') ; //显示错误信息edit2.SetFocus; // 使edit2获得焦点edit2.SelectAll; // 全选edit2中的文本edit1.clear;edit2.clear;end;end;退出代码为:procedure TForm1.Button2Click(Sender: TObject);beginform1.close;end;end.学生信息查询代码为:procedure TForm2.Button1Click(Sender: TObject);beginform2.Close;form3.show;end;课程信息查询代码为:procedure TForm2.Button2Click(Sender: TObject);beginform2.Close;form4.show;end;学生成绩查询代码:procedure TForm2.Button3Click(Sender: TObject);beginform2.Close;form5.show;end;退出代码为:procedure TForm2.Button2Click(Sender: TObject);beginform1.close;end;end.窗体颜色变化代码为:procedure TForm2.FormActivate(Sender: TObject);beginform2.Color:=clGreen; // 初始化为灰色fcolor:=gray; //初始化枚举变量为相应的值end;procedure TForm2.FormClick(Sender: TObject);beginif fcolor=black then fcolor:=redelse fcolor:=succ(fcolor); // 计算后继颜色case fcolor ofred: form2.Color:=clRed;yellow: form2.Color:=clYellow;green: form2.Color:=clGreen;blue: form2.Color:=clBlue;purple: form2.Color:=clPurple;gray: form2.Color:=clGray;black: form2.Color:=clBlack;end;end;查询代码为:procedure TForm3.Button3Click(Sender: TObject);beginADOQuery1.Close;ADOQuery1.SQL.clear;ADOQuery1.SQL.Add('select 姓名,学号,年龄,性别,院系名from 学生表where 姓名='''+Edit1.Text+'''');ADOQuery1.Open;ADOQuery1.Active:= true;edit1.clear;end;返回代码为:procedure TForm3.Button1Click(Sender: TObject);beginform2.show;form3.Close;end;退出代码为:procedure TForm3.Button2Click(Sender: TObject);beginform1.close;end;DBtable的颜色变化代码为:procedure TForm3.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState);vari :integer;beginif gdSelected in State then Exit;//定义表头的字体和背景颜色:for i :=0 to (Sender as TDBGrid).Columns.Count-1 dobeginDBGrid1.Columns[i] :='宋体';//字体DBGrid1.Columns[i].Title.Font.Size :=9;//字体大小(Sender as TDBGrid).Columns[i].Title.Font.Color :=$000000ff; //字体颜色(红色)(Sender as TDBGrid).Columns[i].Title.Color :=$0000ff00;//背景色(绿色)end;//将奇偶行设置不同背景色if ADOTable1.RecNo mod 2 = 0 then(Sender as TDBGrid).Canvas.Brush.Color := clInfoBkelse(Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223);//定义表格线的颜色:DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);with (Sender as TDBGrid).Canvas do //画cell 的边框beginPen.Color := $00ff0000; //定义画笔颜色(蓝色)MoveTo(Rect.Left, Rect.Bottom); //画笔定位LineTo(Rect.Right, Rect.Bottom); //画蓝色的横线Pen.Color := $0000ff00; //定义画笔颜色(绿色)MoveTo(Rect.Right, Rect.Top); //画笔定位LineTo(Rect.Right, Rect.Bottom); //画绿色的竖线end;end;删除代码为:procedure TForm4.Button4Click(Sender: TObject);beginif MessageDlg('你确定要删除吗?', mtConfirmation, [mbYes, mbNo], 0)=mrYes thenADOTable1.Delete;end;添加代码为:procedure TForm4.Button3Click(Sender: TObject);beginAdoTable1.Append;end;返回代码为:procedure TForm4.Button1Click(Sender: TObject);beginform2.show;form3.Close;end;退出代码为:procedure TForm4.Button2Click(Sender: TObject);beginform1.close;end;DBtable的颜色变化代码为:procedure TForm3.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);vari :integer;beginif gdSelected in State then Exit;//定义表头的字体和背景颜色:for i :=0 to (Sender as TDBGrid).Columns.Count-1 dobeginDBGrid1.Columns[i] :='宋体';//字体DBGrid1.Columns[i].Title.Font.Size :=9;//字体大小(Sender as TDBGrid).Columns[i].Title.Font.Color :=$000000ff; //字体颜色(红色)(Sender as TDBGrid).Columns[i].Title.Color :=$0000ff00;//背景色(绿色)end;//将奇偶行设置不同背景色if ADOTable1.RecNo mod 2 = 0 then(Sender as TDBGrid).Canvas.Brush.Color := clInfoBkelse(Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223);//定义表格线的颜色:DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);with (Sender as TDBGrid).Canvas do //画cell 的边框beginPen.Color := $00ff0000; //定义画笔颜色(蓝色)MoveTo(Rect.Left, Rect.Bottom); //画笔定位LineTo(Rect.Right, Rect.Bottom); //画蓝色的横线Pen.Color := $0000ff00; //定义画笔颜色(绿色)MoveTo(Rect.Right, Rect.Top); //画笔定位LineTo(Rect.Right, Rect.Bottom); //画绿色的竖线end;end;查询代码为:ADOQuery1.SQL.clear;ADOQuery1.SQL.Add('select 学生,课程,成绩from 成绩表where 学生='''+Edit1.Text+''' or 课程='''+Edit2.Text+'''');ADOQuery1.Open;ADOQuery1.Active:= true;edit1.Clear;edit2.Clear;end;返回代码为:procedure TForm5.Button1Click(Sender: TObject);beginform2.show;form3.Close;end;退出代码为:procedure TForm5.Button2Click(Sender: TObject);beginform1.close;end;第五章结束语这一次的数据库课程时间让自己学到了很多,去年学了C++,但是由于可是的缘故,课后又没有花很多时间去学习新的东西,所以今年的delphi课程时间做的相当困难,特别是对于数据库的连接和操作部分。