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

📄 教学系统view.cpp

📁 一个MFC编写的教学管理程序,可以实现成绩的输入和排序等,适合初学MFC者
💻 CPP
字号:
// 教学系统View.cpp : implementation of the CMyView class
//

#include "stdafx.h"
#include "教学系统.h"

#include "教学系统Doc.h"
#include "教学系统View.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMyView

IMPLEMENT_DYNCREATE(CMyView, CListView)

BEGIN_MESSAGE_MAP(CMyView, CListView)
	//{{AFX_MSG_MAP(CMyView)
	ON_COMMAND(ID_regist, Onregist)
	ON_COMMAND(ID_fail, Onfail)
	ON_COMMAND(ID_findsub, Onfindsub)
	ON_COMMAND(ID_bynumber, Onbynumber)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CListView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CListView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CListView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyView construction/destruction

CMyView::CMyView()
:ctl(GetListCtrl())
{
//	ctl=GetListCtrl();
	s[0]="高等数学";
	s[1]="数学分析";
	s[2]="英语一级";
	s[3]="英语二级";
	n=0;
	j=0;
	p=0;

//	if(GetDocument()->m>0);//{
//		n=GetDocument()->m;
//		for(int i=0;i<n;i++)
//			list[i]=GetDocument()->save[i];
//	}
	// TODO: add construction code here

}

CMyView::~CMyView()
{
}

BOOL CMyView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CListView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CMyView drawing

void CMyView::OnDraw(CDC* pDC)
{
	CMyDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);


/*	if(GetDocument()->m>0){
		n=GetDocument()->m;
		for(int i=0;i<n;i++){
			list[i]=GetDocument()->save[i];


		CString str;
	str.Format("%2d",n+1);//序号
	ctl.InsertItem(n,str);

	str.Format("09006%1d",list[i].Class+1);//班级
	ctl.SetItemText(n,1,str);
	str.Format("09006%8d",list[i].numble);//学号
	ctl.SetItemText(n,2,str);
	ctl.SetItemText(n,3,list[i].name);
	ctl.SetItemText(n,5,s[list[i].s1]);
	str.Format("%3f",list[i].ss1);//成绩1
	ctl.SetItemText(n,6,str);
	ctl.SetItemText(n,7,s[list[i].s2]);
	str.Format("%3f",list[i].ss2);//成绩2
	ctl.SetItemText(n,8,str);
	str.Format("%8d",list[i].sss1);//补考1
	ctl.SetItemText(n,9,str);
	str.Format("%8d",list[i].sss2);//补考2
	ctl.SetItemText(n,10,str);}
	}*/
	// TODO: add draw code for native data here
}

void CMyView::OnInitialUpdate()
{
	CListView::OnInitialUpdate();
	showlist();

//	CDC *pDC;

//	OnDraw(pDC);

	if(GetDocument()->m>0){
		n=GetDocument()->m;
		for(int i=0;i<n;i++){
			list[i]=GetDocument()->save[i];


		CString str;
	str.Format("%2d",i+1);//序号
	ctl.InsertItem(n,str);

	str.Format("09006%1d",list[i].Class+1);//班级
	ctl.SetItemText(i,1,str);
	str.Format("09006%8d",list[i].numble);//学号
	ctl.SetItemText(i,2,str);
	ctl.SetItemText(i,3,list[i].name);
	ctl.SetItemText(i,5,s[list[i].s1]);
	str.Format("%3f",list[i].ss1);//成绩1
	ctl.SetItemText(i,6,str);
	ctl.SetItemText(i,7,s[list[i].s2]);
	str.Format("%3f",list[i].ss2);//成绩2
	ctl.SetItemText(i,8,str);
	str.Format("%8d",list[i].sss1);//补考1
	ctl.SetItemText(i,9,str);
	str.Format("%8d",list[i].sss2);//补考2
	ctl.SetItemText(i,10,str);}
	}

	


	// TODO: You may populate your ListView with items by directly accessing
	//  its list control through a call to GetListCtrl().
}

/////////////////////////////////////////////////////////////////////////////
// CMyView printing

BOOL CMyView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CMyView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CMyView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CMyView diagnostics

#ifdef _DEBUG
void CMyView::AssertValid() const
{
	CListView::AssertValid();
}

void CMyView::Dump(CDumpContext& dc) const
{
	CListView::Dump(dc);
}

CMyDoc* CMyView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc)));
	return (CMyDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMyView message handlers





//----------------------------------------------------------------------------------------------------------------------


void CMyView::showlist()
{
//	ctl=GetListCtrl();   
	ctl.ModifyStyle(0,LVS_REPORT,0);   

	ctl.InsertColumn(0,"序号");
	ctl.SetColumnWidth(0,60);
	ctl.InsertColumn(1,"班级");
	ctl.SetColumnWidth(1,60);
	ctl.InsertColumn(2,"学号");
	ctl.SetColumnWidth(2,60);
	ctl.InsertColumn(3,"姓名");
	ctl.SetColumnWidth(3,80);
	ctl.InsertColumn(4,"");
	ctl.SetColumnWidth(4,1);
	ctl.InsertColumn(5,"第一学期选课");
	ctl.SetColumnWidth(5,100);
	ctl.InsertColumn(6,"成绩1");
	ctl.SetColumnWidth(6,50);
	ctl.InsertColumn(7,"第二学期选课");
	ctl.SetColumnWidth(7,100);
	ctl.InsertColumn(8,"成绩2");
	ctl.SetColumnWidth(8,50);
	ctl.InsertColumn(9,"补考成绩1");
	ctl.SetColumnWidth(9,80);
	ctl.InsertColumn(10,"补考成绩2");
	ctl.SetColumnWidth(10,80);

   
/*	LVCOLUMN lvc;   
	lvc.mask=LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;     
	lvc.fmt=LVCFMT_LEFT;
	
	lvc.cx=100;     
	lvc.iSubItem=0;   
	lvc.pszText="序号";   
	GetListCtrl().InsertColumn(lvc.iSubItem,& lvc);   
	ctl.InsertColumn(0,"序号");
	ctl.SetColumnWidth(0,100);*/

/*	lvc.cx=100;     
	lvc.iSubItem=0;   
	lvc.pszText="姓名";   
	GetListCtrl().InsertColumn(lvc.iSubItem,& lvc);  
	
	lvc.cx=100;     
	lvc.iSubItem=0;   
	lvc.pszText="姓名";   
	GetListCtrl().InsertColumn(lvc.iSubItem,& lvc);

	lvc.cx=100;     
	lvc.iSubItem=0;   
	lvc.pszText="姓名";   
	GetListCtrl().InsertColumn(lvc.iSubItem,& lvc);

	lvc.cx=100;     
	lvc.iSubItem=0;   
	lvc.pszText="姓名";   
	GetListCtrl().InsertColumn(lvc.iSubItem,& lvc);*/

	
/*	CListCtrl& ListCtrl = GetListCtrl();
	while(ListCtrl.DeleteColumn(0)){};
	ListCtrl.DeleteAllItems();
	ListCtrl.InsertColumn(0,"号码");
	ListCtrl.SetColumnWidth(0,100);
	ListCtrl.InsertColumn(1,"姓名");
	ListCtrl.SetColumnWidth(1,100);
	ListCtrl.InsertColumn(2,"出生");
	ListCtrl.SetColumnWidth(2,100);
	ListCtrl.InsertColumn(3,"身高");
	ListCtrl.SetColumnWidth(3,100);
	ListCtrl.InsertColumn(4,"体重");
	ListCtrl.SetColumnWidth(4,100);*/

}

void CMyView::Onregist() 
{
	RegistDlg d1;
	d1.DoModal();

	for(int l=0;l<=n;l++){
		if(d1.num==9006000+list[l].numble){
			MessageBox("此学号已注册");
			return;
		}
	}

	if((d1.num-9006000)/100!=d1.cla+1){
		MessageBox("学号不在此班范围内");
		return;
	}

	if(d1.num>9006437 ||d1. num<9006101){
		MessageBox("学号不在范围内");
		return;
	}

	if(d1.re1>100 || d1.re1<0){
		MessageBox("第一学期成绩输入不在范围内");
		return;
	}

	if(d1.re2>100 || d1.re2<0){
		MessageBox("第二学期成绩输入不在范围内");
		return;
	}

	if((d1.re1>=60 && d1.ar1!=0) || (d1.re2>=60 && d1.ar2!=0)){
		MessageBox("及格的同学不补考");
		return;
	}
	
	if(d1.ar1>100 || d1.ar1<0){
		MessageBox("第一学期补考成绩输入不在范围内");
		return;
	}

	if(d1.ar2>100 || d1.ar2<0){
		MessageBox("第二学期补考成绩输入不在范围内");
		return;
	}


	if(0!=p){
	ctl.DeleteAllItems();

	for(int i=0;i<n;i++){
		CString str;
	str.Format("%2d",i+1);//序号
	ctl.InsertItem(n,str);

	str.Format("09006%1d",list[i].Class+1);//班级
	ctl.SetItemText(i,1,str);
	str.Format("09006%3d",list[i].numble);//学号
	ctl.SetItemText(i,2,str);
//	str.Format("%8d",d1.num);//姓名
	ctl.SetItemText(i,3,list[i].name);
//	str.Format("%1d",d1.ter+1);//学期
//	ctl.SetItemText(n,4,str);
//	str.Format("%8d",d1.num);//一课程
	ctl.SetItemText(i,5,s[list[i].s1]);
	str.Format("%3f",list[i].ss1);//成绩1
	ctl.SetItemText(i,6,str);
//	str.Format("%8d",d1.num);//二课程
	ctl.SetItemText(i,7,s[list[i].s2+2]);
	str.Format("%3f",list[i].ss2);//成绩2
	ctl.SetItemText(i,8,str);
	str.Format("%8d",list[i].sss1);//补考1
	ctl.SetItemText(i,9,str);
	str.Format("%8d",list[i].sss2);//补考2
	ctl.SetItemText(i,10,str);
	}
	p=0;
	}

	list[n].Class=d1.cla;
	list[n].name=d1.nam;
	list[n].numble=d1.num-9006000;
//	list[n].term=d1.ter+1;
	list[n].s1=d1.sub1;
	list[n].ss1=d1.re1;
	list[n].sss1=d1.ar1;
	list[n].s2=d1.sub2;
	list[n].ss2=d1.re2;
	list[n].sss2=d1.ar2;

	GetDocument()->save[n]=list[n];
	

	CString str;
	str.Format("%2d",n+1);//序号
	ctl.InsertItem(n,str);

	str.Format("09006%1d",d1.cla+1);//班级
	ctl.SetItemText(n,1,str);
	str.Format("0%7d",d1.num);//学号
	ctl.SetItemText(n,2,str);
//	str.Format("%8d",d1.num);//姓名
	ctl.SetItemText(n,3,d1.nam);
//	str.Format("%1d",d1.ter+1);//学期
//	ctl.SetItemText(n,4,str);
//	str.Format("%8d",d1.num);//一课程
	ctl.SetItemText(n,5,s[d1.sub1]);
	str.Format("%3f",d1.re1);//成绩1
	ctl.SetItemText(n,6,str);
//	str.Format("%8d",d1.num);//二课程
	ctl.SetItemText(n,7,s[d1.sub2+2]);
	str.Format("%3f",d1.re2);//成绩2
	ctl.SetItemText(n,8,str);
	str.Format("%8d",d1.ar1);//补考1
	ctl.SetItemText(n,9,str);
	str.Format("%8d",d1.ar2);//补考2
	ctl.SetItemText(n,10,str);
	




//	ctl.SetItemText(1,1,"Item 1_2");
	//	str.Format("%d",n);
//	ctl.SetItem(n,0,LVIF_TEXT,str,0,0,0,NULL);
//	str.Format("09006%1d",d1.cla+1);
//	ctl.SetItem(2,1,LVCFMT_LEFT,str,0,0,0,NULL);
//	str.Format("09006%1d",d1.num);
//	ctl.SetItem(n,2,LVIF_TEXT,str,0,0,0,NULL);
	

	GetDocument()->m=++n;
}

void CMyView::Onfail() 
{
	p=1;
	FailDlg f1;
	f1.DoModal();//Create(ID_fail,this);
//	UpdateData(true);

	if(1==f1.test)
		fail(f1);
}

void CMyView::fail(FailDlg & f2)
{   
	ctl.DeleteAllItems(); 
	for(int i=0;i<n;i++){
		if(f2.m_class==list[i].Class && (list[i].ss1<60 || list[i].ss2<60)){
			CString str;
			str.Format("%2d",j+1);
			ctl.InsertItem(j,str);			
			if(list[i].ss1<60 )
				showfail(j,1);
			if(list[i].ss2<60)
				showfail(j,2);
			j++;
		}
	}
	j=0;
}

void CMyView::showfail(int k, int a)
{
	CString str;
//	str.Format("%2d",j+1);
//	ctl.InsertItem(j,str);

	str.Format("09006%1d",list[k].Class+1);//班级
	ctl.SetItemText(j,1,str);
	str.Format("09006%3d",list[k].numble);//学号
	ctl.SetItemText(j,2,str);
	ctl.SetItemText(j,3,list[k].name);
	str.Format("%1d",a);
//	ctl.SetItemText(j,4,str);
	if(1==a){
		ctl.SetItemText(j,5,s[list[k].s1]);
		str.Format("%1f",list[k].ss1);
		ctl.SetItemText(j,6,str);
	}
	if(2==a){
		ctl.SetItemText(j,7,s[list[k].s2+2]);
		str.Format("%1f",list[k].ss2);
		ctl.SetItemText(j,8,str);
	}
}

void CMyView::Onfindsub() 
{
	p=1;
	subdlg sub1;
	sub1.DoModal();
	ctl.DeleteAllItems();

	for(int i=0;i<n;i++){
		if(sub1.m_s<=1 && list[i].s1==sub1.m_s){
			showsub(j,sub1.m_s);
			j++;}
		if(sub1.m_s>1 && list[i].s2==sub1.m_s){
			showsub(j,sub1.m_s);
			j++;}
	}
	j=0;
	
}

void CMyView::showsub(int k,int f)
{
	 
	CString str;
	str.Format("%2d",j+1);
	ctl.InsertItem(j,str);

	str.Format("09006%1d",list[k].Class+1);//班级
	ctl.SetItemText(j,1,str);
	str.Format("09006%3d",list[k].numble);//学号
	ctl.SetItemText(j,2,str);
	ctl.SetItemText(j,3,list[k].name);
	if(f<2)
		ctl.SetItemText(j,5,s[f]);
	if(f>=2)
		ctl.SetItemText(j,7,s[f]);
}

void CMyView::Onbynumber() 
{
	p=1;
	ByNumber n1;
	n1.DoModal();
	
	ctl.DeleteAllItems();

	int a[100];int k=0;
	for(int i=0;i<n;i++)
		if(n1.m5class==list[i].Class && (list[i].s1==n1.m5sub || list[i].s2+2==n1.m5sub))
			a[k++]=list[i].numble;

		int h=0;
	for(i=0;i<k-1;i++){
		for(int q=0;q<k-i-1;q++){
			if(a[q]>a[q+1]){
				h=a[q];
				a[q]=a[q+1];
				a[q+1]=h;
			}
		}
	}

	for(i=0;i<k;i++){
		for(int q=0;q<n;q++)
			if(list[q].numble==a[i]){
				shownum(q,n1.m5sub);
				j++;
				break;
			}

	}
	j=0;
}

void CMyView::shownum(int q,int f)
{
	CString str;
	str.Format("%2d",j+1);
	ctl.InsertItem(j,str);

	str.Format("09006%1d",list[q].Class+1);//班级
	ctl.SetItemText(j,1,str);
	str.Format("09006%3d",list[q].numble);//学号
	ctl.SetItemText(j,2,str);
	ctl.SetItemText(j,3,list[q].name);
	if(f<2)
		ctl.SetItemText(j,5,s[f]);
	if(f>=2)
		ctl.SetItemText(j,7,s[f]);
}

⌨️ 快捷键说明

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