📄 main_p.pas
字号:
{
本软件是何文锴(网名:荷塘新月)写的一个三层程序,没有最终完成,但相信它对想写
三层程序的朋友有一定的启发。如有转发,请保留我的这些信息。
这是我的网站:http://www.startor.cn/,做的非常粗糙,请各位朋友多多指教!
荷塘新月 QQ:57151728 EMAIL:htxy99@yahoo.com
2005年4月9日
}
unit main_p;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Menus, ComCtrls, RVStyle,Zlib;
type
Tf_main = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
stb: TStatusBar;
N3: TMenuItem;
N6: TMenuItem;
N20: TMenuItem;
RVStyle1: TRVStyle;
procedure CompressStream(inpStream, outStream: TStream);
procedure DecompressStream(inpStream, outStream: TStream);
procedure Compress(var CompressedStream: TMemoryStream);
procedure UnCompress(const CompressedStream: TMemoryStream);
procedure N19Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N20Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N5Click(Sender: TObject);
private
{ Private declarations }
public
dlmc,tkmc,sjmc:string; //登录人登录名称、当前打开的题库名称和试卷名称
tkbh,ryqx,sjbh:integer;//当前打开的题库编号、人员权限、当前选择的试卷编号
end;
var
f_main: Tf_main;
implementation
{$R *.dfm}
uses dm_p, tkmc_p, login_p, ryqx_p, xgmm_p, jzsz_p, ksgl_p, dfjl_p, bjst_p;
procedure tf_main.CompressStream(inpStream, outStream: TStream);
var
InpBuf, OutBuf: Pointer;
InpBytes, OutBytes: Integer;
begin
InpBuf := nil;
OutBuf := nil;
try
GetMem(InpBuf, inpStream.Size);
inpStream.Position := 0;
InpBytes := inpStream.Read(InpBuf^, inpStream.Size);
CompressBuf(InpBuf, InpBytes, OutBuf, OutBytes);
outStream.Write(OutBuf^, OutBytes);
finally
if InpBuf <> nil then FreeMem(InpBuf);
if OutBuf <> nil then FreeMem(OutBuf);
end;
end;
{ Decompress a stream }
procedure tf_main.DecompressStream(inpStream, outStream: TStream);
var
InpBuf, OutBuf: Pointer;
OutBytes, sz: Integer;
begin
InpBuf := nil;
OutBuf := nil;
sz := inpStream.Size - inpStream.Position;
if sz > 0 then
try
GetMem(InpBuf, sz);
inpStream.Read(InpBuf^, sz);
DecompressBuf(InpBuf, sz, 0, OutBuf, OutBytes);
outStream.Write(OutBuf^, OutBytes);
finally
if InpBuf <> nil then FreeMem(InpBuf);
if OutBuf <> nil then FreeMem(OutBuf);
end;
outStream.Position := 0;
end;
procedure tf_main.Compress(var CompressedStream: TMemoryStream);
var
SourceStream: TCompressionStream;
DestStream: TMemoryStream;
Count: Integer;
Begin
Count := CompressedStream.Size;
DestStream := TMemoryStream.Create;
SourceStream:=TCompressionStream.Create(clMax, DestStream);
Try
CompressedStream.SaveToStream(SourceStream);
SourceStream.Free;
CompressedStream.Clear;
CompressedStream.WriteBuffer(Count, SizeOf(Count));
CompressedStream.CopyFrom(DestStream, 0);
finally
DestStream.Free;
end;
end;
procedure tf_main.UnCompress(const CompressedStream: TMemoryStream);
var
SourceStream: TDecompressionStream;
DestStream: TMemoryStream;
Buffer: PChar;
Count: integer;
Begin
CompressedStream.Seek(0,soFromBeginning);
CompressedStream.ReadBuffer(Count, SizeOf(Count));
GetMem(Buffer, Count);
DestStream := TMemoryStream.Create;
SourceStream := TDecompressionStream.Create(CompressedStream);
Try
SourceStream.ReadBuffer(Buffer^, Count);
DestStream.WriteBuffer(Buffer^, Count);
DestStream.Position := 0;//复位流指针
CompressedStream.LoadFromStream(DestStream);
finally
FreeMem(Buffer);
DestStream.Free;
end;
end;
procedure Tf_main.N19Click(Sender: TObject);
begin
close;
end;
procedure Tf_main.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if application.MessageBox('您确定要退出系统吗?','确认信息',4+32)<>6 then canclose:=false
else canclose:=true;
end;
procedure Tf_main.N2Click(Sender: TObject);
begin
Application.CreateForm(Tf_tkmc, f_tkmc);
f_tkmc.showmodal;
f_tkmc.Free;
if tkbh>0 then
begin
stb.Panels[0].Text:='当前题库:'+tkmc;
n4.Enabled:=true;
n5.Enabled:=true;
n7.Enabled:=true;
end
else
begin
n4.Enabled:=false;
n5.Enabled:=false;
n7.Enabled:=false;
end;
end;
procedure Tf_main.N3Click(Sender: TObject);
begin
//管理员、教师登录
if n3.Caption='管理员教师登录' then
begin
ryqx:=-1;
Application.CreateForm(Tf_login, f_login);
f_login.showmodal;
f_login.Free;
if ryqx<0 then exit;
n20.Enabled:=true;
n11.Visible:=(ryqx=1);//系统维护权限
n1.Visible:=(ryqx>=0);//题库管理权限
n7.Visible:=(ryqx>=0);//考试管理权限
n7.Enabled:=(tkbh>0);
n3.Caption:='管理员教师退出';
end
else
begin
n3.Caption:='管理员教师登录';
n20.Enabled:=false;
n1.Visible:=false;
n7.Visible:=false;
n7.Enabled:=false;
n11.Visible:=false;
tkbh:=0;
sjbh:=0;
end;
end;
procedure Tf_main.N6Click(Sender: TObject);
begin
if sjbh>0 then
begin
n16.Enabled:=true;
n17.Enabled:=true;
end
else
begin
n16.Enabled:=false;
n17.Enabled:=false;
end;
end;
procedure Tf_main.N12Click(Sender: TObject);
begin
//人员权限设置
Application.CreateForm(Tf_ryqx, f_ryqx);
f_ryqx.ShowModal;
f_ryqx.Free;
end;
procedure Tf_main.N20Click(Sender: TObject);
begin
//修改密码
Application.CreateForm(Tf_xgmm, f_xgmm);
f_xgmm.showmodal;
f_xgmm.free;
end;
procedure Tf_main.N4Click(Sender: TObject);
begin
//考察范围设置
Application.CreateForm(Tf_zjsz, f_zjsz);
f_zjsz.showmodal;
f_zjsz.free;
end;
procedure Tf_main.N8Click(Sender: TObject);
begin
//考生管理
Application.CreateForm(Tf_ksgl, f_ksgl);
f_ksgl.showmodal;
f_ksgl.Free;
end;
procedure Tf_main.N14Click(Sender: TObject);
begin
//得分结论设置
Application.CreateForm(Tf_dfjl, f_dfjl);
f_dfjl.ShowModal;
f_dfjl.Free;
end;
procedure Tf_main.N5Click(Sender: TObject);
begin
//编辑试题
Application.CreateForm(Tf_bjst, f_bjst);
f_bjst.showmodal;
f_bjst.Free;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -