你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 跟高手学编程
学生成绩管理系统的设计与开发(五)
 

1)公共常量、自定义类型和变量

UnitPublic公用单元文件的interfaceimplementation关键字间定义系统中使用的全局自定义数据结构、常量和公共变量。

本系统需要的定义如下:

Const   // 定义常量

  Role_SystemAdmin = 'SystemAdmin'; // 系统管理角色名

  SystemAdmin = 'Admin';           // 系统管理员ID

  Role_Teacher =     'Teacher';     // 教师角色名

  Role_Student =     'Student';     // 学生角色名

  AchievementCount = 6;          // 输入成绩时的项目个数

  strEmptySelect   = '请选择';      // 查询时使用

Type        // 定义自定义类型

  // 节点数据字段名,每行表示一个节点。第一列为ID,第二列为显示信息

  TOper_FieldDem2 = array[1..2] of  string;

  TOper_Fields = array of  TOper_FieldDem2;

  TAchievementDem2 = array[0..AchievementCount-1] of TEdit; // 用于动态输入成绩

  TEditAchievement = array of TAchievementDem2;

Var     // 定义变量

  UserID :            String[58];

  UserType :          Byte{1:教师;2:学生};

  IsAdministroy :     Boolean;

  strSQL :            String;       // 存放SQL语句

  strTemp :           String;       // 临时使用

  IniFile :           TIniFile;     // 存放系统参数的文件

  TreeList:           TStringList;  // 节点的关联数据

  Fields :            TOper_Fields; // 节点字段名

  SelectNode :        TTreeNode;    // 选中的节点

  AchievementTypeID : String[10];   // 存放考试类别

  EditAchievement :   TEditAchievement; // 用于动态输入学生成绩

  iCount :            Integer;          // 用于计数

  Scope :             Array [0..6] of SmallInt; // 用于成绩统计

  NumCount :          SmallInt;         // 总人数

因在上述变量中定义了一个TIniFile类型用于读写.ini文件的变量,在其后的函数和过程定义中使用了其它数据类型,故需要在uses单元引用部分添加对IniFilesTIniFile类型在该单元中定义)等单元的引用,如下所示:

uses

 Controls, Menus, Variants, ExtCtrls, StdCtrls, ComCtrls, Forms, DB, Classes, Dialogs, IniFiles;

2)公共函数与过程

UnitPublic公用单元文件的implementationEnd关键字间定义系统中使用的自定义公共函数与过程。

本系统需要使用公共函数与过程有5个,具体定义如下。

1) 自动添加角色权限(AddRoleRight)过程。该过程将系统中操作对象自动添加到角色权限表中,而不必由管理员一个个地人工添加,大大提高了权限的管理效率。

2) 设置登录用户的对象权限(SetObjRight)过程。在用户登录后根据系统管理员分配给其的权限动态设置。

3) 查询登录的用户是否具有系统管理员权限(IsAdmin)函数。系统管理员具有系统的所有权限。

// 检测登录用户是否拥有系统管理角色

Function IsAdmin(DataSet: TDataSet): Boolean;

begin

 DataSet.First;

 Result := False;

 while not DataSet.Eof do begin // Role_SystemAdmin为系统管理角色

  if DataSet.FieldValues['RoleID']=Role_SystemAdmin then begin

   Result := True;

   Break;

  end;

  DataSet.Next;

 end;

end;

4) 创建通用树型结构的快速算法CreateTreeFast过程。在本系统中使用了大量的查询,为方便用户使用,大多采用了树型结构表示。

CreateTreeFast过程中,DataSet是创建的树型结构所用到的数据集; Fields为一个字段名数组,是一个二维数组,按行的规则存放了树型结构的每个关键字字段及其对应的显示名称字段;如:Fields[0][1] 中为第一个关键字字段,Fields[0][2] 则为第一个关键字所对应的名称字段;TreeView是需要创建的树型结构对象。

procedure CreateTreeFast(DataSet: TDataSet; Fields: TOper_Fields; TreeView: TTreeView);

var

  // 存放树型结构节点数据的临时字符串列表

  Tree_Items:         TStringList;

  // 节点关键字值

  KeyFieldValue:      Array of string;

  i, j, Level:           Smallint;

  StrIndent:          string;   // 缩进字符串

  Chk:              Boolean;

begin

  Level := High(Fields)+1;       // 求有几个关键字,即几层

  // 检查Fields数组中的字段名是否包含在数据集中
  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089