Você está na página 1de 10

#include <conio.

h>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <iomanip>
#include <windows.h>
//****************************************************************************************
#define archivo "D:\\rousseau\\UNMSM\\Cursos\\Ciclo II\\algoritmica I\\algoritmica I Mota\\Practica
6\\practica.txt"
#define a_temporal "D:\\rousseau\\UNMSM\\Cursos\\Ciclo II\\algoritmica I\\algoritmica I Mota\\Practica
6\\temporal.txt"
//****************************************************************************************
using namespace std;
//****************************************************************************************
struct estructura_registro{
int codigo;
char descripcion[50];
float precio_lista;
float precio_venta;
float descuento;
int garantia;
};
//****************************************************************************************
estructura_registro registro;
//****************************************************************************************
FILE *alias;
FILE *temporal;
//****************************************************************************************
//declaracion de menus
int menu_principal();
int menu_modificaion();
//****************************************************************************************
//delcaracion de funciones auxiliares
void gotoxy(int x,int y);
//****************************************************************************************
//declaracion de funciones esenciales
void alta_secuencial();
void consulta_secuencial();
void modificacion_secuencial();
void listado_secuencial();
void baja_logica_secuencial();
void baja_fisica_secuencial();
void salir();
//****************************************************************************************/
/funcion principal
int main(){
int opc;
do{
opc=menu_principal();
switch(opc){
case 1:{
alta_secuencial();
break;
}
case 2:{
consulta_secuencial();
break;
}
case 3:{
modificacion_secuencial();
break;
}
case 4:{

break;
}
case 5:{
listado_secuencial();
break;
}
case 6:{
baja_logica_secuencial();
break;
}
case 7:{
baja_fisica_secuencial();
break;
}
case 8:{
salir();
break;
}
}
}while(opc>=1&&opc<=8);
return 0;
}
//****************************************************************************************
//menus
int menu_principal(){
int opc;
do{
system("cls");system("color f0");
cout<<" "<<endl
<<" Menu Principal "<<endl
<<" "<<endl
<<" "<<endl
<<" [1] Alta Secuencial: "<<endl
<<" "<<endl
<<" [2] Consulta Secuencial: "<<endl
<<" "<<endl
<<" [3] Modificacion Secuencial "<<endl
<<" "<<endl
<<" [4] Ordenar Secuencial "<<endl
<<" "<<endl
<<" [5] Listado Secuencial: "<<endl
<<" "<<endl
<<" [6] Baja logica Secuencial "<<endl
<<" "<<endl
<<" [7] Baja FISICA Secuencial "<<endl
<<" "<<endl
<<" [8] Salir "<<endl
<<" "<<endl
<<" "<<endl
<<" Digite la opcion deseada[ ]\b\b";cin>>opc;
if(opc<1||opc>8){
cout<<endl<<endl
<<" Digite una opcion disponible ";
getch();
}
}while(opc<1||opc>8);

return opc;
}

int menu_modificacion(){
int opc;
do{
system("cls");system("color f0");
cout<<" "<<endl
<<" Que desea modificar? "<<endl
<<" "<<endl
<<" "<<endl
<<" [1] Modificar Descripcion: "<<endl
<<" "<<endl
<<" [2] Modificar Precio de lista: "<<endl
<<" "<<endl
<<" [3] Modificacion Precio de venta: "<<endl
<<" "<<endl
<<" [4] Modificacion de la garantia: "<<endl
<<" "<<endl
<<" [5] Retornar al menu "<<endl
<<" "<<endl
<<" "<<endl
<<" Digite la opcion deseada[ ]\b\b";cin>>opc;
if(opc<1||opc>5){
cout<<endl<<endl
<<" Digite una opcion disponible ";
getch();
}
}while(opc<1||opc>5);
return opc;
}
//****************************************************************************************
//funciones auxiliares
void gotoxy(int x,int y){
HANDLE hcon;
hcon = GetStdHandle(STD_OUTPUT_HANDLE);
COORD dwPos;
dwPos.X = x;
dwPos.Y= y;
SetConsoleCursorPosition(hcon,dwPos);
}
//****************************************************************************************
//funciones esenciales
void alta_secuencial(){
int codigo;
system("cls");
alias=fopen(archivo,"rb+");
if(alias==NULL){
alias==fopen(archivo,"wb+");
}
cout<<"Codigo del producto: ";cin>>codigo;
cout<<endl<<endl;
fread(&registro,sizeof(registro),1,alias);
while(!feof(alias)){
if(registro.codigo==codigo){
cout<<"============================Codigo
Duplicado============================";
getch();
return;
}
fread(&registro,sizeof(registro),1,alias);
}
registro.codigo=codigo;
cout<<"\rEscriba la descripcion del producto: ";fflush(stdin);gets(registro.descripcion);
cout<<endl<<endl;
do{
cout<<"\rDigite el precio de lista: ";cin>>registro.precio_lista;
cout<<endl<<endl;
}while(registro.precio_lista<0);
do{
cout<<"\rDigite el precio de venta: ";cin>>registro.precio_venta;
cout<<endl<<endl;
}while(registro.precio_venta<0);
do{
cout<<"\rTiene garantia [si(1)//no(0)]: ";cin>>registro.garantia;
cout<<endl<<endl;
}while(registro.garantia!=0&&registro.garantia!=1);
registro.descuento=registro.precio_lista-registro.precio_venta;
if(registro.descuento<0){
registro.descuento=-1;
}
fwrite(&registro,sizeof(registro),1,alias);
fclose(alias);
cout<<"======================Producto registro=======================";
cout<<endl<<endl;
cout<<"Presione cualquier tecla para continuar!!";
getch();
}

void consulta_secuencial(){
int codigo;
system("cls");
alias=fopen(archivo,"rb+");
if(alias==NULL){
cout<<"no se puede abrir el archivo"<<endl
<<"Oprima cualquier tecla para continuar ";
getch();
return;
}
cout<<"Digite el codigo a buscar";cin>>codigo;
fread(&registro,sizeof(registro),1,alias);
while(!feof(alias)){
if(registro.codigo==codigo){
system("cls");

cout<<setw(10)<<"codigo"<<setw(15)<<"descripcion"<<setw(15)<<"precio_lista"<<setw(15)<<"preci
o_venta"<<setw(10)<<"descuento"<<setw(12)<<"garantia"<<endl

<<"=======================================================================
===="<<endl<<endl;

cout<<setw(10)<<registro.codigo<<setw(15)<<registro.descripcion<<setw(15)<<registro.precio_lista<<
setw(15)<<registro.precio_venta<<setw(10);
if(registro.descuento==-1){
cout<<"No posee";
}
else{
cout<<registro.descuento;
}
cout<<setw(12);
if(registro.garantia==1){
cout<<"Si";
}
else{
cout<<"No";
}
cout<<endl<<endl;
fclose(alias);
getch();
return;
}
fread(&registro,sizeof(registro),1,alias);
}
system("cls");
cout<<"=============================codigo no
encontrado==============================="<<endl
<<"Oprima cualquier tecla para continuar";
getch();
fclose(alias);
return;
}

void modificacion_secuencial(){
int codigo,busqueda=-1;
system("cls");
alias=fopen(archivo,"rb+");
if(alias==NULL){
cout<<"No se puede abrir el archivo: "<<endl
<<"Oprima cualquier tecla para continuar ";
getch();
return;
}
temporal=fopen(a_temporal,"wb+");
if(alias==NULL){
cout<<"No se puede abrir el archivo: "<<endl
<<"Oprima cualquier tecla para continuar ";
getch();
return;
}
cout<<"Digite el codigo a modificar: ";cin>>codigo;
fread(&registro,sizeof(registro),1,alias);
while(!feof(alias)){
if(registro.codigo==codigo){
int opc;
do{
opc=menu_modificacion();
switch(opc){
case 1:{
system("cls");
cout<<"Descripcion: ";fflush(stdin);gets(registro.descripcion);
break;
}
case 2:{
system("cls");
do{
cout<<"\rDigite el precio de lista:
";cin>>registro.precio_lista;
cout<<endl<<endl;
}while(registro.precio_lista<0);
break;
}
case 3:{
system("cls");
do{
cout<<"\rDigite el precio de lista:
";cin>>registro.precio_venta;
cout<<endl<<endl;
}while(registro.precio_venta<0);
break;
}
case 4:{
system("cls");
do{
cout<<"\rTiene garantia [si(1)//no(0)]:
";cin>>registro.garantia;
cout<<endl<<endl;
}while(registro.garantia!=0&&registro.garantia!=1);
}
case 5:{
break;
}
}
}while(opc>=1&&opc<=4);
registro.descuento=registro.precio_lista-registro.precio_venta;
if(registro.descuento<0){
registro.descuento=-1;
}
busqueda=0;
fwrite(&registro, sizeof(registro), 1, temporal);
}
else{
fwrite(&registro, sizeof(registro), 1, temporal);
}
fread(&registro,sizeof(registro),1,alias);
}
fclose(alias);
fclose(temporal);
remove(archivo);
rename(a_temporal,archivo);
if(busqueda==0){
system("cls");
cout<<"registro modificado!!"<<endl
<<"Oprima cualquier tecla para continuar ";
getch();
return;
}
else{
system("cls");
cout<<"No se encontro el codigo!!"<<endl
<<"Oprima cualquier tecla para continuar ";
getch();
return;
}
}

void listado_secuencial(){
system("cls");
alias=fopen(archivo,"rb+");
if(alias==NULL){
cout<<"no se puede abiri el archivo"<<endl
<<"Oprima cualquier tecla para continuar";
getch();
return;
}
fread(&registro,sizeof(registro),1,alias);
cout<<setw(10)<<"codigo"<<setw(15)<<"descripcion"<<setw(15)<<"precio_lista"<<setw(15)<<"preci
o_venta"<<setw(10)<<"descuento"<<setw(12)<<"garantia"<<endl

<<"=======================================================================
===="<<endl<<endl;
while(!feof(alias)){
if(registro.codigo!=0){

cout<<setw(10)<<registro.codigo<<setw(15)<<registro.descripcion<<setw(15)<<registro.precio_lista<<
setw(15)<<registro.precio_venta<<setw(10);
if(registro.descuento==-1){
cout<<"No posee";
}
else{
cout<<registro.descuento;
}
cout<<setw(12);
if(registro.garantia==1){
cout<<"Si";
}
else{
cout<<"No";
}
cout<<endl<<endl;
}

fread(&registro,sizeof(registro),1,alias);
}
getch();
fclose(alias);
return;
}

void baja_logica_secuencial(){
int codigo;
int val=-1;
system("cls");
alias=fopen(archivo,"rb+");
if(alias==NULL){
cout<<"No se puede abrir el archivo"<<endl
<<"Oprima cualquier tecla para continuar";
getch();
fclose(alias);
return;
}
temporal=fopen(a_temporal,"wb+");
if(temporal==NULL){
cout<<"No se puede abrir el archivo"<<endl
<<"Oprima cualquier tecla para continuar";
getch();
fclose(temporal);
return;
}
cout<<"digite el codigo: ";cin>>codigo;
fread(&registro,sizeof(registro),1,alias);
while(!feof(alias)){
if(registro.codigo==codigo){
registro.codigo=0;
strcpy(registro.descripcion,"");
registro.precio_lista=0;
registro.precio_venta=0;
registro.descuento=0;
registro.garantia=0;
fwrite(&registro,sizeof(registro),1,temporal);
val=0;
}
else{
fwrite(&registro,sizeof(registro),1,temporal);
}
fread(&registro,sizeof(registro),1,alias);
}
fclose(alias);
fclose(temporal);
remove(archivo);
rename(a_temporal,archivo);
if(val==0){
system("cls");
cout<<"registro borrado satizfactoriamente"<<endl
<<"Oprima cualquier tecla para continuar";
getch();
return;
}
else{
system("cls");
cout<<"codigo no encotrado"<<endl
<<"Oprima cualquier tecla para continuar";
getch();
return;
}

void baja_fisica_secuencial(){
system("cls");
alias=fopen(archivo,"rb+");
if(alias==NULL){
cout<<"No se puede abrir el archivo"<<endl
<<"Oprima cualquier boton para continuar";
getch();
fclose(alias);
return;
}
temporal=fopen(a_temporal,"wb+");
if(alias==NULL){
cout<<"No se puede abrir el archivo"<<endl
<<"Oprima cualquier boton para continuar";
getch();
fclose(alias);
return;
}
fread(&registro,sizeof(registro),1,alias);
while(!feof(alias)){
if(registro.codigo!=0){
fwrite(&registro,sizeof(registro),1,temporal);
}
fread(&registro,sizeof(registro),1,alias);
}
fclose(alias);
fclose(temporal);
remove(archivo);
rename(a_temporal,archivo);
cout<<"Baja fisica Secuencial Exitosa!!"<<endl
<<"Oprima cualquier boton para continuar";
getch();
return;
}

void salir(){
system("cls");
cout<<endl<<endl;
cout<<" Gracias por la visita ";
getch();
system("cls");
exit(0);
}
//****************************************************************************************

Você também pode gostar