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

📄 page1.cpp

📁 用VC写的一个学生成绩管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// Page1.cpp : implementation file
//

#include "stdafx.h"
#include "cj.h"
#include "Page1.h"
#include "ADDDIALOG.h"
#include "DELETEDLG.h"
#include "ModifyDlg.h"
#include "FindDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

extern CDatabase m_db;
/////////////////////////////////////////////////////////////////////////////
// CPage1 property page

IMPLEMENT_DYNCREATE(CPage1, CPropertyPage)

CPage1::CPage1() : CPropertyPage(CPage1::IDD)
{
   TCHAR *pfstinfor=_T("\\stinfor.txt");
   TCHAR *pftchinfor=_T("\\tchinfor.txt");
	//{{AFX_DATA_INIT(CPage1)
	
	//}}AFX_DATA_INIT
}

CPage1::~CPage1()
{
}

void CPage1::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPage1)
	DDX_Control(pDX, IDC_LIST3, m_clist3);
	DDX_Control(pDX, IDC_LIST2, m_clist2);
	DDX_Control(pDX, IDC_LIST1, m_clist1);
	DDX_Control(pDX, IDC_COMBO1, m_xuan);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPage1, CPropertyPage)
	//{{AFX_MSG_MAP(CPage1)
	ON_BN_CLICKED(IDC_STATR, OnStatr)
	ON_BN_CLICKED(IDC_ADD, OnAdd)
	ON_BN_CLICKED(IDC_DELECT, OnDelect)
	ON_BN_CLICKED(IDC_EDIT, OnEdit)
	ON_BN_CLICKED(IDC_FIND, OnFind)
	ON_BN_CLICKED(IDC_ALL, OnAll)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPage1 message handlers

BOOL CPage1::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_clist1.SetExtendedStyle(LVS_EX_GRIDLINES ); //给LIST添加网格
	m_clist2.SetExtendedStyle(LVS_EX_GRIDLINES );
	m_clist3.SetExtendedStyle(LVS_EX_GRIDLINES );

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


	m_clist2.InsertColumn(0,"科目",LVCFMT_LEFT,45);
	m_clist2.InsertColumn(1,"任课老师",LVCFMT_LEFT,70);


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

    GetDlgItem(IDC_ADD)->ShowWindow(SW_HIDE);
    GetDlgItem(IDC_DELECT)->ShowWindow(SW_HIDE);
    GetDlgItem(IDC_EDIT)->ShowWindow(SW_HIDE);
    GetDlgItem(IDC_FIND)->ShowWindow(SW_HIDE);
    GetDlgItem(IDC_ALL)->ShowWindow(SW_HIDE);
    m_xuan.SetCurSel(1);

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

void CPage1::OnStatr() 
{
	// TODO: Add your control notification handler code here
 
    GetDlgItem(IDC_ADD)->ShowWindow(SW_SHOW);
    GetDlgItem(IDC_DELECT)->ShowWindow(SW_SHOW);
    GetDlgItem(IDC_EDIT)->ShowWindow(SW_SHOW);
    GetDlgItem(IDC_FIND)->ShowWindow(SW_SHOW);
    GetDlgItem(IDC_ALL)->ShowWindow(SW_SHOW);

 	m_xuan.GetLBText(m_xuan.GetCurSel(),m_Getstring);

 //处理表3
     
  //    this->OnAll();
 
 //处理表2
  
        m_clist2.DeleteAllItems();
         int buffersizet; 
	     CFile ftchinfor;
	      if(ftchinfor.Open("tchinfor.txt",CFile::modeRead))
		  {
	         buffersizet=(int)ftchinfor.GetLength();
             CString tchinfor;
	        char* pbuffert=tchinfor.GetBuffer(buffersizet);
	        ftchinfor.Read(pbuffert,buffersizet);
	        tchinfor.ReleaseBuffer();
	         int i = 0 ;
			 int tchstart=0;
	        CString ttemp;
	                for(int tchend=0;tchend<buffersizet;tchend++)
					{
                        if(tchinfor.GetAt(tchend)=='\t'||tchinfor.GetAt(tchend)=='\n')
						{
		               	 ttemp=tchinfor.Mid(tchstart,(tchend-tchstart));	
						 tchstart=tchend+1;
						   if(i%2==0)
						   {
						   m_clist2.InsertItem(i/2,"");
						   m_clist2.SetItemText(i/2,0,ttemp); 
						   }
					   else
                           m_clist2.SetItemText(i/2,1,ttemp); 
						  
					      i++;
						}
					}
		  }
  //处理表1
  
      m_clist1.DeleteAllItems();
	  int m, n;
	  CString s;
	  float total_marks,average_marks;
	  float mark;
      int num_pass,num_excellent;
      for(m=0;m<m_clist2.GetItemCount();m++)
	  {
		  m_clist1.InsertItem(m,"");
		  m_clist1.SetItemText(m,0,m_clist2.GetItemText(m,0));
		       if(!m_clist3.GetItemCount())
			   {
				   	 m_clist1.SetItemText(m,1,"0.0");
					 m_clist1.SetItemText(m,2,"0.0");
					 m_clist1.SetItemText(m,3,"0.0");
				     m_clist1.SetItemText(m,4,"0.0");
			   }
			   else
			   {
		           num_pass=0;
				   num_excellent=0;
				   total_marks=0;
				   for(n=0;n<m_clist3.GetItemCount();n++)
				   {
                      s=m_clist3.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_clist1.SetItemText(m,1,s);
                   s.Format("%.1f",average_marks);
				   m_clist1.SetItemText(m,2,s);
				   s.Format("%d",num_pass);
				   m_clist1.SetItemText(m,3,s);
				   s.Format("%d",num_excellent);
				   m_clist1.SetItemText(m,4,s);
			   }
	  }
	  
	
}

void CPage1::OnAdd() 
{
     int class_num;
	// TODO: Add your control notification handler code here

	CADDDIALOG adddialog;
	if (adddialog.DoModal()==IDOK)
	{  
			  	  
 	   if(m_Getstring=="一班")
	   {
		  class_num=1;
		 
	      if(adddialog.m_nxuehao>=200)
		  {AfxMessageBox(_T("一班的学号在100-200之间!"),MB_OKCANCEL  ,0);	return;}
      
	   }
    
	   if(m_Getstring=="二班")
	   {
	      class_num=2;
         if(adddialog.m_nxuehao<200||adddialog.m_nxuehao>=300)
		 {AfxMessageBox(_T("二班的学号在200-300之间!"),MB_OKCANCEL  ,0);   return ;}
	   }
    
	  CFile fstinfor;
    	if(fstinfor.Open("stinfor.txt",CFile::modeWrite))
		{
         CString s;
		 s.Format("%d\t%d\t%s\t%.f\t%.f\t%.f\t%.f\t%.f\r\n",
			 class_num,
			 adddialog.m_nxuehao,
			 adddialog.m_nName,
			 adddialog.m_nMaths,
			 adddialog.m_nwuli,
			 adddialog.m_nhuaxue,
			 adddialog.m_nEnglish,
			 adddialog.m_nzhengz);
		   int strsize=s.GetLength();
		 char* pbuffer=s.GetBuffer(strsize);
		 fstinfor.SeekToEnd();
		 fstinfor.Write(pbuffer,strsize);
		 fstinfor.Close();
		 this->OnAll();
		}
	}
	    
}

void CPage1::OnDelect() 
{
	// TODO: Add your control notification handler code here
     
	CDELETEDLG deletedlg;
  if (deletedlg.DoModal()==IDOK) 
  {
	if (deletedlg.m_npassword!=111111)
    AfxMessageBox(_T("您输入的密码不正确,您没有权限修改记录! :( ,请在帮助文档中获得密码!"),MB_OKCANCEL ,0);
  
      else
	  {
	  BOOL b=FALSE;
    int buffersizes;
	LPTSTR  pbuffers;
	CFile fstinfor;
	         if(fstinfor.Open("stinfor.txt",CFile::modeRead))
			 {
              	buffersizes=(int)fstinfor.GetLength();
                CString stinfor;
	            CString s1,s2,s3,s4;
	            int class_num;
	            int pos_start;
             	int pos_end;
            	pbuffers=stinfor.GetBuffer(buffersizes);
	            fstinfor.Read(pbuffers,buffersizes);
              	stinfor.ReleaseBuffer();
				fstinfor.Close();
             	class_num=1;
            	s1.Format("\r\n%d\t%d\t",class_num,deletedlg.m_nxuehao);
				s3.Format("%d\t%d\t",class_num,deletedlg.m_nxuehao);
            	class_num=2;
	            s2.Format("\r\n%d\t%d\t",class_num,deletedlg.m_nxuehao);
				s4.Format("%d\t%d\t",class_num,deletedlg.m_nxuehao);
                       if(stinfor.Find(s1)!=-1)
					   {
		                  pos_start=stinfor.Find(s1);
		                  pos_end=stinfor.Find('\n',pos_start+2);
	                   	  stinfor.Delete(pos_start,pos_end-pos_start-1);
                          int strsize=stinfor.GetLength();
	                   	  char* pbuffer=stinfor.GetBuffer(strsize);
						  fstinfor.Open("stinfor.txt",CFile::modeCreate|CFile::modeWrite);
	                 	  fstinfor.Write(pbuffer,strsize);
	                      b=TRUE;
						  fstinfor.Close();
					   }
                       else if(stinfor.Find(s2)!=-1)
					   {
		               pos_start=stinfor.Find(s2);
	                	pos_end=stinfor.Find('\n',pos_start+2);
	             	stinfor.Delete(pos_start,pos_end-pos_start-1);
                       int strsize=stinfor.GetLength();
	                 	char* pbuffer=stinfor.GetBuffer(strsize);
	                 	 fstinfor.Open("stinfor.txt",CFile::modeCreate|CFile::modeWrite);
	                 	  fstinfor.Write(pbuffer,strsize);
	                      b=TRUE;
						  fstinfor.Close();
					   }
					   else
					   {
						   pos_start=0;
						   pos_end=stinfor.Find('\t',2);
						   if(s3.Compare(stinfor.Left(pos_end+1))==0||s4.Compare(stinfor.Left(pos_end+1))==0)
						   {
                            pos_end=stinfor.Find('\n');
							stinfor.Delete(0,pos_end+1);
							int strsize=stinfor.GetLength();
	                    	char* pbuffer=stinfor.GetBuffer(strsize);
	                 	    fstinfor.Open("stinfor.txt",CFile::modeCreate|CFile::modeWrite);

⌨️ 快捷键说明

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