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

📄 search.cpp

📁 数据结构大作业
💻 CPP
字号:
// search.cpp : implementation file
//

#include "stdafx.h"
#include "salsary.h"
#include "search.h"

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

/////////////////////////////////////////////////////////////////////////////
// search dialog


search::search(CWnd* pParent /*=NULL*/)
	: CDialog(search::IDD, pParent)
{
	//{{AFX_DATA_INIT(search)
	m_radioButton = -1;
	m_age = _T("");
	m_name = _T("");
	m_salary = _T("");
	m_user = _T("");
	m_most = _T("");
	m_least = _T("");
	//}}AFX_DATA_INIT
}


void search::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(search)
	DDX_Control(pDX, IDC_LIST1, m_list);
	DDX_Radio(pDX, IDC_RADIO1, m_radioButton);
	DDX_Text(pDX, IDC_age, m_age);
	DDV_MaxChars(pDX, m_age, 10);
	DDX_Text(pDX, IDC_name, m_name);
	DDV_MaxChars(pDX, m_name, 10);
	DDX_Text(pDX, IDC_salary, m_salary);
	DDV_MaxChars(pDX, m_salary, 10);
	DDX_Text(pDX, IDC_user, m_user);
	DDV_MaxChars(pDX, m_user, 10);
	DDX_Text(pDX, IDC_most, m_most);
	DDV_MaxChars(pDX, m_most, 10);
	DDX_Text(pDX, IDC_least, m_least);
	DDV_MaxChars(pDX, m_least, 10);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(search, CDialog)
	//{{AFX_MSG_MAP(search)
	ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
	ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
	ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
	ON_CBN_EDITCHANGE(IDC_COMBO2, OnEditchangeCombo2)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// search message handlers

void search::OnButton2() 
{
EndDialog(1);	// TODO: Add your control notification handler code here
	
}
#include"wh.h"
void search::OnButton1() 
{
UpdateData();
//连接文件
fstream iof("C:\\user.dat",ios::binary|ios::in|ios::out);
if(!iof)
{cerr<<"文件不能打开"<<endl;
return ;
}
iof.seekp(0,ios::end);
long posEnd=iof.tellp();//记录末尾指针的位置	
iof.seekp(0,ios::beg);
user_data data;
CString c_user,c_name,c_age,c_salary;
node*head,*ps,*pEnd;
head=NULL;
ps=new node;
pEnd=ps;
do{iof.read((char*)&data,sizeof(user_data));
{strcpy(ps->name,data.name);strcpy(ps->user,data.user);strcpy(ps->key,data.key);
ps->age=data.age;ps->salary=data.salary;}//将数据赋给链表
if(head==NULL)
head=ps;
else {pEnd->next=ps;}
pEnd=ps;
ps=new node;
}while(iof.tellp()!=posEnd);
pEnd->next=NULL;
delete ps;
iof.close();
switch(m_radioButton)
{case(0):{m_list.DeleteAllItems();
//删除相同的项
if(((CButton*)GetDlgItem(IDC_check_user))->GetCheck())
{int i=0;
int j=0;
int k=0;//记录链表中符合条件节点的个数 
for(node*p=head;p!=NULL;p=p->next)
{c_user=p->user;
if(c_user.Compare(m_user)){i++;}
k++;}
if(i==k){MessageBox("不存在该记录!");return;}
while(j!=i)
{c_user=head->user;
if(c_user.Compare(m_user)){ps=head;head=head->next;delete ps;j++;continue;}
for(node*pg=head;pg->next;pg=pg->next)
{c_user=pg->next->user;
if(c_user.Compare(m_user))
{ps=pg->next;
pg->next=ps->next;
delete ps;
j++;
break;
}}}}//第一个复选框
if(((CButton*)GetDlgItem(IDC_check_name))->GetCheck())
{int i=0;
int j=0;
int k=0;//记录链表中符合条件节点的个数 
for(node*p=head;p!=NULL;p=p->next)
{c_name=p->name;
if(c_name.Compare(m_name)){i++;}
k++;}
if(i==k){MessageBox("不存在该记录!");return;}
while(j!=i)
{c_name=head->name;
if(c_name.Compare(m_name)){ps=head;head=head->next;delete ps;j++;continue;}
for(node*pg=head;pg->next;pg=pg->next)
{c_name=pg->next->name;
if(c_name.Compare(m_name))
{ps=pg->next;
pg->next=ps->next;
delete ps;
j++;
break;
}}}}//第二个复选框
if(((CButton*)GetDlgItem(IDC_check_age))->GetCheck())
{int i=0;
int j=0;
int k=0;//记录链表中符合条件节点的个数 
for(node*p=head;p!=NULL;p=p->next)
{c_age.Format("%d",p->age);
if(c_age.Compare(m_age)){i++;}
k++;}
if(i==k){MessageBox("不存在该记录!");return;}
while(j!=i)
{c_age.Format("%d",head->age);
if(c_age.Compare(m_age)){ps=head;head=head->next;delete ps;j++;continue;}
for(node*pg=head;pg->next;pg=pg->next)
{c_age=pg->next->age;
if(c_age.Compare(m_age))
{ps=pg->next;
pg->next=ps->next;
delete ps;
j++;
break;
}}}}//第三个复选框
if(((CButton*)GetDlgItem(IDC_check_salary))->GetCheck())
{int i=0;
int j=0;
int k=0;//记录链表中符合条件节点的个数 
for(node*p=head;p!=NULL;p=p->next)
{c_salary.Format("%d",p->salary);
if(c_salary.Compare(m_salary)){i++;}
k++;}
if(i==k){MessageBox("不存在该记录!");return;}
while(j!=i)
{c_salary.Format("%d",head->salary);
if(c_salary.Compare(m_salary)){ps=head;head=head->next;delete ps;j++;continue;}
for(node*pg=head;pg->next;pg=pg->next)
{c_salary=pg->next->salary;
if(c_salary.Compare(m_salary))
{ps=pg->next;
pg->next=ps->next;
delete ps;
j++;
break;
}}}}//第四个复选框
int i=0;
for(node*p=head;p!=NULL;p=p->next)
{c_user=p->user;c_name=p->name;c_age.Format("%d",p->age);
c_salary.Format("%d",p->salary);
{m_list.InsertItem(i,c_user,1);
m_list.SetItemText(i,1,c_name);
m_list.SetItemText(i,2,c_age);
m_list.SetItemText(i,3,c_salary);
}
if(i==0)
i++;
}
break;}
case(1):{m_list.DeleteAllItems();
int index;
int i_least,i_most;
int i=0;
index=((CComboBox*)GetDlgItem(IDC_COMBO2))->GetCurSel();
((CComboBox*)GetDlgItem(IDC_COMBO2))->GetLBText(index,m_choose);		
switch(index)	
{case(0):
{i_least=atoi(m_least);
i_most=atoi(m_most);
for(node*p=head;p!=NULL;p=p->next)
{if(((p->salary)>=i_least)&&((p->salary)<=i_most))
{c_user=p->user;c_name=p->name;c_age.Format("%d",p->age);
c_salary.Format("%d",p->salary);
{m_list.InsertItem(i,c_user,1);
m_list.SetItemText(i,1,c_name);
m_list.SetItemText(i,2,c_age);
m_list.SetItemText(i,3,c_salary);}
if(i==0)
i++;}}
break;}
case(1):
{i_least=atoi(m_least);
i_most=atoi(m_most);
for(node*p=head;p!=NULL;p=p->next)
{if(((p->age)>=i_least)&&((p->age)<=i_most))
{c_user=p->user;c_name=p->name;c_age.Format("%d",p->age);
c_salary.Format("%d",p->salary);
{m_list.InsertItem(i,c_user,1);
m_list.SetItemText(i,1,c_name);
m_list.SetItemText(i,2,c_age);
m_list.SetItemText(i,3,c_salary);}
if(i==0)
i++;}}
break;}
}			
}	//case(1)
}}
	// TODO: Add your control notification handler code here	


void search::OnRadio1() 
{
m_radioButton=0;	// TODO: Add your control notification handler code here
	
}

void search::OnRadio2() 
{
m_radioButton=1;	// TODO: Add your control notification handler code here
	
}

void search::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	
	*pResult = 0;
}

BOOL search::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
    m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|
	LVS_EX_ONECLICKACTIVATE|LVS_EX_FLATSB);
	m_list.InsertColumn(0,"用户名",LVCFMT_LEFT,65);
    m_list.InsertColumn(1,"姓名",LVCFMT_LEFT,55);
    m_list.InsertColumn(2,"年龄",LVCFMT_LEFT,55);
    m_list.InsertColumn(3,"工资",LVCFMT_LEFT,55);	// TODO: Add extra initialization here
	((CComboBox*)GetDlgItem(IDC_COMBO2))->AddString("年龄");
	((CComboBox*)GetDlgItem(IDC_COMBO2))->AddString("工资");
	((CComboBox*)GetDlgItem(IDC_COMBO2))->SetCurSel(0);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void search::OnEditchangeCombo2() 
{
	// TODO: Add your control notification handler code here
	
}

⌨️ 快捷键说明

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