Explicación del código fuente c
# incluir ltconio.h gt
# incluir ltstring.h gt
#definir tamaño 300
estructura typedef
{
char nombre[30];
int num
char Shang[10];
Precio flotante;
}Registro;
void DataInput(record *com, int * nptr);
int DataRead(record *com, int * nptr);
void DataStorage(record *com, int n /*Guardar información en un archivo*/
void data find();
void visualización de datos();
void data add();
void DataDel();
void DataStatistic();
int main()
{
Registrar el producto [tamaño];
int número = 20/*Establecer la cantidad del producto*/
char fn
Printf ("\ t ~ ~ ~ ~Sistema de gestión de productos~ ~ ~ ~ ");
while(1)
{
Printf("\n\t\t1. Entrada de información del producto\ n "); /*Mostrar menú principal*/
Printf("\t\t2. Visualización de información del producto \ n ");
Printf("\t\t3. Buscar información del producto\ n ");
Printf("\t\t4. Agregar información del producto\ n ")
Printf("\t\t5. La información del producto ha sido eliminada\ n ");
Printf("\t\t6. Estadísticas de la información del producto\ n "); /p >
Printf("\t\t0.
Salir del sistema");
printf(" \ n \ t ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ \ n ");
printf ("\tIngrese una opción (número 0-6): ");
fflush(stdin);
scanf("c", ampfn); p>
puts(" \ n ");
Cambiar (fn) /*Cambiar a una función diferente*/
{
Caso " 1" :
Entrada de datos (número de amplificador Shangpin);
Pausa; /*Información de entrada*/
Caso "2": visualización de datos();
Pausa; /*Visualización de información*/
Caso "3":
búsqueda de datos();
Pausa /* Búsqueda de información*/
Caso "4":
DataAdd();
Pausa /*Agregar*/
Caso " 5 ":
DataDel();
Break; /*Delete*/
Caso "6":
DataStatistic() ;
Break; /*Estadísticas de información*/
Caso "0":
Devuelve 0
Valor predeterminado: puts( " \t\t¡No existe tal elemento!");
Pausa;
Printf ("\n\t\t¡Final! Presione cualquier tecla para continuar"); p>getch();
puts(" \ n ");
}
}
Ingreso de datos nulo (registro * com, int * nptr)/*Entrada de información del producto*/
{
int I = 0;
int n;/*Número total de entradas* /
char YesOrNo/*Determinar si se guardará*/
Char Shangming[30];/*Nombre de la empresa*/
Territorio de Ma Hao /* número de producto*/
char Shangjia[10]; /*precio unitario*/
Jia Dan flotante;
printf("\t\tPor favor ingrese el cantidad de bienes: ");
scanf("d", ampn);
* nptr = n; /*nptr devuelve Cantidad de producto*/
printf(" \ t \ tIngrese esta información del producto inmediatamente: \n\n ", n
while(iltn)
{
Printf( "Ingrese el nombre del producto: ", I 1);
scanf("s ", amp Shangming
Printf("Ingrese el número de producto del producto:" , I 1);
scanf("d", & Ma Hao);
Printf("Ingrese el fabricante del producto:" ", I 1);
scanf ("s ", amp Shangjia);
Printf ("Ingrese el precio unitario del producto: ", I 1
scanf("f "); , amp Jia Dan
If (Jia Dan gt= 0 amp amp Jia Dan lt=1000) /*Solo se pueden ingresar precios unitarios válidos*/
{
strcpy(com[i].Nombre, Shangming);
com[i].
número = Ma Hao;
strcpy(com[i]. Shang, Shangjia
com[i]. Precio = Jia Dan;
I = I 1
}
Otros
Printf("El precio unitario ingresado no es válido value! \ n \ n ");
}/*End while*/
Printf("¿Quieres guardar los datos que acabas de ingresar (Y/N)? ") ;/*Elija guardar*/
fflush(stdin);
scanf("c ", ampYesOrNo);
if(YesOrNo== 'y' ||YesOrNo=='Y ')
Almacenamiento de datos(com, n);
else if(YesOrNo == ' N ' | | YesOrNo == ' N ' ) p>
Retorno;
Otro
Printf("La opción ingresada es incorrecta\n ");
Retorno;
}/*Finalizar función*/
Void DataFind() /* Buscar */
{
void OnNumber(record *com, int n); /*Ordenar por número de producto*/
int key; /*key es el valor clave que se encontrará*/
int low = 0 /*límite inferior* /
int alto; /*límite superior*/
int medio/*valor medio*/
char ans/*opción*/
record com[ TAMAÑO];
int n;
if(DataRead(com amp; N)==1) /*Leer información del archivo*/ p>
{
OnNumber(com, n); /*Primero ordenar por número de producto*/
Alto = n;
Hacer p>
{
printf("\n\n\t\tIngrese el número de producto que está buscando: ");
scanf("d", amp clave);
p>
baja = 0; alta = n;
mientras(baja lt; = alta)
{
mid = (alto bajo)/2 ;/*Método de búsqueda media*/
if (clave == com[mid]). Número)
{
printf("\n\t\tEstás buscando d producto\n",mid 1);
printf("\ t\tLos resultados son los siguientes:\n\n");
Printf("Número de serie\t \t\Nombre del producto\tNúmero de producto\tFabricante\tPrecio unitario\n");
p>printf(" 3d 17s 12d 12s 8.1f \ n ",mid 1,com[mid].name,com[mid].num,com[mid].shang,
com [mid].
Break; /*Si lo encuentra, salga del bucle*/
}
if(key gt; com[mid]. ] .
num)bajo = medio 1;
else alto = medio-1
}
if(bajo gt alto)
Printf ("\t\t, ¡este precio no fue encontrado!\ n ");
printf(" \ N \ t \ t¿Quieres continuar consultando (S/N)?"); p>
ans = getch();
}
while(ans = = ' Y ' | | ans = = ' Y '); . while */
}
}
Almacenamiento de datos nulo (registro * com, int n) /*Ingrese y guarde el archivo*/
{
int I;
FILE * comPtr
Nombre de archivo de caracteres [20];
Printf("Por favor ingrese para guardar Nombre del archivo: ");
scanf("s ", nombre del archivo);
Printf("Guardando información del producto en el archivo, espere...\ n ");
if((comPtr=fopen(FileName, " w"))==NULL)
Printf("File\n "no existe);
Otro
for(I = 0;iltn;i)
fprintf(comPtr, "\n 17s 12d 12s 8.1f", com[i].name , com[i]. num, com[i]. precio);
fclose(comPtr);
}
Intdataread (registro * com, int *). nptr)/* Leer archivo */
{
int I = 0;
archivo de datos char[20]; * comPtr
* nptr = 0;
Printf("Ingrese el nombre del archivo: ");
scanf(" s ", archivo de datos);
If ((comptr = fopen (archivo de datos, " r")) == null)/*Abrir archivo*/
{
Printf("Este el archivo no está disponible, vuelva a ingresar \n ");
Devuelve 0;
}
Otros
{
Printf("Leyendo el precio unitario del producto, espere...\n ");
Y (! feof(comPtr)
{
fscanf(comPtr, " sdsf ", ampcom[i]. Nombre ampcom[i]. Número ampcom[i]. Todavía ampcom[i].
precio
i;
}
* nptr = I
printf("\n"); >
fclose(comPtr);
Retorno 1;
}
}
visualización de datos anulados()
{
void OnPrice(record *com, int n); /*Según precio unitario*/
void OnNumber(record *com, int n); *Según número de producto*/
int N
int I
Registro com[300]
char SíNo/ *Si presionar Visualización secuencial*/
char tp
if(DataRead(com amp; N)==1) /*Leer datos del archivo*/
{
Printf("Número de serie\t \t\Nombre del producto\tNúmero de producto\tFabricante\tPrecio unitario\n");
for(I = 0; i ltn; i )
printf(" 3d 17s 12d 12s 8.1f \ n ", i 1, com[i]. nombre, com[i]. num, com[i]. Shang, com[ i]. Precio);
Printf("¿Quieres mostrarlo en orden? (Sí/No)?");
fflush(stdin);
scanf("c ", ampyes no);
if(YesNo=='y'||YesNo=='Y ')
{
printf ("\tIngrese el método de clasificación:\n");
Printf("\t(1. Ordenar por precio de menor a mayor; 2. Ordenar por número de producto de menor a mayor .) " );
fflush(stdin);
scanf("c ", ampTP);
if(tp=='1 ')
OnPrice(com, N);
si no (tp =='2 ')
OnNumber(com, N);
Otros
printf(" \ t¡La entrada es incorrecta! \ n "
}
}
}/*Resultado final; display* /
Void OnPrice(record *com, int n) /*Ordenar por precio unitario*/
{ int i, j
Registrar temperatura ;
p>
printf(" \ t \ t Ordenar por precio unitario - \ n \ n ");
Printf("El número total de productos es d: \n ", n);
for(j = 0;j ltn-1;J) /*clasificación de burbujas*/
for(I = 0;iltn-j- 1;i)
if(com[i].precio gtcom[i 1].
precio)
{
temp = com[I];
com[I]= com[I 1];
com [I 1]= temp;
}
printf("\n\t\tLos resultados ordenados por calificaciones son los siguientes (de menor a mayor):\n\n" ) ;
Printf("Número de serie\t \t\Nombre del producto\tNúmero de producto\tFabricante\tPrecio unitario\n");
for(I = 0; i ltn; i )
printf(" 3d 17s 12d 12s 8.1f \ n ", i 1, com[i].name, com[i].num, com[i].shang, p>
com[i]. Precio);
}
Anular en número (registro * com, int n)/*organizar en orden numérico*/
{
int i, j;
Registrar temperatura;
printf(" \ t \ tOrdenar por número de producto-\ n \ n ");
Printf("El número total de productos es d:\n ",n);
for(j = 0; j ltn-1; j )
for(I = 0;iltn-j-1;i)
if(com[i].num gtcom[i 1].número)
{ p >
temp = com[I];
com[I]= com[I 1];
com[I 1]= temp;
}
printf(" \ n \ tLos resultados ordenados por número de producto son los siguientes (de pequeño a grande): \ n \ n "); \ t \t \Nombre del producto\tNúmero de producto\tFabricante\tPrecio unitario\n ");
for(I = 0;iltn;i)
printf(" 3d 17s 12d 12s 8.1f \n ", i 1, com[i]. nombre, com[i]. num, com[i]. Shang,
com[i].
precio);
}
Void DataAdd() /* Agregar */
{
int i=0, n, m ;/*Nombre del producto*/
Char Shangming[30];
Territorio de Ma Hao;/*Fabricante*/
char Shangjia[ 10]; /p>
Float jadan;
char YesOrNo
record com[SIZE];
Printf ("\ t \ tLeer información de datos originales-\ n ");
if(DataRead(com & n)==1)
{
printf(" \ t \ t¡La información de lectura se ha completado! \ n \ n ");
printf(" \ t \ tIngrese el número total de productos que se agregarán: ");
scanf("d ", ampm);
printf(" \t\tIngrese la información de este producto inmediatamente:\n\n ", m);
while(Iltm)
p>{
Printf("Nombre del producto d: ", I 1);
scanf("s ", amp aún está claro
Printf("); Número de artículo del artículo d: ", I 1);
scanf("d ", ampMa Hao);
Printf("Fabricante del artículo d: ", I 1);
scanf ("s ", amp Shangjia);
Printf ("Precio unitario del artículo d: ", I 1
p>
); scanf("f ", amp Jia Dan);
If (Jia Dan gt= 0 amp amp Jia Dan lt=1000) /*Solo se pueden ingresar precios unitarios válidos*/ p>
{
strcpy(com[i n].Nombre, todavía Ming);
com[i n]. num = Ma Hao;
strcpy(com[i n]. Shang, Shangjia);
com[i n].
Precio = Jia Dan;
I = I 1
}
Otros
Printf("El precio unitario ingresado no es válido valor, ¡Vuelva a ingresar! \ n \ n ");
}
Printf("¿Desea guardar los datos que acaba de ingresar (Y/N)?")
fflush(stdin);
scanf("c ", ampYesOrNo);
if(YesOrNo=='y'||YesOrNo==' Y ')
Almacenamiento de datos(com, n m);
else if(YesOrNo == ' N ' | | YesOrNo == ' N ')
Regresar ;
Otros
Printf("Entrada incorrecta, volver al nivel anterior\n ");
Regresar;
}
}
voiddateddel()//Eliminar
{
void OnNumber(record *com, int n);
record com[SIZE];
int I; /*Número total de registros*/
int n;*Número de registro a eliminar*/
int m;
Printf ("\ t \ tLeer información de datos original-\ n "
if (DataRead(com, ampn)==1) p>
{
printf(" \ t \ tLos datos originales son los siguientes: \ n \ n ");
OnNumber(com, n
Printf("Ingrese el número de serie del registro que desea eliminar ");
scanf("d", ampm);
if (m gt= 1. ampm lt=n)
{
for(I = m-1;iltn-1;i)
com[I]= com[ I 1];
Almacenamiento de datos(com, n-1);
}
}
}
Estadísticas de datos nulos ()/* estadísticas */
{
int high = 0, low = 200, ave = 0
int n, I; , suma = 0;
int g, l;
registro com[TAMAÑO];
Printf("Leer información de datos-\ n ");
if( DataRead(com, ampn)==1)
{
Printf("El número total de productos es d\n\n ", n );
for( I = 0;iltn;i)
{
if(com[i].precio gt alto)
{
alto = com[i]. Precio;
g = I;
}
if(com[i].priceltlow)
{
bajo = com[i]. precio;
l = I;
}
suma = com[i].
Precio;
}
ave = suma/n;
printf(" \ t \ tHighest \ tlo west \ t promedio \ n "); Valor calculado*/
Printf("Estadísticas de precio unitario del producto: \td\td\td\n\n ", alto, bajo, promedio
Printf("Número de serie); \ t \t \Nombre del producto\tNúmero de producto\tFabricante\tPrecio unitario\n ");
for(I = 0;iltn;i)
printf(" 3d 17s 12d 12s 8.1f \n ",i 1,com[i].nombre,com[i].num,com[i].shang,
com[i].precio);
printf("\t\tNúmero de serie\t\tNombre del producto\tNúmero de producto\tPrecio unitario del fabricante\n");
Printf("El producto con el precio unitario más alto es: 3d 17s 12d 12s 8.1f \ n \ n ", g 1, com [g]. Nombre, com [g].
Printf("Los productos con menor precio unitario son: 3d 17s 12d 12s 8.1f \ n ", l 1, com [l]. nombre, com [l]. número,.
}/*Fin de estadísticas*/
}