📄 studentsview.cpp
字号:
// studentsView.cpp : CstudentsView 类的实现
//
#include "stdafx.h"
#include "students.h"
#include "studentsDoc.h"
#include "studentsView.h"
#include ".\studentsview.h"
#include "AddDialog.h"
#include "Search2Dialog.h"
#include "Search1Dialog.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CstudentsView
IMPLEMENT_DYNCREATE(CstudentsView, CView)
BEGIN_MESSAGE_MAP(CstudentsView, CView)
// 标准打印命令
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
ON_COMMAND(ID_OPTIONS_ADD, OnOptionsAdd)
ON_COMMAND(ID_OPTIONS_MODY, OnOptionsMody)
ON_COMMAND(ID_SERCH1, OnSerch1)
ON_UPDATE_COMMAND_UI(ID_SERCH1, OnUpdateSerch1)
ON_COMMAND(ID_SERCH2, OnSerch2)
ON_COMMAND(ID_OPTIONS_DEL, OnOptionsDel)
ON_COMMAND(ID_SHOW, OnShow)
ON_UPDATE_COMMAND_UI(ID_SHOW, OnUpdateShow)
ON_UPDATE_COMMAND_UI(ID_SERCH2, OnUpdateSerch2)
END_MESSAGE_MAP()
// CstudentsView 构造/析构
CstudentsView::CstudentsView()
{
// TODO: 在此处添加构造代码
}
CstudentsView::~CstudentsView()
{
}
BOOL CstudentsView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
// 样式
return CView::PreCreateWindow(cs);
}
// CstudentsView 绘制
void CstudentsView::OnDraw(CDC* pDC)
{
CstudentsDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
int index;
CString str;
index=pDoc->GetStuNumber();
str.Format("当前学生记录总数为:%d",index);
pDC->TextOut(10,10,str);
if ( index>0 )
{
if(pDoc->flag==1) //显示所有记录
{
for(int i=1;i<=index; i++)
{
pDC->TextOut(10,30,"学号");
pDC->TextOut(60,30,"姓名");
pDC->TextOut(120,30,"性别");
pDC->TextOut(180,30,"电话");
pDC->TextOut(220,30,"年龄");
pDC->TextOut(300,30,"地址");
str.Format("%s",pDoc->GetStu(i-1)->m_pNum);
pDC->TextOut(10,20*i+30,str);
str.Format("%s",pDoc->GetStu(i-1)->m_pName);
pDC->TextOut(60,20*i+30,str);
str.Format("%s",pDoc->GetStu(i-1)->m_pSex );
pDC->TextOut(120,20*i+30,str);
str.Format("%s",pDoc->GetStu(i-1)->m_pTel);
pDC->TextOut(180,20*i+30,str);
str.Format("%d",pDoc->GetStu(i-1)->m_pAge);
pDC->TextOut(220,20*i+30,str);
str.Format("%s",pDoc->GetStu(i-1)->m_pAdd);
pDC->TextOut(300,20*i+30,str);
//pDoc->flag=0;
//pDoc->SetModifiedFlag();
}
}
else
pDoc->GetStu(pDoc->Number)->Drawing(pDC); //显示一记录,添加查询时
}
}
// CstudentsView 打印
BOOL CstudentsView::OnPreparePrinting(CPrintInfo* pInfo)
{
// 默认准备
return DoPreparePrinting(pInfo);
}
void CstudentsView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 打印前添加额外的初始化
}
void CstudentsView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 打印后添加清除过程
}
// CstudentsView 诊断
#ifdef _DEBUG
void CstudentsView::AssertValid() const
{
CView::AssertValid();
}
void CstudentsView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CstudentsDoc* CstudentsView::GetDocument() const // 非调试版本是内联的
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CstudentsDoc)));
return (CstudentsDoc*)m_pDocument;
}
#endif //_DEBUG
// CstudentsView 消息处理程序
void CstudentsView::OnOptionsAdd() //添加操作
{
CAddDialog AddDialog;
CstudentsDoc* pDoc=GetDocument();
pDoc->flag=0;
AddDialog.m_pAge=pDoc->m_pAge;
AddDialog.m_pNum=pDoc->m_pNum;
AddDialog.m_pName=pDoc->m_pName;
AddDialog.m_pSex=pDoc->m_pSex;
AddDialog.m_pTel=pDoc->m_pTel;
AddDialog.m_pAdd=pDoc->m_pAdd;
if (AddDialog.DoModal()==IDOK)
{
CMenu *pmenu=AfxGetMainWnd()->GetMenu();
CMenu *pEditmenu=pmenu->GetSubMenu(4);
pEditmenu->EnableMenuItem(ID_OPTIONS_MODY,MF_ENABLED); //将“修改”菜单置为有效
pDoc->m_pAge=AddDialog.m_pAge ;
pDoc->m_pNum=AddDialog.m_pNum ;
pDoc->m_pName=AddDialog.m_pName;
pDoc->m_pSex=AddDialog.m_pSex;
pDoc->m_pAdd=AddDialog.m_pAdd;
pDoc->m_pTel=AddDialog.m_pTel;
pDoc->AddStu(pDoc->m_pNum,pDoc->m_pAge,pDoc->m_pName,pDoc->m_pSex,pDoc->m_pAdd,pDoc->m_pTel); //将新增内容添加到学生类中
pDoc->SetModifiedFlag();
pDoc->Number=(int)pDoc->m_ObArray.GetUpperBound();
Invalidate();
}
}
void CstudentsView::OnOptionsMody() //修改
{
CAddDialog ModyDialog;
CstudentsDoc* pDoc=GetDocument();
int index;
index=(int)pDoc->m_ObArray.GetUpperBound();
if(index>=0)
{
ModyDialog.m_pAge=pDoc->m_pAge;
ModyDialog.m_pNum=pDoc->m_pNum;
ModyDialog.m_pName=pDoc->m_pName;
ModyDialog.m_pSex=pDoc->m_pSex;
ModyDialog.m_pTel=pDoc->m_pTel;
ModyDialog.m_pAdd=pDoc->m_pAdd;
if (ModyDialog.DoModal()==IDOK)
{
pDoc->m_pAge=ModyDialog.m_pAge ;
pDoc->m_pNum=ModyDialog.m_pNum ;
pDoc->m_pName=ModyDialog.m_pName;
pDoc->m_pSex=ModyDialog.m_pSex;
pDoc->m_pAdd=ModyDialog.m_pAdd;
pDoc->m_pTel=ModyDialog.m_pTel;
pDoc->GetStu(pDoc->Number)->m_pAge=pDoc->m_pAge; //修改当前显示的记录
pDoc->GetStu(pDoc->Number)->m_pNum=pDoc->m_pNum;
pDoc->GetStu(pDoc->Number)->m_pName=pDoc->m_pName;
pDoc->GetStu(pDoc->Number)->m_pSex=pDoc->m_pSex;
pDoc->GetStu(pDoc->Number)->m_pTel=pDoc->m_pTel;
pDoc->GetStu(pDoc->Number)->m_pAdd=pDoc->m_pAdd;
pDoc->GetStu(pDoc->Number)->m_pAge=pDoc->m_pAge;
pDoc->SetModifiedFlag();
Invalidate();
}
}
else
AfxMessageBox("无记录不能修改!;(");
}
void CstudentsView::OnSerch1()
{
Search1Dialog S1Dialog;
CstudentsDoc* pDoc=GetDocument();
int index;
index=(int)pDoc->m_ObArray.GetUpperBound();
//CString Number;
if (index>=0)
{
if (S1Dialog.DoModal()==IDOK)
{
for(int i=0;i<=index;i++)
{
if(pDoc->GetStu(i)->m_pNum==S1Dialog.m_sNum)
{
pDoc->Number=i; //所找到的记录的位置;
break;
}
}
if (i<=index)
{
CMenu *pmenu=AfxGetMainWnd()->GetMenu();
CMenu *pEditmenu=pmenu->GetSubMenu(4);
pEditmenu->EnableMenuItem(ID_OPTIONS_MODY,MF_ENABLED); //若找到记录将“修改”菜单置为有效
pDoc->m_pNum=pDoc->GetStu(pDoc->Number)->m_pNum;
pDoc->m_pName=pDoc->GetStu(pDoc->Number)->m_pName;
pDoc->m_pAge=pDoc->GetStu(pDoc->Number)->m_pAge;
pDoc->m_pSex=pDoc->GetStu(pDoc->Number)->m_pSex;
pDoc->m_pTel=pDoc->GetStu(pDoc->Number)->m_pTel;
pDoc->m_pAdd=pDoc->GetStu(pDoc->Number)->m_pAdd;
pDoc->SetModifiedFlag();
pDoc->flag=0;
Invalidate();
}
else
AfxMessageBox("未找到相关记录!:(");
}
}
else
AfxMessageBox("没有记录可查!嘿嘿:)");
}
void CstudentsView::OnUpdateSerch1(CCmdUI *pCmdUI)
{
// TODO: 在此添加命令更新用户界面处理程序代码
}
void CstudentsView::OnSerch2()
{
// TODO: 在此添加命令处理程序代码
CSearch2Dialog S2Dialog;
CstudentsDoc* pDoc=GetDocument();
int index;
index=(int)pDoc->m_ObArray.GetUpperBound();
if (index>=0)
{
if (S2Dialog.DoModal()==IDOK)
{
for(int i=0;i<=index;i++)
{
if(pDoc->GetStu(i)->m_pName==S2Dialog.m_sName)
{
pDoc->Number=i;
break;
}
}
if (i<=index)
{
CMenu *pmenu=AfxGetMainWnd()->GetMenu();
CMenu *pEditmenu=pmenu->GetSubMenu(4);
pEditmenu->EnableMenuItem(ID_OPTIONS_MODY,MF_ENABLED); //若找到记录将“修改”菜单置为有效
pDoc->m_pNum=pDoc->GetStu(pDoc->Number)->m_pNum;
pDoc->m_pName=pDoc->GetStu(pDoc->Number)->m_pName;
pDoc->m_pAge=pDoc->GetStu(pDoc->Number)->m_pAge;
pDoc->m_pSex=pDoc->GetStu(pDoc->Number)->m_pSex;
pDoc->m_pTel=pDoc->GetStu(pDoc->Number)->m_pTel;
pDoc->m_pAdd=pDoc->GetStu(pDoc->Number)->m_pAdd;
pDoc->SetModifiedFlag();
pDoc->flag=0;
Invalidate();
}
else
AfxMessageBox("未找到相关记录!:(");
}
}
else
AfxMessageBox("没有记录可查!:(");
}
void CstudentsView::OnOptionsDel() //删除操作
{
// TODO: 在此添加命令处理程序代码
CstudentsDoc *pDoc=GetDocument();
int index;
index=(int)pDoc->m_ObArray.GetUpperBound();
if(index>=0)
{
CObject *pa;
if( ( pa=pDoc->m_ObArray.GetAt(pDoc->Number))!= NULL )
pDoc->m_ObArray.RemoveAt(pDoc->Number);
delete pa;
pDoc->Number=pDoc->Number+1; //当前记录为所删记录的下一条
if (pDoc->Number<=pDoc->m_ObArray.GetUpperBound())
{
pDoc->m_pNum=pDoc->GetStu(pDoc->Number)->m_pNum;
pDoc->m_pName=pDoc->GetStu(pDoc->Number)->m_pName;
pDoc->m_pAge=pDoc->GetStu(pDoc->Number)->m_pAge;
pDoc->m_pSex=pDoc->GetStu(pDoc->Number)->m_pSex;
pDoc->m_pTel=pDoc->GetStu(pDoc->Number)->m_pTel;
pDoc->m_pAdd=pDoc->GetStu(pDoc->Number)->m_pAdd;
pDoc->SetModifiedFlag();
}
else
{
pDoc->Number=(int)pDoc->m_ObArray.GetUpperBound();//Number小于0时,置为最后一条记录
// pDoc->m_pNum="";
// pDoc->m_pName="";
// pDoc->m_pAge=20;
// pDoc->m_pSex="";
// pDoc->m_pTel="";
// pDoc->m_pAdd="";
}
pDoc->UpdateAllViews(NULL);
}
else
AfxMessageBox("没有记录可删除!:(");
}
void CstudentsView::OnShow() //显示所有记录
{
CstudentsDoc *pDoc=GetDocument();
CMenu *pmenu=AfxGetMainWnd()->GetMenu();
CMenu *pEditmenu=pmenu->GetSubMenu(4);
pEditmenu->EnableMenuItem(ID_OPTIONS_MODY,MF_GRAYED);
pDoc->Number=(int)pDoc->m_ObArray.GetUpperBound();
pDoc->flag=1; //标志位置1,用于显示所有记录
Invalidate();
}
void CstudentsView::OnUpdateShow(CCmdUI *pCmdUI)
{
// TODO: 在此添加命令更新用户界面处理程序代码
//CMenu *pmenu=AfxGetMainWnd()->GetMenu();
//CMenu *pEditmenu=pmenu->GetSubMenu(4);
//ASSERT(pmenu!=NULL);
//pmenu->AppendMenu(MF_SEPARATOR);
//pEditmenu->EnableMenuItem(ID_OPTIONS_MODY,MF_ENABLED);
}
void CstudentsView::OnUpdateSerch2(CCmdUI *pCmdUI)
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -