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

📄 product.~cpp

📁 一个不错的销售系统
💻 ~CPP
📖 第 1 页 / 共 2 页
字号:
        frmMain->tblAvailableProduct->Active = true;
        frmMain->tblAvailableProduct->First();
        while( !frmMain->tblAvailableProduct->Eof )
        {
                if( frmMain->tblAvailableProduct->FieldByName( "Quarter" )->AsInteger==StrToInt(sttDecideQuarter->Caption)-1 )
                {
                        numProduct = frmMain->tblAvailableProduct->FieldByName( "Available" )->AsInteger;
                        break;
                }
                frmMain->tblAvailableProduct->Next();
        }
       if( frmMain->tblAvailableProduct->FieldByName( "Quarter" )->AsInteger==StrToInt(sttDecideQuarter->Caption)-1 )
                numProduct = frmMain->tblAvailableProduct->FieldByName( "Available" )->AsInteger;
       frmMain->tblAvailableProduct->Active = false;

        return (temp<(output+numProduct)?temp:(output+numProduct));
}
//---------------------------------------------------------------------------

int __fastcall TfrmProduct::CalculateOutput( void )
{
        long capability = StrToInt( edtDecideCapability->Text );
        long numNewMaterial = 0;
        TQuery *query = new TQuery(this);
        //  允许窗体退出是自动删除此查询对象
        query->DatabaseName = Database;
        query->SQL->Clear();
        query->SQL->Add( "SELECT Quantity FROM 原料订购表 WHERE Quarter = :quarter" );
        query->ParamByName( "quarter" )->AsInteger = StrToInt(sttDecideQuarter->Caption);
        query->Prepare();
        query->Open();
        if( query->RecordCount<= 0 )
        //  用户还没有做出原料决策,产量模拟计算失败
                throw "原料决策还没有做出,系统现在还不能计算出产量和销售量,\n\n建议:迅速做出原料决策,系统会再次完成此功能.";
        numNewMaterial = query->FieldByName( "Quantity" )->AsFloat;
        delete query;
        //  抛出系统异常后,原料管理模块的窗体会自动删除此查询对象

        long numResidualMaterial = -1;
        if( StrToInt(sttDecideQuarter->Caption)-1<=0 )
                numResidualMaterial = 0;
        //  假设:伯克公司在建立该公司前并没有产品库存
        else
        {
                frmMain->tblAvailableMaterial->Active = true;
                frmMain->tblAvailableMaterial->First();
                while( !frmMain->tblAvailableMaterial->Eof )
                {
                        if( frmMain->tblAvailableMaterial->FieldByName( "Quarter" )->AsInteger==StrToInt(sttDecideQuarter->Caption)-1 )
                        {
                                numResidualMaterial = frmMain->tblAvailableMaterial->FieldByName( "Available" )->AsInteger;
                                break;
                        }
                        frmMain->tblAvailableMaterial->Next();
                }
                if( frmMain->tblAvailableMaterial->FieldByName( "Quarter" )->AsInteger==StrToInt(sttDecideQuarter->Caption)-1 )
                        numResidualMaterial = frmMain->tblAvailableMaterial->FieldByName( "Available" )->AsInteger;
                frmMain->tblAvailableMaterial->Active = false;
        }
        if( numResidualMaterial<0 )
                throw "数据库中的数据同步性被破坏,系统无法正确运行。\n建议:系统维护员立即维护数据库中的数据。";
        long numMaterial = numNewMaterial + numResidualMaterial;
        return (capability>numMaterial?numMaterial:capability);
}
//---------------------------------------------------------------------------

void __fastcall TfrmProduct::bbnDecideClick(TObject *Sender)
{
        if( Application->MessageBox( "您一旦提交决策就不能修改,除非在退出该窗口前删除该记录!\n还要继续吗?",
                Application->Title.c_str(), MB_YESNO + MB_ICONQUESTION ) == IDNO )
                return;

        int capability;
        float price;
        try
        {
                capability = StrToInt( edtDecideCapability->Text );
                price = StrToFloat( edtDecidePrice->Text );
                tblCapability->Active = true;
                tblCapability->Append();
                tblCapability->FieldByName( "Quarter" )->AsInteger =
                                StrToInt(sttDecideQuarter->Caption);
                tblCapability->FieldByName( "Capability" )->AsInteger =
                                StrToInt( edtDecideCapability->Text );
                tblCapability->Post();
                tblCapability->Active = false;

                int sold = GuessSold( capability, price );
                edtDecideSold->Text = IntToStr( sold );

                bbnDecide->Caption = "本季度决策完毕";
                miCommit->Enabled = false;
                Panel1->Enabled = false;
                edtDecideCapability->Enabled = false;
                edtDecidePrice->Enabled = false;
                edtDecideSold->Enabled = false;
        }
        catch( EConvertError &err )
        {
                ShowMessageDlg( "产生错误:" + err.Message );
                edtDecideCapability->SetFocus();
                edtDecideCapability->SelectAll();
        }
        catch( EDatabaseError &err )
        {
                ShowMessageDlg( "产生数据库错误:" + err.Message );
                edtDecideCapability->SetFocus();
                edtDecideCapability->SelectAll();
        }
}
//---------------------------------------------------------------------------

void __fastcall TfrmProduct::bbnReportClick(TObject *Sender)
{
        frmQrMain->Visible = true;
        frmQrMain->rbnProductSold->Enabled = true;
        frmQrMain->rbnProductSoldDecision->Enabled = true;
        frmQrMain->rbnMaterialBuyUse->Enabled = false;
        frmQrMain->rbnFinanceReport->Enabled = false;
        frmQrMain->rbnLoanRestore->Enabled = false;
        frmQrMain->rbnProductCapability->Enabled = false;
        frmQrMain->rbnRestoreCost->Enabled = false;
        frmQrMain->rbnMaterialBuy->Enabled = false;
        frmQrMain->rbnLoanLoanRepay->Enabled = false;
        frmQrMain->rbnLoanInterest->Enabled = false;
        frmQrMain->rbnProductSoldClick( (TObject*)frmQrMain );
        frmQrMain->rbnProductSold->Checked = true;
}
//---------------------------------------------------------------------------

void __fastcall TfrmProduct::miReportReportClick(TObject *Sender)
{
        bbnReportClick( Sender );                
}
//---------------------------------------------------------------------------

void __fastcall TfrmProduct::bbnAboutClick(TObject *Sender)
{
        (new TfrmAbout(this))->ShowModal();
}
//---------------------------------------------------------------------------

void __fastcall TfrmProduct::miHelpAboutClick(TObject *Sender)
{
        bbnAboutClick( Sender );        
}
//---------------------------------------------------------------------------

void __fastcall TfrmProduct::edtDecidePriceKeyPress(TObject *Sender,
      char &Key)
{
        if( Key == 0x0D )
        //  用户按了回车键
                bbnDecideClick( Sender );
}
//---------------------------------------------------------------------------

void __fastcall TfrmProduct::FormActivate(TObject *Sender)
{
        edtDecideCapability->SelectAll();
        edtDecideCapability->SetFocus();        
}
//---------------------------------------------------------------------------
bool __fastcall TfrmProduct::GetMaxMinQuarterInProductTable(int *max, int *min)
//  To statistics the max and min quarter in the product table.
//  if no record is found, return false.
//  else return true.
{
        int Quarter;
        *max = 0;
        *min = 100000;
        if(!tblCapability->Active)
                tblCapability->Active = true;
        if(!tblCapability->RecordCount>0)
                return false;
        tblCapability->First();
        while( !tblCapability->Eof )
        {
                Quarter = tblCapability->FieldByName( "Quarter" )->AsInteger;
                *max = *max>Quarter ? *max : Quarter;
                *min = *min<Quarter ? *min : Quarter;
                tblCapability->Next();
        }
        Quarter = tblCapability->FieldByName( "Quarter" )->AsInteger;
        *max = *max>Quarter ? *max : Quarter;
        *min = *min<Quarter ? *min : Quarter;
        tblCapability->Active = false;
        return true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmProduct::FormCloseQuery(TObject *Sender,
      bool &CanClose)
{
        miCommit->Enabled = true;        
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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