?? data.pas
字號:
unit data;
interface
uses
Windows,SysUtils, Classes, DB, ADODB;
const CopyRight:string='作者:吳創(chuàng)豪';
type
PAdmin = ^TAdmin;
TAdmin = record
FLoginName:string; //登錄名
FPassword:integer; //登錄口令
FName:string; //名稱
FSex:string; //性別
FPopedom:integer; //管理員類型
FSysSetup:boolean; //系統(tǒng)設置權限
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; //退出狀態(tài)
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; //系統(tǒng)設置
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;
// 編輯系統(tǒng)設置數(shù)據(jù),AAnd為True 表示添加記錄,F(xiàn)alse 表示修改記錄,
// 成功返回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 + -