/* A Menu Based Program to Manage The Records of Singers */
/* The Program Provides Facilities of Adding, Searching, */
/* Listing, Modifying and Deleting the Records */
#include "stdio.h"
#include "conio.h"
#include "string.h"
#include "stdlib.h"
#define TRUE 1
#define FALSE 0
struct singers
{
char name[25],album[20];
long year;
} sing;
void add(void);
void print_menu(void);
void search(void);
void delsinger(void);
void modify(void);
void list(void);
FILE *record,*tempforfiles;
int i,j,N,choice,datafound,total;
char *str,ch,singer_name[20];
void main()
{
clrscr();
record=fopen("Singer.txt","rb"); /* Checking for the Existense of Database */
if(record==NULL)
{
fclose(record);
printf("Database Doesn't exists....");
printf("\npress Enter to Create..\nElse, press any key.\n");
if(getch()==13) /* Creates Database only if the User Hits Enter(ASCII value 13) */
{
record=fopen("Singer.txt","wb+");
if(record==NULL)
{
printf("\nCouldn't open the file..");
exit(0);
}
else
{
printf("\nDatabase Created Successfuly.\n");
printf("Please, Enter Informations.\n");
printf("\n\nHow many singers are there? ");
scanf("%d",&N);
printf("Name Album Year\n");
for(i=0;i
scanf("%s %s %ld", sing.name,sing.album,&sing.year);
fwrite(&sing,sizeof(struct singers),1,record);
fflush(stdin);
}
fclose(record);
}
}
else
{
fcloseall();
exit(0);
}
}
do
{
print_menu();
record=fopen("Singer.txt","r+b");
if(record==NULL)
{
printf("\nError Occured While Processing...");
getch();
exit(0);
}
switch(choice)
{
case 1:
add();
fclose(record);
break;
case 2:
rewind(record);
list();
break;
case 3:
rewind(record);
search();
break;
case 4:
record=fopen("Singer.txt","r+b");
modify();
break;
case 5:
record=fopen("Singer.txt","rb+");
delsinger();
break;
case 6:
clrscr();
break;
case 0:
exit(0);
default:
printf("\nWrong Choice..");
break;
}
}while(choice!=0);
fcloseall();
getch();
}
void print_menu(void)
{
printf("\n----------MENU----------");
printf("\n1: Add\n2: List\n3: Search\n4: Modify\n5: Delete\n6: Clear Screen\n0: Exit");
printf("\n\nEnter Choice: ");
scanf("%d",&choice);
fflush(stdin);
}
void add(void)
{
fseek(record,0,SEEK_END);
printf("\nName\tAlbum\tYear\n");
scanf("%s %s %ld",sing.name,sing.album,&sing.year);
if(fwrite(&sing,sizeof(struct singers),1,record)==1)
printf("\nData Added Successfully.\n");
else
{
printf("\nError Occured While Processing.\n");
printf("Please, Try Again.\n");
}
}
void list(void)
{
printf("\n");
total=0; /* Counts the total Records */
while(fread(&sing,sizeof(struct singers),1,record)==1)
{
total++;
printf("%s\t%s\t%ld\n",sing.name,sing.album,sing.year);
}
fclose(record);
printf("\nTotal Records - %d\n",total);
}
void search(void)
{
printf("\nEnter The Name To Be Searched: ");
fflush(stdin);
gets(singer_name);
flushall();
datafound=FALSE;
while(fread(&sing,sizeof(struct singers),1,record)==1)
if(strcmp(sing.name,singer_name)==0)
{
datafound=TRUE;
printf("\n%s\t%s\t%ld\n",sing.name,sing.album,sing.year);
}
if(datafound==FALSE)
printf("No Records Found...\n");
fclose(record);
}
void delsinger(void)
{
printf("\nEnter Singer Name: ");
fflush(stdin);
gets(singer_name);
tempforfiles=fopen("temp.txt","wb");
datafound=FALSE;
/* Copying all Data to Temporary File */
/* excluding the singer name entered by user */
while(fread(&sing,sizeof(struct singers),1,record)==1)
{
if(strcmp(sing.name,singer_name)==0)
datafound=TRUE;
else
fwrite(&sing,sizeof(struct singers),1,tempforfiles);
}
if(datafound)
printf("Successfully Deleted...\n");
else
{
printf("\nError Occured While Deleting.");
printf("\nPlease, Try Again...\n");
}
remove("Singer.txt"); /* Removing Original Database */
rename("temp.txt","Singer.txt"); /* Renaming Temporary Database */
fcloseall();
record=fopen("Singer.txt","r+b");
}
void modify(void)
{
printf("\nEnter Singers Name: ");
fflush(stdin);
gets(singer_name);
flushall();
total=0;
datafound=FALSE;
while(fread(&sing,sizeof(struct singers),1,record)==1)
{
if(strcmp(sing.name,singer_name)==0)
{
datafound=TRUE;
printf("\n\t***********\n");
printf("\tDATA EXISTS\n");
printf("\t***********\n\n");
printf("| The Old Data Is |\n");
printf("--------------------\n");
printf("%s\t%s\t%ld\n",sing.name,sing.album,sing.year);
printf("--------------------\n\n");
printf("| Enter New Data |\n");
printf("--------------------");
printf("\nName\tAlbum\tYear\n");
scanf("%s %s %ld",sing.name,sing.album,&sing.year);
fseek(record,sizeof(struct singers)*total,SEEK_SET); /* Setting Cursor Position */
if(fwrite(&sing,sizeof(struct singers),1,record)==1)
printf("\nData Modified Successfully...\n");
}
total++;
}
if(datafound==FALSE)
{
printf("\nData doesn't exists...");
printf("\nPlease Check the Name and Try Again.\n");
}
fclose(record);
}
/* END OF PROGRAM */
Friday, June 26, 2009
A Menu Based Program to Manage The Records of Singers
Labels: Small Projects
Posted by Unknown at 12:56 AM
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment