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

📄 product.~cpp

📁 一个不错的销售系统
💻 ~CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------
//      Name:           Product.cpp
//      Author:         Jrays
//      Date:           1999.8.7
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Product.h"
#include "Data.h"
#include "main.h"
#include "About.h"
#include "QrMain.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmProduct *frmProduct;
//---------------------------------------------------------------------------
__fastcall TfrmProduct::TfrmProduct(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmProduct::FormCreate(TObject *Sender)
{
        Caption = Application->Title + "  产品管理模块";
        edtDecideCapability->Text = "";
        edtDecidePrice->Text = "";
        edtDecideSold->Text = "";
        FillDecideIdentity();
        int max;
        int min;
        if(GetMaxMinQuarterInProductTable(&max, &min))
        {
                cbxDecideIdentity->Text = IntToStr(max);
                SetDecideName();
        }
        AttachToDatabase();
        int maxQuarter = -1;
        while( !qryDecide->Eof )
        {
                int curQuarter = qryDecide->FieldByName( "Quarter" )->AsInteger;
                maxQuarter = maxQuarter>=curQuarter?maxQuarter:curQuarter;
                qryDecide->Next();
        }
        int curQuarter = qryDecide->FieldByName( "Quarter" )->AsInteger;
        maxQuarter = maxQuarter>=curQuarter?maxQuarter:curQuarter;
        sttDecideQuarter->Caption = IntToStr( maxQuarter+1 );

        Table1->Active = true;
        SetQueryName();

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

void __fastcall TfrmProduct::bbnGoClick(TObject *Sender)
{
        try
        {
                if( !Panel1->Enabled )
                {
                        if( Application->MessageBox( "一旦永久提交决策,再也无法修改!\n您要永久提交决策吗?",
                                Application->Title.c_str(), MB_YESNO + MB_ICONQUESTION ) == IDNO )
                        {
                                tblCapability->Active = true;
                                tblCapability->Last();
                                tblCapability->Delete();
                                tblCapability->Active = false;
                        }
                        else
                        {
                                Table1->Active = true;
                                Table1->Append();
                                Table1->FieldByName( "Identity" )->AsString = cbxDecideIdentity->Text;
                                Table1->FieldByName( "Quarter" )->AsString = sttDecideQuarter->Caption;
                                Table1->FieldByName( "Price" )->AsString = edtDecidePrice->Text;
                                long output = CalculateOutput();
                                long sold = CalculateSold( output, StrToFloat(edtDecidePrice->Text) );
                                Table1->FieldByName( "Output" )->AsInteger = output;
                                Table1->FieldByName( "Sold" )->AsInteger = sold;
                                Table1->Post();
                                if( sold<=0 || output<=0 )
                                //  要保证即使部分信息还没有得到,但有用的信息必须写入数据库,否则会丢失。
                                        throw "当前产品的销售量和产量未知!\n数据库中的产量和销售量是没有意义的,在原料决策部分请再次追加。";
                        }
                }
                Release();
        }
        catch( char* s)
        {
                AnsiString prompt( s );
                ShowMessageDlg( "产生错误:" + prompt  );
                Table1->FieldByName( "Output" )->AsInteger = -1;
                Table1->FieldByName( "Sold" )->AsInteger = -1;
                Table1->Post();
                Release();
        }
        catch( EDatabaseError &err )
        {
                ShowMessageDlg( "产生数据库错误:" + err.Message + "\n没有操作将被完成.");
                Table1->FieldByName( "Output" )->AsInteger = -1;
                Table1->FieldByName( "Sold" )->AsInteger = -1;
                Table1->Post();
                Release();
        }
}
//---------------------------------------------------------------------------

bool __fastcall TfrmProduct::SetDecideName( void )
{
        qryDecide->Active = false;
        qryDecide->SQL->Clear();
        qryDecide->SQL->Add( "SELECT Name FROM 产品信息表" );
        qryDecide->SQL->Add( "WHERE Identity = :identity" );
        qryDecide->ParamByName( "identity" )->AsInteger = StrToInt(cbxDecideIdentity->Text);
        qryDecide->Prepare();
        qryDecide->Open();
        edtDecideName->ReadOnly = false;
        edtDecideName->Text = qryDecide->FieldByName( "Name" )->AsString;
        edtDecideName->ReadOnly = true;
        qryDecide->Active = false;
        qryDecide->UnPrepare();
        return true;
}
//---------------------------------------------------------------------------

bool __fastcall TfrmProduct::SetQueryName( void )
{
        Query1->Active = false;
        Query1->SQL->Clear();
        Query1->SQL->Add( "SELECT Name FROM 产品信息表" );
        Query1->SQL->Add( "WHERE Identity = :identity" );
        Query1->ParamByName( "identity" )->AsInteger =
                Table1->FieldByName( "Identity" )->AsInteger;
        Query1->Prepare();
        Query1->Open();
        edtName->ReadOnly = false;
        edtName->Text = Query1->FieldByName( "Name" )->AsString;
        edtName->ReadOnly = true;
        Query1->Active = false;
        Query1->UnPrepare();
        return true;
}
//---------------------------------------------------------------------------

bool __fastcall TfrmProduct::FillDecideIdentity( void )
{
        qryDecide->Active = false;
        qryDecide->DatabaseName = Database;
        qryDecide->SQL->Clear();
        qryDecide->SQL->Add( "SELECT * FROM 产品信息表" );
        qryDecide->Prepare();
        qryDecide->Open();
        for( int i=0 ; i<qryDecide->RecordCount ; i++ )
        {
                cbxDecideIdentity->Items->Add(qryDecide->FieldByName( "Identity" )->AsString);
                qryDecide->Next();
        }
        qryDecide->Active = false;
        qryDecide->UnPrepare();
        return true;
}
//---------------------------------------------------------------------------

bool __fastcall TfrmProduct::AttachToDatabase( void )
{
        qryDecide->Active = false;
        qryDecide->SQL->Clear();
        qryDecide->SQL->Add( "SELECT 工厂生产能力表.Quarter, 工厂生产能力表.Capability" );
        qryDecide->SQL->Add( "FROM 工厂生产能力表" );
        qryDecide->Prepare();
        qryDecide->Open();
        qryDecide->Active = true;
        return true;
}
//---------------------------------------------------------------------------


void __fastcall TfrmProduct::bbnSelectClick(TObject *Sender)
{
        ShowMessageDlg( "当鼠标在右边选中记录时该功能会自动完成!\n不妨试一试!" );        
}
//---------------------------------------------------------------------------


int __fastcall TfrmProduct::GuessSold( int Capability, float Price )
{
        return Capability + (CommonPrice-Price)*10000;
}
//---------------------------------------------------------------------------

int __fastcall TfrmProduct::CalculateSold( int output, float Price )
//  In this function a possible calculation is submitted
//  Other method is OK.
{
        if( output<0 )  return -1;

        long temp = output+(CommonPrice-Price)*1000;
        long numProduct = 0;

⌨️ 快捷键说明

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