Buscamos una libreta de direcciones sencilla programada en lenguaje C con puntuaciones altas
Esto tuyo no es sencillo, a mí me ha costado mucho esfuerzo. Compilado y aprobado bajo TC3.0.
#include
#include
#include
# define MaxLenthOfAddBook 50 //El número máximo de entradas permitidas en la libreta de direcciones
void DeleteRecord(void);
void AddItem(void);
void SearchRecord (void) ;
void ModifiyItem(void);
void PrintItemByIndex(unsigned int iIndex);
void DisplayAllItems(void);
typedef struct strAddBook
{
unsigned char Bandera; //Registrar información de estado
unsigned char Nombre[20];
unsigned char Agregar [20];
unsigned char ZipCode[6]; //Código postal
unsigned char Email[20];
unsigned char qq[ 12];
unsigned char MobilePhone[20];
}defAddBook;
typedef enum strItem{
Índice,
Nombre,
Agregar,
Código postal,
Correo electrónico,
qq,
Teléfono móvil ,
}defItem; // Elemento de la libreta de direcciones
unsigned int FindItem(defItem iType);
defAddBook MyAddBook[MaxLenthOfAddBook] //Definir matriz de la libreta de direcciones;
carácter sin firmar RunFlag;
///
///Delay
retraso nulo (iValue largo sin firmar)
{
unsigned int i;
while(iValue--)
{
for(i=0;i <30000; i++);
}
}
void main(void)
{
sin firmar char ch;
RunFlag = 1;
while (RunFlag)
{
//getchar();
clrscr(); //Borrar pantalla
printf("Libreta de direcciones\r\n");
printf("\
Seleccione una tarea:\ r\n\
[F] Mostrar todos los registros\r\n\
[A] Agregar un registro a la lista\r\n\
[ S] Buscar en lista\r\n\
[D] Eliminar una lista de formulario de registro\r\n\
[M] Modificar un elemento\r
\n\
[E] Salir\r\n");
printf("Por favor ingrese su elección:");
ch = 0;
ch = getche(); //Obtener el valor de entrada
if('a' <= ch && ch <= 'z') ch -= 32; Escribir switch
switch (ch)
{
case 'F':
DisplayAllItems();
romper;
caso 'A':
AddItem();
romper;
caso 'S':
SearchRecord();
romper;
caso 'D':
EliminarRecord();
romper;
caso 'M':
ModifiyItem();
descanso;
caso 'E':
RunFlag = 0;
ir a QuitLable;
romper;
valor predeterminado:
clrscr();
printf("Elección no reconocida\r\n");
break;
}
}
QuitLable:
clrscr();
printf("Salir de la libreta de direcciones.");
getchar();
}
///
///Mostrar todos los registros
void DisplayAllItems(void)
{
unsigned int i;
clrscr();
for(i=0;i { PrintItemByIndex(i); //printf("\r\n"); } printf("Este es el fin\r\n"); demora(100); getch(); } /// ///Mostrar registros p> void PrintItemByIndex(unsigned int iIndex) { unsigned int i; if(iIndex >= MaxLenthOfAddBook){ //El índice no puede Se excede la longitud máxima de la matriz printf("El índice está fuera de rango.\r\n"); getchar(); return ; } if(MyAddBook[iIndex].Flag > 0){ //Si no está vacío printf("Índice: %d\r\ n", iIndex); //Imprimir número de serie printf("Nombre: %s\r\n",MyA ddBook[iIndex].Nombre); //Nombre printf("DIRECCIÓN: %s\r\n",MyAddBook[iIndex].Agregar); p> printf("Código postal: %s\r\n",MiAddBook[iIndex].Código postal); printf("Correo electrónico: %s\r\n",MiAddBook[iIndex].Correo electrónico) ; printf("Número QQ: %s\r\n",MyAddBook[iIndex].qq); printf("Teléfono móvil: %s\r\n" ,MyAddBook[iIndex].MobilePhone); } //printf("Imprimir sobre\r\n"); } /// ///Agregar registros void AddItem(void) { int i, EmptyFlag = 0; clrscr(); printf("Agregar un elemento a la lista.\r\n"); for (i = 0;i < MaxLenthOfAddBook;i++) //Buscar registros vacíos { if (MyAddBook[i].Flag > 0) continue //Si no está vacío, lo siguiente será; no se ejecutará Sentencia MyAddBook[i].Flag = 1; //Marca este registro para usar EmptyFlag = 1; printf("Item %d está vacío .\r\n", i); break; //Salir del bucle } if (EmptyFlag == 0) { printf("La lista está llena.\r\nPresione enter para continuar..."); //El registro está lleno getchar (); return ; } printf("Por favor, introduzca el nombre:\r\n"); scanf( "%s", MyAddBook [i].Name); printf("Por favor, ingrese Agregar:\r\n"); scanf("%s", MyAddBook[ i].Add); printf("Ingrese el código postal:\r\n"); scanf("%s", MyAddBook[i].ZipCode); printf("Ingrese el correo electrónico:\r\n"); scanf("%s", MyAddBook[i].Email); printf ("Ingrese qq: \r\n"); scanf("%s", MyAddBook[i].qq); printf("Ingrese Teléfono móvil:\ r\n"); scanf("%s", MyAddBook[i].MobilePhone); printf("Terminado, presione e nter.\r\n"); PrintItemByIndex(i); demora(100); getch(); } /// ///Consulta void SearchRecord(void) { elección de char unsigned; unsigned int Temp; defItem ch; clrscr(); //Borrar pantalla printf(" Elemento de búsqueda.\r\n"); printf("\ [1] Por índice\r\n\ [2] Por nombre \r\n\ [3] Por dirección\r\n\ [4] Por código postal\r\n\ [5] Por Correo electrónico\r\n\ [6] Por número QQ\r\n\ [7] Por número de teléfono móvil\r\n"); printf("Por favor seleccione una opción:"); elección = getch(); clrscr(); if (elección < '1 ' || elección > '7') { //Si la elección está fuera de rango printf("Error en la elección.\r\nPresione Enter para continuar..." ); getchar(); //Esperar a que se presione la tecla return; //Salir de la función } ch = elección - '1' ; switch (ch) //Operación basada en selección { case Index: printf(" Introduzca el índice: "); scanf("%d",&Temp); PrintItemByIndex(Temp); delay(100); getch(); break; nombre del caso: caso Agregar: caso Código Postal: caso Correo electrónico: caso qq: caso Teléfono móvil: Temp = FindItem(ch); if(Temp < MaxLenthOfAddBook ){ PrintItemByIndex(Temp); //Si el valor devuelto es correcto, imprímalo }else{ printf(" No existe tal registro.\r\n "); } delay(100); getch(); break ; predeterminado: break; } } /// ///Encuentra el artículo y devolver el número de serie unsigned int FindItem(defItem iType) { unsigned int i; p> int rtn; //Valor de retorno unsigned char strTemp[20]; //Variable temporal para almacenar la cadena printf("Ingrese el parámetro:" ) ; scanf("%s",strTemp); //Ingrese los parámetros a encontrar for(i = 0;i { if(MyAddBook[i].Flag == 0) continue; //Si el registro está vacío, la siguiente declaración no se ejecutará switch(iType) { nombre del caso: rtn = strcmp(strTemp,MyAddBook[i].Name //Compara dos cadenas break ; case Agregar: rtn = strcmp(strTemp,MyAddBook[i].Add); //Compara dos cadenas break; p> case ZipCode: rtn = strcmp(strTemp,MyAddBook[i].ZipCode); //Compara dos cadenas break; case Email: rtn = strcmp(strTemp,MyAddBook[i].Email //Compara dos cadenas break; case qq: p> rtn = strcmp(strTemp,MyAddBook[i].qq); //Compara dos cadenas break; case MobilePhone: rtn = strcmp(strTemp,MyAddBook[i].MobilePhone); //Compara dos cadenas break; } if(rtn == 0) return i; //Si las cadenas son iguales, devuelve i } return MaxLenthOfAddBook; //Si no se puede encontrar el valor máximo } /// ///Eliminar void DeleteRecord(void) { int iIndex = 0; clrscr(); printf("Eliminar una libreta de direcciones del formulario de registro.\r\n"); printf( "Por favor, introduzca el index:"); scanf("%d",&iIndex); clrscr(); if(iIndex < MaxLenthOfAddBook) { MyAddBook[iIndex].Flag = 0; //La bandera está vacía printf("Delete OK.\r\n"); } else{ printf("El índice está fuera de rango.\r\n"); } printf("Presione cualquier tecla para continuar.. ."); getch(); } /// ///Modificar registro void ModifiyItem(void) { unsigned int index,choice; clrscr(); printf("Por favor ingrese el índice:"); scanf("%d",&index); //Ingrese el número de serie if(index < MaxLenthOfAddBook){ printf ("Modificar elemento.\r\n"); printf("\ [1] Modificar nombre\r\n\ [ 2] Modificar dirección\r\n\ [3] Modificar código postal\r\n\ [4] Modificar correo electrónico\r\n\ [5 ] Modificar número QQ\r\n\ [6] Modificar número de teléfono móvil\r\n"); Choice = getch(); clrscr(); if (choice < '1' || Choice > '6') { //Si la elección está fuera de rango printf( "Error en la elección.\r\nPresione Enter para continuar..."); delay(100); getch() //Espera la clave. return ; //Salir de la función } switch (elección - '0') //Operación basada en la selección { caso 1: printf("Ingrese el nombre:\r\n"); scanf("%s", MyAddBook[index]. Nombre); break; caso 2: printf("Ingrese Agregar:\r\n"); scanf("%s", MyAddBook[index].Add); break; caso 3: printf("Ingrese el código postal:\r \n"); p> scanf("%s", MyAddBook[index].ZipCode); break; caso 4: printf("Por favor, introduzca el correo electrónico:\r\n"); scanf("%s", MyAddBook[index].Email); break; p> caso 5: printf("Ingrese qq:\r\n"); scanf("%s", MyAddBook[index].qq) ; break; caso 6: printf("Ingrese teléfono móvil:\r\n"); scanf( "%s", MiAddBook[ índice ].MobilePhone); descanso; predeterminado: descanso; } }else{ printf("El índice está fuera de rango.\r\n"); demora(100); getchar(); retorno; p> p> } printf("Terminado, presione enter.\r\n"); demora(100); obtener( ); }