?? delatedlg.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 + -