You are on page 1of 14

2014

ndice

Contenido
Introduccin ........................................................................................................................................ 3
Cdigo fuente del Proyecto ................................................................................................................. 4
Manual de Usuario .............................................................................................................................. 9
Conclusin ......................................................................................................................................... 14

3 | P g i n a

Introduccin

Proyecto Final Elaborado para el tercer parcial del curso de Diseo de Algoritmos y su
Programacin 2 que consiste en un programa realizado en C++ utilizando Dev C++ que
tiene como funcin elaborar una factura a detalle con una lista de artculos y datos que se
ingresaran manualmente por el usuario mediante un men de opciones para insertar,
eliminar, consultar, ordenar artculos e imprimir factura el propsito del proyecto es
poner en practica todo lo visto durante el semestre (Estructuras de Datos, Manejo de
Archivos, Punteros, Arreglos, Mtodos de Ordenamiento, Pilas y Colas) y poner a prueba
nuestras conocimientos y habilidades para ver si se logr el objetivo que se plane al
iniciar el curso.

















4 | P g i n a

Cdigo fuente del Proyecto

#include <cstdlib>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>

using namespace std;

struct{
char nombre[20];
float precio;
float cantidad;
}articulo[10];

struct{
int NumFactura;
int Dia;
int Mes;
int Anio;
int hora;
int min;
int NumCliente;
char Nombre[20];
char Apellido[20];
char Calle[20];
int Num;
char Col[20];
int cp;
char Ciudad[20];
int Tel;
int NumVendedor;
char NomVendedor[20];
char ApellidoVendedor[20];
}factura;

int main()
{
int i, j, op, size=10, front=0;
float des, descuento, total, subtotal, sub, iva, costo, pago, cambio, temp;
//Punteros
float *ptrdes, *ptrdescuento, *ptrtotal, *ptrsubtotal, *ptrsub, *ptriva, *ptrcosto, *ptrpago,
*ptrcambio, *ptrtemp;
ptrdes=&des, ptrdescuento=&descuento, ptrtotal=&total, ptrsubtotal=&subtotal, ptrsub=&sub,
ptriva=&iva, ptrcosto=&costo, ptrpago=&pago, ptrcambio=&cambio, ptrtemp=&temp;
do{

5 | P g i n a

printf(" ________________________\n");
printf("| Menu |\n");
printf(" ________________________\n");
printf("| 1.Crear Factura |\n");
printf("| 2.Insertar Articulos |\n");
printf("| 3.Consultar Articulos |\n");
printf("| 4.Eliminar Articulos |\n");
printf("| 5.Ordenar Articulos |\n");
printf("| 6.Consultar Factura |\n");
printf("| 7.Salir |\n");
printf(" ________________________\n");
printf("Ingrese la opcion deseada:\n");

scanf("%d",&op);
switch(op){
case 1:
system("cls");
printf("| Ingresar Datos |\n");
printf("Numero Factura: "); scanf("%d",&factura.NumFactura);
printf("dia: "); scanf("%d",&factura.Dia);
printf("mes: "); scanf("%d",&factura.Mes);
printf("anio: "); scanf("%d",&factura.Anio);
printf("hora: "); scanf("%d",&factura.hora);
printf("minutos: "); scanf("%d",&factura.min);
printf("Numero de Cliente: "); scanf("%d",&factura.NumCliente);
printf("Nombre: "); scanf("%s",&factura.Nombre);
printf("Apellido: "); scanf("%s",&factura.Apellido);
printf("Calle: "); scanf("%s",&factura.Calle);
printf("Num Ext: "); scanf("%d",&factura.Num);
printf("Colonia: "); scanf("%s",&factura.Col);
printf("Codigo Postal: "); scanf("%d",&factura.cp);
printf("Ciudad: "); scanf("%s",&factura.Ciudad);
printf("Tel: "); scanf("%d",&factura.Tel);
printf("Numero Vendedor: "); scanf("%d",&factura.NumVendedor);
printf("Nombre Vendedor: "); scanf("%s",&factura.NomVendedor);
printf("Apellido Vendedor: "); scanf("%s",&factura.ApellidoVendedor);

break;

case 2:
system("cls");
if (front==size){
//for (int i=0; i<front; i++){
//printf("%s",articulo[i].nombre);
//printf("\n");
//}
printf("La Lista de Articulos esta Completa\n");
}
6 | P g i n a

else{

printf("Ingresa 10 Articulos\n");
for(i=0; i<10; i++){
printf("articulo %d:\n",i+1);
printf("nombre:"); scanf("%s",&articulo[front].nombre);
printf("precio:"); scanf("%f",&articulo[front].precio);
printf("cantidad:"); scanf("%f",&articulo[front].cantidad);
front++;
system("cls");
printf(" ________________________________________________\n");
printf("| Articulo | Precio | Cantidad |\n");
for (int i=0; i<front; i++){
printf(" ________________________________________________\n");
printf(" %s %.2f %.0f
\n",articulo[i].nombre,articulo[i].precio,articulo[i].cantidad);
printf(" ________________________________________________\n");
printf("\n");
}
}
}

break;

case 3:
system("cls");
if (front==0){
printf("|No hay Pedidos Actualmente|\n");
}
else{
printf("|Lista de Pedidos|\n");
printf(" ________________________________________________\n");
printf("| Articulo | Precio | Cantidad |\n");
for (int i=0; i<front; i++){
printf(" ________________________________________________\n");
printf(" %s %.2f %.0f
\n",articulo[i].nombre,articulo[i].precio,articulo[i].cantidad);
printf(" ________________________________________________\n");
printf("\n");
}
}

break;

case 4:
system("cls");
if (front==0){
printf("|La lista de Pedidos esta vacia|\n");
7 | P g i n a

printf("|Inserte Articulos para poder Imprimir Factura|\n");
}
else{
//for (i=0; i<=front; i++){
if (i==front-1){
//}
printf("%s",articulo[i].nombre);
printf("\n");
}
front--;
for (i=0; i<=front; i++){
}
//printf("Presione Tecla 4 para Eliminar un Articulo \n");
printf("Se ha Eliminado el Articulo %s de la Lista\n",articulo[i].nombre);
//for (i=0; i<=front; i++){
}


break;

case 5:
system("cls");
for(i=0;i<10;i++)
{ for(j=0;j<10;j++)
{ if(articulo[i].cantidad<articulo[j].cantidad)
{
*ptrtemp=articulo[i].cantidad;
articulo[i].cantidad=articulo[j].cantidad;
articulo[j].cantidad=*ptrtemp;
}
}
}
printf("Articulos Ordenados por cantidad\n");
for(i=0;i<front;i++)
{
printf("Articulos %d:",i+1);
printf("cantidad: %.0f\n",articulo[i].cantidad);

}

break;

case 6:
system("cls");
printf("| Detalles de Factura |\n");
printf("\n");
printf(" Numero de Factura: %d\n",factura.NumFactura);
8 | P g i n a

printf(" Fecha %d/%d/%d
\n",factura.Dia,factura.Mes,factura.Anio);
printf(" Hora %d:%d \n",factura.hora,factura.min);
printf("No. Cliente: %d\n",factura.NumCliente);
printf("Nombre: %s\n",&factura.Nombre);
printf("Apellido: %s\n",&factura.Apellido);
printf("Direccion Calle %s No. %d Colonia %s C.P
%d\n",&factura.Calle,factura.Num,factura.Col,factura.cp);
printf("Ciudad: %s Tel. %d\n",&factura.Ciudad,factura.Tel);
printf("No. Vendedor: %d\n",factura.NumVendedor);
printf("Nombre: %s\n",&factura.NomVendedor);
printf("Apellido: %s\n",&factura.ApellidoVendedor);

if (front==0){
printf("|No hay Pedidos Actualmente|\n");
}
else{

printf("|Lista de Pedidos|\n");
printf(" ___________________________________________________________________\n");
printf("| Nombre | Cantidad | Precio | Descuento 1 | Total 1 |\n");

for (int i=0; i<front; i++){
if(articulo[i].cantidad>30){
*ptrdes=articulo[i].cantidad*articulo[i].precio*.50;
}
if((articulo[i].cantidad>25)&&(articulo[i].cantidad<31)){
*ptrdes=articulo[i].cantidad*articulo[i].precio*.30;
}
if((articulo[i].cantidad>20)&&(articulo[i].cantidad<26)){
*ptrdes=articulo[i].cantidad*articulo[i].precio*.25;
}
if((articulo[i].cantidad>15)&&(articulo[i].cantidad<21)){
*ptrdes=articulo[i].cantidad*articulo[i].precio*.20;
}
if((articulo[i].cantidad>10)&&(articulo[i].cantidad<16)){
*ptrdes=articulo[i].cantidad*articulo[i].precio*.15;
}
if((articulo[i].cantidad>5)&&(articulo[i].cantidad<11)){
*ptrdes=articulo[i].cantidad*articulo[i].precio*.10;
}
if((articulo[i].cantidad>0)&&(articulo[i].cantidad<6)){
*ptrdes=articulo[i].cantidad*articulo[i].precio*.5;
}
*ptrtotal=articulo[i].cantidad*articulo[i].precio-*ptrdes;
*ptrsubtotal+=*ptrtotal;

printf(" ___________________________________________________________________\n");
9 | P g i n a

printf("| %s %.0f $ %.1f $ %.1f $ %.2f
\n",articulo[i].nombre,articulo[i].cantidad,articulo[i].precio,des,total);
printf(" ___________________________________________________________________\n");
printf("\n");
}
printf(" ______________\n");
printf(" SUBTOTAL 1 | $ %.2f \n",*ptrsubtotal);
if(*ptrsubtotal>1000){
*ptrdescuento=*ptrsubtotal*.10;
}
else{
*ptrdescuento=0;
}
printf(" ______________\n");
printf(" DESCUENTO 2 | $ %.2f \n",*ptrdescuento);
*ptrsub=*ptrsubtotal-*ptrdescuento;
printf(" ______________\n");
printf(" SUBTOTAL 2 | $ %.2f \n",*ptrsub);
*ptriva=*ptrsub*.16;
printf(" ______________\n");
printf(" I.V.A | $ %.2f \n",*ptriva);
*ptrcosto=*ptrsub+*ptriva;
printf(" ______________\n");
printf(" TOTAL 2 | $ %.2f \n",*ptrcosto);
//}
printf("Ingrese su pago:"); scanf("%f",&*ptrpago);
printf(" ______________\n");
printf(" PAGO EFECTIVO | $ %.2f \n",*ptrpago);
*ptrcambio=*ptrpago-*ptrcosto;
printf(" ______________\n");
printf(" CAMBIO | $ %.2f \n",*ptrcambio);
}
break;
}

}
while(op!=7);
system("PAUSE");
return EXIT_SUCCESS;
}
Manual de Usuario
Men Inicial
10 | P g i n a


Presionamos 1 para ir a la opcin Crear Factura Ingresamos los datos que deber llevar nuestra
factura y presionamos enter al finalizar para que nos muestre nuevamente el men

Presionamos 3 para Consultar Artculos y como an no hemos insertado ningn artculo nos
devolver el siguiente mensaje.
11 | P g i n a


Presionamos entonces la tecla 2 para insertar 10 artculos a nuestra factura al terminar de
insertar nuestros 10 artculos nos mostrara el men nuevamente


Presionamos la tecla 4 en caso de que deseemos eliminar un artculo si es as nos mostrara un
mensaje de que se ha eliminado un artculo, el ltimo artculo insertado en la lista fue Articulo
juego Precio 50.00 Cantidad 50 si actualizamos la tabla presionando 3 veremos que se ha
eliminado el ltimo artculo insertado.
12 | P g i n a



Tecleamos 5 para ordenar por cantidad de artculos de menor a mayor.

13 | P g i n a

Finalmente presionamos la tecla 6 para Consultar Factura nos mostrara el total a pagar y se
deber de ingresar pago para mostrar la factura a detalle.


14 | P g i n a


Conclusin

Durante el desarrollo de este proyecto pusimos en prctica muchas de las cosas que se
vieron en el curso de diseo de algoritmos y su programacin 2 logrando el objetivo antes
planeado se elabor en un tiempo de 5 das en los cuales se refrescaron muchos de los
conocimientos adquiridos y se obtuvieron otros nuevos la experiencia que se siente al
finalizar el proyecto es nica ya que te da un sensacin de tranquilidad y confianza de que
puedes lograr terminar todo lo que te propongas siempre y cuando te empees en ello y
tengas mucha constancia ya que se requiere de mucha paciencia y dedicacin no fue nada
fcil ya que hubo algunas partes donde haba que investigar ms a profundidad sobre
ciertas sintaxis o declaraciones y que al final de cuentas fue una muy buena prueba para
demostrar nuestra capacidad y si de verdad aprendimos cada uno de los temas que se
vieron en el curso durante este semestre, finalmente podemos decir que este proyecto
fue terminado con mucho amor y esperando obtener una muy buena calificacin que al
final de cuentas es el premio a nuestro esfuerzo printf(Para poder ser hay que hacer.\n)
Fecha de Entrega 5 de mayo del 2014.

You might also like