?? 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 + -