📄 searchstatisticsview.cpp
字号:
" -------------------------------搜索结果-------------------------------\r\n\r\n 没有找到此种性别的学生!");
}
void CSearchStatisticsView::SearchByStudNum(CString strSchCtt)
{
UINT uiStudNum;
uiStudNum=Char2UINT((LPSTR)(LPCTSTR)strSchCtt);
UINT uiAddr=(uiStudNum-uiStudNum/1000*1000)%11;
UINT uiAddrBkUp=uiAddr;
bool bIsFind=true;
if(pStudInfo[uiAddr].uiStudNum==uiStudNum)
PrintStudInfo(pStudInfo[uiAddr]);
else
while(pStudInfo[uiAddr].uiStudNum!=uiStudNum)
{
uiAddr=(uiAddr+1)%10;
if(uiAddr==uiAddrBkUp)
{
bIsFind=false;
break;
}
}
if(!bIsFind)
m_pMainFrame->m_wndOutputBar.SetEditText(1,
" -------------------------------搜索结果-------------------------------\r\n\r\n 查无此人!");
}
void CSearchStatisticsView::SearchByTeacher(CString strSchCtt)
{
UINT i;
bool bIsFind=false;
char* pInTeacher;
char pTeacherTemp1[10];
char pTeacherTemp2[10];
pInTeacher=(LPSTR)(LPCTSTR)strSchCtt;
for(i=0;i<10;i++)
{
strcpy(pTeacherTemp1,pStudInfo[i].pCourseInfo->pTeacher);
strcpy(pTeacherTemp2,pStudInfo[i].pCourseInfo->pNext->pTeacher);
if(!strcmp(strupr(pTeacherTemp1),strupr(pInTeacher)))
{
bIsFind=true;
PrintStudInfo(pStudInfo[i]);
}
if(!strcmp(strupr(pTeacherTemp2),strupr(pInTeacher)))
{
bIsFind=true;
PrintStudInfo(pStudInfo[i]);
}
}
if(!bIsFind)
m_pMainFrame->m_wndOutputBar.SetEditText(1,
" -------------------------------搜索结果-------------------------------\r\n\r\n 没有学生听该老师的课!");
}
void CSearchStatisticsView::PrintStudInfo(StudInfo studInfo)
{
CString str;
CString strFormer; //输出结果栏中原来已有的字符串
char* pName; //姓名
UINT uiStudNum; //学号,规定为9位,如080210114
UINT uiAge; //年龄
char* pSex; //性别
char* pCourse1; //课程名
UINT uiMark1; //成绩
char* pTeacher1; //教师
char* pCourse2; //课程名
UINT uiMark2; //成绩
char* pTeacher2; //教师
strFormer=m_pMainFrame->m_wndOutputBar.GetEditText(1);
pName=studInfo.pName;
uiStudNum=studInfo.uiStudNum;
uiAge=studInfo.uiAge;
pSex=studInfo.pSex;
pCourse1=studInfo.pCourseInfo->pCourse;
uiMark1=studInfo.pCourseInfo->uiMark;
pTeacher1=studInfo.pCourseInfo->pTeacher;
pCourse2=studInfo.pCourseInfo->pNext->pCourse;
uiMark2=studInfo.pCourseInfo->pNext->uiMark;
pTeacher2=studInfo.pCourseInfo->pNext->pTeacher;
if(uiStudNum/100000000==0)
str.Format(" %-10s0%-9d%-5d%-5s%-11s%-5d%-11s%-11s%-5d%-6s\r\n",pName,uiStudNum,uiAge,pSex,pCourse1,uiMark1,pTeacher1,pCourse2,uiMark2,pTeacher2);
else
str.Format(" %-10s%-9d%-5d%-5s%-11s%-5d%-11s%-11s%-5d%-6s\r\n",pName,uiStudNum,uiAge,pSex,pCourse1,uiMark1,pTeacher1,pCourse2,uiMark2,pTeacher2);
str=strFormer+str;
m_pMainFrame->m_wndOutputBar.SetEditText(1,str);
}
UINT CSearchStatisticsView::GetGrade(UINT uiStudNum)
{
return (uiStudNum/100000)%100;
}
void CSearchStatisticsView::GetStudInfo(StudInfo *pStudInfo)
{
this->pStudInfo=pStudInfo;
}
UINT CSearchStatisticsView::Char2UINT(char* pStr)
{
UINT uiRet=0;
UINT uiLen=strlen(pStr);
UINT i;
for(i=0;i<uiLen;i++)
uiRet+=((int)pStr[i]-48)*pow(10,uiLen-i-1);
return uiRet;
}
void CSearchStatisticsView::StatisticsBoyGirlCount()
{
UINT i;
m_uiBoyCount=0,m_uiGirlCount=0;
for(i=0;i<10;i++)
if(!strcmp(pStudInfo[i].pSex,"男") || !strcmp(pStudInfo[i].pSex,"M") || !strcmp(pStudInfo[i].pSex,"m"))
m_uiBoyCount++;
else
m_uiGirlCount++;
this->UpdateData(false);
}
void CSearchStatisticsView::StatisticsCourseAverageMark()
{
UINT pCourseAllMark[20]={0}; //各门课总分
float pCourseAverageMark[20];//各门课平均分
UINT pStudCount[10]={0}; //各门课人数
char* pCourse[20]={NULL}; //各门课数组
UINT i,j;
bool bIsFind1,bIsFind2;
UINT uiPos=0;
CString str,strTemp;
for(i=0;i<10;i++)
{
bIsFind1=false;
bIsFind2=false;
//分析该学生的课程1是否已在课程数组
for(j=0;j<20;j++)
if(pCourse[j]!=NULL)
if(!strcmp(pCourse[j],pStudInfo[i].pCourseInfo->pCourse))
{
bIsFind1=true;
break;
}
if(!bIsFind1)
{
pCourse[uiPos]=pStudInfo[i].pCourseInfo->pCourse;
pCourseAllMark[uiPos]=pStudInfo[i].pCourseInfo->uiMark;
pStudCount[uiPos]=1;
uiPos++;
}
else
{
pStudCount[j]++;
pCourseAllMark[j]+=pStudInfo[i].pCourseInfo->uiMark;
}
//分析该学生的课程2是否已在课程数组
for(j=0;j<20;j++)
if(pCourse[j]!=NULL)
if(!strcmp(pCourse[j],pStudInfo[i].pCourseInfo->pNext->pCourse))
{
bIsFind2=true;
break;
}
if(!bIsFind2)
{
pCourse[uiPos]=pStudInfo[i].pCourseInfo->pNext->pCourse;
pCourseAllMark[uiPos]=pStudInfo[i].pCourseInfo->pNext->uiMark;
pStudCount[uiPos]=1;
uiPos++;
}
else
{
pStudCount[j]++;
pCourseAllMark[j]+=pStudInfo[i].pCourseInfo->pNext->uiMark;
}
}
for(i=0;i<uiPos;i++)
pCourseAverageMark[i]=pCourseAllMark[i]*1.0/pStudCount[i];
str.Format("%-10s%-8s\r\n","课程","平均成绩");
for(i=0;i<uiPos;i++)
{
strTemp.Format("%-10s%-8f\r\n",pCourse[i],pCourseAverageMark[i]);
str+=strTemp;
}
m_edtCourseAverageMark.SetWindowText(str);
}
void CSearchStatisticsView::StatisticsGradeAverageAge()
{
int pGrade[10]; //年级数组
UINT pGradeAllAge[10]={0}; //各年级总年龄
UINT pStudCount[10]={0}; //各年级人数
float pGradeAverageAge[10];//各年级平均年龄
UINT i,j,uiPos=0;
bool bIsFind;
UINT uiCount=0;
CString str,strTemp;
//初始化
for(i=0;i<10;i++)
pGrade[i]=-1;
for(i=0;i<10;i++)
{
bIsFind=false;
//分析该学生所在年级是否已在年级数组
for(j=0;j<10;j++)
if(GetGrade(pStudInfo[i].uiStudNum)==pGrade[j])
{
bIsFind=true;
break;
}
if(!bIsFind)
{
pGrade[uiPos]=GetGrade(pStudInfo[i].uiStudNum);
pGradeAllAge[uiPos]=pStudInfo[i].uiAge;
pStudCount[uiPos]=1;
uiPos++;
}
else
{
pStudCount[j]++;
pGradeAllAge[j]+=pStudInfo[i].uiAge;
}
}
for(i=0;i<uiPos;i++)
pGradeAverageAge[i]=pGradeAllAge[i]*1.0/pStudCount[i];
str.Format("%-10s%-8s\r\n","年级","平均年龄");
for(i=0;i<uiPos;i++)
{
if(pGrade[i]>9)
strTemp.Format("%-10d%-8f\r\n",pGrade[i],pGradeAverageAge[i]);
else
strTemp.Format("0%-9d%-8f\r\n",pGrade[i],pGradeAverageAge[i]);
str+=strTemp;
}
m_edtGradeAverageAge.SetWindowText(str);
}
void CSearchStatisticsView::StatisticsPersonAverageMark()
{
UINT i;
float uiTemp;
CString str,strTemp;
str.Format("%-10s%-8s\r\n","姓名","平均成绩");
for(i=0;i<10;i++)
{
uiTemp=(pStudInfo[i].pCourseInfo->uiMark+pStudInfo[i].pCourseInfo->pNext->uiMark)*1.0/2;
strTemp.Format("%-10s%-8f\r\n",pStudInfo[i].pName,uiTemp);
str+=strTemp;
}
m_edtPersonAverageMark.SetWindowText(str);
}
void CSearchStatisticsView::OnFileOpen()
{
// TODO: Add your command handler code here
}
void CSearchStatisticsView::OnEditchangeComboSchctt()
{
// TODO: Add your control notification handler code here
CString str;
CComboBox* hWnd;
hWnd=(CComboBox*)GetDlgItem(IDC_COMBO_SCHCTT);
hWnd->GetWindowText(str);
int nLength = str.GetLength();
// Currently selected range
DWORD dwCurSel =hWnd->GetEditSel();
WORD dStart = LOWORD(dwCurSel);
WORD dEnd = HIWORD(dwCurSel);
// Search for, and select in, and string in the combo box that is prefixed
// by the text in the edit box
if (hWnd->SelectString(-1, str) == CB_ERR)
{
hWnd->SetWindowText(str); // No text selected, so restore what was there before
if (dwCurSel != CB_ERR)
hWnd->SetEditSel(dStart, dEnd); //restore cursor postion
}
// Set the text selection as the additional text that we have added
if (dEnd < nLength && dwCurSel != CB_ERR)
hWnd->SetEditSel(dStart, dEnd);
else
hWnd->SetEditSel(nLength, -1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -