C + + curriculum design -- personal resume management system (MFC)

Lesson title

Resume management system

Class setting requirements

  1. User management;
  2. Design personal resume information to realize information input, modification and deletion;
  3. Search resume by ID card number
  4. Statistics and display personnel information by gender
  5. Statistics and display personnel information by specialty
  6. Save statistics to a file
  7. Resume information import and export

Program operation interface



Core code

// pay.cpp : implementation file
//

#include "stdafx.h"
#include "resume management system. h"
#include "pay.h"
#include"Cai.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// pay dialog
BOOL pay::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_pay.InsertColumn(0,"Full name",LVCFMT_CENTER,100);
	m_pay.InsertColumn(1,"Gender",LVCFMT_CENTER,100);
	m_pay.InsertColumn(2,"ID number",LVCFMT_CENTER,100);
	m_pay.InsertColumn(3,"major",LVCFMT_CENTER,100);
   	m_pay.InsertColumn(4,"Personal profile",LVCFMT_CENTER,165);
	m_pay.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

 
	ShowCai();

	m_sex.SetCurSel(0);
    m_major.SetCurSel(0);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
void pay::ShowCai()
{
	m_pay.DeleteAllItems();
	int num=ReadCai();
	for(int i=0;i<num;i++)
	{
	
		m_pay.InsertItem(i,0);
		m_pay.SetItemText(i,0,cai[i].name);
		m_pay.SetItemText(i,1,cai[i].sex);
		m_pay.SetItemText(i,2,cai[i].id);
		m_pay.SetItemText(i,3,cai[i].major);
		m_pay.SetItemText(i,4,cai[i].about);
	  }

}
int pay::ReadCai()
{
	FILE *file=fopen("resume.txt","r");
	int a=0;
	while(!feof(file))
	{
		fscanf(file,"%s%s%s%s%s",&cai[a].name,&cai[a].sex,&cai[a].id,&cai[a].major,&cai[a].about);
		a++;
	}
	fclose(file);
	a--;
	return a;
}

pay::pay(CWnd* pParent /*=NULL*/)
	: CDialog(pay::IDD, pParent)
{
	//{{AFX_DATA_INIT(pay)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void pay::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(pay)
	DDX_Control(pDX, IDC_COMBO2, m_major);
	DDX_Control(pDX, IDC_COMBO1, m_sex);
	DDX_Control(pDX, IDC_LIST1, m_pay);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(pay, CDialog)
	//{{AFX_MSG_MAP(pay)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
	ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
	ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
	ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
	ON_BN_CLICKED(IDC_BUTTON7, OnButton7)
	ON_BN_CLICKED(IDC_BUTTON8, OnButton8)
	ON_BN_CLICKED(IDC_BUTTON9, OnButton9)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// pay message handlers

void pay::OnButton1() 
{
	int sel = m_pay.GetSelectionMark();
	if(sel ==-1)
	{
		MessageBox("Please select resume to delete");
	}

	CString id=	m_pay.GetItemText(sel,0);
	int num=ReadCai();
	FILE *file=fopen("resume.txt","w+");

	for(int i=0;i<num;i++)
	{
		if(i==sel)  
			continue;
		fprintf(file,"%s   %s   %s   %s   %s\r\n",cai[i].name,cai[i].sex\
			,cai[i].id,cai[i].major,cai[i].about);
	}
	fclose(file);
	MessageBox("Delete successful","Tips");
	ShowCai();	
}

void pay::OnButton2() 
{
	// TODO: Add your control notification handler code here
	int sel = m_pay.GetSelectionMark();
	
	CString sex,id,major,about;
	GetDlgItem(IDC_COMBO1)->GetWindowText(sex);
	GetDlgItem(IDC_EDIT1)->GetWindowText(id);
	GetDlgItem(IDC_COMBO2)->GetWindowText(major);
	GetDlgItem(IDC_EDIT3)->GetWindowText(about);

	if(sel ==-1)
	{
		MessageBox("Please select the resume to be modified");
	}
	else
	{
	
	
	if(sex==""||id==""||major==""||about=="")
	{
		MessageBox("Incomplete modification information! Please fill in all the information!");
	}
	else
	{
	CString name=m_pay.GetItemText(sel,0);
		int num=ReadCai();
	FILE *file=fopen("resume.txt","w");	
	for(int i=0;i<num;i++)
	{
		if(sel==i)
		{
			strcpy(cai[i].name,name);
			strcpy(cai[i].sex,sex);
			strcpy(cai[i].id,id);
            strcpy(cai[i].major,major);
			strcpy(cai[i].about,about);

		}
		fprintf(file,"%s   %s   %s   %s   %s\r\n",cai[i].name,cai[i].sex\
			,cai[i].id,cai[i].major,cai[i].about);
	}
	fclose(file);

	MessageBox("Modified success");
	ShowCai();
	}
	
	}
}

void pay::OnButton3() 
{
	// TODO: Add your control notification handler code here
		m_pay.DeleteAllItems();
	CString id;
	GetDlgItem(IDC_EDIT1)->GetWindowText(id);
	if(id=="")
	{
		ShowCai();
	}
	else
	{
		int i = 0;
		for(int a=0;a<ReadCai();a++)
		{
			if(strcmp(id,cai[a].id)==0)
			{
				m_pay.InsertItem(i,0);
				m_pay.SetItemText(i,0,cai[a].name);
				m_pay.SetItemText(i,1,cai[a].sex);
				m_pay.SetItemText(i,2,cai[a].id);
				m_pay.SetItemText(i,3,cai[a].major);
				m_pay.SetItemText(i,4,cai[a].about);
				i++;
			}
		}
	}
}

void pay::OnButton5() 
{
	// TODO: Add your control notification handler code here
		m_pay.DeleteAllItems();
	CString major;
	GetDlgItem(IDC_COMBO2)->GetWindowText(major);
	if(major=="")
	{
		ShowCai();
	}
	else
	{
		int i = 0;
		for(int a=0;a<ReadCai();a++)
		{
			if(strcmp(major,cai[a].major)==0)
			{
				m_pay.InsertItem(i,0);
				m_pay.SetItemText(i,0,cai[a].name);
				m_pay.SetItemText(i,1,cai[a].sex);
				m_pay.SetItemText(i,2,cai[a].id);
				m_pay.SetItemText(i,3,cai[a].major);
				m_pay.SetItemText(i,4,cai[a].about);
				i++;
			}
		}
	}
}

void pay::OnButton6() 
{
	// TODO: Add your control notification handler code here
			m_pay.DeleteAllItems();
	CString sex;
	GetDlgItem(IDC_COMBO1)->GetWindowText(sex);
	if(sex=="")
	{
		ShowCai();
	}
	else
	{
		int i = 0;
		for(int a=0;a<ReadCai();a++)
		{
			if(strcmp(sex,cai[a].sex)==0)
			{
				m_pay.InsertItem(i,0);
				m_pay.SetItemText(i,0,cai[a].name);
				m_pay.SetItemText(i,1,cai[a].sex);
				m_pay.SetItemText(i,2,cai[a].id);
				m_pay.SetItemText(i,3,cai[a].major);
				m_pay.SetItemText(i,4,cai[a].about);
				i++;
			}
		}
	}
}

void pay::OnButton7() 
{
	// TODO: Add your control notification handler code here
	
    // Get the number of records that currently meet the conditions
	int nums=m_pay.GetItemCount();
	CString name,sex,id,major,about;
	FILE *file=fopen("major.txt","a+");
	for(int i=0;i<nums;i++)
	{
	
fprintf(file,"%s   %s   %s   %s   %s\r\n",m_pay.GetItemText(i,0),m_pay.GetItemText(i,1),m_pay.GetItemText(i,2),m_pay.GetItemText(i,3),m_pay.GetItemText(i,4));
	}
	
	fclose(file);	
		MessageBox("Saved successfully!");

//	CString x;
//	x.Format("%d",nums);
//	MessageBox(x);

//(CListCTrl *)GetDlgItem(IDC_LIST1)->GetItemCount(nums);
}

void pay::OnButton8() 
{
	// TODO: Add your control notification handler code here
		int nums=m_pay.GetItemCount();
	CString name,sex,id,major,about;
	FILE *file=fopen("sex.txt","a+");
	for(int i=0;i<nums;i++)
	{
	
fprintf(file,"%s   %s   %s   %s   %s\r\n",m_pay.GetItemText(i,0),m_pay.GetItemText(i,1),m_pay.GetItemText(i,2),m_pay.GetItemText(i,3),m_pay.GetItemText(i,4));
	}
	
	fclose(file);	
		MessageBox("Saved successfully!");
}

void pay::OnButton9() 
{
	// TODO: Add your control notification handler code here
		MessageBox("Saved successfully!");
}

155 original articles published, praised 103, visited 50000+
Private letter follow

Added by markbett on Sat, 08 Feb 2020 18:56:55 +0200