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

📄 student.pas

📁 一款比较好的学生信息管理系统DELPHI+ACCE
💻 PAS
字号:
unit student;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls,
  DBCtrls, Mask;

type
  Tfrmstudent = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    dbestudentID: TDBEdit;
    dbename: TDBEdit;
    dbebirthday: TDBEdit;
    dbenative: TDBEdit;
    dblcclassname: TDBLookupComboBox;
    dbrgsex: TDBRadioGroup;
    dbnstudent: TDBNavigator;
    BitBtn1: TBitBtn;
    dbgstudent: TDBGrid;
    tblstudent: TTable;
    tblclass: TTable;
    tblvalid: TTable;
    dsstudent: TDataSource;
    dsclass: TDataSource;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure dbnstudentClick(Sender: TObject; Button: TNavigateBtn);
    procedure tblstudentAfterScroll(DataSet: TDataSet);
    procedure tblstudentBeforePost(DataSet: TDataSet);
    procedure tblstudentBeforeDelete(DataSet: TDataSet);
  private
    procedure ToggleMode;
    function  HasChange(var str:string):boolean;
    function  HasReward(var str:string):boolean;
    function  Haspunish(var str:string):boolean;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmstudent: Tfrmstudent;
implementation

{$R *.dfm}

procedure Tfrmstudent.BitBtn1Click(Sender: TObject);
begin
close;
end;

procedure Tfrmstudent.FormClose(Sender: TObject; var Action: TCloseAction);
begin
tblstudent.Active:=false;
tblclass.Active:=false;
end;

procedure Tfrmstudent.FormShow(Sender: TObject);
begin
tblstudent.Active:=true;
tblclass.Active:=true;
end;
procedure Tfrmstudent.ToggleMode;
 procedure EnableInput(enabled:boolean);
     begin
     dbgstudent.Enabled:=not enabled;
     dbestudentID.Enabled:=enabled;
     dbename.Enabled:=enabled;
     dbrgsex.Enabled:=enabled;
     dblcclassname.Enabled:=enabled;
     dbebirthday.Enabled:=enabled;
     dbenative.Enabled:=enabled;
     end ;
 begin
    case tblstudent.State of
    dsinsert,dsedit:
    begin
     EnableInput(true);
    dbnstudent.VisibleButtons:=[nbpost,nbcancel];
    dbestudentID.SetFocus;
    end;
    else
    EnableInput(false);
    dbnstudent.VisibleButtons:=[nbfirst,nbprior,nbnext,nblast,nbinsert,nbdelete,
                nbedit,nbpost,nbcancel,nbrefresh];
    end;
 end;


procedure Tfrmstudent.dbnstudentClick(Sender: TObject;
  Button: TNavigateBtn);
begin
   ToggleMode;
end;

procedure Tfrmstudent.tblstudentAfterScroll(DataSet: TDataSet);
begin
ToggleMode;
end;

procedure Tfrmstudent.tblstudentBeforePost(DataSet: TDataSet);
  procedure checkfield(fieldname,fieldDesc:string;dbtext:TcustomEdit;notempty:boolean);
    begin
      dbtext.Text:=trim(dbtext.Text);
      dbtext.Text:=stringreplace(dbtext.Text,'''','',[rfreplaceall]);
      dbtext.Text:=stringreplace(dbtext.Text,'','',[rfreplaceall]);
      if notempty and (dbtext.Text='') then
        begin
        showmessagefmt('"%S"不能为空,请从新输入足够的信息!',[fieldDesc]);
        dbtext.SetFocus;
        abort;
        end
      else
      tblstudent.FieldByName(fieldname).AsString:=dbtext.Text;
      end;
  function   validID:boolean;
     var
     strmsg:string;
     begin
     result:=true;
     tblvalid.Active:=false;
     tblvalid.TableName:='student';
     tblvalid.Filter:='studentID='''+tblstudent['studentID']+'''';
     tblvalid.Filtered:=true;
     tblvalid.Active:=true;
     if not tblvalid.Eof then
      begin
       strmsg:=format('学生编号“%s”已经存在,请从新输入!'#13,[tblstudent['studentID']]);
       strmsg:=strmsg+format('学生编号:%S'#13,[tblstudent['studentID']]);
       strmsg:=strmsg+format('学生姓名:%S'#13,[tblstudent['studentname']]);
       strmsg:=strmsg+format('出生日期:%S'#13,[tblstudent['birthday']]);
       strmsg:=strmsg+format('籍贯:%S'#13,[tblstudent['native']]);
       showmessage(strmsg);
       dbestudentID.SetFocus;
       result:=true
       end;
       tblvalid.Active:=false;
      end;
   begin
       checkfield('studentID','学号',dbestudentId,true);
       checkfield('name','姓名',dbename,true);
       checkfield('birthday','出生日期',dbebirthday,true);
       checkfield('native','籍贯',dbenative,true);
       if dbrgsex.Value='' then
        begin
         showmessage('性别不能为空,请从新输入足够的信息');
         dbrgsex.SetFocus;
         abort;
         end;
        if dblcclassname.Text='' then
         begin
         showmessage('所属院系不能为空,请输入足够的信息');
         dblcclassname.SetFocus;
         abort;
         end;
     if dbestudentID.Modified and not validID then
      abort;
     end;
  function  Tfrmstudent.HasChange(var str:string):boolean;
    begin
    result:=false;
    tblvalid.Active:=false;
    tblvalid.TableName:='change';
    tblvalid.Filter:='studentID='''+tblstudent['studentID']+'''';
    tblvalid.Filtered:=true;
    tblvalid.Active:=true;
    if tblvalid.Eof then
    begin
     str:=format('不能要删除“%S”学生的资料吗?'#13,[tblstudent['studentID']]);
     str:=str+'此学生有转系记录';
     result:=true;
    end;
    tblvalid.Active:=false;
  end;
 function Tfrmstudent.HasReward(var str:string ) :boolean;
   begin
   result:=false;
   tblvalid.Active:=false;
   tblvalid.TableName:='reward';
   tblvalid.Filter:='studentID='''+tblstudent['studentID']+'''';
   tblvalid.Filtered:=true;
   tblvalid.Active:=true;
   if not tblvalid.Eof then
     begin
     str:=format('不能删除“%S”学生的资料,此学生有奖学金记录',[tblstudent['studentID']]);
     result:=true;
     end;
   tblvalid.Active:=false;
   end;
 function Tfrmstudent.Haspunish(var str:string):boolean;
  begin
  result:=false;
   tblvalid.Active:=false;
   tblvalid.TableName:='punish';
   tblvalid.Filter:='studentID='''+tblstudent['studentID']+'''';
   tblvalid.Filtered:=true;
   tblvalid.Active:=true;
   if not  tblvalid.Eof then
    begin
    str:=format('不能删除“%S”学生的资料,此学生有处罚记录',[tblstudent['studentID']]);
    result:=true;
    end;
    tblvalid.Active:=false;
  end;
  procedure Tfrmstudent.tblstudentBeforeDelete(DataSet: TDataSet);
   var strmsg:string;
   begin
    if Haschange(strmsg) then
      begin
         showmessage(strmsg);
         abort;
      end
     else if HasReward(strmsg) then
       begin
       showmessage(strmsg);
       abort;
       end
     else if HasPunish(strmsg) then
       begin
       showmessage(strmsg);
       abort;
       end;
     strmsg:=format('确定要删除“%S”的信息吗?该学生的相关信息如下:'#13,[tblstudent['name']]);
     strmsg:=strmsg+format('学号:%S'#13,[tblstudent['studentID']]);
     strmsg:=strmsg+format('姓名:%S'#13,[tblstudent['name']]);
     strmsg:=strmsg+format('性别:%S'#13,[tblstudent['sex']]);
     strmsg:=strmsg+format('所属班级:%S'#13,[tblclass['classname']]);
     strmsg:=strmsg+format('班主任:%S'#13,[tblclass['master']]);
     strmsg:=strmsg+format('联系电话:%S'#13,[tblclass['telephone']]);
     if messagedlg(strmsg,mtconfirmation,[mbyes,mbno],0)<>mryes then
     abort;
    end;



end.

⌨️ 快捷键说明

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