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

📄 qtech.cpp

📁 使用改进的遗传算法实现简单的高校排课
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "qtech.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TQTechForm *QTechForm;
//---------------------------------------------------------------------------
__fastcall TQTechForm::TQTechForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TQTechForm::FormClose(TObject *Sender, TCloseAction &Action)
{
     Action = caFree;        
}
//---------------------------------------------------------------------------
void __fastcall TQTechForm::clearField()
{
    Edit2->Text = "";
    Edit3->Text = "";
    Edit4->Text = "";
    Edit5->Text = "";
    Edit6->Text = "";
    Edit7->Text = "";
    Edit8->Text = "";
    Edit9->Text = "";
    Edit10->Text = "";
    Edit11->Text = "";
    Edit12->Text = "";
    Edit13->Text = "";
    Edit14->Text = "";
    Edit15->Text = "";
    Edit16->Text = "";
    Edit17->Text = "";
    Edit18->Text = "";
    Edit19->Text = "";
    Edit20->Text = "";
    Edit21->Text = "";
    Edit22->Text = "";
    Edit23->Text = "";
    Edit24->Text = "";
    Edit25->Text = "";
    Edit26->Text = "";
}


AnsiString __fastcall TQTechForm::getclassname(int class_no)
{
      AnsiString  class_name;
      ADOQuery1->Close();
      ADOQuery1->SQL->Clear();
      ADOQuery1->SQL->Add("select * From Class");
      ADOQuery1->SQL->Add("where Class_ID = :ID");
      ADOQuery1->Parameters->ParamByName("ID")->Value = class_no;
      ADOQuery1->Open();
      if(ADOQuery1->RecordCount ==1)
      {
         class_name = ADOQuery1->FieldByName("Class_Name")->AsString;
      }
      return class_name;
}

AnsiString __fastcall TQTechForm::getcoursename(int course_no)
{
      AnsiString  course_name;
      ADOQuery1->Close();
      ADOQuery1->SQL->Clear();
      ADOQuery1->SQL->Add("select * From course");
      ADOQuery1->SQL->Add("where Course_ID = :ID");
      ADOQuery1->Parameters->ParamByName("ID")->Value = course_no;
      ADOQuery1->Open();
      if(ADOQuery1->RecordCount ==1)
      {
         course_name = ADOQuery1->FieldByName("Course_Name")->AsString;
      }
      return course_name;
}

AnsiString __fastcall TQTechForm::getteachername(int teacher_no)
{
      AnsiString  teacher_name;
      ADOQuery1->Close();
      ADOQuery1->SQL->Clear();
      ADOQuery1->SQL->Add("select * From teacher");
      ADOQuery1->SQL->Add("where Teacher_ID = :ID");
      ADOQuery1->Parameters->ParamByName("ID")->Value = teacher_no;
      ADOQuery1->Open();
      if(ADOQuery1->RecordCount ==1)
      {
         teacher_name = ADOQuery1->FieldByName("Teacher_Name")->AsString;
      }
      return teacher_name;
}

int __fastcall TQTechForm::tec_course_init()
{
    int i;
    for (i = 1; i<26; i++)
    {
       tec_cou1[i].cls_id = 0;
       tec_cou1[i].cls_name = "";
       tec_cou1[i].cou_id = 0;
       tec_cou1[i].cou_name = "";
       tec_cou1[i].time_num = 0;
       tec_cou1[i].room_num = 0;
       tec_cou1[i].teac_id = tec_no;
       tec_cou1[i].teac_name = "";

       tec_cou2[i].cls_id = 0;
       tec_cou2[i].cls_name = "";
       tec_cou2[i].cou_id = 0;
       tec_cou2[i].cou_name = "";
       tec_cou2[i].time_num = 0;
       tec_cou2[i].room_num = 0;
       tec_cou2[i].teac_id = tec_no;
       tec_cou2[i].teac_name = "";
    }
    return 1;
}

int __fastcall TQTechForm::get_tec_course_init()
{
      int i;
      AnsiString  teacher_name;
      ADOQuery2->Close();
      ADOQuery2->SQL->Clear();
      ADOQuery2->SQL->Add("select * From CTable");
      ADOQuery2->SQL->Add("where Teac_ID = :Tec_ID");
      ADOQuery2->Parameters->ParamByName("Tec_ID")->Value = tec_no;
      ADOQuery2->Open();
      if(ADOQuery2->RecordCount !=0)
      {
            ADOQuery2->First();
            i=1;
            while(!ADOQuery2->Eof)
            {
                tec_cou1[i].cls_id = ADOQuery2->FieldByName("Class_ID")->AsInteger;;
                tec_cou1[i].cls_name = getclassname(tec_cou1[i].cls_id);
                tec_cou1[i].cou_id = ADOQuery2->FieldByName("Course_ID")->AsInteger;
                tec_cou1[i].cou_name = getcoursename(tec_cou1[i].cou_id);
                tec_cou1[i].time_num = ADOQuery2->FieldByName("Time_Num")->AsInteger;
                tec_cou1[i].room_num = ADOQuery2->FieldByName("Room_Num")->AsInteger;
                tec_cou1[i].teac_id = tec_no;
                tec_cou1[i].teac_name = getteachername(tec_cou1[i].teac_id);
                i++;
                ADOQuery2->Next();
            }
      }
      return 1;
}


int __fastcall TQTechForm::get_tec_course()
{
      int i;
      for (i=1; i<26; i++)
      {
          tec_cou2[tec_cou1[i].time_num].cls_id = tec_cou1[i].cls_id;
          tec_cou2[tec_cou1[i].time_num].cls_name = tec_cou1[i].cls_name;
          tec_cou2[tec_cou1[i].time_num].cou_id = tec_cou1[i].cou_id;
          tec_cou2[tec_cou1[i].time_num].cou_name = tec_cou1[i].cou_name;
          tec_cou2[tec_cou1[i].time_num].time_num = tec_cou1[i].time_num;
          tec_cou2[tec_cou1[i].time_num].room_num = tec_cou1[i].room_num;
          tec_cou2[tec_cou1[i].time_num].teac_id = tec_cou1[i].teac_id;
          tec_cou2[tec_cou1[i].time_num].teac_name = tec_cou1[i].teac_name;
      }
      return 1;
}

//---------------------------------------------------------------------------
void __fastcall TQTechForm::disp_tec_course()
{
    Edit2->Text = Trim(tec_cou2[1].cls_name)+'/'+tec_cou2[1].room_num;
    if ( Edit2->Text =="/0")
       Edit2->Text = "";
    Edit3->Text = Trim(tec_cou2[2].cls_name)+'/'+tec_cou2[2].room_num;
    if ( Edit3->Text =="/0")
       Edit3->Text = "";
    Edit4->Text = Trim(tec_cou2[3].cls_name)+'/'+tec_cou2[3].room_num;
    if ( Edit4->Text =="/0")
       Edit4->Text = "";
    Edit5->Text = Trim(tec_cou2[4].cls_name)+'/'+tec_cou2[4].room_num;
    if ( Edit5->Text =="/0")
       Edit5->Text = "";
    Edit6->Text = Trim(tec_cou2[5].cls_name)+'/'+tec_cou2[5].room_num;
    if ( Edit6->Text =="/0")
       Edit6->Text = "";
    Edit7->Text = Trim(tec_cou2[6].cls_name)+'/'+tec_cou2[6].room_num;
    if ( Edit7->Text =="/0")
       Edit7->Text = "";
    Edit8->Text = Trim(tec_cou2[7].cls_name)+'/'+tec_cou2[7].room_num;
    if ( Edit8->Text =="/0")
       Edit8->Text = "";
    Edit9->Text = Trim(tec_cou2[8].cls_name)+'/'+tec_cou2[8].room_num;
    if ( Edit9->Text =="/0")
       Edit9->Text = "";
    Edit10->Text = Trim(tec_cou2[9].cls_name)+'/'+tec_cou2[9].room_num;
    if ( Edit10->Text =="/0")
       Edit10->Text = "";
    Edit11->Text = Trim(tec_cou2[10].cls_name)+'/'+tec_cou2[10].room_num;
    if ( Edit11->Text =="/0")
       Edit11->Text = "";
    Edit12->Text = Trim(tec_cou2[11].cls_name)+'/'+tec_cou2[11].room_num;
    if ( Edit12->Text =="/0")
       Edit12->Text = "";
    Edit13->Text = Trim(tec_cou2[12].cls_name)+'/'+tec_cou2[12].room_num;
    if ( Edit13->Text =="/0")
       Edit13->Text = "";
    Edit14->Text = Trim(tec_cou2[13].cls_name)+'/'+tec_cou2[13].room_num;
    if ( Edit14->Text =="/0")
       Edit14->Text = "";
    Edit15->Text = Trim(tec_cou2[14].cls_name)+'/'+tec_cou2[14].room_num;
    if ( Edit15->Text =="/0")
       Edit15->Text = "";
    Edit16->Text = Trim(tec_cou2[15].cls_name)+'/'+tec_cou2[15].room_num;
    if ( Edit16->Text =="/0")
       Edit16->Text = "";
    Edit17->Text = Trim(tec_cou2[16].cls_name)+'/'+tec_cou2[16].room_num;
    if ( Edit17->Text =="/0")
       Edit17->Text = "";
    Edit18->Text = Trim(tec_cou2[17].cls_name)+'/'+tec_cou2[17].room_num;
    if ( Edit18->Text =="/0")
       Edit18->Text = "";
    Edit19->Text = Trim(tec_cou2[18].cls_name)+'/'+tec_cou2[18].room_num;
    if ( Edit19->Text =="/0")
       Edit19->Text = "";
    Edit20->Text = Trim(tec_cou2[19].cls_name)+'/'+tec_cou2[19].room_num;
    if ( Edit20->Text =="/0")
       Edit20->Text = "";
    Edit21->Text = Trim(tec_cou2[20].cls_name)+'/'+tec_cou2[20].room_num;
    if ( Edit21->Text =="/0")
       Edit21->Text = "";
    Edit22->Text = Trim(tec_cou2[21].cls_name)+'/'+tec_cou2[21].room_num;
    if ( Edit22->Text =="/0")
       Edit22->Text = "";
    Edit23->Text = Trim(tec_cou2[22].cls_name)+'/'+tec_cou2[22].room_num;
    if ( Edit23->Text =="/0")
       Edit23->Text = "";
    Edit24->Text = Trim(tec_cou2[23].cls_name)+'/'+tec_cou2[23].room_num;
    if ( Edit24->Text =="/0")
       Edit24->Text = "";
    Edit25->Text = Trim(tec_cou2[24].cls_name)+'/'+tec_cou2[24].room_num;
    if ( Edit25->Text =="/0")
       Edit25->Text = "";
    Edit26->Text = Trim(tec_cou2[25].cls_name)+'/'+tec_cou2[25].room_num;
    if ( Edit26->Text =="/0")
       Edit26->Text = "";
}
void __fastcall TQTechForm::FormCreate(TObject *Sender)
{
     clearField();
}
//---------------------------------------------------------------------------

void __fastcall TQTechForm::BtQtyClick(TObject *Sender)
{
      tec_no = EdCls->Text.ToInt();
      if (EdCls->Text!=NULL)
      {
         clearField();
         tec_course_init();
         get_tec_course_init();
         get_tec_course();
         disp_tec_course();
      }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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