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

📄 stuframe.cpp

📁 vc编写的简单的学生成绩管理系统
💻 CPP
字号:
#include "StuApp.h"
#include "StuFrame.h"
#include "MenuID.H"


/////////////////////////////////////////////////
//CStuFrame::CStuFrame
CStuFrame::CStuFrame()
{
	m_pInputDlg = NULL;
	m_pFindDlg = NULL;
	m_pUpdateDlg = NULL;
    
	Create(NULL,_T("学生信息管理系统"));
}

/////////////////////////////////////////////////
//CStuFrame::~CStuFrame
CStuFrame::~CStuFrame()
{

}

//////////////////////////////////////////////////
//message map and member functions
BEGIN_MESSAGE_MAP(CStuFrame,CFrameWnd)
    ON_WM_CREATE()
	ON_WM_SIZE()
	ON_COMMAND(ID_FILE_EXIT,OnExitClick)
	ON_COMMAND(ID_INFO_INPUT,OnInputClick)
	ON_COMMAND(ID_INFO_FIND,OnFindClick)
	ON_COMMAND(ID_INFO_UPDATE,OnUpdateClick)
	ON_COMMAND(ID_INFO_DELETE,OnDelete)
END_MESSAGE_MAP()

//////////////////////////////////////////////////
//CStuFrame::OnCreate
int CStuFrame::OnCreate(LPCREATESTRUCT lps)
{
	if (CFrameWnd::OnCreate(lps) == -1)
		return -1;

	m_wndList.Create(WS_CHILD | WS_VISIBLE | LBS_USETABSTOPS |
		 LBS_SORT | LBS_NOTIFY | LBS_NOINTEGRALHEIGHT,CRect(0,0,0,0),this,ID_LIST);

	m_font.CreatePointFont(100,"宋体");
	m_wndList.SetFont(&m_font);

    CreateMenu();           //create menu control
	m_studb.Initialize();   //c:\studatabase.dat
	LoadFile();             //Loading the date to LISTBOX Control

	return 0;
}

//////////////////////////////////////////////////
//CStuFrame::CreateMenu
void CStuFrame::CreateMenu()
{
	ASSERT( m_MainMenu.CreateMenu() );
	ASSERT( m_PopupMenu.CreatePopupMenu() );

	m_PopupMenu.AppendMenu(MF_STRING,ID_FILE_EXIT,"退出(&Q)");
	m_MainMenu.AppendMenu(MF_POPUP,(UINT)m_PopupMenu.Detach(),"文件(&F)");

	ASSERT( m_PopupMenu.CreatePopupMenu() );
	m_PopupMenu.AppendMenu(MF_STRING,ID_INFO_INPUT,"信息录入(&I)");
	m_PopupMenu.AppendMenu(MF_STRING,ID_INFO_FIND,"信息查找(&F)");
	m_PopupMenu.AppendMenu(MF_STRING,ID_INFO_UPDATE,"信息修改(&M)");
	m_PopupMenu.AppendMenu(MF_STRING,ID_INFO_DELETE,"信息删除(&D)");
	m_MainMenu.AppendMenu(MF_POPUP,(UINT)m_PopupMenu.Detach(),"信息管理(&M)");

	ASSERT( m_PopupMenu.CreatePopupMenu() );
	m_PopupMenu.AppendMenu(MF_STRING,ID_HELP_ABOUT,"关于(&A)...");
	m_MainMenu.AppendMenu(MF_POPUP,(UINT)m_PopupMenu.Detach(),"帮助(&H)");

	SetMenu(&m_MainMenu);

}

/////////////////////////////////////////////////////////
//CStuFrame::OnInputClick
void CStuFrame::OnInputClick()
{
    if ( m_pInputDlg)
	{
		delete m_pInputDlg;
		m_pInputDlg = NULL;
	}

	m_pInputDlg = new CInputDlg(this);
	m_pInputDlg->ShowWindow(SW_SHOW);
	m_pInputDlg->UpdateWindow();
}

/////////////////////////////////////////////////////////
//CStuFrame::AddStrToList
void CStuFrame::AddStrToList(CStudent* pStu)
{
	ASSERT (pStu);

	CString str;
	str.Format("%s\t%d\t%s\t%s\t%s\t%0.2f\t%0.2f\t%0.2f",
		pStu->GetStudentName(),
		pStu->GetStudentID(),
		pStu->GetStudentSex(),
		pStu->GetStudentPhone(),
		pStu->GetStudentAddress(),
		pStu->GetStudentGradeChinese(),
		pStu->GetStudentGradeEnglish(),
		pStu->GetStudentGradeMath()
		);

	m_wndList.AddString(str);
}

/////////////////////////////////////////////////////////
// CStuFrame::AddStrToList
void CStuFrame::OnSize(UINT nType,int cx,int cy)
{
	CFrameWnd::OnSize(nType,cx,cy);

	m_wndList.MoveWindow(0,0,cx,cy,false);
}

void CStuFrame::OnExitClick()
{
	DestroyWindow();
}

CStudent* CStuFrame::GetStuObj()
{
	return (&m_stu);
}

CStuDataBase* CStuFrame::GetStudbObj()
{
	return (&m_studb);
}

CListBox* CStuFrame::GetListControl()
{
	return (&m_wndList);
}

int CStuFrame::GetListSelID()
{
	int iIndex = m_wndList.GetCurSel();
	CString strSel;
    m_wndList.GetText(iIndex,strSel);
	int iCount = 0;
	for (int i = 0; i < strSel.GetLength(); i++)
	{
		if (strSel.GetAt(i) == '\t')
		{
			iCount = i + 1;
			break;
		}
	}

    char temp[5] = {'\0'};
	int j = 0;
	for (; iCount < strSel.GetLength(),j < 5; iCount++,j++)
	{
		if (strSel.GetAt(iCount) < '0' || strSel.GetAt(iCount) > '9')
			break;
		else
			temp[j] = strSel.GetAt(iCount);
	}
    
	//
	//string to integer
	//
	temp[j] = '\0';
	return (atoi(temp));
	
}

void CStuFrame::LoadFile()
{
	m_wndList.ResetContent();

	CStudent* pstu = NULL;
	for (int i = 0; i < m_studb.GetRecordCount(); i++)
	{
		pstu = m_studb.GetRecord(i);
		ASSERT(pstu);
		AddStrToList(pstu);
	}
}

void CStuFrame::OnFindClick()
{
	if (m_pFindDlg)
	{
		delete m_pFindDlg;
		m_pFindDlg = NULL;
	}

	m_pFindDlg = new CFindDlg(this);
	m_pFindDlg->ShowWindow(SW_SHOW);
	m_pFindDlg->UpdateWindow();

}

void CStuFrame::OnUpdateClick()
{
	if (m_pUpdateDlg)
	{
		delete m_pUpdateDlg;
		m_pUpdateDlg = NULL;
	}
    
	int iIndex = m_wndList.GetCurSel();
	if (iIndex == -1) //没有选择LISTBOX控件的数据
	{
		AfxMessageBox("请选择要修改的记录!");
	    return;
	}
	m_pUpdateDlg = new CUpdateDlg(this);
	m_pUpdateDlg->ShowWindow(SW_SHOW);
	m_pUpdateDlg->UpdateWindow();

}

//////////////////////////////////////////////////////////
//CStuFrame::OnDelete
// 此方法暂时还不能删除最后一条记录\
// 始终都还会有一条记录删除不了
void CStuFrame::OnDelete()
{
	int iIndex = m_wndList.GetCurSel();
	if ( iIndex == -1  ) //没有选择LISTBOX控件的数据
	{
		AfxMessageBox("请选择要删除的记录!");
		return;
	}

	if (IDOK == MessageBox("确定要删除该记录吗!","提示",MB_OKCANCEL))
	{
		int iID = this->GetListSelID();
		if( this->GetStudbObj()->DeleteRecord(iID) )
		{
			LoadFile();
			AfxMessageBox("删除成功!");
		}
		else
			AfxMessageBox("删除失败!");
	}
	
}



⌨️ 快捷键说明

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