📄 stuframe.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 + -