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

📄 mainunit.cpp

📁 EasyClass是针对某大学Web选课子系统一个自动的课程检索程序。EasyClass允许用户对希望关注的课程自动检测空位
💻 CPP
📖 第 1 页 / 共 2 页
字号:
     TrayIcon->Animate = 0;
     StatusBar->Panels->Items[0]->Text = "连接失败";
     CANGOON=0;
    }
    continue;
   }

   CODE->Text = HTTP->Body;
   if(CODE->Text.Length()!=171){
    //课程名
    BEGIN=25;LENGTH=CODE->Strings[4].AnsiPos("</font>")-BEGIN;
    CLASSNO=NUMBERS->Items->Item[i]->Caption;
    CLASSNAME=CODE->Strings[4].SubString(BEGIN,LENGTH);
    //限选
    BEGIN=CODE->Strings[4].AnsiPos("限制人数:")+10;LENGTH=CODE->Strings[4].AnsiPos("&nbsp;&nbsp;已选人数:")-BEGIN;
    LIMIT=CODE->Strings[4].SubString(BEGIN,LENGTH);
    //已选
    BEGIN=CODE->Strings[4].AnsiPos("已选人数:")+10;LENGTH=CODE->Strings[4].Length() -BEGIN+1;
    USED=CODE->Strings[4].SubString(BEGIN,LENGTH);
    EACH_TYPE=NUMBERS->Items->Item[i]->SubItems->Strings[0];
    EACH_STRING=NUMBERS->Items->Item[i]->SubItems->Strings[1];
   }
   else  //不存在的课程
   {
    CLASSNO=NUMBERS->Items->Item[i]->Caption;
    CLASSNAME="<不存在的课程>";
    LIMIT="0";
    USED="0";
    EACH_TYPE=NUMBERS->Items->Item[i]->SubItems->Strings[0];
    EACH_STRING=NUMBERS->Items->Item[i]->SubItems->Strings[1];
   }
   ClassView->Items->Item[i]->Caption=CLASSNO;
   ClassView->Items->Item[i]->SubItems->Strings[0]=CLASSNAME;
   ClassView->Items->Item[i]->SubItems->Strings[1]=LIMIT;
   ClassView->Items->Item[i]->SubItems->Strings[2]=USED;
   ClassView->Items->Item[i]->SubItems->Strings[4]=EACH_TYPE;
   ClassView->Items->Item[i]->SubItems->Strings[5]=EACH_STRING;

   if(LIMIT=="无限制"||StrToInt(USED)<StrToInt(LIMIT))
   {
    HaveSeat=1;
    ClassView->Items->Item[i]->SubItems->Strings[3]="有空位";
    if(UseRing){  //声音提示
     if(RingFile=="SYSTEMBEEP") MessageBeep(MB_ICONEXCLAMATION);
     else
     {
      if(FileExists(RingFile)) PlaySound(RingFile.c_str(),NULL,SND_ASYNC);
     }
    }
    if(UseAutoCopy){  //复制到粘帖板
     TEdit *tempedit = new TEdit(Handle);
     tempedit->Visible=0;
     tempedit->Text = CLASSNO;
     tempedit->SelectAll();
     tempedit->CopyToClipboard();
     delete tempedit;
    }
    if(UseAutoChoose->Checked)//自动选课
    {
     unsigned long TIME;unsigned long DELAY=1000;//延时
     CppWebBrowser->Navigate(Variant("about:blank"));
     while(CppWebBrowser->Busy) Application->ProcessMessages();
     TIME=GetTickCount();
     while(GetTickCount()-(long)TIME<DELAY) Application->ProcessMessages();
     CppWebBrowser->Navigate(Variant(LoginURL+"?stu_no="+Stu_no+"&passwd="+Passwd));
     while(CppWebBrowser->Busy) Application->ProcessMessages();
     TIME=GetTickCount();
     while(GetTickCount()-(long)TIME<DELAY) Application->ProcessMessages();
     CppWebBrowser->Navigate(Variant(ChooseURL+"?no_type="+CLASSNO+"+"+EACH_TYPE+"&action=选 课"));
     while(CppWebBrowser->Busy) Application->ProcessMessages();
     TIME=GetTickCount();
     while(GetTickCount()-(long)TIME<DELAY) Application->ProcessMessages();
     ClassView->Items->Item[i]->SubItems->Strings[3]="尝试选课";
    }
    StatusBar->Panels->Items[1]->Text = "发现课程 "+CLASSNAME+"("+CLASSNO+") 有空位,请尽快选课!";
   }
   else
   {
    if(ClassView->Items->Item[i]->SubItems->Strings[3]=="尝试选课")
     ClassView->Items->Item[i]->SubItems->Strings[3]="选课成功";
    else
     ClassView->Items->Item[i]->SubItems->Strings[3]="";
   }
  }//for


  if(HaveSeat)//若有位置
  {
   TrayIcon->Animate = 1;
  }
  else
  {
   TrayIcon->Animate = 0;
   TrayIcon->IconIndex=0;
   StatusBar->Panels->Items[1]->Text = "";
  }

  if(UseAutoChoose->Checked)//判断是否全部要选的课程都已经选择完毕
  {
   for(int i=0;i<ClassView->Items->Count;i++){
    if(ClassView->Items->Item[i]->SubItems->Strings[3]!="选课成功") AllFinished=0;
   }
   if(AllFinished) CANGOON=0;//已经全部选课成功 ,可以停止检索
  }

  if(!CANGOON)//停止检索
  {
   EndScanClick(Sender);
   return;   
  }
  Timer->Enabled = 1;
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::N4Click(TObject *Sender)
{//打开选项窗口
 OptionForm = new TOptionForm(Application->Owner);
 OptionForm->CH01->Checked = UseAutoCopy;
 if(RingFile=="SYSTEMBEEP") OptionForm->CH02_OP01->Checked = 1;
 else {OptionForm->CH02_OP02->Checked = 1;OptionForm->CH02_OP02_ADD->Text = RingFile;}
 OptionForm->CH02->Checked = UseRing;
 OptionForm->CH02Click(Sender);
 OptionForm->CH00->Checked = UseAutoRelink;
 OptionForm->HotKey->HotKey = Hotkey;
 OptionForm->ShowModal();
 delete OptionForm;
}
//---------------------------------------------------------------------------


void __fastcall TMainForm::N2Click(TObject *Sender)
{//退出程序
 Close();        
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NUMBERSSelectItem(TObject *Sender,
      TListItem *Item, bool Selected)
{//选中程序时,控制相应按钮是否有效
 if(Selected){
  ADDCLASS->Text = Item->Caption;
  TYPE->ItemIndex = TYPE->Items->IndexOf(Item->SubItems->Strings[0]);
  STRING->Text = Item->SubItems->Strings[1];
  ClassModi->Enabled = 1;
  ClassNoMenu->AutoPopup = 1;
 }
 else{
  ClassModi->Enabled = 0;
  ClassNoMenu->AutoPopup = 0;
 }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ClassModiClick(TObject *Sender)
{ //修改课程信息
 if(ADDCLASS->Text.Trim() == ""){Beep();return;}
 NUMBERS->Selected->Caption = ADDCLASS->Text.Trim();
 NUMBERS->Selected->SubItems->Strings[0] = TYPE->Text;
 NUMBERS->Selected->SubItems->Strings[1] = STRING->Text;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::RegHotkey()
{ //注册热键
 UnregisterHotKey(Handle,HotkeyID);
 if(Hotkey!=0){
  Word TheKey;
  TShiftState TheShiftState;
  ShortCutToKey(Hotkey, TheKey, TheShiftState);
  UINT UINTShiftState=0;
  if(TheShiftState.Contains(ssShift)) UINTShiftState+=MOD_SHIFT;
  if(TheShiftState.Contains(ssCtrl)) UINTShiftState+=MOD_CONTROL;
  if(TheShiftState.Contains(ssAlt)) UINTShiftState+=MOD_ALT;
  if(!RegisterHotKey(Handle,HotkeyID,UINTShiftState,TheKey))
   Application->MessageBox("热键注册失败,该热键很可能已经被其他程序注册,请尝试注册另一个热键。","EasyClass - 错误",MB_ICONERROR);
 }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormShow(TObject *Sender)
{
 RegHotkey();
 CppWebBrowser->Hide();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::N1Click(TObject *Sender)
{
 TrayIcon->Restore();        
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::UseAutoChooseClick(TObject *Sender)
{
 EnterUser->Enabled = UseAutoChoose->Checked;
 EnterPass->Enabled = UseAutoChoose->Checked;
 if(UseAutoChoose->Checked&&(Stu_no==""||Passwd==""))
 {
  Stu_no=InputBox("EasyClass - 请输入学号", "学号   ", "");
  Passwd=InputBox("EasyClass - 请输入密码", "密码   ", "");
  if(Stu_no==""||Passwd=="") UseAutoChoose->Checked=0;
 }
 TIPS->Visible = UseAutoChoose->Checked;
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::EnterPassClick(TObject *Sender)
{
 Passwd=InputBox("EasyClass - 请输入密码", "密码   ", "");
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::EnterUserClick(TObject *Sender)
{
 Stu_no=InputBox("EasyClass - 请输入学号", "学号   ", "");
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::N11Click(TObject *Sender)
{
 TListView *templist;
 if(NUMBERS->Focused()) templist = NUMBERS;
 else templist = ClassView;
 TEdit *tempedit = new TEdit(Handle);
 tempedit->Visible=0;
 tempedit->Text = templist->Selected->Caption;
 tempedit->SelectAll();
 tempedit->CopyToClipboard();
 templist=NULL;
 delete tempedit;
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::ClassViewSelectItem(TObject *Sender,
      TListItem *Item, bool Selected)
{
 if(Selected)
  ClassNoMenu->AutoPopup = 1;
 else
  ClassNoMenu->AutoPopup = 0;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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