Programa

Psycop disse:
Trustee. não estou de acordo que alguem lhe faça o programa, o que podemos fazer é ajuda-lo a construir um pseudo-codigo, e ajuda-lo a traduzi-lo para uma línguagem, assim aprende algumas coisas que lhe poderão ser-lhe uteis no futuro.

Não percebo porque não. Se fosse uma estudante de informática, aí é que teríamos de resolver-lhe o problema ajudando-a com dicas e pequenos snippets, para ela perceber como se constrói o programa. É por isso que aqui ninguém faz programas para quem só quer ter os trabalhos de casa feitos e está a andar.

Mas, ela não é estudante (desta área), não tem qualquer ligação com a programação, e pretende ter apenas o programa para a ajudar numa tarefa. Achas mesmo que é necessário ela estudar uma linguagem apenas para fazer isto? Se ela realmente estiver com curiosidade em fazer por ela própria, então força, temos todo o gosto em ajudar, posso estar enganado quanto ao interesse dela.
 
Última edição:
Se encontrar alguem que me conseguisse fazer o programa era fixe, pois nao sou programadora, alias a minha area e bem diferente (saude) mas tb nao quero abusar lol

P.S.: pessoal, nao discutam por conta disso. Se puderem fazer (sendo um programa de facil elaboração como li atras) agradeço muito, se não puderem fazer, já agradeço muito a ajuda que me poderão dar com a vossa orientação.
 
Última edição:
Vendo as coisas desse modo não custa nada construir a aplicação, e talves com a ajuda de todos consigamos criar uma aplicação ainda melhor...

Deixo aqui o meu contributo em c++:
#include <iostream>
#include <fstream>
using namespace std;

int main()
{


char Artigo_n [150]; //cria uma variável capaz de conter 150 caracteres, para a escrita
char Exemplares[150];
char boas_vindas[150];


ifstream doc_in("save.txt");
ofstream doc_out("save.txt");

doc_out << "Bem vindo ao Programa" << endl; /*a mensagem de boas-vindas não pode ser personalizada
pelo utilizador, mas só pelo programador*/
cout << "\nInsira o Nº do Artigo" << endl;
cin.getline(Artigo_n, 150);

doc_out <<"Artigo nº" << Artigo_n << endl;

cout << "\nInsira o Nº de Exemplares " << endl;
cin >> Exemplares;

doc_out << "Nº de Exemplares" << Exemplares << endl;

doc_out.close(); //fecha o documento

doc_in.getline(boas_vindas, 150); //cada vez que faz a chamada à função muda-se de linha
doc_in.getline(Artigo_n, 150);
doc_in.getline(Exemplares, 4);

cout << boas_vindas << " " << Artigo_n << ", " << Exemplares << " , " << endl;


system("PAUSE");
return 0;
}

Este foi o codigo que consegui, pois não sou nenhum expert, sou apenas um newbie da programação, sei que tem muitos erros e que ainda faltam algumas funcionalidades, mas talvez o pessoal me possa ajudar a mim e a ti, pois não sei muito bem como melhorar o codigo...

O codigo que postei faz basicamente a insersão de um artigo e dos seus exemplares e no final guarda-os num ficheiro txt...
Malta apontem os erros para eu poder aprender ainda mais, e melhorar...
Cumps
Psycop
 
Boas!
Aqui fica a minha sugestão:

Código:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define QUANTIDADE_ARTIGOS 100

int menuPrincipal(void);
void menuInserirArtigo(int frequencia[]);
void menuVisualizarResultados(int frequencia[]);
void menuEliminarDados(int frequencia[]);
void listarTudo(int frequencia[]);

int main(void)
{
  int opcao;
  int frequencia[QUANTIDADE_ARTIGOS] = {0};
  char descricao[100] = "<DESCRICAO DO PROGRAMA>";
  do {
    system("CLS");
    printf(" Programa %s\n\n", descricao);
    opcao = menuPrincipal();
    switch (opcao) {
      case 1: menuInserirArtigo(frequencia);
              break;
      case 2: menuVisualizarResultados(frequencia);
              break;  
      case 3: menuEliminarDados(frequencia);
              break;      
    } 
  } while (opcao != 0);
  printf(" Seleccionou a opcao de saida.\n ");
  system("PAUSE");    
  return 0;
}

int menuPrincipal(void) {
  int aux, opcao;
  do {
    printf(" 1 - Inserir quantidades\n");
    printf(" 2 - Visualizar resultados\n");
    printf(" 3 - Eliminar dados\n");
    printf(" 0 - Sair\n\n");
    printf(" Escolha uma opcao: ");
    fflush(stdin);
    aux = scanf("%d", &opcao);        
  } while (aux != 1 || opcao < 0 || opcao > 3);
  return opcao;
}

void menuInserirArtigo(int frequencia[]) {
  int artigo, quantidade, aux;
  system("CLS");
  printf(" MENU INSERIR QUANTIDADES\n\n");
  do {
    printf(" Artigo que pretende editar: ");
    fflush(stdin);
    aux = scanf("%d", &artigo);
    if (aux != 1 || artigo < 1 || artigo > QUANTIDADE_ARTIGOS) printf(" Tem que introduzir um NUMERO compreendido entre "
                                                       "[1 - %d]\n", QUANTIDADE_ARTIGOS);
  } while (aux != 1 || artigo < 1 || artigo > QUANTIDADE_ARTIGOS); 
  
  do {
     printf(" Quantidade: "); 
     fflush(stdin);
     aux = scanf("%d", &quantidade);
  } while (aux != 1 || quantidade < 0);
  printf("\n\n Quantidade adicionada.\n Prima qualquer tecla para voltar ao menu principal.\n");
  getch();
  frequencia[artigo-1] += quantidade;   
      
}

void menuVisualizarResultados(int frequencia[]) {
  int i;
  system("CLS");
  printf(" MENU VISUALIZAR RESULTADOS\n\n");
  listarTudo(frequencia);
  printf("\n\n Prima qualquer tecla para voltar ao menu principal.\n");
  getch(); 
}

void menuEliminarDados(int frequencia[]) {
  int aux, i, indice;
  char eliminaTotal, eliminaParcial;
  system("CLS");
  printf(" MENU ELIMINAR DADOS\n\n");
  listarTudo(frequencia);
  printf("\n\n");
  do {
    printf(" Pretende elimar todas as entradas da lista? [S/N] ");
    fflush(stdin);
    aux = scanf("%c", &eliminaTotal);
    eliminaTotal = tolower(eliminaTotal);
  } while (aux != 1 || eliminaTotal != 's' && eliminaTotal != 'n');
  if (eliminaTotal == 's') { 
    for (i = 0; i < QUANTIDADE_ARTIGOS; i++) {
      frequencia[i] = 0;  
    }
    printf("\n\n Todos os artigos foram iniciados a zero.\n");
    printf(" Prima qualquer tecla para voltar ao menu principal.\n");
    getch();
    return;               
  } else {
      do {
      printf(" Pretende eleminar alguma entrada em particular? [S/N] "); 
      fflush(stdin);
      aux = scanf("%c", &eliminaParcial);
      eliminaParcial = tolower(eliminaParcial);   
    } while (aux != 1 || eliminaParcial != 's' && eliminaParcial != 'n'); 
    if (eliminaParcial == 's') {
      do {
        printf(" Numero da entrada a eliminar: ");
        fflush(stdin);
        aux = scanf("%d", &indice);                   
      } while (aux != 1 || indice < 1 || indice > QUANTIDADE_ARTIGOS);
      frequencia[indice-1] = 0;
      printf("\n\n O artigo %d foi iniciado a zero.\n", indice);
      printf(" Prima qualquer tecla para voltar ao menu principal.\n");
      getch();
    } else {
      printf("\n\n Prima qualquer tecla para voltar ao menu principal.\n");
      getch();
      return;     
    }            
  }
}

void listarTudo(int frequencia[]) {
  int i;
  for (i = 1; i <= QUANTIDADE_ARTIGOS; i++) {
    printf(" Quantidade do artigo %d - %d\n", i, frequencia[i-1]);    
  }     
}
Instruções:
1 - Vais ao site:
http://www.bloodshed.net/dev/devcpp.html
e sacas o Dev-C++ 5.0 beta 9.2 (4.9.9.2) (9.0 MB) with Mingw/GCC 3.4.2
2 - Depois de instalares o programa, inicia-lo e vais a file > new > Project
3 - Escolhes a opção 'console application' e mais em baixo à direita seleccionas a opção 'c project'. Clicas no 'OK'.
4 - Apagas todo o código que lá aparecer e copy & paste de todo o código que eu fiz.
5 - F9 e está pronto a usar. Quando pressionares o F9 o editor vai gerar um ficheiro .exe. Sempre que quiseres correr a aplicação só tens que clicar nesse ficheiro.
Se detectares algum bug é só dizer.
Já agora:
Linha 5:
#define QUANTIDADE_ARTIGOS 100
onde está o 100 metes o número total de artigos que vais precisar.

Take care!
 
Estou aberta a todos as possibilidades.
psycop, em que programa vejo o teu codigo?
O do borgir esta perto dakilo que quero, so tenho 1 problema como imprimo a listagem dos que sairam???
Obrigada!
 
Objectos usados:
2 labels
2 textbox
3 butões
1 listview
1 savefiledialog

o código:

Código:
Public Class Form1

    Private WithEvents ToPrint As New Printing.PrintDocument
    Private Numero As Integer = 0

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        If String.IsNullOrEmpty(TextBox1.Text.Trim) = False And String.IsNullOrEmpty(TextBox2.Text.Trim) = False Then
            Dim It As New ListViewItem
            It.Text = TextBox1.Text.Trim
            It.SubItems.Add(TextBox2.Text.Trim)

            ListView1.Items.Add(It)

            TextBox1.Text = String.Empty
            TextBox2.Text = String.Empty
        End If

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Dim Caminho As String = String.Empty
        Dim Texto As String = String.Empty

        SaveFileDialog1.Filter = "Ficheiro de texto|*.txt"
        If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            Caminho = SaveFileDialog1.FileName

            For Each It As ListViewItem In ListView1.Items
                Texto &= "Código - " & It.Text & "; Quantidade - " & It.SubItems(1).Text & vbCrLf
            Next

            My.Computer.FileSystem.WriteAllText(Caminho, Texto, False)
        End If

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim Pd As New PrintDialog
        Pd.Document = ToPrint

        If Pd.ShowDialog = Windows.Forms.DialogResult.OK Then
            ToPrint.Print()
            Numero = 0
        End If
    End Sub

    Private Sub ToPrint_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles ToPrint.PrintPage
        ToPrint.OriginAtMargins = False
        ToPrint.DocumentName = "Lista de jogos vendidos. Impressão em: " & Date.Now.ToString

        Dim G As Graphics = e.Graphics
        G.PageUnit = GraphicsUnit.Millimeter
        G.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic

        Dim F As New Font("Arial", 10)

        Dim TempX As String = 6
        Dim TempY As String = 6

        G.DrawString("Lista de jogos vendidos. Impressão em: " & Date.Now.ToString, F, Brushes.Black, TempX, TempY)

        TempY = 15
        For i As Integer = 0 To ListView1.Items.Count - 1
            If i < Numero Then i = Numero + 1

            Numero = i

            Dim TempString As String = String.Empty
            TempString = "Código - " & ListView1.Items(i).Text & "; "
            TempString &= "Quantidade - " & ListView1.Items(i).SubItems(1).Text

            G.DrawString(TempString, F, Brushes.Black, TempX, TempY)

            TempY += 6

            If TempY >= 273 Then
                e.HasMorePages = True
                Exit Sub
            End If
        Next

    End Sub

End Class

O programa:
- Mostra-te os dados que tens inseridos.
- Cria um ficheiro de texto com os dados.
- Imprime os dados directamente para uma impressora.

De momento o programa não elimina items já inseridos porque este é um exemplo de como se faz e como fica.

Para experimentares, tens que fazer o download do visual basic 2008 express edition. Se quiseres eu envio-te o projecto completo, se for o caso faz-me pm.

Imagem do programa
Imagem do ficheiro de texto gerado pelo programa.
Imagem de uma impressão gerada pelo programa.
 
Bem, só bons exemplos aqui! Já me estava a preparar também para fazer a minha versão do programa, mas penso que qualquer um dos códigos aqui disponibilizados irá dar o resultado pretendido.

Como vês Psycop, não havia necessidade de dar este trabalho todo à Kirshna. Visto que ela queria somente a ferramenta para trabalhar. E isto até te serviu como um bom exercício ;)
 
Bem, só bons exemplos aqui! Já me estava a preparar também para fazer a minha versão do programa, mas penso que qualquer um dos códigos aqui disponibilizados irá dar o resultado pretendido.

Como vês Psycop, não havia necessidade de dar este trabalho todo à Kirshna. Visto que ela queria somente a ferramenta para trabalhar. E isto até te serviu como um bom exercício ;)

Exacto, ficamos ambos a ganhar com isto, apesar da minha aplicação não estar tão completa quanto a do borgir, penso que foi um bom exercicio para a minha aprendizagem...

:P
 
Psycop acho que fizeste um bom trabalho, mas como é c++ e não c acho que devias usar strings e n arrays de caracteres, por isso vou só fazer umas mudanças:

Código:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{


//char Artigo_n [150]; //cria uma variável capaz de conter 150 caracteres, para a escrita
//char Exemplares[150];
//char boas_vindas[150];
string Artigo_n;
string Exemplares;
string boas_vindas;

ifstream doc_in("save.txt");
ofstream doc_out("save.txt");

doc_out << "Bem vindo ao Programa" << endl; /*a mensagem de boas-vindas não pode ser personalizada
pelo utilizador, mas só pelo programador*/
cout << "\nInsira o Nº do Artigo" << endl;
//cin.getline(Artigo_n, 150);
getline(cin, Artigo_n);

doc_out <<"Artigo nº" << Artigo_n << endl;

cout << "\nInsira o Nº de Exemplares " << endl;
cin >> Exemplares;

doc_out << "Nº de Exemplares" << Exemplares << endl;

doc_out.close(); //fecha o documento

//doc_in.getline(boas_vindas, 150); //cada vez que faz a chamada à função muda-se de linha
getline(doc_in, boas_vindas);
//doc_in.getline(Artigo_n, 150);
getline(doc_in, Artigo_n);
//doc_in.getline(Exemplares, 4);
getline(doc_in, Exemplares);

cout << boas_vindas << " " << Artigo_n << ", " << Exemplares << " , " << endl;


system("PAUSE");
return 0;
}

As linhas que alterei deixei as antigas comentadas.
As strings têm várias vantagens face aos arrays de caracteres e uma delas é o facto de n teres de especificar um comprimento ao criar uma string.

Cumps
 
Obrigado pelos conselhos Ronnie_03, pois como ainda sou um iniciante em programação e em c++, ainda não sei bem o que usar, logo uso sempre a mesma solução, sendo a mais correcta ou não, mas tenho de começar a adaptar as soluções de acordo com o problema...

Este problema levou-me a descobrir a implementar pela primeira vez a escrita dos dados num ficheiro txt, logo com este pequeno problema aprendi muitas coisas...

Uma das coisas que estou a descobrir é que não se aprende a programar a ler os tutoriais e livros sobre programação, mas sim a resolver problemas e sucessivamente descobrir as funcionalidades que nos levam a resolver esse problema, deste modo não se torna tão monotono aprender a programar...

Obrigado a todos pelos conselhos que me tem dado...

Cumps
Psycop
 
Back
Topo