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

📄 nurseview.cpp

📁 医院的护士人员管理系统
💻 CPP
字号:
// NurseView.cpp : implementation of the CNurseView class
//

#include "stdafx.h"
#include "Nurse.h"

#include "NurseDoc.h"
#include "NurseView.h"
#include "InputDlg.h"
#include "WarnDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

BOOL g_bUsed = FALSE;	// 判断是不是第一次进入,初始为否

/////////////////////////////////////////////////////////////////////////////
// CNurseView

IMPLEMENT_DYNCREATE(CNurseView, CListView)

BEGIN_MESSAGE_MAP(CNurseView, CListView)
	//{{AFX_MSG_MAP(CNurseView)
	ON_COMMAND(ID_OPERATION_MODIFY, OnOperationModify)
	ON_COMMAND(ID_OPERATION_DELETE, OnOperationDelete)
	//}}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()

/////////////////////////////////////////////////////////////////////////////
// CNurseView construction/destruction

CNurseView::CNurseView()
{
	// TODO: add construction code here

}

CNurseView::~CNurseView()
{
}

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

	return CListView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CNurseView drawing

void CNurseView::OnDraw(CDC* pDC)
{
	CNurseDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
}

void CNurseView::OnInitialUpdate()
{
	
	CListView::OnInitialUpdate();
	// TODO: You may populate your ListView with items by directly accessing
	//  its list control through a call to GetListCtrl().


	CNurseDoc *pDoc = GetDocument(); //获得文档指针,操纵数据

	if(!g_bUsed)		// 如果第一次建立视图,绘制窗口
	{
		// 修改样式
		GetListCtrl().ModifyStyle(0,LVS_REPORT|LVS_SHOWSELALWAYS
									|LVS_SORTASCENDING|LVS_SINGLESEL);
		// 设置扩展风格
		GetListCtrl().SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,0,
									LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
		// 获得字符像素值
		CDC *pDC = GetDC();
		TEXTMETRIC tm;
		pDC->GetTextMetrics(&tm);

		GetListCtrl().InsertColumn(0,"职业证书编号",LVCFMT_LEFT,13*tm.tmAveCharWidth,0);
		GetListCtrl().InsertColumn(1,"姓名",LVCFMT_LEFT,10*tm.tmAveCharWidth,1);
		GetListCtrl().InsertColumn(2,"性别",LVCFMT_LEFT,8*tm.tmAveCharWidth,1);
		GetListCtrl().InsertColumn(3,"出生年月",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
		GetListCtrl().InsertColumn(4,"护理级别",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
		GetListCtrl().InsertColumn(5,"最高学历",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
		GetListCtrl().InsertColumn(6,"婚姻状况",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
	    GetListCtrl().InsertColumn(7,"理论考核",LVCFMT_LEFT,10*tm.tmAveCharWidth,0);
		GetListCtrl().InsertColumn(8,"操作考核",LVCFMT_LEFT,10*tm.tmAveCharWidth,1);
		GetListCtrl().InsertColumn(9,"轮转时间",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
		GetListCtrl().InsertColumn(10,"科室",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
		GetListCtrl().InsertColumn(11,"病假",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
		GetListCtrl().InsertColumn(12,"事假",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
		GetListCtrl().InsertColumn(13,"备注",LVCFMT_LEFT,15*tm.tmAveCharWidth,0);
	}
	else
	{
	//	GetListCtrl().DeleteAllItems();
	}

	g_bUsed = TRUE;

}
void CNurseView::OnUpdate(CView *pSender,LPARAM lHint,CObject *pHint)
{
	CNurseDoc *pDoc = GetDocument(); //获得文档指针,操纵数据

	// 删除所有项目
	GetListCtrl().DeleteAllItems();
	// 获取头指针
	CListItem *ptr = pDoc->staffInfo.m_staffList.m_pHead;
	while(ptr)
	{
		int i = GetListCtrl().InsertItem(0,ptr->m_szWorkerID);
		GetListCtrl().SetItemText(i,1,ptr->m_szName);
		GetListCtrl().SetItemText(i,2,ptr->m_szSex);
		GetListCtrl().SetItemText(i,3,ptr->m_date);
		GetListCtrl().SetItemText(i,4,ptr->m_szTechnical);
		GetListCtrl().SetItemText(i,5,ptr->m_szSchool);
		GetListCtrl().SetItemText(i,6,ptr->m_szMarriage);
        GetListCtrl().SetItemText(i,7,ptr->m_szlilun);
		GetListCtrl().SetItemText(i,8,ptr->m_szcaozuo);
		GetListCtrl().SetItemText(i,9,ptr->m_date2);
		GetListCtrl().SetItemText(i,10,ptr->m_szkeshi);
		GetListCtrl().SetItemText(i,11,ptr->m_szshijia);
		GetListCtrl().SetItemText(i,12,ptr->m_szbingjia);
        GetListCtrl().SetItemText(i,13,ptr->m_szbeizhu);
		ptr = ptr->m_pNext;
	}
}
/////////////////////////////////////////////////////////////////////////////
// CNurseView printing

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CNurseView diagnostics

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CNurseView message handlers

void CNurseView::OnOperationModify() 
{
	// TODO: Add your command handler code here
	CNurseDoc* pDoc = GetDocument();

	if(!GetListCtrl().GetSelectedCount())
	{
		MessageBox("请选择一项进行修改!");
	}
	else
	{
		CInputDlg inputDlg;	

		// 获得该项的基本信息
		// 取得选中的纪录
		int i = -1;		
		i = GetListCtrl().GetNextItem(-1,LVIS_SELECTED);
		// 取得选中纪录的编号
		CString id = GetListCtrl().GetItemText(i,0);
		inputDlg.m_ID = id;
		//通过编号查找护理信息,返回指向选中纪录的指针
		CListItem *ptr = pDoc->staffInfo.m_staffList.findByID(id);

		//取得选中纪录的护士具体信息

		inputDlg.m_name = ptr->m_szName;		// 姓名
		
		// 出生年月日
		inputDlg.m_sYear = ptr->m_date.Mid(0,4);
		inputDlg.m_sMonth = ptr->m_date.Mid(3,2);
		inputDlg.m_sDay = ptr->m_date.Mid(5,2);
	

		inputDlg.m_sTechnical =ptr->m_szTechnical;	// 护理级别

		inputDlg.m_sSchool = ptr->m_szSchool;	// 最高学历

		if(inputDlg.DoModal() == IDOK)
		{
			ptr->m_szWorkerID = inputDlg.m_ID;	// 获得护士编号
		 	ptr->m_szName = inputDlg.m_name;		// 获得护士姓名
            ptr->m_szSex = inputDlg.m_sSex;	// 获得护士性别
		
			// 获得护士出生年月
			CString sYear = inputDlg.m_sYear;
			CString sMonth = inputDlg.m_sMonth;
			CString sDay = inputDlg.m_sDay;
			ptr->m_date = sYear + sMonth + sDay;

			// 获得护士护理级别
			ptr->m_szTechnical = inputDlg.m_sTechnical;  
 
			// 获得护士最高学历
			ptr->m_szSchool = inputDlg.m_sSchool;

			// 获得护士婚姻状况
			ptr->m_szMarriage = inputDlg.m_sMarriage;
			//获得理论成绩
			ptr->m_szlilun=inputDlg.m_lilun;
			//获得操作成绩
			ptr->m_szcaozuo=inputDlg.m_caozuo;
            //获得病假天数
			ptr->m_szbingjia=inputDlg.m_bingjia;
            //获得事假天数			
            ptr->m_szshijia=inputDlg.m_shijia;
            // 获得备注
			ptr->m_szbeizhu=inputDlg.m_beizhu;
            //获得科室
            ptr->m_szkeshi=inputDlg.m_keshi;
            //获得到达该科室时间
            CString syear2 = inputDlg.m_syear2;
			CString smonth2 = inputDlg.m_smonth2;
			CString sday2 = inputDlg.m_sday2;
			ptr->m_date2 = syear2 + smonth2 + sday2;
			pDoc->UpdateAllViews(NULL);// 更新视图
		}
	}
}

void CNurseView::OnOperationDelete() 
{
	// TODO: Add your command handler code here

	CNurseDoc* pDoc = GetDocument();

	if(!GetListCtrl().GetSelectedCount())
	{
		MessageBox("请选择一项进行删除!");
	}
	else
	{
		CWarnDlg warnDlg;	// 提示是否真的要删除
		warnDlg.m_sWarnText = "你真得要删除这项纪录吗?";
		if(warnDlg.DoModal() == IDOK)
		{
			// 获得所选择护理信息的编号
			int i = -1; 
			i = GetListCtrl().GetNextItem(-1,LVIS_SELECTED);
			CString id = GetListCtrl().GetItemText(i,0);

			// 根据编号删除信息
			pDoc->staffInfo.m_staffList.removeByID(id);

			pDoc->UpdateAllViews(NULL); // 更新视图
		}
	}
}

⌨️ 快捷键说明

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