Home» C » C Projects » C Project to store people information
C Project to store people information
Problem Statements for the Project
Create a file (binary or text of your choice) that contains information about a group of n people.
Information is entered from the keyboard, a person being described by: name (string), first name (string
character), and age (whole type without sign).
1. Read from the keyboard n (n input from the keyboard) such structures and write them in a
file (binary or text);
2. Display the contents of the file on the screen;
3. Read another keyboard from the keyboard as previously defined and check its existence
in the files. If it does not exist, it will be added. Re-display the contents of the file on the
screen;
4. Calculate and display the age average of all people in the file (only the information in the
file will be used!);
5. Sort the existing components in the files according to the field age (ascending / descending, optional);
6. Remove people with a specific name from the files (specified on the keyboard);
7. Check (by screen view) if the name of the 3rd person is correctly written in the files. If not,
correct the file name! (You will see the message "Do you want to change the name (D / N)?" For the user to express their choice).
Each of the above mentioned operations is provided to the program user in the form of a "menu" with the options:
- 1- file creation
- 2- display the contents of the file
- 3- add information to the file
- 4- age average calculation
- 5- sort file contents
- 6- person removal
- 7- correctness information analysis
- 8- end program
Implementation of the Project in C Programming :-
There is only one file in this project. You can name it main.c
Source Code
#include #include char fileName[20]; int createFile(){ /* file is created in current working directory */ FILE * fptr = NULL; int mode = 2; printf("\n Enter name of file : "); scanf(" %s", fileName); fptr = fopen(fileName, "w"); if(fptr!=NULL) fclose(fptr); return 0; } void displayFileContents(){ FILE *fptr = fopen(fileName, "r"); char c; long int count = 0; printf("\n---- File Content ---- \n\n"); while ((c = getc(fptr)) != EOF){ putchar(c); count++; } if(count==0) printf("\n Warning: File is empty!!"); else fclose(fptr); } void addInfo(){ char name[50]; unsigned char age; getchar(); printf("\n\n Enter Name : "); gets(name); /* check if name already exist */ FILE* fptr = fopen(fileName, "r"); char line[500]; char alreadyExist = 0; while (fgets(line, sizeof(line), fptr)) { if(strstr(line, name)) alreadyExist = 1; } fclose(fptr); if(alreadyExist==1) { printf("\n Record already exist !!"); printf(" %s ", line); } else{ fptr = fopen(fileName, "a"); fputs(name, fptr); printf("\n Enter Age : "); scanf("%d",&age); char buffage[5]; char temp[5]; strcpy(temp, " | "); itoa(age, buffage, 10); strcat(temp, buffage); strcat(temp, "\n"); fputs(temp, fptr); /* close the file */ fclose(fptr); } } void calcualteAvgAge(){ FILE* fptr = fopen(fileName, "r"); char line[500]; char *ptr = NULL; float avg = 0; char alreadyExist = 0; int count =0; while (fgets(line, sizeof(line), fptr)) { ptr = strtok(line, "|"); ptr = strtok(NULL, "|"); avg += atoi(ptr); count++; } if(count>0){ avg = avg/count; printf("\nAverage Age is : %.2f",avg) ; } else{ printf("\n No data to calcualte avg age."); } } void sortFileContents(){ FILE* fptr = fopen(fileName, "r"); char line[500]; float tempArr[500]; char *ptr = NULL; int i=0, count=0; while (fgets(line, sizeof(line), fptr)) { count++; ptr = strtok(line, "|"); ptr = strtok(NULL, "|"); tempArr[i++] = atoi(ptr); } int order=0; printf("\n\n Press 1 for Assending order "); printf("\n Press 2 for Desending order : "); scanf("%d",&order); /* sort the Age array in Descendin order */ float temp =0; int j; for(i=0; i tempArr[i]) { temp=tempArr[j]; tempArr[j] = tempArr[i]; tempArr[i] = temp; } } else{ if(tempArr[i] > tempArr[j]) { temp=tempArr[j]; tempArr[j] = tempArr[i]; tempArr[i] = temp; } } } } for(i=0; i 0){ printf("fileName : %s removed ", fileName); if(remove(fileName) == 0) printf("\n File %s is deleted successfully", fileName); else printf("\n Error while deleting file %s ", fileName); getchar(); getchar(); rename(temp, fileName); printf("\n Success ! Reocrd found & deleted"); } else{ printf("\n Error: Record not found"); } remove(temp); } void correctInfo(){ /* create a temporary file */ FILE* fptr = fopen(fileName, "r"); if(fptr==NULL){ printf("\n Error: No record exist"); return; } char temp[]="temp1"; char line[500]; //file mode should be same as bas file FILE* fptrTmp = fopen(temp, "w"); while (fgets(line, sizeof(line), fptr)) { fputs(line, fptrTmp); //printf("\n putting : %s in new file", line); memset(line, NULL, sizeof(line)); } fclose(fptrTmp); fclose(fptr); fptrTmp = fopen(temp, "r"); float tempArr[500]; char *ptr = NULL; char name[50]; memset(name, NULL, sizeof(name)); int i=0, count=0; char choice='\0'; memset(line, NULL, sizeof(line)); while (fgets(line, sizeof(line), fptr)) { count++; printf("\n %s ", line); printf("\n Do u want to update this record? y/n :"); scanf(" %c",&choice); if(choice=='y'){ ptr = strtok(line, "|"); strcpy(name, ptr); removePerson(name); printf("\n\n Please enter new values "); addInfo(); break; } } close(fptr); } void menu(){ char choice = -1; while(choice!=8){ printf("\n\n\n #### Main Menu ####\n\n"); printf("\n 1. File creation"); printf("\n 2. Display the contents of the file"); printf("\n 3. Add Info to file"); printf("\n 4. Age average calcualtion"); printf("\n 5. Sort file contents"); printf("\n 6. Person removal"); printf("\n 7. Correctness information analysis"); printf("\n 8. End program"); printf("\n\n Enter your choice : "); scanf("%d", &choice); switch(choice){ case 1: if(createFile() == 0) printf("\n Success : File created successfully!"); else printf("\n Error: Can't create file'"); break; case 2: displayFileContents(); break; case 3: addInfo(); break; case 4: calcualteAvgAge(); break; case 5: sortFileContents(); break; case 6: removePerson(NULL); break; case 7: correctInfo(); break; case 8: printf("\n thanks for using the application \n "); default: printf("\n Error: Invalid Choice! Enter again"); getchar(); } } } int main(int argc, char *argv[]) { menu(); return 0; }