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

📄 selectview.cpp

📁 我上载了那么多怎么都说已经有上载的啦
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    if( FileDlg.DoModal() != IDOK )
		return;

    // To get the selected file's path and name
    CString strFileName;
    strFileName = FileDlg.GetPathName();

    if(strFileName.IsEmpty())
    {
		return;
	}

	const char* title[] = { "序号", "班级", "学号", "姓名", "性别", "指导老师", "联系方式", "地区", "\0" };
	int nPos[10];
	
	CSpreadSheet SS(strFileName, "Sheet1", false);
	CStringArray Rows;
	int nCount = 0;

	SS.ReadRow(Rows, 1);
	for (int j = 0; j < Rows.GetSize(); j++)
	{
		CString strTitle = Rows.GetAt(j);
		int k = 0;
		while( title[k][0] != '\0' )
		{
			if( strTitle.Find(title[k]) >= 0 )
			{
				nPos[k] = j;
				nCount++;
				break;
			}
			k++;
		}
	}
	CString strContents[10];
	int rowCount = SS.GetTotalRows();
	int nYear = m_pMainFrm->GetYear();
	int nError = 0;
	for (int i = 2; i <= rowCount; i++)
	{
		// 读取一行
		SS.ReadRow(Rows, i);
		strContents[2] = "";
		for (int j = 0; j < nCount && j < 8; j++)
		{
			strContents[j] = Rows.GetAt(nPos[j]);
		}

		if( strContents[2] != "" )
		{
			int  nID = atoi(strContents[0]);
			CString strClass = strContents[1];
			CString	strNumber = strContents[2];
			CString strName = strContents[3];
			CString strSex = strContents[4];			
			CString strTeacher = strContents[5];
			CString strContact = strContents[6];
			CString strDistrict = strContents[7];
			CStudent student = CStudent(nID, nYear, strNumber, strClass, strName, strSex, strTeacher, strContact, strDistrict);
			CString strWhere;
			strWhere.Format("届=%d and 学号='%s'", student.GetYear(), student.GetNumber());
			CStudent::Delete(strWhere);
			CStudent::Create(student);
		}
		else
		{
			nError++;
		}
	}
	CGlobal::GetInstance().CreateStudentList(nYear);
	m_pMainFrm->GetThemeView()->DrawList();
	
}

void CSelectView::OnUpdateImportSheet(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(theApp.IsAdmin());
	
}

void CSelectView::OnExportSheet() 
{
	// TODO: Add your command handler code here
	CString sFile;
	if( ExportSheet(sFile) )
	{
		AfxMessageBox("文件导出成功!");
	}
	
}

void CSelectView::OnUpdateExportSheet(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

static _TCHAR *gszTitle2[] =
{
    _T("序号"), _T("班级"), _T("学号"), _T("姓名"), _T("性别"), _T("指导老师"), _T("联系方式"), _T("上机地点"), "\0"
};

BOOL CSelectView::ExportSheet(CString& sFile) 
{
	static char BASED_CODE szFilter[] = "MS Excel Files (*.xls)|*.xls||";
	char szDefName[MAX_PATH];
	CString sTeacher = m_pMainFrm->GetSheetView()->GetTeacher();
	CTeacher* pTeacher = CGlobal::GetInstance().FindTeacher(sTeacher);

	if( !pTeacher )
		sprintf(szDefName,"%s","名单.xls");
	else 
		sprintf(szDefName,"%s-%s",pTeacher->GetName(), "名单.xls");

	char szPath[MAX_PATH];
	sprintf(szPath,"%s\\Sheet",theApp.GetWorkDirectory());
	
	CFileDialog FileDlg(FALSE,"XLS", NULL,
          OFN_FILEMUSTEXIST | OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY, szFilter,NULL); 
	FileDlg.m_ofn.lpstrInitialDir = szPath;
	FileDlg.m_ofn.lpstrFile = szDefName;
    if( FileDlg.DoModal() != IDOK )
		return FALSE;

    // To get the selected file's path and name
    CString strFileName;
    strFileName = FileDlg.GetPathName();

    if(strFileName.IsEmpty())
    {
		return FALSE;
	}

	DoExportSheet(strFileName);

	sFile = strFileName;

	return TRUE;
}

BOOL CSelectView::DoExportSheet(const CString& strFileName) 
{
	unlink(strFileName);
	// 新建Excel文件名及路径,TestSheet为内部表名
	CSpreadSheet SS(strFileName, "Sheet1");
	CStringArray sampleArray, testRow;
	CSheetView* pTView = m_pMainFrm->GetSheetView();
	
	SS.BeginTransaction();
	
	// 加入标题
	sampleArray.RemoveAll();
	int k = 0;
	int nCols = 0;
	while( gszTitle2[k][0] != '\0' )
	{
		sampleArray.Add(gszTitle2[k]);
		nCols++;
		k++;
	}
	SS.AddHeaders(sampleArray);
	
	// 加入数据
	CListCtrl& ListCtrl = pTView->GetListCtrl();
	int nRows = ListCtrl.GetItemCount();
	for(int i = 0; i < nRows; i++)
	{
		sampleArray.RemoveAll();
		for(int j = 0; j < nCols; j++)
		{
			CString str = ListCtrl.GetItemText(i,j);
			sampleArray.Add(str);
		}
		SS.AddRow(sampleArray);
	}
	
	SS.Commit();	
	
//	if(m_Check.GetCheck())
//		SS.Convert(";");            // 将原Excel文件转换为用分号分隔的文本,并另存为同名文本文件

	return TRUE;
}


void CSelectView::OnExportScore() 
{
	// TODO: Add your command handler code here
	CString sFile;
	if( ExportScore(sFile) )
	{
		AfxMessageBox("文件导出成功!");
	}
	
}

void CSelectView::OnUpdateExportScore(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

static _TCHAR *gszTitle3[] =
{
    _T("序号"), _T("学号"), _T("姓名"), _T("班级"), _T("毕业设计(论文)题目"), _T("成绩"), _T("指导老师"), _T("职称"), 	"\0"		
};
BOOL CSelectView::ExportScore(CString& sFile) 
{
	static char BASED_CODE szFilter[] = "MS Excel Files (*.xls)|*.xls||";
	char szDefName[MAX_PATH];
	CString sTeacher = m_pMainFrm->GetScoreView()->GetTeacher();
	CTeacher* pTeacher = CGlobal::GetInstance().FindTeacher(sTeacher);

	if( !pTeacher )
		sprintf(szDefName,"%s","成绩.xls");
	else 
		sprintf(szDefName,"%s-%s",pTeacher->GetName(), "成绩.xls");

	char szPath[MAX_PATH];
	sprintf(szPath,"%s\\Score",theApp.GetWorkDirectory());
	
	CFileDialog FileDlg(FALSE,"XLS", NULL,
          OFN_FILEMUSTEXIST | OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY, szFilter,NULL); 
	FileDlg.m_ofn.lpstrInitialDir = szPath;
	FileDlg.m_ofn.lpstrFile = szDefName;
    if( FileDlg.DoModal() != IDOK )
		return FALSE;

    // To get the selected file's path and name
    CString strFileName;
    strFileName = FileDlg.GetPathName();

    if(strFileName.IsEmpty())
    {
		return FALSE;
	}

	DoExportScore(strFileName);

	sFile = strFileName;

	return TRUE;
}

BOOL CSelectView::DoExportScore(const CString& strFileName) 
{
	unlink(strFileName);
	// 新建Excel文件名及路径,TestSheet为内部表名
	CSpreadSheet SS(strFileName, "Sheet1");
	CStringArray sampleArray, testRow;
	CScoreView* pTView = m_pMainFrm->GetScoreView();
	
	SS.BeginTransaction();
	
	// 加入标题
	sampleArray.RemoveAll();
	int k = 0;
	int nCols = 0;
	while( gszTitle3[k][0] != '\0' )
	{
		sampleArray.Add(gszTitle3[k]);
		nCols++;
		k++;
	}
	SS.AddHeaders(sampleArray);
	
	// 加入数据
	CListCtrl& ListCtrl = pTView->GetListCtrl();
	int nRows = ListCtrl.GetItemCount();
	for(int i = 0; i < nRows; i++)
	{
		sampleArray.RemoveAll();
		for(int j = 0; j < nCols; j++)
		{
			CString str = ListCtrl.GetItemText(i,j);
			sampleArray.Add(str);
		}
		SS.AddRow(sampleArray);
	}
	
	SS.Commit();	
	
//	if(m_Check.GetCheck())
//		SS.Convert(";");            // 将原Excel文件转换为用分号分隔的文本,并另存为同名文本文件

	return TRUE;
}


void CSelectView::OnImportScore() 
{
	// TODO: Add your command handler code here
	static char BASED_CODE szFilter[] = "MS Excel Files (*.xls)|*.xls||";
	CString strDefName;
	strDefName.Format("%s", "成绩.xls");

	char szPath[MAX_PATH];
	sprintf(szPath,"%s\\Score",theApp.GetWorkDirectory());
	
    CFileDialog FileDlg(TRUE,"XLS",NULL,
                        OFN_FILEMUSTEXIST|OFN_NONETWORKBUTTON|
                        OFN_PATHMUSTEXIST,szFilter);
	FileDlg.m_ofn.lpstrInitialDir = szPath;
    if( FileDlg.DoModal() != IDOK )
		return;

    // To get the selected file's path and name
    CString strFileName;
    strFileName = FileDlg.GetPathName();

    if(strFileName.IsEmpty())
    {
		return;
	}

	const char* title[] = { "学号", "成绩", "\0" };
	int nPos[10];
	
	CSpreadSheet SS(strFileName, "Sheet1", false);
	CStringArray Rows;
	int nCount = 0;

	SS.ReadRow(Rows, 1);
	for (int j = 0; j < Rows.GetSize(); j++)
	{
		CString strTitle = Rows.GetAt(j);
		int k = 0;
		while( title[k][0] != '\0' )
		{
			if( strTitle.Find(title[k]) >= 0 )
			{
				nPos[k] = j;
				nCount++;
				break;
			}
			k++;
		}
	}
	CString strContents[10];
	int rowCount = SS.GetTotalRows();
	int nYear = m_pMainFrm->GetYear();
	int nError = 0;
	for (int i = 2; i <= rowCount; i++)
	{
		// 读取一行
		SS.ReadRow(Rows, i);
		strContents[0] = "";
		strContents[1] = "";
		for (int j = 0; j < nCount && j < 8; j++)
		{
			strContents[j] = Rows.GetAt(nPos[j]);
		}

		if( strContents[1] == "" )
			strContents[1] = "0";

		if( strContents[0] != "" )
		{
			CString	strNumber = strContents[0];
			int nScore = atoi(strContents[1]);
			CStudent* pStudent = CGlobal::GetInstance().FindStudent(strNumber, nYear);
			if( pStudent )
			{
				CScore score = pStudent->GetScore();
				score.SetScore(nScore);
				pStudent->SetScore(score);
				CScore::Update(score);
			}
		}
		else
		{
			nError++;
		}
	}
	m_pMainFrm->GetScoreView()->DrawList();
	
}

void CSelectView::OnUpdateImportScore(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(theApp.IsAdmin());
	
}

void CSelectView::OnExportMailScore() 
{
	// TODO: Add your command handler code here
	CString sFile;
	if( !ExportScore(sFile) )
	{
		AfxMessageBox("文件导出失败!");
		return;
	}

	CString sTeacher = m_pMainFrm->GetScoreView()->GetTeacher();
	Mail(sFile, sTeacher, "毕设成绩")	;
	
}

void CSelectView::OnUpdateExportMailScore(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(theApp.IsAdmin() || m_strItemText[2] == theApp.GetLogin());
	
}

void CSelectView::OnSendMsg() 
{
	// TODO: Add your command handler code here
	int nStyle = m_pMainFrm->GetViewStyle();
	CString sTeacher = "";
	if( nStyle == SHEET_STYLE )
		sTeacher = m_pMainFrm->GetSheetView()->GetTeacher();
	else if( nStyle == THEME_STYLE )
		sTeacher = m_pMainFrm->GetThemeView()->GetTeacher();
	else if( nStyle == SCORE_STYLE )
		sTeacher = m_pMainFrm->GetScoreView()->GetTeacher();
	CMailDlg MailDlg(this, sTeacher, "", 2);
	if( MailDlg.DoModal() == IDCANCEL )
	{
		return;
	}
	
	CString sEMail = MailDlg.m_sReceiver;
	if( sEMail == "" || sEMail.Find("@") < 0 )
		return;

	CString sSubject = MailDlg.m_sSubject;
	CString sBody = MailDlg.m_sBody;
	if( sSubject == "" )
		sSubject = "毕业设计管理系统";

	CString sAttach = MailDlg.m_strAffixPath ;

	m_mail.m_sTo = sEMail;
	m_mail.m_sCC = "";
	m_mail.m_sBCC = "";
	m_mail.m_sSubject = sSubject;
	m_mail.m_sBody = sBody;
	m_mail.m_sFile = sAttach;
	m_mail.m_pMainFrm = m_pMainFrm;
	AfxBeginThread(CMainFrame::SendMailThreadProc,(LPVOID)&m_mail);//启动线程
}

void CSelectView::OnUpdateSendMsg(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

void CSelectView::OnAssign() 
{
	// TODO: Add your command handler code here
	CAssignDlg AssignDlg(this);
	if( AssignDlg.DoModal() == IDOK )
	{
	}
}

void CSelectView::OnUpdateAssign(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(theApp.IsAdmin());
}

⌨️ 快捷键说明

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