📄 data.pas
字号:
unit data;
interface
uses
Windows,SysUtils, Classes, DB, ADODB;
const CopyRight:string='作者:吴创豪';
type
PAdmin = ^TAdmin;
TAdmin = record
FLoginName:string; //登录名
FPassword:integer; //登录口令
FName:string; //名称
FSex:string; //性别
FPopedom:integer; //管理员类型
FSysSetup:boolean; //系统设置权限
FFillTime:boolean; //卡号充值权限
FAward:boolean; //奖励的权限
FOnline:boolean; //上下机管理的权限
FMember:boolean; //卡号管理的权限
end;
type
PSysSetup = ^TSysSetup;
TSysSetup = record
FCharge:integer; //收费标准(分钱/6分钟)
FMinTime:integer; //最低机时
FAutoHide:integer; //自动保密时间
FAutoSave:integer; //自动保存时间的时间
FExitState:boolean; //退出状态
FLastExit:TDateTime;//最后一次保存时间
end;
type
PUserInfo = ^TUserInfo;
TUserInfo = record
FStuNO:string; //卡号
FStuName:string; //姓名
FStuSex:string; //性别
FStuClass:string; //班级
FStuLoginDate:TDateTime; //注册日期
FStuUnLoginDate:TDateTime; //撤注日期
FStuValidity:boolean; //有效标志
FStuPrepTime:integer; //预充机时
FStuAllUsedTime:integer; //共用机时
FStuMemo:string; //备注
end;
type
PUpline = ^TUpline;
TUpline = record
FStuNo:string; //卡号
FHave:boolean; //存不存在该卡号
FInline:boolean; //当前卡号是否在机
FValidity:boolean; //有效标志
FPrepTime:integer; //预存机时
FReturnInfo:string; //返回的信息
end;
type
POnlineNote = ^TOnlineNote;
TOnlineNote = record
FStuNo:string;
FUpDate:TDateTime;
FUpTime:TDateTime;
FDownDate:TDateTime;
FDownTime:TDateTime;
FUsedTime:integer;
FOrderlyMan:string;
end;
type
TDM = class(TDataModule)
ADOCon: TADOConnection;
ADOTAdminList: TADOTable;
ADOTSysSetup: TADOTable;
DSMember: TDataSource;
DSClass: TDataSource;
DSAdminList: TDataSource;
DSSysSetup: TDataSource;
DSOnlineNote: TDataSource;
DSCurOnline: TDataSource;
ADOQGetNote: TADOQuery;
ADOQMember: TADOQuery;
ADOQCurOnline: TADOQuery;
ADOCmdInsertOnlineNote: TADOCommand;
ADOCmdDelete: TADOCommand;
ADOCmdUpdate: TADOCommand;
ADOCmdAppend: TADOCommand;
ADOQOnlineNote: TADOQuery;
ADOQFillValue: TADOQuery;
DSFillValue: TDataSource;
ADOQAward: TADOQuery;
DSAward: TDataSource;
ADOCmdAward: TADOCommand;
ADOCmdInsertAwardItem: TADOCommand;
ADOQFindMember: TADOQuery;
ADOQClass: TADOQuery;
ADOQClassclsName: TWideStringField;
ADOTAdminListadLoginName: TWideStringField;
ADOTAdminListadPassword: TIntegerField;
ADOTAdminListadName: TWideStringField;
ADOTAdminListadSex: TWideStringField;
ADOTAdminListpopedom: TSmallintField;
ADOTAdminListsysSetup: TBooleanField;
ADOTAdminListfillTime: TBooleanField;
ADOTAdminListaward: TBooleanField;
ADOTAdminListonline: TBooleanField;
ADOTAdminListmember: TBooleanField;
private
{ Private declarations }
public
{ Public declarations }
curAdmin:TAdmin; //当前管理员
SysSetup:TSysSetup; //系统设置
function AddAdmin(AAdmin: TAdmin): boolean;
function CheckAdmin(AName:string;APassword: integer;AGetInfo:boolean): boolean;
function OpenDatabase(APath: string): boolean;
function GetSysSetup(var ASysSetup: TSysSetup): boolean;
function EditSysSetup(ASysSetup: TSysSetup): boolean;
function FindAdmin(AAdminName: string): boolean;
function FindMember(AUserName: string): boolean;
function CheckDateFormat(ADate: string): boolean;
function CheckCanUpLine(AStuNo: string): integer;
function CheckInline(AStuNo: string): boolean;
function CheckValidity(AStuNo: string): boolean;
procedure UpLine(var AUpline: TUpline);
function DownLine(AStuNo:string;ADate, ATime: TDateTime):boolean;
function AddCls(AClsName: string): boolean;
function FillValue(AStuNo: string;ANum:integer): boolean;
function DownLineAll(ADate, ATime: TDateTime): boolean;
procedure WriteExitState(Astate: boolean; ALastExit: TDateTime);
function CheckWuqiu(APassword: string;ALaugh:integer): boolean;
end;
var
DM: TDM;
function GetPassword(AStrPass: string): integer;
function GetOnlineTime(UpTime, DownTime: TDateTime): word;
implementation
{$R *.dfm}
function GetOnlineTime(UpTime, DownTime: TDateTime): word;
var
Up,Down: TSystemTime;
begin
DateTimeToSystemTime(UpTime,Up);
DateTimetoSystemTime(DownTime,Down);
Result:=((Down.wYear -Up.wYear)*365+(Down.wMonth-Up.wMonth)*30+(Down.wDay-Up.wDay))*24*60+
(Down.wHour-Up.wHour)*60+(Down.wMinute-Up.wMinute);
end;
function TDM.AddAdmin(AAdmin: TAdmin): boolean;
// 新增加一个管理员,成功返回True,失败返回False;
var
AActive:boolean;
ADOTemp:TADOQuery;
strQuery:string;
begin
ADOTemp:=TADOQuery.Create(nil);
ADOTemp.Connection :=ADOCon;
strQuery:='select adLoginName from AdminList where adLoginName='
+''''+AAdmin.FLoginName+'''';
with ADOTemp do
begin
SQL.Add(strQuery);
Active:=true;
if RecordCount>0 then
// 如果该管理员已存在,则返回False
begin
ADOTemp.Free;
Result:=false;
exit;
end;
end;
ADOTemp.Free;
// 如果不存在用户名冲突,则添加
with ADOTAdminList do
begin
AActive:=Active;
try
if not AActive then Active:=true;
Append;
FieldValues['adLoginName']:=AAdmin.FLoginName;
FieldValues['adPassword']:=AAdmin.FPassword;
FieldValues['adName']:=AAdmin.FName;
FieldValues['adSex']:=AAdmin.FSex;
FieldValues['popedom']:=AAdmin.FPopedom;
FieldValues['sysSetup']:=AAdmin.FSysSetup;
FieldValues['fillTime']:=AAdmin.FFillTime;
FieldValues['award']:=AAdmin.FAward;
FieldValues['online']:=AAdmin.FOnline;
FieldValues['member']:=AAdmin.FMember;
post;
if AActive=false then Active :=false;
finally
Result:=true;
end;
end;
end;
function TDM.CheckAdmin(AName:string;APassword: integer;AGetInfo:boolean): boolean;
// 用户口令验证,当AGetInfo 为True 时,获取相关信息,并将其至为当前用户
var
ADOTemp:TADOQuery;
begin
ADOTemp:=TADOQuery.Create(nil);
ADOTemp.Connection :=ADOCon;
ADOTemp.SQL.Add('select * from AdminList where adLoginName=@Name and adPassword=@Password and popedom<>3');
with ADOTemp do
begin
Parameters[0].Value :=AName;
Parameters[1].Value :=APassword;
Active:=true;
if RecordCount>0 then
begin
if AGetInfo then
begin
curAdmin.FLoginName :=FieldValues['adLoginName'];
curAdmin.FPassword :=FieldValues['adPassword'];
curAdmin.FName :=FieldValues['adName'];
curAdmin.FSex :=FieldValues['adSex'];
curAdmin.FPopedom :=FieldValues['popedom'];
curAdmin.FSysSetup :=FieldValues['sysSetup'];
curAdmin.FFillTime :=FieldValues['fillTime'];
curAdmin.FAward :=FieldValues['award'];
curAdmin.FOnline :=FieldValues['online'];
curAdmin.FMember :=FieldValues['member'];
end;
Result:=true;
end
else
Result:=false;
end;
ADOTemp.Free;
end;
function TDM.EditSysSetup(ASysSetup: TSysSetup): boolean;
// 编辑系统设置数据,AAnd为True 表示添加记录,False 表示修改记录,
// 成功返回True,失败返回False
begin
with ADOTSysSetup do
begin
try
Active:=true;
if RecordCount>0 then edit else Append;
// if AAdd then Append else Edit;
FieldValues['charge']:=ASysSetup.FCharge;
FieldValues['minTime']:=ASysSetup.FMinTime;
FieldValues['autoHide']:=ASysSetup.FAutoHide;
FieldValues['autoSave']:=ASysSetup.FAutoSave;
FieldValues['exitState']:=ASysSetup.FExitState;
FieldValues['lastExit']:=ASysSetup.FLastExit;
post;
Active :=false;
finally
Result:=true;
end;
end;
end;
function TDM.FindAdmin(AAdminName: string): boolean;
var
ADOTemp:TADOQuery;
begin
ADOTemp:=TADOQuery.Create(nil);
ADOTemp.Connection :=ADOCon;
ADOTemp.SQL.Add('select adLoginName from AdminList where adLoginName=@LoginName');
with ADOTemp do
begin
Parameters[0].Value :=AAdminName;
Active:=true;
Result:=RecordCount>0;
end;
ADOTemp.Free;
end;
function TDM.GetSysSetup(var ASysSetup: TSysSetup):boolean;
var
AActive:boolean;
begin
with ADOTSysSetup do
begin
AActive:=Active;
try
if not AActive then Active:=true;
First;
ASysSetup.FCharge:=FieldValues['charge'];
ASysSetup.FMinTime:=FieldValues['minTime'];
ASysSetup.FAutoHide:=FieldValues['autoHide'];
ASysSetup.FAutoSave:=FieldValues['autoSave'];
ASysSetup.FExitState:=FieldValues['exitState'];
ASysSetup.FLastExit:=FieldValues['lastExit'];
if AActive=false then Active :=false;
finally
Result:=true;
end;
end;
end;
function TDM.OpenDatabase(APath: string): boolean;
var
strCon:string;
begin
strCon:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='
+APath+';Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";'
+'Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="982702";Jet OLEDB:Engine Type=5;'
+'Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;'
+'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";'
+'Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;'
+'Jet OLEDB:Don'+''''+'t Copy Locale on Compact=False;'
+'Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
with ADOCon do
begin
if Connected then Connected:=false;
ConnectionString :=strCon;
try
Connected:=true;
with ADOTAdminList do
begin
Active :=true;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -