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

📄 depmandlg.cpp

📁 &#61557 职责描述:
💻 CPP
字号:
// DepManDlg.cpp : implementation file
//

#include "stdafx.h"
#include "StudentCheck.h"
#include "DepManDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDepManDlg dialog


CDepManDlg::CDepManDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CDepManDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDepManDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CDepManDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDepManDlg)
	DDX_Control(pDX, IDC_TREE1, m_tree);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDepManDlg, CDialog)
	//{{AFX_MSG_MAP(CDepManDlg)
	ON_BN_CLICKED(IDC_ADD_BUTTON, OnAddButton)
	ON_NOTIFY(NM_CLICK, IDC_TREE1, OnSelchangedTree1)
	ON_BN_CLICKED(IDC_DEL_BUTTON, OnDelButton)
	ON_BN_CLICKED(IDC_MODI_BUTTON, OnModiButton)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDepManDlg message handlers

BOOL CDepManDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
		//权限控制,如果不是管理员则添加、修改和删除按钮置灰

	//装入部门信息
	dep.LoadDep();
	
	//添加根节点
	 
	if(!(m_treeImageList.Create(IDB_BITMAP1,16,1,RGB(0,255,0))))
		AfxMessageBox("图像列表创建出错!");
	m_tree.SetImageList(&m_treeImageList,TVSIL_NORMAL); 
	AddtoTree();

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDepManDlg::AddtoTree()
{
	//使用数组的方法以次将年级、专业、班级添加到TreeView控件中
	HTREEITEM m_root;				//保存Tree控件的根节点
	int i,j,k;
	m_root = m_tree.InsertItem("环境学院");//添加根节点
    m_tree.SetItemData(m_root,0);	
	//使用数组的方法以次将年级、专业、班级添加到TreeView控件中  
	//依次访问dep对象中的部门数组,查找满足条件的记录添加到Tree控件中
	//插入三级节点
	for( i=0; i<dep.sa_GradeID.GetSize(); i++)
	{
		m_child[i]=m_tree.InsertItem(dep.sa_GradeName.GetAt(i),m_root);
		m_tree.SetItemData(m_child[i], atol(dep.sa_GradeID.GetAt(i)));
		for( j=0; j<dep.sa_SpeID.GetSize(); j++)
		{
			m_SubChild[i][j]=m_tree.InsertItem(dep.sa_SpeName.GetAt(j),m_child[i]);
			m_tree.SetItemData(m_SubChild[i][j], atol(dep.sa_SpeID.GetAt(j)));
			for( k=0; k<dep.sa_ClassID.GetSize();k++)
			{
				CString str1,str2;
				str1=dep.sa_ClassSpeID.GetAt(k);
				str2=dep.sa_ClassGradeID.GetAt(k);
				if(str1.Compare(dep.sa_SpeID.GetAt(j))==0 &&
							     str2.Compare(dep.sa_GradeID.GetAt(i))==0)
				{
					m_SubChild3[i][j][k]=m_tree.InsertItem(dep.sa_ClassName.GetAt(k),m_SubChild[i][j]);
					m_tree.SetItemData(m_SubChild3[i][j][k], atol(dep.sa_ClassID.GetAt(k)));
				}
			
			}
		}
	}
	m_tree.Expand(m_root, TVE_EXPAND); //展开根节点
}

void CDepManDlg::OnAddButton() 
{
	// TODO: Add your control notification handler code here
	HTREEITEM node;  //用于保存当前选择的节点
	node = m_tree.GetSelectedItem();  //取得当前选择的节点

	// 节点数最多只能有两级
	if(m_tree.GetItemData(node) != 0)		// 不是根节点
	{
		if(m_tree.GetItemData(m_tree.GetParentItem(node)) != 0)
		{
			if(m_tree.GetItemData(m_tree.GetParentItem(m_tree.GetParentItem(node))) != 0)
			{
				MessageBox("不能在此级部门下再添加部门");
				return;
			}

		}
	}

	CDepEditDlg dlg;
	CString str;
	//设置编辑对话框中变量的值
	dlg.m_Upper = m_tree.GetItemText(node);
 
	dlg.UpperId.Format("%d",m_tree.GetItemData(node));
	if(m_tree.GetItemData(node) != 0)
		dlg.UpUperID.Format("%d",m_tree.GetItemData(m_tree.GetParentItem(node)));
	else
        dlg.UpUperID="11"; //若为跟节点,则置为其它值
	dlg.DepId = '0';  //表示插入记录
   	AfxMessageBox(dlg.m_Upper+dlg.UpperId);
	//如果在编辑对话框中单击“确定”按钮,则在TreeView中添加新节点
	if(dlg.DoModal() == IDOK)
	{
		HTREEITEM child;  //表示插入的新节点,它是node的子节点
		child = m_tree.InsertItem(dlg.m_DepName, node);  //插入节点
		m_tree.SetItemData(child, atoi(dlg.DepId));  //设置新节点的值
		m_tree.Expand(node, TVE_EXPAND); //展开node节点
	}
}

void CDepManDlg::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	*pResult = 0;
}


void CDepManDlg::OnDelButton() 
{
	// TODO: Add your control notification handler code here
		HTREEITEM node;  //用于保存当前节点
	node = m_tree.GetSelectedItem();  //取得当前节点
	if (m_tree.GetItemData(node) == 0) //不能删除根节点
	{
		MessageBox("不能删除此项");
		return;
	}

	CString cDepId,cChildDepId;

	//若要删除年级,则首先删除该年级下的所有班级
	
	if (m_tree.GetChildItem(node)!=NULL)  //不是叶子节点
	{
		if (m_tree.GetItemData(node)>100 && m_tree.GetItemData(node)< 120) //年级
			{
				//首先判断该年级下是否有班级
				if (MessageBox("您将删除所该年级,以及该年级下的班级!!!", "请确认", MB_YESNO) == IDNO)
				return ;
			}
	    else
		{
			MessageBox("不允许删除该专业!!!");		
			return ;
		}
		cDepId.Format("%d", m_tree.GetItemData(node));
		MessageBox(cDepId+"不是叶子节点!!!");	
	}
	else  //叶子节点
	{
		if (m_tree.GetItemData(node)>10000 && m_tree.GetItemData(node)< 12000) //专业
			if (MessageBox("所有年级下的该专业将被删除!!!", "请确认", MB_YESNO) == IDNO)
				return ;

		cDepId.Format("%d", m_tree.GetItemData(node));
		MessageBox(cDepId+"叶子节点!!!");
	}
	//弹出对话框,要求用户确认是否删除。如果用户单击“是”按钮,则删除
	if (MessageBox("是否删除当前部门?", "请确认", MB_YESNO) == IDYES)
	{
		dep.SqlDelete(cDepId);  //删除表Departments中的指定记录
		m_tree.DeleteItem(node);  //删除Tree控件中的当前节点
	}
}

void CDepManDlg::OnModiButton() 
{
	// TODO: Add your control notification handler code here
	HTREEITEM node;  //用于保存当前节点
	node = m_tree.GetSelectedItem(); //取得当前节点值
	if (m_tree.GetItemData(node) == 0)  //不能修改根节点
	{
		MessageBox("不能修改此项");
		return;
	}
	HTREEITEM parent;	//读取父节点
	parent = m_tree.GetParentItem(node);

	CDepEditDlg dlg;
	//设置编辑对话框中变量的值
	dlg.m_Upper = m_tree.GetItemText(parent);
	dlg.UpperId.Format("%d",m_tree.GetItemData(parent));
	dlg.DepId.Format("%d",m_tree.GetItemData(node));
	dlg.DepName = m_tree.GetItemText(node);
	dlg.m_DepName = m_tree.GetItemText(node);

	//如果在编辑对话框中单击“确定”按钮,则在TreeView中修改节点信息
	if(dlg.DoModal() == IDOK)
	{
		m_tree.SetItemText(node, dlg.m_DepName);  //设置当前节点的显示标题
		m_tree.Expand(node, TVE_EXPAND);  //展开当前节点
	}	
}

⌨️ 快捷键说明

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