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

📄 main.~cpp

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

#include "Splash.h"
#include "Main.h"
#include "Password.h"
#include "Product.h"
#include "Material.h"
#include "Maintain.h"
#include "Finance.h"
#include "About.h"
#include "Data.h"
#include "QrMain.h"
#include "QrProductSold.h"
#include "QrProductSoldDecision.h"
#include "QrMaterialBuyUse.h"
#include "QrFinanceReport.h"
#include "QrLoanRestore.h"
#include "QrProductCapability.h"
#include "QrRestoreCost.h"
#include "QrMaterialBuy.h"
#include "QrLoanLoanRepay.h"
#include "QrLoanInterest.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmMain *frmMain;
//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::FormCreate(TObject *Sender)
{
        Caption = Application->Title;
        Path = ExtractFilePath(Application->ExeName);

        SongFileName = "Background.wav";
        mprBackground->FileName = Path + SongFileName;
        mprBackground->Open();
        mprBackground->Play();

//        FileName = "Home-2.bmp";
//        GoFileName = "Go.bmp";
//        imgMain->Picture->LoadFromFile(Path+FileName);
        try
        {
                qryMain->Active = false;
                qryMain->DatabaseName = Database;
                qryMain->SQL->Clear();
                qryMain->SQL->Add( "SELECT * FROM 原料订购表" );
                qryMain->Prepare();
                qryMain->Open();
                int Quarter;
                int maxBuyQuarter = 0;
                int minBuyQuarter = 100000;
                while( !qryMain->Eof )
                {
                        Quarter = qryMain->FieldByName( "Quarter" )->AsInteger;
                        maxBuyQuarter = maxBuyQuarter>Quarter ? maxBuyQuarter : Quarter;
                        minBuyQuarter = minBuyQuarter<Quarter ? minBuyQuarter : Quarter;
                        qryMain->Next();
                }
                Quarter = qryMain->FieldByName( "Quarter" )->AsInteger;
                maxBuyQuarter = maxBuyQuarter>Quarter ? maxBuyQuarter : Quarter;
                minBuyQuarter = minBuyQuarter<Quarter ? minBuyQuarter : Quarter;
                qryMain->Active = false;
                //  To Get the first and last Quarter in Table  原料订购表
                qryMain->SQL->Clear();
                qryMain->SQL->Add( "SELECT * FROM 产品生产销售表" );
                qryMain->Prepare();
                qryMain->Open();
                int maxUseQuarter = 0;
                int minUseQuarter = 100000;
                while( !qryMain->Eof )
                {
                        Quarter = qryMain->FieldByName( "Quarter" )->AsInteger;
                        maxUseQuarter = maxUseQuarter>Quarter ? maxUseQuarter : Quarter;
                        minUseQuarter = minUseQuarter<Quarter ? minUseQuarter : Quarter;
                        qryMain->Next();
                }
                Quarter = qryMain->FieldByName( "Quarter" )->AsInteger;
                maxUseQuarter = maxUseQuarter>Quarter ? maxUseQuarter : Quarter;
                minUseQuarter = minUseQuarter<Quarter ? minUseQuarter : Quarter;
                qryMain->Active = false;
                //  To Get the first and last Quarter in Table  产品生产销售表
                if( minUseQuarter!=minBuyQuarter )
                {
                        ShowMessageDlg( "数据库系统中出现不安全数据,\n"
                                        "请系统维护员维护并重新启动该系统,否则数据库管理系统不能正常工作。\n"
                                        "\n产生的错误是在下列表中的数据不同步:"
                                        "\n1.产品生产销售表\n2.原料订购表." );
                        ErrorInDatabase = true;
                        ErrorMessageInDatabase = "产生的错误是在下列表中的数据同步:\n\t产品生产销售表\n\t原料订购表.";
                        bbnProductManager->Enabled = false;
                        bbnMaterialManager->Enabled = false;
                        bbnFinanceAnalysis->Enabled = false;
                        return;
                }
                int maxQuarter = maxBuyQuarter<maxUseQuarter ?  maxBuyQuarter : maxUseQuarter;
                int minQuarter = minBuyQuarter;
                //  Use the smaller Quarter for stabics
                tblAvailableMaterial->EmptyTable();
                tblAvailableProduct->EmptyTable();
                //  Be sure that Active is false before empty the table
                tblAvailableMaterial->Active = true;
                tblAvailableProduct->Active = true;
                for( int i= minUseQuarter>0 ? minUseQuarter : (minUseQuarter+1) ; i<=maxUseQuarter ; i++ )
                {
                        qryMain->SQL->Clear();
                        qryMain->SQL->Add( "SELECT SUM(Output), SUM(Sold) FROM 产品生产销售表" );
                        qryMain->SQL->Add( "WHERE Quarter>:minQuarter AND Quarter<=:maxQuarter" );
                        qryMain->ParamByName( "minQuarter" )->AsInteger = minUseQuarter-1;
                        qryMain->ParamByName( "maxQuarter" )->AsInteger = i;
                        qryMain->Prepare();
                        qryMain->Open();
                        long output =   qryMain->Fields->Fields[0]->AsInteger;
                        long sold = qryMain->Fields->Fields[1]->AsInteger;
                        long Available = output - sold ;
                        qryMain->Active = false;
                        tblAvailableProduct->Append();
                        tblAvailableProduct->FieldByName( "Quarter" )->AsInteger = i;
                        tblAvailableProduct->FieldByName( "Available" )->AsInteger =  Available;
                        tblAvailableProduct->Post();
                }
                if( tblAvailableProduct->State==dsEdit || tblAvailableProduct->State==dsInsert )
                        tblAvailableProduct->Post();
                tblAvailableProduct->Active = false;
                //  Complete filling Table 可用产品数量表
                long buyMaterial;
                long useMaterial;
                for( int i= minUseQuarter>0 ? minUseQuarter : (minUseQuarter+1) ; i<=maxQuarter ; i++ )
                {
                        qryMain->SQL->Clear();
                        qryMain->SQL->Add( "SELECT SUM(Quantity) FROM 原料订购表" );
                        qryMain->SQL->Add( "WHERE Quarter>:minQuarter AND Quarter<=:maxQuarter" );
        //              qryMain->SQL->Add( "AND Identity = :identity" );
                        qryMain->ParamByName( "minQuarter" )->AsInteger = minQuarter-1;
                        qryMain->ParamByName( "maxQuarter" )->AsInteger = i;
                        qryMain->Prepare();
                        qryMain->Open();
                        buyMaterial = qryMain->Fields->Fields[0]->AsInteger;
                        qryMain->Active = false;

                        qryMain->SQL->Clear();
                        qryMain->SQL->Add( "SELECT SUM(Output) FROM 产品生产销售表" );
                        qryMain->SQL->Add( "WHERE Quarter>:minQuarter AND Quarter<=:maxQuarter" );
        //              qryMain->SQL->Add( "AND Identity = :identity" );
                        qryMain->ParamByName( "minQuarter" )->AsInteger = minQuarter-1;
                        qryMain->ParamByName( "maxQuarter" )->AsInteger = i;
                        qryMain->Prepare();
                        qryMain->Open();
                        useMaterial = qryMain->Fields->Fields[0]->AsInteger;
                        qryMain->Active = false;

                        tblAvailableMaterial->Append();
                        tblAvailableMaterial->FieldByName( "Quarter" )->AsInteger = i;
                        tblAvailableMaterial->FieldByName( "Available" )->AsInteger = buyMaterial - useMaterial ;
                        tblAvailableMaterial->Post();
                        //  Add a record to the table 可用原料数量表
                }
                if( tblAvailableMaterial->State == dsEdit || tblAvailableMaterial->State == dsInsert )
                        tblAvailableMaterial->Post();
                tblAvailableMaterial->Active = false;
                //  Complete filling Table   可用原料数量表
        }
        catch( EDatabaseError &err )
        {
                ShowMessageDlg( "产生数据库错误:" + err.Message );
                bbnProductManager->Enabled = false;
                bbnMaterialManager->Enabled = false;
                bbnFinanceAnalysis->Enabled = false;
        }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::bbnGoClick(TObject *Sender)
{
        try
        {
                if( tblAvailableProduct->State == dsEdit )
                        tblAvailableProduct->Post();
                if( tblAvailableMaterial->State == dsEdit )
                        tblAvailableMaterial->Post();
                Application->Terminate();
        }
        catch( EDatabaseError &err )
        {
                AnsiString prompt = "产生数据库错误:" + err.Message + "\n退出程序吗?";
                switch( Application->MessageBox( prompt.c_str(),
                         Application->Title.c_str(), MB_YESNO + MB_ICONQUESTION ) )
                {
                        case    IDNO    :       return;
                        default         :       Application->Terminate();
                }
        }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::bbnProductManagerClick(TObject *Sender)
{
        frmProduct->Show();
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::bbnMaterialManagerClick(TObject *Sender)
{
        frmMaterial->Show();
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::bbnFinanceAnalysisClick(TObject *Sender)
{
        frmFinance->Show();
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::bbnSystemManagerClick(TObject *Sender)
{
        static int NumOfPasswordError = 0;
        if( NumOfPasswordError>=3 )
        {
                ShowMessageDlg( "您是系统维护模块的非法用户,请不要尝试进入系统维护模块!" );
                return;
        }
        if( frmPassword->ShowModal()==mrOk )
        {
                if( frmPassword->edtPassword->Text!= PasswordForMaintain )
                {
                        NumOfPasswordError++;
                        ShowMessageDlg( "密码输入错误,请检查CapsLock键是否已经按下并重试!" );
                }
                else
                {
                        NumOfPasswordError = 0;
                        (new TfrmMaintain(this))->Visible = true;
                }
        }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::BitBtn1Click(TObject *Sender)

⌨️ 快捷键说明

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