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

📄 yszmdlg.cpp

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

#include "stdafx.h"
#include "xxgl.h"
#include "yszmdlg.h"
#include "time.h"
#include "ime.h"
#include "imm.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

Cyszmdlg::Cyszmdlg(CWnd* pParent /*=NULL*/)
	: CDialog(Cyszmdlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(Cyszmdlg)
	m_byjx = _T("");
	m_cjpp = _T("");
	m_gdbh = _T("");
	m_ghdw = _T("");
	m_jbr = _T("");
	m_sbmc = _T("");
	m_scdm = _T("");
	m_ssbm = _T("");
	m_xhgg = _T("");
	m_yqdm = _T("");
	m_wpdj = 0.0f;
	m_zje = 0.0f;
	m_wpsl = 0.0f;
	//}}AFX_DATA_INIT
}


void Cyszmdlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(Cyszmdlg)
	DDX_Control(pDX, IDC_LIST1, m_list);
	DDX_Control(pDX, IDC_rkfs, m_rkfs);
	DDX_Control(pDX, IDC_ygy, m_ygy);
	DDX_Control(pDX, IDC_rkn, m_rkn);
	DDX_Control(pDX, IDC_ygn, m_ygn);
	DDX_Control(pDX, IDC_ygr, m_ygr);
	DDX_Control(pDX, IDC_rky, m_rky);
	DDX_Control(pDX, IDC_rkr, m_rkr);
	DDX_Control(pDX, IDC_xyg, m_xyg);
	DDX_Control(pDX, IDC_TREE1, m_tree);
	DDX_Text(pDX, IDC_byjx, m_byjx);
	DDX_Text(pDX, IDC_cjpp, m_cjpp);
	DDX_Text(pDX, IDC_gdbh, m_gdbh);
	DDX_Text(pDX, IDC_ghdw, m_ghdw);
	DDX_Text(pDX, IDC_jbr, m_jbr);
	DDX_Text(pDX, IDC_sbmc, m_sbmc);
	DDX_Text(pDX, IDC_scdm, m_scdm);
	DDX_Text(pDX, IDC_ssbm, m_ssbm);
	DDX_Text(pDX, IDC_xhgg, m_xhgg);
	DDX_Text(pDX, IDC_yqdm, m_yqdm);
	DDX_Text(pDX, IDC_wpdj, m_wpdj);
	DDX_Text(pDX, IDC_zje, m_zje);
	DDX_Text(pDX, IDC_wpsl, m_wpsl);
	//}}AFX_DATA_MAP
	HTREEITEM htreeitem;
	HTREEITEM h1,h2;
	FILE *fpe;
	char e_id_buf[50],e_code_buf[50],p_id_buf[50];
	char e_name_buf[50],e_abbr_buf[50],a_id_buf[50];
	char m_un_buf[50],c_pr_buf[50];
	char id_buf[7][3];
	int i,j,k,l,n,m;
	long order;
	int flag,flag1;
	char buf1[50];
	int parent,ret;
	char buf2[10];
	char buf[100];
	float ff;
	int tt;

	if (g_come_in_flag == 0){
//	m_rkn = _T("");
    g_cur_sb_search_pos = 0;
    g_old_htreeitem = NULL;
	fpe = fopen("c:\\xxsbgl\\sbqk.txt","rb");
	i = 0;
	flag = 0;
	g_end_p = g_begin_p = 0;
	while (flag == 0){
	  ret = get_a_line(fpe,g_e_id[i]);
	  if (ret == -1)
		  break;
	  get_a_line(fpe,g_e_code[i]);
	  get_a_line(fpe,g_p_id[i]);
	  get_a_line(fpe,g_e_name[i]);
	  get_a_line(fpe,g_e_abbr[i]);
	  get_a_line(fpe,g_a_id[i]);
	  get_a_line(fpe,g_m_un[i]);
	  get_a_line(fpe,g_c_pr[i]);
	  get_a_line(fpe,buf2);
	  g_parent[i] = atoi(buf2);
	  if (buf2[0] != '-'){
		  if ((buf2[0] < '0')||(buf2[0] > '9'))
			  j = 0;
	  }
	  order = i;
	  if (g_parent[i] == -1)
        g_htreeitem[i] = m_tree.InsertItem(0,"",0,0,TVIS_BOLD,0xff,order,NULL,TVI_LAST);
	  else
        g_htreeitem[i] = m_tree.InsertItem(0,"",0,0,TVIS_BOLD,0xff,order,g_htreeitem[g_parent[i]],TVI_LAST);
	  m_tree.SetItemText(g_htreeitem[i],g_e_name[i]);
	  i ++;
	}
    g_end_sbs = i;

	fpe = fopen("c:\\xxsbgl\\yszm.dat","rb");
	if (fpe == NULL)
		return;

	fread(buf,1,1,fpe);
	fread(buf,60,1,fpe);
	SetDlgItemText(IDC_sbmc,buf);
	fread(buf,20,1,fpe);
	SetDlgItemText(IDC_gdbh,buf);
	fread(buf,20,1,fpe);
	SetDlgItemText(IDC_yqdm,buf);
	fread(buf,20,1,fpe);
	SetDlgItemText(IDC_scdm,buf);
	fread(buf,10,1,fpe);
	SetDlgItemText(IDC_rkfs,buf);
	fread(buf,20,1,fpe);
	SetDlgItemText(IDC_cjpp,buf);
	fread(buf,40,1,fpe);
	SetDlgItemText(IDC_xhgg,buf);
	fread(&ff,4,1,fpe);
	sprintf(buf,"%8.2f",ff);
	SetDlgItemText(IDC_wpdj,buf);
	fread(&ff,4,1,fpe);
	sprintf(buf,"%8.2f",ff);
	SetDlgItemText(IDC_wpsl,buf);
	fread(&ff,4,1,fpe);
	sprintf(buf,"%8.2f",ff);
	SetDlgItemText(IDC_zje,buf);
	fread(buf,40,1,fpe);
	SetDlgItemText(IDC_ssbm,buf);
	fread(buf,10,1,fpe);
	SetDlgItemText(IDC_jbr,buf);
	fread(buf,60,1,fpe);
	SetDlgItemText(IDC_ghdw,buf);
	fread(&tt,4,1,fpe);
	sprintf(buf,"%d",tt);
	SetDlgItemText(IDC_ygn,buf);
	fread(&tt,4,1,fpe);
	sprintf(buf,"%d",tt);
	SetDlgItemText(IDC_ygy,buf);
	fread(&tt,4,1,fpe);
	sprintf(buf,"%d",tt);
	SetDlgItemText(IDC_ygr,buf);
	fread(&tt,4,1,fpe);
	sprintf(buf,"%d",tt);
	SetDlgItemText(IDC_rkn,buf);
	fread(&tt,4,1,fpe);
	sprintf(buf,"%d",tt);
	SetDlgItemText(IDC_rky,buf);
	fread(&tt,4,1,fpe);
	sprintf(buf,"%d",tt);
	SetDlgItemText(IDC_rkr,buf);
	fclose(fpe);

	g_cur_rec = 0;
	}

	
}


BEGIN_MESSAGE_MAP(Cyszmdlg, CDialog)
	//{{AFX_MSG_MAP(Cyszmdlg)
	ON_EN_SETFOCUS(IDC_sbmc, OnSetfocussbmc)
	ON_EN_CHANGE(IDC_byjx, OnChangebyjx)
	ON_BN_CLICKED(IDC_xyg, Onxyg)
	ON_BN_CLICKED(IDADD, OnAdd)
	ON_BN_CLICKED(IDDEL, OnDel)
	ON_BN_CLICKED(IDMODSAVE, OnModsave)
	ON_BN_CLICKED(IDNEXT, OnNext)
	ON_BN_CLICKED(IDPREV, OnPrev)
	ON_BN_CLICKED(IDNEW, OnNew)
	ON_EN_CHANGE(IDC_wpdj, OnChangewpdj)
	ON_EN_CHANGE(IDC_wpsl, OnChangewpsl)
	ON_NOTIFY(NM_CLICK, IDC_TREE1, OnClickTree1)
	ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, OnSelchangedTree1)
	ON_EN_SETFOCUS(IDC_ssbm, OnSetfocusssbm)
	ON_EN_SETFOCUS(IDC_byjx, OnSetfocusbyjx)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Cyszmdlg message handlers

void Cyszmdlg::OnSetfocussbmc() 
{
	// TODO: Add your control notification handler code here
	int i;
	CWnd *pwnd;

	pwnd = GetDlgItem(IDC_byjx);
	pwnd->SetFocus();
	Onxyg();
	i = 0;
}

void Cyszmdlg::OnChangebyjx() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function to send the EM_SETEVENTMASK message to the control
	// with the ENM_CHANGE flag ORed into the lParam mask.
	
	// TODO: Add your control notification handler code here
	int i,j,flag;
	CString str;
	char buf[40];

	i = 0;
	GetDlgItemText(IDC_byjx,str);
	strcpy(buf,str.GetBuffer(40));
    for (i=0;i<g_end_sbs;i++){
		flag = 0;
		for (j=0;j<strlen(buf);j++){

			if ((buf[j] != g_e_abbr[i][j])&&(buf[j] != '?')){
				flag = 1;
				break;
			}
/*
			if (strstr(g_e_abbr[i],buf) != NULL){
				flag = 0;
				break;
			}
*/
		}
		if (flag == 0){
			if (g_e_abbr[i][j] == 0){
			  if (g_old_htreeitem != g_htreeitem[i]){
				if (g_old_htreeitem != NULL){
					m_tree.SetItemState(g_old_htreeitem,0,0xffff);
				}
			  }
			  m_tree.Select(g_htreeitem[i],TVGN_FIRSTVISIBLE);
			  m_tree.SetItemState(g_htreeitem[i],TVIS_DROPHILITED,0xffff);
			  set_cur_sel(i);
			  g_old_htreeitem = g_htreeitem[i];
			  m_tree.Invalidate(TRUE);
			  g_cur_sb_search_pos = i+1;
			  return;
			}
		}
	}
    for (i=0;i<g_end_sbs;i++){
		flag = 1;
		for (j=0;j<strlen(buf);j++){
/*			if ((buf[j] != g_e_abbr[i][j])&&(buf[j] != '?')){
				flag = 1;
				break;
			}
*/
			if (strstr(g_e_abbr[i],buf) != NULL){
				flag = 0;
				break;
			}
		}
		if (flag == 0){
			if (g_old_htreeitem != g_htreeitem[i]){
				if (g_old_htreeitem != NULL){
					m_tree.SetItemState(g_old_htreeitem,0,0xffff);
				}
			}
			m_tree.Select(g_htreeitem[i],TVGN_FIRSTVISIBLE);
			m_tree.SetItemState(g_htreeitem[i],TVIS_DROPHILITED,0xffff);
			set_cur_sel(i);
			g_old_htreeitem = g_htreeitem[i];
			m_tree.Invalidate(TRUE);
			g_cur_sb_search_pos = i+1;
			break;
		}
	}
	
}

void Cyszmdlg::set_cur_sel(int n)
{
  SetDlgItemText(IDC_sbmc,g_e_name[n]);
  SetDlgItemText(IDC_gdbh,g_a_id[n]);
}

void Cyszmdlg::Onxyg() 
{
	// TODO: Add your control notification handler code here
	int i,j,k,flag;
	CString str;
	char buf[40];

	i = 0;
	GetDlgItemText(IDC_byjx,str);
	strcpy(buf,str.GetBuffer(40));
    for (k=0;k<g_end_sbs;k++){
		i = k + g_cur_sb_search_pos;
		i = i % g_end_sbs;
		flag = 1;
		for (j=0;j<strlen(buf);j++){
/*			if ((buf[j] != g_e_abbr[i][j])&&(buf[j] != '?')){
				flag = 1;
				break;
			}
*/
			if (strstr(g_e_abbr[i],buf) != NULL){
				flag = 0;
				break;
			}
		}
		if (flag == 0){
			if (g_old_htreeitem != g_htreeitem[i]){
				if (g_old_htreeitem != NULL){
					m_tree.SetItemState(g_old_htreeitem,0,0xffff);
				}
			}
			m_tree.Select(g_htreeitem[i],TVGN_FIRSTVISIBLE);
			m_tree.SetItemState(g_htreeitem[i],TVIS_DROPHILITED,0xffff);
			set_cur_sel(i);
			g_old_htreeitem = g_htreeitem[i];
			m_tree.Invalidate(TRUE);
			g_cur_sb_search_pos = i+1;
			break;
		}
	}
	
}

void Cyszmdlg::OnAdd() 
{
	FILE *fpe;
	char buf[100];
	float ff;
	int tt;

	fpe = fopen("c:\\xxsbgl\\yszm.dat","a+b");
	if (fpe == NULL){
		return;
    }
	buf[0] = 0;
	fwrite(buf,1,1,fpe);
	GetDlgItemText(IDC_sbmc,buf,60);
	fwrite(buf,60,1,fpe);
	GetDlgItemText(IDC_gdbh,buf,20);
	fwrite(buf,20,1,fpe);
	GetDlgItemText(IDC_yqdm,buf,20);
	fwrite(buf,20,1,fpe);
	GetDlgItemText(IDC_scdm,buf,20);
	fwrite(buf,20,1,fpe);
	GetDlgItemText(IDC_rkfs,buf,10);
	fwrite(buf,10,1,fpe);
	GetDlgItemText(IDC_cjpp,buf,20);
	fwrite(buf,20,1,fpe);
	GetDlgItemText(IDC_xhgg,buf,40);
	fwrite(buf,40,1,fpe);
	GetDlgItemText(IDC_wpdj,buf,40);
	ff = atof(buf);
	fwrite(&ff,4,1,fpe);
	GetDlgItemText(IDC_wpsl,buf,40);
	ff = atof(buf);
	fwrite(&ff,4,1,fpe);
	GetDlgItemText(IDC_zje,buf,40);
	ff = atof(buf);
	fwrite(&ff,4,1,fpe);
	GetDlgItemText(IDC_ssbm,buf,40);
	fwrite(buf,40,1,fpe);
	GetDlgItemText(IDC_jbr,buf,10);
	fwrite(buf,10,1,fpe);
	GetDlgItemText(IDC_ghdw,buf,60);
	fwrite(buf,60,1,fpe);
	GetDlgItemText(IDC_ygn,buf,40);
	tt = atoi(buf);
	fwrite(&tt,4,1,fpe);
	GetDlgItemText(IDC_ygy,buf,40);
	tt = atoi(buf);
	fwrite(&tt,4,1,fpe);
	GetDlgItemText(IDC_ygr,buf,40);
	tt = atoi(buf);
	fwrite(&tt,4,1,fpe);
	GetDlgItemText(IDC_rkn,buf,40);
	tt = atoi(buf);
	fwrite(&tt,4,1,fpe);
	GetDlgItemText(IDC_rky,buf,40);
	tt = atoi(buf);
	fwrite(&tt,4,1,fpe);
	GetDlgItemText(IDC_rkr,buf,40);
	tt = atoi(buf);
	fwrite(&tt,4,1,fpe);
	fclose(fpe);
}



void Cyszmdlg::OnDel() 
{
	// TODO: Add your control notification handler code here
	FILE *fpe;
	int i;
	FILE *tfpe;
	char buf[400];
	long l;
	int all_num_of_recs;

	fpe = fopen("c:\\xxsbgl\\yszm.dat","rb");
	if (fpe == NULL)
		return;
	fseek(fpe,0L,SEEK_END);
	l = ftell(fpe);
	all_num_of_recs = l/REC_LENGTH;
	fseek(fpe,0L,SEEK_SET);
	tfpe = fopen("c:\\xxsbgl\\temp.dat","wb");
	for (i=0;i<g_cur_rec;i++){
		fread(buf,REC_LENGTH,1,fpe);
		fwrite(buf,REC_LENGTH,1,tfpe);
	}
	for (i=g_cur_rec+1;i<all_num_of_recs;i++){
		fread(buf,REC_LENGTH,1,fpe);
		fwrite(buf,REC_LENGTH,1,tfpe);
	}
	fclose(tfpe);
	fclose(fpe);

	fpe = fopen("c:\\xxsbgl\\temp.dat","rb");
	tfpe = fopen("c:\\xxsbgl\\yszm.dat","wb");
	fseek(fpe,0L,SEEK_END);
	l = ftell(fpe);
	all_num_of_recs = l/REC_LENGTH;
	fseek(fpe,0L,SEEK_SET);
	for (i=0;i<all_num_of_recs;i++){
		fread(buf,REC_LENGTH,1,fpe);
		fwrite(buf,REC_LENGTH,1,tfpe);
	}

	fclose(tfpe);
	fclose(fpe);
	OnPrev();
}

void Cyszmdlg::OnModsave() 
{
	// TODO: Add your control notification handler code here
	FILE *fpe;
	char buf[100];
	float ff;
	int tt;
	long l;
	int all_num_of_recs;

⌨️ 快捷键说明

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