Programación General > C/C++
Re: ME JUEGO EL CURSO¡¡¡¡¡¡¡¡¡¡
AFRODITA:
LO SIENTO PERO ESTO ES IMPORTANTE NECESITO UN PROGRAMA CON UN MENU CON PUNTEROS,ESTRUCTURAS Y ARRAYS PARA APROBAR LA ASIGNATURA, ES IMPORTANTE, ALGO SIMILAR A ESTO PERO CON ESTRUCTURAS O PUNTEROS O ESTE MISMO QUITANDO LO DE FICHEROS Y REMPLAZANDOLOS POR PUNTEROS A ESTRUCTURAS:
#include <conio.h>
#include <stdio.h>
#define MAX 1000
#define LV 15
unsigned char menu();
void altas();
void bajas();
void modificaciones();
void consultas();
void pantalla_datos();
void cabeceras();
struct limites desde_hasta();
char pregunte_s_n(char *);
char tipos[5][25]={"contado","normal","preferente","especial","extra"};
int descuentos[5]={0,5,10,20,30};
struct cliente
{
char nombre[15];
char direccion[30];
int tipo;
char control_alta;
};
struct limites
{
int inicio;
int fin;
};
main()
{
unsigned char opcion;
while(toupper(opcion=menu())!='F')
{
switch(opcion)
{
case '1':altas();
break;
case '2':bajas();
break;
case '3':modificaciones();
break;
case '4':consultas();
break;
}
}
}
unsigned char menu()
{
unsigned char op;
clrscr();
gotoxy(10,10);printf("MENU DE MANTENIMIENTO");
gotoxy(10,11);printf("=====================");
gotoxy(14,14);printf("1-->Altas");
gotoxy(14,15);printf("2-->Bajas");
gotoxy(14,16);printf("3-->Modificaciones");
gotoxy(14,17);printf("4-->Consultas");
gotoxy(14,20);printf("F-->Fin");
gotoxy(10,23);printf("Introduzca opcion:");
while(op=toupper(getch()),(op<'1'||op>'4')&&op!='F');
return(op);
}
void altas()
{
FILE *canal;
struct cliente cli;
int num_cli;
while((canal=fopen("CLIENTES","r+b"))==NULL)
{
canal=fopen("CLIENTES","wb");
fclose(canal);
}
do
{
pantalla_datos();
gotoxy(21,7);
do
{
gotoxy(21,7);printf(" ");
gotoxy(21,7);scanf("%d",&num_cli);
}while(num_cli<1||num_cli>MAX);
cli.control_alta='0';
fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET);
fread(&cli,sizeof(struct cliente),1,canal);
if(cli.control_alta=='1')
{
gotoxy(10,20);printf("Cliente ya existente");
continue;
}
gotoxy(21,9);scanf("%s",cli.nombre);
gotoxy(21,11);scanf("%s",cli.direccion);
do
{
gotoxy(21,13);printf(" ");
gotoxy(21,13);scanf("%d",&cli.tipo);
}while(cli.tipo<1||cli.tipo>5);
gotoxy(25,13);printf("Cliente %s",tipos[cli.tipo-1]);
gotoxy(65,13);printf("%d",descuentos[cli.tipo-1]);
if(pregunte_s_n("Correcto?(S/N):")=='S')
{
cli.control_alta='1';
fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET);
fwrite(&cli,sizeof(struct cliente),1,canal);
}
}while(pregunte_s_n("M s altas?(S/N):")=='S');
fclose(canal);
}
void bajas()
{
FILE *canal;
struct cliente cli;
int num_cli;
while((canal=fopen("CLIENTES","r+b"))==NULL)
{
canal=fopen("CLIENTES","wb");
fclose(canal);
}
do
{
pantalla_datos();
gotoxy(21,7);
do
{
gotoxy(21,7);printf(" ");
gotoxy(21,7);scanf("%d",&num_cli);
}while(num_cli<1||num_cli>MAX);
cli.control_alta='0';
fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET);
fread(&cli,sizeof(struct cliente),1,canal);
if(cli.control_alta!='1')
{
gotoxy(10,20);printf("Cliente no existente");
continue;
}
gotoxy(21,9);printf("%s",cli.nombre);
gotoxy(21,11);printf("%s",cli.direccion);
gotoxy(21,13);printf("%d",cli.tipo);
gotoxy(25,13);printf("Cliente %s",tipos[cli.tipo-1]);
gotoxy(65,13);printf("%d",descuentos[cli.tipo-1]);
if(pregunte_s_n("Confirma la baja?(S/N):")=='S')
{
cli.control_alta='0';
fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET);
fwrite(&cli,sizeof(struct cliente),1,canal);
}
}while(pregunte_s_n("M s bajas?(S/N):")=='S');
fclose(canal);
}
void modificaciones()
{
FILE *canal;
struct cliente cli;
int num_cli;
while((canal=fopen("CLIENTES","r+b"))==NULL)
{
canal=fopen("CLIENTES","wb");
fclose(canal);
}
do
{
pantalla_datos();
gotoxy(21,7);
do
{
gotoxy(21,7);printf(" ");
gotoxy(21,7);scanf("%d",&num_cli);
}while(num_cli<1||num_cli>MAX);
cli.control_alta='0';
fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET);
fread(&cli,sizeof(struct cliente),1,canal);
if(cli.control_alta!='1')
{
gotoxy(10,20);printf("Cliente no existente");
continue;
}
gotoxy(21,9);printf("%s",cli.nombre);
gotoxy(21,11);printf("%s",cli.direccion);
gotoxy(21,13);printf("%d",cli.tipo);
gotoxy(25,13);printf("Cliente %d",tipos[cli.tipo-1]);
gotoxy(65,13);printf("%d",descuentos[cli.tipo-1]);
if(pregunte_s_n("Modificar nombre?(S/N):")=='S')
{
gotoxy(21,9);printf(" ");
gotoxy(21,9);scanf("%s",cli.nombre);
}
if(pregunte_s_n("Modificar direccion?(S/N):")=='S')
{
gotoxy(21,11);printf(" ");
gotoxy(21,11);scanf("%s",cli.direccion);
}
if(pregunte_s_n("Modificar tipo?(S/N):")=='S')
{
gotoxy(21,13);printf(" ");
gotoxy(25,13);printf(" ");
gotoxy(65,13);printf(" ");
do
{
gotoxy(21,13);printf(" ");
gotoxy(21,13);scanf("%d",&cli.tipo);
}while(cli.tipo<1||cli.tipo>5);
gotoxy(25,13);printf("Cliente %s",tipos[cli.tipo-1]);
gotoxy(65,13);printf("%d",descuentos[cli.tipo-1]);
}
if(pregunte_s_n("Confirma la modificacion?(S/N):")=='S')
{
fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET);
fwrite(&cli,sizeof(struct cliente),1,canal);
}
}while(pregunte_s_n("M s modificaciones?(S/N):")=='S');
fclose(canal);
}
void consultas()
{
struct limites limite;
FILE *canal;
struct cliente cli;
int num_cli,i;
while((canal=fopen("CLIENTES","r+b"))==NULL)
{
canal=fopen("CLIENTES","wb");
fclose(canal);
}
limite=desde_hasta();
num_cli=limite.inicio;
while(num_cli<=limite.fin)
{
i=0;
cabeceras();
while(i<LV&&num_cli<=limite.fin)
{
cli.control_alta='0';
fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET);
fread(&cli,sizeof(struct cliente),1,canal);
if(cli.control_alta=='1')
{
printf("%3d%-20s%-20s Cliente %-15s%2dn",num_cli,cli.nombre,
cli.direccion,tipos[cli.tipo-1],descuentos[cli.tipo-1]);
i++;
}
num_cli++;
}
if(pregunte_s_n("¨Continuar?(S/N):")=='N') break;
}
fclose(canal);
}
void pantalla_datos()
{
clrscr();
gotoxy(35,2);printf("DATOS DE CLIENTES");
gotoxy(35,3);printf("=================");
gotoxy(5,7);printf("N§ DE CLIENTE:");
gotoxy(5,9);printf(" NOMBRE: ");
gotoxy(5,11);printf(" DIRECCION: ");
gotoxy(5,13);printf(" TIPO: ");
gotoxy(50,13);printf("DESCUENTO(%):");
gotoxy(3,16);printf("TIPOS DE CLIENTES:n");
printf("1->contado,2->normal,3->preferente,4->especial,5->extra");
}
char pregunte_s_n(char *cadena)
{
char respuesta;
gotoxy(10,22);printf("%s",cadena);
while(respuesta=toupper(getch()),respuesta!='S'&&respuesta!='N');
gotoxy(10,22);printf("%50s","");
return(respuesta);
}
struct limites desde_hasta()
{
struct limites l;
clrscr();
gotoxy(10,10);printf("Visualizar desde:");scanf("%d",&l.inicio);
if(l.inicio==0) l.inicio=1;
gotoxy(10,12);printf("Visualizar hasta: ");scanf("%d",&l.fin);
if(l.fin==0||l.inicio>l.fin||l.fin>MAX) l.fin=MAX;
clrscr();
return l;
}
void cabeceras()
{
clrscr();
printf("%-20s %-28s %-10s %12sn","NOMBRE","DIRECCION","TIPO","DESCUENTO");
printf("=======================================================================n");
}
:P:P:P:P:(:(:(
olla:
De verdad piensas, que vas a aprobar, aunque alguién te conteste, y te deje un código. No será lo que te piden y no te vas a enterar de nada. Cúrratelo un poco e intenta hacerlo tu solo, si no sabes, aprende y otro año será. Piensa que hay gente que ha tardado varios años y convocatorias para aprobar una asigantura de programación, Y desde luego cuando la aprobó no fue copiando, es muy dificil comprender y explicar un código que no es tuyo.
AFRODITA:
Siento contestarte olla que no lo llevo tan mal pero lo que pasa es que la programación no es mi fuerte aunque no lo lleve muy bien,pero es que lo de los punteros es horroroso, asi que si porfavor sabes ayudame anda¡¡¡¡
tenesor:
Bueno, a pesar de la polemica creada en el otro tema debo darle la razón a olla (esta vez va en serio:)). Si es algo con lo que te juegues una nota deberias hacerlo tu sol@. Y bueno, que no se te de bien no tiene nada que ver con que te lo curres, si no lo haces, como piensas comprender-aprenderlo?
olla: ves como aunque alguien responda no tienes porque quedarte callado? te quedas satisfecho?
Saludos,
Tenesor
AFRODITA:
Me lo he currado y mucho pero me salen como 16 errores de asignacion de memoria, entonces ya he desistido y lo he buscado en 100000 pags de internet pero na de na, y solo pido un poco de ayuda para modificar este programa, solo cambiar los ficheros por puntero no pido tanto.
Navegación
[#] Página Siguiente
Ir a la versión completa