Hello there,
My teacher in programming require to make a phone book style using C language and I almost done this project and I trying to sort up some minor problems. Would somebody our there help me? (please try to run this program by your own to see what I mean and use the password written in the code): In ADD PERSONAL PROFILE section, when you input a data there it will save in the database and no problem with that. The problem is, when I try to DELETE PERSONAL PROFILE. I can delete it but the PROFILE number still there. I want it to be deleted also when I delete the data. Please give me suggestions and also how to use backspace when the user mistaken to type his password. Still I cannot figure out this. My teacher ask me to fix that. Lastly, could you give me ideas and suggestions to make my final project more user's friendly interface?
This coming Friday is my submission I hope that I have still time to modify this project.
Thank you for your time.
Looking forward to hear from you very soon.
June
#include<stdio.h>
#include<conio.h>
#include<process.h>
#include<string.h>
#include<dos.h>
#include<stdlib.h>
#include<ctype.h>
void add(void);
void edit(void);
void erase(void);
void search(void);
void view(void);
void menu(void);
void control(void);
void fname(void);
void lname(void);
struct info
{
char lname[50];
char fname[50];
int accnt;
char address[50];
char contact[11];
int buff;
}
phonebook[50];
FILE *fp;
void main(void)
{
clrscr();
int a,k,x,y;
char pass[9]="villarin",user[5]="alain";
gotoxy(30,2);printf("IN PARTIAL FULLFILMENT ");
gotoxy(40,4);printf("OF");
gotoxy(38,6);printf("CPE 331");
gotoxy(35,10);printf("Submitted by:");
gotoxy(33,12);printf("Alain P. Villarin");
gotoxy(31,13);printf("Danilo A. Bongcalas Jr.");
gotoxy(35,16);printf("Submitted to:");
gotoxy(27,18);printf("Engr. Maria Christina B. Condez");
gotoxy(35,23);printf("Loading...");
for(a=1;a<=3;a++)
{
if(a==1)
{ gotoxy(32,25);printf("Checking files...");
}
if(a==2)
{gotoxy(32,25);printf("Checking folders...");}
if(a==3)
{gotoxy(32,25);printf("Checking system...");}
for(k=1;k<=79;k++)
{
gotoxy(k,24);printf("||");
}
for(k=1;k<=79;k++)
{
gotoxy(k,24);putch(219);
delay(50);
}
}
do
{ pass:
clrscr();
gotoxy(30,4);printf("PERSONAL PROFILE");
gotoxy(25,10);printf("Enter user's name: ");
gets(user);
gotoxy(25,11);printf("Enter user's password: ");
for(x=0;x<8;x++)
{
pass[x]=getch();
printf("*",pass[x]);
}
if(strcmp(user,"alain")!=0||strcmp(pass,"villarin")!=0)
{
gotoxy(22,20);printf("The Username And Password did not match!!!");delay(1000);
goto pass;
getch();
}
}
while(strcmp(user,"alain")!=0||strcmp(pass,"villarin")!=0);
gotoxy(35,23);printf("Access Granted...");
for(a=1;a<2;a++)
{
for(k=1;k<=79;k++)
{gotoxy(k,24);printf("||");}
for(k=1;k<=79;k++)
{gotoxy(k,24);putch(219);delay(50);}
}
clrscr();
if ((fp=fopen("pb.txt","rb"))==NULL)
{
if ((fp=fopen("pb.txt","wb"))==NULL)
{
printf("Unable to create pb.txt data!!!");
getch();
exit(0);
}
phonebook[0].buff = 0;
fwrite(&phonebook,sizeof(phonebook),1,fp);
fclose(fp);
goto jump;
}
fclose(fp);
jump:
menu();
}
void menu(void)
{
char x;
select:
clrscr();
int a,k;
gotoxy(25,5); printf("[1] ADD PERSONAL PROFILE");
gotoxy(25,6); printf("[2] VIEW PERSONAL PROFILE");
gotoxy(25,7); printf("[3] SEARCH PERSONAL PROFILE");
gotoxy(25,8); printf("[4] MODIFY PERSONAL PROFILE");
gotoxy(25,9); printf("[5] DELETE PERSONAL PROFILE");
gotoxy(25,10);printf("[6] EXIT\n");
gotoxy(25,13);printf("Please Choose One : ");
x = getch();
switch(x) {
case '1' :
{
gotoxy(35,23);printf("Loading...");
for(a=1;a<2;a++)
{
for(k=1;k<=79;k++)
{gotoxy(k,24);printf("||");}
for(k=1;k<=79;k++)
{gotoxy(k,24);putch(219);delay(50);}
}
add();break;
}
case '2' : {
gotoxy(35,23);printf("Loading...");
for(a=1;a<2;a++)
{
for(k=1;k<=79;k++)
{gotoxy(k,24);printf("||");}
for(k=1;k<=79;k++)
{gotoxy(k,24);putch(219);delay(50);}
}
view(); break;
}
case '3' : {
//splush
gotoxy(35,23);printf("Loading...");
for(a=1;a<2;a++)
{
for(k=1;k<=79;k++)
{gotoxy(k,24);printf("||");}
for(k=1;k<=79;k++)
{gotoxy(k,24);putch(219);delay(50);}
}
search();break;
}
case '4' : {
// splush
gotoxy(35,23);printf("Loading...");
for(a=1;a<2;a++)
{
for(k=1;k<=79;k++)
{gotoxy(k,24);printf("||");}
for(k=1;k<=79;k++)
{gotoxy(k,24);putch(219);delay(50);}
}
edit(); break;
}
case '5' : {
//splush
gotoxy(35,23);printf("Loading...");
for(a=1;a<2;a++)
{
for(k=1;k<=79;k++)
{gotoxy(k,24);printf("||");}
for(k=1;k<=79;k++)
{gotoxy(k,24);putch(219);delay(50);}
}
erase();break;
}
case '6' : {
//splush
gotoxy(35,23);printf("Exiting System...");
for(a=1;a<2;a++)
{
for(k=1;k<=79;k++)
{gotoxy(k,24);printf("||");}
for(k=1;k<=79;k++)
{gotoxy(k,24);putch(219);delay(50);}
}
exit(0);break;
}
default :
{
gotoxy(44,13);printf("INVALID INPUT");
delay(1000);
goto select;
getch();
menu();
}
}
}
void add(void)
{
char val[20];
clrscr();
int Tempwrite;
int x,z,len;
clrscr();
if ((fp=fopen("pb.txt","rb"))==NULL)
{
printf("Cant find database!!");
getch();
exit(0);
}
fread(&phonebook,sizeof(phonebook),1,fp);
fclose(fp);
if ((fp=fopen("pb.txt","wb"))==NULL)
{
printf("Database not found!!");
getch();
exit(0);
}
fread(&phonebook,sizeof(phonebook),1,fp);
Tempwrite = phonebook[0].buff+1;
gotoxy(32,4); printf("Profile Number : %d\n",Tempwrite);
phonebook[Tempwrite].accnt = Tempwrite;
A: gotoxy(32,5); printf("Your last name: ");
gets(phonebook[Tempwrite].lname);
len=strlen(phonebook[Tempwrite].lname);
for(z=0;z<=len;z++)
{
if((phonebook[Tempwrite].lname[z]<=65)||(phonebook[Tempwrite].lname[z]>=122))
{
gotoxy(47,5);printf(" ",phonebook[Tempwrite].lname[z]);
goto A;
}
else
goto B;
}
if(strcmp(phonebook[Tempwrite].lname,"")==0)
{
goto A;
}
B: gotoxy(32,6); printf("Your first name: ");
gets(phonebook[Tempwrite].fname);
len=strlen(phonebook[Tempwrite].fname);
for(z=0;z<=len;z++)
{
if((phonebook[Tempwrite].fname[z]<=65)||(phonebook[Tempwrite].fname[z]>=122))
{
gotoxy(48,6);printf(" ",phonebook[Tempwrite].fname[z]);
goto B;
}
else
goto C;
}
if(strcmp(phonebook[Tempwrite].fname,"")==0)
{
goto B;
}
C: gotoxy(32,7); printf("Your Address: ");
gets(phonebook[Tempwrite].address);
len=strlen(phonebook[Tempwrite].address);
for(z=0;z<=len;z++)
{
if((phonebook[Tempwrite].address[z]<=65)||(phonebook[Tempwrite].address[z]>=122))
{
gotoxy(45,7);printf(" ",phonebook[Tempwrite].address[z]);
goto C;
}
else
goto D;
}
if(strcmp(phonebook[Tempwrite].address,"")==0)
{
goto C;
}
a:
D: gotoxy(32,8); printf("Your contact number: ");
gets(phonebook[Tempwrite].contact);
len=strlen(phonebook[Tempwrite].contact);
for(z=0;z<len;z++)
{
if(((phonebook[Tempwrite].contact[z]<=57)
&&(phonebook[Tempwrite].contact[z]>=48))&&((len==7)||(len==11)))
{
goto b;
}
else
{
gotoxy(52,8);printf(" ",phonebook[Tempwrite].contact[z]);
goto D;
}
b:
}
phonebook[0].buff = Tempwrite;
fwrite(&phonebook,sizeof(phonebook),1,fp);
fclose(fp);
menu();
}
void edit(void)
{
clrscr();
int x,y,esc,i,len;
char am[20];
char a[30];
if ((fp=fopen("pb.txt","rb"))==NULL)
{
printf("Cant find database!!!");
getch();
exit(0);
}
fread(&phonebook,sizeof(phonebook),1,fp);
gotoxy(5,5);printf ("Profile Number : ");gets(a);
for (x =0;;x++)
{
if (phonebook[0].buff== 0)
{
gotoxy(38,10);
printf("No data");
break;
}
if (x == phonebook[0].buff+1)
break;
else
{
if (atoi(a)==phonebook[x].accnt)
{
gotoxy(2,7);printf("Profile #:"); gotoxy(15,7);printf ("%d",phonebook[x].accnt );
gotoxy(2,8);printf("Last Name:"); gotoxy(15,8);printf (phonebook[x].lname );
gotoxy(2,9);printf("First Name:");gotoxy(15,9);printf (phonebook[x].fname );
gotoxy(2,10);printf("Address:"); gotoxy(15,10);printf (phonebook[x].address );
gotoxy(2,11);printf("Contact #:");gotoxy(15,11);printf (phonebook[x].contact );
for(;;)
{
gotoxy(15,22);printf("Are you sure you want to replace[Y/N]...");
esc=getch();
if(esc==121||esc==89)
{
break;
}
else if(esc==110||esc==78)
{
menu();
}
else
gotoxy(30,15);printf("INVALID INPUT!!!");
delay(1000);
}
break;
}
}
}
if ((fp=fopen("pb.txt","wb"))==NULL)
{
printf("Cant find database!!");
getch();
exit(0);
}
E: gotoxy(30,11);printf ("Enter Last Name : ");
gets(phonebook[x].lname);
len = strlen(phonebook[x].lname);
for(i=0;i<=len;i++)
{
if((phonebook[x].lname[i]<=65)||(phonebook[x].lname[i]>=122))
{
gotoxy(49,11);printf(" ",phonebook[x].lname[i]);
goto E;
}
else
goto F;
}
if(strcmp(phonebook[x].lname,"")==0);
{
goto E;
}
F: gotoxy(30,12);printf ("Enter First Name : ");
gets(phonebook[x].fname);
len = strlen(phonebook[x].fname);
for(i=0;i<=len;i++)
{
if((phonebook[x].fname[i]<=65)||(phonebook[x].fname[i]>=122))
{
gotoxy(49,12);printf(" ",phonebook[x].fname[i]);
goto F;
}
else
goto G;
}
if(strcmp(phonebook[x].fname,"")==0)
{
goto F;
}
G: gotoxy(30,13);printf ("Enter Address: ");
gets(phonebook[x].address);
len = strlen(phonebook[x].address);
for(i=0;i<=len;i++)
{
if((phonebook[x].address[i]<=65)||(phonebook[x].address[i]>=122))
{
gotoxy(45,13);printf(" ",phonebook[x].address[i]);
goto G;
}
else
goto H;
if(strcmp(phonebook[x].address,"")==0);
{
goto G;
}
}
num:
H: gotoxy(30,14);printf ("Enter Contact number: ");
gets(phonebook[x].contact);
len = strlen(phonebook[x].contact);
for(i=0;i<len;i++)
{
if(((phonebook[x].contact[i]<=57)
&&(phonebook[x].contact[i]>=48))&&((len==7)||(len==11)))
{
goto value;
}
else
{
gotoxy(52,14);printf(" ",phonebook[x].contact[i]);
goto H;
}
value:
}
fwrite(&phonebook,sizeof(phonebook),1,fp);
fclose(fp);
getch();
menu();
}
void view(void)
{
int x,y;
clrscr();
if ((fp=fopen("pb.txt","rb"))==NULL)
{
printf("Cant find database!!");
getch();
exit(0);
}
fread(&phonebook,sizeof(phonebook),1,fp);
for(y=1;y<80;y++)
{gotoxy(y,3);printf("-");}
for(y=1;y<80;y++)
{gotoxy(y,5);printf("-");}
gotoxy(30,2);printf("LIST OF PERSONAL RECORD");
gotoxy(2,4);printf("Prof.#");
gotoxy(10,4);printf ("Last name");
gotoxy(25,4);printf("First Name");
gotoxy(46,4);printf ("Address");
gotoxy(68,4);printf ("Contact #");
gotoxy(30,25);printf("Press any key to continue...");
for (x =1;;x++)
{
if (phonebook[0].buff== 0)
{
gotoxy(37,10);printf("No data");
break;
}
if (x == phonebook[0].buff+1)
break;
else
{
gotoxy(2,5+x);printf ("%d",phonebook[x].accnt );
gotoxy(10,5+x);printf (phonebook[x].lname );
gotoxy(25,5+x);printf (phonebook[x].fname );
gotoxy(46,5+x);printf (phonebook[x].address );
gotoxy(68,5+x);printf (phonebook[x].contact );
}
}
getch();
menu();
}
void search(void)
{
char x;
choice:
clrscr();
gotoxy(33,5);printf("[1] Search by profile #");
gotoxy(33,6);printf("[2] Search First name");
gotoxy(33,7);printf("[3] Search by last name");
gotoxy(33,10);printf("Please choose One : ");
x = getch();
switch(x) {
case '1' : {control(); break; }
case '2' : {fname(); break;}
case '3' : {lname();break; }
default :
{
gotoxy(53,10);printf("INVALID INPUT");delay(1000);
goto choice;
getch();
search();
}
}
}
void control(void)
{
clrscr();
int x;
char a[30];
if ((fp=fopen("pb.txt","rb"))==NULL)
{
printf("Cant find database!!");
getch();
exit(0);
}
fread(&phonebook,sizeof(phonebook),1,fp);
gotoxy(5,4);printf ("Profile Number : ");gets(a);
for (x =0;;x++)
{
if (phonebook[0].buff== 0)
{
gotoxy(36,5);printf("No data");
break;
}
if (x == phonebook[0].buff+1)
break;
else
{
if (atoi(a)==phonebook[x].accnt)
{
gotoxy(5,5);printf("Last Name: ");gotoxy(21,5);printf (phonebook[x].lname );
gotoxy(5,6);printf("First Name: ");gotoxy(21,6);printf (phonebook[x].fname );
gotoxy(5,7);printf("Address:");gotoxy(21,7);printf (phonebook[x].address);
gotoxy(5,8);printf("Contact Number:");gotoxy(21,8);printf (phonebook[x].contact );
break;
}
}
}
getch();
menu();
}
void fname(void)
{
clrscr();
int x;
char a[30];
if ((fp=fopen("pb.txt","rb"))==NULL)
{
printf("Cant find database!!");
getch();
exit(0);
}
fread(&phonebook,sizeof(phonebook),1,fp);
gotoxy(5,5);printf ("Enter first name : ");gets(a);
for (x =0;;x++)
{
if (phonebook[0].buff== 0)
{
gotoxy(36,5);printf("No data");
break;
}
if (x == phonebook[0].buff+1)
break;
else
{
if (strcmp(phonebook[x].fname,a)==0)
{
gotoxy(5,6);printf("Profile number:");gotoxy(21,6);printf ("%d",phonebook[x].accnt );
gotoxy(5,7);printf("Last Name: ");gotoxy(21,7);printf (phonebook[x].lname);
gotoxy(5,8);printf("Address:");gotoxy(21,8);printf (phonebook[x].address);
gotoxy(5,9);printf("Contact Number:");gotoxy(21,9);printf (phonebook[x].contact );
break;
}
}
}
getch();
menu();
}
void lname(void)
{
clrscr();
int x;
char a[30];
if ((fp=fopen("pb.txt","rb"))==NULL)
{
printf("Cant find database!!");
getch();
exit(0);
}
fread(&phonebook,sizeof(phonebook),1,fp);
gotoxy(5,4);printf ("last Name : ");gets(a);
for (x =0;;x++)
{
if (phonebook[0].buff== 0)
{
gotoxy(36,5);printf("No data");
break;
}
if (x == phonebook[0].buff+1)
break;
else
{
if (strcmp(phonebook[x].lname,a)==0)
{
gotoxy(5,5);printf("Profile number:");gotoxy(21,5);printf ("%d",phonebook[x].accnt );
gotoxy(5,6);printf("First Name:");gotoxy(21,6);printf (phonebook[x].fname );
gotoxy(5,7);printf("Address:");gotoxy(21,7);printf (phonebook[x].address);
gotoxy(5,8);printf("Contact Number:");gotoxy(21,8);printf (phonebook[x].contact );
break;
}
}
}
getch();
menu();
}
void erase(void)
{
clrscr();
int x,y;
char am[20];
char a[30];
int esc;
if ((fp=fopen("pb.txt","rb"))==NULL)
{
printf("Cant find database!!");
getch();
exit(0);
}
fread(&phonebook,sizeof(phonebook),1,fp);
gotoxy(33,5);printf ("Enter Profile Number : ");gets(a);
for (x =0;;x++)
{
if(phonebook[0].buff== 0)
{
gotoxy(36,5);printf("No data");
break;
}
if (x == phonebook[0].buff+1)
break;
else
{
if (atoi(a)==phonebook[x].accnt)
{
gotoxy(5,7);printf("Profile #:");gotoxy(20,7);printf ("%d",phonebook[x].accnt );
gotoxy(5,8);printf("Last Name:");gotoxy(20,8);printf (phonebook[x].lname);
gotoxy(5,9);printf("First Name:");gotoxy(20,9);printf (phonebook[x].fname );
gotoxy(5,10);printf("Address:"); gotoxy(20,10);printf (phonebook[x].address);
gotoxy(5,11);printf("Contact #:");gotoxy(20,11);printf (phonebook[x].contact );
for(;;)
{
gotoxy(15,22);printf("Are you sure you want to delete[Y/N]...");
esc=getch();
if(esc==121||esc==89)
{
break;
}
else if(esc==110||esc==78)
{
menu();
}
else
gotoxy(30,15);printf("INVALID INPUT!!!");
delay(1000);
}
break;
}
}
}
if ((fp=fopen("pb.txt","wb"))==NULL)
{
printf("Cant find database!!");
getch();
exit(0);
}
phonebook[x].lname[0] = '\0';
phonebook[x].fname[0] = '\0';
phonebook[x].address[0]='\0';
phonebook[x].contact[0] = '\0';
fwrite(&phonebook,sizeof(phonebook),1,fp);
fclose(fp);
getch();
menu();
}