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

📄 mainfrm.cpp

📁 本系统是vc开发的成绩管理系统,功能强大易于阅读.
💻 CPP
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "mark.h"
#include "outlook.h"
#include "MainFrm.h"
#include "markView.h"
#include "markDoc.h"
#include "student.h"
#include "teacher.h"
#include "login.h"
#include "kecheng.h"
#include "bixiuke.h"
#include "xuanxiuke.h"
#include "shouke.h"
#include "chengji.h"
#include "dankebaobiao.h"
#include "gerenbaobiao.h"
#include "banjibaobiao.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_COMMAND(ID_LOGGING, OnLogging)
	ON_COMMAND(ID_UNLOG, OnUnlog)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	pagenow=0;
}

CMainFrame::~CMainFrame()
{
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{

		cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE |SPLS_DYNAMIC_SPLIT
		| WS_THICKFRAME | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_MAXIMIZE;
		cs.style &= ~(LONG) FWS_ADDTOTITLE;
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers


BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
{
	//进行窗口切分一行两列
	BOOL result=m_wndSplitter.CreateStatic(this,1,2);
	//使用CViewOutlook视图
	result|=m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(Coutlook),CSize(100,100),pContext);
	result|=m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CMarkView),CSize(924,100),pContext);
	pview=(CView *)m_wndSplitter.GetPane(0,1);
	
	//result|=m_wndSplitter.CreateView(0,2,RUNTIME_CLASS(Cstudent),CSize(0,0),pContext);
	//pcontain=(Ccontain *)m_wndSplitter.GetPane(0,1);
	return result;
}
void CMainFrame::Changepage(int page)
{
	if(page!=pagenow)
	{
		CView *pView = (CView *)m_wndSplitter.GetPane(0,1);
		if (pView == NULL)
			return;
		CRuntimeClass *pViewClass = NULL;
		CRect rc;
		pView->GetWindowRect(&rc);
		m_wndSplitter.DeleteView(0, 1);
		
		CMarkDoc *pDoc=(CMarkDoc *)GetActiveDocument();

		switch(page){
		case 0:
			pViewClass = RUNTIME_CLASS(CMarkView);
			if(officeinstall){
				m_charClip.Stop(close);
				m_charClip.Play("LookLeft");
			}
			break;
		case 1:	
			pViewClass = RUNTIME_CLASS(Cstudent);
			if(officeinstall){
				m_charClip.Stop(close);
				m_charClip.Play("Explain");
			}
			Agenttalk("学生档案表可以增加、修改、删除学生档案信息。");
			break;
		case 2:
			pViewClass = RUNTIME_CLASS(Cteacher);
			if(officeinstall){
				m_charClip.Stop(close);
				m_charClip.Play("Print");
			}
			Agenttalk("教师档案表可以增加、修改、删除教师档案信息。");
			break;
		case 3:
			pViewClass = RUNTIME_CLASS(Ckecheng);
			if(officeinstall){
				m_charClip.Stop(close);
				m_charClip.Play("Save");
			}
			Agenttalk("课程档案表可以增加、修改、删除课程档案信息。");
			break;
		case 4:
			pViewClass = RUNTIME_CLASS(Cbixiuke);
			if(officeinstall){
				m_charClip.Stop(close);
				m_charClip.Play("Print");
			}
			Agenttalk("必修课可以为一个班统一添加某位教师所授的某门课程。");
			break;
		case 5:
			pViewClass = RUNTIME_CLASS(Cxuanxiuke);
			if(officeinstall){
				m_charClip.Stop(close);
				m_charClip.Play("Save");
			}
			Agenttalk("选修课可以为每个学生选择某位教师所授的某门课程。");
			break;
		case 6:
			pViewClass = RUNTIME_CLASS(Cshouke);
			if(officeinstall){
				m_charClip.Stop(close);
				m_charClip.Play("Print");
			}
			Agenttalk("教师授课可以为某门课程选择多位教师任课。");
			break;
		case 7:
			pViewClass = RUNTIME_CLASS(Cchengji);
			if(officeinstall){
				m_charClip.Stop(close);
				m_charClip.Play("Save");
			}
			Agenttalk("学生成绩可以添加、修改、删除学生成绩。");
			break;
		case 8:
			pViewClass = RUNTIME_CLASS(Cdankebaobiao);
			if(officeinstall){
				m_charClip.Stop(close);
				m_charClip.Play("Print");
			}
			Agenttalk("单科报表可以预览、打印某位教师任的某门课程的所有学生成绩信息。");
			break;
		case 9:
			pViewClass = RUNTIME_CLASS(Cgerenbaobiao);
			if(officeinstall){
				m_charClip.Stop(close);
				m_charClip.Play("Save");
			}
			Agenttalk("个人报表可以预览、打印某位学生所有的课程成绩信息。");
			break;
		case 10:
			pViewClass = RUNTIME_CLASS(Cbanjibaobiao);
			if(officeinstall){
				m_charClip.Stop(close);
				m_charClip.Play("Print");
			}
			Agenttalk("班级成绩报表可以预览、打印某班的选择某门课程的所有同学的该门课程成绩。");
			break;
		}
		CCreateContext context;
		context.m_pCurrentDoc = GetActiveDocument();
		context.m_pCurrentFrame = this;
		context.m_pLastView = NULL;
		context.m_pNewDocTemplate = NULL;
		context.m_pNewViewClass = pViewClass;
		if (!m_wndSplitter.CreateView(0,1, pViewClass, rc.Size(), &context))
			ASSERT(FALSE);
	
		m_wndSplitter.RecalcLayout();
		pview=(CView *)m_wndSplitter.GetPane(0,1);
		pagenow=page;

	}
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	login=0;//未登陆

	HKEY hkey;
	LPCTSTR data_set="Software\\Microsoft\\Office\\9.0\\Common\\InstallRoot\\";
	long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_set,0,KEY_READ,&hkey));
	if(ret0!=ERROR_SUCCESS){
		officeinstall=false;
		return 0;
	}
	LPBYTE getpath=new BYTE[160];
	DWORD type_1=REG_SZ;
	DWORD cbdata=160;
	long ret1=::RegQueryValueEx(hkey,"Path",NULL,&type_1,getpath,&cbdata);
	if(ret1!=ERROR_SUCCESS){
		officeinstall=false;
		return 0;
	}
	CString path=CString(getpath);
	path+="OFFCAT.ACS";
	
	CFileFind pfind;
	if(pfind.FindFile(path,0)==0){
		CopyFile(".\\data\\OFFCAT.ACS",path,FALSE);
		CString copyfile=CString(getpath);
		copyfile+="OFFCAT.ACG";
		CopyFile(".\\data\\OFFCAT.ACG",copyfile,FALSE);
	}
	officeinstall=true;

	COleVariant vPath;
	vPath.SetString((LPSTR)(LPCSTR)path,VT_BSTR);
	m_agent.Create(NULL,NULL,CRect(0,0,0,0),this,NULL,NULL,FALSE);
	CAgentCtlRequest rq;
	rq=m_agent.GetCharacters().Load("OFFCAT",vPath);
	m_charClip=m_agent.GetCharacters().Character("OFFCAT");
	m_charClip.SetSoundEffectsOn(TRUE);
	m_charClip.SetLeft(120);
	m_charClip.SetTop(100);
	VARIANT start;
	start.boolVal=TRUE;
	start.vt=VT_BOOL;
	m_charClip.Show(start);
	
	Agenttalk("您好,欢迎使用学生成绩管理系统!");
	m_charClip.Play("Wave");
	return 0;
}

BOOL CMainFrame::DestroyWindow() 
{
	if(officeinstall){
		m_charClip.Stop(close);
		Agenttalk("谢谢使用!");
		m_charClip.Play("Wave");
		Sleep(4000);
	}
	return CFrameWnd::DestroyWindow();
}
void CMainFrame::Agenttalk(CString text)
{
	if(officeinstall){
		COleVariant str;
		str.SetString((LPSTR)(LPCSTR)text,VT_BSTR);
		COleVariant url(_T(""));
		m_charClip.Speak(str,url);
	}
}

void CMainFrame::OnLogging() 
{
	Clogin dlg;
	if(dlg.DoModal()==IDOK){
		if(login!=0){
			OnUnlog();
		}
		connectip=dlg.m_ip;
		if(dlg.m_pwd=="8"){
			login=8;
			Agenttalk("您以修改成绩管理员登陆,您现在拥有修改学生成绩的权限!");
		}
		if(dlg.m_pwd=="7"){
			login=7;
			Agenttalk("您以教师授课管理员登陆,您现在拥有添加、修改和删除教师所授课程的权限!");
		}
		else if(dlg.m_pwd=="6"){
			login=6;
			Agenttalk("您以报表打印管理员登陆,您现在拥有打印报表的权限!");
		}
		else if(dlg.m_pwd=="5"){
			login=5;
			Agenttalk("您以教师档案管理员登陆,您现在拥有添加、修改和删除教师档案信息的权限!");
		}
		else if(dlg.m_pwd=="4"){
			login=4;
			Agenttalk("您以课程档案管理员登陆,您现在拥有添加、修改和删除课程档案信息的权限!");
		}
		else if(dlg.m_pwd=="3"){
			login=3;
			Agenttalk("您以学生档案管理员登陆,您现在拥有添加、修改和删除学生档案信息的权限!");
		}
		else if(dlg.m_pwd=="2"){
			login=2;
			Agenttalk("您以选课管理员登陆,您现在拥有为学生选课的权限!");
		}
		else if(dlg.m_pwd=="1"){
			login=1;
			Agenttalk("您以超级管理员登陆,您现在拥有所有的权限!");
		}
		else{
			Agenttalk("您输入密码有误!");	
		}
	}
}

void CMainFrame::OnUnlog() 
{
	if(login!=0){
		login=0;	
		Changepage(0);
	}
}

⌨️ 快捷键说明

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