#include #include struct biodata{ int recno,age; char name[20],sex; float salary; }; void main(){ void addData(void); void delData(void); void showAll(void); void showRecord(void); void alterData(void); char choice; clrscr(); while(1){ clrscr(); textcolor(BLACK); cprintf(" B I O - D A T A\r\n"); printf("\n\n*****CHOOSE YOUR CHOICE*****\n"); printf("1) ADD DATA\n"); printf("2) DELETE DATA\n"); printf("3) SHOW ALL\n"); printf("4) SHOW RECORD\n"); printf("5) ALTER DATA\n"); printf("6) Exit \n"); printf("Enter your choice : "); fflush(stdin); choice = getche(); switch(choice){ case'1' : //call add data addData(); break; case'2' : //call delete databreak; case'3' : //call show all data showAll(); break; case'4' : //call show record showRecord(); break; case'5' : //call alter databreak; case'6' : case 27 : clrscr(); gotoxy(25,10); _setcursortype(_NOCURSOR); textcolor(LIGHTMAGENTA); cprintf("THANKS FOR USING THIS SOFTWARE"); getch(); exit(1); } } } //Adding Record to Filevoid addData(){ FILE *fp;
struct biodata obj; fp = fopen("biodata.txt","a+t"); clrscr(); printf("\n*****ADDING DATA*****\n"); printf("\nEnter Record No : "); scanf("%d",&obj.recno); printf("Enter Name : "); fflush(stdin); scanf("%s",obj.name); printf("Enter age : "); scanf("%d",&obj.age); fflush(stdin); printf("Enter Sex : "); scanf("%c",&obj.sex); printf("Enter Salary : "); scanf("%f",&obj.salary); fscanf(stdin,"%d %s %d %c %f",&obj.recno,obj.name,&obj.age,&obj.sex,&obj.salary); fprintf(fp,"%d %s %d %c %f",obj.recno,obj.name,obj.age,obj.sex,obj.salary); fclose(fp); } void showRecord(){ FILE *fp; struct biodata obj; int rec; long pos; fp = fopen("biodata.txt","r"); clrscr(); printf("\n*****SHOWING SPECIFIC RECORD*****\n"); printf("\nEnter Record No : "); scanf("%d",&rec); pos = rec * sizeof(obj); fseek(fp,pos,SEEK_SET); if(feof(fp)==0) printf("\n\nNO DATA FOUND\n"); else{ fscanf(fp,"%d %s %d %c %f",&obj.recno,obj.name,&obj.age,&obj.sex,&obj.salary); printf("\n\n\tRecord No : %d\n",obj.recno); printf("\tName : %s\n",obj.name); printf("\tAge : %d\n",obj.age); printf("\tSex : %c\n",obj.sex); printf("\tSalary : %f\n",obj.salary); } getch(); fclose(fp); } void showAll(){ FILE *fp; struct biodata obj; int totrec,i; fp = fopen("biodata.txt","r"); clrscr(); fseek(fp,0,SEEK_END); totrec=ftell(fp)/sizeof(obj); printf("\n*****SHOWING ALL RECORD*****\n"); printf("\n\nRecord_No\tName\t\tAge\tSex\tSalary\n\n"); printf("\n\n%d\n",totrec); for(i=1;i<=totrec;i++){ fscanf(fp,"%d %s %d %c %f",&obj.recno,obj.name,&obj.age,&obj.sex,&obj.salary);
fprintf(stdout,"%-15d %-15s %-8d %-2c %10.2f\n",obj.recno,obj.name,obj.age,obj.sex,obj.salary); } getch(); fclose(fp); }
Secod source code /** * A menu-driven program for elementary database management * @author: Bibek Subedi * @language: C * This program uses file handling in Binary mode */ /// List #include #include #include #include #include
of library functions ///for input output functions like printf, scanf ///for windows related functions (not important) ///string operations
/** List of Global Variable */ COORD coord = {0,0}; /// top-left corner of window /** function : gotoxy @param input: x and y coordinates @param output: moves the cursor in specified position of console */ void gotoxy(int x,int y){ coord.X = x; coord.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord); } /** Main function started */ int main(){ FILE *fp, *ft; /// file pointers char another, choice; /** structure that represent a employee */ struct emp{ char name[40]; ///name of employee int age; /// age of employee float bs; /// basic salary of employee };
struct emp e; /// structure variable creation char empname[40]; /// string to store name of the employee long int recsize; /// size of each record of employee /** open the file in binary read and write mode * if the file EMP.DAT already exists then it open that file in read write mode * if the file doesn't exit it simply create a new copy */ fp = fopen("EMP.DAT","rb+"); if(fp == NULL){ fp = fopen("EMP.DAT","wb+"); if(fp == NULL){ printf("Connot open file"); exit(1); } } /// sizeo of each record i.e. size of structure variable e recsize = sizeof(e); /// infinite loop continues untile the break statement encounter while(1){ system("cls"); ///clear the console window gotoxy(30,10); /// move the cursor to postion 30, 10 from top-left corner printf("1. Add Record"); /// option for add record gotoxy(30,12); printf("2. List Records"); /// option for showing existing record gotoxy(30,14); printf("3. Modify Records"); /// option for editing record gotoxy(30,16); printf("4. Delete Records"); /// option for deleting record gotoxy(30,18); printf("5. Exit"); /// exit from the program gotoxy(30,20); printf("Your Choice: "); /// enter the choice 1, 2, 3, 4, 5 fflush(stdin); /// flush the input buffer choice = getche(); /// get the input from keyboard switch(choice){ case '1': /// if user press 1 system("cls"); fseek(fp,0,SEEK_END); /// search the file and move cursor to end of the file /// here 0 indicates moving 0 distance from the end of the file another = 'y';
while(another == 'y'){ /// if user want to add another record printf("\nEnter name: "); scanf("%s",e.name); printf("\nEnter age: "); scanf("%d", &e.age); printf("\nEnter basic salary: "); scanf("%f", &e.bs); fwrite(&e,recsize,1,fp); /// write the record in the file printf("\nAdd another record(y/n) "); fflush(stdin); another = getche(); } break; case '2': system("cls"); rewind(fp); ///this moves file cursor to start of the file while(fread(&e,recsize,1,fp)==1){ /// read the file and fetch the record one record per fetch printf("\n%s %d %.2f",e.name,e.age,e.bs); /// print the name, age and basic salary } getch(); break; case '3': /// if user press 3 then do editing existing record system("cls"); another = 'y'; while(another == 'y'){ printf("Enter the employee name to modify: "); scanf("%s", empname); rewind(fp); while(fread(&e,recsize,1,fp)==1){ /// fetch all record from file if(strcmp(e.name,empname) == 0){ ///if entered name matches with that in file printf("\nEnter new name,age and bs: "); scanf("%s%d%f",e.name,&e.age,&e.bs); fseek(fp,-recsize,SEEK_CUR); /// move the cursor 1 step back from current position fwrite(&e,recsize,1,fp); /// override the record break; } } printf("\nModify another record(y/n)"); fflush(stdin); another = getche(); } break;
case '4': system("cls"); another = 'y'; while(another == 'y'){ printf("\nEnter name of employee to delete: "); scanf("%s",empname); ft = fopen("Temp.dat","wb"); /// create a intermediate file for temporary storage rewind(fp); /// move record to starting of file while(fread(&e,recsize,1,fp) == 1){ /// read all records from file if(strcmp(e.name,empname) != 0){ /// if the entered record match fwrite(&e,recsize,1,ft); /// move all records except the one that is to be deleted to temp file } } fclose(fp); fclose(ft); remove("EMP.DAT"); /// remove the orginal file rename("Temp.dat","EMP.DAT"); /// rename the temp file to original file name fp = fopen("EMP.DAT", "rb+"); printf("Delete another record(y/n)"); fflush(stdin); another = getche(); } break; case '5': fclose(fp); /// close the file exit(0); /// exit from the program } } return 0; }