学生信息管理系统开发指南.docx

上传人:b****7 文档编号:10168938 上传时间:2023-02-09 格式:DOCX 页数:38 大小:21.07KB
下载 相关 举报
学生信息管理系统开发指南.docx_第1页
第1页 / 共38页
学生信息管理系统开发指南.docx_第2页
第2页 / 共38页
学生信息管理系统开发指南.docx_第3页
第3页 / 共38页
学生信息管理系统开发指南.docx_第4页
第4页 / 共38页
学生信息管理系统开发指南.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

学生信息管理系统开发指南.docx

《学生信息管理系统开发指南.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统开发指南.docx(38页珍藏版)》请在冰豆网上搜索。

学生信息管理系统开发指南.docx

学生信息管理系统开发指南

学生信息管理系统开发指南

1.

(1)在D盘建立一个目录,名称为studentMIS,用来存放学生信息管理系统的delphi程序;把课件中studentDB文件夹复制到D盘上,该文件夹存放数据表。

设置studentDB文件夹的别名为StudentDB,设置数据库别名参见课本6.4.3。

(2)创建一个新Application,在保存该Application时将窗体文件保存为FormMain,将Application文件保存为StudentMIS。

然后再创建7个Form,主窗体及7个窗体的属性如下表所示。

窗体描述及保存名称

属性名

属性值

主窗体,FormMain

Name

frmMain

Caption

学生信息管理系统

Color

clBtnShadow

WindowState

wsMaximized

院系设置窗体,FormDepartment

Name

frmDepartment

Caption

院系设置

Position

poOwnerFormCenter

班级管理窗体,FormClass

Name

frmClass

Caption

班级管理

Position

poOwnerFormCenter

学生管理窗体,FormStudent

Name

frmStudent

Caption

学生管理

Position

poOwnerFormCenter

学生信息查询窗体,FormQuery

Name

frmQuery

Caption

学生信息查询

Position

poOwnerFormCenter

学籍变更管理窗体,FormChange

Name

frmChange

Caption

学籍变更管理

Position

poOwnerFormCenter

奖励管理窗体,FormReward

Name

frmReward

Caption

奖励管理

Position

poOwnerFormCenter

惩罚管理窗体,FormPunish

Name

frmPunish

Caption

惩罚管理

Position

poOwnerFormCenter

(3)七个窗体和主窗体的挂接方法:

用鼠标点击主窗体,它将成为当前窗体,然后执行【File】->【UseUnit】菜单命令,在打开的对话框中选取这七个窗体。

(4)主菜单设计:

参见课本13.3.4主菜单设计。

(5)在主菜单上点击“系统维护”->“退出系统”,在procedureTfrmMain.mntSysQuitClick的程序体中添加Close;如下所示。

procedureTfrmMain.mntSysQuitClick(Sender:

TObject);

begin

Close;

end;

2.院系设置模块

(1)院系设置模块用户界面的设计参加课本13.4.3

(2)模块功能的编程实现

(2.1)模块通用过程

在院系设置窗体类中定义一个私有方法,即在Type下面加入语句

procedureToggleMode;

私有方法ToggleMode代码如下:

procedureTfrmDepartment.ToggleMode;

var

strMsg,strHead,strTail:

string;

procedureEnableInput(Enabled:

Boolean);

begin

dbgDepart.Enabled:

=notEnabled;

dbeDepartID.Enabled:

=Enabled;

dbeDepartName.Enabled:

=Enabled;

dbeHead.Enabled:

=Enabled;

dbeTelephone.Enabled:

=Enabled;

dbmDesc.Enabled:

=Enabled;

end;

begin

casetblDepart.Stateof

dsInsert,dsEdit:

begin

EnableInput(true);

dbnDepart.VisibleButtons:

=[nbPost,nbCancel];

dbeDepartID.SetFocus;

end;

else

EnableInput(false);

dbnDepart.VisibleButtons:

=[nbFirst,nbPrior,nbNext,nbLast,nbInsert,nbDelete,nbEdit,nbPost,nbCancel,nbRefresh];

end;

if(tblDepart.State=dsEdit)andHasClass(strMsg)then

begin

strHead:

='不能修改该院系的编号,下面的班级:

';

strTail:

='修改该院系的编号会破坏数据的完整性!

';

strMsg:

=strHead+#13+strMsg+#13+strTail;

ShowMessage(strMsg);

dbeDepartID.Enabled:

=false;

end

end;

在院系窗体类中再定义一个私有方法HasClass,即在Type下加入语句

functionHasClass(varstr:

string):

Boolean;

私有方法HasClass代码如下:

functionTfrmDepartment.HasClass(varstr:

string):

Boolean;

begin

Result:

=false;

tblValid.Active:

=false;

tblValid.TableName:

='Class';

tblValid.Filter:

='DepartID='+tblDepart['DepartID']+'';

tblValid.Filtered:

=true;

tblValid.Active:

=true;

ifnottblValid.Eofthen

begin

//str:

=Format('不能修改院系"%s"的编号,下面的班级:

'#13,[tblDepart['DepartName']]);

repeat

str:

=str+Format('%10s-%s'#13,[tblValid['ClassID'],tblValid['ClassName']]);

tblValid.Next;

untiltblValid.Eof;

str:

=str+'隶属于该院系';

Result:

=true;

end;

tblValid.Active:

=false;

end;

(2.2)窗体onShow,onClose事件过程及“退出”按钮组件的Click事件过程。

procedureTfrmDepartment.FormShow(Sender:

TObject);

begin

tblDepart.Active:

=true;

end;

procedureTfrmDepartment.btnQuitClick(Sender:

TObject);

begin

Close;

end;

procedureTfrmDepartment.FormClose(Sender:

TObject;

varAction:

TCloseAction);

begin

tblDepart.Active:

=false;

end;

(2.3)界面模式的切换

procedureTfrmDepartment.dbnDepartClick(Sender:

TObject;

Button:

TNavigateBtn);

begin

ToggleMode;

end;

procedureTfrmDepartment.tblDepartAfterScroll(DataSet:

TDataSet);

begin

ToggleMode;

end;

(2.4)记录删除功能的实现

记录删除前的验证在tblDepart的BeforeDelete事件中实现,代码如下:

procedureTfrmDepartment.tblDepartBeforeDelete(DataSet:

TDataSet);

var

strMsg,strHead,strTail:

string;

begin

ifHasClass(strMsg)then

begin

strHead:

='不能删除该院系的基本信息,下面的班级:

';

strTail:

='删除该院系的基本信息会破坏数据的完整性!

';

strMsg:

=strHead+#13+strMsg+#13+strTail;

ShowMessage(strMsg);

Abort;

end;

strMsg:

=Format('确定要删除该院系"%s"吗?

该院系相关信息如下:

'#13,[tblDepart['DepartName']]);

strMsg:

=strMsg+Format('院系编号:

%s'#13,[tblDepart['DepartID']]);

strMsg:

=strMsg+Format('院系名称:

%s'#13,[tblDepart['DepartName']]);

strMsg:

=strMsg+Format('院系领导:

%s'#13,[tblDepart['DepartHead']]);

ifMessageDlg(strMsg,mtConfirmation,[mbYes,mbNo],0)<>mrYesthen

Abort;

end;

(2.5)数据保存功能的实现

数据有效性验证操作在数据表组件的BeforePost事件过程中进行。

数据规格化和非空域验证通过一个内嵌过程ChechField实现,院系编号唯一性验证通过内嵌函数ValidID,完整代码如下:

procedureTfrmDepartment.tblDepartBeforePost(DataSet:

TDataSet);

procedureCheckField(FieldName,FieldDesc:

string;dbText:

TCustomEdit;NotEmpty:

Boolean);

begin

dbText.Text:

=Trim(dbText.Text);

dbText.Text:

=StringReplace(dbText.Text,'','',[rfReplaceAll]);

dbText.Text:

=StringReplace(dbText.Text,'"','',[rfReplaceAll]);

ifNotEmptyand(dbText.Text='')then

begin

ShowMessageFmt('%s不能为空,请输入足够的信息!

',[FieldDesc]);

dbText.SetFocus;

Abort;

end

else

tblDepart.FieldByName(FieldName).AsString:

=dbText.Text;

end;

functionValidID:

Boolean;

var

strMsg:

string;

begin

Result:

=true;

tblValid.Active:

=false;

tblValid.TableName:

='Department';

tblValid.Filter:

='DepartID='+tblDepart['DepartID']+'';

tblValid.Filtered:

=true;

tblValid.Active:

=true;

ifnottblValid.Eofthen

begin

strMsg:

=Format('院系编号"%s"已经存在,请重新输入!

'#13,[tblDepart['DepartID']]);

strMsg:

=Format('院系编号:

"%s"'#13,[tblValid['DepartID']]);

strMsg:

=Format('院系名称:

"%s"'#13,[tblValid['DepartName']]);

strMsg:

=Format('院系领导:

"%s"'#13,[tblValid['DepartHead']]);

ShowMessage(strMsg);

dbeDepartID.SetFocus;

Result:

=false;

end;

tblValid.Active:

=false;

end;

begin

CheckField('DepartID','院系编号',dbeDepartID,true);

CheckField('DepartName','院系名称',dbeDepartName,true);

CheckField('DepartHead','院系领导',dbeHead,true);

CheckField('Telephone','联系电话',dbeTelephone,true);

CheckField('Description','说明',dbmDesc,true);

ifdbeDepartID.ModifiedandnotValidIDthen

Abort;

end;

(2.6)院系设置模块与主模块的挂接。

在主窗体的菜单中点击“系统维护”->”院系设置”,在procedureTfrmMain.mntSysDepartClick的程序体中加入frmDepartment.ShowModal,如下所示。

procedureTfrmMain.mntSysDepartClick(Sender:

TObject);

begin

frmDepartment.ShowModal

end;

3.班级管理模块

(1)班级管理模块用户界面的设计参加课本13.5.3

(2)模块功能的编程实现

(2.1)模块通用过程

在班级管理窗体类中定义一个私有方法,即在Type下面加入语句

procedureToggleMode;

私有方法ToggleMode代码如下:

procedureTfrmClass.ToggleMode;

var

strMsg,strHead,strTail:

string;

procedureEnableInput(Enabled:

Boolean);

begin

dbgClass.Enabled:

=notEnabled;

dbeClassID.Enabled:

=Enabled;

dbeClassName.Enabled:

=Enabled;

dblcbDepartID.Enabled:

=Enabled;

dbeBeginDate.Enabled:

=Enabled;

dbeMaster.Enabled:

=Enabled;

dbeTelephone.Enabled:

=Enabled;

dbmDesc.Enabled:

=Enabled;

end;

begin

casetblClass.Stateof

dsInsert,dsEdit:

begin

EnableInput(true);

dbnClass.VisibleButtons:

=[nbPost,nbCancel];

dbeClassID.SetFocus;

end;

else

EnableInput(false);

dbnClass.VisibleButtons:

=[nbFirst,nbPrior,nbNext,nbLast,nbInsert,nbDelete,nbEdit,nbPost,nbCancel,nbRefresh];

end;

if(tblClass.State=dsEdit)andHasStudent(strMsg)then

begin

strHead:

='不能修改该班级的基本信息。

下面的学生:

';

strTail:

='删除该班级的编号会破坏数据的完整性!

';

strMsg:

=strHead+#13+strMsg+#13+strTail;

ShowMessage(strMsg);

dbeClassID.Enabled:

=false;

end;

end;

在班级窗体类中再定义一个私有方法HasStudent,即在Type下加入语句

functionHasStudent(varstr:

string):

Boolean;

私有方法HasStudent代码如下:

functionTfrmClass.HasStudent(varstr:

string):

Boolean;

begin

Result:

=false;

tblValid.Active:

=false;

tblValid.TableName:

='Student';

tblValid.Filter:

='ClassID='+tblClass['ClassID']+'';

tblValid.Filtered:

=true;

tblValid.Active:

=true;

ifnottblValid.Eofthen

begin

repeat

str:

=str+Format('%10s-%s'#13,[tblValid['StudentID'],tblValid['Name']]);

tblValid.Next;

untiltblValid.Eof;

str:

=str+'隶属于该班级';

Result:

=true;

end;

tblValid.Active:

=false;

end;

(2.2)窗体相关事件过程及“退出”按钮组件的Click事件过程

procedureTfrmClass.FormShow(Sender:

TObject);

begin

tblClass.Active:

=true;

tblDepart.Active:

=true;

end;

procedureTfrmClass.btnQuitClick(Sender:

TObject);

begin

Close;

end;

procedureTfrmClass.FormClose(Sender:

TObject;

varAction:

TCloseAction);

begin

tblClass.Active:

=false;

tblDepart.Active:

=false;

end;

(2.3)界面模式的切换

procedureTfrmClass.dbnClassClick(Sender:

TObject;

Button:

TNavigateBtn);

begin

ToggleMode;

end;

procedureTfrmClass.tblClassAfterScroll(DataSet:

TDataSet);

begin

ToggleMode;

end;

(2.4)记录删除功能的实现

记录删除前的验证在tblClass的BeforeDelete事件中实现,代码如下:

procedureTfrmClass.tblClassBeforeDelete(DataSet:

TDataSet);

var

strMsg,strHead,strTail:

string;

begin

ifHasStudent(strMsg)then

begin

strHead:

='不能删除该班级的基本信息。

下面的学生:

';

strTail:

='删除该班级的基本信息会破坏数据的完整性!

';

strMsg:

=strHead+#13+strMsg+#13+strTail;

ShowMessage(strMsg);

Abort;

end;

strMsg:

=Format('确定要删除该班级"%s"吗?

该班级相关信息如下:

'#13,[tblClass['ClassName']]);

strMsg:

=strMsg+Format('班级编号:

%s'#13,[tblClass['ClassID']]);

strMsg:

=strMsg+Format('班级名称:

%s'#13,[tblClass['ClassName']]);

strMsg:

=strMsg+Format('班主任:

%s'#13,[tblClass['Master']]);

strMsg:

=strMsg+Format('联系电话:

%s'#13,[tblClass['MasterTel']]);

ifMessageDlg(strMsg,mtConfirmation,[mbYes,mbNo],0)<>mrYesthen

Abort;

end;

(2.5)数据保存功能的实现

数据有效性验证操作在数据表组件的BeforePost事件过程中进行。

数据规格化和非空域验证通过一个内嵌过程ChechField实现,班级编号唯一性验证通过内嵌函数ValidID,完整代码如下:

procedureTfrmClass.tblClassBeforePost(DataSet:

TDataSet);

procedureCheckField(FieldName,FieldDesc:

string;dbText:

TCustomEdit;NotEmpty:

Boolean);

begin

dbText.Text:

=Trim(dbText.Text);

dbText.Text:

=StringReplace(dbText.Text,'','',[rfReplaceAll]);

dbText.Text:

=StringReplace(dbText.Text,'"','',[rfReplaceAll]);

ifNotEmptyand(dbText.Text='')then

begin

ShowMessageFmt('%s不能为空,请输入足够的信息!

',[FieldDesc]);

dbText.SetFocus;

Abort;

end

else

tblClass.FieldByName(FieldName).AsString:

=dbText.Text;

end;

(2.6)班级管理模块与主模块的挂接。

在主窗体的菜单中点击“系统维护”->”班级管理”,在procedureTfrmMain.mntSysClassClick的程序体中加入frmClass.ShowModal,如下所示。

procedureTfrmMain.mntSysClassClick(Sender:

TObject);

begin

frmClass.ShowModal

end;

4.学生管理模块

(1)学生管理用户界面的设计参加课本13.6的图13-15

(2)模块功能的编程实现

(2.1)模块通用过程

在学生管理窗体类中定义一个私有方法,即在Type下面加入语句

procedureToggleMode;

私有方法ToggleMode代码如下:

procedureTfrmStudent.ToggleMode;

var

strM

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

当前位置:首页 > 表格模板 > 合同协议

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

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