Friday, September 4, 2009

Telephone Directory

/*******************************************************
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();
}

0 comments:


by Ankit Pokhrel.