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

📄 searchonnum.cpp

📁 应该会有很多漏洞的
💻 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 + -