📄 studentwinview.cpp
字号:
// studentwinView.cpp : implementation of the CStudentwinView class
//
#include "stdafx.h"
#include "studentwin.h"
#include "student.h"
#include "studentwinDoc.h"
#include "studentwinView.h"
#include "MainFrm.h"
#include "bitmapdlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CStudentwinView
IMPLEMENT_DYNCREATE(CStudentwinView, CFormView)
BEGIN_MESSAGE_MAP(CStudentwinView, CFormView)
//{{AFX_MSG_MAP(CStudentwinView)
ON_BN_CLICKED(IDC_add, Onadd)
ON_BN_CLICKED(IDC_delete, Ondelete)
ON_BN_CLICKED(IDC_dropmade, Ondropmade)
ON_BN_CLICKED(IDC_insert, Oninsert)
ON_BN_CLICKED(IDC_last, Onlast)
ON_BN_CLICKED(IDC_first, Onfirst)
ON_BN_CLICKED(IDC_made, Onmade)
ON_BN_CLICKED(IDC_next, Onnext)
ON_BN_CLICKED(IDC_pre, Onpre)
ON_BN_CLICKED(IDC_savemade, Onsavemade)
ON_CBN_EDITCHANGE(IDC_lesson, OnEditchangelesson)
ON_CBN_SELCHANGE(IDC_lesson, OnSelchangelesson)
ON_EN_KILLFOCUS(IDC_scorelesson, OnKillfocusscorelesson)
ON_EN_KILLFOCUS(IDC_fenlesson, OnKillfocusfenlesson)
ON_EN_CHANGE(IDC_scorelesson, OnChangescorelesson)
ON_CBN_DROPDOWN(IDC_lesson, OnDropdownlesson)
ON_CBN_SETFOCUS(IDC_lesson, OnSetfocuslesson)
ON_EN_CHANGE(IDC_score1, OnChangescore1)
ON_EN_CHANGE(IDC_score2, OnChangescore2)
ON_EN_CHANGE(IDC_score3, OnChangescore3)
ON_EN_CHANGE(IDC_score4, OnChangescore4)
ON_EN_KILLFOCUS(IDC_fen1, OnKillfocusfen1)
ON_EN_KILLFOCUS(IDC_fen2, OnKillfocusfen2)
ON_EN_KILLFOCUS(IDC_fen3, OnKillfocusfen3)
ON_EN_KILLFOCUS(IDC_fen4, OnKillfocusfen4)
ON_EN_CHANGE(IDC_id, OnChangeid)
ON_WM_CREATE()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONDOWN()
ON_BN_CLICKED(IDC_olddata, Onolddata)
ON_COMMAND(ID_single, Onsingle)
ON_WM_CLOSE()
ON_COMMAND(ID_idfind, Onidfind)
ON_COMMAND(ID_lessonfind, Onlessonfind)
ON_COMMAND(ID_namefind, Onnamefind)
ON_COMMAND(ID_oldfind, Onoldfind)
ON_COMMAND(ID_yearfinddown, Onyearfinddown)
ON_COMMAND(ID_yearfindup, Onyearfindup)
ON_COMMAND(ID_zhifang, Onzhifang)
ON_COMMAND(ID_addrfind, Onaddrfind)
ON_COMMAND(ID_bingzhuang, Onbingzhuang)
ON_COMMAND(ID_double, Ondouble)
ON_WM_TIMER()
ON_COMMAND(ID_STATICHELP, OnStatichelp)
ON_COMMAND(ID_AUTOHELP, OnAutohelp)
ON_COMMAND(ID_FENHUI, OnFenhui)
ON_COMMAND(ID_IDHUI, OnIdhui)
ON_BN_CLICKED(IDC_shezhi, Onshezhi)
ON_BN_CLICKED(IDC_newshezhi, Onnewshezhi)
ON_EN_KILLFOCUS(IDC_id, OnKillfocusid)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CStudentwinView construction/destruction
CStudentwinView::CStudentwinView()
: CFormView(CStudentwinView::IDD)
{
drawfirst=true;
kechengcouter=0;
firstcap=true;
open=false;
doublerect.left=10;
doublerect.right=410;
doublerect.top=70;
doublerect.bottom=570;
m_dlg=NULL;
olddatain1=false;
olddatain=false;
move=false;
cur=AfxGetApp()->LoadCursor(IDC_CURSOR1);
datanumber=0;
//{{AFX_DATA_INIT(CStudentwinView)
m_addr = _T("");
m_fen1 = 0;
m_fen2 = 0;
m_fen3 = 0;
m_fen4 = 0;
m_id = 0;
m_name = _T("");
m_score1 = _T("");
m_score2 = _T("");
m_score3 = _T("");
m_score4 = _T("");
m_scorelesson = _T("");
m_year = 0;
m_intyue = -1;
m_intdate = -1;
m_intsex = -1;
m_fenlesson = 0;
m_tel = 0;
datacouter=0;
m_kecheng = _T("");
//}}AFX_DATA_INIT
// TODO: add construction code here
GetModuleFileName(NULL,filepath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
filepath.ReleaseBuffer();
int np;
np=filepath.ReverseFind('\\');
filepath=filepath.Left(np);
}
CStudentwinView::~CStudentwinView()
{
if(m_dlg!=NULL)
delete m_dlg;
}
void CStudentwinView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CStudentwinView)
DDX_Control(pDX, IDC_shezhi, m_bshezhi);
DDX_Control(pDX, IDC_kecheng, m_editkecheng);
DDX_Control(pDX, IDC_id, m_editid);
DDX_Control(pDX, IDC_olddata, m_olddata);
DDX_Control(pDX, IDC_add, m_addbutton);
DDX_Control(pDX, IDC_score4, m_editscore4);
DDX_Control(pDX, IDC_score3, m_editscore3);
DDX_Control(pDX, IDC_score2, m_editscore2);
DDX_Control(pDX, IDC_score1, m_editscore1);
DDX_Control(pDX, IDC_fen4, m_editfen4);
DDX_Control(pDX, IDC_fen3, m_editfen3);
DDX_Control(pDX, IDC_fen2, m_editfen2);
DDX_Control(pDX, IDC_fen1, m_editfen1);
DDX_Control(pDX, IDC_lesson, m_lesson);
DDX_Control(pDX, IDC_fenlesson, m_editfenlesson);
DDX_Control(pDX, IDC_scorelesson, m_editscorelesson);
DDX_Control(pDX, IDC_savemade, m_savemade);
DDX_Control(pDX, IDC_dropmade, m_dropmade);
DDX_Control(pDX, IDC_yue, m_yue);
DDX_Control(pDX, IDC_sex, m_sex);
DDX_Control(pDX, IDC_date, m_date);
DDX_Text(pDX, IDC_addr, m_addr);
DDX_Text(pDX, IDC_fen1, m_fen1);
DDX_Text(pDX, IDC_fen2, m_fen2);
DDX_Text(pDX, IDC_fen3, m_fen3);
DDX_Text(pDX, IDC_fen4, m_fen4);
DDX_Text(pDX, IDC_id, m_id);
DDX_Text(pDX, IDC_name, m_name);
DDX_Text(pDX, IDC_score1, m_score1);
DDX_Text(pDX, IDC_score2, m_score2);
DDX_Text(pDX, IDC_score3, m_score3);
DDX_Text(pDX, IDC_score4, m_score4);
DDX_Text(pDX, IDC_scorelesson, m_scorelesson);
DDX_Text(pDX, IDC_year, m_year);
DDX_CBIndex(pDX, IDC_yue, m_intyue);
DDX_CBIndex(pDX, IDC_date, m_intdate);
DDX_CBIndex(pDX, IDC_sex, m_intsex);
DDX_Text(pDX, IDC_fenlesson, m_fenlesson);
DDX_Text(pDX, IDC_tel, m_tel);
DDX_Text(pDX, IDC_kecheng, m_kecheng);
//}}AFX_DATA_MAP
}
BOOL CStudentwinView::PreCreateWindow(CREATESTRUCT& cs)
{
return CFormView::PreCreateWindow(cs);
}
void CStudentwinView::OnInitialUpdate()
{
arstyle=CArchive::load;
fileinout();
much=datanumber;
cursor=much;
setstatusbar();
olddatain=true;
olddatain1=true;
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
}
/////////////////////////////////////////////////////////////////////////////
// CStudentwinView printing
BOOL CStudentwinView::OnPreparePrinting(CPrintInfo* pInfo)
{
return DoPreparePrinting(pInfo);
}
void CStudentwinView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CStudentwinView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
void CStudentwinView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
CStudentwinDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
int i,start,end,height;
CString str;
CPoint point(720,-1440);
CFont font;
TEXTMETRIC tm;
pDC->SetMapMode(MM_TWIPS);
start=(pInfo->m_nCurPage-1)*20;
end=start+20;
font.CreateFont(-280,0,0,0,400,false,false,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_MODERN,"宋体");
CFont*poldfont=pDC->SelectObject(&font);
printhead(pDC,pInfo);
pDC->GetTextMetrics(&tm);
height=tm.tmHeight+tm.tmExternalLeading;
Cstudent*pstudentprint;
POSITION p;
p=pDoc->curpos;
pDoc->curpos=pDoc->m_dataList.GetHeadPosition();
CString sex,date;
for(i=start;i<end;i++)
{
if(pDoc->curpos!=NULL)
{
pstudentprint=pDoc->m_dataList.GetAt(pDoc->curpos);
if(pstudentprint->sex==0)
sex="女士";
else
if(pstudentprint->sex==1)
sex="先生";
else
sex="不男不女";
date.Format("%d/%d/%d",pstudentprint->year,pstudentprint->yue+1,pstudentprint->date+1);
str.Format("%d %s %s %s %s %d %s %d %s %d %s %d %s %d"
,pstudentprint->id,pstudentprint->name,sex,date,pstudentprint->addr,pstudentprint->tel,pstudentprint->lesson[0].name,pstudentprint->lesson[0].fen,
pstudentprint->lesson[1].name,pstudentprint->lesson[1].fen,pstudentprint->lesson[2].name,pstudentprint->lesson[2].fen,pstudentprint->lesson[3].name,pstudentprint->lesson[3].fen);
point.y-=height;
pDC->TextOut(point.x,point.y,str);
pDoc->m_dataList.GetNext(pDoc->curpos);
if(pDoc->curpos==NULL)
break;
}
}
printfoot(pDC);
pDC->SelectObject(poldfont);
pDoc->curpos=p;
}
/////////////////////////////////////////////////////////////////////////////
// CStudentwinView diagnostics
#ifdef _DEBUG
void CStudentwinView::AssertValid() const
{
CFormView::AssertValid();
}
void CStudentwinView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CStudentwinDoc* CStudentwinView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CStudentwinDoc)));
return (CStudentwinDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CStudentwinView message handlers
void CStudentwinView::Onadd()
{
UpdateData();
CStudentwinDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
datanumber++;
Cstudent *pstudent1;
getstudent();
setporty(true);
pstudent1=new Cstudent(m_id,m_name,m_intsex,m_year,m_intyue,m_intdate,4,lesson,m_addr,m_tel);
pDoc->m_dataList.AddTail(pstudent1);
arstyle=CArchive::store;
fileinout();
much++;
cursor=much;
pDoc->curpos=pDoc->m_dataList.GetTailPosition();
setstatusbar();
UpdateData(false);
pDoc->UpdateAllViews(this);
}
void CStudentwinView::Ondelete()
{
CStudentwinDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
if(olddatain==true)
{
pDoc->curpos=pDoc->m_dataList.GetTailPosition();
olddatain=false;
}
POSITION p=pDoc->m_dataList.GetHeadPosition();
if(p==NULL)
{MessageBox("无信息");
m_addr = _T("");
m_fen1 = 0;
m_fen2 = 0;
m_fen3 = 0;
m_fen4 = 0;
m_fenlesson = 0;
m_id = 0;
m_name = _T("");
m_score1 = _T("");
m_score2 = _T("");
m_score3 = _T("");
m_score4 = _T("");
m_scorelesson = _T("");
m_tel = 0;
m_year = 0;
UpdateData(false);
pDoc->UpdateAllViews(this);
cursor=0;
much=0;
}
else{
if(much==1)
{
pDoc->m_dataList.RemoveAll();
m_addr = _T("");
m_fen1 = 0;
m_fen2 = 0;
m_fen3 = 0;
m_fen4 = 0;
m_fenlesson = 0;
m_id = 0;
m_name = _T("");
m_score1 = _T("");
m_score2 = _T("");
m_score3 = _T("");
m_score4 = _T("");
m_scorelesson = _T("");
m_tel = 0;
m_year = 0;
UpdateData(false);
pDoc->UpdateAllViews(this);
cursor=0;
much=0;
pDoc->curpos=NULL;
}
else{
//pDoc->curpos=pDoc->m_dataList.GetHeadPosition();
p=pDoc->curpos;
pDoc->m_dataList.RemoveAt(pDoc->curpos);
//pDoc->m_dataList.GetNext(p);
//pDoc->curpos=p;
pDoc->curpos=pDoc->m_dataList.GetHeadPosition();
Cstudent *pstudent=pDoc->m_dataList.GetAt(pDoc->curpos);
m_id=pstudent->id;
m_name=pstudent->name;
m_year=pstudent->year;
m_intyue=pstudent->yue;
m_intdate=pstudent->date;
m_addr=pstudent->addr;
m_tel=pstudent->tel;
m_intsex=pstudent->sex;
m_score1=pstudent->lesson[0].name;
m_fen1=pstudent->lesson[0].fen;
m_score2=pstudent->lesson[1].name;
m_fen2=pstudent->lesson[1].fen;
m_score3=pstudent->lesson[2].name;
m_fen3=pstudent->lesson[2].fen;
m_score4=pstudent->lesson[3].name;
m_fen4=pstudent->lesson[3].fen;
UpdateData(false);
cursor=1;
much--;
pDoc->UpdateAllViews(this);
}
MessageBox("删除成功");
datanumber--;
}
setstatusbar();
arstyle=CArchive::store;
fileinout();
}
void CStudentwinView::Ondropmade()
{
CStudentwinDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
UpdateData();
pDoc->m_dataList.SetAt(pDoc->curpos,oldstudent);
Cstudent *pstudent=pDoc->m_dataList.GetAt(pDoc->curpos);
m_id=pstudent->id;
m_name=pstudent->name;
m_year=pstudent->year;
m_intyue=pstudent->yue;
m_intdate=pstudent->date;
m_addr=pstudent->addr;
m_tel=pstudent->tel;
m_score1=pstudent->lesson[0].name;
m_fen1=pstudent->lesson[0].fen;
m_score2=pstudent->lesson[1].name;
m_fen2=pstudent->lesson[1].fen;
m_score3=pstudent->lesson[2].name;
m_fen3=pstudent->lesson[2].fen;
m_score4=pstudent->lesson[3].name;
m_fen4=pstudent->lesson[3].fen;
MessageBox("你已经放弃了修改!");
m_savemade.ShowWindow(SW_HIDE);
m_dropmade.ShowWindow(SW_HIDE);
arstyle=CArchive::store;
fileinout();
UpdateData(false);
pDoc->UpdateAllViews(this);
}
void CStudentwinView::Oninsert()
{
CStudentwinDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
if(olddatain==true)
{
pDoc->curpos=pDoc->m_dataList.GetTailPosition();
olddatain=false;
}
UpdateData();
Cstudent *pstudent;
getstudent();
POSITION p=pDoc->m_dataList.GetHeadPosition();
if(p==NULL)
{
Onadd();
}
else
{
if(pDoc->curpos!=NULL)
{
p=pDoc->curpos;
pstudent=new Cstudent(m_id,m_name,m_intsex,m_year,m_intyue,m_intdate,4,lesson,m_addr,m_tel);
pDoc->m_dataList.InsertBefore(pDoc->curpos,pstudent);
much++;
datanumber++;
arstyle=CArchive::store;
fileinout();
pDoc->curpos=p;
pDoc->m_dataList.GetPrev(pDoc->curpos);
//addstring(cursor,much);
}
}
setstatusbar();
MessageBox("插入成功 ");
pDoc->UpdateAllViews(this);
}
void CStudentwinView::Onlast()
{
CStudentwinDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
setolddata();
pDoc->curpos=pDoc->m_dataList.GetTailPosition();
if(pDoc->curpos!=NULL)
{
Cstudent *pstudent=pDoc->m_dataList.GetAt(pDoc->curpos);
m_id=pstudent->id;
m_name=pstudent->name;
m_year=pstudent->year;
m_intyue=pstudent->yue;
m_intdate=pstudent->date;
m_addr=pstudent->addr;
m_tel=pstudent->tel;
m_intsex=pstudent->sex;
m_score1=pstudent->lesson[0].name;
m_fen1=pstudent->lesson[0].fen;
m_score2=pstudent->lesson[1].name;
m_fen2=pstudent->lesson[1].fen;
m_score3=pstudent->lesson[2].name;
m_fen3=pstudent->lesson[2].fen;
m_score4=pstudent->lesson[3].name;
m_fen4=pstudent->lesson[3].fen;
UpdateData(false);
cursor=much;
}
else{
cursor=0;
much=0;
MessageBox("There is no data");
}
setstatusbar();
}
void CStudentwinView::Onfirst()
{
CStudentwinDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
setolddata();
pDoc->curpos=pDoc->m_dataList.GetHeadPosition();
if(pDoc->curpos!=NULL)
{
Cstudent *pstudent=pDoc->m_dataList.GetAt(pDoc->curpos);
m_id=pstudent->id;
m_name=pstudent->name;
m_year=pstudent->year;
m_intyue=pstudent->yue;
m_intdate=pstudent->date;
m_addr=pstudent->addr;
m_intsex=pstudent->sex;
m_tel=pstudent->tel;
m_score1=pstudent->lesson[0].name;
m_fen1=pstudent->lesson[0].fen;
m_score2=pstudent->lesson[1].name;
m_fen2=pstudent->lesson[1].fen;
m_score3=pstudent->lesson[2].name;
m_fen3=pstudent->lesson[2].fen;
m_score4=pstudent->lesson[3].name;
m_fen4=pstudent->lesson[3].fen;
UpdateData(false);
cursor=1;
}
else{
MessageBox("There is no data");
cursor=0;
}
setstatusbar();
}
void CStudentwinView::Onmade()
{
UpdateData();
getstudent();
CStudentwinDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
POSITION p=pDoc->m_dataList.GetHeadPosition();
if(p==NULL)
{
MessageBox("无信息!");
}
else
{
if(pDoc->curpos!=NULL)
{
Cstudent *pstudent;
oldstudent=pDoc->m_dataList.GetAt(pDoc->curpos);
pstudent=new Cstudent(m_id,m_name,m_intsex,m_year,m_intyue,m_intdate,4,lesson,m_addr,m_tel);
pDoc->m_dataList.SetAt(pDoc->curpos,pstudent);
MessageBox("修改成功");
m_savemade.ShowWindow(SW_SHOW);
m_dropmade.ShowWindow(SW_SHOW);
arstyle=CArchive::store;
fileinout();
UpdateData(false);
pDoc->UpdateAllViews(this);
}
else{
MessageBox("无信息");
}
}
}
void CStudentwinView::Onnext()
{
//////////////////////////////
CStudentwinDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
setolddata();
if(olddatain==true)
{
pDoc->curpos=pDoc->m_dataList.GetTailPosition();
olddatain=false;
}
POSITION p=pDoc->m_dataList.GetHeadPosition();
if(p==NULL)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -