ADA - manejo de archivos en cpp

 
Vista:
sin imagen de perfil

manejo de archivos en cpp

Publicado por Rodrigo (1 intervención) el 07/07/2021 22:39:11
Buenas tardes , quería pedir ayuda a alguna persona que pueda solucionar mi problema

La actividad es realizar un sistema que permita guardar datos en archivo txt

Clientes-(cédula,edad,teléfono,nombre,apellido)
Producto-(nombre,código,cantidad)

Este mismo trabajo tienes validaciones

Las cuales son , no puede existir dos cédulas iguales , no pueden existir dos códigos de producto iguales y solo se permiten registrar clientes mayores de edad

No se programar mucho , hice algo del programa , tiene menú y registra tanto cliente como producto y cumple con la validación de no registrar mayores de edad

El problema es que no me permite registrar mas de un cliente o mas de un producto , y me falta hacer las otras dos validaciones, y no las puedo hacer hasta que arregle que el programa me permita registrar a mas clientes o productos

Necesito ayuda para poder terminar mi programa , si alguien me puede ayudar a terminar mi programa se lo agradecería mucho.

Este es mi código

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#include <fstream>
#include <stdio.h>
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    int opcion;
    bool repetir = true;
 
   FILE *fichero;
   int i;
 
   fichero = fopen("Registro.txt", "wt");
   if (fichero == NULL)
   printf("No se pudo abrir el archivo.\n");
 
    do {
        system("cls");
 
 
        cout << "\n\nMenu de Registro" << endl;
        cout << "1.Registrar Cliente" << endl;
        cout << "2.Registrar Producto" << endl;
        cout << "0.Salir" << endl;
 
        cout << "\nIngrese una opcion: ";
        cin >> opcion;
 
        switch (opcion) {
            case 1:
 
	    struct datos
        {
       char Nombre[21];
       int  Edad;
       char Ape[10];
       char Telf[20];
       char Cedu[20];
 
       char producto[21];
       char codi[21];
       char cant[21];
 
 
	   }persona;
 
 
 
    {
 
 
	  int Edad;
 
	  do{
 
      puts("Edad:");
      scanf("%d", &persona.Edad);
	  getchar();
 
 
	  }while(persona.Edad<18);
 
      fprintf(fichero, "%d ", persona.Edad);
 
 
 
 
      puts("\nNombre:");
      gets(persona.Nombre);
      fprintf(fichero, "%s ", persona.Nombre);
	  puts("Apellido: ");
      gets(persona.Ape);
      fprintf(fichero, "%s ", persona.Ape);
      puts("Telefono: ");
      gets(persona.Telf);
      fprintf(fichero, "%s ", persona.Telf);
	  puts("Cedula: ");
      gets(persona.Cedu);
      fprintf(fichero, "%s ", persona.Cedu);
	  fclose(fichero);
 
 
 
   }
   fichero = fopen("Registro.txt", "rt");
   if (fichero == NULL)
      printf("No se pudo abrir el archivo.\n");
   else
   {
       while (!feof(fichero))
 
       {
         fgets(persona.Nombre, 21, fichero);
         puts(persona.Nombre);
         fscanf(fichero, "%d", &persona.Edad);
         getchar();
         printf("%d", persona.Edad);
         fgets(persona.Ape, 10, fichero);
         puts(persona.Ape);
         fgets(persona.Telf, 20, fichero);
         puts(persona.Telf);
         fgets(persona.Telf, 20, fichero);
         puts(persona.Telf);
       }
   fclose(fichero);
   }
 
                system("pause>nul");
                break;
 
            case 2:
 
 
 
   {
 
 
       puts("\nRegistrar Producto");
       gets(persona.producto);
       fprintf(fichero, "%s ", persona.producto);
 
	   puts("\nNombre del Producto: ");
	   gets(persona.producto);
       fprintf(fichero, "%s ", persona.producto);
       puts("\nRegistrar Codigo de Producto: ");
       gets(persona.codi);
       fprintf(fichero, "%s ", persona.codi);
       puts("\nRegistrar Cantidad de Producto: ");
       gets(persona.cant);
       fprintf(fichero, "%s ", persona.cant);
 
    fclose(fichero);
   }
   fichero = fopen("Registro.txt", "rt");
   if (fichero == NULL)
      printf("No se pudo abrir el archivo.\n");
   else
   {
       while (!feof(fichero))
 
       {
 
	    fgets(persona.producto, 21, fichero);
        puts(persona.producto);
        fgets(persona.codi, 21, fichero);
        puts(persona.codi);
        fgets(persona.cant, 21, fichero);
        puts(persona.cant);
 
	   }
   fclose(fichero);
   }
 
                system("pause>nul");
                break;
 
            case 0:
            	repetir = false;
            	break;
        }
    } while (repetir);
 
    return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Programa de registro con validaciones y múltiples registros

Publicado por Alejandro (155 intervenciones) el 03/07/2023 18:33:57
Aquí tienes una versión modificada de tu programa que permite registrar múltiples clientes y productos, y también incluye las validaciones solicitadas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
with Ada.Text_IO;
with Ada.Integer_Text_IO;
 
procedure Registro is
 
   -- Tipo de registro para clientes
   type Cliente is record
      Nombre  : String(1 .. 21);
      Edad    : Integer;
      Apellido: String(1 .. 10);
      Telefono: String(1 .. 20);
      Cedula  : String(1 .. 20);
   end record;
 
   -- Tipo de registro para productos
   type Producto is record
      Nombre  : String(1 .. 21);
      Codigo  : String(1 .. 21);
      Cantidad: String(1 .. 21);
   end record;
 
   -- Arreglos para almacenar los registros
   type Registro_Clientes is array(Positive range <>) of Cliente;
   type Registro_Productos is array(Positive range <>) of Producto;
 
   -- Variables para el registro
   Clientes : Registro_Clientes(1 .. 100);
   Productos: Registro_Productos(1 .. 100);
   Indice_Clientes, Indice_Productos: Integer := 1;
 
   -- Función para verificar si una cédula ya existe en el registro de clientes
   function Existe_Cedula(Cedula: String) return Boolean is
   begin
      for I in 1 .. Indice_Clientes - 1 loop
         if Clientes(I).Cedula = Cedula then
            return True;
         end if;
      end loop;
      return False;
   end Existe_Cedula;
 
   -- Función para verificar si un código de producto ya existe en el registro de productos
   function Existe_Codigo(Codigo: String) return Boolean is
   begin
      for I in 1 .. Indice_Productos - 1 loop
         if Productos(I).Codigo = Codigo then
            return True;
         end if;
      end loop;
      return False;
   end Existe_Codigo;
 
begin
   loop
      Ada.Text_IO.Put_Line("\n\nMenu de Registro");
      Ada.Text_IO.Put_Line("1.Registrar Cliente");
      Ada.Text_IO.Put_Line("2.Registrar Producto");
      Ada.Text_IO.Put_Line("0.Salir");
 
      Ada.Text_IO.Put("\nIngrese una opcion: ");
      Ada.Integer_Text_IO.Get(Indice_Clientes);
 
      case Indice_Clientes is
         when 1 =>
            declare
               Cliente_Nuevo: Cliente;
            begin
               loop
                  Ada.Text_IO.Put("Edad: ");
                  Ada.Integer_Text_IO.Get(Cliente_Nuevo.Edad);
 
                  exit when Cliente_Nuevo.Edad >= 18;
                  Ada.Text_IO.Put_Line("Los clientes deben ser mayores de edad.");
               end loop;
 
               Ada.Text_IO.Put("Nombre: ");
               Ada.Text_IO.Get_Line(Cliente_Nuevo.Nombre);
 
               Ada.Text_IO.Put("Apellido: ");
               Ada.Text_IO.Get_Line(Cliente_Nuevo.Apellido);
 
               Ada.Text_IO.Put("Telefono: ");
               Ada.Text_IO.Get_Line(Cliente_Nuevo.Telefono);
 
               Ada.Text_IO.Put("Cedula: ");
               Ada.Text_IO.Get_Line(Cliente_Nuevo.Cedula);
 
               -- Validación de cédula única
               if Existe_Cedula(Cliente_Nuevo.Cedula) then
                  Ada.Text_IO.Put_Line("La cedula ingresada ya existe en el registro.");
               else
                  Clientes(Indice_Clientes) := Cliente_Nuevo;
                  Indice_Clientes :=
 
 Indice_Clientes + 1;
                  Ada.Text_IO.Put_Line("Cliente registrado exitosamente.");
               end if;
            end;
 
         when 2 =>
            declare
               Producto_Nuevo: Producto;
            begin
               Ada.Text_IO.Put("Nombre del Producto: ");
               Ada.Text_IO.Get_Line(Producto_Nuevo.Nombre);
 
               Ada.Text_IO.Put("Codigo del Producto: ");
               Ada.Text_IO.Get_Line(Producto_Nuevo.Codigo);
 
               -- Validación de código único
               if Existe_Codigo(Producto_Nuevo.Codigo) then
                  Ada.Text_IO.Put_Line("El codigo de producto ingresado ya existe en el registro.");
               else
                  Ada.Text_IO.Put("Cantidad del Producto: ");
                  Ada.Text_IO.Get_Line(Producto_Nuevo.Cantidad);
 
                  Productos(Indice_Productos) := Producto_Nuevo;
                  Indice_Productos := Indice_Productos + 1;
                  Ada.Text_IO.Put_Line("Producto registrado exitosamente.");
               end if;
            end;
 
         when 0 =>
            exit;
 
         when others =>
            Ada.Text_IO.Put_Line("Opción inválida. Por favor, ingrese una opción válida.");
      end case;
   end loop;
end Registro;

En esta versión del programa se utiliza el lenguaje de programación Ada, que es adecuado para desarrollo seguro y confiable. Se definen tipos de registros para los clientes y productos y se utilizan arreglos para almacenar los registros. También se agregan funciones para verificar la existencia de cédulas y códigos de producto duplicados.

Espero que esta solución te sea útil para completar tu programa. Recuerda que el código proporcionado es solo una guía y puede requerir adaptaciones adicionales según tus necesidades específicas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar