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

📄 scoregather.cpp

📁 一个学生考试成绩管理的半成品
💻 CPP
字号:
// ScoreGather.cpp : 定义应用程序的类行为。
//

#include "stdafx.h"
#include "ScoreGather.h"
#include "MainFrm.h"
#include "ScoreGatherDoc.h"
#include "ScoreGatherView.h"
#include "MySystemSet.h"
#include "MyIndexDataSet.h"
#include "MyQueryIndexData.h"
#include "MyDataEdit.h"
#include "MyLeadIn.h"
#include "MyStart.h"
#include "MyOverGather.h"
#include "MyWriteGatherPage.h"
#include "MyBackupRestoreData.h"
#include "MyUserLogin.h"
#include "ClsData.h"
#include ".\scoregather.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#define IDS_WEBADDR		_T("http://www.lswvc.com")


// CScoreGatherApp

BEGIN_MESSAGE_MAP(CScoreGatherApp, CWinApp)
	ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
	// 基于文件的标准文档命令
	ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
	ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
	// 标准打印设置命令
	ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
	ON_COMMAND(ID_SYSTEMSET, OnSystemset)
	ON_COMMAND(ID_DATASET, OnDataset)
	ON_COMMAND(ID_DATAEDIT, OnDataedit)
	ON_COMMAND(ID_INPUTDATA, OnInputdata)
	ON_COMMAND(ID_PRINTDATA, OnPrintdata)
	ON_COMMAND(ID_WRITEGATHERPAGE, OnWritegatherpage)
	ON_COMMAND(ID_OVERGATHER, OnOvergather)
	ON_COMMAND(ID_START, OnStart)
	ON_COMMAND(ID_DATASETQUERY, OnDatasetQuery)
	ON_COMMAND(ID_DATAEDITQUERY, OnDataEditQuery)
	ON_COMMAND(ID_WRITEGATHERQUERY, OnWriteGatherQuery)
	ON_COMMAND(ID_DATABACKUP, OnDatabackup)
	ON_COMMAND(ID_DATARESTORE, OnDatarestore)
	ON_COMMAND(ID_CLSDATA, OnClsdata)
END_MESSAGE_MAP()


// CScoreGatherApp 构造

CScoreGatherApp::CScoreGatherApp()
{
	EnableHtmlHelp();
	ClassXP();
	connString=_T("Data Source=ScoreGather;UID=sa;PWD=;");
}


// 唯一的一个 CScoreGatherApp 对象

CScoreGatherApp theApp;

// CScoreGatherApp 初始化

BOOL CScoreGatherApp::InitInstance()
{
	// 如果一个运行在 Windows XP 上的应用程序清单指定要
	// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
	//则需要 InitCommonControls()。否则,将无法创建窗口。
	InitCommonControls();

	CWinApp::InitInstance();

	// 初始化 OLE 库
	if (!AfxOleInit())
	{
		AfxMessageBox(IDP_OLE_INIT_FAILED);
		return FALSE;
	}
	/*if(!makedatabase())
		return FALSE;
	CMyUserLogin dlg;
	if(dlg.DoModal()==IDOK)
		return FALSE;*/
	AfxEnableControlContainer();
	// 标准初始化
	// 如果未使用这些功能并希望减小
	// 最终可执行文件的大小,则应移除下列
	// 不需要的特定初始化例程
	// 更改用于存储设置的注册表项
	// TODO: 应适当修改该字符串,
	// 例如修改为公司或组织名
	SetRegistryKey(_T("ScoreGather"));
	//LoadStdProfileSettings(0);  // 加载标准 INI 文件选项(包括 MRU)
	// 注册应用程序的文档模板。文档模板
	// 将用作文档、框架窗口和视图之间的连接
	CSingleDocTemplate* pDocTemplate;
	pDocTemplate = new CSingleDocTemplate(
		IDR_MAINFRAME,
		RUNTIME_CLASS(CScoreGatherDoc),
		RUNTIME_CLASS(CMainFrame),       // 主 SDI 框架窗口
		RUNTIME_CLASS(CScoreGatherView));
	if (!pDocTemplate)
		return FALSE;
	AddDocTemplate(pDocTemplate);
	// 分析标准外壳命令、DDE、打开文件操作的命令行
	CCommandLineInfo cmdInfo;
	ParseCommandLine(cmdInfo);
	// 调度在命令行中指定的命令。如果
	// 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。
	if (!ProcessShellCommand(cmdInfo))
		return FALSE;
	// 唯一的一个窗口已初始化,因此显示它并对其进行更新
	m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);
	m_pMainWnd->UpdateWindow();

	::CreateMutex(NULL,TRUE,m_pszExeName);
	if(GetLastError()==ERROR_ALREADY_EXISTS)
	{
		AfxMessageBox("此程序已在运行中!");
		CWnd* pPrevWnd=CWnd::GetDesktopWindow()->GetWindow(GW_CHILD);
		while(pPrevWnd)
		{
			if(::GetProp(pPrevWnd->GetSafeHwnd(),m_pszExeName))
			{
				if(pPrevWnd->IsIconic())
					pPrevWnd->ShowWindow(SW_RESTORE);
				pPrevWnd->SetForegroundWindow();
				pPrevWnd->GetLastActivePopup()->SetForegroundWindow();
				return FALSE;
			}
			pPrevWnd=pPrevWnd->GetWindow(GW_HWNDNEXT);
		}
		return FALSE;
	}
	::SetProp(m_pMainWnd->GetSafeHwnd(),m_pszExeName,(HANDLE)1);
	// 仅当存在后缀时才调用 DragAcceptFiles,
	//  在 SDI 应用程序中,这应在 ProcessShellCommand  之后发生
	return TRUE;
}



// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();
	CHyperLink			m_HomePageLink;

// 对话框数据
	enum { IDD = IDD_ABOUTBOX };

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 实现
protected:
	DECLARE_MESSAGE_MAP()
private:
	CXPButton m_aboutok;
public:
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
	virtual BOOL OnInitDialog();
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDOK, m_aboutok);
	DDX_Control(pDX, IDC_HOMEPAGE, m_HomePageLink);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	ON_WM_ERASEBKGND()
	ON_WM_CTLCOLOR()
END_MESSAGE_MAP()

// 用于运行对话框的应用程序命令
void CScoreGatherApp::OnAppAbout()
{
	CAboutDlg aboutDlg;
	aboutDlg.DoModal();
}


// CScoreGatherApp 消息处理程序


void CScoreGatherApp::OnSystemset()
{
	CMySystemSet dlg;
	dlg.DoModal();
}

void CScoreGatherApp::OnDataset()
{
	CMyIndexDataSet dlg;
	dlg.DoModal();
}

void CScoreGatherApp::OnDataedit()
{
	CMyDataEdit dlg;
	dlg.type=1;
	dlg.DoModal();
}

void CScoreGatherApp::OnInputdata()
{
	CMyLeadIn dlg;
	dlg.DoModal();
}

void CScoreGatherApp::OnPrintdata()
{
	CMyLeadIn dlg;
	dlg.WindowsType=1;
	dlg.DoModal();
}

void CScoreGatherApp::OnWritegatherpage()
{
	CMyWriteGatherPage dlg;
	dlg.type=1;
	dlg.DoModal();
}

void CScoreGatherApp::OnOvergather()
{
	CMyOverGather dlg;
	dlg.DoModal();
}

void CScoreGatherApp::OnStart()
{
	CMyStart dlg;
	dlg.DoModal();
}

void CScoreGatherApp::OnDatasetQuery()
{
	CMyQueryIndexData dlg;
	dlg.DoModal();
}

void CScoreGatherApp::OnDataEditQuery()
{
	CMyDataEdit dlg;
	dlg.type=0;
	dlg.DoModal();
}

void CScoreGatherApp::OnWriteGatherQuery()
{
	CMyWriteGatherPage dlg;
	dlg.type=0;
	dlg.DoModal();
}

void CScoreGatherApp::OnDatabackup()
{
	CMyBackupRestoreData dlg;
	dlg.DoModal();
}

void CScoreGatherApp::OnDatarestore()
{
	CMyBackupRestoreData dlg;
	dlg.type=1;
	dlg.DoModal();
}

void CScoreGatherApp::OnClsdata()
{
	CClsData dlg;
	dlg.DoModal();
}

BOOL CAboutDlg::OnEraseBkgnd(CDC* pDC)
{
	CBrush brush(RGB(250,220,250));
	CBrush* pOldBrush=pDC->SelectObject(&brush);
	CRect rcClip;
	pDC->GetClipBox(&rcClip);
	pDC->PatBlt(rcClip.left,rcClip.top,rcClip.Width(),rcClip.Height(),PATCOPY);
	pDC->SelectObject(pOldBrush);
	return TRUE;
}

HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	if(nCtlColor!=CTLCOLOR_EDIT)
	{
		pDC->SetTextColor(RGB(40,20,255));
		pDC->SetBkMode(TRANSPARENT);
		HBRUSH B = CreateSolidBrush(RGB(250,220,250));
		return (HBRUSH) B;
	}
	else
		return CDialog::OnCtlColor(pDC, pWnd, nCtlColor); 
}

BOOL CAboutDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	m_HomePageLink.SetURL(IDS_WEBADDR);
	m_HomePageLink.SetUnderline(CHyperLink::ulAlways);
	return TRUE;
}

int CScoreGatherApp::MakeSQLServerODBCDSN(LPCTSTR strDBServer,LPCTSTR strDBName,LPCTSTR strDSN,LPCTSTR strUID)
{
	BOOL bInstallDriver=TRUE;
	CRegKey regKey;
	LONG lRet=regKey.Open(HKEY_LOCAL_MACHINE,"Software\\ODBC\\ODBCINST.INI\\SQL Server");
	if(lRet!=ERROR_SUCCESS)
		bInstallDriver=FALSE;
	else
	{
		char szDirverPath[MAX_PATH]="";
		DWORD dwCount=100;
		lRet=regKey.QueryValue(szDirverPath,"Driver",&dwCount);
		if((lRet!=ERROR_SUCCESS)||(dwCount<1))
		{
			DWORD dwErr=GetLastError();
			bInstallDriver=FALSE;
		}
		regKey.Close();
	}
	if(!bInstallDriver)
		return -1;
	CString strKeyValueName="Software\\ODBC\\ODBC.INI\\";
	strKeyValueName+=strDSN;
	lRet=regKey.Create(HKEY_LOCAL_MACHINE,strKeyValueName);
	if(lRet!=ERROR_SUCCESS)
		return -2;
	regKey.SetValue(strDBName,"Database");
	regKey.SetValue("SQLSrv32.dll","Driver");
	regKey.SetValue(strDBServer,"Server");
	regKey.SetValue(strUID,"LastUser");
	regKey.m_hKey=HKEY_LOCAL_MACHINE;
	regKey.SetKeyValue("Software\\ODBC\\ODBC.INI\\ODBC Data Sources","SQL Server",strDSN);
	regKey.Close();
	return 0;
}

BOOL CScoreGatherApp::makedatabase()
{
	HRESULT hRes;
	try
	{
		//MakeSQLServerODBCDSN("(local)","ScoreGather","ScoreGather","sa");
        hRes=m_pConn.CreateInstance(_T("ADODB.Connection"));
		m_pConn->ConnectionTimeout = 8;
		hRes=m_pConn->Open(_bstr_t((LPCTSTR) connString),
            _T(""),_T(""),adModeUnknown);
	}
	catch(_com_error e)
	{
		 CString errormessage;
		 errormessage.Format(_T("连接数据库失败:%s"),e.ErrorMessage());
		 AfxMessageBox(errormessage);
         return FALSE;
	}
	return TRUE;
}

⌨️ 快捷键说明

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