Programación en lenguaje C, sistema de gestión de libreta de direcciones.
/*Utilice lenguaje C para escribir un programa de gestión de directorio telefónico con funciones de inserción, modificación, eliminación, visualización y consulta de datos
1. Los datos incluyen: nombre, unidad de trabajo, teléfono. número y dirección de correo electrónico.
2. El nombre y el número de teléfono del registro se pueden modificar.
3. Se pueden agregar o eliminar registros.
4. Se pueden mostrar todos los registros guardados.
5. Puedes buscar por nombre o número de teléfono.
Otro: Implementado usando estructura de matriz y sistema de archivos.
La estructura incluye nombre, unidad de trabajo, número de teléfono y correo electrónico
¡Absolutamente original, recién completado y probado la tarde del 12 de julio de 2010, en lenguaje C puro! */
#include lt;stdio.hgt;
#include lt;stdlib.hgt;
#include lt;string.hgt;
#define szSTR 64
#define fileDB "c:\\contact.txt"
struct CONTACT {
nombre de char[szSTR]; /*Nombre*/
char unit[szSTR] /*Unidad de trabajo*/
char tele[szSTR];/*Número de teléfono*/
char mail[szSTR];/*mail*/
};
typedef struct CONTACT CON;
#define BNAME 1
# define BUNIT 2
#define BTELE 4
#define BMAIL 8
#define BFULL 0xFF
int OPER[5] = { BFULL, BNAME, BUNIT, BTELE, BMAIL};
void input(CON * s, int mask)
{
if(mask amp; BNAME ) { printf("Ingrese el nombre del estudiante:"); scanf("s", s-gt; nombre }
if(mask amp; BUNIT) { printf("Ingrese el trabajo unidad:" ); scanf("s", s-gt; unidad); }
if(mask amp; BTELE) { printf("Ingrese el número de contacto: "); scanf("s ", s- gt;tele); }
if(mask amp; BMAIL) { printf("Ingrese su correo electrónico: "); scanf("s", s-gt;mail); }
}/*end input*/
void show (int id, CON * s)
{
if(!s ) return;
if(id)
printf("d\ts\ts\ts\ts\n",
id, s-gt; nombre, s-gt; unidad, s-gt; tele, s-gt; correo
else
printf("Nombre s unidad de trabajo s correo electrónico s\n ",
s-gt; nombre, s-gt; unidad, s-gt; tele, s-gt; correo);
/*end if*/
}/*end show*/
registro nulo(void)
{
CON s; >
input(amp;s, BFULL);
f = fopen(fileDB, "ab");
fwrite(amp;
s, tamaño de(s), 1, f);
fclose(f);
printf("¡Datos guardados!\n"); /*end regist*/
int Browse(char * key, fpos_t * p, CON * s)
{
FILE * f =0; i = 0, r = 0;
char * a = 0, * b = 0; fpos_t q;
si (!s) devuelve 0; > p>
f = fopen(fileDB, "rb");
if(!f) {
printf("No hay registros en la base de datos\n");
p>return 0;
}/*end if*/
printf("número\tnombre\tunit\tphone\temail\n");
printf("---------------------------------------- -------- --------\n");
while(!feof(f)) {
fgetpos(f, amp; q);
r = fread(amp;t, sizeof(t), 1, f);
if(rlt;1)break;
if(t.name[0] ==0) continuar;
if(key) {
a = strstr(t.name, key);
b = strstr(t.tele , clave);
if(a == 0 amp; amp; b == 0) continuar
}/*end if*/
if (p) *p = q;
if(s) memcpy(s, amp; t, sizeof(t));
show (i, amp; t);
}/*end while*/
fclose(f);
printf ("------ ------------------------------------------ \n");
return i;
}/*finalizar exploración*/
fpos_t query(CON * s)
{
char key[szSTR]=""; fpos_t p = 0; int r = 0;
printf("Ingrese su nombre o número de teléfono: "); p>
scanf("s ", clave);
r = navegar(clave, amp; p, s);
return r?p: -1;
}/* finalizar consulta*/
void clear(void)
{
ARCHIVO * f = 0; CON s;
fpos_t p = query(amp;s);
if(plt;0) return;
f = fopen(fileDB, "rb")
;
fsetpos(f, amp;p);
memset(amp;s, 0, sizeof(s));
fwrite(amp;s , sizeof(s), 1, f);
fclose(f);
printf("¡Registro eliminado!\n"); *end clear*/
void modificar(void)
{
ARCHIVO * f = 0; CON s;
fpos_t p = consulta(amp; s);
if(plt; 0) return
f = fopen(fileDB, "rb ");
fsetpos(f, amp; p);
for(;;) {
show(0, amp; s);
printf ( "Por favor seleccione: 1-nombre; 2-unidad de trabajo; 3-número de teléfono; 4-correo electrónico; 5-guardar y salir; 6-abandonar cambios y salir\n"); ", amp; cmd);
switch(cmd) {
caso 1:
caso 2:
caso 3:
caso 4:
input(amp; s, OPER[cmd]);
break
caso 5:
fsetpos(f, amp; p);
fwrite(amp; s, sizeof(s), 1, f
caso 6:
);fclose(f);
return;
default:
printf("Operación incorrecta, vuelva a ingresar.\n"); /p>
}/*end case*/
}/*mext*/
}/*end clear*/
int main( void)
{
int cmd = 0; CON s;
for(;;) {
printf("Dirección de bienvenida libro! Seleccione: 1-Agregar; 2-Consultar; 3-Eliminar; 4-Modificar; 5-Salir\n");
scanf("d", amp; cmd
switch(cmd) {
caso 0: devolver 0;
caso 1: registrar(); caso 2: consulta(amp; s);
caso 3: borrar();
caso 4: modificar(); > caso 5: navegar(0, 0, amp; s);
}//finalizar caso
}
return 0; >
p>
}