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

📄 finddlg.cpp

📁 一个简单的学生学籍管理工具。vc编写。 有喜欢的可以批评指正^_^
💻 CPP
字号:
// finddlg.cpp : implementation file
//

#include "stdafx.h"
#include "studentwin.h"
#include "finddlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// Cfinddlg dialog
Cfinddlg::Cfinddlg(CWnd* pParent /*=NULL*/)
	: CDialog(Cfinddlg::IDD, pParent)
{	
	
pstudent=NULL;
find=false;
findcursor=-1;
m_dlg=NULL;
str="";
i=0;
stop=false;
m_record="显示查询信息";
	//{{AFX_DATA_INIT(Cfinddlg)
	m_data = _T("");
	m_record = _T("");
	pDoc=NULL;
	counter=0;
	kind=1;
	m_num = _T("");
	m_num2 = _T("");
	//}}AFX_DATA_INIT
}


void Cfinddlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(Cfinddlg)
	DDX_Control(pDX, IDC_PROGRESS1, m_pro);
	DDX_Control(pDX, IDC_data, m_editdata);
	DDX_Control(pDX, IDC_finish, m_finish);
	DDX_Control(pDX, IDC_staticstop, m_staticstop);
	DDX_Control(pDX, IDC_staticstart, m_staticstart);
	DDX_Control(pDX, IDC_staticname, m_staticname);
	DDX_Text(pDX, IDC_data, m_data);
	DDX_Text(pDX, IDC_record, m_record);
	DDX_Text(pDX, IDC_NUM, m_num);
	DDX_Text(pDX, IDC_NUM2, m_num2);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(Cfinddlg, CDialog)
	//{{AFX_MSG_MAP(Cfinddlg)
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONDOWN()
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Cfinddlg message handlers

void Cfinddlg::OnMouseMove(UINT nFlags, CPoint point) 
{
if(point.x>startrect.left&&point.x<startrect.right&&point.y>startrect.top&&point.y<startrect.bottom)
	{
		UpdateData();
		CDC*pDC=GetDC();
		CPen pen;
	pen.CreatePen(PS_SOLID,1,RGB(200,0,20));
CPen*oldpen=pDC->SelectObject(&pen);
pDC->MoveTo(startrect.left-2,startrect.top-2);
pDC->LineTo(startrect.right+2,startrect.top-2);
pDC->LineTo(startrect.right+2,startrect.bottom+2);
pDC->LineTo(startrect.left-2,startrect.bottom+2);
pDC->LineTo(startrect.left-2,startrect.top-2);
pDC->SelectObject(oldpen);
ReleaseDC(pDC);

	}
else{
	if(point.x>finishrect.left&&point.x<finishrect.right&&point.y>finishrect.top&&point.y<finishrect.bottom)
	{
		CDC*pDC=GetDC();
		CPen pen;
	pen.CreatePen(PS_SOLID,1,RGB(200,0,20));
CPen*oldpen=pDC->SelectObject(&pen);
pDC->MoveTo(finishrect.left-2,finishrect.top-2);
pDC->LineTo(finishrect.right+2,finishrect.top-2);
pDC->LineTo(finishrect.right+2,finishrect.bottom+2);
pDC->LineTo(finishrect.left-2,finishrect.bottom+2);
pDC->LineTo(finishrect.left-2,finishrect.top-2);

pDC->SelectObject(oldpen);
ReleaseDC(pDC);
	}
	else{
CDC*pDC=GetDC();
		CPen pen;
	pen.CreatePen(PS_SOLID,1,RGB(0,0,0));
CPen*oldpen=pDC->SelectObject(&pen);
pDC->MoveTo(finishrect.left-2,finishrect.top-2);
pDC->LineTo(finishrect.right+2,finishrect.top-2);
pDC->LineTo(finishrect.right+2,finishrect.bottom+2);
pDC->LineTo(finishrect.left-2,finishrect.bottom+2);
pDC->LineTo(finishrect.left-2,finishrect.top-2);
pDC->MoveTo(startrect.left-2,startrect.top-2);
pDC->LineTo(startrect.right+2,startrect.top-2);
pDC->LineTo(startrect.right+2,startrect.bottom+2);
pDC->LineTo(startrect.left-2,startrect.bottom+2);
pDC->LineTo(startrect.left-2,startrect.top-2);
pDC->SelectObject(oldpen);
ReleaseDC(pDC);	}
}
	CDialog::OnMouseMove(nFlags, point);
}

void Cfinddlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
	
	if(point.x>startrect.left&&point.x<startrect.right&&point.y>startrect.top&&point.y<startrect.bottom)
	{
		UpdateData();
m_staticstart.SetWindowText("正在查询");
stop=false;
		CDC*pDC=GetDC();
		CPen pen;
	pen.CreatePen(PS_SOLID,1,RGB(100,100,255));
CPen*oldpen=pDC->SelectObject(&pen);
pDC->MoveTo(startrect.left-2,startrect.top-2);
pDC->LineTo(startrect.right+2,startrect.top-2);
pDC->LineTo(startrect.right+2,startrect.bottom+2);
pDC->LineTo(startrect.left-2,startrect.bottom+2);
pDC->LineTo(startrect.left-2,startrect.top-2);
pDC->SelectObject(oldpen);
ReleaseDC(pDC);
finddata();
	}

	if(point.x>finishrect.left&&point.x<finishrect.right&&point.y>finishrect.top&&point.y<finishrect.bottom)
	{
		CDC*pDC=GetDC();
		CPen pen;
	pen.CreatePen(PS_SOLID,1,RGB(200,0,255));
CPen*oldpen=pDC->SelectObject(&pen);
pDC->MoveTo(finishrect.left-2,finishrect.top-2);
pDC->LineTo(finishrect.right+2,finishrect.top-2);
pDC->LineTo(finishrect.right+2,finishrect.bottom+2);
pDC->LineTo(finishrect.left-2,finishrect.bottom+2);
pDC->LineTo(finishrect.left-2,finishrect.top-2);

pDC->SelectObject(oldpen);
ReleaseDC(pDC);
PostMessage(WM_CLOSE);

	}
/*	if(point.x>stoprect.left&&point.x<stoprect.right&&point.y>stoprect.top&&point.y<stoprect.bottom)
	{
		CDC*pDC=GetDC();
		CPen pen;
	pen.CreatePen(PS_SOLID,1,RGB(200,0,20));
CPen*oldpen=pDC->SelectObject(&pen);
pDC->MoveTo(stoprect.left-2,stoprect.top-2);
pDC->LineTo(stoprect.right+2,stoprect.top-2);
pDC->LineTo(stoprect.right+2,stoprect.bottom+2);
pDC->LineTo(stoprect.left-2,stoprect.bottom+2);
pDC->LineTo(stoprect.left-2,stoprect.top-2);
pDC->SelectObject(oldpen);
ReleaseDC(pDC);
stop=true; 
UpdateData(false);  
	}*/
	
	CDialog::OnLButtonDown(nFlags, point);
}

BOOL Cfinddlg::OnInitDialog() 
{	
		
//////////////
	
		
CDialog::OnInitDialog();
m_num.Format("%d",pDoc->m_dataList.GetCount());
UpdateData(false);
MoveWindow(320,100,440,300);
switch(kind)
	{
	case 1:m_staticname.SetWindowText("请输入你要查询的姓名:");break;
	case 2:m_staticname.SetWindowText("请输入你要查询的地址:");break;
	case 3:m_staticname.SetWindowText("请输入你要查询的年龄:");break;
	case 4:m_staticname.SetWindowText("请输入你要查询的课程(不及格)");break;
	default:break;
	}
m_finish.GetWindowRect(&finishrect);
m_staticstart.GetWindowRect(&startrect);
	m_staticstop.GetWindowRect(&stoprect);
	ScreenToClient(&finishrect);
	ScreenToClient(&startrect);
	ScreenToClient(&stoprect);
	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void Cfinddlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
CPen pen;
	pen.CreatePen(PS_SOLID,1,RGB(20,20,60));
CPen*oldpen=dc.SelectObject(&pen);
dc.MoveTo(startrect.left-2,startrect.top-2);
dc.LineTo(startrect.right+2,startrect.top-2);
dc.LineTo(startrect.right+2,startrect.bottom+2);
dc.LineTo(startrect.left-2,startrect.bottom+2);
dc.LineTo(startrect.left-2,startrect.top-2);
dc.MoveTo(finishrect.left-2,finishrect.top-2);
dc.LineTo(finishrect.right+2,finishrect.top-2);
dc.LineTo(finishrect.right+2,finishrect.bottom+2);
dc.LineTo(finishrect.left-2,finishrect.bottom+2);
dc.LineTo(finishrect.left-2,finishrect.top-2);
dc.SelectObject(oldpen);
}

void Cfinddlg::finddata()
{
	
int recordcouter=0;
switch(kind)
{
case 1:
m_pro.SetRange(1,100);

//int i=100/counter;
m_pro.SetStep(1);
m_pro.SetPos(0);
	m_pro.StepIt();
pDoc->curpos=pDoc->m_dataList.GetHeadPosition();
while(pDoc->curpos!=NULL)
{
	if(stop==true)
	{	
	//find=false;
	//break;
	}
pstudent=pDoc->m_dataList.GetAt(pDoc->curpos);
if(pstudent->name==m_data)
{
findcursor++;
m_num2.Format("%d",findcursor+1);
UpdateData(false);
p[findcursor]=pDoc->curpos;
	find=true;
//break;
}
recordcouter++;
for(int i=0;i<20000000;i++);
m_record.Format("第%d条纪录",recordcouter);


pDoc->m_dataList.GetNext(pDoc->curpos);
m_pro.SetPos(recordcouter+1);
UpdateData(false);
if(pDoc->curpos==NULL)
{
m_staticstart.SetWindowText("查询");
break;
}//没有查到
}
if(find==true)
{
m_staticstart.SetWindowText("查询");	
m_dlg=new Cdoubledlg(this);
m_dlg->dlgtype=2;
m_dlg->pDoc=pDoc;
for(int i=0;i<findcursor+1;i++)
m_dlg->p[i]=p[i];
m_dlg->findcouter=findcursor+1;
m_dlg->open=true;
m_dlg->Create(IDD_doubleview,this);
m_dlg->ShowWindow(SW_SHOW);

	find=false;
}	

	break;
case 2:
	i=0;
pDoc->curpos=pDoc->m_dataList.GetHeadPosition();
while(pDoc->curpos!=NULL)
{
pstudent=pDoc->m_dataList.GetAt(pDoc->curpos);
if(pstudent->addr.Find(m_data)==0)
{
findcursor++;
m_num2.Format("%d",findcursor+1);
UpdateData(false);
p[findcursor]=pDoc->curpos;
	find=true;
//break;
}
recordcouter++;
m_record.Format("第%d条纪录",recordcouter);
for(int i=0;i<20000000;i++);
UpdateData(false);
pDoc->m_dataList.GetNext(pDoc->curpos);
if(pDoc->curpos==NULL)
{
m_staticstart.SetWindowText("查询");
break;
}//没有查到
}
if(find==true)
{
m_staticstart.SetWindowText("查询");	
m_dlg=new Cdoubledlg(this);
m_dlg->dlgtype=2;
m_dlg->pDoc=pDoc;
for(int i=0;i<findcursor+1;i++)
m_dlg->p[i]=p[i];
m_dlg->findcouter=findcursor+1;
m_dlg->open=true;
m_dlg->Create(IDD_doubleview,this);
m_dlg->ShowWindow(SW_SHOW);
	find=false;
}	
break;
case 3:
pDoc->curpos=pDoc->m_dataList.GetHeadPosition();
testdata();
while(pDoc->curpos!=NULL)
{
pstudent=pDoc->m_dataList.GetAt(pDoc->curpos);
str.Format("%d",2002-pstudent->year);

if(str==m_data)
{
findcursor++;
m_num2.Format("%d",findcursor+1);
UpdateData(false);
p[findcursor]=pDoc->curpos;
	find=true;
//break;
}
recordcouter++;
m_record.Format("第%d条纪录",recordcouter);
for(int i=0;i<20000000;i++);
UpdateData(false);
pDoc->m_dataList.GetNext(pDoc->curpos);
if(pDoc->curpos==NULL)
{
m_staticstart.SetWindowText("查询");
break;//没有查到
}
}
if(find==true)
{	
m_staticstart.SetWindowText("查询");
m_dlg=new Cdoubledlg(this);
m_dlg->dlgtype=2;
m_dlg->pDoc=pDoc;
for(int i=0;i<findcursor+1;i++)
m_dlg->p[i]=p[i];
m_dlg->findcouter=findcursor+1;
m_dlg->open=true;
m_dlg->Create(IDD_doubleview,this);
m_dlg->ShowWindow(SW_SHOW);
	find=false;
}		
break;
case 4:
pDoc->curpos=pDoc->m_dataList.GetHeadPosition();
while(pDoc->curpos!=NULL)
{
pstudent=pDoc->m_dataList.GetAt(pDoc->curpos);
for(i=0;i<4;i++)
{
if(pstudent->lesson[i].name==m_data&&pstudent->lesson[i].fen<60)
{
findcursor++;
m_num2.Format("%d",findcursor+1);
UpdateData(false);
p[findcursor]=pDoc->curpos;
	find=true;
break;
}

}
recordcouter++;
m_record.Format("第%d条纪录",recordcouter);
for(int d=0;d<20000000;d++);
UpdateData(false);
pDoc->m_dataList.GetNext(pDoc->curpos);
if(pDoc->curpos==NULL)
{
m_staticstart.SetWindowText("查询");
break;//没有查到
}
}
if(find==true)
{
m_staticstart.SetWindowText("查询");	
m_dlg=new Cdoubledlg(this);
m_dlg->dlgtype=2;
m_dlg->pDoc=pDoc;
for(int i=0;i<findcursor+1;i++)
m_dlg->p[i]=p[i];
m_dlg->findcouter=findcursor+1;
m_dlg->open=true;
m_dlg->Create(IDD_doubleview,this);
m_dlg->ShowWindow(SW_SHOW);
	find=false;
}		
break;
default:break;
}

}

void Cfinddlg::testdata()
{
if(m_data.Find('a')==0||m_data.Find('b')==0||m_data.Find('c')==0
  ||m_data.Find('d')==0||m_data.Find('e')==0||m_data.Find('f')==0||m_data.Find('g')==0
  ||m_data.Find('h')==0||m_data.Find('i')==0||m_data.Find('i')==0||m_data.Find('k')==0
  ||m_data.Find('l')==0||m_data.Find('m')==0||m_data.Find('n')==0||m_data.Find('o')==0
  ||m_data.Find('p')==0||m_data.Find('q')==0||m_data.Find('r')==0||m_data.Find('s')==0
  ||m_data.Find('t')==0||m_data.Find('u')==0||m_data.Find('v')==0||m_data.Find('w')==0
  ||m_data.Find('x')==0||m_data.Find('y')==0||m_data.Find('z')==0)
MessageBox("请输入整数");
  m_editdata.SetFocus();

}

⌨️ 快捷键说明

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