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

📄 main.pas

📁 学校短信息系统 采用华域科技的SzgmtSms 通讯模块
💻 PAS
字号:
unit MAIN;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus,
  StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls, StdActns,
  ActnList, ToolWin, ImgList, jpeg, DB, ADODB, SPComm;

type
  TMainForm = class(TForm)
    MainMenu1: TMainMenu;
    Help1: TMenuItem;
    HelpAboutItem: TMenuItem;
    OpenDialog: TOpenDialog;
    StatusBar: TStatusBar;
    ActionList1: TActionList;
    EditCut1: TEditCut;
    EditCopy1: TEditCopy;
    EditPaste1: TEditPaste;
    FileNew1: TAction;
    FileSave1: TAction;
    FileExit1: TAction;
    FileOpen1: TAction;
    FileSaveAs1: TAction;
    WindowCascade1: TWindowCascade;
    WindowTileHorizontal1: TWindowTileHorizontal;
    WindowArrangeAll1: TWindowArrange;
    WindowMinimizeAll1: TWindowMinimizeAll;
    HelpAbout1: TAction;
    FileClose1: TWindowClose;
    WindowTileVertical1: TWindowTileVertical;
    ToolBar2: TToolBar;
    ToolButton3: TToolButton;
    ToolButton7: TToolButton;
    ImageList1: TImageList;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Image7: TImage;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    ComboBox1: TComboBox;
    Button1: TButton;
    Button2: TButton;
    ListBox1: TListBox;
    ListBox2: TListBox;
    Label3: TLabel;
    Edit1: TEdit;
    Label4: TLabel;
    Edit2: TEdit;
    ADOConnection1: TADOConnection;
    Label5: TLabel;
    Comm1: TComm;
    ADOCommand1: TADOCommand;
    ADOQuery1: TADOQuery;
    ADOCommand2: TADOCommand;
    ADOQuery2: TADOQuery;
    ADOQuery3: TADOQuery;
    ADOCommand3: TADOCommand;
    Label6: TLabel;
    ComboBox2: TComboBox;
    memo1: TMemo;
    dfg1: TMenuItem;
    N11: TMenuItem;

    procedure HelpAbout1Execute(Sender: TObject);
    procedure FileExit1Execute(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure Image3Click(Sender: TObject);
    procedure Image4Click(Sender: TObject);
    procedure Image5Click(Sender: TObject);
    procedure Image6Click(Sender: TObject);
    procedure Image7Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Comm1ReceiveError(Sender: TObject; EventMask: Cardinal);
    procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
      BufferLength: Word);
  private
    { Private declarations }
  //function MyThreadFunc(P:pointer):Longint;stdcall;
  public
    { Public declarations }
   msg_com:integer;
  end;

var
  MainForm: TMainForm;
  card_id:string;

  send_mobile_no:pchar;
  receive_msg_content:pchar;
  receive_msg_length:integer;
  mobile:string;

implementation

{$R *.dfm}

uses CHILDWIN, about, school,unit1,unit2,unit3,unit4,unit5,unit6,unit7,unit8,unit9,
  Unit10,unit11;




procedure TMainForm.HelpAbout1Execute(Sender: TObject);
begin
  AboutBox.ShowModal;

end;

procedure TMainForm.FileExit1Execute(Sender: TObject);
begin
  Close;
end;


procedure TMainForm.N2Click(Sender: TObject);
begin
school_info.Visible:=true;
end;


procedure TMainForm.N3Click(Sender: TObject);
begin
class_info.Visible:=true;
end;

procedure TMainForm.Image1Click(Sender: TObject);
begin
school_info.Visible:=true;
end;

procedure TMainForm.N4Click(Sender: TObject);
begin
teacher.Visible:=true;
end;

procedure TMainForm.N5Click(Sender: TObject);
begin
student.Visible:=true;
end;

procedure TMainForm.N6Click(Sender: TObject);
begin
schedule.Visible:=true;
end;

procedure TMainForm.N8Click(Sender: TObject);
//var
//tf:TFormatSettings;
begin
(*adocommand3.CommandType:=cmdText;
adocommand3.CommandText:='delete * from student_absent_status';
adocommand3.Execute;
tf.LongDateFormat:='yyyy-mm-dd';
tf.LongTimeFormat:='hh:mm:ss';
tf.ListSeparator:=' ';
tf.TimeAMString:='';
tf.TimePMString:='';
showmessage(datetimetostr(date));
adocommand3.CommandText:='insert into student_absent_status select name,class,grade from student_info where card_id not in (select card_id from daily where time>=:dt)';
adocommand3.Parameters.parambyname('dt').Value:=datetimetostr(date)+' 0:00:02';
showmessage(adocommand3.CommandText);
adocommand3.Execute;  *)
form10.Visible:=true;
end;

procedure TMainForm.N10Click(Sender: TObject);
begin
_sendmsg.Visible:=true;
end;

procedure TMainForm.Image2Click(Sender: TObject);
begin
class_info.Visible:=true;
end;

procedure TMainForm.Image3Click(Sender: TObject);
begin
teacher.Visible:=true;
end;

procedure TMainForm.Image4Click(Sender: TObject);
begin
student.Visible:=true;
end;

procedure TMainForm.Image5Click(Sender: TObject);
begin
schedule.Visible:=true;
end;

procedure TMainForm.Image6Click(Sender: TObject);
begin
daily.Visible:=true;
end;

procedure TMainForm.Image7Click(Sender: TObject);
begin
_sendmsg.Visible:=true;
end;

procedure TMainForm.Button1Click(Sender: TObject);
begin
comm1.CommName:=combobox1.Text;
comm1.StartComm;
label5.Caption:=label5.Caption+'  已连接';
end;
(*
function MyThreadFunc(P:pointer):Longint;stdcall;
var
    mobile1:pchar;
    p1:string;
    p2:string;
    str1:pchar;
    str2:pchar;
    j:integer;
    k:integer;
    card_id1:string;
    id:integer;
    handle:hwnd;
begin
messagebox(Handle,'test',nil,MB_OK);
dialogs.showmessage('循环开始0');
p1:='您好!你的小孩于'+timetostr(time)+'进校门';
p2:='您好!你的小孩于'+timetostr(time)+'出校门';
str1:=pchar(p1);
str2:=pchar(p2);
mobile1:='0000';

dialogs.showmessage('循环开始1');
mainform.ADOQuery2.Close;
dialogs.showmessage('循环开始1.01');
mainform.ADOQuery2.sql.clear;
dialogs.showmessage('循环开始1.02');
mainform.ADOQuery2.sql.text:='select * from message';
dialogs.showmessage('循环开始1.03');
mainform.ADOQuery2.open;
dialogs.showmessage('循环开始2');

repeat
if not  mainform.ADOQuery2.Eof then
begin
dialogs.showmessage('循环开始2.1');
id:=mainform.ADOQuery2.fieldbyname('id').AsInteger;
mobile1:=pchar(mainform.ADOQuery2.fieldbyname('mobile').AsString);
card_id1:=mainform.ADOQuery2.fieldbyname('card_id').AsString;
dialogs.showmessage('循环开始3 '+inttostr(id));
mainform.adocommand3.CommandType:=cmdtext;
dialogs.showmessage('循环开始3.000');
mainform.adocommand3.CommandText:='delete message where card_id=:card_id';
dialogs.showmessage('循环开始3.001');
mainform.adocommand3.Parameters.ParamByName('card_id').Value:=card_id1;
dialogs.showmessage('循环开始3.01');
mainform.adocommand3.Execute;
dialogs.showmessage('循环开始3.02');
 with mainform.ADOQuery3 do
    begin
  dialogs.showmessage('循环开始4');
         close;
         sql.text:='select num from status where card_id='+quotedstr(card_id1)+'and day='+datetostr(date);
         open;
  dialogs.showmessage('循环开始5');
         k:=fieldbyname('num').AsInteger;
         if (k mod 2) <> 0 then
         begin
         j:=SendSms(msg_com,mobile1,str1,length(str1));
  dialogs.showmessage('循环开始6');
         if j<>0 then
         showmessage(mobile+' send error! with error code:'+inttostr(j));
  dialogs.showmessage('循环开始7');
         end
         else
         j:=SendSms(msg_com,mobile1,str2,length(str2));
  dialogs.showmessage('循环开始8');
         if j<>0 then
         showmessage(mobile+' send error! with error code:'+inttostr(j));
         sql.clear;
         sql.text:='delete status where mobile='+quotedstr(mobile1);
         ExecSQL;
  dialogs.showmessage('循环开始9');
      end;
end;
mainform.ADOQuery2.Next;
sleep(1000);
until 0=1;
result:= 1;
end;
*)

procedure TMainForm.Button2Click(Sender: TObject);
var
 i:integer;
 //j:integer;
 //p2:string;
 //str2:pchar;
 sms:Tsendmessage;
 //myth:testth;
 //mobile1:pchar;
 // hThread:Thandle;//定义一个句柄
 // ThreadID:DWord;
begin
msg_com:= strtoint(copy(combobox2.Text,4,4)) ;
i:=OpenCom(msg_com);
if i<>0 then
begin
label6.Caption:=label6.Caption+'  连接失败';
exit;
end
else
label6.Caption:=label6.Caption+'  连接成功';

showmessage('线程启动');
(*adocommand3.CommandText:='insert into message select card_id,mobile1 as mobile from student_info where name in (select name from student_absent_status where status='+quotedstr('cd')+' and operate_time='+quotedstr(datetostr(date)+'pm')+')';
adocommand3.Execute;

adocommand3.CommandText:='insert into student_absent_status select name,class,grade,'+quotedstr('wd')+' as status,'+quotedstr(datetostr(date)+'pm')+' as operate_time from student_info where card_id in (select card_id from daily where time between :t1 and :t2)';
adocommand3.Parameters.ParamByName('t1').Value:=datetostr(date)+' 0:00:01';
adocommand3.Parameters.ParamByName('t2').Value:=datetostr(date)+' 23:00:04';
adocommand3.Execute;
p2:='您好!你的小孩于'+timetostr(time)+'出校门';
str2:=pchar(p2);
mobile1:='13825294543';
j:=SendSms(mainform.msg_com,mobile1,str2,length(str2));
if(j<>0) then
showmessage(mobile1+' send error! with error code:'+inttostr(j)+'str2='+str2);
myth:=testth.Create(false);
showmessage('循环开始10.1');  *)
sms:=Tsendmessage.create;
sms.Resume;
//sendshortmessage.Execute;
//showmessage('循环开始11');
 //form8.Show;
end;
              
procedure TMainForm.Comm1ReceiveError(Sender: TObject;
  EventMask: Cardinal);
begin
showmessage('receive data error!');
end;

procedure TMainForm.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);
type   ss=array[1..500]of char ;
       r1=_recordset;
            var
                   r2:r1;
                   str1:^ss;
                   i:integer;
                  begin
                   str1:=Buffer;
                   card_id:='';
                 for i:=2 to 11 do
                 card_id:=card_id+str1[i];
adocommand1.CommandType:=cmdtext;
adocommand1.CommandText:='insert into daily(card_id)values('+quotedstr(card_id)+') ';
adocommand1.Execute;
adocommand1.CommandText:='select * from status where card_id='+quotedstr(card_id);
r2:=adocommand1.Execute;
if r2.EOF then
begin
adocommand1.CommandText:='insert into status(card_id)values('+quotedstr(card_id)+') ';
adocommand1.Execute;
end
else
adocommand1.CommandText:='update status set num=num+1  where card_id='+quotedstr(card_id);
adocommand1.Execute;

    with adoquery1 do
    begin
         close;
         sql.text:='select * from student_info where card_id='+quotedstr(card_id);
            try
               open;
            except
               showmessage('database access error!');
         close;
    end;

listbox1.items.Add(adoquery1.fieldbyname('id').AsString+'  '+adoquery1.fieldbyname('name').AsString+'  '+adoquery1.fieldbyname('phone1').AsString+'  '+adoquery1.fieldbyname('mobile1').AsString);
                (*
                 adocommand2.CommandType:=cmdText;
                 adocommand2.CommandText:='insert into message(mobile,card_id)values(:mobile,:card_id)';
                 adocommand2.Parameters.ParamByName('mobile').Value := adoquery1.fieldbyname('mobile1').AsString;
                 adocommand2.Parameters.ParamByName('card_id').Value := card_id;
                 adocommand2.Execute;
                 *)
end;
end;

end.

⌨️ 快捷键说明

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