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

📄 studentsview.cpp

📁 这是一个用链表实现的简单的学生管理程序,有链表的插入删除等各种操作
💻 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 + -