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 + -
显示快捷键?