📄 selectview.cpp
字号:
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 + -