2. Capítulo I
1. Estudio preliminar
Capítulo II
2.Manual Técnico
2.1 Glosario de Términos
2.2 Explicación técnica general de procesos
2.3 Líneas de código
2.4 Conclusiones
2.5 Recoemndaciones
4. OBJETIVO:
General: Crear una factura virtual que beneficie al
usuario, una vez que adquirido productos de consumo.
Específico (2):
La factura se imprimirá de dos maneras diferentes, dependiendo
lo solicitado por el usuario.
- General: es decir, el orden de los productos aparecerá en
pantalla como el usuario los haya ingresado.
-Por sección: se imprimirá en pantalla, los electrodomésticos
comprados con su subtotal y suma total, ya que solo en estos se
ha calculado el 12% de IVA.
5. JUSTIFICACIÓN:
Este programa se realiza en
beneficio de los usuarios quienes
al comprar productos de consumo
conozcan el valor de lo que han
comprado, esto en orden de como
ingrese el usuario.
Pero también este programa el
facilitará, observar los productos
previamente comprados
ordenados por secciones, para
una mayor información de los
productos adquiridos, el
subtotal, el del IVA y el valor.
6. GLOSARIO
1.FUNCIONES DE COLOR: El procedimiento TextColor se usa para seleccionar el color
del texto en la pantalla.
2.GOTOXY: Posiciona el cursor en las coordenadas especificadas por x y y.
3.STRING: Un tipo string (cadena) es una secuencia de caracteres de cero o más
caracteres correspondientes al código ASCII, escrito en una línea sobre el programa y
encerrado entre apóstrofos.
4. CASE OF: Es una forma de control se utiliza cuando se va a evaluar una expresión
que puede contener varios datos diferentes y en cada dato deberá realizar una acción
especial. Por ejemplo, si se crea un menú con diferentes opciones se realizará un
determinado proceso para cada acción, aunque la selección por parte del usuario se
haga desde el mismo lugar
5.REPEAT UNTIL: Se pone la palabra Repeat, luego el bloque de sentencias y por
último la palabra Until y la expresión a evaluar.
El cuerpo del ciclo, se repite por lo menos una vez y luego se comprueba si la
expresión es V o F. En el caso que sea falsa, se vuelve a repetir el ciclo, y si es
verdadera sigue el resto del programa.
6.FOR TO DO: Es una forma incremental, el mismo que consiste en: la variable toma el
valor inicial y va creciendo hasta llegar al valor final establecido, entonces esta acción
se repite un número limitado de veces.
7. EXPLICACIÓN TÉCNICA DE PROCESOS
Mi programa utiliza vectores para el almacenamiento de códigos ,nombres y precios
de cada una de las tres secciones: legumbres, lácteos y electrodomésticos.
Primero en la pantalla aparece la lista de productos distribuidos en tres secciones, a
partir de esto el programa le pedirá al usuario ingresar cualquiera de las opciones
que se encuentra en el menú principal si el usuario ingresa la opción uno enseguida
le pedirá ingresar el código del producto , luego el programa se encargará de buscar
el código en los tres vectores que contienen los productos , una vez que encuentra el
código le pide al usuario ingresar la cantidad que desea comprarse , posterior a esto
se realizará procesos internos como la multiplicación de la cantidad del producto
indicado por el usuario por el valor establecido ya en la tabla de valores el mismo
que está almacenado en un vector.
Una vez que el usuario ya no ingrese más códigos se procederá a dar la cuenta a
pagar por los productos adquiridos.
Posteriormente se realizará el cálculo del IVA , en caso de que el usuario haya
seccionado algún electrodoméstico, caso contrario se imprimirá en la pantalla
solamente la suma total de los productos.
8. LÍNEAS DE CÓDIGO
program facturacion ;
uses crt;
var
{DECLARACION DE VECTORES}
{Vector para el almacenamiento de la seccion legumbres}
a_codigo : array[1..5] of integer ;
a_nombre : array[1..5] of string [15] ;
a_precio : array[1..5] of real ;
{Vector para el almacenamiento de la seccion lacteos}
b_codigo : array[1..5] of integer ;
b_nombre : array[1..5] of string [15] ;
b_precio : array[1..5] of real ;
{Vector para el almacenamiento de la seccion electrodomesticos}
c_codigo : array[1..5] of integer ;
c_nombre : array[1..5] of string [15] ;
c_precio : array[1..5] of real ;
{Vector para el almacenamiento de los productos adquiridos}
com_codigo : array[1..15] of integer ;
com_nombre : array[1..15] of string [15] ;
com_unidades :array [1..15]of integer ;
com_precio : array[1..15] of real ;
{Otras variables adicionales}
i,j,cont,codigo,opcion,control,unidades,totalproductos,l,k :integer;
sumatotal,subtotal,iva : real;
LÍNEAS DE
CÓDIGO
10. control:=1;
textcolor(15);
gotoxy(30,5);
writeln ('BIENVENIDO SR. USUARIO');
textcolor(2);
gotoxy(1,7);
writeln('Este programa le ayudara a adquirir diversos productos que estan disponibles en
nuestro supermarket');
textcolor (7);
writeln(' A continuacion se encuentra nuestro menu principal, siga por favor las
instrucciones');
repeat
writeln;
writeln;
textcolor (15);
writeln('******* MENU PRINCIPAL ******** ');
textcolor (4);
writeln('1.-DESEA COMPRAR DIGITE 1');
textcolor (4);
writeln('2.-VER LISTA DE PRODUCTOS ADQUIRIDOS' );
readln(opcion);
{SEECCION DEL MENUPRINCIPALl}
case opcion of
1: begin
clrscr;
11. {ENCABEZADO DE LAS SECCIONES}
for i:=4 to 4 do
for j :=1 to 1 do
begin
textcolor(2);
gotoxy(i*2,j); writeln('CODIGO');
gotoxy(i*8,j); writeln('PRODUCTO');
gotoxy(i*14,j); writeln('PRECIO');
end;
{mostrar la primera seccion : legumbres }
textcolor(3);
gotoxy(1,4);
writeln('LEGUMBRES');
for i := 8 to 11 do
cont:=1;
for j := 5 to 9 do
begin
textcolor(15);
gotoxy(i,j);
write(a_codigo[cont]);
gotoxy(i*3,j);
write(a_nombre[cont]);
gotoxy(i*5,j);
write(a_precio[cont]:0:2);
cont:=cont+1;
end ;
12. {mostrar la segunda seccion : lacteos }
textcolor(12);
gotoxy(1,10);
writeln(' LACTEOS');
for i := 8 to 11 do
cont:=1;
for j:= 11 to 15 do
begin
textcolor(15);
gotoxy(i,j);
write(b_codigo[cont]);
gotoxy(i*3,j);
write(b_nombre[cont]);
gotoxy(i*5,j);
write(b_precio[cont]:0:2);
cont:=cont+1;
end ;
13. {mostrar la tercera seccion : electrodomesticos }
textcolor(10);
gotoxy(1,16);
writeln('ELECTRODOMESTICOS');
for i := 8 to 11 do
cont:=1;
for j:= 17 to 21 do
begin
textcolor(15);
gotoxy(i,j);
write(c_codigo[cont]);
gotoxy(i*3,j);
write(c_nombre[cont]);
gotoxy(i*5,j);
write(c_precio[cont]:0:2);
cont:=cont+1;
end ;
writeln;
14. {ingreso del codigo del producto para la busqueda }
textcolor(6);
writeln('Ingrese el codigo del producto');
readln(codigo);
cont:=1;
{buscar el codigo si encuentra imprime en pantalla }
repeat
if codigo = a_codigo[cont] then
begin
textcolor(3);
writeln('cuantas unidades' );
readln(unidades);
com_codigo[control]:=a_codigo[cont];
com_nombre[control]:=a_nombre[cont];
com_unidades[control]:=unidades;
com_precio[control]:=(a_precio[cont]* unidades );
control :=control+1;
end;
15. if codigo = b_codigo[cont] then
begin
textcolor(3);
writeln('cuantas unidades' );
readln(unidades);
com_codigo[control]:=b_codigo[cont];
com_nombre[control]:=b_nombre[cont];
com_unidades[control]:=unidades;
com_precio[control]:=(b_precio[cont]* unidades );
control :=control+1;
end;
if codigo = c_codigo[cont] then
begin
textcolor(3);
writeln('cuantas unidades' );
readln(unidades);
com_codigo[control]:=c_codigo[cont];
com_nombre[control]:=c_nombre[cont];
com_unidades[control]:=unidades;
com_precio[control]:=(c_precio[cont]* unidades );
control :=control+1;
end;
cont:=cont+1;
until cont>=6;
totalproductos:=control;
end;
16. 2:begin {listar los productos que a comprado }
clrscr;
cont:=1;
sumatotal:=0;
for i:=4 to 4 do
for j :=1 to 1 do
begin
textcolor(2);
gotoxy(i*3,j); writeln('CODIGO');
gotoxy(i*7,j); writeln('PRODUCTO');
gotoxy(i*10,j); writeln('UNIDADES');
gotoxy(i*15,j); writeln('PRECIO');
end;
for l := 1 to 15 do
cont:=1;
17. FOR k := 5 to totalproductos+3 do
begin
textcolor (15);
gotoxy(l,k);
write(com_codigo[cont]);
gotoxy(l*2,k);
write(com_nombre[cont]);
gotoxy(l*3,k);
write(com_unidades[cont] );
gotoxy(l*4,k);
write(com_precio[cont]:0:2);
{suma el valor de cada uno de los productos comprados }
sumatotal:=(sumatotal+(com_precio[cont])) ;
cont:=cont+1;
end ;
textcolor (3);
writeln;
writeln;
write('Suma Total');
gotoxy(l*8,k*8);
writeln(sumatotal:0:2);
18. repeat
textcolor(7);
writeln('DESEA VER LISTA DE ELECTRODOMESTICOS SI DIGITE 3 ') ;
textcolor(7);
writeln('SALIR DIGITE 4') ;
readln(opcion);
case opcion of
3:begin {muestra si ha comprado electrodomesticos y si hay los en lista }
clrscr;
for i:=4 to 4 do
for j :=1 to 1 do
begin
textcolor(15);
gotoxy(i*3,j); writeln('CODIGO');
gotoxy(i*7,j); writeln('PRODUCTO');
gotoxy(i*12,j); writeln('UNIDADES');
gotoxy(i*15,j); writeln('PRECIO');
end;
19. l:=4;
K:=3;
subtotal:=0;
for i := 1 to 5 do
for j := 1 to totalproductos do
begin
if c_codigo[i]=com_codigo[j] then
begin
textcolor (15);
gotoxy(l*3,k);
write(com_codigo[j]);
gotoxy(l*7,k);
write(com_nombre[j]);
gotoxy(l*12,k);
write(com_unidades[j] );
gotoxy(l*15,k);
write(com_precio[j]:0:2);
{calcula el subtotal de los electrodomesticos }
subtotal:=(subtotal+(com_precio[j])) ;
k:=k+1;
end;
end;
21. 4:begin
textcolor(3);
writeln('GRACIAS POR UTILIZAR EL SISTEMA ')
end;
end;
until (opcion = 4 ) ;
end;
3:begin
writeln('GRACIAS POR UTILIZAR EL SISTEMA ')
end;
end;
until (opcion= 3) or (opcion=4) ;
readln;
END.
22. CONCLUSIONES:
Como conclusión puedo decir que este programa será
creado en beneficio del usuario y se diferenciará de
otros programas ya que este a más de imprimir de dos
maneras ya mencionadas en los objetivos, además
puedo decir que los procesos aplicados en la
realización de este programa hasta donde se indica
en el gráfico de procesos, fueron efectivos hasta
cierto punto no podría asegurar que luego de concluir
con la totalidad del programa todo haya sido efectivo
ya que durante la codificación de los diferentes
procesos, los mismo se pueden presentar algún tipo
de dificultad al tener que tal vez insertar otras
funciones que no hayamos puesto en práctica y que
por primera vez lo vayamos a aplicar.
23. RECOMENDACIONES:
Tomando en cuenta que todo programa es
mejorable, lo que yo propongo para
mejor mi programa es que podría utilizar
más secciones de productos ya que esto
beneficiaría al usuario para la compra de
variedades de productos y no solo
limitarse a elegir entre estas tres
secciones sino que el programa sea más
amplio, proporcionar así la comodidad
necesaria hacia el usuario.