Скачиваний:
91
Добавлен:
01.05.2014
Размер:
5.74 Кб
Скачать
// DlgRooms.cpp : implementation file
//

#include "stdafx.h"
#include "kurs.h"
#include "DlgRooms.h"
#include "DlgAddRoom.h"
#include "DlgEditRoom.h"
#include "ListEmpl.h"
#include "Person.h"


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

/////////////////////////////////////////////////////////////////////////////
// DlgRooms dialog
//CList<CRoom> LR;

DlgRooms::DlgRooms(CWnd* pParent /*=NULL*/)
	: CDialog(DlgRooms::IDD, pParent)
{
	//{{AFX_DATA_INIT(DlgRooms)
	m_listR = _T("");
	m_onlyfree = FALSE;
	//}}AFX_DATA_INIT
}


void DlgRooms::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(DlgRooms)
	DDX_LBString(pDX, IDC_lstRooms, m_listR);
	DDX_Check(pDX, IDC_FrR, m_onlyfree);
	//}}AFX_DATA_MAP
	
	CListBox* pLB=(CListBox*) GetDlgItem(IDC_lstRooms);
	CString str("");
	pLB->ResetContent();
	CElem<CRoom> *buf = LR.beg;
	while (buf !=0){
		str = buf->inf.GetNumber()+buf->inf.GetCapasity()+buf->inf.GetOccupy()+buf->inf.GetPrice();
		if (m_onlyfree){
			if(atoi(buf->inf.GetOccupy())==0)
				pLB->AddString(str);
		}
		else
			pLB->AddString(str);

		buf = buf->next;
	}

}


BEGIN_MESSAGE_MAP(DlgRooms, CDialog)
	//{{AFX_MSG_MAP(DlgRooms)
	ON_BN_CLICKED(IDC_AddR, OnAddR)
	ON_BN_CLICKED(IDC_DelR, OnDelR)
	ON_LBN_DBLCLK(IDC_lstRooms, OnDblclklstRooms)
	ON_BN_CLICKED(IDC_FrR, OnFrR)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// DlgRooms message handlers

void DlgRooms::OnAddR() 
{
	DlgAddRoom dlgAR;
    int result = dlgAR.DoModal();
	if(result==IDOK){
		CRoom R;
		R.SetNumber(dlgAR.m_num);
		R.SetCapasity(dlgAR.m_type);
		R.SetPrice(dlgAR.m_price);
		LR.AddEl(R);
		UpdateData(false);
	}
}

void DlgRooms::OnDelR() 
{
	CListBox* pLB=(CListBox*) GetDlgItem(IDC_lstRooms);
	CString str;
	if (pLB->GetCurSel() !=-1){
		pLB->GetText(pLB->GetCurSel(), str);
		str=str.Left(5);
		CElem<CRoom> *buf = LR.beg;
		while((buf != 0) && (buf->inf.GetNumber()!=str))
			buf = buf->next;
		if (atoi(buf->inf.GetOccupy())==0){
			LR.DelEl(buf);
			UpdateData(false);		
		}
		else
			AfxMessageBox("Невозможно удалить занятый номер!");

	}
	else
		AfxMessageBox("Не выбран номер!");

}

void DlgRooms::OnOK() 
{
	fstream File("Rooms.txt",ios::out);
	CString str("");
	CElem<CRoom> *buf = LR.beg;
	int i;
	while(buf != 0){
		str = buf->inf.GetNumber()+buf->inf.GetCapasity()+buf->inf.GetOccupy()+buf->inf.GetPrice()+"\n";
		i = str.GetLength();
		File.write(str,i);
		buf = buf->next;
	}
	File.close();
	LR.DelAllElem();
//	UpdateData(false);
	
	CDialog::OnOK();
}

void DlgRooms::OnCancel() 
{
	LR.DelAllElem();	
	CDialog::OnCancel();
}

void DlgRooms::OnDblclklstRooms() 
{
	DlgEditRoom dlgER;
	CString str;
	CString strroom;
	CListBox* pLB=(CListBox*) GetDlgItem(IDC_lstRooms);
	pLB->GetText(pLB->GetCurSel(), str);
	str=str.Left(5);
	CElem<CRoom> *buf = LR.beg;
	while (buf !=0)
	{
		dlgER.LREdit.AddEl(buf->inf);
		buf=buf->next;
	}

	buf = LR.beg;
	while((buf != 0) && (buf->inf.GetNumber()!=str))
		buf = buf->next;


	dlgER.m_editnum = buf->inf.GetNumber();
	dlgER.m_edittype = buf->inf.GetCapasity();
	dlgER.m_editprice = buf->inf.GetPrice();
	int result = dlgER.DoModal();
	if(result==IDOK){
		buf->inf.SetNumber(dlgER.m_editnum);
		buf->inf.SetCapasity(dlgER.m_edittype);
		buf->inf.SetPrice(dlgER.m_editprice);
		UpdateData(false);		
	}


/*	DlgEditRoom dlgER;
	CString str;
	CString strroom;
	CListBox* pLB=(CListBox*) GetDlgItem(IDC_lstRooms);
	pLB->GetText(pLB->GetCurSel(), str);
	bool b=true;	
	str=str.Left(5);
	CElem<CRoom> *buf = LR.beg;
	CElem<CRoom> *buf2 = LR.beg;
	while((buf != 0) && (buf->inf.GetNumber()!=str))
		buf = buf->next;
	dlgER.m_editnum = buf->inf.GetNumber();
	dlgER.m_edittype = buf->inf.GetCapasity();
	dlgER.m_editprice = buf->inf.GetPrice();
		strroom = buf->inf.GetNumber();
	UINT len;
	int result = dlgER.DoModal();
	if(result==IDOK){
		if (!dlgER.m_editnum.IsEmpty() && !dlgER.m_edittype.IsEmpty() && !dlgER.m_editprice.IsEmpty()){
			len = dlgER.m_editnum.GetLength();
			if (len>5) {dlgER.m_editnum=dlgER.m_editnum.Left(5);}
			else
				while (len<5){
					dlgER.m_editnum+=' ';
					len = dlgER.m_editnum.GetLength();
				}
			len = dlgER.m_edittype.GetLength();
			if (len>5) {dlgER.m_edittype=dlgER.m_edittype.Left(5);}
			else
			while (len<5){
				dlgER.m_edittype+=' ';
				len = dlgER.m_edittype.GetLength();
			}
			len = dlgER.m_editprice.GetLength();
			if (len>5) {dlgER.m_editprice=dlgER.m_editprice.Left(5);}
			else
				while (len<5){
					dlgER.m_editprice+=' ';
					len = dlgER.m_editprice.GetLength();
				}
			if (strroom != dlgER.m_editnum){
				while (buf2!=0){
					if (buf2->inf.GetNumber() == dlgER.m_editnum){
						b = false;
						AfxMessageBox("Невозможно изменить номер комнаты!");
					}

					buf2=buf2->next;
				}
				if(atoi(buf->inf.GetOccupy())>0){
					b=false;
					AfxMessageBox("Невозможно изменить номер комнаты!");
				}
			}
			if (atoi(dlgER.m_edittype)<atoi(buf->inf.GetOccupy()) ){
				b = false;
				AfxMessageBox("Занятость номера превышает его тип!");
			}

			if (atoi(dlgER.m_edittype)<=0){
				b=false;
				AfxMessageBox("Тип должен быть больше 0!");
			}


			if (b){
				buf->inf.SetNumber(dlgER.m_editnum);
				buf->inf.SetCapasity(dlgER.m_edittype);
				buf->inf.SetPrice(dlgER.m_editprice);
				UpdateData(false);		
			}
		}
		else
			AfxMessageBox("Заполнены не все поля!");

	}
*/	
}

void DlgRooms::OnFrR() 
{
	UpdateData();
}
Соседние файлы в папке kurs