Red de conocimiento informático - Descarga de software - Escribir un programa de gestión de libreta de direcciones en lenguaje C

Escribir un programa de gestión de libreta de direcciones en lenguaje C

Descargo de responsabilidad: no original

/*Libreta de direcciones personal*/

# include & ltstdio.h & gt

# include & ltstdlib.h & gt< / p>

# include & ltstring.h & gt

Datos de estructura b{

nombre char[8];

Número de teléfono de peaje[16] ;

teléfono móvil char[16];

Dirección de carácter[16];

Unidad de carga[16];

struct dataWab * nextPtr

};/*Estructura de autorreferencia, utilizada como estructura de datos de la libreta de direcciones*/

typedef struct dataWab DATAWAB

typedef DATAWAB * DATAWABPTR

void insertWab(DATAWABPTR*, char[], char[], char[], char[], char[] /*insertar función*/

menú vacío); wab(void) ;/*Función de menú*/

void print wab(DATAWABPTR);/*Función para imprimir todos los registros*/

void seekWab(DATAWABPTR, char[]) ;/*Función de búsqueda */

void deleteWab(DATAWABPTR, char[]); /*Función de eliminación*/

void modificarWab(DATAWABPTR, char[]); function*/

int test (DATAWABPTR); /*Función de prueba, prueba si hay un registro en la libreta de direcciones*/

void printone(DATAWABPTR); función de registro único*/

int control wab(void);/*Función de control de rama del programa*/

int main()

{

DATAWABPTR startPtr = NULL

DATAWABPTR tempPtr

FILE * fileWab

menú char /*variable de control de operación del menú*/

inserción de caracteres; /*insertar variable de control de confirmación */

nombre de modificación de caracteres[8] /*Almacenamiento de nombre temporal durante la búsqueda*/

nombre de eliminación de caracteres[8]; *Almacenamiento temporal del nombre durante la eliminación */

char tempName[8];/*Almacenamiento temporal del nombre*/

char phone[16];/*Almacenamiento temporal del teléfono*/

char temp mobile[16];/*Almacenamiento temporal del teléfono móvil*/

char tempAddress[16];/*Almacenamiento temporal de direcciones*/

char tempUnit[ 16];/*Unidad de almacenamiento temporal*/

char seek name[8]; /*Almacenamiento de nombre temporal durante la búsqueda*/

If (! (fileWab=fopen("wab.dat","rb"))

Devuelve 0;

tempPtr = (DATAWABPTR)malloc(sizeof(data wab));

while(fread(tempPtr, sizeof(DATAWAB), 1, fileWab)==1){

tempPtr-& gt; nextPtr = startPtr

startPtr = tempPtr

te

mpPtr =(DATAWABPTR)malloc(tamañode(datos wab));

}

fclose(fileWab);

puts(" \ n \ n \ t \tBienvenido a la Libreta personal de direcciones 1.0 \n ");

menu wab();

menu = getch();

Y (menu!= ' 6'){

Cambiar (menú){

Caso "1":

imprimir wab(iniciar ptr);

Pausa ;

Caso "2":

while(controlWab()){

printf("\nBuscar nombre:\n# >);

scanf("%s ", buscarNombre);

seekWab(startPtr, buscar nombre

}

Romper;

p>

Caso "3":

while(controlWab()){

puts(" \ nIngrese información personal\ n ");

printf(" nombre:");

scanf("%s ", tempName);

printf(" \ n teléfono:");

scanf ("%s ",teléfono temporal);

printf("\nteléfono móvil:");

scanf("%s",tempMobile);

printf("\n dirección:");

scanf("%s ",dirección temporal);

Printf("\nunit:");

p >

scanf("%s ", unidad temporal);

Printf("Presione 1 \ n # > " para ingresar correctamente

insert = getch()); ;

if(insert=='1 ')

insertar wab(& startPtr, tempName, tempTelephone, tempMobile,

tempAddress, temp unit) ;

}

Pausa;

Caso "4":

mientras(controlWab()){

printf (" \ n eliminar nombre \ n # > ");

scanf("%s ", eliminar nombre

deleteWab(startPtr, eliminar nombre

);

p>

}

Interrupción;

Caso "5":

mientras(controlWab()){

printf( " \ nModificar nombre\ n # > ");

scanf("%s ", modificar nombre);

modifyWab(startPtr, modificar nombre);

}

Pausa;

Valor predeterminado:

puts("\n\nError en la opción de entrada, vuelva a ingresar\n");

p>

Pausa;

}

menú wab();

menú = getch();

}

p>

if((fileWab=fopen("wab.dat "," wb"))==NULL)

Devuelve 0;

mientras(iniciarPtr! =NULO){

fwrite(startPtr, sizeof(DATAWAB), 1, archivo wab

startPtr = startPtr-& gt; p>puts(" \ n \ n \ t \ tGracias por usar la Libreta personal de direcciones 1.0, adiós\ n "

}

Void menuWab(void) /*Menu función */

{

Puts ("\ t \ tMenú principal");

puts(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *);

puts(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *);

puts(" * * \t<<-1->;>Todos los registros\t\t

puts( " * * \ t<<-3->>Agregar registro\t\t

puts(" * * \t<<-5 ->;& gtModificar registro\t\t

puts(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *);

puts(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *);

puts(" \ nPor favor seleccione 1-6 ");

printf(" # >;));

}

void insert wab(DATAWABPTR * tempPtr, char temp2Nombre[], char temp2Teléfono[],

char temp2Mobile[], char temp2Address[], char temp2Unit[])

/*Insertar función* /

{

DATAWABPTR newPtr

new ptr =(DATAWABPTR)malloc(sizeof(data wab));

strcpy(new ptr-& gt; nombre, nombre temporal 2);

strcpy(nuevo ptr-& gt; teléfono, teléfono temporal 2);

strcpy(nuevo ptr-& gt; móvil, teléfono temporal 2);

strcpy(nuevo ptr -& gt; dirección, dirección temporal 2);

strcpy(nueva unidad ptr-& gt;, unidad temporal 2

nueva ptr-& gt;

* tempPtr = newPtr

}

voidprintwab(datawabptr print ptr)/ *Función de impresión*/

{

si (! (test(printPtr))){

printf(" \ n % 8s % 16s % 16s % 16s % 16s \ n ", "nombre", "teléfono", "teléfono móvil", "dirección" , "Empresa");

mientras(printPtr!=NULL){

p

rintf(" % 8s % 16s % 16s % 16s % 16s \ n ", imprimir ptr-> nombre, imprimir ptr-> teléfono,

imprimir ptr-> mover, imprimir ptr -> Dirección, imprimir ptr->Unidad);

print ptr = imprimir ptr->nextPtr

}

}

}

void seekWab(DATAWABPTR seekPtr, char tempName[])

/*Función de búsqueda*/

{

if (!( test(seekPtr))){

while(seekPtr!=NULL){

if (!(strcmp(tempName, buscar ptr-> nombre ))){

printone(seek ptr);

seekPtr = seekPtr-& gt; nextPtr

}

Otros

p>

seekPtr = seekPtr-& gt; nextPtr

}

}

}

void eliminar wab(DATAWABPTR eliminar ptr, char eliminarNombre[ ])

/*Función de eliminación*/

{

DATAWABPTR tempPtr, forePtr

forePtr = eliminarPtr

tempPtr = eliminar ptr->nextPtr

while(tempPtr!=NULL){

if (!(strcmp(tempPtr->nombre, eliminarNombre))){

Párrafo anterior->nextPtr = tempPtr->nextPtr

Gratis(tempPtr);

Descanso;

}

En caso contrario {

forePtr = tempPtr

tempPtr = tempPtr-& gt; nextPtr

}

}

}

void modificar web(DATAWABPTR modificar ptr, char modificarNombre[])

/*Modificar función*/

{

Si (! (test(modifyPtr))){

while(modifyPtr!=NULL){

if (!(strcmp(modifyName, modificar ptr-& gt; nombre))){

Printf("Ingrese un nuevo nombre:");

scanf("%s ", modifique ptr-& gt; nombre);

printf( " \nIngrese un nuevo número de teléfono: ");

scanf("%s ", modifique ptr-& gt; número de teléfono);

printf(" \nIngrese un nuevo número de teléfono: ");

scanf("%s ", modifique ptr-& gt; número de teléfono); nuevo número de teléfono Teléfono móvil: ");

scanf("%s ", modificar ptr-> móvil);

printf("\nPor favor, introduzca una nueva dirección:") ;

p>

scanf("%s ", modificar ptr-& gt; dirección);

printf("\nPor favor ingrese una nueva unidad:");

scanf( "%s ", modificar ptr-& gt; unidad);

Pausa;

}

Otro

modificar ptr = modificar ptr-& gt; nextPtr

}

}

}

int test(DATAWABPTR testPtr)

{

if(testPtr==NULL )

Puts("No hay ningún registro en la libreta de direcciones");

Otros

Devuelve 0

Devuelve 1;

}

Pase de impresión no válido (pase de impresión DATAWABPTR)

{

printf("\n % 8s % 16s % 16s % 16s % 16s \n ","Nombre","Teléfono","Teléfono móvil","Dirección","Empresa");

printf("%8s ",printone->Nombre);

printf("%16s ",printone->teléfono);

printf("%16s",printone->móvil);

printf ( "%16s ", printone-& gt; dirección

printf ("%16s\n ", printone-& gt; unidad);

int controlWab(void)

{

Puts("Por favor presione 1 para continuar");

if(getch()=='1 ' )

devuelve 1;

devuelve 0

}

Respuesta: Piénselo: Asistente de nivel 2 2-19 11:36

Déjame comentar> & gt

Evaluación de la respuesta del autor de la pregunta: Gracias ~ ~ Los comentarios se han cerrado y actualmente hay 1 comentario.

Bueno

100% (1) Malo

0% (0)

Contenido relacionado

Ayuda ! ¿Qué experto puede ayudarme a escribir una gestión de libreta de direcciones en lenguaje C? ...

Problema con la libreta de direcciones del 3110c

¿Copia de seguridad de la libreta de teléfonos del Sony Ericsson 510c?

Las capacidades de telefonía del 6120C no se pueden transferir al 6500C de ninguna manera.

Acerca de la visualización de nombres en la libreta de direcciones del Nokia 7310c~ ~ ~

Más preguntas sobre cómo escribir programas de gestión de libretas de direcciones en lenguaje C> & gt

Ver la misma pregunta: Domine el plan de gestión de la libreta de direcciones en lenguaje que salva vidas

Otras respuestas*** 4

Con pocos puntos y sin motivación, ¿quién puede escribir?

Entrevistado: 229273121 - Mago Entrenador Nivel 3 2-19 10:16.

Código del programa de mi libreta de direcciones C++

# include & ltiostream & gt

# include & ltstring& gt

# include & ltiomanip & gt

# include & ltlist& gt

# include & ltfstream & gt

# include & ltalgorithm& gt

#Espacio de definición" \ t\t\t "

Usar espacio de nombres std

Registro de estructura {

Nombre de cadena;

Teléfono de cadena

Público:

Amigos y operadores de Oyster & lt(ostream & Operadores, registro const * registro) {

return os<<rec->Nombre<<SPACE<<rec->Teléfono<<endl

};

Equipo de amigos&Operador>& gt(istream & amp sí, grabar * grabar) {

is & gt& gtrec-& gt; & gt& gtrec-& gt; número de teléfono;

El retorno es;

}

comp. bool estático (patten de cadena, tipo int, Registro *rec) {

switch(type){

Caso 0: { return rec-& gt; name == patten} roto

Caso 1: { return rec; -& gt; tel == patten} roto

}

Devuelve falso

}

Valor booleano estático isvan(Registro * rec){

return(rec-> ;name == " " && amprec-& gt;tel == " ");

}

} ;

Lista de registros de clase: lista pública <Record*>

{

Público:

Oyster Friends & Operadores <& lt(ostream &Operators , lista de registros constante y.

c_rl){

lista de registros::const _ iterator it = c _ rl begin();

Y (it! = c_rl.end()){

os & lt& lt* it

it++;

}

Volver a SO;

}

Equipo de amigos&operador>>(istream&recordlist&rl){

lista de registros::const_iterator it;

mientras (!is.eof( )){

Grabar * prec = nuevo registro;

is & gt& gtprec

if(Record::isvan(prec))continue;

rl.list<Record*>*Pushback;

}

El retorno es;

}

void clear();

Borrar iterador (posición del iterador);

~RecordList(){

Esto->clear()

}

};

void RecordList::clear(){

lista de registros::const _ iterator it = this- >begin();

And (it!= this->end ()){

Eliminar(* it);

it++ ;

}

Esta->lista<record*>* borrar ();

}

lista de registros ::lista de registros del iterador::borrar(posición del iterador){

eliminar(*pos);

lista de retorno <record*>*erase(pos) ;

}

Lista de direcciones de categoría {

Protegido:

Registro list recList

Público:

typedef RecordList::iterator iterator;

//Buscar registros de la libreta de direcciones

Iterador virtual findRecord (patrón de cadena, tipo int, Iterador de) ;

Virtual void add Record(Record * rec);

Virtual void removeRecord(Iterator it);

Virtual void editRecord(Record* rec, Iterator it);

Registros virtuales de guardado de void (ostream y ampOS);

Registros virtuales de carga de void (istream y ampOS);

Virtual void agregar registros( istream & amp;

virtual ~ lista de direcciones();

const int size()const { return(int)reclist . size(); }

const void clear(){ reclist . clear();}

Iterador comenzar(){ return reclist();}

Fin del iterador. (){ return reclist . end();}

};

lista de direcciones::Lista de direcciones del iterador::buscar registro(patrón de cadena

, tipo int, Iterador de){

Iterador;

it = de

Y (it!=recList.end()){

if(Record::comp(patten, tipo, *it)){

Return;

}

it++;

p>

}

Regresar;

}

anular lista de direcciones::añadir registro(Registro * rec){

reclist . push _ back(rec);

}

anular lista de direcciones::eliminar registro(Iterator it){

erase(. it) ;

}

anular lista de direcciones::edit Record(Record * rec, Iterator it){

Eliminar (* it);

* it = rec

}

anular lista de direcciones::guardar registro(ostream & ampos){

os & lt& lthermit;

}

anular lista de direcciones::cargar registros(istream & is){

is & gt& gthermit;

}

anular lista de direcciones::add records(istream & amp; yes){

}

Lista de direcciones::~address list(){

reclist . clear();

}

Categoría libreta de direcciones: lista de direcciones públicas {

Protegido:

Modificación booleana // ¿Se ha modificado la libreta de direcciones y no se ha guardado?

Público:

Libreta de direcciones();

Virtual ~ libreta de direcciones();

//Iniciar la interfaz de usuario del la libreta de direcciones funciona.

Virtual void start();

//Operación de la interfaz de usuario del administrador de funciones de procesamiento de menú

menú virtual de manejo de void();

//Mostrar registros

Registros de visualización de anulación virtual();

//Registros de consulta

Registro de consulta de anulación virtual();

//Agregar registros

Virtual void addRecord();

//Guardar registros

Virtual void guardar registros();

//Leer registros

Registros de carga de vacío virtual();

//Finalizar programa

Salir de vacío virtual();

/ /Borrar la información del registro actual

Virtual void clear();

Protegido:

//Función de selección de menú

char menu lect ();

//Título mostrado

void dispTable();

};

Libreta de direcciones::Libreta de direcciones () {

}

libreta de direcciones::~ libreta de direcciones(){;}

char Libreta de direcciones::menuSelect(){

char a = 0;

CIN & gt;& gta;

if(a = = ' Y ' | | a = = ' Y '){ a = ' 1 '; }

if(a = = ' N ' | | a = = ' N '){ a = ' 2 ';}

Devuelve a;

}

void book de direcciones::start(){

cout & lt& lt" \ n \ t * * * *Bienvenido al programa de gestión de libreta de direcciones* * * * " ;

manejar menú();

}

void AddressBook::handleMenu(){

cout & lt& lt”\ n \ n\t\t\t-Administración de menús-\n\n";

cout & lt& lt" \taAgregar registro\n "

& lt& lt" \ TF - Buscar record\n "

& lt& lt" \ TD - Mostrar registro \ n "

& lt& lt" \ TL - Cargar registro)\n Desde texto o flujo de entrada estándar \ n "

& lt& lt" \ TC-Borrar información del registro actual\n "

& lt& lt" ts-Guardar registro\ n "

& lt<" \tq-exit\n";

switch(menuSelect()){

Caso "A":

Caso "a": agregar registro() ; romper;

Caso "F":

Caso "f": consultar registro();

Caso "D":

Caso "d": mostrar registros(); romper

Caso "L":

Caso "l": cargar registros();

Caso "C":

caso "c":clear(); romper;

Caso:

caso:guardar registros( ); ;

Caso "Q":

caso ' q ':salir();

andle menu();

}

anular libreta de direcciones::mostrar registros(){

cout & lt& lt"nombre"

lista de direcciones::guardar registros(cout);

cout & lt& lt"buscar un * * *"

cout & lt& lt" 1 " & lt;& ltSPACE & lt& lt"return"

cout & lt& lt" 2 " & lt& ltSPACE & lt& lt"modify"

cout & lt& lt" 3 " & lt& ltSPACE & lt& lt"delete"

Cambiar(menuSelect()){

Caso "1":break;

Caso '2':

Si (! size()){

cout & lt& lt"El registro es 0 y no se puede modificar."& lt& ltendl

Break

}

cout & lt& lt"¿Cuál deseas modificar?"& lt& lt" 1 ~ " & lt;& ltsize()& lt;& ltendl

int I;

cin>>i;

if (i<1 | | i>size()){

break;

}

Registro * prec = nuevo registro;

cout<<"name:"

CIN>>prec

Iterador it = reclist .begin();

Y (I!=1){

it++;

I-;

}

editRecord(prec, it );

}Roto;

Caso '3':

if (!size()){

cout & lt& lt "El registro es 0 y no se puede modificar.

"& lt& ltendl

break;

}

cout & lt& lt"¿Cuál quieres eliminar? "& lt& lt" 1 ~ " & lt; & ltsize()& lt; & ltendl

int I;

CIN & gt; p>if(i<1||I> size()){

break;

}

Iterador it = reclist.begin( );

Y (I!= 1){

it++;

I-;

}

eliminar registro(it);

}Roto;

}

}

void AddressBook::addRecord(){

Nombre de cadena, número de teléfono;

cout & lt& lt" \nIngrese nombre: ";

CIN & gt;& gtName;

cout<<"Ingrese número de teléfono:";

CIN>>Phone;

Registro * temp = nuevo registro;

temp ->;nombre=nombre;

temp->;teléfono=teléfono;

lista de direcciones::añadir registro(temp);

cout & lt& lt "Si continuar (sí/no)"

switch(menuSelect()) {

caso "1": addRecord(); romper

caso" 2": romper;

}

}

libreta de direcciones vacía::queryRecord(){

cout & lt& lt" 1 " & lt;& ltSPACE & lt& lt"Buscar por nombre"

cout & lt& lt" 2 " & lt& ltSPACE & lt& lt"Buscar por teléfono"

int type =- 1;

Modo de cadena;

Cambiar(menúSeleccionar ()){

Caso '1':

tipo = 0

cout & lt& lt"Ingrese un nombre"

CIN & gt;& gtPatten;

}Roto;

Caso '2':

tipo = 1;

cout & lt& lt"Ingrese su número de teléfono"

CIN & gt;& gtPatten;

}Roto;

}

Iterarlo = comenzar();

Lista<Iterator>Li;

p>

cout & lt& lt"nombre"

mientras((it=findRecord(patten, tipo, it) )! =end()){

cout & lt& lt* it

李. push _ back(it);

it++;

}

cout & lt& lt"Encontré un * * *"

cout & lt& lt" 1 " & lt;& ltSPACE & lt& lt"Regresar"

cout & lt& lt" 2 " & lt& ltSPACE & lt& lt"Modificar"

cout & lt& lt" 3 " & lt& ltSPACE & lt& lt"Eliminar"

Cambiar ( menú

Seleccionar()){

Caso "1":romper;

Caso '2':

Si (!li.size()){

p>

cout & lt& lt"El registro es 0 y no se puede modificar."& lt& ltendl

Roto;

}

cout & lt& lt" ¿Cuál deseas modificar? "& lt& lt" 1 ~ " & lt;& ltLi size()& lt;& ltendl

int I;

CIN & gt;& gti;

Registro * prec = nuevo registro;

cout & lt& lt"Nombre:"

CIN>& gtprec

Lista<Iterator>* const _ iterator it = Li . p>I-;

}

editRecord(prec, *it);

}Roto;

Caso '3':

If (!li.size()){

cout & lt& lt"El registro es 0 y no se puede modificar."& lt& ltendl

Romper ;

}

cout & lt& lt"¿Cuál desea eliminar?"& lt& lt" 1 ~ " & lt;& ltLi tamaño()& lt;&. ltendl

int I;

CIN>>I;

Lista<Iterator>* const _ iterator it = Li comenzar();

p>Y (I!=1){

it++;

I-;

}

eliminar registro( * it);

}Roto;

}

}

libreta de direcciones vacía::guardar registros(){

cout & lt& lt" 1 " & lt;& ltSPACE & lt& lt"Usar el nombre de archivo predeterminado."& lt& ltendl

cout & lt& lt" 2 " & lt& ltSPACE & lt& lt" Usar archivo personalizado nombres.

"& lt& ltendl

cout & lt& lt" 3 " & lt& ltSPACE & lt& lt"Return"

Switch(menuSelect()){

Caso' 1 ':

archivo ofstream ("predeterminado", IOs::app);

AddressList::saveRecords(archivo

archivo); ;

}Roto;

Caso '2':

cout & lt& lt"Ingrese el nombre del archivo que definió:"

String fname

CIN & gt;& gtfname

archivo de flujo (fname.c_str(), IOs::app);

AddressList::saveRecords ( Archivo);

archivo . close();

}Romper

Caso "3": romper

}

p>

}

void book de direcciones::loadRecords(){

cout & lt& lt" 1 " & lt;& ltspace& lt& lt"Usar archivo predeterminado. "& lt& ltendl

cout & lt& lt" 2 "& lt& ltspace& lt& lt"Usar archivos personalizados.

"& lt& ltendl

cout & lt& lt" 3 " & lt& ltSPACE & lt& lt"Return"

Switch(menuSelect()){

Caso' 1 ':

cout & lt& lt" 1 " & lt;& ltSPACE & lt& lt"Sobrescribir contenido actual"

cout & lt& lt" 2 " & lt& ltSPACE & lt& lt "Agregar al archivo actual"

Switch(menuSelect()){

Caso "1":

lista de direcciones::clear();Break;

Caso "2":break;

}

archivo ifstream ("predeterminado");

AddressList::loadRecords(archivo) ;

archivo . close();

}Roto;

Caso '2':

cout & lt& lt"Por favor, ingrese Un nombre de archivo: "

String fname

CIN & gt; & gtfname

ifstream file(fname . c _ str());

AddressList::loadRecords(archivo);

archivo close();

}Break;

Caso "3":break;< / p>

}

}

void book de direcciones::clear(){

cout & lt& lt"Quieres borrar tu memoria Todo el contenido ? (S/N)" & lt;& ltendl

switch(menuSelect()){

case "1": lista de direcciones::clear(); break;

Caso "2":romper;

}

}

anular la libreta de direcciones::quit(){

cout & lt& lt"¿Quieres guardar el archivo? (Y/N)" & lt;& ltendl

switch(menuSelect()){

Caso "1": guardar registros(); romper;

Caso "2": romper;

}

Salir (0);

}

int main(int argc, char); *argv[])

{

Libreta de direcciones a;

a .start();

Sistema ("pausa"). ;

Regresar SALIDA _ ÉXITO

}