📄 unit3.pas
字号:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls,comobj,DB,ADODB, ComCtrls;
type
TForm3 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Panel1: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
GroupBox1: TGroupBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
BitBtn4: TBitBtn;
BitBtn6: TBitBtn;
BitBtn3: TBitBtn;
GroupBox2: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
CheckBox1: TCheckBox;
Label6: TLabel;
BitBtn5: TBitBtn;
answer_edit: TLabeledEdit;
edit1: TComboBox;
TabSheet3: TTabSheet;
GroupBox3: TGroupBox;
banji_edit: TLabeledEdit;
BitBtn7: TBitBtn;
BitBtn8: TBitBtn;
Label7: TLabel;
xuezhibox: TComboBox;
procedure BitBtn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure Label6MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Label6MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Label6MouseLeave(Sender: TObject);
procedure Label6Click(Sender: TObject);
procedure BitBtn8Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
const
CCreateMDB='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s';
implementation
uses Unit4, Unit1, Unit2;
{$R *.dfm}
procedure TForm3.BitBtn2Click(Sender: TObject);
begin
application.Terminate;
end;
procedure TForm3.FormCreate(Sender: TObject);
var
fname,fname1:string;
sqlstring:string;
my_adoquery:TADOquery;
begin
form1.passed:=false;
if not DirectoryExists(application.GetNamePath+'user/') then //目录存在否
CreateDirectory(PChar(application.GetNamePath+'user/'),nil); //创建目录
if not DirectoryExists(application.GetNamePath+'user/login') then //目录存在否
CreateDirectory(PChar(application.GetNamePath+'user/login'),nil); //创建目录
fname1:=application.GetNamePath+'user/login/'+'用户.mdb';
if not Fileexists(fname1) then
begin
form1.createdatabase(fname1);
sqlstring:='create table 用户表(编号 COUNTER PRIMARY KEY,用户名 char(10) not null,密码 char(50),问题 char(50),答案 char(50))';//创建用户表
form1.createdatasheet(fname1,sqlstring); //调用创建数据表函数
sqlstring:='create table 登录表(编号 COUNTER PRIMARY KEY,用户名 char(10) not null)'; //创建登陆表
form1.createdatasheet(fname1,sqlstring);//调用创建数据表函数
end;
my_adoquery:=Tadoquery.Create(self);//创建adoquery组建
my_adoquery.connectionstring:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+fname1+';';
//程序初始化判断存在用户不!存在则进入登陆页面,否则进入注册页面
with my_adoquery do
begin
close;
sql.Clear;
sql.Add('select * from 用户表');
open;
if recordcount<1 then
PageControl1.ActivePage:=TabSheet2
else
PageControl1.ActivePage:=TabSheet1;
close;
sql.Clear;
sql.Add('select * from 登录表');
open;
first;
while not eof do
begin
edit1.Items.Add(fieldbyname('用户名').AsString);
next;
end;
end;
my_adoquery.Free;
end;
procedure TForm3.BitBtn1Click(Sender: TObject);
var
sqlstring:string;
my_adoquery:Tadoquery;
fname1:string;
user_file:string;
begin
fname1:=application.GetNamePath+'user/login/'+'用户.mdb';
my_adoquery:=Tadoquery.Create(self);//创建adoquery组建
my_adoquery.connectionstring:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+fname1+';';
if edit1.text='' then
begin
showmessage('用户名不能为空!');
exit;
end;
if checkbox1.Checked then //判断是否保存用户名
begin
with my_adoquery do
begin
close;
sql.Clear;
sql.Add('select * from 登录表 where 用户名=:user');
my_adoquery.Parameters.ParamByName('user').Value:=trim(edit1.Text);
open;
if recordcount<1 then //登陆表中不存在次用户名则加入
begin
close;
sql.Clear;
sql.Add('insert into 登录表 (用户名) values(:user)');
my_adoquery.Parameters.ParamByName('user').Value:=trim(edit1.Text);
execsql
end
end;
end;
with my_adoquery do //判断用户名和密码正确否
begin
close;
sql.clear;
sqlstring:='select * from 用户表 where 用户名=:user and 密码=:pass';
sql.Add(sqlstring);
my_adoquery.Parameters.ParamByName('user').Value:=trim(edit1.Text);
my_adoquery.Parameters.ParamByName('pass').Value:=trim(edit2.Text);
open;
if recordcount>=1 then //存在则进入主页面
begin
form1.user:=trim(edit1.text);
form1.passed:=true;
form3.close;
showmessage('欢迎使用!');
form1.StatusBar1.Panels[0].Text:='当前用户:'+form1.user;
form1.StatusBar1.Panels[1].text:='欢迎使用班级管理系统';
form1.StatusBar1.Panels[2].text:=datetimetostr(date);
end
else
showmessage('密码错误!'); //不存在则报错
end;
edit1.Text:='';
edit2.Clear;
end;
procedure TForm3.BitBtn6Click(Sender: TObject);
begin
application.Terminate;
end;
procedure TForm3.BitBtn4Click(Sender: TObject);
var
cat,cat1:Variant;
fname,fname1:string;
user_data:string;
my_adoquery,db_adoquery,db1_adoquery:Tadoquery;
sqlstring,sqlstring1:string;
flag:boolean;
user_file:string;
begin
user_file:=application.GetNamePath+'user/'+edit3.Text;
if not DirectoryExists(user_file) then //用户目录存在否
CreateDirectory(PChar(user_file),nil); //用户创建目录
if not DirectoryExists(application.GetNamePath+'user/'+edit3.Text+'/pic') then //目录存在否
CreateDirectory(PChar(application.GetNamePath+'user/'+edit3.Text+'/pic'),nil); //创建目录
flag:=true;
user_data:=application.GetNamePath+'user/login/用户.mdb';
fname:=application.GetNamePath+'user/'+edit3.Text+'/班级.mdb';
db_adoquery:=Tadoquery.create(self);
my_adoquery:=Tadoquery.Create(self);
db_adoquery.connectionstring:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+user_data+';';
my_adoquery.connectionstring:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+fname+';';
// sqlstring:='create table '+edit3.Text+'班级表(编号 COUNTER PRIMARY KEY,姓名 char(10) not null,性别 char(2),年龄 char(3),家庭住址 memo,出生年月 date)';
if (edit3.Text='') or (edit5.Text='') then
begin
showmessage('请输入必要数据!');
exit;
end;
with db_adoquery do
begin
close;
sql.clear;
sqlstring1:='select * from 用户表 where 用户名=:user';
sql.Add(sqlstring1);
db_adoquery.Parameters.ParamByName('user').Value:=trim(edit3.Text);
open;
if recordcount>=1 then //判断注册用户是否存在
begin
showmessage('用户名已经存在,请另外选择!');
exit;
end
else //不存在则创建用户
begin
sql.Clear;
sqlstring1:='insert into 用户表(用户名,密码,问题,答案) values(:user,:pass,:question,:answer)';
sql.add(sqlstring1);
db_adoquery.Parameters.ParamByName('user').Value:=trim(edit3.Text);
db_adoquery.Parameters.ParamByName('pass').Value:=trim(edit4.Text);
db_adoquery.Parameters.ParamByName('question').Value:=trim(edit5.Text);
db_adoquery.Parameters.ParamByName('answer').Value:=trim(answer_edit.Text);
try
execsql;
except
flag:=false;
showmessage('创建失败!');
end;
end;
fname:=application.GetNamePath+'user/'+edit3.Text+'/班级.mdb';
if not Fileexists(fname) then
begin
cat1:=CreateOleObject('ADOX.Catalog');
cat1.Create(Format(CCreateMDB,[fname]));
cat1:=Unassigned;
try
sqlstring:='create table 班级表(编号 COUNTER PRIMARY KEY,名称 char(50) not null,学制 integer)';
my_adoquery.SQL.Clear ;
my_adoquery.SQL.Add(sqlstring);
my_adoquery.ExecSQL;
//showmessage('创建成功!');
except
showmessage( '创建用户数据表失败!');
end;
end;
end;
//if flag then
// begin
//if messagedlg('用户创建成功!现在登陆吗?',mtinformation,[mbyes,mbno],0)=mryes then
// begin
PageControl1.ActivePage:=TabSheet3;
// end;
//end;
db_adoquery.Free;
db1_adoquery.Free;
end;
procedure TForm3.BitBtn3Click(Sender: TObject);
begin
edit3.Clear;
edit4.Clear;
edit5.Clear;
end;
procedure TForm3.BitBtn5Click(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
end;
procedure TForm3.Label6MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
label6.Font.Color:=clgreen;
label6.Cursor:=crHandPoint;
end;
procedure TForm3.Label6MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
label6.Font.Color:=clblue;
label6.Cursor:=crDefault;
end;
procedure TForm3.Label6MouseLeave(Sender: TObject);
begin
label6.Font.Color:=clblue;
label6.Cursor:=crDefault;
end;
procedure TForm3.Label6Click(Sender: TObject);
begin
form4:=Tform4.Create(self);
form4.ShowModal;
form4.Free;
end;
procedure TForm3.BitBtn8Click(Sender: TObject);
begin
application.Terminate;
end;
procedure TForm3.BitBtn7Click(Sender: TObject);
var
cat,cat1:Variant;
fname,fname1:string;
sqlstring:string;
my_adoquery:TADOquery;
begin
fname:=application.GetNamePath+'user/'+edit3.text+'/'+banji_edit.Text+'.mdb';
fname1:=application.GetNamePath+'user/'+edit3.text+'/'+'班级.mdb';
my_adoquery:=Tadoquery.Create(self);
my_adoquery.connectionstring:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+fname+';';
if not Fileexists(fname) then
begin
cat1:=CreateOleObject('ADOX.Catalog');
cat1.Create(Format(CCreateMDB,[fname]));
cat1:=Unassigned;
try
sqlstring:='create table 学生信息表(编号 COUNTER PRIMARY KEY,学号 char(12) not null,姓名 char(10),性别 char(2),出生年月 date,';
sqlstring:=sqlstring+'籍贯 char(20),入学性质 char(10),政治面貌 char(10),专业 char(20),系别 char(20),班级 char(10),相片 char(10),家庭地址 char(100))';
my_adoquery.SQL.Clear ;
my_adoquery.SQL.Add(sqlstring);
my_adoquery.ExecSQL;
//showmessage('创建成功!');
except
showmessage( '创建用户数据表失败!');
end;
try
sqlstring:='create table 补考表(编号 COUNTER PRIMARY KEY,学号 char(12),姓名 char(10),科目 char(20),学期 char(15))';
my_adoquery.SQL.Clear ;
my_adoquery.SQL.Add(sqlstring);
my_adoquery.ExecSQL;
//showmessage('创建成功!');
except
showmessage( '创建用户数据表失败!');
end;
try
sqlstring:='create table 奖励表(编号 COUNTER PRIMARY KEY,学号 char(12),姓名 char(10),班级 char(10),学期 char(15),内容 char(200))';
my_adoquery.SQL.Clear ;
my_adoquery.SQL.Add(sqlstring);
my_adoquery.ExecSQL;
//showmessage('创建成功!');
except
showmessage( '创建用户数据表失败!');
end;
try
sqlstring:='create table 惩罚表(编号 COUNTER PRIMARY KEY,学号 char(12),姓名 char(10),班级 char(10),学期 char(15),内容 char(200))';
my_adoquery.SQL.Clear ;
my_adoquery.SQL.Add(sqlstring);
my_adoquery.ExecSQL;
//showmessage('创建成功!');
except
showmessage( '创建用户数据表失败!');
end;
end;
sqlstring:='insert into 班级表(名称,学制) values(:class,:xuezhi)';
my_adoquery.connectionstring:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+fname1+';';
with my_adoquery do
begin
close;
sql.Clear;
sql.Add(sqlstring);
Parameters.ParamByName('class').Value:=trim(banji_edit.Text);
Parameters.ParamByName('xuezhi').Value:=trim(xuezhibox.Text);
execsql;
end;
if messagedlg('用户创建成功!现在登陆吗?',mtinformation,[mbyes,mbno],0)=mryes then
begin
PageControl1.ActivePage:=TabSheet1;
end;
my_adoquery.Free;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -