
/*A menu-driven program for elementry database management*/

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<process.h>

void main()
{
FILE *fp, *ft;
char another,choice;
struct emp
		{
		char name[40];
		int age;
		float bs;
		};
struct emp e;
char empname[40];
long int recsize;
clrscr();

fp=fopen("Emp.doc", "rb+");
	if(fp==NULL)
	{
	fp=fopen("Emp.doc","wb+");
		if(fp==NULL)
		{
		puts("Cannot open file");
		exit(0);
		}
	}

	recsize = sizeof(e);

		while(1)
		{
		printf("\n\n\t1. Add Records");
		printf("\n\t2. List Records");
		printf("\n\t3. Modify Records");
		printf("\n\t4. Delete Records");
		printf("\n\t5. Exit");
		printf("\n\n\t Your Choice\t");

		choice=getche();

			switch(choice)
			{
			case '1':

			fseek(fp, 0, SEEK_END);
			another = 'y';
				while(another=='y')
				{
				printf("\nEnter Name, age and basic Salary\n");
				scanf("%s %d %f", e.name, &e.age, &e.bs);
				fwrite(&e, recsize, 1, fp);
				printf("\nAdd Another Record(y/n)\t");
				//fflush(stdin);
				another=getche();
				}
				break;

			case '2':

				rewind(fp);

				while(fread(&e, recsize, 1, fp)==1)
				printf("\n\n\t\t%s\t%d\t%f", e.name, e.age, e.bs);
				break;

			case '3':

				another='y';
				while(another=='y')
				{
				printf("\nEnter name of Employee to Modify\n");
				scanf("%s", empname);

				rewind(fp);
					while(fread(&e, recsize, 1, fp)==1)
					{
						if(strcmp(e.name, empname)==0)
							{
							printf("\nEnter New name, age & bs\n");
							scanf("%s %d %f", e.name, &e.age, &e.bs);
							fseek(fp, -recsize, SEEK_CUR);
							fwrite(&e, recsize, 1, fp);
							break;
							}
					}
					printf("\nModify another Record (y/n)\t");
					//fflush(stdin);
					another=getche();
				}
				break;

			  case '4':

				another='y';
				while(another=='y')
				{
				printf("\nEnter name of Employee to Delete\n");
				scanf("%s", empname);

				ft=fopen("Temp.doc", "wb");
				rewind(fp);
					while(fread(&e, recsize,1,fp)==1)
					{
						if(strcmp(e.name, empname)!=0)
						fwrite(&e,recsize, 1, ft);
					}

					fclose(fp);
					fclose(ft);

					remove("Emp.doc");
					rename("Temp.doc", "Emp.doc");

					fp=fopen("Emp.doc", "rb+");

					printf("Delete another Record(y/n)\t");
					//fflush(stdin);
					another=getche();

				}
				break;

			 case '5':
				fclose(fp);
				exit(0);
			}
		}
}