DIR
DIR
h>
#include <conio.h>
#include <stdlib.h>
#include <fstream.h>
#include <dos.h>
#include <ctype.h>
#include <string.h>
#include <time.h>
#include <stdio.h>
#include <graphics.h>
char *dir={"files.rec"};
class directory{
public:
char *getdata(int);
void database(int),
intro(),
empty(),
mainprogram(int),
fileoptions(int),
helpoptions(int),
addentry(),
modify(),
search(),
erase(),
sorry();
int access();
/*--end of class directory-**/ };
struct info{
char name[size];
char number[size];
char location[size];
char info[size];
/**--end of info structure--**/ }n;
int directory::access(){
directory code;
int access=0;loop:clearviewport();
rectangle(getmaxx()/2-140,getmaxy()/2-20,getmaxx()/2+135,getmaxy()/2+4);
outtextxy(getmaxx()/2-127,getmaxy()/2-12,"Enter Accesscode:");
gotoxy(43,15);if(!strcmp(code.getdata(0),"password")){
clearviewport();sound(1000);
rectangle(getmaxx()/2-140,getmaxy()/2-20,getmaxx()/2+135,getmaxy()/2+4);
outtextxy(getmaxx()/2-110,getmaxy()/2-12,"A C C E S S G R A N T E D !");
delay(500);nosound();return 0;}
clearviewport();sound(1000);
rectangle(getmaxx()/2-140,getmaxy()/2-20,getmaxx()/2+135,getmaxy()/2+4);
outtextxy(getmaxx()/2-105,getmaxy()/2-12,"A C C E S S D E N I E D !");
delay(500);nosound();access++;if(access<3)goto loop;elsereturn 1;
/**--end of function--**/ }
void display(){
int color=getcolor();
setcolor(0);
outtextxy(xy(40),xy(57),"Programmed By: Noel A. Dacara BSCS-101P");
while(!kbhit()){
time_t t; time(&t);
setcolor(9);rectangle(8,xy(56)-1,getmaxx()-8,xy(59)-4);
setfillstyle(1,4);bar(9,xy(56),xy(38),xy(59)-5);
setcolor(0);
outtextxy(15,xy(57),ctime(&t)); delay(100);}
setcolor(color);
/**--end of function--**/ }
void screensaver(){
setfillstyle(1,0);bar(xy(24),xy(19),getmaxx()-35,xy(49));
int color=getcolor();
setcolor(3); settextstyle(2,0,6);
outtextxy(xy(26),xy(26)," WELCOME TO THE WORLD OF TECHNOLOGY! ");
outtextxy(xy(26),xy(30)," This program aims to satisfy the humans");
outtextxy(xy(26),xy(34)," needs on useful and functional programs.");
outtextxy(xy(26),xy(38)," Hope you'll enjoy using this! Thank You!");
setcolor(color); settextstyle(0,0,1);
/**--end of function--**/ }
void directory::sorry(){
setfillstyle(1,0);bar(xy(24),xy(19),getmaxx()-35,xy(49));
int color=3,previous=getcolor();
int x=0, y=0, z=0;
while(z<2){
setcolor(color++);settextstyle(2,0,6);
typeme(xy(31)+x,xy(26)+y,"SORRY..NOT FINISH",30);
typeme(xy(36)+x,xy(29)+y,"IN THIS PART YET!",30);
setcolor(0);
typeme(xy(31)+x,xy(26)+y,"SORRY..NOT FINISH",30);
typeme(xy(36)+x,xy(29)+y,"IN THIS PART YET!",30);
x+=20; y+=20; z++; }
setfillstyle(1,0);bar(xy(24),xy(19),getmaxx()-35,xy(49));
setcolor(previous); settextstyle(0,0,1);
/**--end of function--**/ }
void directory::empty(){
strncpy(n.name,"",size);
strncpy(n.number,"",size);
strncpy(n.location,"",size);
strncpy(n.info,"",size);
/**--end of function--**/ }
void directory::intro(){
int a,b,c,d;
clearviewport();setfillstyle(8,1);
for(a=0,b=getmaxx(),c=getmaxx()/2,d=getmaxx()/2;
a<getmaxx()/2+3;a+=5,b-=5,c-=5,d+=5){
line(c,xy(8),d,xy(8));line(c,xy(51),d,xy(51));
bar(0,xy(9),a,xy(50));bar(b,xy(9),getmaxx(),xy(50));
sound(10*(a+250));delay(1);}delay(300);
bar(0,xy(9),getmaxx(),xy(50));
settextstyle(0,0,2);outtextxy(xy(11),xy(5),"ELECTRONIC TELEPHONE DIRECTORY");
settextstyle(0,0,1);setcolor(4);
line(xy(40),xy(40)-5,getmaxx()-50,xy(40)-5);
setcolor(1);outtextxy(50,getmaxy()-59,"Now Loading..");setcolor(4);
rectangle(47,getmaxy()-62,getmaxx()-48,getmaxy()-48);
for(a=300;a>0;a-=5){sound(10*(a+250));delay(20);}delay(200);nosound();
for(a=150,b=10;a<=getmaxx()-50;++a,++b){
setfillstyle(1,0);bar(xy(10),xy(5),xy(72),xy(7));
settextstyle(0,0,2);if(b==14)b=10;setcolor(b);
outtextxy(xy(11),xy(5),"ELECTRONIC TELEPHONE DIRECTORY");
setfillstyle(1,1);bar(49,getmaxy()-60,a,getmaxy()-50);gotoxy(7,25);
settextstyle(0,0,1);setcolor(3);
if(a<230)outtextxy(50,getmaxy()-59,"Now
Loading..");elseif(a<290)outtextxy(50,getmaxy()-59,"Locating data
files..");elseif(a<350)outtextxy(50,getmaxy()-59,"Checking drive memory
space..");elseif(a<420)outtextxy(50,getmaxy()-59,"Setting system to graphics
mode..");elseif(a<480)outtextxy(50,getmaxy()-59,"Detecting internal unit
errors..");elseif(a<530)outtextxy(50,getmaxy()-59,"Initializing program
components..");elseif(a<getmaxx()-50)outtextxy(50,getmaxy()-59,"Starting database
utility..");delay(10);}
outtextxy(50,getmaxy()-59,"Starting database utility..");
sound(1000);delay(100);nosound();delay(100);
sound(1000);delay(100);nosound();delay(500);clearviewport();
/**--end of function--**/ }
void directory::addentry(){
back:
char data[size];
settextstyle(0,0,1);
FILE *add; directory rec;
add=fopen(dir,"ab");
setfillstyle(1,0);bar(xy(24),xy(19),getmaxx()-35,xy(49));
gotoxy(30,12);cout<<"Input Entry Details";
gotoxy(30,14);cout<<"Name : ";
strcpy(data,rec.getdata(1));
gotoxy(30,16);cout<<"Phone Number : ";
strcpy(n.number,rec.getdata(1));
gotoxy(30,18);cout<<"Location : ";
strcpy(n.location,rec.getdata(1));
gotoxy(30,20);cout<<"Other Info : ";
strcpy(n.info,rec.getdata(1));
int exist=0;
while(fread(&n,sizeof(n),1,add)){
if(!strcmp(data,n.name)) exist=1; }
if(exist==1){ delay(1000);
gotoxy(30,22); cout<<"Record already exist! "; delay(1000); }
else {
strcpy(n.name,data);
gotoxy(30,22);cout<<"Save to directory?[y/n] ";
if(getche()=='y'){
fwrite(&n,sizeof(n),1,add); delay(1000);
gotoxy(30,22);cout<<"File has been saved! "; delay(1000);
fclose(add);
gotoxy(30,22);cout<<"Want to input another Entry?[y/n] ";
if(getche()=='y')goto back; } rec.mainprogram(0); }
setfillstyle(1,0);bar(xy(24),xy(19),getmaxx()-35,xy(49));
/**--end of function--**/ }
void directory::search(){
back:
char data[size]; int found=0;
FILE *find; directory rec;
find=fopen(dir,"rb");
setfillstyle(1,0);bar(xy(24),xy(19),getmaxx()-35,xy(49));
gotoxy(30,12);cout<<"Select Type of Search:";
gotoxy(30,14);cout<<"[1] By Name ";
gotoxy(30,15);cout<<"[2] By Number";
gotoxy(30,16);cout<<"[3] By Location";
gotoxy(30,17);cout<<"[4] Cancel Search";
switch(getch()){
case'1':
gotoxy(30,19);cout<<"Enter Name to Search: ";
strcpy(data,rec.getdata(1));
while(fread(&n,sizeof(n),1,find)){
if(!strcmpi(data,n.name)) found=1; }
break;
case'2':
gotoxy(30,19);cout<<"Enter Number to Search: ";
strcpy(data,rec.getdata(1));
while(fread(&n,sizeof(n),1,find)){
if(!strcmpi(data,n.number)) found=1; }
break;
case'3':
gotoxy(30,19);cout<<"Enter Location to Search: ";
strcpy(data,rec.getdata(1));
while(fread(&n,sizeof(n),1,find)){
if(!strcmpi(data,n.location)) found=1; }
break;
case'4':
setfillstyle(1,0); bar(xy(24),xy(19),getmaxx()-35,xy(49));
rec.mainprogram(1);
default:
gotoxy(30,19); cout<<"Invalid Choice!"; sound(1000);
delay(200); nosound(); goto back;
/**--end of switch--**/ }
if(found==0){ delay(1000); gotoxy(30,21);
cout<<"Record not found!"; delay(1000); }
if(found==1){
delay(1000);
setfillstyle(1,0);bar(xy(24),xy(19),getmaxx()-35,xy(49));
gotoxy(30,12);cout<<"Record Found!";
gotoxy(30,14);cout<<"Name : "<<n.name;
gotoxy(30,16);cout<<"Phone Number : "<<n.number;
gotoxy(30,18);cout<<"Location : "<<n.location;
gotoxy(30,20);cout<<"Other Info : "<<n.info;
gotoxy(30,22);cout<<"Press any key to exit.."; getch(); }
fclose(find); rec.mainprogram(1);
/**--end of function--**/ }
void directory::modify(){
back:
char data[size]; int found=0;
FILE *edit, *edit1, *edit2; directory rec;
setfillstyle(1,0);bar(xy(24),xy(19),getmaxx()-35,xy(49));
gotoxy(30,12);cout<<"Select How to Locate File:";
gotoxy(30,14);cout<<"[1] By Name";
gotoxy(30,15);cout<<"[2] By Number";
gotoxy(30,16);cout<<"[3] By Location";
gotoxy(30,17);cout<<"[4] Cancel";
switch(getch()){
case'1':
edit1=fopen(dir,"rb+");
edit2=fopen("temp.rec","wb");
gotoxy(30,19);cout<<"Enter Name: ";
strcpy(data,rec.getdata(1));
while(fread(&n,sizeof(n),3,edit1)){
if(!strcmpi(data,n.name)) found=1; }
break;
case'2':
edit1=fopen(dir,"rb+");
edit2=fopen("temp.rec","wb");
gotoxy(30,19);cout<<"Enter Phone Number: ";
strcpy(data,rec.getdata(1));
while(fread(&n,sizeof(n),3,edit1)){
if(!strcmpi(data,n.number)) found=1; }
break;
case'3':
edit1=fopen(dir,"rb+");
edit2=fopen("temp.rec","wb");
gotoxy(30,19);cout<<"Enter Location: ";
strcpy(data,rec.getdata(1));
while(fread(&n,sizeof(n),3,edit1)){
if(!strcmpi(data,n.location)) found=1; }
break;
case'4':
setfillstyle(1,0);bar(xy(24),xy(19),getmaxx()-35,xy(49));
rec.mainprogram(2);
default:
gotoxy(30,19); cout<<"Invalid Choice!";
delay(1000); goto back;
/**--end of switch--**/ }
if(found==0){delay(1000); gotoxy(30,21);
cout<<"Record not Found!"; fcloseall(); delay(1000); }
else{
rec.empty();
fwrite(&n,sizeof(n),1,edit2);
fcloseall();
remove(dir);
rename("temp.rec",dir);
edit=fopen(dir,"ab");
setfillstyle(1,0);bar(xy(24),xy(19),getmaxx()-35,xy(49));
gotoxy(30,12);cout<<"Enter New Records";
gotoxy(30,14);cout<<"Name : ";
strcpy(n.name,rec.getdata(1));
gotoxy(30,16);cout<<"Number : ";
strcpy(n.number,rec.getdata(1));
gotoxy(30,18);cout<<"Location : ";
strcpy(n.location,rec.getdata(1));
gotoxy(30,20);cout<<"Other Info : ";
strcpy(n.info,rec.getdata(1));
fwrite(&n,sizeof(n),1,edit);
delay(100);
gotoxy(30,22);cout<<"Saving record to directory.. "; delay(1500);
gotoxy(30,22);cout<<"Record successfully modified!";delay(1000);
fclose(edit); } rec.mainprogram(2);
/**--end of function--**/ }
void directory::erase(){
back:
char data[size]; int found=0;
FILE *erase1, *erase2; directory rec;
setfillstyle(1,0);bar(xy(24),xy(19),getmaxx()-35,xy(49));
gotoxy(30,12);cout<<"Deleting Records on Directory";
gotoxy(30,14);cout<<"[1] By Name";
gotoxy(30,15);cout<<"[2] By Phone Number";
gotoxy(30,16);cout<<"[3] By Location";
gotoxy(30,17);cout<<"[4] Cancel";
erase1=fopen(dir,"rb");
erase2=fopen("temp.rec","wb");
switch(getch()){
case'1':
gotoxy(30,19);cout<<"Enter Name: ";
strcpy(data,rec.getdata(1));
while(fread(&n,sizeof(n),1,erase1)){
if(!strcmpi(data,n.name)) found=1; }
break;
case'2':
gotoxy(30,19);cout<<"Enter Phone Number: ";
strcpy(data,rec.getdata(1));
while(fread(&n,sizeof(n),1,erase1)){
if(!strcmpi(data,n.number)) found=1; }
break;
case'3':
gotoxy(30,19);cout<<"Enter Location: ";
strcpy(data,rec.getdata(1));
while(fread(&n,sizeof(n),1,erase1)){
if(!strcmpi(data,n.location)) found=1; }
break;
case'4':
fcloseall();
setfillstyle(1,0);bar(xy(24),xy(19),getmaxx()-35,xy(49));
rec.mainprogram(3);
default:
gotoxy(30,21); cout<<"Invalid Choice!";
delay(1000); fcloseall(); goto back;
/**--end of switch--**/ }
if(found==0){ gotoxy(30,21); delay(1000);
cout<<"Record not found!"; delay(1000); }
else{
rec.empty();
fwrite(&n,sizeof(n),1,erase2);
fcloseall();
remove(dir);
rename("temp.rec",dir);
delay(1000); gotoxy(30,19);
cout<<"Deleting "<<data<<".. ";delay(1500);
gotoxy(30,19);cout<<"Record has been deleted! ";delay(1000);
} fcloseall(); rec.mainprogram(3);
/**--end of function--**/ }
void quit(){
int a,b,c;
setcolor(0);
for(a=1,b=getmaxy()-1,c=200;a<=getmaxy()/2;a++,b--,c--){
line(1,a,getmaxx()-1,a);
line(1,b,getmaxx()-1,b);sound(10*(c+200));
delay(1);}
delay(300);nosound();setcolor(4);
typeme(xy(2),xy(20),"Developed By: Noel A. Dacara BSCS-101P",30);
delay(500);setcolor(0);
typeme(xy(2),xy(20),"Developed By: Noel A. Dacara BSCS-101P",30);
delay(2000);
/**--end of function--**/ }
void main(){
directory base;
atexit(quit);
int gd=DETECT,gm,error,a,b,c,d;
initgraph(&gd,&gm,"c:\\programs\\tc\\bgi");
error=graphresult();
if(error!=0){sound(1000);printf("Initializing Graphic Components Failed!%s\n",
grapherrormsg(error));delay(500);nosound();exit(EXIT_FAILURE);}
do{
sound(1000);delay(100);nosound();delay(100);a++;}while(a<4);
if(base.access()==1)exit(EXIT_FAILURE);
base.intro();
setcolor(4);
for(a=0,b=0,c=getmaxy(),d=getmaxx();c>=0;a++,b++,c--,d--){
line(0,0,0,a);
line(0,getmaxy(),b,getmaxy());
line(getmaxx(),getmaxy(),getmaxx(),c);
line(d,0,getmaxx(),0);delay(1);}
rectangle(0,0,getmaxx(),getmaxy());delay(100);
setfillstyle(1,4);bar(5,5,getmaxx()-5,xy(16));
setfillstyle(1,4);bar(5,xy(16)+5,getmaxx()-5,xy(60));
setfillstyle(1,0);bar(15,xy(18),getmaxx()-16,xy(50));
setcolor(1);rectangle(8,8,getmaxx()-8,xy(16)-3);
rectangle(8,xy(16)+10,getmaxx()-8,xy(50)+6);
base.database(0);
exit(EXIT_SUCCESS);
/**--end of program--**/ }