基于delphi的学生成绩管理系统.docx

上传人:b****3 文档编号:3312746 上传时间:2022-11-21 格式:DOCX 页数:18 大小:254.43KB
下载 相关 举报
基于delphi的学生成绩管理系统.docx_第1页
第1页 / 共18页
基于delphi的学生成绩管理系统.docx_第2页
第2页 / 共18页
基于delphi的学生成绩管理系统.docx_第3页
第3页 / 共18页
基于delphi的学生成绩管理系统.docx_第4页
第4页 / 共18页
基于delphi的学生成绩管理系统.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

基于delphi的学生成绩管理系统.docx

《基于delphi的学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《基于delphi的学生成绩管理系统.docx(18页珍藏版)》请在冰豆网上搜索。

基于delphi的学生成绩管理系统.docx

基于delphi的学生成绩管理系统

南昌航空大学信息工程学院

数据库原理课程实验报告

 

实验名称:

学生成绩信息管理系统

实验时间:

2010年6月2日

指导教师:

班级:

学号:

姓名:

成绩:

一、实验目的

(1)通过完成从用户需求分析、系统概要设计、系统详细设计以及数据库的SQL操作具体实现等全过程,把前面的各个实验更好地综合起来.

(2)进一步理解和掌握教材中的相关内容。

(3)掌握分析和设计一个大型数据库系统的基本思路与方法。

二、实验要求

1.独立完成该系统的数据库设计。

2.用SQL实现数据库的设计,并在MSSQLServer上调试通过。

3.写出查询、更新以及建立触发器SQL语句和执行结果。

4.掌握报表的使用。

三、实验内容

综合前面各章内容设计并调试一学生成绩管理系统,Delphi作为前台开发工具,SQLServer完成后台数据库存管理。

创建学生成绩的统计(包括求班级各科成绩的平均分);并实现对各科成绩等的录入、修改、删除、查询等功能;实现学生成绩的统计(包括求班级各科成绩的平均分);并实现对各科成绩的排序。

四、实验代码及功能注释

 1.用户登陆界面

实验程序:

procedureTForm1.Button1Click(Sender:

TObject); //用户登陆

varret:

integer;

begin

adoconnection1.Open;

withADOStoredProc1do

begin

Close;

ProcedureName:

='proc_login';

Parameters.Clear;

Parameters.Refresh;

Parameters.ParamByName('@username').Value:

=Edit1.text;

Parameters.ParamByName('@password').Value:

=Edit2.text;

ExecProc;

ret:

=Parameters.ParamByName('@return_value').Value;

end;

ifret=1then//用户名密码匹配

begin

showmessage('登陆成功');

form3.show;

end

else

showmessage('你不是用户,请注册');

end;

procedureTForm1.Button2Click(Sender:

TObject); //若不是用户,触发用户登陆界面显示

begin

form2.show;

end;

procedureTForm1.Button3Click(Sender:

TObject); //退出该管理系统

begin

form1.Close;

end;

说明:

在这里,使用了adostoredproc1控件和adoconnection1控件,它们的connectionstring属性都要与所设计的数据库相连,在查询分析器中,要运行存储过程如下:

CREATEprocedureproc_login

@usernamevarchar(20),

@passwordvarchar(20)

as

declare@resultint

select@result=count(*)fromuserswhereusername=@usernameandpasswords=@password

if@result=0

return0

return1

GO

2.用户注册界面

实验程序:

procedureTForm2.Button1Click(Sender:

TObject);//新用户注册

begin

adoquery1.close;

adoquery1.sql.clear;

adoquery1.sql.add('insertintousers(username,passwords,核对密码,性别,出生年月,联系地址,联系电话,邮政编码,电子邮箱)'+'values(:

1,:

2,:

3,:

4,:

5,:

6,:

7,:

8,:

9)');

adoquery1.parameters.parambyname('1').value:

=''+edit1.text+'';

adoquery1.parameters.parambyname('2').value:

=''+edit2.text+'';

adoquery1.parameters.parambyname('3').value:

=''+edit3.text+'';

adoquery1.parameters.parambyname('4').value:

=''+combobox1.text+'';

adoquery1.parameters.parambyname('5').value:

=''+combobox1.text+''+combobox1.text+'';

adoquery1.parameters.parambyname('6').value:

=''+edit4.text+'';

adoquery1.parameters.parambyname('7').value:

=''+edit5.text+'';

adoquery1.parameters.parambyname('8').value:

=''+edit6.text+'';

adoquery1.parameters.parambyname('9').value:

=''+edit7.text+'';

adoquery1.execsql;

end;

说明:

在该数据库中,建了一个名为users的用户表,存储用户的信息。

只有是用户在登陆时,才能进入主界面,当不是用户在登陆时,必须先进行新用户注册,才能进入主系统。

3.系统主界面

4.学生基本信息查询

精确查询程序:

procedureTForm3.Button1Click(Sender:

TObject);

begin

withadoquery1do

begin

ifradiobutton1.Checkedthen//通过单选按钮的选择来判断是要进行精确查询还是模糊查询

begin

adoquery1.Close;

adoquery1.SQL.Clear;

adoquery1.SQL.Add('select*from学生表where学号='''+edit1.text+'''');

adoquery1.Open;

end;

end;

说明:

由于学生表中,学号为主键,因此要查此表中学生基本信息,只要输入主键值即可得一条记录,即实现精确查询。

模糊查询程序:

procedureTForm3.Button3Click(Sender:

TObject);

begin

withadoquery1do

begin

ifradiobutton2.Checkedthen

begin

if(edit2.Text<>'')or(edit3.Text<>'')or(edit4.Text<>'')or(edit5.Text<>'')

or(edit6.Text<>'')then

begin

adoquery1.Close;

adoquery1.SQL.Clear;

adoquery1.SQL.Add('select*from学生表');

adoquery1.SQL.Add('where(学号like'''+'%'+edit2.text+'%'+''')');

adoquery1.SQL.Add('or(姓名like'''+'%'+edit3.text+'%'+''')');

adoquery1.SQL.Add('or(所在系别like'''+'%'+edit4.text+'%'+''')');

adoquery1.SQL.Add('or(所在专业like'''+'%'+edit5.text+'%'+''')');

adoquery1.SQL.Add('or(所在班级like'''+'%'+edit6.text+'%'+''')');

adoquery1.Open;

end

else

begin

application.MessageBox('没有查询条件','提示',mb_ok);

exit;

end;

end;

end;

end;

说明:

当输入的信息不是主键时,由于满足该输入条件的记录可能不只一个,因此得到的是一个模糊查询的结果。

5.学生成绩查询

 方法与学生基本信息查询一致。

6.学生基本信息录入

实验程序:

procedureTForm4.Button1Click(Sender:

TObject);

begin

adoquery1.close;

adoquery1.sql.clear;

adoquery1.sql.add('insertinto学生表(学号,姓名,民族,出生年月,籍贯,性别,所在系别,所在专业,所在班级,政治面貌,家庭住址,邮政编码,联系电话)'+'values(:

1,:

2,:

3,:

4,:

5,:

6,:

7,:

8,:

9,:

10,:

11,:

12,:

13)');

adoquery1.parameters.parambyname('1').value:

=''+edit1.text+'';

adoquery1.parameters.parambyname('2').value:

=''+edit2.text+'';

adoquery1.parameters.parambyname('3').value:

=''+edit3.text+'';

adoquery1.parameters.parambyname('4').value:

=''+combobox1.text+''+combobox2.text+'';

adoquery1.parameters.parambyname('5').value:

=''+edit4.text+'';

adoquery1.parameters.parambyname('6').value:

=''+combobox3.text+'';

adoquery1.parameters.parambyname('7').value:

=''+combobox4.text+'';

adoquery1.parameters.parambyname('8').value:

=''+edit5.text+'';

adoquery1.parameters.parambyname('9').value:

=''+edit6.text+'';

adoquery1.parameters.parambyname('10').value:

=''+edit7.text+'';

adoquery1.parameters.parambyname('11').value:

=''+edit8.text+'';

adoquery1.parameters.parambyname('12').value:

=''+edit9.text+'';

adoquery1.parameters.parambyname('13').value:

=''+edit10.text+'';

adoquery1.execsql;

end;

在SQLServer中查看录入结果

录入前:

录入后:

说明:

从录入前与录入后表的比较看到,实现了学号为’’aaa’’学生基本信息的录入。

7.求学生平均成绩、成绩排序并显示

实验程序:

procedureTForm3.Button4Click(Sender:

TObject);

begin

withadoquery1do

begin

ifradiobutton3.Checkedthen            //与学生基本信息查询一样,这里为成绩精确查询

      

begin

adoquery1.Close;

adoquery1.SQL.Clear;

adoquery1.SQL.Add('select*from成绩信息表where学号='''+edit9.text+'''');

adoquery1.Open;

end;

ifradiobutton4.Checkedthen      //与学生基本信息查询一样,这里为成绩模糊查询

begin

if(edit10.text<>'')or(edit11.Text<>'')or(edit12.Text<>'')or(edit13.Text<>'')

or(edit14.Text<>'')then

begin

adoquery1.Close;

adoquery1.SQL.Clear;

adoquery1.SQL.Add('select*from成绩信息表');

adoquery1.SQL.Add('where(学号like'''+'%'+edit10.text+'%'+''')');

adoquery1.SQL.Add('or(姓名like'''+'%'+edit11.text+'%'+''')');

adoquery1.SQL.Add('or(所在系别like'''+'%'+edit12.text+'%'+''')');

adoquery1.SQL.Add('or(所在专业like'''+'%'+edit13.text+'%'+''')');

adoquery1.SQL.Add('or(所在班级like'''+'%'+edit14.text+'%'+''')');

adoquery1.Open;

end

else

begin

application.MessageBox('没有查询条件','提示',mb_ok);

exit;

end;

end;

ifradiobutton9.Checkedthen        //求每个学生的课程平均成绩

begin

adoquery1.Close;

sql.Clear;

sql.Add('select学号,姓名,AVG(成绩)as平均成绩from成绩信息表where所在班级=''070413''groupby学号,姓名');

adoquery1.Open;

end;

ifradiobutton11.Checkedthen        //将学生成绩按从低到高排序

begin

adoquery1.Close;

sql.Clear;

sql.Add('select学号,姓名,avg(成绩)as平均成绩from成绩信息表groupby学号,姓名orderby平均成绩');

adoquery1.open;

end;

end;

end;

求平均成绩界面与平均成绩排序后界面:

说明:

使用到了数据库的自带函数avg()来求平均成绩,按平均成绩排序时,只要在已经做好的平均成绩显示程序上加上 orderby语句即可。

9.学生基本信息删除与修改

实验程序:

procedureTForm3.Button6Click(Sender:

TObject);

begin

withadoquery1do

begin

ifradiobutton7.Checkedthen

begin

adoquery1.Close;

adoquery1.SQL.Clear;

adoquery1.SQL.Add('update学生表set'+combobox1.text+'='''+edit19.text+'''');//edit19编辑框用来输入要更改的字段名

adoquery1.SQL.Add('where学号='''+edit18.text+'''');

adoquery1.execsql;

end;

ifradiobutton8.Checkedthen

begin

adoquery1.Close;

adoquery1.SQL.Clear;

adoquery1.SQL.Add('deletefrom学生表');不得//删除语句

adoquery1.SQL.Add('where学号='''+edit18.text+'''');

adoquery1.execsql;

end;

修改界面:

在SQLServer中查看修改结果

说明:

比较修改前与修改后学生的表中数据可知,将原来记录中学号为’’aaa’’学生的姓名由’’小小’’改成了’’小麦’’。

删除界面:

 在SQLServer中查看删除结果

10.学生成绩信息删除与修改

  与学生基本信息删除与修改方法一致。

五、实验小结

本次实验主要复习了delphi的操作界面,控件的使用,及对adoquery的sql的属性的使用,在这个实验中,可以发现delphi与数据库的完美结合,就是说可以通过delphi界面更改数据库的内容,而这是通过编辑adoquery的sql里的内容来实现的,因此几乎每个窗体都有一个adoquery控件。

这个实验的sql语句的编辑全用的是adoquery1.sql.add()语句,括号里的内容就是数据库查询分析器里的内容,在每写入一个语句时,都要把之前写的sql语句删掉,以免执行时出现问题,对于括号里面的select语句,函数有返回值,因此可以用adoquery1.open打开数据源,看到执行后的结果,而对于括号里面的update,delete等语句,函数没有返回值,只能写adoquery1.execsql执行操作,而且只能到数据库的表中看执行后的结果。

编写sql语句是极容易出错的,有时是因为汉英输入法切换后符号不一致所导致,有时是因为sql语句内引号出现的错误,反正就是要熟悉每个用到的sql语句,要清楚在写每个语句时具体的操作是要干什么,它有自己的书写格式。

最后还有一点要注意的是,录入数据时,一定要把主码的值全部录入,且不能与表中已有值重复,否则违反了记录的唯一性,会出错。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1