Programa de gestao de stock em C

M

mg_anep

Guest
Boa tarde.

Bem precisava de uma ajuda para fazer este programa, segunda feira começam as aulas e nao sei bem como fazer isto.

Aqui vai:


Problema
É necessário implementar um programa para gerir o stock de produtos de um armazém.
Cada produto é identificado por um código ou pelo nome. Cada produto tem uma quantidade em
stock, um preço, e uma quantidade mínima em stock. O código do produto é único e é atribuído
pelo próprio sistema. Quando a quantidade em stock de um determinado produto desce abaixo da
quantidade mínima de stock, o sistema envia um aviso para o ecrã, para alertar da necessidade de
efectuar nova encomenda.
O armazém tem lugar para armazenar um máximo de 150 tipos de produto diferentes.


Programa
O programa a desenvolver deverá dar possibilidade de:
• Introduzir novo produto no sistema, atribuindo-lhe um código
• Dar entrada de uma encomenda de um determinado produto
• Dar saída de uma determinada quantidade de um produto
• Listar todos os produtos em stock (código, nome, quantidade em stock, etc.)
• Listar os produtos para os quais é necessário emitir uma encomenda
• Listar a informação relativa a um determinado produto
• Alterar o preço de um produto
• Dar baixa de um produto.

Basicamente é este programao para fazer que eu nao sei. :004:

Se alguem puder ajudar de como começar pelo menos, um esboço, agradecia.
 
Começa por identificar entidades no enunciado. Podes assumir que existem 2.

- Produto
- Armanzem

Terás implementar as estruturas Produto e Armanzem

Agora identifica as caracteristicas de cada uma delas:

Produto:
-código
-nome
-quantidadeEmStock
-quantidadeMinimaEmStock

Armanzem
-numeroMaximoDeTipoDeProdutos
-Produtos armazenados (estrutura de dados para os armazenar)

Já é um ponto de partida... o resto é algoritmia.

Basta iterares a estrutura de dados que contem os produtos (por exemplo um array) com um ciclo e consultas os campos da struct (instância de Produto) presente em cada posição do array. É só if's e for's. Depois podes fazer um menu.

Espero ter ajudado... fica bem.
 
Bem estou aqui com um problema.

Queria uma funcao que se introduzir S(Sim) ele continua para introduzir os produtos, e quando introduzo N(Nao) ele para e volta ao menu.

Eu fiz assim como mostro em baixo, só que se introduzo N ele continua para introduzir outro produto, ou seja é igual se introduzir S ou N, ele continua sempre.

void outro_prod()
{
char more;
while((more != 's') && (more != 'S') && (more != 'n') && (more != 'N'))
{
fflush(stdin);
printf("Para introduzir novo produto prima 'S' caso contrario prima 'N'\n");
scanf("%c",&more);
printf("\n");
if((more == 'n') && (more == 'N'))
{
break;
}
else if ((more == 's') && (more == 'S'))
{
continue;
}
}

}


Se alguem puder ajudar agradeço.
 
Bem estou aqui com um problema.

Queria uma funcao que se introduzir S(Sim) ele continua para introduzir os produtos, e quando introduzo N(Nao) ele para e volta ao menu.

Eu fiz assim como mostro em baixo, só que se introduzo N ele continua para introduzir outro produto, ou seja é igual se introduzir S ou N, ele continua sempre.

Se alguem puder ajudar agradeço.

Deverá ser if((more == 'n') || (more == 'N')), e no sim a mesma coisa.
Se puseres && significa que só faz break quando o more for n e N ao mesmo tempo, coisa que é impossível, com o || faz break quer ponhas n ou N.

Se tens o tens o if((more == 'n') && (more == 'N')) break; não precisas de ter a condição no while.
 
Deverá ser if((more == 'n') || (more == 'N')), e no sim a mesma coisa.
Se puseres && significa que só faz break quando o more for n e N ao mesmo tempo, coisa que é impossível, com o || faz break quer ponhas n ou N.

Se tens o tens o if((more == 'n') && (more == 'N')) break; não precisas de ter a condição no while.

Obrigado por estares a ajudar confesso que nao percebo muito de programaçao:lol:, mas continua com o mesmo problema ou seja mudei o && para || no if e ele continua igual, mesmo que carregue no N ele diz para introduzir outro produto.>( Terei de mudar mais alguma coisa além do && para || nos if's??

Se puderes ajudar obrigado.
 
Isot deve'ra fazer o que precisas


Código:
do
   {
      fflush(stdin);
      printf("Para introduzir novo produto prima 'S' caso contrario prima 'N'\n");
      scanf("%c",&more);
      printf("\n");
      if((more == 'n') || (more == 'N'))
         break;
   } while ((more == 's') || (more == 'S'));

mas pelo que parece nao vale a pena testares o 'n' porque só quando for 's' é que implica registar um novo produto.

Agora se quiseres aceitar só respostas 's' ou 'n', tens de por um outro ciclo dentro do while.
 
Isot deve'ra fazer o que precisas


Código:
do
   {
      fflush(stdin);
      printf("Para introduzir novo produto prima 'S' caso contrario prima 'N'\n");
      scanf("%c",&more);
      printf("\n");
      if((more == 'n') || (more == 'N'))
         break;
   } while ((more == 's') || (more == 'S'));
mas pelo que parece nao vale a pena testares o 'n' porque só quando for 's' é que implica registar um novo produto.

Agora se quiseres aceitar só respostas 's' ou 'n', tens de por um outro ciclo dentro do while.


Como tu dizes aragtey, o programa quando introduzo 'N' ele continua para introduzir novo produto, e se puser o 'S' ele repete sempre o printf "(Para introduzir novo produto prima 'S' caso contrario prima 'N')", ate eu introduzir o 'N' que o faz continuar.
Já nao sei mais como tentar.Não tou a ver onde falha, se quiserem posso mandar o algoritmo.

Obrigado
 
printf("Para introduzir novo produto prima 'S' caso contrario prima 'N'\n");
Já agora, um pormenor: simplifica as mensagens com o utilizador, evita 'entrares em diálogo' com o utilizador quando lhe fazes uma pergunta, sê sucinto e objectivo nas questões que lhe coloques.

Por exemplo, em vez de:
"Para introduzir novo produto prima 'S' caso contrario prima 'N' "
poderia ser:
"Adicionar produto? s/n "

Se quisesses assinalar uma opção 'default', poderia ser:
"Adicionar produto? S/n "
ou
"Adicionar produto? s/n "

Repara: as opções Sim/Não só fazem sentido quando fazes uma pergunta ao utilizador, não quando fazes uma afirmação.
Sendo uma afirmação, seria qualquer coisa como:
"Para adicionar novo produto prima 'N', para sair prima 'S'"

Quando tratares as respostas, e de acordo com a lógica da tua aplicação, provavelmente não vais verificar se o utilizador respondeu 'n'. Bastaria verificares se respondeu 's' ou 'S'. Qualquer outra resposta deveria ser considerada como 'n'ão.

Por último, se fosse comigo, aceitava como 's'im as seguintes respostas:
s, S, sim, si, SIM, Sim, SiM, SIm, siM
Qualquer outra resposta seria 'n'ão :-)
 
Faltava a opção do 'n' ou 'N' no while (está a repetir o printf, agora arranja à tua maneira):

Código:
void outro_prod() {
     char more;
     do {
         fflush(stdin);
         printf("Para introduzir novo produto prima 'S' caso contrario prima 'N'\n");
         scanf("%c",&more);
         if (more=='n' || more=='N')
            break;
         } [COLOR=Red]while (more!='s' || more!='S' || more!='n' || more!='N');[/COLOR]
         }
 
Código:
void outro_prod() {
     char more;
     while (1) {
         fflush(stdin);
         printf("Para introduzir novo produto prima 'S' caso contrario prima 'N'\n");
         scanf("%c",&more);
         if (more=='n' || more=='N')
            break;
         }
         }
Isto faz exactamente a mesma coisa.
 
Todas as solucoes estão correctas se continua a fazer a mesma coisa o problema é de fora, ou seja é de como chamas a rotina void outro_prod().
 
Obrigado a todos.

Ainda nao consegui por isto a funcionar bem, mas já percebi e ja sei que o erro nao está ai.

cump.
 
Boa Tarde

Tb estou a faxer o mxm trabalho :( e n tenho muito conhecimento sobre a linguagem c visto n ter tempo para me dedicar apenas ao curso. N consigo faxer a 3ª,4ª,5ª,6ª e 8ª opcao. So sei mxm o basico desta linguagem e tenho imensa dificuldades nestas funcoes.
Será k me podem ajudar... please :confused:
 
eu ja nao sou professor, mas ainda consigo dar umas ajudas.

se tiveres duvidas especificas é so perguntar, agora todo um programa para ver a resolução dificilmente ajuda para quem quer aprender se for esse o teu caso.
 
Back
Topo