Código fuente de Printfc
# include & ltconio.h & gt
# include & ltstring.h & gt
#Definir tamaño 300
estructura typedef
{
char nombre[30];
int num
char todavía[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 el archivo*/
void data find();< / p>
visualización de datos nulos();
añadir datos nulos();
void DataDel();
void DataStatistic();
p>int main()
{
Registrar el artículo [tamaño]
int número = 20/*Establecer la cantidad del artículo * /
char fn
Printf ("\ t ~ ~ ~ ~Sistema de gestión de productos~ ~ ~ ~ "); p >
{
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. Búsqueda de información del producto\ n ");
Printf("\t\t4. Add Información del producto\ n ");
Printf("\t\t5. La información del producto ha sido eliminada\ n ");
Printf("\t\t6. Estadísticas de información del producto \ n ");
Printf("\t\t0.
Salir del sistema");
printf(" \ n \ t ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ \ n ");
printf ("\tIngrese una opción (número 0-6):");
fflush(stdin);
scanf("%c ", & ampfn);
fflush(stdin);
p>
puts(" \ n ");
Cambiar (fn) /*Cambiar a una función diferente */
{
Caso " 1":
Entrada de datos (Shangpin y número de amplificador);
Interrupción /*Entrar; información*/
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();
Interrupción; /*Agregar*/
Caso "5":
DataDel();
Interrupción /*Eliminar*/ p>
Caso "6":
DataStatistic ();
Break /*Información estadística*/
Caso "0": p>
Devuelve 0;
Valor predeterminado: puts("\t\t¡No existe tal elemento! ¡Volver al menú principal!");
Pausa;
}
Printf ("\ n \ t \ tOver! Presione cualquier tecla para continuar"
getch();
puts(" \ n ");
}
}
Entrada de datos nula (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 \ tIngrese la cantidad de productos:
scanf("); %d ", & ampn);
* nptr = n ;/*nptr devuelve la cantidad del producto*/
printf(" \ t \ tIngrese la información del producto %d inmediatamente: \n\n ", n);
while( i<n)
{
Printf("Ingrese el nombre del producto:", I+1) ;
scanf("%s ",& amp Shang Ming);
Printf("Ingrese el número de producto:", I+1);
scanf("%d ", & amp马浩);
Printf("Ingrese el fabricante del producto:", I+1
scanf("%s "); , & amp Shangjia);
Printf(" Ingrese el precio unitario del producto: ", I+1);
scanf("%f ",& ampJia Dan) ;
If (Jia Dan& gt= 0 & amp& amp Jia Dan<=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 es un valor no válido! \ 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 ' )
Retorno;
Otro
Printf("La opción ingresada es incorrecta\n ");
Retorno;
}/*Fin de función*/
Void DataFind() /* Buscar */
{
void OnNumber(registro * 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*/
caracteres/*opción*/
record com[SIZE];
int n;
if(DataRead(com &N)==1) /*Leer información del archivo* /
{
OnNumber(com, n); /*Primero ordenar por número de producto*/
Alto = n;
Hacer
{
printf(" \ n \ n \ t \ tIngrese el número de producto que está buscando: "
scanf("%); d ",& amp key);
bajo = 0; alto = n;
mientras(bajo & lt;=alto)
{
mid = (high + low)/2; /*Método de búsqueda media*/
if (key == 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]. nombre, com[mid]. num, com[mid]. Shang,
com[mid].price);
Break; /*Si lo encuentra, salga del bucle*/
}
if ( clave>com[mediados].
num)bajo = medio+1;
else alto = medio-1
}
if(bajo&gmuslo)
Printf( "\t\t, ¡este precio no fue encontrado!\ n ");
printf(" \ N \ t \ t¿Quieres continuar consultando (Y/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(" Ingrese el nombre del archivo que desea guardar: ");
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;i<n;i++)
fprintf(comPtr, "\n % 17s % 12d % 12s % 8.1f ", com[i]. nombre, com[i]. num, com[i]. Shang, com[i]. /p>
Intdataread (registro * com, int * nptr)/* Leer archivo */
{
int I = 0;
char archivo de datos[20];
FILE * comPtr
* nptr = 0;
Printf("Ingrese el nombre del archivo:");
p>
scanf("%s ", archivo de datos);
If ((comptr = fopen (datafile, " r")) == null)/*Abrir archivo* /
{
Printf("¡Este 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, " %s%d%s%f " y ampcom[i]. Nombre y ampcom[i]. Número y ampcom [yo].
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<n;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 precio Los números de producto se ordenan 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 "); p>
}/*Visualización del resultado final*/
Void OnPrice(record *com, int n) /*Ordenar por precio unitario*/
{ int i , j;
Registrar la temperatura
printf(" \ t \ tOrdenar por precio unitario-\ n \ n "); el número total de productos es %d :\n ",n);
for(j = 0; j & ltn-1; J++) /*bubble sort*/
for (I = 0; i <n-j-1;i++)
if(com[i].precio>com[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<n ;i++)
printf(" % 3d % 17s % 12d % 12s % 8.1f \n ", i+1, com[i].nombre, com[i].num, com[i] .Shang,
com[i].price);
}
Anular en número (registro * com, int n)/* Organizar en orden numérico */
{
int i, j;
Registrar temperatura
printf(" \ t \ t Ordenar 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;i & ltn-j-1;i++)
if(com[i].num & gtcom[i+1 ] . Número)
{
temp = com[I];
com[I]= com[I+1];
< p. >com[I+1]= temp;}
printf(" \ n \ tLos resultados ordenados por número de producto son los siguientes (de pequeño a grande):\ n \ n ");
Printf("Número de serie\t \t\Nombre del producto\tNúmero de producto\tFabricante\tPrecio unitario\n ");
for(I = 0 ;i<n ;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 \tSe ha completado la lectura de la información !\n\n");
printf("\t\tIngrese el número total de productos que se agregarán:");
scanf(" %d ", & ampm);
printf(" \ t \ tIngrese la información del producto %d inmediatamente:\n\n ", m
while(i & ltm)
{
Printf("Nombre del producto %d:", I+1);
scanf("%s ",& amp Shang Ming ); p>
Printf ("Número de artículo del %d artículo:", I+1
scanf ("%d ", & amp Ma Hao
); Printf("Fabricante del producto %d:", I+1);
scanf("%s ", & amp Shangjia
Printf("Precio unitario del artículo %); d:", I+1);
scanf("%f ", & ampJaDan);
If (JiaDan> = 0 & amp& ampJia Dan<=1000) /*Solo válido se pueden ingresar precios unitarios*/
{
stracpy(com[i+n].Name, Shang 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 es un valor no válido, vuelva a ingresarlo. \ n \ n ");
}
Printf("¿Desea guardar los datos que acaba de ingresar (S/N)?" );
p>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("La entrada es incorrecta, regresar al nivel anterior\n ");
}
}
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 "); & amp; n)==1)
{
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) ;
Si (m & gt= 1. & ampm & lt=n)
{
for(I = m-1;i<n-1; i++)
com[I ]= com[I+1];
Almacenamiento de datos(com, n-1);
}
}
}
Estadísticas de datos nulos()/*estadísticas*/
{
int alto=0, bajo= 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;i<n;i++)
{
if(com[i].precio& gmuslo)
{
alto = com[i]. precio;
g = I;
}
if(com[i].precio<low)
{ p>
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:\t%d\t%d\t%d\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;i<n;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");
p>Printf ("Los productos con mayor precio unitario son: % 3d % 17s % 12d % 12s % 8.1f \ n \ n ", g+1, com [g]. Nombre, com [g].
Printf("Los productos con el precio unitario más bajo son: % 3d % 17s % 12d % 12s % 8.1f \ n ", l+1, com [l]. nombre, com [l]. No.,. p >
}/*Fin de estadísticas*/
}