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

📄 frmmain.pas

📁 花了两个多星期写的考勤系统
💻 PAS
字号:
unit frmmain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, Menus, ComCtrls, ExtCtrls;

type
  Tmainfrm = class(TForm)
    MainMenu1: TMainMenu;
    da1: TMenuItem;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    ComboBox3: TComboBox;
    DBGrid1: TDBGrid;
    Starbtn: TButton;
    ListView1: TListView;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    addbtn: TButton;
    subbtb: TButton;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    StatusBar1: TStatusBar;
    N8: TMenuItem;
    N9: TMenuItem;
    Timer1: TTimer;
    procedure FormShow(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure StarbtnClick(Sender: TObject);
    procedure ListView1Click(Sender: TObject);
    procedure addbtnClick(Sender: TObject);
    procedure subbtbClick(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure ListView1ColumnClick(Sender: TObject; Column: TListColumn);
  private
    { Private declarations }
  public

    { Public declarations }
  end;

var
  mainfrm: Tmainfrm;

implementation
uses
 denglu, dmunit, DB, Math,frmadd, shujuku;

{$R *.dfm}

procedure Tmainfrm.FormShow(Sender: TObject);
var
str1:String;
 i:Integer;
begin
frmdenglu :=  tfrmdenglu.Create(self);
frmdenglu.ShowModal;
frmdenglu.Free ;

/////////////-------------初始化窗口
StatusBar1.Panels[1].Text:=dm.opname;
StatusBar1.Panels[3].Text:=TimeToStr(Now);
StatusBar1.Panels[5].Text:=DateToStr(now);

 dm.ADOQuery1.SQL.Clear;
 dm.ADOQuery1.SQL.Add('select kemu1,kemu2,kemu3,kemu4,kemu5 from users where username='+QuotedStr(trim(dm.opzhanghao)));
 dm.ADOQuery1.Open;
// 读出此操作员所教科目
 for i:=1 to 5 do
 if dm.ADOQuery1.FieldByName('kemu'+inttostr(i)).AsString<>'' then
 begin
  str1:= dm.ADOQuery1.FieldByName('kemu'+inttostr(i)).AsString;
 ComboBox1.Items.Add(str1);

  end;

end;

procedure Tmainfrm.ComboBox1Change(Sender: TObject);
var   /////读出选中科目中包含的班级
 i:Integer;
 str1,str2:string;
begin
 ComboBox2.Items.Clear;
 dm.ADOQuery1.SQL.Clear;
 dm.ADOQuery1.SQL.Add('select * from StuInfo where '+trim(ComboBox1.text)+'>=0');
 dm.ADOQuery1.Open;
  for i:=0 to dm.ADOQuery1.RecordCount-1 do
 //if dm.ADOQuery1.FieldByName(trim(ComboBox1.text)).AsInteger>=0 then
 begin
  str1:= dm.ADOQuery1.FieldByName('class').AsString;
  if str2<>str1 then
  ComboBox2.Items.Add(str1);
  str2:=str1;
  dm.ADOQuery1.Next;
 end;
end;

procedure Tmainfrm.StarbtnClick(Sender: TObject);
var
 i,j,k,t,h,q:Integer;
 strsql:string;

begin
   k:=0;
   q:=0;
   try
    begin
    ListView1.Clear;
    if ComboBox3.Text='全部' then
    begin
     dm.ADOQuery1.SQL.Clear;
     strsql:='select StuNO,StuName,'+trim(ComboBox1.text)+' from StuInfo where '+trim(ComboBox1.text)+'>=0 and class='+QuotedStr(trim(ComboBox2.text));
     dm.ADOQuery1.SQL.Add(strsql);
     dm.ADOQuery1.Open;

     for i:=0 to dm.ADOQuery1.RecordCount-1 do
      begin
       with ListView1.Items.Add do
        begin
         Caption:=dm.ADOQuery1.FieldByName('stuno').AsString;

         SubItems.Add(dm.ADOQuery1.FieldByName('stuname').AsString);
         SubItems.Add(dm.ADOQuery1.FieldByName(trim(ComboBox1.text)).AsString);
         dm.ADOQuery1.Next;
         end;
      end;
     end
     else   //随即产生被点学生
     begin
     dm.ADOQuery1.SQL.Clear;
     strsql:='select StuNO,StuName,'+trim(ComboBox1.text)+' from StuInfo where '+trim(ComboBox1.text)+'>=0 and class='+QuotedStr(trim(ComboBox2.text));
     dm.ADOQuery1.SQL.Add(strsql);
     dm.ADOQuery1.Open;
     //如果选择点名数大于总人数,则点名数等于ALL
     if dm.ADOQuery1.RecordCount< strtoint(ComboBox3.text) then
        begin
        t:= dm.ADOQuery1.RecordCount;
        ShowMessage('选择点名人数已经大于总人数');
      end
     else
      t:= strtoint(ComboBox3.text);
  // for  k:=0 to t-1 do
 while k<t do
      begin
       Randomize;
       j:=RandomRange(1,dm.ADOQuery1.RecordCount);
       for i:=0 to j do
         begin
            dm.ADOQuery1.Next;
           if dm.ADOQuery1.Eof then
            dm.ADOQuery1.First;
          end;

     // with ListView1.Items.Add do
      // begin
      if k=0 then
         begin
           k:=k+1;
           with ListView1.Items.Add do
           begin
           Caption:=dm.ADOQuery1.FieldByName('stuno').AsString;
           SubItems.Add(dm.ADOQuery1.FieldByName('stuname').AsString);
           SubItems.Add(dm.ADOQuery1.FieldByName(trim(ComboBox1.text)).AsString);
            end;
         end
      else
        begin
          for   h:=0 to ListView1.Items.Count-1 do
            begin
           if ListView1.Items[h].Caption =dm.ADOQuery1.FieldByName('stuno').AsString  then
              begin
               //k:=k-1 ;
              //t:=t-1;
              //Continue
              q:=0;
              break;
              // exit
              end
            else
            begin
            q:=1;
           //k:=k+1;
             //Caption:=dm.ADOQuery1.FieldByName('stuno').AsString;
             //SubItems.Add(dm.ADOQuery1.FieldByName('stuname').AsString);
             // SubItems.Add(dm.ADOQuery1.FieldByName(trim(ComboBox1.text)).AsString);
            end;

            end;
      //初始化 ListView1
      if q=1 then
        // begin
        // with  ListView1.Items.Add do
          begin
            k:=k+1;
             with ListView1.Items.Add do
             begin
               Caption:=dm.ADOQuery1.FieldByName('stuno').AsString;
               SubItems.Add(dm.ADOQuery1.FieldByName('stuname').AsString);
               SubItems.Add(dm.ADOQuery1.FieldByName(trim(ComboBox1.text)).AsString);
           end;
          end;

         end;


       end;
      //DBGrid1.SelectedRows.Delete;
      // DBGrid1.Columns[0].FieldName:=dm.ADOQuery1.FieldByName('stuno').AsString;
      // DBGrid1.Columns[1].FieldName:=dm.ADOQuery1.FieldByName('stuname').AsString;
     end;
        end;
   except
     ShowMessage('请确认已选择完整信息');
     end;
   end;



procedure Tmainfrm.ListView1Click(Sender: TObject);
begin
  edit1.Text:=ListView1.Selected.Caption;
  edit2.Text:=ListView1.Selected.SubItems.Strings[0];
  edit3.Text:=ListView1.Selected.SubItems.Strings[1];
end;

procedure Tmainfrm.addbtnClick(Sender: TObject);
begin     //旷课记录加1
 dm.ADOTable1.Close;
 dm.ADOTable1.TableName:='StuInfo';
  if not dm.AdoTable1.Active then dm.AdoTable1.Open ;
     if dm.adotable1.Locate('stuNO',ListView1.Selected.Caption,[loCaseInsensitive]) then
        begin

        dm.ADOTable1.Edit;

        dm.adotable1.FieldByName(trim(ComboBox1.text)).Value := inttostr(strtoint(ListView1.Selected.SubItems.Strings[1])+1) ;
        dm.ADOTable1.Post;
        Edit3.Text:=inttostr(strtoint(Edit3.Text)+1);
        dm.ADOQuery1.Requery;
        ListView1.Selected.SubItems.Strings[1]:=Edit3.Text;
        end
        else
        //ShowMessage('No match record to update!!');
end;

procedure Tmainfrm.subbtbClick(Sender: TObject);
begin     //旷课记录减1
  dm.ADOTable1.Close;
 dm.ADOTable1.TableName:='StuInfo';
  if not dm.AdoTable1.Active then dm.AdoTable1.Open ;
     if dm.adotable1.Locate('stuNO',ListView1.Selected.Caption,[loCaseInsensitive]) then
        begin
         if  strtoint(ListView1.Selected.SubItems.Strings[1])>0 then
            begin
               dm.ADOTable1.Edit;

               dm.adotable1.FieldByName(trim(ComboBox1.text)).Value := inttostr(strtoint(ListView1.Selected.SubItems.Strings[1])-1) ;
               dm.ADOTable1.Post;
               Edit3.Text:=inttostr(strtoint(Edit3.Text)-1);
               dm.ADOQuery1.Requery;
               ListView1.Selected.SubItems.Strings[1]:=Edit3.Text;
               end else
               ShowMessage('该生没有旷课记录!!')

        end
        else
        //ShowMessage('No match record to update!!');
end;

procedure Tmainfrm.N6Click(Sender: TObject);
begin
 frmaddjilu  :=  tfrmaddjilu.Create(application);
 frmaddjilu.Show;

end;

procedure Tmainfrm.N7Click(Sender: TObject);
begin
 frmaddjilu  :=  tfrmaddjilu.Create(application);
 frmaddjilu.Show;
end;

procedure Tmainfrm.N9Click(Sender: TObject);
begin
 form1  :=  tform1.Create(application);
 form1.Show;

end;

procedure Tmainfrm.Timer1Timer(Sender: TObject);
begin
StatusBar1.Panels[3].Text:=TimeToStr(Now);
StatusBar1.Panels[5].Text:=DateToStr(now);
end;

procedure Tmainfrm.N4Click(Sender: TObject);
begin
if Application.MessageBox('您要退出程序吗?','提示',MB_OKCANCEL+MB_ICONQUESTION)=mrOK then
   Application.Terminate;
end;

procedure Tmainfrm.ListView1ColumnClick(Sender: TObject;
  Column: TListColumn);
begin
try
except
end;

end;

end.

⌨️ 快捷键说明

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