⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 userunit.pas

📁 一个小的成绩信息管理系统
💻 PAS
字号:
unit userUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ToolWin, ComCtrls, DB, ADODB;

type
  TuserForm = class(TForm)
    CoolBar1: TCoolBar;
    sb1: TSpeedButton;
    sb2: TSpeedButton;
    sb3: TSpeedButton;
    sb4: TSpeedButton;
    sb5: TSpeedButton;
    sb6: TSpeedButton;
    sb7: TSpeedButton;
    Label8: TLabel;
    listview1: TListView;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    CheckBox1: TCheckBox;
    Label6: TLabel;
    Edit6: TEdit;
    ADOQuery1: TADOQuery;
    procedure sb7Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure listview1SelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure sb1Click(Sender: TObject);
    procedure sb4Click(Sender: TObject);
    procedure Edit4Exit(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
    procedure Edit2Exit(Sender: TObject);
    procedure Edit6Exit(Sender: TObject);
    procedure Edit3Exit(Sender: TObject);
    procedure sb2Click(Sender: TObject);
    procedure sb5Click(Sender: TObject);
    procedure sb3Click(Sender: TObject);
  private
    { Private declarations }
    addormodify:integer;
  public
    { Public declarations }
  end;

var
  userForm: TuserForm;

implementation
 uses
   mainunit;
{$R *.dfm}

procedure TuserForm.sb7Click(Sender: TObject);
begin
  close;
end;

procedure TuserForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   Action:=cafree;
end;

procedure TuserForm.FormShow(Sender: TObject);
var
  listitem:Tlistitem;
begin
  listview1.SetFocus;
  //把用户信息从数据库读取到listview中
  ADOQuery1.Sql.Clear;
  ADOQuery1.SQL.Add('select userid,name,acount,password,state from users');
  ADOQuery1.open;
  listview1.Items.Clear();
  while (not  ADOQuery1.Eof ) do
    begin
        listitem:=listview1.Items.Add();
        listitem.Caption:=Trim(ADOQuery1.FieldByName('userid').AsString);
        if Trim(ADOQuery1.FieldByName('name').AsString)='' then
           listitem.SubItems.Add(' ')
        else
          listitem.SubItems.Add(Trim(ADOQuery1.FieldByName('name').AsString));
        if Trim(ADOQuery1.FieldByName('acount').AsString)='' then
           listitem.SubItems.Add(' ')
        else
          listitem.SubItems.Add(Trim(ADOQuery1.FieldByName('acount').AsString));
        if Trim(ADOQuery1.FieldByName('password').AsString)='' then
           listitem.SubItems.Add(' ')
        else
          listitem.SubItems.Add(Trim(ADOQuery1.FieldByName('password').AsString));

        if Trim(ADOQuery1.FieldByName('state').AsString)='' then
           listitem.SubItems.Add(' ')
        else
          listitem.SubItems.Add(Trim(ADOQuery1.FieldByName('state').AsString));
        ADOQuery1.Next();
     end;
end;

procedure TuserForm.listview1SelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
  if Selected=true then   //把在listview中选择的项目读到编辑框中;
     begin
       edit1.Text:=trim(listview1.Selected.Caption);
       edit2.Text:=trim(listview1.Selected.SubItems.Strings[0]);
       edit6.Text:=trim(listview1.Selected.SubItems.Strings[1]);
       edit3.Text:=trim(listview1.Selected.SubItems.Strings[2]);
       edit4.Text:=trim(listview1.Selected.SubItems.Strings[2]);
       if trim(Item.SubItems.Strings[3])='0' then
          checkbox1.Checked:=true
       else
          checkbox1.Checked:=false;
       //开放“新增”,“修改”,“删除”按钮
       sb1.Enabled:=true;
       sb2.Enabled:=true;
       sb3.Enabled:=true;
     end;
end;

procedure TuserForm.sb1Click(Sender: TObject);
begin
  addormodify:=1;//“新增”按钮按下
  //初始化输入控件
  edit1.Text:='';
  edit2.Text:='';
  edit3.Text:='';
  edit4.Text:='';
  edit6.Text:='';
  checkbox1.Checked:=false;
  //关闭“新增”,“修改”,“删除”按钮;
  sb1.Enabled:=false;
  sb2.Enabled:=false;
  sb3.Enabled:=false;
 //打开”保存“,”取消“ ------------------
  sb4.Enabled:=true;
  sb5.Enabled:=true;
end;

procedure TuserForm.sb4Click(Sender: TObject);
 var
  ListItem:TListItem;
  state:string;
begin
  //界面控制
  sb4.Enabled:=false;  //保存按钮按下去后,应设置它不用用,防止用户连续多次点击
  sb5.Enabled:=false;
  //新增数据的保存;-----------------------------------------------------------
  if addormodify=1 then  
     begin
       if checkbox1.Checked=true then
          state:='0'
       else
          state:='1';
       //首先把数据保存到数据库users表中
       try  //try ...except为异常处理
         ADOQuery1.Sql.Clear;
         ADOQuery1.SQL.Add('insert into users (userid,name,acount,password,state)'+
         'values('''+trim(edit1.Text)+''','''+trim(edit2.Text)+''','''+trim(edit6.Text)+''','''+trim(edit3.Text)+''','+
         ' '''+state+''') ');
         ADOQuery1.ExecSQL;
       except
         application.MessageBox('更新数据库失败,请检查后再试!','错误',MB_OK+MB_ICONSTOP);
         //恢复”保存“和”取消“按钮原来的状态
         sb4.Enabled:=true;  //重新应设置可用,使得用户在修好数据后能再次保存
         sb5.Enabled:=true;
         exit;
       end;
       //新增的数据还要添加到listview中供用户浏览---------------------------------------
       listitem:=listview1.Items.Add();
       listitem.Caption:=trim(edit1.Text);
       listitem.SubItems.Add(trim(edit2.Text));
       listitem.SubItems.Add(trim(edit6.Text));
       listitem.SubItems.Add(trim(edit3.Text));
       listitem.SubItems.Add(state);
     end;
   //修改数据的保存;---------------------------------------------
   if addormodify=2 then
     begin
       if checkbox1.Checked=true then
          state:='0'
       else
          state:='1';
       //首先把数据保存到数据库users表中
       try  //try ...except为异常处理
         ADOQuery1.Sql.Clear;
         ADOQuery1.SQL.Add('update users set name='''+trim(edit2.Text)+''','+
         'acount='''+trim(edit6.Text)+''',password='''+trim(edit3.Text)+''',state='''+state+''' '+
         'where userid='''+trim(edit1.Text)+''' ');
         ADOQuery1.ExecSQL;
       except
         application.MessageBox('更新数据库失败,请检查后再试!','错误',MB_OK+MB_ICONSTOP);
         //恢复”保存“和”取消“按钮原来的状态
         sb4.Enabled:=true;  //重新应设置可用,使得用户在修好数据后能再次保存
         sb5.Enabled:=true;
         exit;
       end;
       //修改的数据还要添加到listview中供用户浏览---------------------------------------
       listview1.Selected.Caption:=trim(edit1.Text);
       listview1.Selected.SubItems.Strings[0]:=trim(edit2.Text);
       listview1.Selected.SubItems.Strings[1]:=trim(edit6.Text);
       listview1.Selected.SubItems.Strings[2]:=trim(edit3.Text);
       listview1.Selected.SubItems.Strings[3]:=state;
     end;
   //恢复按钮原来的状态
   sb1.Enabled:=true;
   sb2.Enabled:=true;
   sb3.Enabled:=true;
end;

procedure TuserForm.Edit4Exit(Sender: TObject);
begin
  if trim(edit3.Text)<>trim(edit4.Text) then //判断用户前后两次输入的密码是否相同;
     begin
       application.MessageBox('您两次输入的密码不一致,请检查后再试!','错误',MB_OK+MB_ICONSTOP);
       edit4.SetFocus;  //输入焦点(光标)定位到edit4的编辑框中,等待再次输入正确的密码;
     end;
end;

procedure TuserForm.Edit1Exit(Sender: TObject);
begin
  if trim(edit1.Text)='' then
     begin
       application.MessageBox('用户编号不能为空!','错误',MB_OK+MB_ICONSTOP);
       edit1.SetFocus;  //输入焦点(光标)定位到编辑框中,等待再次输入
     end;
end;

procedure TuserForm.Edit2Exit(Sender: TObject);
begin
  if trim(edit2.Text)='' then
     begin
       application.MessageBox('用户姓名不能为空!','错误',MB_OK+MB_ICONSTOP);
       edit2.SetFocus;  //输入焦点(光标)定位到编辑框中,等待再次输入
     end;
end;

procedure TuserForm.Edit6Exit(Sender: TObject);
var
  acountLength:integer;
begin
  acountLength:=length(trim(edit6.Text));
  if not (acountLength>=3) and (acountLength<=15) then
     begin
       application.MessageBox('用户帐号的长度必须介于3~15个之间!','错误',MB_OK+MB_ICONSTOP);
       edit6.SetFocus;  //输入焦点(光标)定位到编辑框中,等待再次输入
     end;
end;

procedure TuserForm.Edit3Exit(Sender: TObject);
var
  passwordLength:integer;
begin
  passwordLength:=length(trim(edit3.Text));
  if not (passwordLength>=3)and (passwordLength<=8) then
     begin
       application.MessageBox('用户密码的长度必须介于3~8个之间!','错误',MB_OK+MB_ICONSTOP);
       edit3.SetFocus;  //输入焦点(光标)定位到编辑框中,等待再次输入
     end;
end;

procedure TuserForm.sb2Click(Sender: TObject);
begin
  addormodify:=2;//“修改”按钮按下
  //不需要初始化输入控件
  {edit1.Text:='';
  edit2.Text:='';
  edit3.Text:='';
  edit4.Text:='';
  edit6.Text:='';
  checkbox1.Checked:=false;}
  //关闭“新增”,“修改”,“删除”按钮;
  sb1.Enabled:=false;
  sb2.Enabled:=false;
  sb3.Enabled:=false;
 //打开”保存“,”取消“ ------------------
  sb4.Enabled:=true;
  sb5.Enabled:=true;
end;

procedure TuserForm.sb5Click(Sender: TObject);
begin
  //恢复“新增”,“修改”,“删除””保存“,”取消“按钮原来的状态;
  sb1.Enabled:=true;
  sb2.Enabled:=true;
  sb3.Enabled:=true;
  sb4.Enabled:=false;
  sb5.Enabled:=false;
end;

procedure TuserForm.sb3Click(Sender: TObject);

begin
   //UI control
   sb3.Enabled:=false;

   if listview1.Selected=nil then  //判断用户是否选中记录,没有选中记录而执行下面的删除操作是没有意义的;
      begin
        application.MessageBox('请首先选择要删除的用户记录!','错误',MB_Ok+MB_ICONSTOP);
        exit;
      end;
   if application.messagebox('要删除这些记录吗?','删除记录',MB_OKCANCEL+MB_ICONWARNING)=IDOK then
      begin
        //为了使得users表与u-a表中的数据保持一致
        //要删除users表中的记录必须先删除与之关联的u-a表中对应的记录
        //判断是否存在该情况
        ADOQuery1.sql.Clear;
        ADOQuery1.SQL.add('select count(userid) from users where userid='''+trim(listview1.Selected.Caption)+'''');
        ADOQuery1.open;
        if ADOQuery1.Fields[0].AsInteger>0 then
           begin
             application.MessageBox('该用户已分配了权限,要先删除该用户对应的权限才能删除该该用户的信息!','错误',MB_Ok+MB_ICONSTOP);
             exit;
           end;
        try
          //不存在以上提到的情况,可以删除,更新数据库
          ADOQuery1.sql.Clear;
          ADOQuery1.SQL.add(' delete from users where userid='''+trim(listview1.Selected.Caption)+''' ');
          ADOQuery1.ExecSQL;
        except
          application.MessageBox('更新数据库失败,请检查后再试!','错误',MB_OK+MB_ICONSTOP);
          exit;
        end;
        //成功删除数据库的记录后,还要删除listview上相应的数据,以使一致
        listview1.Selected.Delete;
      end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -