Foros del Web » Programación para mayores de 30 ;) » C/C++ »

hacer una boleta

Estas en el tema de hacer una boleta en el foro de C/C++ en Foros del Web. hola a todos soy nuevo por aqui, quisiera que me ayuden en un programa que estoy haciendo, lo que pasa esque estoy haciendo un programa ...
  #1 (permalink)  
Antiguo 13/03/2008, 14:39
Avatar de libitzu  
Fecha de Ingreso: marzo-2008
Ubicación: en aqp
Mensajes: 83
Antigüedad: 16 años, 8 meses
Puntos: 1
Pregunta hacer una boleta

hola a todos soy nuevo por aqui, quisiera que me ayuden en un programa que estoy haciendo, lo que pasa esque estoy haciendo un programa para una tienda, ya tengo todo, el ingreso de productos a un archivo.eva, y ahora mi problema esque si quiero venderlos, tendria que ingresar todo a una boleta de venta, que tbm estaria en el programa, tengo un menu para cada producto, ya y en cada menu8 esta la opcion vender producto, luego de eso, el vendedor pone el codigo del producto a vender, y luego pone la cantidad a vender (el precio, el nombre y la cantidad total ya fue ingresada anteriomente a la base de datos de los productos), ya...... luego de eso quiero que la venta ingrese a la boleta, ya luego de eso quiero vender otro producto y salgo del menu de ese producto, y entro al de otro producto, y tbm ago una venta, que entra a la boleta, al final quiero ver todo en una sola boleta de venta, seleccionando en el menu principal, (ver boleta de venta), y hay que esten lo productos que se hicieron en esa venta, luego que guarde la boleta e inicia otra en blanco, claro con su respectivo numero de boleta.

gracias espero que se entienda mi problema espero una respuesta
  #2 (permalink)  
Antiguo 13/03/2008, 15:13
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 18 años, 5 meses
Puntos: 28
Re: hacer una boleta

Todo esta muy pegado, es difícil de leer, además no te explicaste muy bien. Tampoco especificas si lo estas haciendo usando alguna librería gráfica o que.

No entiendo muy bien cual es el problema que tienes.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #3 (permalink)  
Antiguo 13/03/2008, 16:49
Avatar de Mephisto  
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 184
Antigüedad: 18 años, 10 meses
Puntos: 3
Re: hacer una boleta

Complementando lo que menciona Lucifer, recuerda que requieres de formular dudas de manera más clara y que sean específicas ya que es más fácil que podamos ayudarte de esa manera.
__________________
Saludos...

Todos somos sabios, solo que en diferentes disciplinas...
  #4 (permalink)  
Antiguo 13/03/2008, 22:14
Avatar de paelams  
Fecha de Ingreso: marzo-2008
Mensajes: 23
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: hacer una boleta

-----------------------

Última edición por paelams; 11/07/2010 a las 18:48
  #5 (permalink)  
Antiguo 14/03/2008, 17:14
Avatar de libitzu  
Fecha de Ingreso: marzo-2008
Ubicación: en aqp
Mensajes: 83
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: hacer una boleta

ok volvere a explicarolo, jeje, yo tbm crei que no taba claro.

bueno comenzare....

estoy haciendo un programa, como proyecto para mi carrera, ya y lo que estoy haciendo es una tienda de sistemas electronicos, en los que estoy haciendo un menu pricipal, con las opciones:

ingresar producto
buscar producto
ver lista de almacen
vender mas items.......
salir

en el item de vender
quiero poner las opciones

ver botela actual
historial de boletas
cerrar boleta actual

ya.......

ahora volviendo al menu principal........ el vendedor, pondra (buscar producto) y vera todos los productos de hay, luego el comprador le pide un mouse (x ejemplo), y l vendedor, pone en una de las opciones de el producto mouse (ingresar a boleta actual); y ingresa el mouse a la boleta actual (antes de eso se debi de cerrar la venta anterior);
ya luego de poner todos los productos en al boleta;

vamos al menu vender y ponermos 8ver boleta actual) y hay deben estar los productos a vender; claro esta que tendria que poner una opcion para borrar algunos productos que se entraron por equivocacon o ya no se quieran;

ya y dentro de la boleta actual, una opcion mas que diga (terminar venta) y ya se vende los productos y se cierra la boleta, automaticamente crea una nueva boleta con un nuevo numero de ella;

ha y tbm al vender un producto debe restar el numero de ellos actual, menos el que ya se vendio.

bueno eso seria todo por ahora

a ver ps si se entiende...


gracias
  #6 (permalink)  
Antiguo 14/03/2008, 18:23
Avatar de Mephisto  
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 184
Antigüedad: 18 años, 10 meses
Puntos: 3
Re: hacer una boleta

Pues como es un proyecto y no solo un programa, lo que pudiera recomendarte sería el separar tu problema completo en procesos independientes que al final serán interconectados para generar tu aplicación, ya teniendo esto se pueden atacar cada uno como problemas por separado. Esto es la punta del iceberg de la Ingeniería de Software...
__________________
Saludos...

Todos somos sabios, solo que en diferentes disciplinas...
  #7 (permalink)  
Antiguo 14/03/2008, 19:27
Avatar de libitzu  
Fecha de Ingreso: marzo-2008
Ubicación: en aqp
Mensajes: 83
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: hacer una boleta

si eso es lo que pense pero aun no se usar bien eso no se si me podrias explicar, loq ue ley esque podia hacer diferentes funciones y guardarlas como funcion.h pero al momento de usarlas, mi problema es que no funca, por lo que obte por hacer todo en uno solo.
  #8 (permalink)  
Antiguo 15/03/2008, 20:43
Avatar de paelams  
Fecha de Ingreso: marzo-2008
Mensajes: 23
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: hacer una boleta

----------------------------------

Última edición por paelams; 11/07/2010 a las 19:04
  #9 (permalink)  
Antiguo 15/03/2008, 20:51
Avatar de paelams  
Fecha de Ingreso: marzo-2008
Mensajes: 23
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: hacer una boleta

Cita:
//Genera un array de estructuras de 500 elementos

/* Programa que genera un array de estructuras de 500 elementos
en cada estructura se almacenan 4 datos de empleados
similar a una peque¤a base de datos*/
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<ctype.h>
#include<string.h>
#include<stdlib.h>

/*-----------------Definicion de tipo de la estructura---------------------*/

typedef struct datos_empleados{
float nemp;
char nombre[30];
int edad;
char domicilio[50];
struct datos_empleados *next;
}DATOS;
/*-----------------------Definicion de funciones---------------------------*/
void agregar(void);
void mostrar(DATOS *ptr);
void pornumero(DATOS *ptr);
void pornombre(DATOS *ptr);
int buscar(DATOS *ptr);
void eliminar(DATOS *ptr);

/*-------------------------Definicion de variables-------------------------*/
int i,j=0,J=0,n=0,z=0; //Contadores
char opc,op,E; //Variables de seleccion
DATOS *p,*base, *one,*paux; //Array de tipo DATOS y puntero a estructura

/*----------------------Inicio de funcion principal------------------------*/
main(){
clrscr();
do{ //ciclo para menu principal
clrscr();
printf("\t\t *****************MENU*****************");
printf("\n\n\n\n\n\t\t\t A.- Agregar Empleado.");
printf("\n\t\t\t B.- Ordenar Los Empleados.");
printf("\n\t\t\t C.- Mostrar Todos Los Empleados.");
printf("\n\t\t\t D.- Buscar Empleado.");
printf("\n\t\t\t E.- Eliminar Empleado.");
printf("\n\t\t\t S.- Salir.\n");
printf("\n\t\t\tSu opcion es: ");
scanf("%c",&opc);
opc=toupper(opc);
switch(opc){
case 'A':fflush(stdin); // Agrega registro a nuestra base de datos
agregar();
break;
case 'B': // Ordena los registro
p=one; clrscr();
if(one!=NULL){ //valida si hay datos o no
do{ //Ciclo de submenu
clrscr();
printf("\n\n\n\t\t Elija El Tipo De Ordenamiento ");
printf("\n\n\t\t A.- Por Numero De Empleado.");
printf("\n\t\t B.- Por Nombre De Empleado.");
printf("\n\t\t C.-(Volver al menu principal).");
printf("\n\n\t\t Cual es su opcion: "); fflush(stdin);
scanf("%c",&op); op=toupper(op);
switch(op){
case 'A':
/* pornumero(p); // ordenacion por numero
printf("\n LOS ELEMENTOS HAN SIDO ORDENADOS CON EXITO PRESIONE UNA TECLA PARA CONTINUAR...");
printf("\n\t\t LUEGO PRESIONE (C) PARA VOLVER AL MENU PRINCIPAL... ");
getch(); */
break;
case 'B': /* // ordenacion por nombre
pornombre(p);
printf("\n LOS ELEMENTOS HAN SIDO ORDENADOS CON EXITO PRESIONE UNA TECLA PARA CONTINUAR...");
printf("\n\t\t LUEGO PRESIONE (C) PARA VOLVER AL MENU PRINCIPAL... ");
getch(); */
break;
}

}while(op!='C');
}
else if(j==1){
printf("\n\n\tSolo existe un elemento no es necesario ordenar...");
printf("\n\tPresione una tecla par volver...");getch();
}
else{
printf("\n\n\t No existen elementos actualmente, no es posible ordenar...");
printf("\n\tPresione una tecla par volver..."); getch();}

break;

case 'C': //Muestra los datos del registro
clrscr();
if(one!=NULL){ //valida si hay datos o no
J=0;
p=one;
fflush(stdin);
for(i=0;p!=NULL;i++) { //ciclo que llama a funcion mostrar()
mostrar(p);p=p->next; J++;
if(J>=4){ J=0;
printf("\t\t VER SIGUIENTES....");
getch();
clrscr();
} }
printf("\n\t PRESIONE UNA TECLA PARA CONTINUAR..."); }
else{
printf("\n\n No existen registros actualmente para mostrar.");
}
getch();
break;
case 'D': //busca un registro en el array base
clrscr();
if(one!=NULL){ //valida si hay datos o no
p=one;
buscar(p);}
else{
printf("\n\n\t No existen registros actualmente para buscar.");
getch();
}
break;

case 'E': //Busca el registro seleccionado y lo elimina de la base
clrscr();
if(one!=NULL){ //valida si hay datos o no
z=buscar(p);
fflush(stdin);
if(z>=0){
printf("\n\n\t Seguro de que desea eliminar este elemento (s/n): "); scanf("%c",&E);
if(E=='s'||E=='S'){
eliminar(p);
printf("\n\t El registro se elimino exitosamente.");
printf("\n\t Presione una tecla para volver al menu principal.."); getch();
}

} }
else{
printf("\n\n\t No existen registro que eliminar");
printf("\n\t Presione una tecla para volver al menu principal..."); getch();
}

break;

}
}while(opc!='S'); //fin de ciclo menu principal
return 0;
}
  #10 (permalink)  
Antiguo 15/03/2008, 20:53
Avatar de paelams  
Fecha de Ingreso: marzo-2008
Mensajes: 23
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: hacer una boleta

Cita:
/*----------------------Fin de funcion principal---------------------------*/

/*-----------------------Funcion de agregacion-----------------------------*/
void agregar(void){
char b[21];
//for(i=0;i<1;i++,j++) { //ciclo para agregar datos y llevar registro de datos introducidos.
clrscr();
base=(DATOS *) malloc(sizeof(DATOS));
printf("Agrege un numero de empleado: ");
gets(b); //se captura numero de empleado como cadena de char.
base->nemp=atof(b); fflush(stdin); //luego se convierte la cadena capturada a un numero real o float.
printf("Agrege el nombre del empleado: ");
gets(base->nombre); fflush(stdin);
printf("Introduzca la edad: ");
scanf("%d",&base->edad); fflush(stdin);
printf("Introduzca el domicilio: ");
gets(base->domicilio);fflush(stdin);
if(one==NULL){
one=base;
base->next=NULL;
}
else
{
base->next=one;
one=base;
}
}
/*-------------------------------------------------------------------------*/

/*---------------------Funcion para mostrar registros---------------------*/

void mostrar(DATOS *ptr){
printf("\n # empleado: %.0f",ptr->nemp);
printf("\n Nombre: %s",ptr->nombre);
printf("\n Edad: %d",ptr->edad);
printf("\n Domicilio: %s\n\n",ptr->domicilio);
}
/*-------------------------------------------------------------------------*/

/*-------------------Funcion de ordenacion por numero----------------------*/
/*void pornumero(DATOS *ptr){
DATOS baux,*aux; // variables y punteros auxiliares tipo DATOS
for(J=0;J<=j;J++){ // ciclo para seleccion e intercambio de valores
ptr=one;

aux=ptr->next;
for(i=0;i<j-1;i++,){ //bucle para checar todos los registros
if((ptr->nemp)<(aux->nemp)){ // seleccion
baux=base[i];
base[i]=base[i+1];
base[i+1]=baux;
}
} }
} */
/*---------------------------------------------------------------------------*/

/*-------------------Funcion de ordenacion por nombre-----------------------*/
/*void pornombre(DATOS *ptr){
char *aux,*auxs,*cad1; //punteros auxiliares
int w,x,y,flag,flag2; //contadores,centinelas y banderas.
DATOS baux; //variable auxiliar de tipo DATOS.
ptr=base;
cad1=ptr->nombre;
for(J=0;J<j;J++,ptr++) {
cad1=ptr->nombre;
for(i=0;i<strlen(cad1);i++){
cad1=ptr->nombre;
if((cad1[i]<97)&&(cad1[i]>64)){ //conversion a minusculas
cad1[i]=cad1[i]+32;
} } }
ptr=base;
aux=ptr->nombre; //asignacion de un puntero a estructura en un apuntador char
for(w=0;w<j;w++){ //bucles para revisar todas las posibles combinaciones
ptr=base; //inicializa
aux=ptr->nombre;
for(x=0;x<j;x++,ptr++){ //ciclo para checar por cadena
aux=ptr->nombre;
auxs=(ptr+1)->nombre;
for(y=0,flag=0;flag==0;y++){ //ciclo para checar por caracter
if(aux[y]>auxs[y]&&x<j-1){ //si el primer caracter es diferente
baux=base[x];
base[x]=base[x+1];
base[x+1]=baux;
flag=1;
}
if(aux[y]==auxs[y]){
for(J=0,flag2=0;J<strlen(aux)||J<strlen(auxs)&&fla g2==0;J++){ //ciclo para checar por caracter si los primeros
if(aux[J]>auxs[J]&&x<j-1){ //caracteres son iguales
baux=base[x];
base[x]=base[x+1];
base[x+1]=baux;
flag2=1;
}
}
}
else{
flag=1;
}
}

}
}
} */
/*-------------------------------------------------------------------------*/

/*-----------------------Funcion de busqueda-------------------------------*/
int buscar(DATOS *ptr){
int busca, caux,r=5,z;
float m;
ptr=one;
char *cax,*cad1,*cad2;
DATOS buscanom;
do{
clrscr();
ptr=one;
z=-1;
printf("\n\n\t\t ELIJA LA FORMA DE BUSQUEDA...");
printf("\n\t\t A.- Por numero de empleado.");
printf("\n\t\t B.- Por nombre de empleado.");
printf("\n\t\t C.-(Volver al menu principal).");
printf("\n\n\t\t Cual es su opcion: ");
scanf("%c",&op); op=toupper(op);
switch(op){
case 'A': clrscr();
ptr=one; r=0;
printf("\n\n\t Buscar por numero de empleado.");
printf("\n\n\t\t Introdusca el numero del empleado a buscar: "); scanf("%i",&busca);
caux=ptr->nemp; fflush(stdin);

for(i=0;ptr!=NULL;i++){
// ciclo que busca en todos los registros de la base
caux=ptr->nemp;

if(caux==busca){ // seleccion si es identica
z=i;
printf("\n\nEl elemento actualmente se encuentra en la posicion [%i].\n\n",i+1); i=j;
mostrar(ptr); r=1; // r es bandera o centinela
printf("\n\n Buscar otro? (s/n):"); scanf("%c",&op);
if(op=='n'||op=='N') {op='C'; break;}
else{op='a';}
}
else{ r=0;} // bandera o centinela
ptr=ptr->next;
}
if(r==0){
printf("\n\n\n El elemento que busca no se encuentra actualmente en la lista...");
printf("\n\n Buscar otro? (s/n):"); scanf("%c",&op);
if(op=='n'||op=='N') {op='C'; break; }
else{op='a';}

}

break;
case 'B':
clrscr();

ptr=one; r=0; fflush(stdin);
printf("\n\n\t Buscar por nombre de empleado.");
printf("\n\n\t\t Introdusca el nombre del empleado a buscar: "); gets(buscanom.nombre);
cad2=buscanom.nombre;
cad1=ptr->nombre;
for(J=0;ptr!=NULL;J++) {

for(i=0;i<strlen(cad2);i++){
cad2=buscanom.nombre;
if((cad2[i]<97)&&(cad2[i]>64)){ // conversion a minusculas
cad2[i]=cad2[i]+32;
} }
for(i=0;i<strlen(cad1);i++){
cad1=ptr->nombre;
if((cad1[i]<97)&&(cad1[i]>64)){ //conversion a minusculas
cad1[i]=cad1[i]+32;
} }
ptr=ptr->next;
}
ptr=one;

for(i=0;ptr!=NULL;i++){ // for para seleccion de elementos iguales
cad2=buscanom.nombre;
cad1=ptr->nombre;
m=strcmp(cad1,cad2);
if(m==0){ z=i;
printf("\n\nEl elemento actualmente se encuentra en la posicion [%i].\n\n",i+1); i=j;
mostrar(ptr); r=1; i=j;
printf("\n\n Buscar otro? (s/n):"); scanf("%c",&op);
if(op=='n'||op=='N') {op='C'; break; }
else{op='a';}

}

else{ r=0;}
ptr=ptr->next;
}
if(r==0&&op){
printf("\n\n\n El elemento que busca no se encuentra actualmente en la lista...");
printf("\n Compruebe que: ");printf("\n *El nombre este correctamente escrito.");printf(" (No importan mayusculas o minusculas.)");
printf("\n *El nombre no contenga caracteres extra¤os.(ejemplo: %,&,$,?,etc..)");
printf("\n *El nombre este dado de alta.");
printf("\n\n Buscar otro? (s/n):"); scanf("%c",&op);
if(op=='n'||op=='N') {op='C'; break;}
else{op='a';}
}
break;

}
}while(op!='C');
return z;
}
/*-------------------------------------------------------------------------*/

/*-----------------------Funcion para eliminacion--------------------------*/
void eliminar(DATOS *ptr){
paux=one;
ptr=one;
for(i=0;i<z;i++){
paux=ptr;
ptr=ptr->next;
}
if(paux!=NULL)
{
if(paux==one)
one=paux->next;
else
paux->next=ptr->next;
}}
  #11 (permalink)  
Antiguo 15/03/2008, 20:54
Avatar de paelams  
Fecha de Ingreso: marzo-2008
Mensajes: 23
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: hacer una boleta

Esse codigo en 2 partes porque no cabe en 1 post
  #12 (permalink)  
Antiguo 16/03/2008, 15:27
Avatar de libitzu  
Fecha de Ingreso: marzo-2008
Ubicación: en aqp
Mensajes: 83
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: hacer una boleta

a ya y tu quien eres psss, tio

por que yo toy solo, no tengo grupo por que toy en la tarde, asi que podemos hacer el trabajo juntos ps y fucionar ejejeje ya tengo todo lo grafico, menus y todo eso.

vere tu codigo a ver psss si me sirve algo, pero eso de ordenar, para que ordenas si solo puede buscar, y le puedes poner el codigo de la persona automaticamente con una contante
(ultimaficha) y ya ta se suma no mas.

ha y si estoy con el sulla en el laboratorio
  #13 (permalink)  
Antiguo 16/03/2008, 17:49
Avatar de paelams  
Fecha de Ingreso: marzo-2008
Mensajes: 23
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: hacer una boleta

Bueno entonces tengo tu correo a y en que laboratorio estas en el turno A o B
porque yo estoy con el Aedo pero igual tengo que hacer

El codigo que te di es un ejemplo tu lo adecuas.


mi correo
> [email protected]
>[email protected]

nota etsoy la mayoria de veces de lunes a viernes de 7 a 9 y de 10 11
si quieres acordar una ayuda mutua.
  #14 (permalink)  
Antiguo 17/03/2008, 11:09
Avatar de libitzu  
Fecha de Ingreso: marzo-2008
Ubicación: en aqp
Mensajes: 83
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: hacer una boleta

con quien estas haciendo pss, xq yo toy solo pssss ya esoty rebisando los codigos que me mandaste a ver psss si quedamos para una breve ayuda jejjee, perdon a los del foro para usar este post para estas cosas,

pero es una tremenda casualidad....
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:58.