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

📄 studentquery.~cpp

📁 学生选课管理信息系统原码
💻 ~CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "StudentQuery.h"
#include "DataUnit.h"
#include "ModifyPassword.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TStuQryForm *StuQryForm;
//---------------------------------------------------------------------------
__fastcall TStuQryForm::TStuQryForm(TComponent* Owner)
        : TForm(Owner)
{
  m_nTotalScore = 0 ;
  m_strStudentNo = "" ;
  m_strName = "" ;
  j = 0 ;
}
//---------------------------------------------------------------------------
void __fastcall TStuQryForm::OKBtnClick(TObject *Sender)
{
  Close() ;        
}
//---------------------------------------------------------------------------

void __fastcall TStuQryForm::FormCreate(TObject *Sender)
{
  StringGrid1->Cells[0][0] = "课程名称" ;
  StringGrid1->Cells[1][0] = "开课学期" ;
  StringGrid1->Cells[2][0] = "课程学分" ;
  StringGrid1->Cells[3][0] = "课程成绩" ;
}
//---------------------------------------------------------------------------

void __fastcall TStuQryForm::FormShow(TObject *Sender)
{
  //首先构造查询Course数据表的SQL语句
  AnsiString queryString = "Select * from Course " ;
  DataMod->CourseQuery->SQL->Clear() ;
  DataMod->CourseQuery->SQL->Add(queryString) ;
  //执行查询
  DataMod->CourseQuery->ExecSQL() ;
  DataMod->CourseQuery->Active = true ;

  for(int i=0; i<DataMod->CourseQuery->RecordCount;i++)
  {
    //得到课程的名称
    AnsiString CourseName = DataMod->CourseQuery->FieldValues["CourseName"] ;
    //得到课程的学分
    int nScore = DataMod->CourseQuery->FieldValues["Score"] ;
    //然后构造查询成绩表的SQL语句
    AnsiString otherQuery = "Select * from Grade " ;
    otherQuery += " where StudentNo =\"" ;
    otherQuery += m_strStudentNo ;
    otherQuery += "\"" ;
    otherQuery += " and CourseNo=\"" ;
    otherQuery += DataMod->CourseQuery->FieldValues["CourseNo"] ;
    otherQuery += "\"" ;

    try
    {
      //执行查询
      DataMod->GradeQuery->SQL->Clear() ;
      DataMod->GradeQuery->SQL->Add(otherQuery) ;
      DataMod->GradeQuery->ExecSQL() ;
      DataMod->GradeQuery->Active = true ;
    }
    catch(EDBEngineError &E)
    {
      //将当前指针移动到下一个记录
      DataMod->CourseQuery->Next() ;
      continue ;
    }

    if(DataMod->GradeQuery->RecordCount)
    {
        j++ ;
        //根据情况得到相应的学生查询数据
        AnsiString strGrade=DataMod->GradeQuery->FieldByName("Score")->AsString ;
        if(strGrade != "" )
        {
          StringGrid1->Cells[0][j] = CourseName ;
          StringGrid1->Cells[1][j] = DataMod->GradeQuery->FieldValues["Term"];
          StringGrid1->Cells[2][j] = IntToStr(nScore) ;
          StringGrid1->Cells[3][j] = DataMod->GradeQuery->FieldValues["Score"];
          //将该课程的学分加入到总学分中
          m_nTotalScore += nScore ;
        }
        else
        {
          StringGrid1->Cells[0][j] = CourseName ;
          StringGrid1->Cells[1][j] = DataMod->GradeQuery->FieldValues["Term"];
          StringGrid1->Cells[2][j] = IntToStr(nScore) ;
          StringGrid1->Cells[3][j] = "";
        }
    }
    //将当前指针移动到下一个记录
    DataMod->CourseQuery->Next() ;
  }
  //显示学号,姓名与总学分(已有成绩的)
  StuNoEdt->Text = m_strStudentNo ;
  NameEdt->Text = m_strName ;
  ScoreEdt->Text = IntToStr(m_nTotalScore) ;

}
//---------------------------------------------------------------------------

void __fastcall TStuQryForm::PasswordBtnClick(TObject *Sender)
{
  TMdfPwdDlg *MdfPwdDlg = new TMdfPwdDlg(this) ;
  if(MdfPwdDlg->ShowModal() == mrOk )
  {
    DataMod->StudentQuery->SQL->Clear() ;
    DataMod->StudentQuery->Close() ;
    try
    {
      AnsiString queryString = "Select * from Student" ;
      queryString += " where StudentNo =\"" ;
      queryString += m_strStudentNo ;
      queryString += "\"" ;
      
      DataMod->StudentQuery->SQL->Add(queryString) ;
      DataMod->StudentQuery->RequestLive = true ;
      DataMod->StudentQuery->ExecSQL() ;
      DataMod->StudentQuery->Active = true ;

      DataMod->StudentQuery->Edit() ;
      DataMod->StudentQuery->FieldValues["SPassword"]=
        MdfPwdDlg->FstTimeEdt->Text ;
      DataMod->StudentQuery->Post() ;
      DataMod->StudentQuery->Close() ;
    }
    catch(EDBEngineError &E)
    {
      MessageBox(this,"不能修改口令!","错误",mbOK ) ;
      delete MdfPwdDlg ;
      return ;
    }
  }
  delete MdfPwdDlg ;        
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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