学生成绩管理系统设计报告.docx
- 文档编号:26188954
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:19
- 大小:484.58KB
学生成绩管理系统设计报告.docx
《学生成绩管理系统设计报告.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统设计报告.docx(19页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统设计报告
《学生成绩管理系统》设计报告
摘要
本数据库的主要功能如下:
学生信息设置,该模块包括数据的添加、修改、删除、查询,数据库后台SQLSever2000和前台Delphi都可实现这些功能;院系信息设置,该模块包括数据的添加、修改、删除、查询,数据库后台SQLSever2000和前台Delphi都可实现这些功能;课程信息设置,该模块包括数据的添加、修改、删除、查询,数据库后台SQLSever2000和前台Delphi都可实现这些功能;学生成绩查询,该模块包括学生各门课程成绩的查询,因为该模块是利用数据库视图,所以不能对数据进行修改、添加及删除。
关键字:
教学管理数据库SQLSever2000Delphi表查询修改添加删除
第一章绪论
1.1数据库技术的现状
数据库技术是计算机科学技术的一个重要分支。
从20世纪50年代中期开始,计算机应用从科学研究部门扩展到企业管理及政府行政部门,人们对数据处理的要求也越来越高。
1968年,世界上诞生了第一个商品化的信息管理系统IMS(InformationManagementSystem),从此,数据库技术得到了迅猛发展。
在互联网日益被人们接受的今天,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系统开发平台选择
此系统的后台选择SQLServer2000,前台选择Delphi7。
SQLServer能够满足今天的商业环境要求不同类型的数据库解决方案。
它一种应用广泛的数据库管理系统,具有许多显著的优点:
易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。
性能、可伸缩性及可靠性是基本要求,而进入市场时间也非常关键。
Delphi提供了多种32位可视组件库。
Delphi是一种面向对象的程序设计语言,因此可做到可视窗体的继承。
Delphi采用3层数据管理模式(数据层、对象层、应用程序层),把诸如数据模型、业务规则、窗体、对象等集中存储在对象存储库中。
应用程序可通过在Delphi中使用Borland公司提供的数据引擎(BDE)功能,可以毫无障碍地使用多种数据库,不论是大型数据库还是PC机中的数据库。
Delphi中的数据库感知功能,可使用户在开发应用程序时就可看到数据库的动态变化。
使用Delphi提供的数据库浏览器,则可使用用户在Delphi的集成开发环境中,方便浏览、修改、索引数据库。
为了便于维护程序,Delphi将数据访问与业务规则从程序中分离出来,集中存储在数据模型对象中,当业务规则需要修改时,只需在数据模型级进行修改。
程序运行调用这些数据模型时,修改的结果会自动反映在应用程序中。
第四章数据库应用系统的实现
4.1数据库的定义
4.1.1数据库的定义
1.数据库的创建
点击开始——所有程序——MicrosoftSQLserver——企业管理器——MicrosoftSQLservers——SQLserver组——(local)(WindowsNT)——数据库——新建数据库(名为:
学生成绩管理系统)
2.数据库对象的定义
将设计的数据库表用SQL语言(createtable****)或企业管理器中对象树状结构的展开图,各对象要与设计时的名称一致。
包括数据库的定义、表的定义、主键外键定义(关系图)、默认值、规则、约束、触发器、索引、视图等的定义
4.2应用系统的开发
登陆代码为
procedureTForm1.Button1Click(Sender:
TObject);
begin
if(edit2.Text=mima)and(edit1.text=yonghu)
then
begin
ShowMessage('Hello!
'+edit1.Text);//显示欢迎信息
edit1.clear;
edit2.clear;
form2.Show;
end
else
begin
ShowMessage(edit1.Text+'对不起,你不能使用本系统');//显示错误信息
edit2.SetFocus;//使edit2获得焦点
edit2.SelectAll;//全选edit2中的文本
edit1.clear;
edit2.clear;
end;
end;
退出代码为:
procedureTForm1.Button2Click(Sender:
TObject);
begin
form1.close;
end;
end.
学生信息查询代码为:
procedureTForm2.Button1Click(Sender:
TObject);
begin
form2.Close;
form3.show;
end;
课程信息查询代码为:
procedureTForm2.Button2Click(Sender:
TObject);
begin
form2.Close;
form4.show;
end;
学生成绩查询代码:
procedureTForm2.Button3Click(Sender:
TObject);
begin
form2.Close;
form5.show;
end;
退出代码为:
procedureTForm2.Button2Click(Sender:
TObject);
begin
form1.close;
end;
end.
窗体颜色变化代码为:
procedureTForm2.FormActivate(Sender:
TObject);
begin
form2.Color:
=clGreen;//初始化为灰色
fcolor:
=gray;//初始化枚举变量为相应的值
end;
procedureTForm2.FormClick(Sender:
TObject);
begin
iffcolor=blackthenfcolor:
=red
elsefcolor:
=succ(fcolor);//计算后继颜色
casefcolorof
red:
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;
查询代码为:
procedureTForm3.Button3Click(Sender:
TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.clear;
ADOQuery1.SQL.Add('select姓名,学号,年龄,性别,院系名from学生表where姓名='''+Edit1.Text+'''');
ADOQuery1.Open;
ADOQuery1.Active:
=true;
edit1.clear;
end;
返回代码为:
procedureTForm3.Button1Click(Sender:
TObject);
begin
form2.show;
form3.Close;
end;
退出代码为:
procedureTForm3.Button2Click(Sender:
TObject);
begin
form1.close;
end;
DBtable的颜色变化代码为:
procedureTForm3.DBGrid1DrawColumnCell(Sender:
TObject;constRect:
TRect;
DataCol:
Integer;Column:
TColumn;State:
TGridDrawState);
var
i:
integer;
begin
ifgdSelectedinStatethenExit;
//定义表头的字体和背景颜色:
fori:
=0to(SenderasTDBGrid).Columns.Count-1do
begin
DBGrid1.Columns[i].Title.Font.Name:
='宋体';
//字体
DBGrid1.Columns[i].Title.Font.Size:
=9;
//字体大小
(SenderasTDBGrid).Columns[i].Title.Font.Color:
=$000000ff;//字体颜色(红色)
(SenderasTDBGrid).Columns[i].Title.Color:
=$0000ff00;
//背景色(绿色)
end;
//将奇偶行设置不同背景色
ifADOTable1.RecNomod2=0then
(SenderasTDBGrid).Canvas.Brush.Color:
=clInfoBk
else
(SenderasTDBGrid).Canvas.Brush.Color:
=RGB(191,255,223);
//定义表格线的颜色:
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
with(SenderasTDBGrid).Canvasdo//画cell的边框
begin
Pen.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;
删除代码为:
procedureTForm4.Button4Click(Sender:
TObject);
begin
ifMessageDlg('你确定要删除吗?
',mtConfirmation,[mbYes,mbNo],0)=mrYesthen
ADOTable1.Delete;
end;
添加代码为:
procedureTForm4.Button3Click(Sender:
TObject);
begin
AdoTable1.Append;
end;
返回代码为:
procedureTForm4.Button1Click(Sender:
TObject);
begin
form2.show;
form3.Close;
end;
退出代码为:
procedureTForm4.Button2Click(Sender:
TObject);
begin
form1.close;
end;
DBtable的颜色变化代码为:
procedureTForm3.DBGrid1DrawColumnCell(Sender:
TObject;constRect:
TRect;
DataCol:
Integer;Column:
TColumn;State:
TGridDrawState);
var
i:
integer;
begin
ifgdSelectedinStatethenExit;
//定义表头的字体和背景颜色:
fori:
=0to(SenderasTDBGrid).Columns.Count-1do
begin
DBGrid1.Columns[i].Title.Font.Name:
='宋体';
//字体
DBGrid1.Columns[i].Title.Font.Size:
=9;
//字体大小
(SenderasTDBGrid).Columns[i].Title.Font.Color:
=$000000ff;//字体颜色(红色)
(SenderasTDBGrid).Columns[i].Title.Color:
=$0000ff00;
//背景色(绿色)
end;
//将奇偶行设置不同背景色
ifADOTable1.RecNomod2=0then
(SenderasTDBGrid).Canvas.Brush.Color:
=clInfoBk
else
(SenderasTDBGrid).Canvas.Brush.Color:
=RGB(191,255,223);
//定义表格线的颜色:
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
with(SenderasTDBGrid).Canvasdo//画cell的边框
begin
Pen.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;
返回代码为:
procedureTForm5.Button1Click(Sender:
TObject);
begin
form2.show;
form3.Close;
end;
退出代码为:
procedureTForm5.Button2Click(Sender:
TObject);
begin
form1.close;
end;
第五章结束语
这一次的数据库课程时间让自己学到了很多,去年学了C++,但是由于可是的缘故,课后又没有花很多时间去学习新的东西,所以今年的delphi课程时间做的相当困难,特别是对于数据库的连接和操作部分。
不过,幸运的是周围有很多勤奋的同学学得也不错,于是自己便主动去多想同学请教,对于一些不懂的东西便做好备份后在搞实验,错了的话再重来。
这一次实验感觉自己还是学到了很多东西,加深了对对象的理解,对编程语言的共性和差异也有了更深的感悟。
我觉得delphi和C++也不是有很大的差异,区别在于delphi是全对象的,而C++兼有C的功能。
对于编程语言的发展,我深深感悟到对象是未来的趋势,因为相对于过程语言,对象真的是简单了很多。
另外对于可视化的问题,我觉得组件的应用真的是简化了编程过程,使得编程更加容易。
对于我自己,我觉得努力学好各种编程语言,并融会贯通是很必要的,当真正学好了这些,才深深觉得编程的神奇和快了。
参考文献
文章、书或网址
数据库系统概论(第四版)王珊萨师煊高等教育出版社;
数据库系统及应用——SQLServer2000;
数据库系统实验指导教程汤娜叶小平等清华大学出版社;
SQLServer实验指导(第3版)马晓梅清华大学出版社;
另外还有韩华老师的课件。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 设计 报告