Write a menu based program to maintain student records. Your program should take
ID: 3698029 • Letter: W
Question
Write a menu based program to maintain student records. Your program should take the following inputs: 1. Student first name (max. 20 characters) 2. Student last name, (max. 20 characters) 3. Student scores (float/double), 4. Zip code (may be a string) You have to create a structure Student with above information. Then create a linked list where each list node contains a Student. Your program should be able to take records of a minimum of 5 students. After taking the records, you should provide 7 functionalities to the user. 1. Print records – prints records of all students 2. Add a new record – take a new record from the user for a new student. Create a node for the new student and add it to the end of the list. 3. Delete record(s) – to delete a record, ask for the last name of the student from the user. If there are multiple students with same last name, you must delete all of their records (you have to delete corresponding list nodes). 4. Search by Zip code – prints records of all students with a given zip code. 5. Search by score range – take two scores max, min; then print records of all students who have scores between [max, min] (inclusive). 6. Find the median score – compute the median score and print it. Also, print how many students are above this median score (do not forget to sort the list to compute median). 7. Exit the program – terminate on a specific input from the user. Let that specific input be an integer of value 0.
Explanation / Answer
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{
char **fname;
char **lname;
char *name;
float *score;
printf("wlecom to Student Records Maintance System ");
printf("Number of records you want to enter(min-3):");
scanf("%d", &noRecords);
fname=(char**)malloc(10*sizeof(*fname));
lname=(char**)malloc(10*sizeof(*lname));
score = (float*)malloc(10*sizeof(float));
for(int i=0;i<noRecords;i++)
{
printf("Enter score of %d student:",i+1);
scanf("%f",&score[i]);
fname[i]=(char*)malloc(20+1);
printf("Enter fname of %d student:",i+1);
scanf("%s",fname[i]);
lname[i]=(char*)malloc(20+1);
printf("Enter lname of %d student:",i+1);
scanf("%s",lname[i]);
}
do
{
printf(" *Print records(Press 1) ");
printf("*Add new records(Press 2) ");
printf("*Delete record(s)(Press 3) ");
printf("*Search by last name(Press 4) ");
printf("*Search by score(Press 5) ");
printf("*Sort by last name(Press 6) ");
printf("*Find median score(Press 7) ");
printf("*Exit the program Print(Press 0) ");
printf("*Enter Your choice:");
scanf("%d",&choice);
switch(choice)
{
case 1:for(int i=0;i<noRecords;i++)
{
printf(" First name: %s Last name: %s Score: %f ",*(fname+i),*(lname+i),*(score+i));
}
break;
case 2:
printf("Enter score of the student %d:",noRecords);
scanf("%f",&score[noRecords]);
fname[noRecords]=(char*)malloc(20+1);
printf("Enter fname the student %d:",noRecords);
scanf("%s",fname+noRecords);
lname[noRecords]=(char*)malloc(20+1);
printf("Enter lname of the student %d:",noRecords);
scanf("%s",lname+noRecords);
noRecords++;
break;
case 3: printf("Enter the last name of the student:");
name=(char*)malloc(20+1);
scanf("%s",name);
for(int i=0;i<noRecords;i++)
{
if(name==lname[i])
{
free(lname[i]);
free(fname[i]);
free(score[i]);
}
}
break;
case 0:printf("exiting..");exit(0); break;
default: printf(" Invalid choice ");
}
}while(1);
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.