📄 教学系统view.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 + -