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

📄 datamanage.cpp

📁 使用ODBC访问SQL数据库
💻 CPP
字号:
// DataManage.cpp : implementation file
//

#include "stdafx.h"
#include "testODBC4.h"
#include "DataManage.h"

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

#define IDMAX 403100	//4年级3班100号
#define IDMIN 101001	//1年级1班001号
/////////////////////////////////////////////////////////////////////////////
// CDataManage dialog


CDataManage::CDataManage(CWnd* pParent /*=NULL*/)
	: CDialog(CDataManage::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDataManage)
	m_static_tree = _T("");
	//}}AFX_DATA_INIT
}


void CDataManage::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDataManage)
	DDX_Control(pDX, IDC_LIST1, m_list1);
	DDX_Control(pDX, IDC_TREE1, m_tree1);
	DDX_Text(pDX, IDC_STATIC_TREE, m_static_tree);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDataManage, CDialog)
	//{{AFX_MSG_MAP(CDataManage)
	ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, OnSelchangedTree1)
	ON_BN_CLICKED(IDC_BUTTON_add, OnBUTTONadd)
	ON_BN_CLICKED(IDC_BUTTON_delete, OnBUTTONdelete)
	ON_BN_CLICKED(IDC_BUTTON_modify, OnBUTTONmodify)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDataManage message handlers

BOOL CDataManage::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	id_max = IDMAX;
	id_min = IDMIN;
	// TODO: Add extra initialization here
	HICON hIconSmall[6];
	ImageSmall.Create(16,16,0,6,6);
	hIconSmall[0] = AfxGetApp()->LoadIcon(IDI_ICON1);
	hIconSmall[1] = AfxGetApp()->LoadIcon(IDI_ICON2);
	hIconSmall[2] = AfxGetApp()->LoadIcon(IDI_ICON3);
	hIconSmall[3] = AfxGetApp()->LoadIcon(IDI_ICON4);
	hIconSmall[4] = AfxGetApp()->LoadIcon(IDI_ICON5);
	hIconSmall[5] = AfxGetApp()->LoadIcon(IDI_ICON6);
	for(int n=0;n<6;n++)
	ImageSmall.Add(hIconSmall[n]);
	
	/////////////////////////////////////////////////////////////////////////////////////
	//Create the tree control
	CTreeCtrl* pTree = (CTreeCtrl*)GetDlgItem(IDC_TREE1);
	pTree->SetImageList(&ImageSmall,TVSIL_NORMAL);

	TV_INSERTSTRUCT tvinsert;				//Build a TV_INSERTSTRUCT struct for inserting
	tvinsert.hParent = NULL;				//Not father node
	tvinsert.hInsertAfter = TVI_LAST;		//insert to the last of this layer
	//Set mask as icon,selected icon and text
	tvinsert.item.mask = TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_TEXT;  
	tvinsert.item.hItem = NULL;		//Set handle to NULL
	tvinsert.item.state = 0;		//State
	tvinsert.item.stateMask = 0;	//State mask
	tvinsert.item.cchTextMax = 10;	//biggest text length,ignore
	tvinsert.item.iSelectedImage = 0;	//index of the selected icon
	tvinsert.item.cChildren = 0;		//no child node
	tvinsert.item.lParam = 0;			//self-defined data

	//Create the first layer
	tvinsert.item.iImage = 4;			//icon at normal time
	tvinsert.item.pszText = "全部";
	HTREEITEM hGradeAll = pTree->InsertItem(&tvinsert);	
	tvinsert.item.iImage = 2;
	tvinsert.item.pszText = "大一";	
	HTREEITEM hGrade1 = pTree->InsertItem(&tvinsert);
	tvinsert.item.pszText = "大二";
	HTREEITEM hGrade2 = pTree->InsertItem(&tvinsert);
	tvinsert.item.pszText = "大三";	
	HTREEITEM hGrade3 = pTree->InsertItem(&tvinsert);
	tvinsert.item.pszText = "大四";
	HTREEITEM hGrade4 = pTree->InsertItem(&tvinsert);

	//Create the second layer
	tvinsert.hParent = hGrade1;		//Set father node as grade1
	tvinsert.item.iImage = 3;		//icon at normal time
	tvinsert.item.pszText = "一班";	//insert first node in the first layer
	HTREEITEM hClass11 = pTree->InsertItem(&tvinsert);
	tvinsert.item.pszText = "二班";
	HTREEITEM hClass12 = pTree->InsertItem(&tvinsert);
	tvinsert.item.pszText = "三班";
	HTREEITEM hClass13 = pTree->InsertItem(&tvinsert);
	
	tvinsert.hParent = hGrade2;		//Set father node as grade2
	tvinsert.item.pszText = "一班";	//insert first node in the second layer
	HTREEITEM hClass21 = pTree->InsertItem(&tvinsert);
	tvinsert.item.pszText = "二班";
	HTREEITEM hClass22 = pTree->InsertItem(&tvinsert);
	tvinsert.item.pszText = "三班";
	HTREEITEM hClass23 = pTree->InsertItem(&tvinsert);

	tvinsert.hParent = hGrade3;		//Set father node as grade3
	tvinsert.item.pszText = "一班";	//insert first node in the first layer
	HTREEITEM hClass31 = pTree->InsertItem(&tvinsert);
	tvinsert.item.pszText = "二班";
	HTREEITEM hClass32 = pTree->InsertItem(&tvinsert);
	tvinsert.item.pszText = "三班";
	HTREEITEM hClass33 = pTree->InsertItem(&tvinsert);

	tvinsert.hParent = hGrade4;		//Set father node as grade4
	tvinsert.item.pszText = "一班";	//insert first node in the first layer
	HTREEITEM hClass41 = pTree->InsertItem(&tvinsert);
	tvinsert.item.pszText = "二班";
	HTREEITEM hClass42 = pTree->InsertItem(&tvinsert);
	tvinsert.item.pszText = "三班";
	HTREEITEM hClass43 = pTree->InsertItem(&tvinsert);


	pTree->SetItemData(hGradeAll,0);	//为每一个句柄分配一个数值,便于以后确定当前得到的句柄在Tree中的序号
	pTree->SetItemData(hGrade1,1);
	pTree->SetItemData(hGrade2,2);
	pTree->SetItemData(hGrade3,3);
	pTree->SetItemData(hGrade4,4);
	pTree->SetItemData(hClass11,5);
	pTree->SetItemData(hClass12,6);
	pTree->SetItemData(hClass13,7);
	pTree->SetItemData(hClass21,8);
	pTree->SetItemData(hClass22,9);
	pTree->SetItemData(hClass23,10);
	pTree->SetItemData(hClass31,11);
	pTree->SetItemData(hClass32,12);
	pTree->SetItemData(hClass33,13);
	pTree->SetItemData(hClass41,14);
	pTree->SetItemData(hClass42,15);
	pTree->SetItemData(hClass43,16);

	hRoot = pTree->GetRootItem();
	////////////////////////////////////////////////////////////////////////////
	// list control
	m_list1.DeleteAllItems();
	m_list1.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,
                0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
	m_list1.InsertColumn(0,"学号",LVCFMT_LEFT,80);
	m_list1.InsertColumn(1,"姓名",LVCFMT_LEFT,80);
	m_list1.InsertColumn(2,"性别",LVCFMT_LEFT,60);
	m_list1.InsertColumn(3,"年龄",LVCFMT_LEFT,60);	
	m_list1.InsertColumn(4,"年级",LVCFMT_LEFT,60);
	m_list1.InsertColumn(5,"班级",LVCFMT_LEFT,60);
	m_list1.InsertColumn(6,"地址",LVCFMT_LEFT,90);
	m_list1.InsertColumn(7,"数学",LVCFMT_LEFT,60);
	m_list1.InsertColumn(8,"物理",LVCFMT_LEFT,60);
	m_list1.InsertColumn(9,"英语",LVCFMT_LEFT,60);
	m_list1.InsertColumn(10,"政治",LVCFMT_LEFT,60);
	
	CString ItemStr = "";
	int i=0;
	while(!m_Pset->IsEOF())
	{
		ItemStr.Format("%d",m_Pset->m_id);
		m_list1.InsertItem(i,"A",0);
		
		m_list1.SetItemText(i,0,ItemStr);
		ItemStr = m_Pset->m_name;
		m_list1.SetItemText(i,1,ItemStr);
		ItemStr = m_Pset->m_sex;
		m_list1.SetItemText(i,2,ItemStr);
		ItemStr = m_Pset->m_age;
		m_list1.SetItemText(i,3,ItemStr);
		ItemStr = m_Pset->m_grade;
		m_list1.SetItemText(i,4,ItemStr);
		ItemStr = m_Pset->m_class;
		m_list1.SetItemText(i,5,ItemStr);
		ItemStr = m_Pset->m_adress;
		m_list1.SetItemText(i,6,ItemStr);

		ItemStr.Format("%4.2f",m_Pset->m_math);
		m_list1.SetItemText(i,7,ItemStr);
		ItemStr.Format("%4.2f",m_Pset->m_physics);
		m_list1.SetItemText(i,8,ItemStr);
		ItemStr.Format("%4.2f",m_Pset->m_english);
		m_list1.SetItemText(i,9,ItemStr);
		ItemStr.Format("%4.2f",m_Pset->m_politics);
		m_list1.SetItemText(i,10,ItemStr);

		m_Pset->MoveNext();
		i++;
	}

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
//点击tree控件的操作
void CDataManage::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult) 
{

	CString str0;
	char text[16];
	TV_ITEM item;
	unsigned int index_sql,index_sql2,hsize,size2;
	
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	CTreeCtrl* pTree = (CTreeCtrl*) GetDlgItem(IDC_TREE1);
	HTREEITEM hSelected = pNMTreeView->itemNew.hItem;
	if(hSelected != NULL)
	{
		item.mask = TVIF_HANDLE | TVIF_TEXT;
		item.hItem = hSelected;
		item.pszText = text;
		item.cchTextMax = 15;
		VERIFY(pTree->GetItem(&item));
 		SetDlgItemText(IDC_STATIC_TREE,text);
	
		index_sql = pTree->GetItemData(hSelected);
		
		if(index_sql==0)
		{
			id_max = IDMAX;
			id_min = IDMIN;
		}
		else if( index_sql>=1 && index_sql<5)
		{
			id_max = index_sql*100000 + 3100;
			id_min = index_sql*100000 + 1001;
		}
		else if( index_sql>=5 && index_sql<17 )
		{
			id_max = (index_sql-5)/3 *100000 + 100100 + 1000*((index_sql-5)%3+1);
			id_min = (index_sql-5)/3 *100000 + 100001 + 1000*((index_sql-5)%3+1);
		}
	}
		str0.Format("index_sql=%d,index_sql2=%d,id_max=%d,\nid_min=%d,hsize=%d,size=%d",index_sql,index_sql2,
			id_max,id_min,hsize,size2);
		//str0 += text;
		str0 = text;
		m_static_tree = str0;
 		UpdateData(FALSE);		
		RefreshList(id_min,id_max);

		*pResult = 0;
}
//添加纪录
void CDataManage::OnBUTTONadd() 
{
	CAddDlg dlgadd;
	if(dlgadd.DoModal()==IDOK)
	{
		m_list1.InsertItem(m_list1.GetItemCount()+1,"A",0);
		m_Pset->AddNew();
		m_Pset->m_id	   = dlgadd.m_id;
		m_Pset->m_name	   = dlgadd.m_name;
		m_Pset->m_sex	   = dlgadd.m_sex;
		m_Pset->m_age	   = dlgadd.m_age;
		m_Pset->m_grade	   = dlgadd.m_grade;
		m_Pset->m_class	   = dlgadd.m_class;
		m_Pset->m_adress   = dlgadd.m_adress;
		m_Pset->m_math	   = dlgadd.m_math;
		m_Pset->m_physics  = dlgadd.m_physics;
		m_Pset->m_english  = dlgadd.m_english;
		m_Pset->m_politics = dlgadd.m_politics;
		m_Pset->Update();
		m_Pset->Requery();

		RefreshList(IDMIN,IDMAX);
	}
}
//删除选定的纪录
void CDataManage::OnBUTTONdelete() 
{
	int a = m_list1.GetSelectionMark();
	
	if(m_list1.GetSelectionMark()==-1)
		return;	

	m_Pset->MoveFirst();
	m_Pset->Move(m_list1.GetSelectionMark());
	m_Pset->Delete();
	m_Pset->MoveNext();

	if(m_Pset->IsBOF())
		m_Pset->SetFieldNull(NULL);
	if(m_Pset->IsEOF())
		m_Pset->MoveLast();
	
	m_Pset->Requery();
	RefreshList(id_min,id_max);
}
//修改选定的纪录
void CDataManage::OnBUTTONmodify() 
{
	int a = m_list1.GetSelectionMark();
	if(m_list1.GetSelectionMark()==-1)
		return;	
	m_Pset->MoveFirst();
	m_Pset->Move(m_list1.GetSelectionMark());

	CModifyDlg dlgmodify;
	dlgmodify.m_id = m_Pset->m_id;
	dlgmodify.m_name = m_Pset->m_name;
	dlgmodify.m_sex = m_Pset->m_sex;
	dlgmodify.m_age = m_Pset->m_age;
	dlgmodify.m_grade = m_Pset->m_grade;
	dlgmodify.m_class = m_Pset->m_class;
	dlgmodify.m_adress = m_Pset->m_adress;
	dlgmodify.m_math = m_Pset->m_math;
	dlgmodify.m_physics = m_Pset->m_physics;
	dlgmodify.m_english = m_Pset->m_english;
	dlgmodify.m_politics = m_Pset->m_politics;

	if(dlgmodify.DoModal()==IDOK)
	{
		m_Pset->Edit();
		m_Pset->m_id	   = dlgmodify.m_id;
		m_Pset->m_name	   = dlgmodify.m_name;
		m_Pset->m_sex	   = dlgmodify.m_sex;
		m_Pset->m_age	   = dlgmodify.m_age;
		m_Pset->m_grade	   = dlgmodify.m_grade;
		m_Pset->m_class	   = dlgmodify.m_class;
		m_Pset->m_adress   = dlgmodify.m_adress;
		m_Pset->m_math	   = dlgmodify.m_math;
		m_Pset->m_physics  = dlgmodify.m_physics;
		m_Pset->m_english  = dlgmodify.m_english;
		m_Pset->m_politics = dlgmodify.m_politics;
		m_Pset->Update();
		m_Pset->Requery();
		
		RefreshList(id_min,id_max);
	}
}

//刷新列表框,参数为所要显示的学生的学号的最大值和最小值
void CDataManage::RefreshList(int id_min,int id_max) 
{
	int i;
	if(id_min>id_max)
	{
		MessageBox("显示学号范围有误!");
		return;
	}
	m_list1.DeleteAllItems();
	m_list1.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,
				0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
	m_list1.InsertColumn(0,"学号",LVCFMT_LEFT,80);
	m_list1.InsertColumn(1,"姓名",LVCFMT_LEFT,80);
	m_list1.InsertColumn(2,"性别",LVCFMT_LEFT,60);
	m_list1.InsertColumn(3,"年龄",LVCFMT_LEFT,60);	
	m_list1.InsertColumn(4,"年级",LVCFMT_LEFT,60);
	m_list1.InsertColumn(5,"班级",LVCFMT_LEFT,60);
	m_list1.InsertColumn(6,"地址",LVCFMT_LEFT,90);
	m_list1.InsertColumn(7,"数学",LVCFMT_LEFT,60);
	m_list1.InsertColumn(8,"物理",LVCFMT_LEFT,60);
	m_list1.InsertColumn(9,"英语",LVCFMT_LEFT,60);
	m_list1.InsertColumn(10,"政治",LVCFMT_LEFT,60);
	for (i=11;i>=0;i--) //删除第8波门以后的数据栏,必须倒着删除
	{
		m_list1.DeleteColumn(11+i);
	} 

	CString ItemStr = "";
	i=0;
	m_Pset->MoveFirst();
	while(!m_Pset->IsEOF())
	{
		if( (m_Pset->m_id>=id_min) && (m_Pset->m_id<=id_max) )
		{
			ItemStr.Format("%d",m_Pset->m_id);
			m_list1.InsertItem(i,"A",0);
			
			m_list1.SetItemText(i,0,ItemStr);
			ItemStr = m_Pset->m_name;
			m_list1.SetItemText(i,1,ItemStr);
			ItemStr = m_Pset->m_sex;
			m_list1.SetItemText(i,2,ItemStr);
			ItemStr = m_Pset->m_age;
			m_list1.SetItemText(i,3,ItemStr);
			ItemStr = m_Pset->m_grade;
			m_list1.SetItemText(i,4,ItemStr);
			ItemStr = m_Pset->m_class;
			m_list1.SetItemText(i,5,ItemStr);
			ItemStr = m_Pset->m_adress;
			m_list1.SetItemText(i,6,ItemStr);

			ItemStr.Format("%4.2f",m_Pset->m_math);
			m_list1.SetItemText(i,7,ItemStr);
			ItemStr.Format("%4.2f",m_Pset->m_physics);
			m_list1.SetItemText(i,8,ItemStr);
			ItemStr.Format("%4.2f",m_Pset->m_english);
			m_list1.SetItemText(i,9,ItemStr);
			ItemStr.Format("%4.2f",m_Pset->m_politics);
			m_list1.SetItemText(i,10,ItemStr);
			i++;
		}
		m_Pset->MoveNext();
		
	}
	
}

⌨️ 快捷键说明

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