📄 searchonnum.cpp
字号:
// SearchOnNum.cpp : implementation file
//
#include "stdafx.h"
#include "StuSys.h"
#include "SearchOnNum.h"
#include "StuSysDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSearchOnNum dialog
CSearchOnNum::CSearchOnNum(CWnd* pParent /*=NULL*/)
: CDialog(CSearchOnNum::IDD, pParent)
{
//{{AFX_DATA_INIT(CSearchOnNum)
m_SearchNum_Enter = _T("");
m_StuNum_Show = _T("");
m_StuName_Show =_T("") ;
m_StuSex_Show =_T("");
m_StuAge_Show = 0;
m_StuGrade_Show =_T("");
m_AveScore_Show = 0.0f;
m_TotalScore_Show = 0.0f;
//}}AFX_DATA_INIT
}
void CSearchOnNum::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSearchOnNum)
DDX_Control(pDX, IDC_SEACHER_LIST, m_SearchNum_List);
DDX_Text(pDX, IDC_SEARCHNUM_ENTER, m_SearchNum_Enter);
DDX_Text(pDX, IDC_EDIT1, m_StuNum_Show);
DDX_Text(pDX, IDC_EDIT2, m_StuName_Show);
DDX_Text(pDX, IDC_EDIT3, m_StuSex_Show);
DDX_Text(pDX, IDC_EDIT4, m_StuAge_Show);
DDX_Text(pDX, IDC_EDIT5, m_StuGrade_Show);
DDX_Text(pDX, IDC_EDIT6, m_AveScore_Show);
DDX_Text(pDX, IDC_EDIT7, m_TotalScore_Show);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSearchOnNum, CDialog)
//{{AFX_MSG_MAP(CSearchOnNum)
ON_BN_CLICKED(ID_SEARCH, OnSearchNum)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSearchOnNum message handlers
BOOL CSearchOnNum::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//初始化课程信息列表控件
m_SearchNum_List.SetExtendedStyle(LVS_EX_TRACKSELECT|LVS_EX_ONECLICKACTIVATE|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
//设置扩展属性(网格,一行全选……)
m_SearchNum_List.SetBkColor(RGB(224,123,253));
//设定背景色为RGB();
m_SearchNum_List.InsertColumn(0,"课程",LVCFMT_RIGHT,170,0);
m_SearchNum_List.InsertColumn(1,"教师",LVCFMT_CENTER,96,0);
m_SearchNum_List.InsertColumn(2,"分数",LVCFMT_CENTER,96,0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSearchOnNum::OnSearchNum()
{
// TODO: Add your control notification handler code here
//删除原来列表中的条目
int nCount =m_SearchNum_List.GetItemCount();
for (int j=0;j < nCount;j++)
{
m_SearchNum_List.DeleteItem(0);
}
CStuSysDlg* pMain=(CStuSysDlg*)AfxGetApp()->m_pMainWnd;
UpdateData();
int HashBase=_ttoi(m_SearchNum_Enter.Right(3))+_ttoi(m_SearchNum_Enter.Left(2));
//HashBase为Hash函数处理的值,取学号的后三位和前两位相加
int HashIndex=pMain->Hash(HashBase);
//调用hash函数,获得哈希地址
int d=1;
while( pMain->m_Student[HashIndex].m_StuName!=""&&pMain->m_Student[HashIndex].m_StuNum!=m_SearchNum_Enter)
//此处判断是否继续探测的——探测到hash表的位置原始为空即其姓名信息为空,因为如果是删除,则仅仅删除学号信息,
//而保留姓名和其他信息,这样不会破坏探测的连续性
{
pMain->Collision( HashIndex, d );
//解决冲突,获得新的HashIndex
// d++;
}
if(pMain->m_Student[HashIndex].m_StuNum == m_SearchNum_Enter)//说明此时查找成功
{
m_StuNum_Show=pMain->m_Student[HashIndex].m_StuNum;
m_StuName_Show=pMain->m_Student[HashIndex].m_StuName;
if(pMain->m_Student[HashIndex].m_Sex==0)
m_StuSex_Show="男";
else
m_StuSex_Show="女";
if(pMain->m_Student[HashIndex].m_Grade==0)
m_StuGrade_Show="大一";
else if(pMain->m_Student[HashIndex].m_Grade==1)
m_StuGrade_Show="大二";
else if(pMain->m_Student[HashIndex].m_Grade==2)
m_StuGrade_Show="大三";
else
m_StuGrade_Show="大四";
m_StuAge_Show=pMain->m_Student[HashIndex].m_Age;
//将该学生的全部课程及分数显示
float TotalScore=0;
float AveScore=0;
// int HashIndex=pMain->m_BaseInfo.m_StudentIndex[m_index];
int max=pMain->m_Student[HashIndex].SoreIndex;
for(int i=0; i<max; i++)
{
m_SearchNum_List.InsertItem(i,pMain->m_Student[HashIndex].m_ScoreName[i]);
m_SearchNum_List.SetItemText(i,1,pMain->m_Student[HashIndex].m_ScoreTeacher[i]);
CString temp;
temp.Format("%f",pMain->m_Student[HashIndex].m_Score[i]);
m_SearchNum_List.SetItemText(i,2,temp);
TotalScore+=pMain->m_Student[HashIndex].m_Score[i];
//显示课程名和老师,分数
if(pMain->m_Student[HashIndex].m_ScoreName[i+1]=="")
break;
}
if(max!=0)
{
AveScore=TotalScore/(float)(pMain->m_Student[HashIndex].SoreIndex);
}
m_AveScore_Show=AveScore;
m_TotalScore_Show=TotalScore;
// m_ScoreNameShow=pMain->m_Student[HashIndex].m_StuName;
// m_ScoreNumberShow=pMain->m_Student[HashIndex].m_StuNum;
UpdateData(FALSE);
}
else
{
MessageBox("未找到此学生","提示");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -