Delphi实训报告总.docx
《Delphi实训报告总.docx》由会员分享,可在线阅读,更多相关《Delphi实训报告总.docx(16页珍藏版)》请在冰豆网上搜索。
Delphi实训报告总
Delphi综合应用设计实训报告
一.实验名称:
电话号码簿
二.实训目的和要求
掌握综合应用程序的设计方法,了解软件设计过程,了解大型应用系统的设计思想,初步具备大型应用程序设计能力。
三.实训条件
PC机
四.分组情况
组长:
胡云
组员:
周雯、陈静、陈金花、罗冰雁
五.实训内容
1.按软件工程方法撰写开发文档。
(1)计划进度安排
1、进行需求分析,画出系统流程图。
2、界面设计和数据库的输入。
3、完成各界面的设计,并编写代码完成相应的功能,进行单元测试。
4、把各个模块聚合成一个整体模块,进行系统测试。
5、系统维护。
(2)需求分析
系统流程图
DFD图(数据流图)
(3)系统总体设计
模块划分:
系统功能图(SC图)
符合
符合
数据库设计:
实体关系图(ER图),数据录入
模块定义:
模块名称,模块接口等。
(4)编码
程序流程图(NS图、PAD图、结构化语言)
(5)测试
要求简易的测试用例设计
2.Delphi工具开发使用
VCL组件的使用,报表的设计。
3.程序开发打包
Wise工具,傻瓜工具等。
六.实训步骤:
1.数据库设计
2.主界面tel_main的设计如下图
编写代码实现菜单栏中的功能
(1).查看tel_pub的代码:
var
child_pub:
tf_pub;
begin
child_pub:
=tf_pub.Create(application);
end;
(2).登入tel_per的代码
var
child_login:
tf_login;
begin
child_login:
=tf_login.Create(application);
end;
(3).注册代码
var
child_reg:
tf_reg;
begin
child_reg:
=tf_reg.Create(application);
end;
(4).帮助代码
begin
Application.CreateForm(Tf_about,f_about);
end;
3.登入界面tel_login的设计
实现登入成功进入下一界面代码如下:
procedureTf_login.Button1Click(Sender:
TObject);
begin
self.ADOQuery1.SQL.Clear;
self.ADOQuery1.Close;
self.ADOQuery1.SQL.Add('selectperidfrompersonwherename=:
aandpwd=:
b');
self.ADOQuery1.Parameters.ParamByName('a').Value:
=self.uname.Text;
self.ADOQuery1.Parameters.ParamByName('b').Value:
=self.upwd.Text;
self.ADOQuery1.Open;
ifself.ADOQuery1.RecordCount>0then
begin
loginname:
=self.uname.Text;
loginpwd:
=self.upwd.text;
Application.CreateForm(Tf_per,f_per);
//child_per:
=f_per.Create(application);
self.Destroy;
end
else
begin
messagebox(self.Handle,'登录失败!
!
用户名或密码错误!
!
','提示',mb_okcancel);
end;
end;
4.公共地址簿tel_pub的设计
(1)实现查询功能的代码如下:
begin
ifself.xingming.Checkedthen
begin
self.ADOQuery2.SQL.Clear;
self.ADOQuery2.Close;
ifownlimthen
begin
self.ADOQuery2.SQL.Add('selectname,sex,tel,email,addr,limitsfrompersonwherename=:
pub_b');
self.ADOQuery2.Parameters.ParamByName('pub_b').Value:
=self.nameqry.Text;
end
else
begin
self.ADOQuery2.SQL.Add('selectname,sex,tel,email,addrfrompersonwherename=:
pub_b');
self.ADOQuery2.Parameters.ParamByName('pub_b').Value:
=self.nameqry.Text;
end;
end
else
begin
self.ADOQuery2.SQL.Clear;
self.ADOQuery2.Close;
ifownlimthen
begin
self.ADOQuery2.SQL.Add('selectname,sex,tel,email,addr,limitsfrompersonwheretel=:
pub_c');
self.ADOQuery2.Parameters.ParamByName('pub_c').Value:
=self.telqry.Text;
self.ADOQuery2.Fields[5].DisplayLabel:
='权限';
end
else
begin
self.ADOQuery2.SQL.Add('selectname,sex,tel,email,addrfrompersonwheretel=:
pub_c');
self.ADOQuery2.Parameters.ParamByName('pub_c').Value:
=self.telqry.Text;
end;
end;
self.ADOQuery2.Open;
self.chinaise;
end;
(2)删除功能代码如下:
begin
ifmessagebox(self.Handle,'确定要删除吗?
','警告',mb_okcancel)=idokthen
begin
self.ADOQuery2.Delete;
end;
end;
5.个人地址簿tel_per的设计
其中,查询功能代码与第五步一样。
更新功能主要代码如下:
procedureTf_per.btn_addClick(Sender:
TObject);
begin
self.ADOQuery2.Append;
end;
procedureTf_per.btn_delClick(Sender:
TObject);
begin
ifmessagebox(self.Handle,'确定要删除吗?
','警告',mb_okcancel)=idokthen
begin
//self.ADOQuery2.GetFieldData(self.ADOQuery2.FieldByName('name'),self.ADOQuery2.GetBookmark);
self.ADOQuery2.Delete;
end;
end;
procedureTf_per.btn_postClick(Sender:
TObject);
begin
ifmessagebox(self.Handle,'确定要保存吗?
','保存提示',mb_okcancel)=idokthen
begin
self.ADOQuery2.Post;
end;
end;
procedureTf_per.btn_updClick(Sender:
TObject);
begin
self.DBGrid1.ReadOnly:
=false;
self.ADOQuery2.Edit;
end;
6.注册界面tel_reg的设计
实现功能代码如下:
var
daxue:
string;
begin
ifself.mima2.Text<>self.mima.Textthen
begin
messagebox(self.Handle,'密码不正确!
!
请重新输入','错误',mb_ok);
end
else
begin
daxue:
=self.DBdaxue.Text;
self.ADOQuery1.Append;
self.ADOQuery2.SQL.Clear;
self.ADOQuery2.Close;
self.ADOQuery2.SQL.Add('updatepersonsetcollid=(selectcollidfromcolleagewherename=:
a)');
self.ADOQuery2.Parameters.ParamByName('a').Value:
=self.DBdaxue.Text;
self.ADOQuery2.Open;
messagebox(self.Handle,'注册成功!
您现在可以登录个人地址簿了!
','提示',mb_ok);
end;
end;
7.帮助tel_about的设计
七.实训结果:
八.实训过程分析:
1.数据库设计期间:
需要考虑设计表,应有三张表:
用户表、大学表、类别表。
但是在建表过程中,因为用户表和类别表关系为多对多,所以要再添加关系表。
2.在界面设计过程中:
一共有7个界面。
在设计个人地址簿时,需要添加一个panelcontrol组件,以方便用户点击;在设计公共地址簿时,需要添加一个panel组件,以美化界面。
3.在代码编辑过程中,遇到以下问题:
<1>.SQL语句不宜过长,嵌套不宜过多。
否则,将无法实现查询功能。
<2>.编辑删除功能代码时,若ADOQuery的查询语句是由2张表连接来查询的情况下,执行ADOQuery.Delete后将会对2张表产生影响。
<3>.编辑添加功能代码时,可拖入DBEdit,在代码中设置其fieldname属性,但必须与ADOQuery中查询出的字段名相吻合。
<4>.在设置权限时,需定义一个全局变量以判断该用户是否具有管理员权限。
4.在设计报表过程中,不可以动态添加ADOQuery的查询语句,必须在设计过程中添加ADOQuery的查询语句,并将其Ative属性设为True。
九.结论分析:
经过此次实训,增进了同学与同学之间的感情,对Delphi组件的应用有了进一步的了解。
也把以往学过的知识联系起来,得到了很好的巩固与提高。