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

📄 unit1.pas

📁 B/S结构的网上学生选课系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Unit1;

interface

uses
  SysUtils, Windows, Classes, HTTPApp, HTTPProd, DB, ADODB, DateUtils;

type
  TWebModule1 = class(TWebModule)
    PageMain: TPageProducer;
    PageFail: TPageProducer;
    PageLogin: TPageProducer;
    procedure WebModule1aiinitAction(Sender: TObject; Request: TWebRequest;
      Response: TWebResponse; var Handled: Boolean);
    procedure WebModule1aisubmitAction(Sender: TObject;
      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
    procedure WebModule1ailoginAction(Sender: TObject;
      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
    procedure PageLoginHTMLTag(Sender: TObject; Tag: TTag;
      const TagString: string; TagParams: TStrings;
      var ReplaceText: string);
    procedure PageMainHTMLTag(Sender: TObject; Tag: TTag;
      const TagString: string; TagParams: TStrings;
      var ReplaceText: string);
    procedure PageFailHTMLTag(Sender: TObject; Tag: TTag;
      const TagString: string; TagParams: TStrings;
      var ReplaceText: string);
    procedure WebModuleCreate(Sender: TObject);
    procedure WebModuleDestroy(Sender: TObject);
    procedure WebModuleAfterDispatch(Sender: TObject; Request: TWebRequest;
      Response: TWebResponse; var Handled: Boolean);
  private
    { Private declarations }
    ADOConnection1: TADOConnection;
    ADOQuery1, ADOQryTemp: TADOQuery;
    ADOStoredProc1: TADOStoredProc; //登录
    ADOStoredProc2: TADOStoredProc; //选课
    ADOStoredProc3: TADOStoredProc; //删除

    queryString: string;
    ScriptName: string;

    SubmitType: string;

    LoginSN: string;
    SdVerify: string;
    SdTotal: string;

    SdXH: string;
    SdXM: string;

    SdZyBH: string;
    SdZyMc: string;
    SdXB: string;
    SdNj: string;
    GongBi1, ZhuanBi1, ZhuanXuan1, RenXuan1: string;

    KcBH, KtH, KcMc: string;
    KcbhList: TStringList;
  public
    { Public declarations }
  end;

var
  WebModule1: TWebModule1;

implementation

{$R *.dfm}

procedure TWebModule1.WebModule1aiinitAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  SdPwd: string;
  aCookie: TStringList;
begin
  SdVerify := Request.ContentFields.Values['strVerify'];
  SdXH := Request.ContentFields.Values['strUser'];
  SdPwd := Request.ContentFields.Values['strPass'];

//判断学号
  queryString := 'select 学生姓名,学生性别,口令,年级,学生基本信息.专业编号,专业基本信息.院系编号,专业基本信息.专业名称,公共必修学分,专业必修学分,专业选修学分,任选学分 from 学生基本信息,专业基本信息 where 学生编号=''' + SdXH + ''' and 学生基本信息.专业编号=专业基本信息.专业编号';
  ADOQryTemp.Close;
  ADOQryTemp.SQL.Clear;
  ADOQryTemp.SQL.Add(queryString);
  ADOQryTemp.Open;
  if ADOQryTemp.Eof then
  begin
    Response.Content := '<HTML><BODY><p align="center"><b><font color="#FF0000" size="4">错误:学生编号不正确!</font></b></p><hr><p align="center"><a href="javascript:history.back()">返回</a></p></BODY></HTML>';
    Exit;
  end;

  SdXM := ADOQryTemp.FieldByName('学生姓名').AsString;
  if ADOQryTemp.FieldByName('学生性别').AsBoolean then SdXB := '1' else SdXB := '0';
  SdZyBH := ADOQryTemp.FieldByName('专业编号').AsString;
  SdZyMc := ADOQryTemp.FieldByName('专业名称').AsString;
  SdNj := ADOQryTemp.FieldByName('年级').AsString;
  GongBi1 := ADOQryTemp.FieldByName('公共必修学分').AsString;
  ZhuanBi1 := ADOQryTemp.FieldByName('专业必修学分').AsString;
  ZhuanXuan1 := ADOQryTemp.FieldByName('专业选修学分').AsString;
  RenXuan1 := ADOQryTemp.FieldByName('任选学分').AsString;

  if SdVerify = 'false' then
  begin
    SdVerify := 'true';
    SdXM := ADOQryTemp.FieldByName('学生姓名').AsString;

    queryString := 'select count(*) from 选课登记 where datediff(mi,登录时间,getdate())<30';
    ADOQryTemp.Close;
    ADOQryTemp.SQL.Clear;
    ADOQryTemp.SQL.Add(queryString);
    ADOQryTemp.Open;
    SdTotal := ADOQryTemp.Fields[0].AsString;

    Response.Content := PageLogin.Content;
    Exit;
  end;

  if SdPwd <> Trim(ADOQryTemp.FieldByName('口令').AsString) then
  begin
    Response.Content := '<HTML><BODY><p align="center"><b><font color="#FF0000" size="4">错误:密码不正确,请重新输入!</font></b></p><hr><p align="center"><a href="javascript:history.back()">返回</a></p></BODY></HTML>';
    Exit;
  end;

//选课资格审核
  with ADOStoredProc1 do
  begin
    Parameters.ParamByName('@学生编号').Value := SdXH;
    ExecProc;
    LoginSN := Parameters.ParamByName('@选课ID').Value;
  end;

//设置Cookie
  aCookie := TStringList.Create;
  aCookie.Add('LoginSN="' + LoginSN + '"');
  Response.SetCookieField(aCookie, Request.Host, '/', IncMinute(Now, 30), False);
  aCookie.Free;

  KcBH := '';
  KtH := '';
  KcMc := '';

  ADOQuery1.Close;
  ADOQuery1.Parameters[0].Value := SdXH;
  ADOQuery1.Open;

  Response.Content := PageMain.Content;
  Handled := true;
end;

procedure TWebModule1.WebModule1aisubmitAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  i: integer;
  aCookie: TStringList;
begin
  SubmitType := Request.ContentFields.Values['strSubmitType'];
  LoginSN := Request.ContentFields.Values['LoginSN'];


  SdXH := Request.ContentFields.Values['strSdXH'];
  SdXM := Request.ContentFields.Values['strSdXM'];
  SdZyBH := Request.ContentFields.Values['strSdZyBH'];
  SdZyMc := Request.ContentFields.Values['strSdZyMc'];
  SdXb := Request.ContentFields.Values['strSdXb'];
  SdNj := Request.ContentFields.Values['strSdNj'];
  GongBi1 := Request.ContentFields.Values['strGongBi1'];
  ZhuanBi1 := Request.ContentFields.Values['strZhuanBi1'];
  ZhuanXuan1 := Request.ContentFields.Values['strZhuanXuan1'];
  RenXuan1 := Request.ContentFields.Values['strRenXuan1'];

  KcBH := Request.ContentFields.Values['strKcBH'];
  KtH := Request.ContentFields.Values['strKtH'];
  KcMc := Request.ContentFields.Values['strKcMc'];
  KcbhList := TStringList.Create;
  KcbhList.Delimiter := ',';
  KcbhList.DelimitedText := Request.ContentFields.Values['strDelnoteSN'];

  if SubmitType = 'logout' then
  begin
    queryString := 'delete 选课登记 where SN=''' + LoginSN + '''';
    ADOQryTemp.Close;
    ADOQryTemp.SQL.Clear;
    ADOQryTemp.SQL.Add(queryString);
    ADOQryTemp.ExecSQL;

    aCookie := TStringList.Create;
    aCookie.Add('LoginSN"' + LoginSN + '"');
    Response.SetCookieField(aCookie, Request.Host, '/', (Now - 1), False);
    aCookie.Free;

    SdVerify := '';
    SdXH := '';
    SdXM := '';

    queryString := 'select count(*) from 选课登记 where datediff(mi,登录时间,getdate())<30';
    ADOQryTemp.Close;
    ADOQryTemp.SQL.Clear;
    ADOQryTemp.SQL.Add(queryString);
    ADOQryTemp.Open;
    SdTotal := ADOQryTemp.Fields[0].AsString;

    Response.Content := PageLogin.Content;
    Exit;
  end;

  if Request.CookieFields.Values['LoginSN'] <> '"' + LoginSN + '"' then
  begin
    Response.Content := '<HTML><BODY><p align="center"><b><font color="#FF0000" size="4">错误:你未登录或超时,请重新登录</font></b></p><hr><p align="center"><a href="' + ScriptName + '/login">返回</a></p></BODY></HTML>';
    Exit;
  end;

  if SubmitType = 'getcx' then
  begin
    queryString := 'select * from 学生重修课程 where 学生编号=''' + SdXH + '''';
    ADOQryTemp.Close;
    ADOQryTemp.SQL.Clear;
    ADOQryTemp.SQL.Add(queryString);
    ADOQryTemp.Open;

    Response.Content := PageFail.Content;
    Exit;
  end
  else if SubmitType = 'getkc' then
  begin
    queryString := 'select 课程名称 from 选课手册 where 课程编号=''' + KcBH + '''';

    ADOQryTemp.Close;
    ADOQryTemp.SQL.Clear;
    ADOQryTemp.SQL.Add(queryString);
    ADOQryTemp.Open;
    if ADOQryTemp.IsEmpty then
    begin
      Response.Content := '<HTML><BODY><p align="center"><b><font color="#FF0000" size="4">错误:本学期课程<' + KcBH + '>不存在,请检查并重新输入</font></b></p><hr><p align="center"><a href="javascript:history.back()">返回</a></p></BODY></HTML>';
      Exit;
    end;

    KtH := '';
    KcMc := ADOQryTemp.FieldByName('课程名称').AsString;

    ADOQuery1.Close;
    ADOQuery1.Parameters[0].Value := SdXH;
    ADOQuery1.Open;

    Response.Content := PageMain.Content;
    Handled := true;
  end
  else if SubmitType = 'getweek' then
  begin
    ADOQuery1.Close;
    ADOQuery1.Parameters[0].Value := SdXH;
    ADOQuery1.Open;

    Response.Content := PageMain.Content;
    Handled := true;
  end
  else if SubmitType = 'add' then
  begin
    with ADOStoredProc2 do
    begin
      Parameters.ParamByName('@学生编号').Value := SdXH;
      Parameters.ParamByName('@课程编号').Value := KcBH;
      Parameters.ParamByName('@课堂号').Value := KtH;
      ExecProc;

      case Parameters.ParamByName('@返回码').Value of
        1:
          begin //重复选课
            Response.Content := '<HTML><BODY><p align="center"><b><font color="#FF0000" size="4">错误:课程<' + KcBH + '>已在本学期选修,请检查输入是否正确</font></b></p><hr><p align="center"><a href="javascript:history.back()">返回</a></p></BODY></HTML>';
            Exit;
          end;
        2:
          begin //课堂号不存在
            Response.Content := '<HTML><BODY><p align="center"><b><font color="#FF0000" size="4">错误:课堂号<' + KtH + '>不存在,请检查并重新输入</font></b></p><hr><p align="center"><a href="javascript:history.back()">返回</a></p></BODY></HTML>';
            Exit;
          end;
        3:
          begin //限选男生
            Response.Content := '<HTML><BODY><p align="center"><b><font color="#FF0000" size="4">错误:课程<' + KcBH + '>限选男生!</font></b></p><hr><p align="center"><a href="javascript:history.back()">返回</a></p></BODY></HTML>';
            Exit;
          end;
        4:
          begin //限选女生
            Response.Content := '<HTML><BODY><p align="center"><b><font color="#FF0000" size="4">错误:课程<' + KcBH + '>限选女生!</font></b></p><hr><p align="center"><a href="javascript:history.back()">返回</a></p></BODY></HTML>';
            Exit;
          end;
        5:
          begin //人数限制-改选
            Response.Content := '<HTML><BODY><p align="center"><b><font color="#FF0000" size="4">错误:课程<' + KcBH + '>第' + KtH + '课堂选课人数已满!</font></b></p><hr><p align="center"><a href="javascript:history.back()">返回</a></p></BODY></HTML>';
            Exit;
          end;
      end;
    end;

    SubmitType := '';
    KcBH := '';
    KtH := '';
    KcMc := '';

    ADOQuery1.Close;
    ADOQuery1.Parameters[0].Value := SdXH;
    ADOQuery1.Open;

    Response.Content := PageMain.Content;
    Handled := true;
  end else if SubmitType = 'del' then
  begin
    for i := 0 to KcbhList.Count - 1 do

⌨️ 快捷键说明

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