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

📄 addkcapunit.~pas

📁 delphi6.0版本的主要用于学样、网吧的计费系统的源码
💻 ~PAS
字号:
unit AddkcapUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, CheckLst;

type
  TAddkcapForm = class(TForm)
    Label1: TLabel;
    DateTimePicker1: TDateTimePicker;
    RadioGroup1: TRadioGroup;
    Label2: TLabel;
    ComboBox1: TComboBox;
    Label3: TLabel;
    ComboBox2: TComboBox;
    Label4: TLabel;
    Edit1: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    DateTimePicker2: TDateTimePicker;
    DateTimePicker3: TDateTimePicker;
    CheckListBox1: TCheckListBox;
    Label8: TLabel;
    Button1: TButton;
    Label9: TLabel;
    ComboBox3: TComboBox;
    Label10: TLabel;
    ComboBox4: TComboBox;
    Label11: TLabel;
    ComboBox5: TComboBox;
    Button2: TButton;
    Button3: TButton;
    ComboBox6: TComboBox;
    procedure RadioGroup1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure DateTimePicker1Change(Sender: TObject);
  private
    { Private declarations }
    //教师ID
    teachidArray : Array of integer;
    //班级id
    bjidArray : array of integer;
    //收费类型
    sfkindArray : Array of integer;
    //机房编号
    jfnumArray : array of string;
    termbeginDate : Tdatetime;
    weekcount : integer;

    //增加单个安排
    function addoneap(usejf:string):boolean;
    //增加多个安排
    function addmoreap(usejf:string):boolean;
    //求出指定日期第几周的日期
    function GetDateByWeekNo(date : TDate;weekno,sq : integer):Tdate;
    //求某星期的第一天
    function GetFirstDayofWeek(date : Tdate):Tdate;

  public
    { Public declarations }
    kcname : string;
    
  end;

var
  AddkcapForm: TAddkcapForm;

implementation

uses  ZLB, datamodule,StrUtils,DateUtils, KCGL;

{$R *.dfm}

procedure TAddkcapForm.RadioGroup1Click(Sender: TObject);
begin
   datetimepicker1.Enabled := radiogroup1.ItemIndex = 0;
   combobox1.Enabled := radiogroup1.ItemIndex = 1;
   combobox2.Enabled := radiogroup1.ItemIndex = 1;
   edit1.Enabled := radiogroup1.ItemIndex = 1;
   button1.Enabled := radiogroup1.ItemIndex = 1;
end;

procedure TAddkcapForm.FormShow(Sender: TObject);
var
  i : integer;
begin
  datetimepicker1.Date := now();
  combobox6.Clear;
  edit1.Clear;
  combobox3.Clear;
  combobox4.Clear;
  combobox5.Clear;
  CheckListBox1.Clear;
  RadioGroup1Click(sender);
  with dmfm.ADOQuery1 do
  begin
      close;
      sql.Text := 'select * from Tkc';
      open;
      setlength(teachidArray,recordcount);
      i := 0;
      while not eof do
      begin
         combobox6.Items.Add(fieldbyname('Fname').asstring);
         next;
      end;
      combobox6.ItemIndex := combobox6.Items.IndexOf(kcname);

      //收费方式
      close;
      sql.Text := 'select * from fltb';
      open;
      setlength(sfkindArray,recordcount);
      i := 0;
      while not eof do
      begin
          sfkindArray[i] := fieldbyname('swkind').AsInteger;
          combobox3.Items.Add(fieldbyname('name').AsString);
          inc(i);
          next;
      end;
      combobox3.ItemIndex := 0;

      //教师
      close;
      sql.Text := 'select * from Tteach';
      open;
      setlength(teachidArray,recordcount);
      i := 0;
      while not eof do
      begin
         teachidArray[i] := fieldbyname('Fnum').AsInteger;
         combobox4.Items.Add(fieldbyname('Fname').asstring);
         inc(i);
         next;
      end;

      //班级
      close;
      sql.Text := 'select * from TBJ';
      open;
      setlength(bjidArray,recordcount);
      i := 0;
      while not eof do
      begin
         bjidArray[i] := fieldbyname('id').AsInteger;
         combobox5.Items.Add(fieldbyname('Fname').asstring);
         inc(i);
         next;
      end;

      //机房
       close;
       sql.Text := 'select * from TjfInfo';
       open;
       setlength(jfnumArray,recordcount);
       i := 0;
       while not eof do
       begin
          jfnumArray[i] := fieldbyname('Fnum').AsString;
          checkListbox1.Items.Add(fieldbyname('Fnum').AsString + '  ' + fieldbyname('Fname').AsString);
          inc(i);
          next;
       end;

       //学期
       close;
       sql.Text := 'select * from txq where fname = (select Fvalue from tconf where fvar = ''CURRPERIOD'')';
       open;
       if eof then
       begin
          messagebox(handle,'请设置当前所在学期!','提示',$30);
          exit;
       end;
       termbeginDate := fieldbyname('FbeginDate').AsDateTime;
       weekcount := fieldbyname('FZS').AsInteger;
       combobox1.ItemIndex := 2;
       ComboBox1Change(sender);

  end;
end;

procedure TAddkcapForm.ComboBox1Change(Sender: TObject);
var
  i :integer;
  str : string;
begin
   edit1.Clear;
   if combobox1.ItemIndex = 0 then
   begin
     for i := 1 to weekcount do
     begin
         if i mod 2  <> 0 then
           str := str + format('%d,',[i]);
     end;
   end;
   if combobox1.ItemIndex = 1 then
   begin
     for i := 1 to weekcount do
     begin
         if i mod 2  = 0 then
           str := str + format('%d,',[i]);
     end;
   end;
   if combobox1.ItemIndex = 2 then
   begin
     for i := 1 to weekcount do
        str := str + format('%d,',[i]);
   end;
   str := copy(str,1,length(str)-1);
   edit1.Text := str;
end;

procedure TAddkcapForm.Button2Click(Sender: TObject);
var
   i,count  : integer;
   usejf : string;
begin
   if combobox6.Text = '' then
   begin
      Messagebox(handle,'课选择课程名!','提示',$30);
      exit;
   end;
   if combobox3.ItemIndex = -1 then
   begin
      Messagebox(handle,'请选择收费方式!','提示',$30);
      exit;
   end;
   if combobox4.ItemIndex = -1 then
   begin
      Messagebox(handle,'请选择教师!','提示',$30);
      exit;
   end;
   if combobox5.ItemIndex = -1 then
   begin
      Messagebox(handle,'请选择班级!','提示',$30);
      exit;
   end;
   count := 0;
   usejf := '';
   for i := 0 to checklistbox1.Count-1 do
     if checklistbox1.Checked[i] then
     begin
       inc(count);
       usejf := usejf + format('''%s'',',[jfnumArray[i]]);
     end;
   usejf := ansireplacestr(usejf,'''','''''');
   usejf := copy(usejf,1,length(usejf)-1);
   if count = 0 then
   begin
      Messagebox(handle,'请选择使用的机房!','提示',$30);
      exit;
   end;
   if RadioGroup1.ItemIndex = 0 then
   begin
     if not addoneap(usejf) then
        exit;
   end
   else
   begin
     if not addmoreap(usejf) then
        exit;
   end;
   KCGLForm.formshow(sender);
end;

procedure TAddkcapForm.Button1Click(Sender: TObject);
begin
   zlbform.InputStr := edit1.Text;
   if ZLBform.showModal = mrok then
      edit1.Text := zlbform.ReturnStr;
end;


//增加单个安排
function TAddkcapForm.addoneap(usejf:string):boolean;
var
  str : string;
  num : integer;
  itype : integer;
  date,begintime,endtime : string;
  sflx,jsNum,bjid : integer;
begin
   with dmfm.ADOQuery1 do
   begin
     close;
     sql.Text := 'select isnull(max(fid),0) + 1 from Tkcap';
     open;
     num := fields[0].AsInteger;
     itype := 0;
     //date1 := FormatDateTime('yyyy-mm-dd',datetimepicker1.Date);
     date := datetostr(datetimepicker1.Date);
     sflx := sfkindArray[combobox3.ItemIndex];
     jsnum := teachidArray[combobox4.ItemIndex];
     bjid := bjidarray[combobox5.itemindex];
     begintime := FormatDateTime('yyyy-mm-dd ',datetimepicker1.Date) + FormatDateTime('hh:nn:ss',datetimepicker2.Time);
     endtime := FormatDateTime('yyyy-mm-dd ',datetimepicker1.Date) + FormatDateTime('hh:nn:ss',datetimepicker3.Time);
     str := format('insert Tkcap (Fnum,FkcName,Ftype,Fdate,Fxq,Fsflx,FjsNum,Fbjid,FjfNum,FbeginTime,FendTime) values '#10 +
                   '  (''%.4d'',''%s'',%d,''%s'',%d,%d,%d,%d,''%s'',''%s'',''%s'')',
                   [num,combobox6.text,itype,date,combobox2.itemindex,sflx,jsnum,bjid,usejf,begintime,endtime]);
     close;
     sql.Clear;
     sql.Add(str);
     str := format('insert TkcapMx (FkcNum,FkcName,Fbegintime,Fendtime,Fsflx,FjsNum,Fbjid,FjfNum) values '#10 +
                   '  (''%.4d'',''%s'',''%s'',''%s'',%d,%d,%d,''%s'')',
                   [num,combobox6.text,begintime,endtime,sflx,jsnum,bjid,usejf]);
     sql.Add(str);
     dmfm.ADOConnection.BeginTrans;
     try
        execsql;
        dmfm.ADOConnection.CommitTrans;
     except
      on e : exception do
      begin
         messagebox(handle,pchar('保存时出错!'#10'错误信息:' + e.Message),'提示',$10);
         dmfm.ADOConnection.RollbackTrans;
         exit;
      end;
     end;
   end;
   result := true;
end;

//增加多个安排
function TAddkcapForm.addmoreap(usejf:string):boolean;
var
  str : string;
  num : integer;
  itype : integer;
  begintime,endtime : string;
  date : Tdate;
  sflx,jsNum,bjid : integer;
  weekList : TstringList;
  i : integer;
begin
   if edit1.Text = '' then
   begin
      Messagebox(handle,'请选择周次!','提示',$30);
      exit;
    end;

   with dmfm.ADOQuery1 do
   begin
     weekList := TstringList.Create;
     weeklist.Text := ansireplacestr(edit1.Text,',',#10);
     close;
     sql.Text := 'select isnull(max(fid),0) + 1 from Tkcap';
     open;
     num := fields[0].AsInteger;
     itype := 1;
     //收费方式
     sflx := sfkindArray[combobox3.ItemIndex];
     jsnum := teachidArray[combobox4.ItemIndex];
     bjid := bjidarray[combobox5.itemindex];
     begintime := FormatDateTime('yyyy-mm-dd ',datetimepicker1.Date) + FormatDateTime('hh:nn:ss',datetimepicker2.Time);
     endtime := FormatDateTime('yyyy-mm-dd ',datetimepicker1.Date) + FormatDateTime('hh:nn:ss',datetimepicker3.Time);
     str := format('insert Tkcap (Fnum,FkcName,Ftype,Ffw,Fxq,Fzc,Fsflx,FjsNum,Fbjid,FjfNum,FbeginTime,FendTime) values '#10 +
                   '  (''%.4d'',''%s'',%d,%d,%d,''%s'',%d,%d,%d,''%s'',''%s'',''%s'')',
                   [num,combobox6.text,itype,combobox1.itemindex,combobox2.itemindex,edit1.text,
                   sflx,jsnum,bjid,usejf,begintime,endtime]);
     close;
     sql.Clear;
     sql.Add(str);
     for i := 0 to weeklist.Count-1 do
     begin
        date := GetDateByWeekNo(termbeginDate,strtoint(weekList.strings[i]),combobox2.ItemIndex);
        begintime := formatdatetime('yyyy-mm-dd ',date) + formatdatetime('hh:nn:ss',DateTimePicker2.DateTime);
        endtime := formatdatetime('yyyy-mm-dd ',date) + formatdatetime('hh:nn:ss',DateTimePicker3.DateTime);
        str := format('insert TkcapMx (FkcNum,FkcName,Fbegintime,Fendtime,Fsflx,FjsNum,Fbjid,FjfNum) values '#10 +
                   '  (''%.4d'',''%s'',''%s'',''%s'',%d,%d,%d,''%s'')',
                   [num,combobox6.text,begintime,endtime,sflx,jsnum,bjid,usejf]);
        sql.add(str);
     end;
     dmfm.ADOConnection.BeginTrans;
     try
        execsql;
        dmfm.ADOConnection.CommitTrans;
     except
      on e : exception do
      begin
         messagebox(handle,pchar('保存时出错!'#10'错误信息:' + e.Message),'提示',$10);
         dmfm.ADOConnection.RollbackTrans;
         weekList.Free;
         exit;
      end;
     end;
   end;
   result := true;
   weekList.Free;
end;
procedure TAddkcapForm.Button3Click(Sender: TObject);
begin
  close;
end;

//求出指定日期第几周的日期
function TAddkcapForm.GetDateByWeekNo(date : TDate;weekno,sq : integer):Tdate;
var
  i : integer;
  no : integer;
  tmpdate1,tmpdate2 : Tdate;
begin
   tmpdate1 := incweek(date,weekno-1);
   tmpdate2 := GetFirstDayofWeek(tmpdate1);
   tmpdate2 := tmpdate2 + sq;
   result := tmpdate2;
end;

//求某星期的第一天
function TAddkcapForm.GetFirstDayofWeek(date : Tdate):Tdate;
var
  tmpdate1 : Tdate;
begin
  tmpdate1 := date;
  while weekof(tmpdate1) = weekof(date) do
     tmpdate1 := tmpdate1 - 1;
  result := tmpdate1;
end;


procedure TAddkcapForm.DateTimePicker1Change(Sender: TObject);
begin
  ComboBox2.ItemIndex := dayofweek(DateTimePicker1.DateTime)-1;
end;

end.

⌨️ 快捷键说明

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