/*******************************************************
APPLICATION : Telephone Directory
CODED BY : Ankit Pokhrel
COMPILED ON : Borland Turbo C++ Ver 3.0
DATE : 2009 - 07 - 25
********************************************************/
#include "stdio.h"
#include "conio.h"
#include "graphics.h"
#include "string.h"
#include "dos.h"
#include "stdlib.h"
#include "ctype.h"
#define TRUE 1
#define FALSE 0
#define UP_ARROW 72
#define DOWN_ARROW 80
#define ENTER '\r'
int start (int);
void show_pointer (int,int);
void hide_pointer (int,int);
void check (void);
int face (void);
char body (int);
void time (void);
void add (void);
void search (void);
void sort (void);
void view (void);
void modify (void);
void delrecord (void);
void close (int);
void clear_and_print (int,int,char [],int);
int total_record (void);
void about_program (void);
void how_to_operate (void);
struct info
{
char name[30];
char address[25];
char phone_no[11];
} user;
int gd = DETECT,gm,midx,midy,datafound,total;
char userid[15],password[9];
struct time now;
struct date today;
FILE *record, *recordtemp;
void main()
{
int success,choice,errorcode,first,pass,x,y;
initgraph(&gd,&gm,"c:\\tc\\bgi");
errorcode = graphresult();
if(errorcode != grOk) /* An error occurred */
{
printf("Graphics Error : %s\n",grapherrormsg(errorcode));
printf("Press any key to halt...");
getch();
exit(0); /* Terminate with an error message */
}
midx = getmaxx()/2;
midy = getmaxy()/2;
pass = 0;
do
{
flushall();
first = start(pass);
switch (first)
{
case 0:
cleardevice();
setcolor(LIGHTBLUE);
settextstyle(SMALL_FONT,HORIZ_DIR,8);
outtextxy(midx-60,midy-20,"Loading...");
setcolor(LIGHTGRAY);
rectangle(midx-120,midy+10,midx+120,midy+20);
setcolor(GREEN);
for(x = midx-117;x <= midx+117;x++)
{
delay(15);
line(x,midy+13,x,midy+17);
}
delay(400);
break;
case 1:
how_to_operate();
break;
case 2:
about_program();
break;
case 3:
close(GREEN);
}
pass++;
} while (first != 0);
success = face();
if(success)
{
cleardevice();
check();
pass = 0;
do
{
total = total_record();
choice = body(pass);
record = fopen("c:\\secure.sys","r+b");
switch (choice)
{
case '1':
clear_and_print(midx-27,323,"INPUT THE ABOVE GIVEN INFORMATIONS",RED);
add();
break;
case '2':
clear_and_print(midx-27,323,"ENTER NAME, PHONE NUMBER OR TYPE \"VIEWALL\" TO LIST ALL",RED);
search();
break;
case '3':
clear_and_print(midx-27,323,"ENTER PERSON'S NAME TO MODIFY",RED);
modify();
break;
case '4':
clear_and_print(midx-27,323,"PLEASE, ENTER NAME OR TYPE \"EMPTY\" TO DELETE ALL",RED);
delrecord();
break;
case '0':
close(GREEN);
case 'h':
case 'H':
how_to_operate();
break;
case 'a':
case 'A':
about_program();
break;
default:
/* Overwriting the Previous Information */
setcolor(BLACK);
settextstyle(11,HORIZ_DIR,1);
outtextxy(midx-27,323,"PLEASE, ENTER YOUR CHOICE TO PROCEED FURTHER");
/* Printing New Information */
setcolor(RED);
settextstyle(11,HORIZ_DIR,1);
outtextxy(midx-27,323,"WRONG CHOICE, PLEASE TRY AGAIN");
delay(1100);
break;
}
pass++;
}while (choice != 0);
}
fclose(record);
}
int start (int pass)
{
cleardevice();
int size,i,errorcode,xcord,ycord,key,position;
char *tele[] = {"T","E","L","E","P","H","O","N","E"," ","D","I","R","E","C","T","O","R","Y",'\0'};
char *author[] = {">",">","b","y"," ","A","N","K","I","T"," ","P","O","K","H","R","E","L","<","<",'\0'};
char menu[4][20] = {
"ENTER PROGRAM",
"HOW TO OPERATE ?",
"ABOUT THIS PROGRAM",
"LEAVE"
};
settextjustify(LEFT_TEXT,RIGHT_TEXT);
xcord = midx-225;
ycord = midy-225;
i = 0;
while(tele[i] != '\0')
{
if(pass == 0)
{
for(size = 11;size > 1; size--)
{
setcolor(GREEN);
settextstyle(2,0,size);
outtextxy(xcord,ycord,tele[i]);
delay(7);
setcolor(BLACK);
outtextxy(xcord,ycord,tele[i]);
}
for(size = 0;size < 15; size++)
{
setcolor(GREEN);
settextstyle(2,0,size);
outtextxy(xcord,ycord,tele[i]);
delay(20);
setcolor(BLACK);
outtextxy(xcord,ycord,tele[i]);
}
}
setcolor(GREEN);
settextstyle(2,0,15);
outtextxy(xcord,ycord,tele[i]);
++i;
xcord = xcord + 25;
}
xcord = midx+40;
ycord = midy - 180;
i = 0;
while(author[i] != '\0')
{
setcolor(RED);
settextstyle(0,0,1);
outtextxy(xcord,ycord,author[i]);
if(pass == 0)
{
sound(xcord);
delay(40);
nosound();
}
xcord = xcord + 10;
++i;
}
setcolor(CYAN);
line(midx-320,midy-160,midx+320,midy-160);
i = 0;
ycord = midy - 130;
while(i < 4)
{
for(xcord = midx-700;xcord <= 7;xcord += 30)
{
if(i == 3)
xcord = xcord + 48;
setcolor(LIGHTBLUE);
settextstyle(10,HORIZ_DIR,3);
if(pass == 0)
{
outtextxy(xcord,ycord,menu[i]);
delay(250);
setcolor(BLACK);
outtextxy(xcord,ycord,menu[i]);
}
}
setcolor(LIGHTBLUE);
outtextxy(xcord,ycord,menu[i]);
++i;
ycord += 70;
}
setcolor(RED);
settextstyle(DEFAULT_FONT,HORIZ_DIR,0);
outtextxy(midx-140,midy+225,"Use UP and DOWN arrow keys to select.");
setlinestyle(SOLID_LINE,CENTER_LINE,3);
position = 0;
while(key != ENTER)
{
switch (position)
{
case 0:
setcolor(BLACK);
rectangle(0,180,385,240);
rectangle(0,320,140,380);
setcolor(RED);
rectangle(0,110,318,170);
break;
case 1:
setcolor(BLACK);
rectangle(0,110,318,170);
rectangle(0,250,420,310);
setcolor(RED);
rectangle(0,180,385,240);
break;
case 2:
setcolor(BLACK);
rectangle(0,180,385,240);
rectangle(0,320,140,380);
setcolor(RED);
rectangle(0,250,420,310);
break;
case 3:
setcolor(BLACK);
rectangle(0,110,318,170);
rectangle(0,250,420,310);
setcolor(RED);
rectangle(0,320,140,380);
break;
}
key = getch();
if(key == DOWN_ARROW)
{
position++;
if(position > 3)
position = 0;
}
if(key == UP_ARROW)
{
position--;
if(position < 0)
position = 3;
}
}
setlinestyle(SOLID_LINE,CENTER_LINE,1); /* Reset Line Style */
return position;
}
void show_pointer(int x,int y)
{
setcolor(LIGHTBLUE);
circle(x,y,2);
circle(x,y,1);
}
void hide_pointer(int x,int y)
{
setcolor(BLACK);
circle(x,y,2);
circle(x,y,1);
}
int face (void)
{
int i,go;
do
{
fflush(stdin);
cleardevice();
setcolor(LIGHTGREEN);
rectangle(midx-130,midy+30,midx+100,midy+115); /* Lower Rectangle */
setcolor(RED);
settextstyle(DEFAULT_FONT,HORIZ_DIR,0);
outtextxy(midx-120,midy+53,"USER ID : ");
outtextxy(midx-120,midy+85,"PASSWORD : ");
setcolor(DARKGRAY);
rectangle(midx-35,midy+68,midx+90,midy+45);
rectangle(midx-35,midy+77,midx+90,midy+100);
setcolor(LIGHTCYAN);
line(midx-130,midy+70,midx-190,midy+70); /* A1 */
line(midx+100,midy+70,midx+160,midy+70); /* A2 */
line(midx-190,midy-150,midx-190,midy+70); /* B1 */
line(midx+160,midy-150,midx+160,midy+70); /* B2 */
line(midx-190,midy-150,midx-130,midy-150); /* C1 */
line(midx+160,midy-150,midx+100,midy-150); /* C2 */
setcolor(LIGHTGREEN);
rectangle(midx-130,midy-180,midx+100,midy-120); /* Upper Rectangle */
setcolor(RED);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,2);
outtextxy(midx-100,midy-165,"VERIFY YOURSELF");
setcolor(DARKGRAY);
settextstyle(SMALL_FONT,HORIZ_DIR,7);
outtextxy(midx-145,midy-60,"DEPARTMENT OF COMPUTER");
show_pointer(midx-35,midy+45);
do
{
go = TRUE;
gotoxy(37,19);
gets(userid);
if(userid[0] == '\0' || userid[0] == ' ' || userid[0] == '\t')
{
go = FALSE;
setcolor(RED);
settextstyle(DEFAULT_FONT,HORIZ_DIR,0);
outtextxy(midx-145,midy,"Required Field Cannot be Left Blank");
outtextxy(midx-80,midy+15,"Type \"exit\" to stop.");
delay(1000);
setcolor(BLACK);
outtextxy(midx-145,midy,"Required Field Cannot be Left Blank");
outtextxy(midx-80,midy+15,"Type \"exit\" to stop.");
}
} while(go == FALSE);
if(strcmpi(userid,"exit") == 0)
close(GREEN);
hide_pointer(midx-35,midy+45);
setcolor(DARKGRAY);
settextstyle(SMALL_FONT,HORIZ_DIR,5);
outtextxy(midx+5,midy+98,"Max 8 Chars");
rectangle(midx-35,midy+68,midx+90,midy+45);
do
{
go = TRUE;
fflush(stdin);
show_pointer(midx-35,midy+77);
gotoxy(36,21);
i = 0;
while((password[i++]=getche()) != 13)
printf("*");
if(password[0] == '\r' || password[0] == ' ' || password[0] == '\t')
{
go = FALSE;
setcolor(RED);
settextstyle(DEFAULT_FONT,HORIZ_DIR,0);
outtextxy(midx-145,midy,"Required Field Cannot be Left Blank");
delay(1000);
setcolor(BLACK);
outtextxy(midx-145,midy,"Required Field Cannot be Left Blank");
}
} while(go == FALSE);
password[i-1] = '\0'; /* Ending the Password with Terminating Null Character */
if((strcmpi(userid,"ADMINISTRATOR") || strcmp(password,"software")) == 0)
{
/* Save Date and Time */
getdate(&today);
gettime(&now);
setcolor(GREEN);
settextstyle(9,HORIZ_DIR,1);
outtextxy(midx-145,midy-30,"ACCESS GRANTED");
delay(1000);
}
else
{
setcolor(RED);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(midx-60,midy-10,"ACCESS DENIED");
outtextxy(midx-45,midy+2,"Try Again");
outtextxy(midx-80,midy+15,"Type \"exit\" to stop.");
printf("\a"); /* For Audible Sound */
delay(900);
}
}while((strcmpi(userid,"ADMINISTRATOR") || strcmp(password,"software")) != 0);
return 1;
}
void check (void)
{
int x,y;
record = fopen("c:\\secure.sys","rb");
if(record == NULL)
{
setcolor(BROWN);
rectangle(midx-235,115,midx+230,midy+50);
line(midx-235,173,midx+230,173);
setcolor(GREEN);
settextjustify(CENTER_TEXT,CENTER_TEXT);
settextstyle(2,HORIZ_DIR,10);
outtextxy(midx,130,"TELEPHONE DIRECTORY");
setcolor(RED);
settextjustify(LEFT_TEXT,BOTTOM_TEXT);
settextstyle(12,HORIZ_DIR,2);
outtextxy(midx+60,168,">>by ANKIT POKHREL<<");
settextstyle(2,HORIZ_DIR,6);
outtextxy(midx-110,midy-30,"Database doesn't exists...");
outtextxy(midx-110,midy,"Press Enter to Create,");
outtextxy(midx-110,midy+30,"Else, Press any other Key...");
if(getch() == 13)
{
/* Overwriting Previous Informatoins */
setcolor(BLACK);
settextstyle(2,HORIZ_DIR,6);
outtextxy(midx-110,midy-30,"Database doesn't exists...");
outtextxy(midx-110,midy,"Press Enter to Create,");
outtextxy(midx-110,midy+30,"Else, Press any other Key...");
setcolor(LIGHTBLUE);
settextstyle(SMALL_FONT,HORIZ_DIR,8);
outtextxy(midx-130,midy-10,"Creating Database...");
setcolor(LIGHTGRAY);
rectangle(midx-120,midy,midx+120,midy+10);
setcolor(GREEN);
for(x = midx-117;x <= midx+117;x++)
{
delay(10);
line(x,midy+3,x,midy+7);
}
delay(400);
setfillstyle(1,BLACK);
bar(midx-132,midy-27,midx+140,midy+11);
record = fopen("c:\\secure.sys","wb");
if(record == NULL)
{
setcolor(RED);
settextstyle(SMALL_FONT,HORIZ_DIR,6);
outtextxy(midx-120,midy-30,"Couldn't Create Database");
outtextxy(midx-190,midy,"Please, reopen the program and try again.");
outtextxy(midx-120,midy+30,"Press any key to halt...");
getch();
closegraph();
exit(1);
}
setcolor(GREEN);
settextstyle(SMALL_FONT,HORIZ_DIR,6);
outtextxy(midx-150,midy-30,"Database Created Successfully...");
outtextxy(midx-150,midy,"You must Reopen the application.");
outtextxy(midx-90,midy+30,"Press any key...");
getch();
fclose(record);
closegraph();
exit(1);
}
else
close(GREEN);
}
}
int total_record (void)
{
rewind(record);
total = 0;
while(fread(&user,sizeof(struct info),1,record) == 1)
total++;
return total;
}
char body (int pass)
{
char choice;
cleardevice();
setcolor(GREEN);
settextjustify(CENTER_TEXT,CENTER_TEXT);
settextstyle(SMALL_FONT,HORIZ_DIR,15);
outtextxy(midx,100,"TELEPHONE DIRECTORY");
setcolor(RED);
settextjustify(LEFT_TEXT,BOTTOM_TEXT);
settextstyle(12,HORIZ_DIR,2);
outtextxy(midx+60,138,">>by ANKIT POKHREL<<");
setcolor(CYAN);
line(60,85,580,85);
line(60,145,580,145);
line(60,85,60,335);
line(580,85,580,335);
line(60,335,580,335);
line(60,306,580,306);
line(midx-40,145,midx-40,306);
line(midx-40,285,580,285);
setcolor(DARKGRAY);
settextstyle(2,HORIZ_DIR,6);
outtextxy(midx-250,170,"1: ADD");
outtextxy(midx-250,195,"2: SEARCH");
outtextxy(midx-250,220,"3: MODIFY");
outtextxy(midx-250,245,"4: DELETE");
outtextxy(midx-250,270,"0: CLOSE APPLICATION");
setcolor(GREEN);
settextjustify(CENTER_TEXT,CENTER_TEXT);
settextstyle(12,HORIZ_DIR,3);
outtextxy(midx+27,296,"ENTER CHOICE : ");
if(pass == 0)
{
setcolor(BROWN);
settextstyle(GOTHIC_FONT,HORIZ_DIR,6);
outtextxy(midx+110,205,"WELCOME");
}
else
{
setcolor(BROWN);
settextstyle(GOTHIC_FONT,HORIZ_DIR,6);
outtextxy(midx+105,180,"MAIN");
outtextxy(midx+105,225,"PAGE");
}
setcolor(RED);
settextstyle(11,HORIZ_DIR,1);
outtextxy(midx-27,323,"PLEASE, ENTER YOUR CHOICE TO PROCEED FURTHER");
time();
gotoxy(51,19);
choice = getch();
printf("%c",choice);
return choice;
}
void time (void)
{
/* Conver Date and Time to Character and Print */
int hour;
char date_time[15];
setcolor(LIGHTBLUE);
settextjustify(CENTER_TEXT,CENTER_TEXT);
settextstyle(DEFAULT_FONT,HORIZ_DIR,0);
sprintf(date_time,"%2d - %2d - %2d",today.da_year,today.da_mon,today.da_day);
outtextxy(midx+215,midy+210,date_time);
if(now.ti_hour>12)
{
hour = now.ti_hour - 12;
outtextxy(midx+260,midy+200,"PM");
}
else
{
hour = now.ti_hour;
outtextxy(midx+260,midy+200,"AM");
}
setcolor(LIGHTBLUE);
sprintf(date_time,"%2d : %2d : %2d",hour,now.ti_min,now.ti_sec);
outtextxy(midx+200,midy+200,date_time);
}
void add(void)
{
char confirm,buffer[20];
fseek(record,0,SEEK_END);
do
{
fflush(stdin);
setcolor(GREEN);
settextjustify(CENTER_TEXT,CENTER_TEXT);
settextstyle(2,HORIZ_DIR,8);
setfillstyle(SOLID_FILL,BLACK);
bar(midx+160,152,midx+225,173);
sprintf(buffer,"RECORD NO : %-4d",++total);
outtextxy(midx+105,160,buffer);
setcolor(CYAN);
line(midx-35,175,midx+250,175);
setcolor(BROWN);
settextstyle(SMALL_FONT,HORIZ_DIR,5);
outtextxy(midx+5,197,"Name :");
outtextxy(midx+5,229,"Address :");
outtextxy(midx+5,261,"Phone No :");
show_pointer(midx+47,195);
fflush(stdin);
gotoxy(48,13);
if(scanf("%[A-z]",user.name) != 1)
strcpy(user.name,"Invalid Input");
hide_pointer(midx+47,195);
show_pointer(midx+47,230);
fflush(stdin);
gotoxy(48,15);
gets(user.address);
fflush(stdin);
hide_pointer(midx+47,230);
show_pointer(midx+47,258);
gotoxy(48,17);
if (scanf("%[0-9]",user.phone_no) != 1)
strcpy(user.phone_no,"Invalid Input");
fflush(stdin);
hide_pointer(midx+47,258);
/* Converts first letter to uppercase */
user.name[0] = toupper(user.name[0]);
user.address[0] = toupper(user.address[0]);
/* Overwrites Previous Informations */
setcolor(BLACK);
outtextxy(midx+5,197,"Name :");
outtextxy(midx+5,229,"Address :");
outtextxy(midx+5,261,"Phone No :");
gotoxy(48,13);
printf(" ");
gotoxy(48,15);
printf(" ");
gotoxy(48,17);
printf(" ");
confirm = 'n';
if(strcmp(user.name,"Invalid Input") == 0 || strcmp(user.phone_no,"Invalid Input") == 0)
{
setcolor(RED);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(midx+105,225,"Error in Input.");
outtextxy(midx+103,235,"Please, try again...");
delay(1400);
break;
}
settextstyle(SMALL_FONT,HORIZ_DIR,5);
if(fwrite(&user,sizeof(struct info),1,record) == 1)
{
setcolor(BROWN);
outtextxy(midx+105,210,"Data Added Successfully.\n");
outtextxy(midx+105,230,"Do you want to add another (y/n) ?");
confirm = getch();
setcolor(BLACK);
outtextxy(midx+105,210,"Data Added Successfully.\n");
outtextxy(midx+105,230,"Do you want to add another (y/n) ?");
}
else
{
setcolor(RED);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(midx+85,200,"Error Occured While Processing.");
outtextxy(midx+80,215,"Please, Try Again.");
delay(1200);
setcolor(BLACK);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(midx+85,200,"Error Occured While Processing.");
outtextxy(midx+80,215,"Please, Try Again.");
break;
}
}while(confirm == 'Y' || confirm == 'y');
}
void search(void)
{
char _name[30];
setcolor(BROWN);
settextstyle(SMALL_FONT,HORIZ_DIR,5);
outtextxy(midx,164,"Search :");
setcolor(DARKGRAY);
rectangle(midx+35,157,midx+187,177);
do
{
rewind(record);
flushall();
gotoxy(46,11);
gets(_name);
if(strcmpi(_name,"viewall") == 0)
{
view();
break;
}
if(strcmpi(_name,"return") == 0)
break;
datafound = FALSE;
while(fread(&user,sizeof(struct info),1,record) == 1)
if(strcmpi(user.name,_name) == 0 || strcmpi(user.phone_no,_name) == 0)
{
datafound = TRUE;
setcolor(CYAN);
line(midx-35,185,midx+250,185);
setcolor(BROWN);
settextstyle(2,HORIZ_DIR,5);
outtextxy(midx+5,195,"Name :");
outtextxy(midx+5,215,"Address :");
outtextxy(midx+5,235,"Phone No :");
setcolor(RED);
outtextxy(midx+100,258,"Type \"return\", When Finished.");
outtextxy(midx+100,270,"Press any key to continue...");
setcolor(GREEN);
settextjustify(LEFT_TEXT,CENTER_TEXT);
outtextxy(midx+65,195,user.name);
outtextxy(midx+65,215,user.address);
outtextxy(midx+65,235,user.phone_no);
getch();
setcolor(BLACK);
line(midx-35,185,midx+250,185);
outtextxy(midx+65,195,user.name);
outtextxy(midx+65,215,user.address);
outtextxy(midx+65,235,user.phone_no);
settextjustify(CENTER_TEXT,CENTER_TEXT);
settextstyle(2,HORIZ_DIR,5);
outtextxy(midx+5,195,"Name :");
outtextxy(midx+5,215,"Address :");
outtextxy(midx+5,235,"Phone No :");
outtextxy(midx+100,258,"Type \"return\", When Finished.");
outtextxy(midx+100,270,"Press any key to continue...");
}
if(datafound == FALSE)
{
setcolor(RED);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(midx+85,200,"No Record Available...");
outtextxy(midx+80,215,"Please, Try Again");
outtextxy(midx+100,230,"Type \"return\", When Finished.");
delay(1200);
setcolor(BLACK);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(midx+85,200,"No Record Available...");
outtextxy(midx+80,215,"Please, Try Again");
outtextxy(midx+100,230,"Type \"return\", When Finished.");
}
gotoxy(46,11);
printf(" ");
}while(strcmpi(_name,"return") != 0);
}
void sort (void)
{
int i,j,total;
struct info *rec,temp;
record = fopen("c:\\secure.sys","rb+");
total = total_record();
rec = (struct info *) malloc (total * sizeof(struct info)); /* Allocate Required Memory */
rewind(record);
i = 0;
while(fread(&user,sizeof(struct info),1,record) == 1)
rec[i++] = user; /* Copy to structure rec */
/* Sort Record */
for(i = 0;i < total - 1;i++)
for(j = total - 1;j > i;j--)
if(strcmpi(rec[j].name,rec[j-1].name) < 0)
{
temp = rec[j];
rec[j] = rec[j-1];
rec[j-1] = temp;
}
recordtemp = fopen("c:\\ankit.sys","wb");
rewind(record);
for( i = 0;i < total ;i++)
fwrite(&rec[i],sizeof(struct info),1,recordtemp); /* Write to temporary file */
free(rec);
fclose(record);
remove("c:\\secure.sys");
fclose(recordtemp);
rename("c:\\ankit.sys","c:\\secure.sys"); /* Rename temporary file to original file */
record = fopen("c:\\secure.sys","rb+"); /* Open original file in reading mode */
}
void view (void)
{
int y;
char buffer[100];
cleardevice();
setcolor(GREEN);
settextjustify(CENTER_TEXT,CENTER_TEXT);
settextstyle(SMALL_FONT,HORIZ_DIR,15);
outtextxy(midx,20,"TELEPHONE DIRECTORY");
setcolor(RED);
settextjustify(LEFT_TEXT,BOTTOM_TEXT);
settextstyle(12,HORIZ_DIR,2);
outtextxy(midx+60,58,">>by ANKIT POKHREL<<");
setcolor(CYAN);
line(midx-300,68,midx+300,68);
line(midx-300,115,midx+300,115);
setcolor(LIGHTBLUE);
sprintf(buffer,"%-30s %-30s %-11s","Name","Address","Phone No");
outtextxy(20,100,buffer);
sort();
y = 135;
total = 0;
setcolor(BROWN);
while(fread(&user,sizeof(struct info),1,record) == 1)
{
total++;
sprintf(buffer,"%-30s %-30s %-11s",user.name,user.address,user.phone_no);
outtextxy(20,y,buffer);
setcolor(BROWN);
y += 25;
}
setcolor(GREEN);
sprintf(buffer,"Total Record(s) - %d",total);
outtextxy(20,y+30,buffer);
setcolor(RED);
outtextxy(midx-130,y+95,"Press any key to continue...");
getch();
}
void modify(void)
{
char _name[30],confirm,total,yes_no;
setcolor(BROWN);
settextstyle(2,HORIZ_DIR,5);
outtextxy(midx,164,"Modify :");
setcolor(DARKGRAY);
rectangle(midx+35,157,midx+187,177);
do
{
rewind(record);
fflush(stdin);
gotoxy(46,11);
printf(" ");
gotoxy(46,11);
gets(_name);
if(strcmpi(_name,"return") == 0)
break;
total = 0;
datafound = FALSE;
while(fread(&user,sizeof(struct info),1,record) == 1)
{
if(strcmpi(user.name,_name) == 0)
{
datafound=TRUE;
setcolor(CYAN);
line(midx-35,185,midx+250,185);
setcolor(BROWN);
settextstyle(2,HORIZ_DIR,5);
outtextxy(midx+112,220,"Do you want to see old data (y/n)?");
yes_no = getch();
if(yes_no == 'y' || yes_no == 'Y')
{
fseek(record,sizeof(struct info)*total,SEEK_SET);
setcolor(BLACK);
outtextxy(midx+112,220,"Do you want to see old data (y/n)?");
settextstyle(11,HORIZ_DIR,1);
outtextxy(midx-27,323,"ENTER PERSON'S NAME TO MODIFY");
outtextxy(midx-27,323,"ENTER NEW DATA");
setcolor(RED);
outtextxy(midx-27,323,"YOU ARE VIEWING OLD DATA");
setcolor(BROWN);
settextstyle(2,HORIZ_DIR,5);
outtextxy(midx+5,195,"Name :");
outtextxy(midx+5,215,"Address :");
outtextxy(midx+5,235,"Phone No :");
setcolor(RED);
outtextxy(midx+100,270,"Press any key to continue...");
setcolor(GREEN);
settextjustify(LEFT_TEXT,CENTER_TEXT);
outtextxy(midx+65,195,user.name);
outtextxy(midx+65,215,user.address);
outtextxy(midx+65,235,user.phone_no);
getch();
setcolor(BLACK);
outtextxy(midx+65,195,user.name);
outtextxy(midx+65,215,user.address);
outtextxy(midx+65,235,user.phone_no);
settextjustify(CENTER_TEXT,CENTER_TEXT);
settextstyle(2,HORIZ_DIR,5);
outtextxy(midx+5,195,"Name :");
outtextxy(midx+5,215,"Address :");
outtextxy(midx+5,235,"Phone No :");
outtextxy(midx+100,270,"Press any key to continue...");
}
/* Overwrite Previous Information */
setcolor(BLACK);
settextstyle(2,HORIZ_DIR,5);
outtextxy(midx+112,220,"Do you want to see old data (y/n)?");
settextstyle(11,HORIZ_DIR,1);
outtextxy(midx-27,323,"ENTER PERSON'S NAME TO MODIFY");
outtextxy(midx-27,323,"YOU ARE VIEWING OLD DATA");
outtextxy(midx+112,210,"Do you want to see old data (y/n)?");
/* Print New Information */
setcolor(RED);
outtextxy(midx-27,323,"ENTER NEW DATA");
/* Scan New Data */
setcolor(BROWN);
settextstyle(2,HORIZ_DIR,5);
outtextxy(midx+5,197,"Name :");
outtextxy(midx+5,229,"Address :");
outtextxy(midx+5,261,"Phone No :");
show_pointer(midx+47,195);
fflush(stdin);
gotoxy(48,13);
if(scanf("%[A-z]",user.name) != 1)
strcpy(user.name,"Invalid Input");
hide_pointer(midx+47,195);
show_pointer(midx+47,230);
fflush(stdin);
gotoxy(48,15);
gets(user.address);
fflush(stdin);
hide_pointer(midx+47,230);
show_pointer(midx+47,258);
gotoxy(48,17);
if (scanf("%[0-9]",user.phone_no) != 1)
strcpy(user.phone_no,"Invalid Input");
fflush(stdin);
hide_pointer(midx+47,258);
setcolor(BLACK);
line(midx-35,185,midx+250,185);
outtextxy(midx+5,197,"Name :");
outtextxy(midx+5,229,"Address :");
outtextxy(midx+5,261,"Phone No :");
gotoxy(48,13);
printf(" ");
gotoxy(48,15);
printf(" ");
gotoxy(48,17);
printf(" ");
if(strcmp(user.name,"Invalid Input") == 0 || strcmp(user.phone_no,"Invalid Input") == 0)
{
setcolor(RED);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(midx+105,225,"Error in Input.");
outtextxy(midx+103,235,"Please, try again...");
delay(1400);
break;
}
settextstyle(11,HORIZ_DIR,1);
outtextxy(midx-27,323,"ENTER NEW DATA");
setcolor(RED);
outtextxy(midx-27,323,"ENTER PERSON'S NAME TO MODIFY");
fseek(record,sizeof(struct info)*total,SEEK_SET);
if(fwrite(&user,sizeof(struct info),1,record) == 1)
{
setcolor(BROWN);
settextstyle(2,HORIZ_DIR,5);
outtextxy(midx+105,210,"Data Modified Successfully.");
outtextxy(midx+112,230,"Do you want to modify another (y/n) ?");
confirm = getch();
setcolor(BLACK);
outtextxy(midx+105,210,"Data Modified Successfully.");
outtextxy(midx+112,230,"Do you want to modify another (y/n) ?");
}
}
total++;
}
if(datafound == FALSE)
{
setcolor(RED);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(midx+85,200,"No such record exists.");
outtextxy(midx+80,215,"Please, Try Again.");
outtextxy(midx+100,230,"Type \"return\", When Finished.");
delay(1200);
setcolor(BLACK);
outtextxy(midx+85,200,"No such record exists.");
outtextxy(midx+80,215,"Please, Try Again.");
outtextxy(midx+100,230,"Type \"return\", When Finished.");
confirm = 'y';
}
}while(confirm == 'Y' || confirm == 'y');
}
void delrecord(void)
{
int x,y;
char _name[30],confirm;
setcolor(GREEN);
settextjustify(CENTER_TEXT,CENTER_TEXT);
settextstyle(SMALL_FONT,HORIZ_DIR,8);
outtextxy(midx+105,160,"DELETE RECORD");
setcolor(CYAN);
line(midx-35,180,midx+250,180);
do
{
rewind(record);
setcolor(BROWN);
settextstyle(SMALL_FONT,HORIZ_DIR,5);
outtextxy(midx,194,"Delete :");
setcolor(DARKGRAY);
line(midx+35,208,midx+187,208);
gotoxy(46,13);
printf(" ");
fflush(stdin);
gotoxy(46,13);
gets(_name);
if(strcmpi(_name,"return") == 0)
break;
if(strcmpi(_name,"empty") == 0)
{
if(total == 0)
{
setcolor(RED);
settextstyle(SMALL_FONT,HORIZ_DIR,5);
outtextxy(midx+100,240,"Database is already empty.");
delay(1300);
break;
}
else
{
setcolor(RED);
settextstyle(SMALL_FONT,HORIZ_DIR,5);
outtextxy(midx+83,220,"Please Wait...");
setcolor(LIGHTGRAY);
rectangle(midx+20,235,midx+150,245);
setcolor(GREEN);
for(x = midx+23;x <= midx+147;x++)
{
delay(12);
line(x,238,x,242);
}
remove("c:\\secure.sys");
record = fopen("c:\\secure.sys","wb");
fclose(record);
record = fopen("c:\\secure.sys","rb+");
setcolor(BROWN);
outtextxy(midx+95,260,"Database Emptied Successfully.\n");
delay(1300);
setcolor(BLACK);
outtextxy(midx+105,240,"Database Emptied Successfully.\n");
break;
}
}
recordtemp = fopen("c:\\ankit.sys","wb");
datafound = FALSE;
while(fread(&user,sizeof(struct info),1,record) == 1)
{
if(strcmpi(user.name,_name) == 0)
datafound = TRUE;
else
fwrite(&user,sizeof(struct info),1,recordtemp);
}
if(datafound == TRUE)
{
setcolor(BROWN);
settextstyle(SMALL_FONT,HORIZ_DIR,5);
outtextxy(midx+105,220,"Data Deleted Successfully.\n");
outtextxy(midx+112,240,"Do you want to delete another (y/n) ?");
confirm = getch();
setcolor(BLACK);
outtextxy(midx+105,220,"Data Deleted Successfully.\n");
outtextxy(midx+112,240,"Do you want to delete another (y/n) ?");
}
else
{
setcolor(RED);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(midx+85,225,"No such record exists.");
outtextxy(midx+80,240,"Please, Try Again.");
outtextxy(midx+100,255,"Type \"return\", When Finished.");
delay(1200);
setcolor(BLACK);
outtextxy(midx+85,225,"No such record exists.");
outtextxy(midx+80,240,"Please, Try Again.");
outtextxy(midx+100,255,"Type \"return\", When Finished.");
confirm = 'y';
}
remove("c:\\secure.sys");
rename("c:\\ankit.sys","c:\\secure.sys");
fcloseall();
record = fopen("c:\\secure.sys","rb+");
}while(confirm == 'Y' || confirm == 'y');
}
void clear_and_print(int x,int y,char msg[],int color)
{
/* Overwrites Initial Informations */
setcolor(BLACK);
settextjustify(CENTER_TEXT,CENTER_TEXT);
settextstyle(11,HORIZ_DIR,1);
outtextxy(midx-27,323,"PLEASE, ENTER YOUR CHOICE TO PROCEED FURTHER");
settextstyle(GOTHIC_FONT,HORIZ_DIR,6);
outtextxy(midx+110,205,"WELCOME");
outtextxy(midx+105,180,"MAIN");
outtextxy(midx+105,225,"PAGE");
/* Prints New Information */
setcolor(color);
settextstyle(11,HORIZ_DIR,1);
outtextxy(x,y,msg);
}
void close (int color)
{
cleardevice();
setcolor(color);
settextjustify(CENTER_TEXT,CENTER_TEXT);
settextstyle(10,HORIZ_DIR,1);
outtextxy(midx+7,midy,"THANK YOU FOR USING THIS PROGRAM");
fcloseall();
delay(1000);
closegraph();
exit(0);
}
void about_program(void)
{
cleardevice();
setcolor(WHITE);
setfillstyle(11,RED);
bar3d(0,0,getmaxx(),getmaxy(),0,0); /* Outermost Bar */
setfillstyle(11,DARKGRAY);
delay(500);
bar3d(110,20,540,86,0,0); /* Internal Small Bar */
settextstyle(10,HORIZ_DIR,3);
settextjustify(LEFT_TEXT,LEFT_TEXT);
delay(600);
outtextxy(125,67,"ABOUT THIS PROGRAM");
delay(500);
setfillstyle(9,DARKGRAY);
bar3d(10,415,630,100,0,0); /* Internal Large Bar */
delay(650);
settextstyle(SMALL_FONT,HORIZ_DIR,5);
outtextxy(34,125," -> This Program was developed ,coded and completed as a Home");
delay(250);
outtextxy(33,140,"Project on 10th Shrawan 2065 (25th July 2009).");
delay(250);
outtextxy(33,155,"This Application was developed using the simple concepts of the C programming ");
delay(250);
outtextxy(33,170,"Language. General components of C language like Loops ,String, Sturcture,File");
delay(250);
outtextxy(33,185,"C - Graphics and Conditional Statements are used in this Program.");
delay(250);
setcolor(WHITE);
settextstyle(SMALL_FONT,HORIZ_DIR,4);
outtextxy(19,209,"c");
circle(21,207,6);
circle(21,207,5);
settextstyle(SMALL_FONT,HORIZ_DIR,5);
setcolor(WHITE);
outtextxy(32,211,"Ankit Pokhrel (2066 B.S. / 2009 A.D). All Rights Reserved.");
delay(200);
setcolor(RED);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,0);
outtextxy(19,245,"W");
sound(150);
delay(180);
nosound();
outtextxy(40,245,"A");
sound(350);
delay(180);
nosound();
outtextxy(60,245,"R");
sound(150);
delay(180);
nosound();
outtextxy(80,245,"N");
sound(350);
delay(180);
nosound();
outtextxy(100,245,"I");
sound(150);
delay(180);
nosound();
outtextxy(105,245,"N");
sound(350);
delay(180);
nosound();
outtextxy(125,245,"G");
sound(150);
delay(250);
nosound();
settextstyle(SMALL_FONT,HORIZ_DIR,5);
setcolor(WHITE);
outtextxy(19,260," No part of the program can be reproduced or distributed in any form or by");
delay(250);
outtextxy(33,275,"any means,or stored in a database or retrieval system,without prior written");
delay(250);
outtextxy(33,290,"permission of the programmer. Requests for permission or further information ");
delay(250);
outtextxy(33,305,"should be adressed to Ankit Pokhrel in the address below.");
delay(250);
settextstyle(SMALL_FONT,HORIZ_DIR,6);
outtextxy(33,328,"Ankit Pokhrel");
line(33,330,153,330);
delay(300);
settextstyle(SMALL_FONT,HORIZ_DIR,5);
outtextxy(33,350,"Department of Computer.");
delay(300);
outtextxy(33,365,"Acme Engineeirng College.");
delay(300);
outtextxy(33,380,"Phone no : +977-1-9803970090");
delay(300);
outtextxy(33,395,"E-mail : ankitpokhrel@gmail.com");
delay(300);
outtextxy(33,410,"Kathmandu, NEPAL");
delay(200);
settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
setcolor(WHITE);
outtextxy(30,450,"Press any key to return to main menu");
getch();
}
void how_to_operate (void)
{
cleardevice();
setfillstyle(11,RED);
settextstyle(10,HORIZ_DIR,4);
settextjustify(LEFT_TEXT,LEFT_TEXT);
setcolor(WHITE);
bar3d(0,0,getmaxx(),getmaxy(),0,0); /* Internal Large Bar */
setfillstyle(11,DARKGRAY);
delay(500);
bar3d(62,20,563,86,0,0);
setcolor(WHITE);
delay(600);
outtextxy(75,72,"HOW TO OPERATE?");
delay(500);
setcolor(WHITE);
setfillstyle(9,DARKGRAY);
bar3d(10,415,630,100,0,0);
settextstyle(SMALL_FONT,HORIZ_DIR,5);
delay(650);
setcolor(WHITE);
outtextxy(14,130,"-> This is a single user LOGIN based Telephone Directory.");
delay(300);
setcolor(LIGHTBLUE);
circle(170,156,2);
circle(170,156,1);
setcolor(WHITE);
outtextxy(14,160,"-> Lightblue circle ( ) represents CURSOR.");
delay(300);
outtextxy(14,190,"-> To ADD data Press 1 and Input the data. Hit ENTER after every Input.");
delay(300);
outtextxy(14,220,"-> Option 2 let you to SEARCH the existing data. Also, you can view the full list");
outtextxy(14,235," by typing\"viewall\"on the search box.");
delay(300);
outtextxy(14,265,"-> You can MODIFY the existing data with option number 3.");
delay(300);
outtextxy(14,295,"-> Existing Data can be deleted using option 4. Similarly,Database can be emptied");
outtextxy(14,310," by typing\"Empty\"on Delete Box.");
delay(300);
outtextxy(14,340,"-> Press 0 to exit from the program. You can again login and access your Data -");
outtextxy(14,355," base at any time.");
delay(300);
outtextxy(14,385,"-> You can Press \'H\' any time on the program to access this HELP page.");
delay(300);
settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
setcolor(WHITE);
outtextxy(55,450,"Press any key to return back...");
getch();
}
Friday, September 4, 2009
Telephone Directory
Labels: Big Projects
Posted by Unknown at 1:13 AM
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment