inputgrade.cpp

来自「C++ Builder数据库开发经典案例解析 示例程序都是在C++ Build」· C++ 代码 · 共 106 行

CPP
106
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "inputgrade.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfmInputGrade *fmInputGrade;
//---------------------------------------------------------------------------
__fastcall TfmInputGrade::TfmInputGrade(TComponent* Owner)
    : TForm(Owner)
{
    // 清空编辑框信息
    edCouPY->Text = "";
    edCouName->Text = "";
    edCouID->Text = "";
    edGrade->Text = "";
    this->Height = 480;
}
//---------------------------------------------------------------------------
void __fastcall TfmInputGrade::FormClose(TObject *Sender,
      TCloseAction &Action)
{
    // 删除窗体并回收空间
    Action = caFree;
}
//---------------------------------------------------------------------------
// 终止选课,生成成绩单
void __fastcall TfmInputGrade::btEndSelectClick(TObject *Sender)
{
    // 调用 sf_终止选课 存储过程,生成空的成绩单
    queQuery->SQL->Clear();
    queQuery->SQL->Add("exec sf_终止选课");
    queQuery->ExecSQL();
    AnsiString msg;
    msg = "结束选课成功,请选择需要输入成绩的课程";
    Application->MessageBox(msg.c_str(), "提示", MB_OK);
}
//---------------------------------------------------------------------------
void __fastcall TfmInputGrade::btFindClick(TObject *Sender)
{
    // 查询选择的课程
    AnsiString szCon, sql;
    if(edCouPY->Text.Length()>0)
        szCon += "拼音码 like '" + edCouPY->Text + "%' and ";
    if(edCouName->Text.Length()>0)
        szCon += "课程名称 like '" + edCouName->Text + "%' and ";
    if(edCouID->Text.Length()>0)
        szCon += "b.课程编号 like '" + edCouID->Text + "%' and ";
    // 去除最后一个and字符
    if(szCon.Length()==0)
        return;
    else
        szCon = szCon.SubString(1,szCon.Length()-5);
    sql = "select b.课程名称,a.学号,c.姓名,a.成绩, a.编号,a.课程编号 from ";
    sql += "成绩表 as a, 课程信息 as b, 学生信息 as c ";
    sql += "where a.课程编号=b.课程编号 and a.学号=c.学号";
    sql += " and 是否已确定成绩 = 'N'";
    sql += " and " + szCon + " order by b.课程名称,a.学号";
    queGrade->SQL->Clear();
    queGrade->SQL->Add(sql);
    queGrade->Open();
}
//---------------------------------------------------------------------------
void __fastcall TfmInputGrade::edCouPYKeyPress(TObject *Sender, char &Key)
{
    // 回车查询
    if(Key==13)
        btFindClick(NULL);
}
//---------------------------------------------------------------------------
void __fastcall TfmInputGrade::btModifyGradeClick(TObject *Sender)
{
    if(edGrade->Text.Length()<=0)
        return;
    AnsiString sql;
    sql = "update 成绩表 set 成绩=";
    sql += edGrade->Text;
    sql += " where 编号=";
    sql += queGrade->FieldByName("编号")->AsString;
    queQuery->SQL->Clear();
    queQuery->SQL->Add(sql);
    queQuery->ExecSQL();
    // 更改了成绩,刷新显示
    btFindClick(NULL);
}
//---------------------------------------------------------------------------
// 最终提交指定课程的成绩,提交后成绩不可以在修改
void __fastcall TfmInputGrade::btOKClick(TObject *Sender)
{
    if(Application->MessageBox("提交后成绩不可以在修改,是否确认提交?",
        "提示", MB_YESNO) == IDNO)
            return;
    queQuery->SQL->Clear();
    queQuery->SQL->Add("exec sf_成绩提交 " +
        queGrade->FieldByName("课程编号")->AsString);
    queQuery->ExecSQL();
    Application->MessageBox("提交成功", "提示", MB_OK);
    // 更新显示
    btFindClick(NULL);
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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