📄 mainfrm.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 + -