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

📄 qclas.cpp

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

#include <vcl.h>
#pragma hdrstop

#include "qclas.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TQClasForm *QClasForm;
//---------------------------------------------------------------------------
__fastcall TQClasForm::TQClasForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TQClasForm::FormClose(TObject *Sender,
      TCloseAction &Action)
{
     Action = caFree;
}
//---------------------------------------------------------------------------

void __fastcall TQClasForm::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 = "";
    QRLabel37->Caption = "               ";
    QRLabel12->Caption = "               ";
    QRLabel13->Caption = "               ";
    QRLabel14->Caption = "               ";
    QRLabel15->Caption = "               ";
    QRLabel16->Caption = "               ";
    QRLabel17->Caption = "               ";
    QRLabel18->Caption = "               ";
    QRLabel19->Caption = "               ";
    QRLabel20->Caption = "               ";
    QRLabel21->Caption = "               ";
    QRLabel22->Caption = "               ";
    QRLabel23->Caption = "               ";
    QRLabel24->Caption = "               ";
    QRLabel25->Caption = "               ";
    QRLabel26->Caption = "               ";
    QRLabel27->Caption = "               ";
    QRLabel28->Caption = "               ";
    QRLabel29->Caption = "               ";
    QRLabel30->Caption = "               ";
    QRLabel31->Caption = "               ";
    QRLabel32->Caption = "               ";
    QRLabel33->Caption = "               ";
    QRLabel34->Caption = "               ";
    QRLabel35->Caption = "               ";
    QRLabel36->Caption = "               ";
}


AnsiString __fastcall TQClasForm::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 TQClasForm::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 TQClasForm::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 TQClasForm::cls_course_init()
{
    int i;
    for (i = 0; i<26; i++)
    {
       cls_cou1[i].cls_id = cls_no;
       cls_cou1[i].cls_name = "";
       cls_cou1[i].cou_id = 0;
       cls_cou1[i].cou_name = "";
       cls_cou1[i].time_num = 0;
       cls_cou1[i].room_num = 0;
       cls_cou1[i].teac_id =0;
       cls_cou1[i].teac_name = "";

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

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


int __fastcall TQClasForm::get_cls_course()
{
      int i;
      for (i=1; i<26; i++)
      {
          cls_cou2[cls_cou1[i].time_num].cou_id = cls_cou1[i].cou_id;
          cls_cou2[cls_cou1[i].time_num].cou_name = cls_cou1[i].cou_name;
          cls_cou2[cls_cou1[i].time_num].time_num = cls_cou1[i].time_num;
          cls_cou2[cls_cou1[i].time_num].room_num = cls_cou1[i].room_num;
          cls_cou2[cls_cou1[i].time_num].teac_id = cls_cou1[i].teac_id;
          cls_cou2[cls_cou1[i].time_num].teac_name = cls_cou1[i].teac_name;
      }
      return 1;
}

void __fastcall TQClasForm::FormCreate(TObject *Sender)
{
      clearField();
}
//---------------------------------------------------------------------------

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

    QRLabel37->Caption = Trim(getclassname(cls_no));
    QRLabel12->Caption = Edit2->Text;
    QRLabel13->Caption = Edit3->Text;
    QRLabel14->Caption = Edit4->Text;
    QRLabel15->Caption = Edit5->Text;
    QRLabel16->Caption = Edit6->Text;
    QRLabel17->Caption = Edit7->Text;
    QRLabel18->Caption = Edit8->Text;
    QRLabel19->Caption = Edit9->Text;
    QRLabel20->Caption = Edit10->Text;
    QRLabel21->Caption = Edit11->Text;
    QRLabel22->Caption = Edit12->Text;
    QRLabel23->Caption = Edit13->Text;
    QRLabel24->Caption = Edit14->Text;
    QRLabel25->Caption = Edit15->Text;
    QRLabel26->Caption = Edit16->Text;
    QRLabel27->Caption = Edit17->Text;
    QRLabel28->Caption = Edit18->Text;
    QRLabel29->Caption = Edit19->Text;
    QRLabel30->Caption = Edit20->Text;
    QRLabel31->Caption = Edit21->Text;
    QRLabel32->Caption = Edit22->Text;
    QRLabel33->Caption = Edit23->Text;
    QRLabel34->Caption = Edit24->Text;
    QRLabel35->Caption = Edit25->Text;
    QRLabel36->Caption = Edit26->Text;
}

⌨️ 快捷键说明

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