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

📄 dlgstockinfo.cpp

📁 从联合证券数据读取股票数据以及画出K线。不完善
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// DlgStockInfo.cpp : implementation file
//

#include "stdafx.h"
#include "StockDataParse.h"
#include "DlgStockInfo.h"
#include "DataDefine.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// DlgStockInfo dialog


DlgStockInfo::DlgStockInfo(CWnd* pParent /*=NULL*/)
	: CDialog(DlgStockInfo::IDD, pParent)
{
	//{{AFX_DATA_INIT(DlgStockInfo)
	m_strOutput = _T("");
	m_strStockCode = _T("");
	//}}AFX_DATA_INIT
}


void DlgStockInfo::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(DlgStockInfo)
	DDX_Control(pDX, IDC_COMBO_BLOCK, m_COM_Block);
	DDX_Control(pDX, IDC_COMBO_HY, m_comboHY);
	DDX_Control(pDX, IDC_COMBO_DY, m_comboDY);
	DDX_Text(pDX, IDC_EDIT_OUTPUT, m_strOutput);
	DDX_Text(pDX, IDC_EDIT_STOCKCODE, m_strStockCode);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(DlgStockInfo, CDialog)
	//{{AFX_MSG_MAP(DlgStockInfo)
	ON_BN_CLICKED(IDC_BTN_QUERY_STOCK_CODE, OnBtnQueryStockCode)
	ON_BN_CLICKED(IDC_BTN_QUERY_DY, OnBtnQueryDy)
	ON_BN_CLICKED(IDC_BTN_QUERY_HY, OnBtnQueryHy)
	ON_BN_CLICKED(IDC_BTN_READ_REALATION, OnBtnReadRealation)
	ON_BN_CLICKED(IDC_BTN_BANKUAI, OnBtnBankuai)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// DlgStockInfo message handlers



void DlgStockInfo::OnBtnQueryStockCode() 
{
	UpdateData(TRUE);

	ST_StockReportInfoList::iterator iter;	
	
	
	iter=mST_StockReportInfoList.begin();
	
	
	
	for(;iter!=mST_StockReportInfoList.end();iter++)
	{
		if(m_strStockCode == iter->chGpdm)
		{
			m_strOutput = "更新时间:";
			CString strTemp ;
			m_strOutput +=iter->chGxrq;

			
			
			strTemp = " 	注意:以下数据的货币单位(元)为人民币\r\n\r\n";
			m_strOutput +=strTemp;

			CString strGpdm = iter->chGpdm;
			CString strGpName = mStockDateProcess.StockCode2StockName(strGpdm,m_ST_StockNameInfoList);
			
			strTemp.Format("\t\t\t\t%s:  %s   基本资料\r\n",iter->chGpdm,strGpName);
			m_strOutput += strTemp;
			strTemp.Format("\t总股本:  %0.2lf万股\t\t\t流通A股:      %0.2lf万股\r\n",iter->fZgb,iter->fLtag);
			m_strOutput +=strTemp;
			strTemp.Format("\t总资产:  %0.2lf万元\t\t\t流动资产:   %0.2lf万元\r\n",iter->fZzc, iter->fLdzc);
			m_strOutput +=strTemp;
			strTemp.Format("\t固定资产:  %0.2lf万元\t\t\t无形资产:   %0.2lf万元\r\n",iter->fGdzc, iter->fWxzc);
			m_strOutput +=strTemp;
			strTemp.Format("\t长期投资:  %0.2lf万元\t\t\t流动负债:   %0.2lf万元\r\n",iter->fCqtz, iter->fLdfz);
			m_strOutput +=strTemp;
			strTemp.Format("\t长期负债:  %0.2lf万元  \r\n", iter->fCqfz);
			m_strOutput +=strTemp;

			
			strTemp.Format("\t资本公积金:  %0.2lf万元\t\t净资产:   %0.2lf万元\r\n",iter->fZbgjj, iter->fJzc);
			m_strOutput +=strTemp;
			strTemp.Format("\t主营收入:  %0.2lf万元\t\t\t主营利润:   %0.2lf万元\r\n",iter->fZysy, iter->fZyly);
			m_strOutput +=strTemp;
			strTemp.Format("\t应收帐款:  %0.2lf万元\t\t\t营业利润:   %0.2lf万元\r\n",iter->fQtly, iter->fYyly);
			m_strOutput +=strTemp;
			strTemp.Format("\t投资收益:  %0.2lf万元\t\t\t经营现金流量:   %0.2lf万元\r\n",iter->fTzsy, iter->fBtsy);
			m_strOutput +=strTemp;
			strTemp.Format("\t总现金流量:  %0.2lf万元\t\t存货:   %0.2lf万元\r\n",iter->fYywsz, iter->fSnsytz);
			m_strOutput +=strTemp;
			strTemp.Format("\t利润总额:  %0.2lf万元\t\t\t税后利润:   %0.2lf万元\r\n",iter->fLyze, iter->fShly);
			m_strOutput +=strTemp;
			strTemp.Format("\t净利润:  %0.2lf万元\t\t\t未分配利润:   %0.2lf万元\r\n",iter->fJly, iter->fWfply);
			
			m_strOutput +=strTemp;
			strTemp.Format("\t所属地区:  %s板块\t\t\t所属行业:   %s行业\r\n",mStockDateProcess.ParseDy(iter->chDy),mStockDateProcess.ParseHy(iter->chHy));
			m_strOutput +=strTemp;
			strTemp.Format("\t报告类别:  %s\r\n",mStockDateProcess.ParseJblx(iter->chZbnb));
			m_strOutput +=strTemp;
			strTemp.Format("\t上市日期:  %s\r\n\r\n\r\n",iter->chSsDate);
			m_strOutput +=strTemp;


			//每股
			float fAveJzc    =   (iter->fJzc)/(iter->fZgb);          //每股净资产       =净资产 / 总股本
			float fAvesy     =   (iter->fJly)/(iter->fZgb);          //每股收益        =净利润 / 总股本
			float fAvegjj    =   (iter->fZbgjj)/(iter->fZgb);        //每股公积金      = 资本公积金 / 总股本
			float fAveBtsy   =   (iter->fBtsy)/(iter->fZgb);         //每股经营现金流= 经营现金流量 / 总股本 
			
			
			float fRatioZylr;                              ////主营业务利润率	= 主营利润 / 主营收入
			if(iter->fZysy ==0)
			{
				fRatioZylr = 0.0;
			}
			else
			{
				fRatioZylr= 100*iter->fZyly / iter->fZysy;      
			}
					
			float fRatioJzcSy;                  //净资产收益率     =每股收益 /每股净资产
			if(iter->fZzc ==0.0)
			{
				fRatioJzcSy= 0.0;
			}
			else
			{
				fRatioJzcSy = 100*fAvesy/fAveJzc;               
			}
			float fRatioZcfz = 100*(iter->fCqfz + iter->fLdfz)/(iter->fZzc);  //资产负债率 =(长期负债+流动负债)/ 总资产 
			
			//股东权益比: =?  
			float fRatioGdqy =   100*(iter->fJzc)/(iter->fZzc) ;               //股东权益比=股东权益/总资产

			
			//速动比率: =?速动比率,也称酸性测试比率,是流动资产金额减去存货金额后,再除以流动负债的比值
			float fRatioSudong ;//   // 速动比率=(流动资产-存货)/流动负债
			if(iter->fLdfz ==0.0)
			{
				fRatioSudong= 0.0;
			}
			else
			{
				fRatioSudong = 100*(iter->fLdzc - iter->fSnsytz)/ iter->fLdfz;               
			}

			strTemp.Format("\t每股净资产:  %0.3lf元\t\t\t    每股收益:   %0.3lf元\r\n",fAveJzc, fAvesy);
			m_strOutput +=strTemp;
			strTemp.Format("\t每股公积金:  %0.3lf元\t\t\t    每股经营现金流:   %0.3lf元\r\n",fAvegjj, fAveBtsy);
			m_strOutput +=strTemp;

			strTemp.Format("\t主营业务利润率:  %0.2lf%%\t\t\t    净资产收益率:   %0.2lf%%\r\n",fRatioZylr, fRatioJzcSy);
			m_strOutput +=strTemp;
			strTemp.Format("\t资产负债率:  %0.2lf%%\r\n",fRatioZcfz);
			m_strOutput +=strTemp;


			strTemp.Format("\t股东权益比:  %0.2lf%%\t\t\t    速动比率:   %0.2lf%%\r\n",fRatioGdqy, fRatioSudong);
			m_strOutput +=strTemp;
			//fRatioSudong




			break;
		}
	}
	
	UpdateData(FALSE);
}

void DlgStockInfo::OnBtnQueryDy() 
{
	
	int nIndex = m_comboDY.GetCurSel()+1;

	
	CString strTemp;
	//query
	ST_StockReportInfoList::iterator iter;		
	iter=mST_StockReportInfoList.begin();
	

	m_strOutput.Empty() ;
	for(;iter!=mST_StockReportInfoList.end();iter++)
	{
		if((unsigned char)(nIndex) == iter->chDy)
		{
			CString strGpdm = iter->chGpdm;
			CString strGpName = mStockDateProcess.StockCode2StockName(strGpdm,m_ST_StockNameInfoList);
			strTemp.Format("stock code:%s\t\t  stock name: %s\r\n",iter->chGpdm, strGpName);
			//strTemp.Format("stock code:%s\r\n",iter->chGpdm);
			m_strOutput += strTemp;

			strTemp.Format("\t总股本:  %0.2lf万股\t\t\t流通A股:      %0.2lf万股\r\n",iter->fZgb,iter->fLtag);
			m_strOutput += strTemp;
			
			strTemp.Format("\t净资产:  %0.2lf万\t\t\t\r\n",iter->fJzc);
			m_strOutput += strTemp;
			
			strTemp.Format("\t每股净资产:  %0.3lf元\t\t\t    每股收益:   %0.3lf元\r\n",iter->fAveJzc, iter->fAvesy);
			m_strOutput +=strTemp;

			strTemp.Format("\t每股净资产/每股收益:   %0.3lf\r\n",iter->fAveJzc/iter->fAvesy);
			m_strOutput +=strTemp;
		}
	}
	
	UpdateData(FALSE);
}

void DlgStockInfo::OnBtnQueryHy() 
{
	// TODO: Add your control notification handler code here
	int nIndex = m_comboHY.GetCurSel()+1;

	ST_StockReportInfoList::iterator iter;		
	iter=mST_StockReportInfoList.begin();
	
	CString strTemp;

	/*
	*	float    fRatioZylr;      //主营业务利润率	= 主营利润 / 主营收入		
	float    fRatioJzcSy ;     //净资产收益率     =每股收益 /每股净资产
	float    fRatioZcfz;      //资产负债率 =(长期负债+流动负债)/ 总资产 
	 */
	float    fAveRatioZylr=0.0;      //行业平均主营业务利润率	= 主营利润 / 主营收入		
	float    fAveRatioJzcSy=0.0 ;     //行业净资产收益率     =每股收益 /每股净资产
	float    fAveRatioZcfz=0.0;      //行业资产负债率 =(长期负债+流动负债)/ 总资产 

	float  fZzc =0.0;           //zongzichan



	int iCount=0;
	
	m_strOutput.Empty() ;
	for(;iter!=mST_StockReportInfoList.end();iter++)
	{
		char chCmp[9]="20080101";
		if(((unsigned char)(nIndex) == iter->chHy) &&(memcpy(iter->chGxrq ,chCmp,8)>0))
		{
			CString strGpdm = iter->chGpdm;
			CString strGpName = mStockDateProcess.StockCode2StockName(strGpdm,m_ST_StockNameInfoList);
			strTemp.Format("stock code:%s\t  stock name: %s\r\n",iter->chGpdm, strGpName);
			iCount++;
			fAveRatioZylr += iter->fRatioZylr;
			fAveRatioJzcSy += iter->fRatioJzcSy;
			fAveRatioZcfz += iter->fRatioZcfz;

			
			m_strOutput += strTemp;

			strTemp.Format("\t总股本:  %0.2lf万股\t\t\t流通A股:      %0.2lf万股\r\n",iter->fZgb,iter->fLtag);
			m_strOutput += strTemp;

			strTemp.Format("\t净资产:  %0.2lf万\t\t\t\r\n",iter->fJzc);
			m_strOutput += strTemp;

			strTemp.Format("\t每股净资产:  %0.3lf元\t\t\t    每股收益:   %0.3lf元\r\n",iter->fAveJzc, iter->fAvesy);
			m_strOutput +=strTemp;
			strTemp.Format("\t每股净资产/每股收益:   %0.3lf\r\n",iter->fAveJzc/iter->fAvesy);
			m_strOutput +=strTemp;
		}
	}
	fAveRatioZylr /= iCount;
	fAveRatioJzcSy /= iCount;
	fAveRatioZcfz /= iCount;

	strTemp.Format("%s行业平均主营业务利润率%0.3lf%%\r\n",mStockDateProcess.ParseHy(nIndex),fAveRatioZylr);
	m_strOutput += strTemp;
	strTemp.Format("净资产收益率%0.3lf%%\r\n",fAveRatioJzcSy);
	m_strOutput += strTemp;
	strTemp.Format("资产负债率%0.3lf%%\r\n",fAveRatioZcfz);
	m_strOutput += strTemp;
	UpdateData(FALSE);
	
}



//DEL void DlgStockInfo::OnBtnQueryJzcsy() 
//DEL {
//DEL 	// TODO: Add your control notification handler code here
//DEL 	ST_StockReportInfoList::iterator iter;		
//DEL 	iter=mST_StockReportInfoList.begin();	
//DEL 	
//DEL 	m_strOutput.Empty();
//DEL 	CString strTemp;
//DEL 	const float cfJzcsylv = 10.0;
//DEL 	for(;iter!=mST_StockReportInfoList.end();iter++)
//DEL 	{
//DEL 		if(cfJzcsylv < iter->fRatioJzcSy) //
//DEL 		{
//DEL 			strTemp.Format("stock code:%s\r\n",iter->chGpdm);
//DEL 			
//DEL 			m_strOutput += strTemp;
//DEL 		}
//DEL 	}
//DEL 	UpdateData(FALSE);
//DEL }

void DlgStockInfo::OnBtnReadRealation() 
{	

	static char displayname[MAX_PATH];
	static char path[MAX_PATH];
    LPITEMIDLIST pidlBrowse;     
	BROWSEINFO bi;
	bi.hwndOwner = this->m_hWnd;
	bi.pidlRoot = NULL;
	bi.pszDisplayName = displayname;
	bi.lpszTitle = "请选择data文件夹";
	bi.ulFlags = BIF_EDITBOX ;
	bi.lpfn = NULL;
	pidlBrowse=SHBrowseForFolder( &bi);
	if(pidlBrowse!=NULL)
	{
		SHGetPathFromIDList(pidlBrowse,path);
	}
	CString strDir =path;  //得到路径
	if(strDir.IsEmpty()) 
	{
		return;  //如果没有选择,就返回
	}
	

	strDir +='\\';

	//read daima mingcheng
	ReadRelationData(strDir);

	//read database data
	ReadDbData(strDir);

	//read bank kuai data
	ReadBanKuaiData(strDir);
	
}




int DlgStockInfo::ReadDbData(CString strFileName)
{

	strFileName = strFileName+"base.dbf";
	const int ci_FILE_LEN=24*1024*1024;
	const int ci_Len=10;
	

	ST_StockReportInfo oST_StockReportInfo;

⌨️ 快捷键说明

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