برنامج عنوان ودليل هاتف المسجل
وهي بلغة ++C
<BLOCKQUOTE><font size="1" face=" Arial">code:</font><HR><pre>
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
/* header files */
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
/* define constants */
#define Address_Logo "Abu Omar ADDRESS BOOK"
#define chose_Logo "Please chose from the Manu"
#define filename "C:\\data.txt"
#define HelpFile "C:\\help.txt"
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
/*prototypes*/
void main (void);
void mainmenu (void);
void inputdata(void);
int ValidatePostCode(char* PC);
void SearchBySname (void);
void SearchBySnameAndPostCode (void);
void ViewAllRecords (void);
void help (void);
void ViewCredtis (void);
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
/* Implementation:
define global variables */
struct record
{
char fname[22];
char sname[22];
char street[42];
char PostCode[9];
char country[22];
char tel[13];
};
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
/* define main function */
void main (void)
{
mainmenu (); /* gose to our Main Menu */
};
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
/* our Main Menu */
void mainmenu (void)
{
clrscr();
char chose;
/*the main menu print out*/
gotoxy(28,2);
printf("%s\n",Address_Logo);
gotoxy(20,5);
printf("[A] Create a database of clients.\n");
gotoxy(20,6);
printf("[B] Search by surname.\n");
gotoxy(20,7);
printf("[C] Search by surname and postcode.\n");
gotoxy(20,8);
printf("[V] View all records.\n");
gotoxy(20,9);
printf("[H] Help!\n\n");
gotoxy(20,12);
printf("[E] Exit.\n");
gotoxy(20,11);
printf("[F] View Credits...");
gotoxy(25,15);
printf("=======> ..... <=======");
gotoxy(36,15);
/*now the switch statement for our menu */
scanf("%c",&chose);
switch (toupper(chose))
{
case 'A': inputdata();
case 'B': SearchBySname();
case 'C': SearchBySnameAndPostCode();
case 'V': ViewAllRecords();
case 'H': help();
case 'F': ViewCredtis();
case 'E':
{ clrscr();
gotoxy(15,10);
printf("Thank you for useing Anmar's Address Book");};
getchar();
exit('0');
default: mainmenu();
};
fflush(stdin);
getchar();
};
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
/* This is our input data and writing to a Disk File */
void inputdata (void)
{
clrscr();
char chose;
/* Defining a pointer fp to a file to be opend later */
FILE *fp;
/* setting a record of the name client */
struct record client;
/* Defining a pointer to a record an initialising it do the address of the record client*/
struct record *clptr=&client;
fp = fopen(filename,"a+");
if (fp == NULL)
puts("Can't open file!!! Back to main menu ");
else
{
fflush(stdin);
puts("Enter First Name -Max 20 characters => ");
gets(clptr -> fname);
fflush(stdin);
puts("Enter Last Name -Max 20 characters =>\t");
gets(clptr -> sname);
fflush(stdin);
puts("Enter Street Address -Max 40 characters =>\t");
gets(clptr -> street);
fflush(stdin);
again:
puts("Enter PostCode -Max 7 characters( ex. HA9 8LY )=>\t");
char PC[8];
int test = 0;
gets(PC);
test = ValidatePostCode(PC);
if (test ==0)
{
printf (" You have entered a wrong post code.Enter [R] to \n retry or any key to go Back to main menu!!\n\n");
char chose;
scanf("%c",&chose);
fflush(stdin);
chose=toupper(chose);
if ( chose == 'R') goto again;
mainmenu() ;
};
strcpy(clptr -> PostCode,PC);
fflush(stdin);
puts("Enter Country of person -Max 20 characters =>\t");
gets(clptr -> country);
fflush(stdin);
puts("Enter the phone number -Max 11 characters =>\t");
gets(clptr -> tel);
fflush(stdin);
/* asking the user if ok to save to file */
printf("\n\nSave to file: Y(for Yes) N(for No)?");
scanf("%c",&chose);
chose = toupper(chose);
if (chose == 'Y' )
{
fputs(clptr -> fname,fp); fputs("\n",fp);
fputs(clptr -> sname,fp); fputs("\n",fp);
fputs(clptr -> street,fp);fputs("\n",fp);
fputs(clptr -> PostCode,fp);fputs("\n",fp);
fputs(clptr -> country,fp);fputs("\n",fp);
fputs( clptr -> tel,fp);fputs("\n",fp);
fflush(stdin);
fclose(fp);
printf("Do you like to add another entry: Y(for Yes) N(for No)?");
scanf("%c",&chose);
chose = toupper(chose);
if (chose == 'Y' )inputdata();
};
mainmenu ();
};
};
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
int ValidatePostCode(char* PC)
{
int counter = 0;
counter = strlen(PC);
if ( counter != 7)
{
printf(" Counter = %d ",counter);
printf( " : Invalid Post Code: Check and re-enter again!!\n");
fflush(stdin);
return 0;
};
if ( !(*PC >='A' && *PC <= 'Z'))
{
printf(" First Char: Invalid Post Code: Check and re-enter again!!\n");
fflush(stdin);
return 0;
};
*PC++;
if ( !(*PC >='A' && *PC <= 'Z'))
{
printf(" Second Char: Invalid Post Code: Check and re-enter again!!\n");
fflush(stdin);
return 0;
};
*PC++;
if ( !(*PC >= '0' && *PC <= '9'))
{
printf(" Third Char: Invalid Post Code: Check and re-enter again!!\n");
fflush(stdin);
return 0;
};
*PC++;
if ( !(*PC = ' '))
{
printf(" Fourth Char: Invalid Post Code: Check and re-enter again!!\n");
fflush(stdin);
return 0;
};
*PC++;
if ( !(*PC >= '0' && *PC <='9'))
{
printf(" Fifth char: Invalid Post Code: Check and re-enter again!!\n");
fflush(stdin);
return 0;
};
*PC++;
if ( !(*PC >='A' && *PC <= 'Z'))
{
printf(" Sixth Char: Invalid Post Code: Check and re-enter again!!\n");
fflush(stdin);
return 0;
};
*PC++;
if ( !(*PC >='A' && *PC <= 'Z'))
{
printf(" Seventh Char: Invalid Post Code: Check and re-enter again!!\n");
fflush(stdin);
return 0;
};
/* otherwise Post Code is valid we return true = 1 */
return 1;
};
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
void SearchBySname(void)
{
clrscr();
char InputSurname[22];
struct record client;
FILE *fp;
fp = fopen(filename,"r");
if (fp == NULL)
{
puts("Can't open file!!! Press Enter to go Back to main menu ");
getchar();
mainmenu ();
};
printf("Enter surname your looking for =>");
scanf("%s",InputSurname);
int length;
length=strlen(InputSurname);
InputSurname[length]='\n';
InputSurname[length+1]='\0';
while(!feof(fp))
{
fgets(client.fname,80,fp);
fgets(client.sname,80,fp);
fgets(client.street,80,fp);
fgets(client.PostCode,80,fp);
fgets(client.country,80,fp);
fgets(client.tel,80,fp);
if (strcmpi(client.sname,InputSurname)==0)
{
printf("%s%s%s%s%s%s\n\n\n",client.fname,client.sname,
client.street,client.PostCode,client.country,client.tel);
fflush(stdin);
fclose(fp);
printf("Do you like another search: Y(for Yes) N(for No)?");
char chose;
scanf("%c",&chose);
chose = toupper(chose);
if (chose == 'Y' )SearchBySname();
else mainmenu();
};
};
printf("Sorry it's not there!\n");
printf("Do you like another search: Y(for Yes) N(for No)?");
fflush(stdin);
char chose;
scanf("%c",&chose);
chose = toupper(chose);
if (chose == 'Y' )
{
fclose(fp);
SearchBySname();
}
else mainmenu();
getchar();
};
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
void SearchBySnameAndPostCode (void)
{
clrscr();
char InputSurname[22];
char InputPostCode[9];
struct record client;
char chose;
FILE *fp;
fp = fopen(filename,"r");
if (fp == NULL)
{
puts("Can't open file!!! Press Enter to go Back to main menu ");
getchar();
mainmenu ();
};
printf("Enter surname your looking for =>");
scanf("%s",InputSurname);
fflush(stdin);
int length;
length=strlen(InputSurname);
InputSurname[length]='\n';
InputSurname[length+1]='\0';
again:
printf("Enter his/her Post Co