Sei sulla pagina 1di 14

INICIO DEL PROGRAMA:

DECLARACION DE VARIABLES
En este espacio, se incluye la declaracin y especificacin de todas
las variables, punteros, funciones, etc., a utilizar a lo largo del
programa.

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#include<dos.h>
struct gasolinera
{
float gal;
}datos;
FILE *arch1,*arch2,*resp;
float x;
void marcos(void);
void menu(void);
void mostrar(void);
void galones(void);
void nuevo(void);
void dolares(void);
void ingreso(void);
void factura(float x,char *nom,char *apellido);
void main()
{
char opc;

ESTRUCTURA DE SELECCIN:
DO-WHILE, SWITCH
La estructura Do-While permite realizar una tarea especifica,
mientras la opcin sea distinta de 5, y la estructura Switch permite
escoger entre varias opciones la funcin que deseamos utilizar.
do
{
clrscr();
menu();
nuevo();
opc=getch();
switch(opc)
{
case '1':

clrscr();
galones();
break;

case '2':

clrscr();
dolares();
break;

case '3':

clrscr();
mostrar();
break;

case '4':

clrscr();
ingreso();
break;

}
fclose(arch1);
}while(opc!='5');
exit(0);
}

FUNCION : MENU
Imprime las opciones o las funciones disponibles en la gasolinera
void menu()
{ marcos();
gotoxy(34,4);
cprintf("GASOLINERA ");
gotoxy(28,6);
cprintf("1. PEDIDO EN GALONES\n");
gotoxy(28,7);
cprintf("2. PEDIDO EN DOLARES\n");
gotoxy(28,8);
cprintf("3. MOSTRAR EXISTENCIA\n");
gotoxy(28,9);
cprintf("4. INGRESO DE GALONES\n");
gotoxy(28,10);
cprintf("5. SALIR");
}

FUNCION: NUEVO
Respaldo del programa
void nuevo(void)
{
if(((arch1=fopen("gasol.txt","ab"))==NULL))
{
perror("ERROR NO SE CARGO EL ARCHIVO");
exit(0);
}
if(((resp=fopen("respaldo.txt","ab"))==NULL))
{
perror("ERROR NO SE CARGO EL ARCHIVO");
exit(0);
}
else

{
fwrite(&datos,sizeof(struct gasolinera),1,arch1);
fwrite(&datos,sizeof(struct gasolinera),1,resp);
}
fclose(arch1);
fclose(resp);
}

FUNCION: GALONES
Pedido de galones, ingreso de datos del cliente
void galones(void)
{ int g;
char *n,*a;
marcos();
if((arch1= fopen("gasol.txt","r"))==NULL)
{
perror("ERROR NO SE CARGO EL ARCHIVO");
exit(0);
}
if((arch2= fopen("gasol2.txt","w"))==NULL)
{
perror("ERROR NO SE CARGO EL ARCHIVO");
exit(0);
}
if((resp= fopen("respaldo.txt","w"))==NULL)
{
perror("ERROR NO SE CARGO EL ARCHIVO");
exit(0);
}
if((fread(&datos,sizeof(struct gasolinera),1,arch1))!=NULL)
{
gotoxy(29,8);

cprintf("CUANTOS GALONES DESEA: ");


scanf("%f",&x);
if (x>=datos.gal)
{gotoxy(20,8);
cprintf("NO SE PUEDE ENTREGAR EL VALOR
DESEADO");
getch();
exit(0);//main();
}
else
{gotoxy(29,9);
cprintf("Nombre:");
scanf("%s",n);
gotoxy(29,10);
cprintf("Apellido:");
scanf("%s",a);
datos.gal= datos.gal-x;
fwrite(&datos,sizeof(struct gasolinera),1,arch2);
fwrite(&datos,sizeof(struct gasolinera),1,resp);}
}
else
{
fwrite(&datos,sizeof(struct gasolinera),1,arch2);
fwrite(&datos,sizeof(struct gasolinera),1,resp);
}
fread(&datos,sizeof(struct gasolinera),1,arch1);
fclose(arch1);
fclose(arch2);
fclose(resp);
remove("gasol.txt");
rename("gasol2.txt","gasol.txt");
clrscr();
factura(x,n,a);
}

FUNCION: INGRESO
Permite ingresar galones cuando ya no hay en su existencia o
simplemente para recargar o aumentar los ya existentes.
void ingreso(void)
{ int g;
marcos();
if((arch1= fopen("gasol.txt","r"))==NULL)
{
perror("ERROR NO SE CARGO EL ARCHIVO");
exit(0);
}
if((arch2= fopen("gasol2.txt","w"))==NULL)
{
perror("ERROR NO SE CARGO EL ARCHIVO");
exit(0);
}
if((resp= fopen("respaldo.txt","w"))==NULL)
{
perror("ERROR NO SE CARGO EL ARCHIVO");
exit(0);
}
if((fread(&datos,sizeof(struct gasolinera),1,arch1))!=NULL)
{
gotoxy(29,8);
cprintf("CUANTOS GALONES INGRESA: ");
scanf("%f",&x);
datos.gal= datos.gal+x;
fwrite(&datos,sizeof(struct gasolinera),1,arch2);
fwrite(&datos,sizeof(struct gasolinera),1,resp);
}
else
{
fwrite(&datos,sizeof(struct gasolinera),1,arch2);
fwrite(&datos,sizeof(struct gasolinera),1,resp);

}
fread(&datos,sizeof(struct gasolinera),1,arch1);
fclose(arch1);
fclose(arch2);
fclose(resp);
remove("gasol.txt");
rename("gasol2.txt","gasol.txt");
}

FUNCION: MOSTRAR
Muestra la existencia disponible de gasolina en el programa
void mostrar(void)
{
marcos();
if((arch1= fopen("gasol.txt","r"))==NULL)
{
gotoxy(26,8);
perror("ERROR NO SE CARGO EL ARCHIVO");
exit(0);
}
if((fread(&datos,sizeof(struct gasolinera),1,arch1))!=NULL)
{
gotoxy(20,8);
cprintf("HAY %f DISPONIBLES",datos.gal);
fread(&datos,sizeof(struct gasolinera),1,arch1);
}
else
{gotoxy(22,8);
cprintf("IMPOSIBLE MOSTRAR: NO HAY
REGISTROS");}
getch();
fclose(arch1);
}

FUNCION: DOLARES
Ingreso del pedido de gasolina en dlares
void dolares(void)
{ float g,k;
char *n,*a;
marcos();
if((arch1= fopen("gasol.txt","r"))==NULL)
{
perror("ERROR NO SE CARGO EL ARCHIVO");
exit(0);
}
if((arch2= fopen("gasol2.txt","w"))==NULL)
{
perror("ERROR NO SE CARGO EL ARCHIVO");
exit(0);
}
if((resp= fopen("respaldo.txt","w"))==NULL)
{
perror("ERROR NO SE CARGO EL ARCHIVO");
exit(0);
}
if((fread(&datos,sizeof(struct gasolinera),1,arch1))!=NULL)
{
gotoxy(29,8);
cprintf("CUANTOS DOLARES DESEA: ");
scanf("%f",&g);
if ((g/2)>=datos.gal)
{gotoxy(20,8);
cprintf("NO SE PUEDE ENTREGAR EL VALOR
DESEADO");
getch();

exit(0);//main();
}
else
{gotoxy(29,9);
cprintf("Nombre:");
scanf("%s",n);
gotoxy(29,10);
cprintf("Apellido:");
scanf("%s",a);
datos.gal= datos.gal-(g/2);
fwrite(&datos,sizeof(struct gasolinera),1,arch2);
fwrite(&datos,sizeof(struct gasolinera),1,resp);}
}
else
{
fwrite(&datos,sizeof(struct gasolinera),1,arch2);
fwrite(&datos,sizeof(struct gasolinera),1,resp);
}
fread(&datos,sizeof(struct gasolinera),1,arch1);
fclose(arch1);
fclose(arch2);
fclose(resp);
remove("gasol.txt");
rename("gasol2.txt","gasol.txt");
k=g/2;
clrscr();
factura(k,n,a);
}

FUNCION: MARCOS
Diseo de marcos en el programa. Permite visualizar en todas las
paginas un marco que presenta una mejor imagen.
void marcos(void)
{
int i=1,j=1;

textcolor(2);
gotoxy(i,j);
cprintf("");
for(i=2;i<80;i++)
{gotoxy(i,j);
cprintf("");
delay(10);
}
gotoxy(i,j);
cprintf("");
for(j=2;j<24;j++)
{gotoxy(i,j);
cprintf("");
delay(10);
}
gotoxy(i,j);
cprintf("");
for(i=79;i>1;i=i-1)
{gotoxy(i,j);
cprintf("");
delay(10);
}
gotoxy(i,j);
cprintf("");
for(j=23;j>1;j=j-1)
{gotoxy(i,j);
cprintf("");
delay(10);
}
}

FUNCION: FACTURA
Imprime la factura del pedido despus de la operacin especifica.
Imprime el nombre y direccin de nuestra gasolinera as como los
datos del cliente.

void factura(float x,char *nom,char *apellido)


{ marcos();
textcolor(4);
char *s;
gotoxy(34,3);
cprintf("");
gotoxy(34,4);
cprintf(">>FACTURA<<");
gotoxy(34,5);
cprintf("");
gotoxy(9,7);
cprintf("GASOLINERA: XYZ");
gotoxy(27,7);
cprintf("DIRECCION: Entre la anterior y la q sigue");
gotoxy(17,9);
cprintf("CLIENTE: %s %s",nom,apellido);
gotoxy(17,11);
cprintf("GALONES----------P.UNITARIO----------SUB-TOTAL");
gotoxy(17,12);
cprintf("%5.2f",x);
gotoxy(34,12);
cprintf("$2.00");
gotoxy(56,12);
cprintf("$%5.2f",x*2);
gotoxy(15,25);
cprintf("Presione una tecla para continuar (s) para salir: ");
*s=getche();
if (*s=='s')
exit(0);
}

GASOLINERA
Este programa es denominado GASOLINERA, ya que simula las
funciones de la misma... como ya sabemos una gasolinera es una
empresa cuya funcin se basa en brindar servicios al cliente... en este
caso el programa desempea la funcin de las mquinas
distribuidoras, por la cual, cierta cantidad de gasolina sale por una
cantidad de dinero, para ser entregado a los clientes...
Para este programa hemos usado 362 lneas de cdigo, trabajando
con el Lenguaje C.

OPCIONES QUE REALIZA EL PROGRAMA...


OPCION 1:

VENTAS EN GALONES
EN GALONES:
La cantidad de galones:
Datos personales:
Nombre
Apellido
Imprime factura:
Palabra FACTURA
Nombre de la gasolinera
Direccin de la gasolinera
Nombre del cliente
Apellido del cliente
Cantidad de gasolina
Valor por galn
Valor total

OPCION 2:

VENTAS EN DOLARES
La cantidad en dlares
Datos personales:
Nombre
Apellido
Imprime factura:
Palabra FACTURA
Nombre de la gasolinera
Direccin de la gasolinera
Nombre del cliente
Apellido del cliente
Cantidad de gasolina
Valor por galn
Valor total
OPCION 3

MOSTRAR LA EXISTENCIA
Esta opcin se encarga de realizar las operaciones necesarias para
mostrar la cantidad que queda disponible.
Ejemplo...
Si tengo 100 galones
Primera venta 12
Segunda venta 30
Total 58.
En la pantalla observaremos un mensaje que dice:
Hay 58 galones disponibles

OPCION 4

INGRESO DE GALONES
Una vez que ya culmine el da o se haya agotado los galones,
tenemos la opcin 4, que nos permite ingresar una nueva cantidad de
galones para continuar con la venta. Para verificar la cantidad de
galones que hemos agregado usamos la opcin 3, que nos mostrar la
cantidad disponible.
OPCION 5

SALIR
Como su misma palabra lo dice, SALIR nos permite salir del
programa una vez que el vendedor desee la opcin 5, de lo contrario
regresa a la parte inicial para continuar con las ventas.

Potrebbero piacerti anche