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

📄 datamanager.cpp

📁 学生选课管理信息系统原码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
void __fastcall TDataManagerForm::CancelBtnClick(TObject *Sender)
{
  switch(PageControl1->ActivePage->TabIndex )
  {
    //对PageControl1中的EduMngTabSht,DepartTabSht,StuTabSht,CourseTabSht,
    // GradeTabSht,StudyPlanTabSht1对应地数据表进行取消操作
    case 0:
      DataMod->EduManagQuery->Cancel() ;
      break ;
    case 1:
      DataMod->DepartmentQuery->Cancel() ;
      break ;
    case 2:
      DataMod->StudentQuery->Cancel() ;
      break ;
    case 3:
      DataMod->CourseQuery->Cancel() ;
      break ;
    case 4:
      DataMod->GradeQuery->Cancel() ;
      break ;
    case 5:
      Edit1->Text = "" ;
      Edit2->Text = "" ;
      Edit3->Text = "" ;
      Edit4->Text = "" ;
      break ;
  }
}
//---------------------------------------------------------------------------

void __fastcall TDataManagerForm::PostBtnClick(TObject *Sender)
{
  switch(PageControl1->ActivePage->TabIndex )
  {
    //对PageControl1中的EduMngTabSht,DepartTabSht,StuTabSht,CourseTabSht,
    // GradeTabSht,StudyPlanTabSht1对应地数据表进行提交操作
    case 0:
      if(DataMod->EduManagQuery->State == dsInsert
        ||DataMod->EduManagQuery->State == dsEdit )
        DataMod->EduManagQuery->Post() ;
      break ;
    case 1:
      if(DataMod->DepartmentQuery->State == dsInsert
        ||DataMod->DepartmentQuery->State == dsEdit )
        DataMod->DepartmentQuery->Post() ;
      break ;
    case 2:
      if(DataMod->StudentQuery->State == dsInsert
        ||DataMod->StudentQuery->State == dsEdit )
        DataMod->StudentQuery->Post() ;
      break ;
    case 3:
      if(DataMod->CourseQuery->State == dsInsert
        ||DataMod->CourseQuery->State == dsEdit )
        DataMod->CourseQuery->Post() ;
      break ;
    case 4:
      if(DataMod->GradeQuery->State == dsInsert
        ||DataMod->GradeQuery->State == dsEdit )
        DataMod->GradeQuery->Post() ;
      break ;
    case 5:
      //StudyPlanTabSht1中的Edit1,Edit2必须在选择相应地学生和课程信息后,
      //才可以完成提交功能
      if (Edit1->Text == "请选择" || Edit2->Text == "请选择")
        MessageBox(NULL,"此为非法记录,请重新选择!","警告",MB_OK) ;
      else
      {
        //查询Grade.db表中是否存在数据记录
        AnsiString queryString2 = "Select * from Grade " ;
        DataMod->GeneralQuery->Active = false ;
        DataMod->GeneralQuery->SQL->Clear() ;
        DataMod->GeneralQuery->SQL->Add(queryString2) ;
        DataMod->GeneralQuery->ExecSQL() ;
        DataMod->GeneralQuery->Active = true ;
        int TableNum2 = DataMod->GeneralQuery->RecordCount ;

        if(TableNum2 ==0)
        {
          //若是空的,则把第一条记录的GradeNo赋值为1
          AnsiString otherQuery = "INSERT INTO Grade(GradeNo,StudentNo,CourseNo," ;
          otherQuery += "CourseKind,Term,PlanCourse) VALUES (\"1\",\"";
          otherQuery += m_strStudentNo ;
          otherQuery += "\",\"" ;
          otherQuery += m_strCourseNo ;
          otherQuery += "\",\"" ;
          otherQuery += m_strCouresKind ;
          otherQuery += "\",\"" ;
          otherQuery += m_strTerm ;
          //默认PlanCourse字段的值为“是”
          otherQuery += "\",\"是\")" ;
          DataMod->GeneralQuery->Active = false ;
          DataMod->GeneralQuery->SQL->Clear() ;
          DataMod->GeneralQuery->SQL->Add(otherQuery) ;
          DataMod->GeneralQuery->ExecSQL() ;
        }
        else
        {
          //若不是空的,则做以下操作
          //查询Grade.db表中是否存在相同的数据记录
          AnsiString queryString1 = "Select * from Grade where PlanCourse=\"是\" " ;
          queryString1 += " and StudentNo = \"" ;
          queryString1 += m_strStudentNo ;
          queryString1 += "\" and CourseNo = \"" ;
          queryString1 += m_strCourseNo ;
          queryString1 += "\"" ;
          DataMod->GeneralQuery->Active = false ;
          DataMod->GeneralQuery->SQL->Clear() ;
          DataMod->GeneralQuery->SQL->Add(queryString1) ;
          DataMod->GeneralQuery->ExecSQL() ;
          DataMod->GeneralQuery->Active = true ;
          int TableNum = DataMod->GeneralQuery->RecordCount ;
          //选出Grade表中GradeNo字段的最大值
          AnsiString queryStringNo = "Select MAX(GradeNo) as MaxGradeNo from Grade " ;
          DataMod->GeneralQuery->Active = false ;
          DataMod->GeneralQuery->SQL->Clear() ;
          DataMod->GeneralQuery->SQL->Add(queryStringNo) ;
          DataMod->GeneralQuery->ExecSQL() ;
          DataMod->GeneralQuery->Active = true ;
          int strGradeNo =StrToInt(DataMod->GeneralQuery->FieldValues["MaxGradeNo"]) ;
          //进行判断,若已存在相同的数据记录,则给以警告
          if (TableNum != 0)
            MessageBox(NULL,"数据库中已存在此记录!","警告",MB_OK) ;
          else
          {
            //若不存在相同的数据记录,则把相应地数据记录插入到Grade表中
            AnsiString otherQuery = "INSERT INTO Grade(GradeNo,StudentNo,CourseNo," ;
            otherQuery += "CourseKind,Term,PlanCourse) VALUES (\"";
            //把选出的GradeNo字段的最大值+1,作为下一条记录的记录号
            otherQuery += strGradeNo+1 ;
            otherQuery += "\",\"" ;
            otherQuery += m_strStudentNo ;
            otherQuery += "\",\"" ;
            otherQuery += m_strCourseNo ;
            otherQuery += "\",\"" ;
            otherQuery += m_strCouresKind ;
            otherQuery += "\",\"" ;
            otherQuery += m_strTerm ;
            //默认PlanCourse字段的值为“是”
            otherQuery += "\",\"是\")" ;
            DataMod->GeneralQuery->Active = false ;
            DataMod->GeneralQuery->SQL->Clear() ;
            DataMod->GeneralQuery->SQL->Add(otherQuery) ;
            DataMod->GeneralQuery->ExecSQL() ;
          }
        }
      }
      break ;
  }
}
//---------------------------------------------------------------------------

void __fastcall TDataManagerForm::DeleteBtnClick(TObject *Sender)
{
  AnsiString DepartNo ;
  TMsgDlgButtons Btns ;
  Btns<<mbYes<<mbNo ;
  AnsiString str = "确定要删除?" ;
  switch(PageControl1->ActivePage->TabIndex )
  {
    //对PageControl1中的EduMngTabSht,DepartTabSht,StuTabSht,CourseTabSht,
    // GradeTabSht,StudyPlanTabSht2对应地数据表进行删除操作
    case 0:
      if(MessageDlg(str,mtInformation,Btns,0) == ID_YES)
        DataMod->EduManagQuery->Delete() ;
      break ;
    case 1:
      //若要删除一个系,则该系中的所有学生记录(在Student.db表中)也会被删除掉
      //但这些学生在Grade.db数据表中记录,还是存在的,
      //原因是考虑到这些学生有可能会转系,或其他的原因等等。
      //因此这些学生在Grade.db数据表中记录应该要保存下来
      str = "确定要删除该系及其该系中所有学生的记录?" ;
      if(MessageDlg(str,mtInformation,Btns,0) == ID_YES)
      {
        DepartNo = DataMod->DepartmentQuery->FieldValues["DepartNo"] ;
        DataMod->StudentDelQuery->ParamByName("DepartNo")->AsString = DepartNo  ;
        DataMod->StudentDelQuery->ExecSQL() ;
        DataMod->DepartmentQuery->Delete() ;
      }
      break ;
    case 2:
      if(MessageDlg(str,mtInformation,Btns,0) == ID_YES)
        DataMod->StudentQuery->Delete() ;
      break ;
    case 3:
      if(MessageDlg(str,mtInformation,Btns,0) == ID_YES)
        DataMod->CourseQuery->Delete() ;
      break ;
    case 4:
      if(MessageDlg(str,mtInformation,Btns,0) == ID_YES)
        DataMod->GradeQuery->Delete() ;
      break ;
    case 6:
      if(MessageDlg(str,mtInformation,Btns,0) == ID_YES)
        DataMod->GeneralQuery->Delete() ;
      break ;
  }
}
//---------------------------------------------------------------------------

void __fastcall TDataManagerForm::Button1Click(TObject *Sender)
{
  Close() ;        
}
//---------------------------------------------------------------------------


void __fastcall TDataManagerForm::Button3Click(TObject *Sender)
{
  //进入“选择课程”对话框,选择所要的课程记录
  TSelectCourseDlg *SelectCourseDlg = new TSelectCourseDlg(this) ;
  if(SelectCourseDlg->ShowModal() == mrOk )
  {
    AnsiString otherQuery = "Select * from Course where CourseNo = \"" ;
    otherQuery += SelectCourseDlg->m_strSelCourseNo ;
    otherQuery += "\"" ;
    DataMod->CourseQuery->SQL->Clear() ;
    DataMod->CourseQuery->SQL->Add(otherQuery) ;
    DataMod->CourseQuery->ExecSQL() ;
    DataMod->CourseQuery->Active = true ;
  }
  delete SelectCourseDlg ;
  Edit2->Text = DataMod->CourseQuery->FieldValues["CourseNo"] ;
  m_strCourseNo = Edit2->Text ;
  Edit3->Text = DataMod->CourseQuery->FieldValues["CourseKind"] ;
  m_strCouresKind = Edit3->Text ;
  Edit4->Text = DataMod->CourseQuery->FieldValues["Term"] ;
  m_strTerm = Edit4->Text ;
}
//---------------------------------------------------------------------------


void __fastcall TDataManagerForm::Button2Click(TObject *Sender)
{
  //进入“选择学生”对话框,选择要对其进行操作的学生
  TSelectStudentDlg *SelectStudentDlg = new TSelectStudentDlg(this) ;
  if(SelectStudentDlg->ShowModal() == mrOk )
  {
    AnsiString otherQuery = "Select * from Student where StudentNo = \"" ;
    otherQuery += SelectStudentDlg->m_strSelStudentNo ;
    otherQuery += "\"" ;
    DataMod->StudentQuery->SQL->Clear() ;
    DataMod->StudentQuery->SQL->Add(otherQuery) ;
    DataMod->StudentQuery->ExecSQL() ;
    DataMod->StudentQuery->Active = true ;
  }
  delete SelectStudentDlg ;
  Edit1->Text = DataMod->StudentQuery->FieldValues["StudentNo"] ;
  m_strStudentNo = Edit1->Text ;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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