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

📄 sbjhdlg.cpp

📁 这是一套学校设备管理系统的源码 里面有树形结构使用的很棒的方法
💻 CPP
字号:
 // sbjhdlg.cpp : implementation file
//

#include "stdafx.h"
#include "xxgl.h"
#include "sbjhdlg.h"
#include "yszmxzsbdlg.h"
#include "jhsqbdlg.h"
#include "math.h"
#include "strt.h"
#include "ext.h"
#include "func.h"

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

static char buf1[17][50];
static char xxlb[10],pblb1[10],pbsl[15],pbsbmc[50];
static FILE *dfpe;
static char xzgdbh[10],xzsbmc[50];

Csbjhdlg::Csbjhdlg(CWnd* pParent /*=NULL*/)
	: CDialog(Csbjhdlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(Csbjhdlg)
	m_ckjg = _T("");
	m_gdbh = _T("");
	m_jldw = _T("");
	m_kcsl = _T("");
	m_pbsl = _T("");
	m_pyjx = _T("");
	m_sbmc = _T("");
	m_sxsl = _T("");
	//}}AFX_DATA_INIT
	out_flag = 0;

	FILE *fpe;
	fpe = fopen("c:\\xxsbgl\\xxxx.txt","r");
    if (fpe != NULL){
		fscanf(fpe,"%s\n",xxlb);
	    fscanf(fpe,"%s\n",pblb1);
	    fclose(fpe);
    }
    dfpe = NULL;
	if (strcmp(xxlb,"中学") == 0){
				dfpe = fopen("c:\\xxsbgl\\zxpb.dat","rb");
    }
	if (strcmp(xxlb,"小学") == 0){
				dfpe = fopen("c:\\xxsbgl\\xxpb.dat","rb");
    }
    g_old_htreeitem = NULL;
}

Csbjhdlg::~Csbjhdlg()
{
   if (dfpe != NULL)
	   fclose(dfpe);
   dfpe = NULL;
}

void Csbjhdlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(Csbjhdlg)
	DDX_Control(pDX, IDC_TREE1, m_tree);
	DDX_Text(pDX, IDC_ckjg, m_ckjg);
	DDX_Text(pDX, IDC_gdbh, m_gdbh);
	DDX_Text(pDX, IDC_jldw, m_jldw);
	DDX_Text(pDX, IDC_kcsl, m_kcsl);
	DDX_Text(pDX, IDC_pbsl, m_pbsl);
	DDX_Text(pDX, IDC_pyjx, m_pyjx);
	DDX_Text(pDX, IDC_sbmc, m_sbmc);
	DDX_Text(pDX, IDC_sxsl, m_sxsl);
	//}}AFX_DATA_MAP


  CBitmap *bitmap;
  CBitmap *bitmap1;
  
  HBITMAP hbitmap;
  HBITMAP hbitmap1;
  
  bitmap = new CBitmap();
  bitmap1 = new CBitmap();


  bitmap->LoadBitmap(IDB_sb);
  bitmap1->LoadBitmap(IDB_tc);


  hbitmap = (*bitmap).operator HBITMAP();
  hbitmap1 = (*bitmap1).operator HBITMAP();

  
  CWnd *wn;
  CWnd *wn1;


  wn = GetDlgItem(IDSHENBAO);
  wn1 = GetDlgItem(IDCANCEL);
 // wn2 = GetDlgItem(IDOK3);

  WPARAM wParam;
  LPARAM lParam;
  wParam =  (WPARAM) LOWORD(BS_LEFT | BS_BITMAP); // style 
  lParam =  MAKELPARAM(TRUE, 0);   // redraw flag 
  wn->SendMessage(BM_SETIMAGE, IMAGE_BITMAP,(long)hbitmap);
  wn1->SendMessage(BM_SETIMAGE, IMAGE_BITMAP,(long)hbitmap1);

	if (out_flag == 0)
	  load_sbtree(m_tree);

}


BEGIN_MESSAGE_MAP(Csbjhdlg, CDialog)
	//{{AFX_MSG_MAP(Csbjhdlg)
	ON_BN_CLICKED(IDSHENBAO, OnShenbao)
	ON_EN_CHANGE(IDC_pyjx, OnChangepyjx)
	ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, OnSelchangedTree1)
	ON_NOTIFY(TVN_ITEMEXPANDED, IDC_TREE1, OnItemexpandedTree1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Csbjhdlg message handlers

void Csbjhdlg::OnShenbao() 
{
    Cjhsqbdlg dlg;
	char buf[50];
    
	free_sbtree(m_tree);
	GetDlgItemText(IDC_sbmc,buf,50);
	dlg.m_mc = buf;
	GetDlgItemText(IDC_ckjg,buf,50);
	dlg.m_jg = buf;
	dlg.DoModal();
	load_sbtree(m_tree);
	CWnd *wd;
	wd = GetDlgItem(IDC_pyjx);
	wd->SetFocus();
}

void Csbjhdlg::OnChangepyjx() 
{
	char buf[40];
	int i,ret,j;
	double kcsl,psl,sxsl;

	if (g_yszm_xzsb_flag == 0){
	  GetDlgItemText(IDC_pyjx,buf,20);
	  Cyszmxzsbdlg dlg;
	  g_yszm_xzsb_flag = 1;
	  g_xzxzsb_flag = 1;
      strcpy(g_yszm_xzsb_pass_buf,buf);
	  if (dlg.DoModal() == IDOK){
	    g_xzxzsb_flag = 0;
		i = g_yszm_sel_sb;
	    g_yszm_xzsb_flag = 1;

		SetDlgItemText(IDC_jldw,"");
		SetDlgItemText(IDC_pbsl,"0");
		SetDlgItemText(IDC_sxsl,"0");
		SetDlgItemText(IDC_ckjg,"0");

        g_yszm_xzsb_flag = 1;
		SetDlgItemText(IDC_pyjx,g_e_abbr[i]);
		SetDlgItemText(IDC_sbmc,g_e_name[i]);
		strcpy(xzsbmc,g_e_name[i]);
		strcpy(xzgdbh,g_a_id[i]);

        g_yszm_xzsb_flag = 1;
		SetDlgItemText(IDC_gdbh,g_a_id[i]);

		kcsl = get_kcsl_of_one_thing(g_e_name[i],g_a_id[i]);
		if (fabs(kcsl - (int)kcsl) < 0.01){
			sprintf(buf,"%.0lf",kcsl);
        }
		else{
			sprintf(buf,"%.2lf",kcsl);
        }
		SetDlgItemText(IDC_kcsl,buf);

		j = i;
	    m_tree.SelectDropTarget(g_htreeitem[i]);
	    m_tree.SelectItem(g_htreeitem[i]);
		if (dfpe != NULL){
	          if (strcmp(xxlb,"小学") == 0){
                ret = 0;
				fseek(dfpe,0L,SEEK_SET);
		        while (ret == 0){
		          for (i=0;i<11;i++){
                    ret = get_a_line(dfpe,buf1[i]);
		            if (ret == -1)
			          break;
				  }
		          if (ret != -1){
                    trim(buf1[1]);
		            strcpy(pbsbmc,buf1[1]);
	                strcpy(pbsl,"0");
                    if (strcmp(pblb1,"一级") == 0)
		              strcpy(pbsl,buf1[7]);
                    if (strcmp(pblb1,"二级") == 0)
		              strcpy(pbsl,buf1[8]);
                    if (strcmp(pblb1,"三级") == 0)
		              strcpy(pbsl,buf1[9]);
                    if (strcmp(pblb1,"四级") == 0)
		              strcpy(pbsl,buf1[10]);
					if (strcmp(pbsbmc,g_e_name[j]) == 0){
					  trim(pbsl);
                      SetDlgItemText(IDC_pbsl,pbsl);
                      psl = atof(pbsl);
					  sxsl = psl - kcsl;
					  if (fabs(sxsl - (int)sxsl) < 0.01)
					    sprintf(buf,"%.0lf",sxsl);
                      else
					    sprintf(buf,"%.2lf",sxsl);
                      SetDlgItemText(IDC_sxsl,buf);
					  trim(buf1[5]);
                      SetDlgItemText(IDC_jldw,buf1[5]);
					}
				  } 
				}
			  }
	          else{
                ret = 0;
				fseek(dfpe,0L,SEEK_SET);
		        while (ret == 0){
		          for (i=0;i<17;i++){
                    ret = get_a_line(dfpe,buf1[i]);
		            if (ret == -1)
			          break;
				  }
		          if (ret != -1){
                    trim(buf1[1]);
		            strcpy(pbsbmc,buf1[1]);
	                strcpy(pbsl,"0");
                    if (strcmp(pblb1,"一级") == 0)
		              strcpy(pbsl,buf1[5]);
                    if (strcmp(pblb1,"二级") == 0)
		              strcpy(pbsl,buf1[6]);
                    if (strcmp(pblb1,"三级") == 0)
		              strcpy(pbsl,buf1[7]);
                    if (strcmp(pblb1,"四级") == 0)
		              strcpy(pbsl,buf1[8]);
					if (strcmp(pbsbmc,g_e_name[j]) == 0){
					  trim(pbsl);
                      SetDlgItemText(IDC_pbsl,pbsl);
                      psl = atof(pbsl);
					  sxsl = psl - kcsl;
					  if (fabs(sxsl - (int)sxsl) < 0.01)
					    sprintf(buf,"%.0lf",sxsl);
                      else
					    sprintf(buf,"%.2lf",sxsl);
                      SetDlgItemText(IDC_sxsl,buf);
					  trim(buf1[3]);
                      SetDlgItemText(IDC_jldw,buf1[3]);
					}
				  } 
				}
			  }
        }
	    CWnd *wnd;
	    wnd = GetDlgItem(IDSHENBAO);
	    wnd->SetFocus();
	  }
	  else{
	    g_xzxzsb_flag = 0;
      }
	}
	else{
      g_yszm_xzsb_flag = 0;
    }

}


void Csbjhdlg::OnItemexpandedTree1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	m_tree.Invalidate(TRUE);
	*pResult = 0;
}

void Csbjhdlg::OnCancel() 
{
	out_flag = 1;
	free_sbtree(m_tree);
	CDialog::OnCancel();
}
/*
void Csbjhdlg::OnOK() 
{
	out_flag = 1;
	free_sbtree(m_tree);
	CDialog::OnOK();
}
*/
double get_kcsl_of_one_thing(char name[50],char bh[10])
{
	FILE *fpe;
    int i;
	double num,num1;
	long l;
    
	num = 0;
	fpe = fopen("c:\\xxsbgl\\qczm.dat","rb");
	if (fpe != NULL){
		fseek(fpe,0L,SEEK_END);
		l = ftell(fpe);
		fseek(fpe,0L,SEEK_SET);
        for (i=0;i<l/453;i++){
			fread(&(zmunit.reserve[0]),453,1,fpe);
            zmunit.gdbh[10] = 0;
			zmunit.sbmc[50] = 0;
			trim(zmunit.gdbh);
			trim(zmunit.sbmc);
			if ((strcmp(zmunit.gdbh,bh) == 0) &&
				(strcmp(zmunit.sbmc,name) == 0)){
			    zmunit.wpsl[14] = 0;
                num1 = atof(zmunit.wpsl);
				num += num1;
			}
        }
		fclose(fpe);
    }
	fpe = fopen("c:\\xxsbgl\\sbrkzm.dat","rb");
	if (fpe != NULL){
		fseek(fpe,0L,SEEK_END);
		l = ftell(fpe);
		fseek(fpe,0L,SEEK_SET);
        for (i=0;i<l/453;i++){
			fread(&(zmunit.reserve[0]),453,1,fpe);
            zmunit.gdbh[10] = 0;
			zmunit.sbmc[50] = 0;
			trim(zmunit.gdbh);
			trim(zmunit.sbmc);
			if ((strcmp(zmunit.gdbh,bh) == 0) &&
				(strcmp(zmunit.sbmc,name) == 0)){
			    zmunit.wpsl[14] = 0;
                num1 = atof(zmunit.wpsl);
				num += num1;
			}
        }
		fclose(fpe);
    }
	fpe = fopen("c:\\xxsbgl\\sbckzm.dat","rb");
	if (fpe != NULL){
		fseek(fpe,0L,SEEK_END);
		l = ftell(fpe);
		fseek(fpe,0L,SEEK_SET);
        for (i=0;i<l/280;i++){
			fread(&(sbckunit.reserve[0]),280,1,fpe);
            sbckunit.gdbh[9] = 0;
			sbckunit.sbmc[41] = 0;
			trim(sbckunit.gdbh);
			trim(sbckunit.sbmc);
			if ((strcmp(sbckunit.gdbh,bh) == 0) &&
				(strcmp(sbckunit.sbmc,name) == 0)){
			    sbckunit.cksl[11] = 0;
                num1 = atof(sbckunit.cksl);
				num -= num1;
			}
        }
		fclose(fpe);
    }

    return num;
}

void Csbjhdlg::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	HTREEITEM htreeitem;
	int i,j;
	CString str;
	int ret;
	double kcsl,psl,sxsl;
	FILE *fpe;
	char buf[100];

	htreeitem = m_tree.GetSelectedItem();
	if (htreeitem != NULL){
	  for (j=0;j<g_end_sbs;j++){
		if (g_htreeitem[j] == htreeitem){
			i = j;
			break;
        }
	  }

      g_yszm_sel_sb = i; 

	  if ((strstr(g_e_name[i],"其他") == NULL)&&
	      (strstr(g_e_name[i],"其它") == NULL)){
	  for (i=0;i<g_end_sbs;i++){
		if (g_parent[i] == g_yszm_sel_sb){
	      *pResult = 0;
		  return;
        }
	  } 
	  }

	  i = g_yszm_sel_sb;
	  strcpy(xzsbmc,g_e_name[i]);
	  strcpy(xzgdbh,g_a_id[i]);
	  m_tree.SelectDropTarget(g_htreeitem[i]);
	  m_tree.SelectItem(g_htreeitem[i]);
	  g_yszm_xzsb_flag = 1;
      SetDlgItemText(IDC_byjx,g_e_abbr[i]);
	  SetDlgItemText(IDC_sbmc,g_e_name[i]);
      g_yszm_xzsb_flag = 1;
	  SetDlgItemText(IDC_gdbh,g_a_id[i]);
	  SetDlgItemText(IDC_yqdm,g_e_code[i]);
	  SetDlgItemText(IDC_scdm,g_p_id[i]);

	  j = i;

		SetDlgItemText(IDC_jldw,"");
		SetDlgItemText(IDC_pbsl,"0");
		SetDlgItemText(IDC_sxsl,"0");
		SetDlgItemText(IDC_ckjg,"0");

		if (dfpe != NULL){
	          if (strcmp(xxlb,"小学") == 0){
                ret = 0;
				fseek(dfpe,0L,SEEK_SET);
		        while (ret == 0){
		          for (i=0;i<11;i++){
                    ret = get_a_line(dfpe,buf1[i]);
		            if (ret == -1)
			          break;
				  }
		          if (ret != -1){
                    trim(buf1[1]);
		            strcpy(pbsbmc,buf1[1]);
	                strcpy(pbsl,"0");
                    if (strcmp(pblb1,"一级") == 0)
		              strcpy(pbsl,buf1[7]);
                    if (strcmp(pblb1,"二级") == 0)
		              strcpy(pbsl,buf1[8]);
                    if (strcmp(pblb1,"三级") == 0)
		              strcpy(pbsl,buf1[9]);
                    if (strcmp(pblb1,"四级") == 0)
		              strcpy(pbsl,buf1[10]);
					if (strcmp(pbsbmc,g_e_name[j]) == 0){
					  trim(pbsl);
                      SetDlgItemText(IDC_pbsl,pbsl);
                      psl = atof(pbsl);
					  sxsl = psl - kcsl;
					  if (fabs(sxsl - (int)sxsl) < 0.01)
					    sprintf(buf,"%.0lf",sxsl);
                      else
					    sprintf(buf,"%.2lf",sxsl);
                      SetDlgItemText(IDC_sxsl,buf);
					  trim(buf1[5]);
                      SetDlgItemText(IDC_jldw,buf1[5]);
					}
				  } 
				}
			  }
	          else{
                ret = 0;
				fseek(dfpe,0L,SEEK_SET);
		        while (ret == 0){
		          for (i=0;i<17;i++){
                    ret = get_a_line(dfpe,buf1[i]);
		            if (ret == -1)
			          break;
				  }
		          if (ret != -1){
                    trim(buf1[1]);
		            strcpy(pbsbmc,buf1[1]);
	                strcpy(pbsl,"0");
                    if (strcmp(pblb1,"一级") == 0)
		              strcpy(pbsl,buf1[5]);
                    if (strcmp(pblb1,"二级") == 0)
		              strcpy(pbsl,buf1[6]);
                    if (strcmp(pblb1,"三级") == 0)
		              strcpy(pbsl,buf1[7]);
                    if (strcmp(pblb1,"四级") == 0)
		              strcpy(pbsl,buf1[8]);
					if (strcmp(pbsbmc,g_e_name[j]) == 0){
					  trim(pbsl);
                      SetDlgItemText(IDC_pbsl,pbsl);
                      psl = atof(pbsl);
					  sxsl = psl - kcsl;
					  if (fabs(sxsl - (int)sxsl) < 0.01)
					    sprintf(buf,"%.0lf",sxsl);
                      else
					    sprintf(buf,"%.2lf",sxsl);
                      SetDlgItemText(IDC_sxsl,buf);
					  trim(buf1[3]);
                      SetDlgItemText(IDC_jldw,buf1[3]);
					}
				  } 
				}
			  }
        }
	    CWnd *wnd;
	    wnd = GetDlgItem(IDSHENBAO);
        wnd->SetFocus();

    }	
	*pResult = 0;
}

⌨️ 快捷键说明

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