Red de conocimiento informático - Conocimiento sistemático - Explicación del código fuente c

Explicación del código fuente c

# incluir ltstdio.h gt

# 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);

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 ' )

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*/

{

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 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)?");

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,

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)

{

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*/

{

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)

{

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*/

}