ADOConn.h
class ADOConn
{
public:
ADOConn();
virtual ~ADOConn();
_ConnectionPtr m_pConnection;//添加一个指向 Connection 对象的指针
_RecordsetPtr m_pRecordset;//添加一个指向 Recordset 对象的指针
void OnInitDBConnect();//初始化—连接数据库
_RecordsetPtr &GetRecordSet(_bstr_t bstrSQL);//执行查询
BOOL ExecuteSQL(_bstr_t bstrSQL);//执行 SQL 语句,Insert Update_variant_t
void ExitConnect();
};
ADOConn.cpp
#include "stdafx.h"
#include "ADOConn.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
ADOConn::ADOConn()
{
}
ADOConn::~ADOConn()
{
}
void ADOConn::OnInitDBConnect()
{
::CoInitialize(NULL);
//初始化 OLE/COM 库环境
try
{
m_pConnection.CreateInstance("ADODB.Connection");
//创建 connection 对象
m_pConnection->Open("Driver=SQL Server;Database=HCCP;Server=127.0.0.1;","","",adModeUnknown);
//设置连接字符串,必须是 BSTR 型或者_bstr_t 类型
}
{
}
catch(_com_error e)
//捕捉异常
AfxMessageBox(e.Description());//显示错误信息
}
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
if(m_pConnection==NULL)
//连接数据库,如果 connection 对象为空,则重新连接数据库 8
OnInitDBConnect();
m_pRecordset.CreateInstance(__uuidof(Recordset));
//创建记录集对象
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adC
mdText);
//取得集中的记录
}
{
catch(_com_error e)
//捕捉异常
AfxMessageBox(e.Description());
//显示错误信息
}
return m_pRecordset;
//返回记录集
}
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
try
{
}
{
}
if(m_pConnection==NULL)
//是否已经连接到数据库
OnInitDBConnect();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
catch(_com_error e)
//捕捉异常
AfxMessageBox(e.Description());
return false;
//显示错误信息
}
void ADOConn::ExitConnect()
{
if(m_pRecordset!=NULL)
{
//关闭记录集和连接
m_pRecordset->Close();
m_pConnection->Close();
}
::CoUninitialize();
//释放环境
}
CHCCPDlg.h
#if !defined(AFX_HCCPDLG_H__DE5C34A2_C014_4216_B2B3_FD886F60C870__INCLUDED_)
#define AFX_HCCPDLG_H__DE5C34A2_C014_4216_B2B3_FD886F60C870__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "Hutext.h"
#include "ADOConn.h"
#include "XSCJXG.h"
#include "XSCJCX.h"
#include "XSCJPX.h"
#include "XKXFXG.h"
#include "XSZHPC.h"
#include "MyTree.h"
/////////////////////////////////////////////////////////////////////////////
// CHCCPDlg dialog
class CHCCPDlg : public CDialog
{
// Construction
public:
CHCCPDlg(CWnd* pParent = NULL); // standard constructor
ADOConn m_AdoConn;
void CreateTree();
CImageList m_TreeBootImage;
void InitTab();
void ShowDlg();
void ShowList(CString cnamedd);
void Select(CString ming,HTREEITEM root,_RecordsetPtr m_pRs);
int showdlgnum;
_RecordsetPtr m_pRs1,m_pRs2,m_pRs3;
_bstr_t vSQL,vSQL1,vSQL2;
_variant_t name;
HTREEITEM leaf,leaf1,leaf2;
CString str;
XSCJXG modifydlg;XSCJCX finddlg;XSCJPX sortdlg;
CDialog* pdlg[5];
XKXFXG xkxgdlg;
XSZHPC zhcpdlg;
COLORREF color;int i,j,k;
// Dialog Data
//{{AFX_DATA(CHCCPDlg)
enum { IDD = IDD_HCCP_DIALOG };
CListCtrl m_list1;
m_textctrl;
CTabCtrl m_tab;
MyTree m_tree;
CString m_text;
Hutext
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CHCCPDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);
//}}AFX_VIRTUAL
// Implementation
protected:
// DDX/DDV support
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CHCCPDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnClose();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CHCCPDlg.cpp
#include "stdafx.h"
#include "HCCP.h"
#include "HCCPDlg.h"
#include "ADOConn.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);
//}}AFX_VIRTUAL
// DDX/DDV support
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CHCCPDlg dialog
CHCCPDlg::CHCCPDlg(CWnd* pParent /*=NULL*/)
: CDialog(CHCCPDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CHCCPDlg)
m_text = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CHCCPDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CHCCPDlg)
DDX_Control(pDX, IDC_LIST1, m_list1);
DDX_Control(pDX, IDC_TAB1, m_tab);
DDX_Control(pDX, IDC_TREE1, m_tree);
DDX_Text(pDX, IDC_BIAOTI, m_text);
DDX_Control(pDX, IDC_BIAOTI, m_textctrl);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CHCCPDlg, CDialog)
//{{AFX_MSG_MAP(CHCCPDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnSelchangeTab1)
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, OnSelchangedTree1)
ON_WM_TIMER()
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList1)
ON_WM_CLOSE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CHCCPDlg message handlers
BOOL CHCCPDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
// Set big icon
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
// Set small icon
// TODO: Add extra initialization here
m_text="欢迎使用综合测评系统";
m_textctrl.SetFontSize(27);
m_textctrl.SetTextColor(RGB(0,255,0));
m_textctrl.SetBkColor(RGB(0,0,0));
m_textctrl.SetFontBold(TRUE);
m_textctrl.SetText(m_text);
//设置字体为黑体
//设置静态控件文本内容
//设置静态控件中显示字体大小
//设置静态控件字体颜色
//设置静态控件背景颜色
m_list1.SetExtendedStyle(LVS_EX_FULLROWSELECT);
//设置 list 列表风格
m_list1.InsertColumn(0,"学号",LVCFMT_CENTER,164);
m_list1.InsertColumn(1,"姓名",LVCFMT_CENTER,164);
m_list1.InsertColumn(2,"分数",LVCFMT_CENTER,164);
//设置列标题
m_TreeBootImage.Create ( IDB_BITMAP1,20,1,ILC_COLOR8);
//设置树形控件的属性
m_tree.SetImageList ( &m_TreeBootImage,TVSIL_NORMAL );
m_tree.SetTextColor (RGB(7,145,13));
//设置树形控件字体颜色
//设置树形控件风格
InitTab();
ShowDlg();
CreateTree();
SetTimer(1,250,NULL);
//打开定时器,时间间隔为 250ms
return TRUE;
// return TRUE unless you set the focus to a control
}
/*------------------初始化 tab 控件---------------------*/
void CHCCPDlg::InitTab()
{
showdlgnum=0;
m_tab.InsertItem(0,"学生成绩修改");
//添加 tab 控件内容
m_tab.InsertItem(1,"学生成绩查询");
m_tab.InsertItem(2,"学生成绩排序");
m_tab.InsertItem(3,"学科学分修改");
m_tab.InsertItem(4,"学生综合测评");
modifydlg.Create(IDD_XSCJXG,&m_tab);
finddlg.Create(IDD_XSCJCX,&m_tab);
sortdlg.Create(IDD_XSCJPX,&m_tab);
zhcpdlg.Create(IDD_XSZHPC,&m_tab);
xkxgdlg.Create(IDD_XKXFXG,&m_tab);
CRect rc;
m_tab.GetClientRect(rc);
rc.top += 20;
rc.bottom -= 8;
rc.left += 8;
rc.right -= 8;
modifydlg.MoveWindow(&rc);
finddlg.MoveWindow(&rc);
sortdlg.MoveWindow(&rc);
//获取客户区大小
//创建 tab 控件 child 对话框对象
//设置 tab 控件 child 对话框显示区域
//获取 child 对话框指针
zhcpdlg.MoveWindow(&rc);
xkxgdlg.MoveWindow(&rc);
pdlg[0]=&modifydlg;
pdlg[1]=&finddlg;
pdlg[2]=&sortdlg;
pdlg[3]=&xkxgdlg;
pdlg[4]=&zhcpdlg;
}
/*------------------tab 控件响应函数---------------------*/
void CHCCPDlg::ShowDlg()
{
switch(showdlgnum)
{
case 0:
{
pdlg[0]->ShowWindow(SW_SHOW);
pdlg[1]->ShowWindow(SW_HIDE);
pdlg[2]->ShowWindow(SW_HIDE);
pdlg[3]->ShowWindow(SW_HIDE);
pdlg[4]->ShowWindow(SW_HIDE);
}break;
case 1:
{
pdlg[0]->ShowWindow(SW_HIDE);
pdlg[1]->ShowWindow(SW_SHOW);
pdlg[2]->ShowWindow(SW_HIDE);
pdlg[3]->ShowWindow(SW_HIDE);
pdlg[4]->ShowWindow(SW_HIDE);
}break;
case 2:
{
pdlg[0]->ShowWindow(SW_HIDE);
pdlg[1]->ShowWindow(SW_HIDE);
pdlg[2]->ShowWindow(SW_SHOW);
pdlg[3]->ShowWindow(SW_HIDE);
pdlg[4]->ShowWindow(SW_HIDE);
}break;
case 3:
{
pdlg[0]->ShowWindow(SW_HIDE);
pdlg[1]->ShowWindow(SW_HIDE);
pdlg[2]->ShowWindow(SW_HIDE);
pdlg[3]->ShowWindow(SW_SHOW);
pdlg[4]->ShowWindow(SW_HIDE);