#include "stdafx.h" #include <windows.h> #include <string.h> #include <stdlib.h> #include <conio.h> #include <stdio.h> #define size 20 typedef struct node { char name; char number; char id; char adress; } NODE;void print_menu(); void add_mem(FILE *f); void print_list(FILE *f); void search_mem(FILE *f); void delete_mem(FILE *f); int main() { FILE *f; char c=0; char *name = "xxx.x"; f =fopen(name, "a+b"); delete_mem(f); print_list(f); while (c!='5') { system("cls"); print_menu(); flushall(); c=getch(); switch (c) { case '1': { system("cls"); add_mem(f); getch(); }break; case '2':{ system("cls"); search_mem(f); getch(); }break; case '3':{ delete_mem(f); getch(); }break; case '4':{ print_list(f); getch(); }break; } } } void print_menu() { printf ("Dor & Oded Phonebook\n"); printf ("--------------------\n\n"); printf ("(1) Add a new member\n"); printf ("(2) Find a member\n"); printf ("(3) Delete a member\n"); printf ("(4) Show the phonebook\n"); printf ("(5) Exit\n\n"); flushall(); } void add_mem(FILE *f) { NODE *node = (NODE *)malloc(sizeof (NODE)); node=NULL; node=(NODE *)malloc(sizeof(NODE)); printf("Enter a name:\n"); gets(node->name); printf("Enter an adress:\n"); gets(node->adress); printf("Enter an ID:\n"); gets(node->id); printf("Enter a number:\n"); gets(node->number); fseek( f, 0L, SEEK_END ); fwrite (node,sizeof(NODE),1,f); rewind(f); } void print_list(FILE *f) { NODE *node = (NODE *)malloc(sizeof (NODE)); printf ("Name Adress ID Number\n"); printf ("-----------------------------------------------------------------------\n\n"); while(fread (node,sizeof(NODE),1,f)) { printf("%s\t\t ",node->name); printf("%s\t\t ",node->adress); printf("%s\t\t",node->id); printf("%s\t\t",node->number); printf("\n"); } rewind(f); } void search_mem(FILE *f) { int q,n=0; char c="0"; NODE node; printf ("(1) By name\n(2) By number\n"); printf ("(3) By Adress\n(4) By ID\n"); scanf ("%d",&q); printf("Enter the detail:\n"); flushall (); gets (c); while(fread (&node,sizeof(NODE),1,f)) { if (q==1) { if (!strcmp(c,node.name)) { printf ("Member has been found\n"); fseek (f,-(sizeof(node)),SEEK_CUR); n++; break; } } else if (q==2) { if (!strcmp(c,node.adress)) { printf ("Member has been found\n"); fseek (f,-(sizeof(node)),SEEK_CUR); n++; break; } }
else if (q==3) { if (!strcmp(c,node.id)) { printf ("Member has been found\n"); fseek (f,-(sizeof(node)),SEEK_CUR); n++; break; } } else if (q==4) { if (!strcmp(c,node.number)) { printf ("Member has been found\n"); fseek (f,-(sizeof(node)),SEEK_CUR); n++; break; } } } if (n==0) printf("The member does'n exist\n"); } void delete_mem(FILE *f) { NODE temp; fseek(f,-(sizeof(temp)),SEEK_END); fread(&temp,sizeof(temp),1,f); rewind(f); search_mem(f); fwrite(&temp,sizeof(NODE),1,f); fclose(f); HANDLE h=CreateFile(TEXT("xxx.x"),GENERIC_WRITE | GENERIC_READ,0,0,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0); SetFilePointer(h,-1*sizeof(temp),NULL,FILE_END); SetEndOfFile(h); CloseHandle(h); fopen("xxx.x","r+b"); }
|