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

📄 delatedlg.cpp

📁 一个人事档案的数据库
💻 CPP
字号:
// DelateDlg.cpp : implementation file
//

#include "stdafx.h"
#include "dangan.h"
#include "DelateDlg.h"
#include "FindallDlg.h"
#include "hlinklist.h"
#include "fstream.h"
#include "DelOrNotDlg.h"
#include "AllDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDelateDlg dialog


CDelateDlg::CDelateDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CDelateDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDelateDlg)
	m_del_chose = -1;
	//}}AFX_DATA_INIT
}


void CDelateDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDelateDlg)
	DDX_Control(pDX, IDC_EDIT_DEL, m_edit_chose);
	DDX_Control(pDX, IDC_STATIC_DEL, m_sta_del);
	DDX_Control(pDX, IDC_BUTTON_DEL, m_bdel);
	DDX_Control(pDX, IDC_BRESALT_DEL, m_buresalt_del);
	DDX_Radio(pDX, IDC_DEL_NUM, m_del_chose);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDelateDlg, CDialog)
	//{{AFX_MSG_MAP(CDelateDlg)
	ON_BN_CLICKED(IDC_BRESALT_DEL, OnBresaltDel)
	ON_BN_CLICKED(IDC_DEL_NUM, OnDelNum)
	ON_BN_CLICKED(IDC_DEL_NAME, OnDelName)
	ON_EN_CHANGE(IDC_EDIT_DEL, OnChangeEditDel)
	ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDelateDlg message handlers
CString DelString;
LinkList DList;
int num;

void MCHANGETOCHAR(CString mchar[10],int num){
	int i=0;
	mchar[i]+=num%10+'0';
	while(num/=10){
		mchar[i]+=num%10+'0';
	}
	mchar[i].MakeReverse();
	mchar[i]+='\0';
}

void CDelateDlg::OnBresaltDel() 
{
	CDialog::OnOK();
	CFindallDlg dlg;
	dlg.DoModal();
}

void CDelateDlg::OnDelNum() 
{
	m_del_chose=0;
	m_sta_del.SetWindowText("请输入其编号:");
	UpdateData(FALSE);
}

void CDelateDlg::OnDelName() 
{
	m_del_chose=1;
	m_sta_del.SetWindowText("请输入其姓名:");
	UpdateData(FALSE);
}

void CDelateDlg::OnChangeEditDel() 
{
	m_edit_chose.GetWindowText(DelString);
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	
}
bool DelwithNum(LinkList list){//将删除后,删除点后面的接点的编号减1
	LinkList p=new LNode;
	p=list;
	while(p->next){
		p->data.num--;
		p=p->next;
	}
	p->data.num--;
	return 1;
}
bool WriteList(int n){//将链表写入文件中
	ofstream out("persondatalist.txt");
	if(!out){
		AfxMessageBox("can not write into the file");
		return 0;
	}
//	ResaltOfFind(list);
	LinkList q=new LNode;
	q=DList;
	out<<n<<endl;
	while(q->next){
		out<<q->data.num<<"  "<<q->data.name<<"  "<<q->data.sex<<"  "<<q->data.year<<"  "<<q->data.month<<"  "<<q->data.birthplace<<"  "<<q->data.nation<<"  "<<q->data.duty<<"  "<<q->data.level<<"  "<<q->data.party<<"  "<<q->data.company<<"  "<<q->data.pay<<endl;
		q=q->next;
		if(q->next==NULL){
			out<<q->data.num<<"  "<<q->data.name<<"  "<<q->data.sex<<"  "<<q->data.year<<"  "<<q->data.month<<"  "<<q->data.birthplace<<"  "<<q->data.nation<<"  "<<q->data.duty<<"  "<<q->data.level<<"  "<<q->data.party<<"  "<<q->data.company<<"  "<<q->data.pay<<endl;
		}
	}
	out.close();
	return 1;
}
void CDelateDlg::OnButtonDel() 
{
	int ii;
	CDelOrNotDlg dlg;
	dlg.DoModal();
	ii=dlg.Mflag;
//	int not;
//	not=AfxMessageBox("确定要删除么?",MB_YESNO|MB_ICONQUESTION ,0);
	if(ii){
		CDelateDlg::DELATE();
		MessageBox("删除成功!");
	}
	else
		MessageBox("删除被取消!");
	UpdateData(FALSE);	
}

BOOL CDelateDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	//*********************input list(linklist list)*********
	ifstream in("persondatalist.txt");
	if(!in){
		AfxMessageBox("can not open file");
		return 0;
	}
	int i=1;
	LinkList p;
	DList=new LNode;
	p=DList;
	in>>num;
	CString STR[50];
	int j=0;
	while(i<=num&&in){
		in>>p->data.num>>p->data.name>>p->data.sex>>p->data.year>>p->data.month>>p->data.birthplace>>p->data.nation>>p->data.duty>>p->data.level>>p->data.party>>p->data.company>>p->data.pay;
//		cout<<p->data.num<<"  "<<p->data.name<<"  "<<p->data.sex<<"  "<<p->data.year<<"  "<<p->data.month<<"  "<<p->data.birthplace<<"  "<<p->data.nation<<"  "<<p->data.duty<<"  "<<p->data.party<<"  "<<p->data.company<<"  "<<p->data.party<<"  "<<p->data.pay<<endl;
//		m_list.AddString(CHANGETOSTRING(p,STR));			
		if(i++<num){
			p->next=new LNode;
			p=p->next;
		}
	}
	p->next=NULL;
	in.close();	
	//*********************input list(linklist list)*********
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
extern int Mflag;
bool CDelateDlg::DELATE()
{
//	if(IsDlgButtonChecked(IDC_YESTODEL)){
	if(m_del_chose==0){
		int flag=0;
		LinkList p;
		p=new LNode;
		p=DList;
		LinkList q=new LNode;
		while(p->next->next){
			int mmnum;
			CString mnum[20];
			mmnum=p->next->data.num;
			int i=0;
			MCHANGETOCHAR(mnum,mmnum);
			if(mnum[i]==DelString){
				q=p->next;
				p->next=q->next;
//				MessageBox(DelString);
				DelwithNum(p->next);				
				WriteList(--num);
				flag=1;
				return 1;
			}
			p=p->next;
		}
		int mmnum;
		CString mnum[20];
		int i=0;
		mmnum=p->next->data.num;
		MCHANGETOCHAR(mnum,mmnum);
		if(mnum[i]==DelString){
			p->next=NULL;
			WriteList(--num);//将删除结点后的链表写入文件
			flag=1;
			return 1;
//			MessageBox(DelString);
		}
		AfxMessageBox("没有所要删除的人");
	}
	else if(m_del_chose==1){
		LinkList p;
		p=new LNode;
		p=DList;
		LinkList q=new LNode;
		while(p->next->next){
			if(p->next->data.name==DelString){
				MessageBox(p->next->data.name);				
				q=p->next;
				p->next=q->next;
				DelwithNum(p->next);
				WriteList(--num);
				return 1;
			}
			p=p->next;
		}
		if(p->next->data.name==DelString){
			p->next=NULL;
			WriteList(--num);//将删除结点后的链表写入文件
			return 1;
		}
		AfxMessageBox("没有所要删除的人");
	}
	else 
		AfxMessageBox("请先选择删除方式!");
//	}
	return 0;
}

void CDelateDlg::OnCancel() 
{
	CDialog::OnCancel();
	CAllDlg dlg;
	dlg.DoModal();
}

⌨️ 快捷键说明

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