C-Hotel-sugestões

MarcosFonseca

Power Member
Tenho este "pequenito" trabalho para fazer para o ultimo modulo da minha desciplina...queria pedir que dessem algumas sugestoes.por favor.

Código:
Tendo por base o funcionamento da recepção de um hotel, pretende-se criar uma aplicação em Linguagem C, que faça a gestão dessa mesma recepção. 
Para tal, comece por guardar os dados dos clientes num ficheiro com o nome "clientes.bin". 
Deve também, e com o recurso a ficheiros, gerir todas as entradas e saídas efectuadas na recepção, ou seja, os clientes que estão alojados no hotel, estão em memória principal, mas também devem estar guardados em memória secundária, num ficheiro com o nome "ocupacao.bin". Isto para garantir que no caso de haver uma falha de energia, por exemplo, os dados não sejam perdidos. 
Na aplicação inclua por exemplo os seguintes opções: 
 
1. Check in 
 
2. Check out 
 
3. Verificar ausência de cliente. 
 
4. Cliente novo 
 
5. Sair da aplicação 
Para fazer o check in, deve primeiro verificar se o cliente já existe no ficheiro de clientes. 
O check out, permite mostrar quanto tempo esteve no hotel e qual o valor a pagar. O valor a pagar deve ter em conta os dias em que esteve no hotel e se consumiu mais alguma coisa. 
Verificar a ausência do hóspede, deve permitir de forma rápida saber se ele se encontra no seu quarto ou não. 
Cliente novo, permite registar um novo cliente. 
O número de quarto atribuído, deve ser o primeiro livre. Considere que o hotel tem 150 quartos. 
Estas são apenas algumas das opções consideradas essenciais para a entrega do trabalho. 
Caso apresente opções que se considerem importante e significativas, elas serão tidas em conta. 
Para guardar os dados dos clientes, considere uma estrutura parecida com a seguinte: nome; número BI, data e local de emissão; morada completa, código postal, localidade. 
Para fazer o check in: nome, BI, quarto, nº de pessoas, data de entrada, data de saída, consumo, ausente. Os dados desta estrutura, devem estar guardados num ficheiro, como já anteriormente foi mencionado. 
Todas as opões que achar importante e neste enunciado estiverem omissas, devem ser esclarecidas junto do professor, ou então tomar uma decisão própria, desde que devidamente justificada.
Obrigado
Um abraço...
 
Última edição pelo moderador:
lool, mais um a registar-se a pensar que lhe fazem o trabalho de casa :-D

Se fizeres perguntas concretas talvez consigas alguma ajuda :rolleyes:
 
eu nao quero que me faças o trabalho de casa...tambem por que nao preciso, ddeves-te achar muito esperto...
eu gosto de ajudar, e gostava que as outras pessoas gostassem tambem...eu faço aos outros o que queria que fizessem...so quero sujestoes, nao quero que me façam o trabalho todo, porque tambem nao aceitaria porque eu gosto de programar nao ter a papinha toda feita.
fica bem
 
Isso parece-me ser facil. As ultimas 3 linhas indicam-te ja os dados k a struct Cliente deve ter, depois é so utilizar uma estrutura de dados como uma arvore binaria ou lista (a primeira é mais eficiente) implementando as funçoes:
int check_in(char* nome); ve se o cliente esta na arvore se nao esta faz add_client
void check_out(int nr);vai buscar o cliente, faz as contas tendo em conta o tempo currente e faz printf do valor e dias k teve la
void add_client (char* Nome , ... , etc); acresenta um cliente a arvore
Client get_client(int nr); retorna o cliente com esse nr da arvore
void put_ausente(int nr); chama get_client e poem o campo ausente a TRUE (1)
void put_naoausente(int nr); o inverso da de cima


se usares arvores tem em conta k so podes construi-las tendo em conta um campo pelo qual vai estar ordenada , neste caso podes usar o nr de cliente ou o seu nome.
podes ter ainda duas listas uma com quartos vazios e outra com quartos ocupados, quanto um quarto vazio é ocupado é retirado da lista de quartos vazios e é colocado na de quartos vazios, é assim mais eficiente a procura de quartos vazios quando um cliente chega.


Boa sorte e começa ja a fazer isso
 
Última edição:
obrigado pela ajuda...so tenho uma duvida, como contar os dias que um cliente la esteve?
tenho que fazer varias contas nao é? ou ha alguma funçao que faça isso? eu pelo menos nao conheço...
obrigado
 
chama a funcão:
#include time.h

time_t a;
a=time();

(time _t é um long int para todos os casos, a função devolve o nr de segundos passado desde 00:00:00 janeiro de 1970)

guarda esse nr kd um cliente faz o checkin, quando ele faz checkout fazes b=time() e depois difftime(b,a) devolve-t um double k é o nr de segundos entre as duas datas.

a biblia : http://www.gnu.org/software/libc/manual/
 
Última edição:
podias dar me um exemplo da funçao time num programa...é que nao consigo implemetala bem no meu programa, da sempre erros.
no menu do meu programa acrescentei um opçao que era apagar os ficheiros cliente e ocupaçao e utilizei a finçao remove. nesta funçao é so meter remove(nome_do_ficheiro.extencao_do_ficheiro)?
cumprimentos
 
Back
Topo