Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой проект1 / курсовая работа.doc
Скачиваний:
190
Добавлен:
01.05.2014
Размер:
379.9 Кб
Скачать

2.6. Руководство пользователя.

1. Запустите файл hotel.exe. На экране появится окно «Гостиница» (рис. 2.6.1)

рис.2.6.1. Главное диалоговое окно программы.

2. Для просмотра/редактирования сведений о проживающих нажмите кнопку «Проживающие». Появится диалоговое окно «Проживающие»(рис. 2.6.2)

рис.2.6.2. Диалоговое окно для работы с проживающими.

2.1 Для поселения проживающего нажмите кнопку «Добавить». Появится диалоговое окно «Добавление проживающего» (рис 2.6.3)

рис.2.6.3. Диалоговое окно для поселения проживающего.

2.1.2 Введите данные и нажмите кнопку «Поселить». Если не хотите поселять нового проживающего, нажмите «Отмена».

2.2. Для выселения проживающего выделите его из списка и нажмите кнопку «Удалить»

рис.2.6.4. Выселение проживающего.

2.3. Для перехода в главное окно нажмите кнопку «Выход». Данные автоматически сохранятся в файл.

3. Для просмотра/редактирования сведений о номерах нажмите кнопку «Номера» главного диалогового окна. Появится диалоговое окно «Номера» (рис. 2.6.5)

рис.2.6.5 Номера

3.1 Для отображения только свободных номеров поставьте флажок «Свободные номера».

3.2. Для добавления номера нажмите кнопку «Добавить». Появится диалоговое окно «Добавление комнаты» (рис 2.6.6)

рис.2.6.6 Добавление номера

Введите данные и нажмите кнопку «Добавить». Для отмены действия нажмите кнопку «Отмена».

3.3. Для удаление номера выберите его из списка и нажмите кнопку «Удалить».

3.4. Для сохранения данных и перехода в главное окно нажмите кнопку «Сохранить». Если не хотите сохранять изменения, нажмите кнопку «Отмена».

4. Для просмотра/редактирования сведений о служащих нажмите кнопку «Служащие» главного диалогового окна. Появится диалоговое окно «Служащие» (рис. 2.6.7)

рис.2.6.7 Служащие.

4.1. Для того чтобы добавить служащего нажмите кнопку «Добавить». Появится окно «Добавление служащего» (рис 2.6.8)

рис.2.6.8 Добавление служащего.

4.2. Введите данные и нажмите кнопку «Добавить». Для отмены операции добавления нажмите «Отмена».

4.3. Для удаление служащего выберите его из списка и нажмите кнопку «Удалить».

4.4. Для сохранения данных и перехода в главное окно нажмите кнопку «Сохранить». Если не хотите сохранять изменения, нажмите кнопку «Отмена».

5. Для просмотра отчета о работе гостиницы нажмите кнопку «Отчет» главного диалогового окна. Появится окно «Отчет» (рис 2.6.9)

рис.2.6.9 Просмотр отчета.

5.1. Для того чтобы посмотреть информацию о проживающих за определенный месяц, заполните поля «Год», «Месяц» и нажмите кнопку «Получить информацию». Если необходимо посмотреть информацию в определенный день, отметьте флажок «День», заполните соответствующее поле и нажмите кнопку «Получить информацию».

5.2. для перехода в главное диалоговое окно нажмите кнопку «Выйти».

6. Для завершение работы с программой нажмите кнопку «Выход» главного диалогового окна.

3. Исходные тексты ПК.

//Person.h

#include "ListEmpl.h"

#include <iostream.h>

class CPerson {

public:

CString fio;

CString passport;

CPerson(){};

virtual ~CPerson(){};

virtual void SetFio(CString fio0)=0;

virtual void SetPassport(CString passport0)=0;

};

class CEmpl: public CPerson{

CString post;

public:

CEmpl(){};

void SetFio(CString fio0);

void SetPassport(CString passport0);

void SetPost(CString post0);

CString GetFio(){

return fio;

}

CString GetPassport(){

return passport;

}

CString GetPost(){

return post;

}

};

class CClient: public CPerson{

CTime dataZ;

CTime dataV;

CString room;

public:

void SetFio(CString fio0);

void SetPassport(CString passport0);

void SetDataZ(CTime data0){

dataZ=data0;

}

void SetDataV(CTime period0){

dataV=period0;

}

void SetRoom(CString room0){

room=room0;

}

CString GetRoom(){

return room;

}

CString GetFio(){

return fio;

}

CString GetPassport(){

return passport;

}

CTime GetDataZ(){

return dataZ;

}

CTime GetDataV(){

return dataV;

}

};

class CRoom{

CString number;

CString capasity;

CString occupy;

CString price;

public:

void SetPrice(CString price0){

price=price0;

}

void SetNumber(CString number0){

number=number0;

}

void SetCapasity(CString capasity0){

capasity=capasity0;

}

void SetOccupy(CString occupy0){

occupy = occupy0;

}

CRoom(CString oc="0 "){occupy=oc;}

CString GetOccupy(){

return occupy;

}

bool SetOccupyDown(){

int oc = atoi(occupy);

char ch[2];

UINT len;

if (oc>0){

oc-=1;

occupy=itoa(oc,ch,10);

len = occupy.GetLength();

if (len>5) {occupy=occupy.Left(5);}

else

while (len<5){

occupy+=' ';

len = occupy.GetLength();

}

return true;

}

else

return false;

}

bool SetOccupyUp(){

int oc = atoi(occupy);

int cap = atoi(capasity);

char ch[6];

UINT len;

if (oc<cap){

oc+=1;

occupy=itoa(oc,ch,10);

len = occupy.GetLength();

if (len>5) {occupy=occupy.Left(5);}

else

while (len<5){

occupy+=' ';

len = occupy.GetLength();

}

return true;

}

else

return false;

}

CString GetNumber(){

return number;

}

CString GetCapasity(){

return capasity;

}

CString GetPrice(){

return price;

}

};

// DlgClients.cpp : implementation file

//

#include "stdafx.h"

#include "kurs.h"

#include "DlgClients.h"

#include "DlgAddClient.h"

#include "DlgRooms.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

DlgClients::DlgClients(CWnd* pParent /*=NULL*/)

: CDialog(DlgClients::IDD, pParent)

{

//{{AFX_DATA_INIT(DlgClients)

m_listC = _T("");

//}}AFX_DATA_INIT

}

void DlgClients::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(DlgClients)

DDX_LBString(pDX, IDC_LISTC, m_listC);

//}}AFX_DATA_MAP

CListBox* pLB=(CListBox*) GetDlgItem(IDC_LISTC);

pLB->ResetContent();

CString str("");

CString str1("");

CElem<CClient> *buf = LC.beg;

CTime ct1;

CTime ct2;

fstream File("Rooms.txt",ios::in);

CRoom R;

char ch[25];

while (!File.eof()){

File.getline(ch,25,'\n');

str=ch;

if (str!=""){

str1=str.Left(5);

R.SetNumber(str1);

str1=str.Mid(5,5);

R.SetCapasity(str1);

str1=str.Mid(10,5);

R.SetOccupy(str1);

str1=str.Right(5);

R.SetPrice(str1);

LR.AddEl(R);

}

}

File.close();

while (buf !=0){

ct1 = buf->inf.GetDataZ();

ct2 = buf->inf.GetDataV();

str1.Format(_T("%02d/%02d/%2d %02d/%02d/%2d"),ct1.GetDay(),ct1.GetMonth(),ct1.GetYear(),

ct2.GetDay(),ct2.GetMonth(),ct2.GetYear());

str = buf->inf.GetFio()+buf->inf.GetPassport()+buf->inf.GetRoom()+str1 ;

pLB->AddString(str);

buf = buf->next;

}

}

BEGIN_MESSAGE_MAP(DlgClients, CDialog)

//{{AFX_MSG_MAP(DlgClients)

ON_BN_CLICKED(IDC_AddCl, OnAddCl)

ON_BN_CLICKED(IDC_DelCl, OnDelCl)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

// DlgClients message handlers

void DlgClients::OnAddCl()

{

DlgAddClient dlgAC;

CListBox* pLB=(CListBox*) GetDlgItem(IDC_LISTC);

int result = dlgAC.DoModal();

CString str("");

CElem<CRoom> *buf = LR.beg;

if(result==IDOK){

CClient C;

C.SetPassport(dlgAC.m_PassportClient);

C.SetRoom(dlgAC.m_number);

C.SetDataZ(dlgAC.m_Data1);

C.SetDataV(dlgAC.m_Data2);

C.SetFio(dlgAC.m_fio);

LC.AddEl(C);

CString str1("");

int i;

fstream FileInfo("Information.txt",ios::app);

CTime ct1;

CTime ct2;

ct1 = C.GetDataZ();

ct2 = C.GetDataV();

str1.Format(_T("%02d/%02d/%2d %02d/%02d/%2d"),ct1.GetDay(),ct1.GetMonth(),ct1.GetYear(),

ct2.GetDay(),ct2.GetMonth(),ct2.GetYear());

str = C.GetRoom()+str1+' '+C.GetFio()+C.GetPassport()+"\n";

i = str.GetLength();

FileInfo.write(str,i);

FileInfo.close();

fstream File("Rooms.txt",ios::out);

File.clear();

buf = LR.beg;

while (buf->inf.GetNumber() !=dlgAC.m_number)

buf = buf->next;

buf->inf.SetOccupyUp();

buf = LR.beg;

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);

}

LR.DelAllElem();

UpdateData(false);

}

void DlgClients::OnOK()

{

fstream File("Clients.txt",ios::out);

File.clear();

CString str("");

CElem<CClient> *buf = LC.beg;

int i;

CString str1("");

CTime ct1;

CTime ct2;

while(buf != 0){

ct1 = buf->inf.GetDataZ();

ct2 = buf->inf.GetDataV();

str1.Format(_T("%02d/%02d/%2d %02d/%02d/%2d"),ct1.GetDay(),ct1.GetMonth(),ct1.GetYear(),

ct2.GetDay(),ct2.GetMonth(),ct2.GetYear());

str = buf->inf.GetFio()+buf->inf.GetPassport()+buf->inf.GetRoom()+str1+"\n";

i = str.GetLength();

File.write(str,i);

buf = buf->next;

}

File.close();

LC.DelAllElem();

LR.DelAllElem();

CDialog::OnOK();

}

void DlgClients::OnDelCl()

{

CListBox* pLB=(CListBox*) GetDlgItem(IDC_LISTC);

CString str;

CString str1;

CString str2;

if (pLB->GetCurSel() !=-1){

pLB->GetText(pLB->GetCurSel(), str);

str1=str.Mid(15,11);

str2=str.Mid(26,5);

CElem<CClient> *buf = LC.beg;

CTime ct(atoi(str.Mid(37,4)),atoi(str.Mid(34,2)),atoi(str.Mid(31,2)),0,0,0);

CTime ct2(atoi(str.Mid(49,4)),atoi(str.Mid(46,2)),atoi(str.Mid(43,2)),0,0,0);

while(buf != 0){

if ( (buf->inf.GetPassport()==str1) && (buf->inf.GetRoom()==str2)

&& (buf->inf.GetDataZ().GetYear()==ct.GetYear())

&& (buf->inf.GetDataZ().GetDay()==ct.GetDay())

&& (buf->inf.GetDataZ().GetMonth()==ct.GetMonth())

&& (buf->inf.GetDataV().GetYear()==ct2.GetYear())

&& (buf->inf.GetDataV().GetDay()==ct2.GetDay())

&& (buf->inf.GetDataV().GetMonth()==ct2.GetMonth())){

break;

} else

buf = buf->next;

}

CElem<CRoom> *bufR = LR.beg;

while((bufR!= 0) && (bufR->inf.GetNumber()!=buf->inf.GetRoom()))

bufR = bufR->next;

bool b;

b=bufR->inf.SetOccupyDown();

if(!b)

AfxMessageBox("Выселение невозможно!");

if(b){

LC.DelEl(buf);

fstream File("Rooms.txt",ios::out);

File.clear();

CString str("");

int i;

bufR = LR.beg;

while(bufR != 0){

str = bufR->inf.GetNumber()+bufR->inf.GetCapasity()+bufR->inf.GetOccupy()+bufR->inf.GetPrice()+"\n";

i = str.GetLength();

File.write(str,i);

bufR = bufR->next;

}

File.close();

LR.DelAllElem();

UpdateData(false);

}

}

else

AfxMessageBox("Проживающий не выбран!");

}

33