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

📄 page2.cpp

📁 用VC写的一个学生成绩管理系统
💻 CPP
字号:
// Page2.cpp : implementation file
//

#include "stdafx.h"
#include "cj.h"
#include "Page2.h"
#include "FindDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CPage2 property page

IMPLEMENT_DYNCREATE(CPage2, CPropertyPage)

CPage2::CPage2() : CPropertyPage(CPage2::IDD)
{
	//{{AFX_DATA_INIT(CPage2)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}

CPage2::~CPage2()
{
}

void CPage2::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPage2)
	DDX_Control(pDX, IDC_LIST2, m_clist2);
	DDX_Control(pDX, IDC_LIST1, m_clist1);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPage2, CPropertyPage)
	//{{AFX_MSG_MAP(CPage2)
	ON_WM_CANCELMODE()
	ON_BN_CLICKED(IDC_FIND, OnFind)
	ON_BN_CLICKED(IDC_ALL, OnAll)
	ON_BN_CLICKED(IDC_SHOW, OnShow)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPage2 message handlers

BOOL CPage2::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_clist1.SetExtendedStyle(LVS_EX_GRIDLINES );
	m_clist2.SetExtendedStyle(LVS_EX_GRIDLINES );

	m_clist1.InsertColumn(0,"学号",LVCFMT_LEFT,45);
	m_clist1.InsertColumn(1,"姓名",LVCFMT_LEFT,45);
	m_clist1.InsertColumn(2,"高数",LVCFMT_LEFT,45);
	m_clist1.InsertColumn(3,"大物",LVCFMT_LEFT,45);
	m_clist1.InsertColumn(4,"体育",LVCFMT_LEFT,45);
	m_clist1.InsertColumn(5,"英语",LVCFMT_LEFT,45);
	m_clist1.InsertColumn(6,"政治",LVCFMT_LEFT,45);
	m_clist1.InsertColumn(7,"总成绩",LVCFMT_LEFT,60);
	m_clist1.InsertColumn(8,"平均成绩",LVCFMT_LEFT,65);



	m_clist2.InsertColumn(0,"科目",LVCFMT_LEFT,45);
	m_clist2.InsertColumn(1,"总成绩",LVCFMT_LEFT,50);
	m_clist2.InsertColumn(2,"平均成绩",LVCFMT_LEFT,65);
	m_clist2.InsertColumn(3,"及格人数",LVCFMT_LEFT,65);
	m_clist2.InsertColumn(4,"优秀人数",LVCFMT_LEFT,65);



	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPage2::OnCancelMode() 
{
	CPropertyPage::OnCancelMode();
	
	// TODO: Add your message handler code here
 
}

void CPage2::OnFind() 
{
	BOOL m_canfind;
	CFindDlg findialg;
	if (findialg.DoModal()==IDOK)
	{
        m_canfind=FALSE;
		int buffersizes; 
    	m_clist1.DeleteAllItems();
    LPTSTR  pbuffers;
	CFile fstinfor;
	     if(fstinfor.Open("stinfor.txt",CFile::modeRead))
		 {
        	buffersizes=(int)fstinfor.GetLength();
           CString stinfor;
         	pbuffers=stinfor.GetBuffer(buffersizes);
        	fstinfor.Read(pbuffers,buffersizes);
	        stinfor.ReleaseBuffer();
         	 int n=0;
        	 int m=0;
        	 BOOL display;
        	 int ststart=0;
        	 CString temp;
        	 CString s;
        	 float sum_courses=0;
				for(int stend=0;stend<buffersizes;stend++)
					{
                        if(stinfor.GetAt(stend)=='\t'||stinfor.GetAt(stend)=='\n')
						{
		               	 temp=stinfor.Mid(ststart,(stend-ststart));
                             switch(m)
							 {
			                  case 0: display=TRUE;
				                      break;
			                  case 1: if(display)  
									  {
				                    	 if((findialg.m_getstring2==">=")&&(atoi(temp)<(int)findialg.m_ntiaojian))
					                     	display=FALSE; 
					                     if((findialg.m_getstring2=="=")&&(atoi(temp)!=(int)findialg.m_ntiaojian))
                                            display=FALSE; 
					                     if((findialg.m_getstring2=="<=")&&(atoi(temp)>(int)findialg.m_ntiaojian))
                                            display=FALSE; 
					                    	 if(display)
											 {
					                         m_canfind=TRUE;
					                         sum_courses=0;
						                     m_clist1.InsertItem(n,"");
						                     s.Format("%d",atoi(temp));
						                     m_clist1.SetItemText(n,0,s);
											 }
									  }
				                          break;
			                 case 2: if(display)
									 {
                                      m_clist1.SetItemText(n,1,temp);
									 }
				                          break;
			                 case 7: if(display)
									 {
                                     s.Format("%.1f",atof(temp));
                                     m_clist1.SetItemText(n,6,s);
						             sum_courses=sum_courses+(float)atof(temp);
                                     s.Format("%.1f",sum_courses);
						             m_clist1.SetItemText(n,7,s);
						             s.Format("%.1f",sum_courses/5);
						             m_clist1.SetItemText(n,8,s);
						             n++;
									 }
				                         break;
			                default: if(display)
									 {
						              s.Format("%.1f",atof(temp));
				                     m_clist1.SetItemText(n,m-1,s);
						            sum_courses=sum_courses+(float)atof(temp);
									 }
							 }
		                               ststart=stend+1;
		                               m=(m+1)%8;
						}
					}
	
		         fstinfor.Close();
		        if(!m_canfind)
			   ::AfxMessageBox("没有您所要求的结果,请修改查询条件重新查询!");
	       
		 }	
	}

}

void CPage2::OnAll() 
{
	// TODO: Add your control notification handler code here

    int buffersizes; 

	m_clist1.DeleteAllItems();
   
	////if(m_set.IsOpen())    m_set.Close();
    LPTSTR  pbuffers;
	CFile fstinfor;
	if(fstinfor.Open("stinfor.txt",CFile::modeRead))
	{
	buffersizes=(int)fstinfor.GetLength();
    CString stinfor;
	pbuffers=stinfor.GetBuffer(buffersizes);
	fstinfor.Read(pbuffers,buffersizes);
	stinfor.ReleaseBuffer();
	
  ////	 m_set.m_strFilter.Empty();  
   	 int n=0;
	 int m=0;
	 BOOL display;
	 int ststart=0;
	 CString temp;
	 CString s;
	 float sum_courses=0;

  //// 	 m_set.Open();
     
	for(int stend=0;stend<buffersizes;stend++)
	{
         if(stinfor.GetAt(stend)=='\t'||stinfor.GetAt(stend)=='\n')
		 {
			 temp=stinfor.Mid(ststart,(stend-ststart));
             switch(m)
			 {
			 case 0: display=TRUE;
				    break;
			 case 1: if(display)  
					 {
						 sum_courses=0;
						 m_clist1.InsertItem(n,"");
						 s.Format("%d",atoi(temp));
						 m_clist1.SetItemText(n,0,s);
					 }
				    break;
			 case 2: if(display)
					 {
                         m_clist1.SetItemText(n,1,temp);
					 }
				    break;
			 case 7: if(display)
					 {
                          s.Format("%.1f",atof(temp));
                         m_clist1.SetItemText(n,6,s);
						 sum_courses=sum_courses+(float)atof(temp);
                          s.Format("%.1f",sum_courses);
						 m_clist1.SetItemText(n,7,s);
						  s.Format("%.1f",sum_courses/5);
						 m_clist1.SetItemText(n,8,s);
						 n++;
					 }
				     break;
			 default: if(display)
					  {
						  s.Format("%.1f",atof(temp));
				         m_clist1.SetItemText(n,m-1,s);
						 sum_courses=sum_courses+(float)atof(temp);
					  }
			 }
		         ststart=stend+1;
		         m=(m+1)%8;
		 }
	}
	
		   fstinfor.Close();
	       
	}
}

void CPage2::OnShow() 
{
	// TODO: Add your control notification handler code here
      m_clist2.DeleteAllItems();
	  int m, n;
	  CString s;
	  float total_marks,average_marks;
	  float mark;
      int num_pass,num_excellent;
      for(m=0;m<5;m++)
	  {
		  m_clist2.InsertItem(m,"");
		  switch(m)
		  {
		  case 0:
		       m_clist2.SetItemText(m,0,"高数");
		       break;
		  case 1:
			  m_clist2.SetItemText(m,0,"大物");
			  break;
		  case 2:
			  m_clist2.SetItemText(m,0,"体育");
			  break;
		  case 3:
			  m_clist2.SetItemText(m,0,"英语");
			  break;
		  case 4:
			  m_clist2.SetItemText(m,0,"政治");
			  break;
		  default:
			  ;
		  }
		       if(!m_clist1.GetItemCount())
			   {
				   	 m_clist2.SetItemText(m,1,"0.0");
					 m_clist2.SetItemText(m,2,"0.0");
					 m_clist2.SetItemText(m,3,"0.0");
				     m_clist2.SetItemText(m,4,"0.0");
			   }
			   else
			   {
		           num_pass=0;
				   num_excellent=0;
				   total_marks=0;
				   for(n=0;n<m_clist1.GetItemCount();n++)
				   {
                      s=m_clist1.GetItemText(n,m+2);
					  mark=(float)atof(s);
					  if(mark>=60)
						  num_pass++;
					  if(mark>=90)
						  num_excellent++;
					  total_marks+=mark;
				   }
                   average_marks=total_marks/n;
				   s.Format("%.1f",total_marks);
				   m_clist2.SetItemText(m,1,s);
                   s.Format("%.1f",average_marks);
				   m_clist2.SetItemText(m,2,s);
				   s.Format("%d",num_pass);
				   m_clist2.SetItemText(m,3,s);
				   s.Format("%d",num_excellent);
				   m_clist2.SetItemText(m,4,s);
			   }
	  }
	  
		
}

⌨️ 快捷键说明

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