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

📄 mainfrm.cpp

📁 这是目前正应用于辽宁省很多县级中学的试题库系统源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "TestPaper.h"
#include "TestPaperView.h"
#include "ModuleView.h"
#include "MainFrm.h"
#include "AboutDialog.h"
#include "Resource.h"
#include "EnterDialog.h"
#include "ScoreDialog.h"
#include "SeeDialog.h"
#include "XinQueryDialog.h"
#include "StatDialog.h"
#include "XgDialog.h"
#include "LrDialog.h"
#include "msword.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_ABOUT, OnAbout)
	ON_COMMAND(ID_COLOR, OnColor)
	ON_COMMAND(ID_CONTENT, OnContent)
	ON_COMMAND(ID_CONNENT, OnConnent)
	ON_COMMAND(ID_DISCONNENT, OnDisconnent)
	ON_WM_DESTROY()
	ON_COMMAND(ID_QH, OnQh)
	ON_COMMAND(ID_CHAXUN, OnChaxun)
	ON_COMMAND(ID_TONGJI, OnTongji)
	ON_COMMAND(ID_SHEZHI, OnShezhi)
	ON_COMMAND(ID_QSQS, OnQsqs)
	ON_COMMAND(ID_SCSC, OnScsc)
	ON_COMMAND(ID_XGXG, OnXgxg)
	ON_COMMAND(ID_LRLR, OnLrlr)
	ON_COMMAND(ID_PWD, OnPwd)
	ON_COMMAND(ID_PWDSC, OnPwdsc)
	ON_COMMAND(ID_ANSWER, OnAnswer)
	ON_COMMAND(ID_CREATE, OnCreateTestPaper)
	//}}AFX_MSG_MAP
	ON_CBN_SELCHANGE(AFX_IDW_TOOLBAR+1, OnSelchangeCombo1)
	ON_CBN_SELCHANGE(AFX_IDW_TOOLBAR+2, OnSelchangeCombo2)
END_MESSAGE_MAP()

static UINT indicators[] =
{
	//ID_SEPARATOR, 
	ID_INDI,        // status line indicator
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
	IDS_TIME,
};

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

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	BoolConnent=TRUE;
	booltestpaer=FALSE;
	
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)//框架初始化
{	
	list=0;
	try
	{	
		if(!m_database.IsOpen())
			m_database.OpenEx("DSN=题库;UID=sa;PWD=");
	}
    catch(...)
	{
		AfxMessageBox("cann't open database!");
		return 0;
	}
	m_recordset.m_pDatabase=&m_database;
	m_queryset.m_pDatabase=&m_database;
	m_statset.m_pDatabase=&m_database;
    m_xinpaperset.m_pDatabase=&m_database;
	m_xinrecordset.m_pDatabase=&m_database;
	m_seerecordset.m_pDatabase=&m_database;
	m_yangrecordset.m_pDatabase=&m_database;
    m_temprecordset1.m_pDatabase=&m_database;
    m_temprecordset2.m_pDatabase=&m_database;
	m_temprecordset3.m_pDatabase=&m_database;
    m_testpaperrecordset.m_pDatabase=&m_database;
	m_testpaperrecordset2.m_pDatabase=&m_database;
	m_testpaperrecordset3.m_pDatabase=&m_database;
	CString   str1;
	CString   str2;
	if (!m_wndAddress1.Create(CBS_DROPDOWN | WS_CHILD, CRect(0, 0, 150, 300), this, AFX_IDW_TOOLBAR + 1))
	{
		TRACE0("Failed to create combobox\n");
		return -1;      // fail to create
	}
    if (!m_wndAddress2.Create(CBS_DROPDOWN | WS_CHILD, CRect(0, 0, 150, 300), this, AFX_IDW_TOOLBAR + 2))
	{
		TRACE0("Failed to create combobox\n");
		return -1;      // fail to create
	}
    if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
	{
		return -1;
	}
	if(!m_wndToolBar.CreateEx(this))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;
	}
	
	img = new CImageList;
	img->Create(24,24,1,7,1);
	HICON  mhIcon;
    mhIcon=AfxGetApp()->LoadIcon(IDI_ICON8);
    for(int n = 0;n < 7;n ++)
	{
          img->Add(mhIcon);
	}
	m_wndToolBar.GetToolBarCtrl().SetHotImageList(img);
	img->Detach();
	img=new CImageList;
	img->Create(24,24,TRUE,7,1);
    img->Add(AfxGetApp()->LoadIcon(IDI_ICON1));
    img->Add(AfxGetApp()->LoadIcon(IDI_ICON2));
	img->Add(AfxGetApp()->LoadIcon(IDI_ICON3));
    img->Add(AfxGetApp()->LoadIcon(IDI_ICON19));
	img->Add(AfxGetApp()->LoadIcon(IDI_ICON5));
	img->Add(AfxGetApp()->LoadIcon(IDI_ICON6));
	img->Add(AfxGetApp()->LoadIcon(IDI_ICON7));
	m_wndToolBar.GetToolBarCtrl().SetImageList(img);
	img->Detach();
	m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT);
	m_wndToolBar.SetButtons(NULL, 7);
    m_wndToolBar.SetButtonInfo(0, ID_CONNENT,TBSTYLE_BUTTON, 0);
	m_wndToolBar.SetButtonInfo(1, ID_DISCONNENT,TBSTYLE_BUTTON, 1);
    m_wndToolBar.SetButtonInfo(2, ID_COLOR,TBSTYLE_BUTTON, 2);
    m_wndToolBar.SetButtonInfo(3, ID_QH,TBSTYLE_BUTTON, 3);
	m_wndToolBar.SetButtonInfo(4, ID_ABOUT,TBSTYLE_BUTTON, 4);
	m_wndToolBar.SetButtonInfo(5, ID_CONTENT,TBSTYLE_BUTTON, 5);
	m_wndToolBar.SetButtonInfo(6, ID_APP_EXIT,TBSTYLE_BUTTON, 6);
	

	CRect rectToolBar;
    m_wndToolBar.GetItemRect(0, &rectToolBar);
    m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(16,16));
	if(!m_wndReBar.Create(this))
	{
			TRACE0("Failed to create rebar\n");
			return -1;
	}
	str1.LoadString(IDS_ADDRESS1);
	m_wndReBar.AddBar(&m_wndAddress1,str1,NULL,RBBS_FIXEDBMP|RBBS_GRIPPERALWAYS);//RBBS_FIXEDSIZE);
	str2.LoadString(IDS_ADDRESS2);
	m_wndReBar.AddBar(&m_wndAddress2,str2,NULL,RBBS_FIXEDBMP|RBBS_GRIPPERALWAYS);//RBBS_BREAK);
	m_wndReBar.AddBar(&m_wndToolBar,NULL,NULL,RBBS_FIXEDBMP|RBBS_GRIPPERALWAYS);
    if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}
	COMBOBOXEXITEM ComboListItem1[1000];
	CStdioFile MyFile;
	CString str;
	char buf[1000];
	int i=0;
	Combo_ImageList.Create(16,16,TRUE,1000,1);
    this->m_wndAddress1.SetImageList(&Combo_ImageList);
	MyFile.Open("外部接口\\题库管理之学科名称.txt",CFile::modeRead|CFile::typeText);
	MyFile.SeekToBegin();
	while(MyFile.ReadString(str))
	{
		
		if(str!="")
		{

		try
		{
			
		CString subjecttable1;
		subjecttable1.Empty();
		subjecttable1=str+"单选题";
		CString tablestr;
	    tablestr.Empty();
	    tablestr="if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].["+subjecttable1+"]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN  CREATE TABLE [dbo].["+subjecttable1+"] ([题目编号] [int]  NOT NULL,[考试对象] [char] (10) NULL,[难度级别] [int] NULL,[题目内容] [text] NULL,[选项A] [text] NULL,[选项B] [text] NULL,[选项C] [text] NULL,[选项D] [text] NULL,[标准答案] [char] (50) NULL,[识别号] [int] NOT NULL,[用户名] [char] (50) NOT NULL) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]  ALTER TABLE [dbo].["+subjecttable1+"] WITH NOCHECK ADD CONSTRAINT [PK_"+subjecttable1+"] PRIMARY KEY  CLUSTERED ([识别号])  ON [PRIMARY] END";
        m_database.ExecuteSQL(tablestr);
		
		
		CString subjecttable2;
		subjecttable2.Empty();
		subjecttable2=str+"判断题";
	    tablestr.Empty();
	    tablestr="if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].["+subjecttable2+"]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN   CREATE TABLE [dbo].["+subjecttable2+"] ([题目编号] [int]  NOT NULL,[考试对象] [char] (10) NULL,[难度级别] [int] NULL,[题目内容] [text] NULL,[选项A] [text] NULL,[选项B] [text] NULL,[选项C] [text] NULL,[选项D] [text] NULL,[标准答案] [char] (50) NULL,[识别号] [int] NOT NULL,[用户名] [char] (50) NOT NULL) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]  ALTER TABLE [dbo].["+subjecttable2+"] WITH NOCHECK ADD CONSTRAINT [PK_"+subjecttable2+"] PRIMARY KEY  CLUSTERED ([识别号])  ON [PRIMARY] END";
        m_database.ExecuteSQL(tablestr);
		
		}
		catch(...)
		{
			return 0;
		}

		sprintf(buf,"     %s",str);
		AddBitmap(IDB_BITMAP1);
		ComboListItem1[i].iItem=i;
		ComboListItem1[i].mask=CBEIF_IMAGE|CBEIF_TEXT|CBEIF_SELECTEDIMAGE;
		ComboListItem1[i].cchTextMax=40;
		ComboListItem1[i].iImage=i;
		ComboListItem1[i].iSelectedImage=i;
		ComboListItem1[i].iOverlay=2;
		ComboListItem1[i].pszText=buf;
		this->m_wndAddress1.InsertItem(&ComboListItem1[i]); 
		str.Empty();
		i=i+1;
		}
	}
	this->m_wndAddress1.SetCurSel(0);
	MyFile.Close();

	Combo_ImageList2.Create(16,16,TRUE,2,1);
    this->m_wndAddress2.SetImageList(&Combo_ImageList2);
    COMBOBOXEXITEM ComboListItem2[2];
    LPTSTR  pszText2[2]={"     单选题","     判断题"};
    for(int j=0;j<2;j++)
		{
		AddBitmap2(IDB_BITMAP2);
		ComboListItem2[j].iItem=j;
		ComboListItem2[j].mask=CBEIF_IMAGE|CBEIF_TEXT|CBEIF_SELECTEDIMAGE;
		ComboListItem2[j].pszText=pszText2[j];
		ComboListItem2[j].cchTextMax=40;
		ComboListItem2[j].iImage=j;
		ComboListItem2[j].iSelectedImage=j;
		ComboListItem2[j].iOverlay=2;
		this->m_wndAddress2.InsertItem(&ComboListItem2[j]);
		}
    this->m_wndAddress2.SetCurSel(0);
	m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle()|CBRS_TOOLTIPS|CBRS_FLYBY);
	m_tooltip.Create(this);
	m_tooltip.Activate(TRUE);
	m_tooltip.SetTipBkColor(RGB(255,255,255));
	m_tooltip.SetTipTextColor(RGB(0,0,200));
	m_tooltip.SetDelayTime(100);
    testview = DYNAMIC_DOWNCAST(CTestPaperView, m_wndSplitter.GetPane(0,1));
	ASSERT_KINDOF(CTestPaperView, testview);
	m_wndStatusBar.SetPaneInfo(0,ID_INDI,SBPS_NORMAL,2000) ;
	this->RecalcLayout();
	return 0;
}

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
	CCreateContext* pContext)
{
	m_wndSplitter.CreateStatic(this,1,2);
	m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CModuleView),CSize(80,0),pContext);
	m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CTestPaperView),CSize(0,0),pContext);
	return TRUE;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	CTestPaperApp* pApp=(CTestPaperApp*) AfxGetApp();
	if(pApp->enterdlg.struser!="administrator")
	{
		cs.hMenu=NULL;	 
	}
	
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE
		| WS_THICKFRAME | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_MAXIMIZE;

	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::AddBitmap(UINT n)
{
	BOOL breturn;
	CBitmap bmp;
	breturn=bmp.LoadBitmap(n);
	if (breturn!=FALSE)
		{
		int nReturn=Combo_ImageList.Add(&bmp,RGB(255,255,255));
		bmp.DeleteObject();
		}
	//如果在装载位图的过程中有误,返回错误标志
	return breturn;
}
BOOL CMainFrame::AddBitmap2(UINT n)
{
	BOOL breturn;
	CBitmap bmp;
	breturn=bmp.LoadBitmap(n);
	if (breturn!=FALSE)
		{
		int nReturn=Combo_ImageList2.Add(&bmp,RGB(255,255,255));
		bmp.DeleteObject();
		}
	//如果在装载位图的过程中有误,返回错误标志
	return breturn;
}

void CMainFrame::OnAbout() 
{
	// TODO: Add your command handler code here
	CAboutDialog dlg;
	dlg.DoModal();
	
}

void CMainFrame::OnColor() //查看学生成绩表
{
	// TODO: Add your command handler code heredl
	CTestPaperApp* pApp=(CTestPaperApp*) AfxGetApp();
	if(pApp->enterdlg.struser!="administrator")
	{
		AfxMessageBox("对不起!你是一般用户身份!");
		return;
	}
	if(BoolConnent==FALSE)
	{
		AfxMessageBox("请连接数据源或无记录!");
		return;
	}
	try
	{
		if(m_seerecordset.IsOpen())
		{
			m_seerecordset.Close();
            m_seerecordset.Open(CRecordset::dynaset,"select * from 成绩表");
		}
		else
		{
			m_seerecordset.Open(CRecordset::dynaset,"select * from 成绩表");
		}
	}
	catch(...)
	{
		AfxMessageBox("cann't open table!");
		return;
	}
	if(m_seerecordset.GetRecordCount()==0)
	{
		AfxMessageBox("无记录!");
		return;
	}
	else
	{
 		CSeeDialog seedlg;
	    seedlg.DoModal();
	}
	
}

void CMainFrame::OnContent() 
{
	// TODO: Add your command handler code here
	//ShellExecute(0, "open","说明.txt", NULL, NULL, SW_SHOWNORMAL);
	//ShellExecute(0, "open","外部接口\\试题库管理与自动成卷系统的操作使用说明.doc", NULL, NULL, SW_SHOWNORMAL);
}

void CMainFrame::OnConnent() //连接数据源
{
	// TODO: Add your command handler code here;	
    BoolConnent=TRUE;
	Refreshdata();
}

void CMainFrame::OnDisconnent() //断开数据源
{
	// TODO: Add your command handler code here
	testview->m_ListCtrl.DeleteAllItems();
	BoolConnent=FALSE;
	AfxMessageBox("现已断开数据源!",MB_ICONINFORMATION);
	
}
void CMainFrame::OnDestroy() 
{
	CFrameWnd::OnDestroy();
	
	// TODO: Add your message handler code here
	
	if (m_bitmap1.m_hObject)
      m_bitmap1.DeleteObject();
    if (m_bitmap2.m_hObject)
      m_bitmap2.DeleteObject();
	if (m_bitmap3.m_hObject)
      m_bitmap3.DeleteObject();
    if (m_bitmap4.m_hObject)
      m_bitmap4.DeleteObject();
	if (m_bitmap5.m_hObject)
      m_bitmap5.DeleteObject();	
}
void CMainFrame::Refreshdata()//自定义刷新函数
{
	testview->m_ListCtrl.SetRedraw(FALSE);
	if(BoolConnent==FALSE)
	{
		AfxMessageBox("请连接数据源或无记录!");
		return;
	}
	list=list+1;
    if(list!=1)
	{
	testview->m_ListCtrl.DeleteAllItems();
	}
	CString tempstr;
	CString tempstr2;
	CString strSQL;
	strSQL.Empty();
	m_wndAddress1.GetLBText(m_wndAddress1.GetCurSel(),tempstr);
	tempstr.TrimLeft("   ");
    m_wndAddress2.GetLBText(m_wndAddress2.GetCurSel(),tempstr2);
	tempstr2.TrimLeft("   ");
	strSQL.Format("select * from %s%s",tempstr,tempstr2);
    try
	{
		if(m_recordset.IsOpen())
		{
			m_recordset.Close();
            m_recordset.Open(CRecordset::dynaset,strSQL);
		}
		else
		{
 			m_recordset.Open(CRecordset::dynaset,strSQL);
		}
	}
	catch(...)
	{
		AfxMessageBox("cann't open table!");
		return;
	}
	CDBVariant OleVar;
	CString buf;
	int i=0;
	if(m_recordset.GetRecordCount()!=0)
	{
		m_recordset.MoveFirst();
	}
	while(!m_recordset.IsEOF())
	{
		int temp=0;
		m_recordset.GetFieldValue(temp,OleVar);
		buf.Format("%d",OleVar.m_iVal);
		testview->m_ListCtrl.InsertItem(i,"");

⌨️ 快捷键说明

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