In: Computer Science
Assignment Description:
Write a C++ program for keeping a course list for each student in a college. Information about each student should be kept in an object that contains the student id (four digit integer), name (string), and a list of courses completed by the student.
The course taken by a student are stored as a linked list in which each node contain course name (string such as CS41, MATH10), course unit (1 to 4) and the course grade (A,B,C,D,F).
The program provides a MENU with choices that include adding a student record, deleting a student record, adding a single course record to a student’s record, deleting a single course record from a student’s record, and print a student’s record to a screen.
A student record should include a GPA (Grade Point Average) when display on the screen. The GPA is calculated by following formula:
When the user is through with the program, the program should store the records in a file. The next time the program is run, the records should be read back out of the file and the list should be reconstructed
You will need to implement a List container to hold a list of student records, each of which has a List container as its member. Note that no duplicate items should be permitted in either (student and course) List container.
Develop a test driver program that allow options to add, remove, and display student records and the course list of each student.
Use the class template technique (in C++) to implement a List ADT that could be used for both student list and the course list..
To calculate G.P.A. for one term:
Multiply the point value of the letter grade (A=4, B=3, C=2, D=1, F=0) by the number of credit hours. The result is the grade points (quality points) earned.
Total the credit hours for the student; total the quality points for the student.
Divide the total quality points by the total credit hours.
#include<stdio.h>
struct student
{
int rollno;
char name[30];
float mark;
}stud;
// FUNCTION TO INSERT RECORDS TO THE FILE
void insert()
{
FILE *fp;
fp=fopen("Record","a");
printf("Enter the Roll no :");
scanf("%d",&stud.rollno);
printf("Enter the
Name :");
scanf("%s"&stud.name);
printf("Enter the
mark :");
scanf("%f",&stud.mark);
fwrite(&stud,sizeof(stud),1,fp);
fclose(fp);
}
// FUNCTION TO DISPLAY RECORDS
void disp()
{
FILE *fp1;
fp1=fopen("Record","r");
printf("\nRoll Number\tname\tMark\n\n");
while(fread(&stud,sizeof(stud),1,fp1));
printf("%d\t\t%s\t%.2f\n",stud.rollno,stud.name,stud.mark);
fclose(fp1);
}
// FUNCTION TO SEARCH THE GIVEN RECORD
void search()
{
FILE *fp2;
int r,s,avl;
printf("\nEnter the Roll no you want to search
:");
scanf("%d",&r);
avl=avlrollno(r);
if(avl==0)
printf("Roll No %d is not avilable in the
file\n");
else
{
fp2=fopen("Record","r");
while(fread(&stud,sizeof(stud),1,fp2))
{
s=stud.rollno;
if(a==r)
{
printf("\nRoll no = %d",stud.rollno);
printf("\nName =
%s"stud.name);
printf("\nMark =
%.2f",stud.mark);
}
}
fclose(fp2);
}
}
// FUNCTION TO DELETE A RECORD
void deletef()
{
FILE *fp;
FILE *fpt;
int r,s;
printf("Enter the Roll no you want to delete
:");
scanf("%d",&r);
if(avlrollno(r)==0)
printf("Roll no %d is not available in the
file\n");
else
{
fpo=fopen("Record","r");
fpt=fopen("TempFile","w");
while(fread(&stud,sizeof(stud),1,fpo))
{
a=stud.rollno;
if(s!=r)
fwrite(&stud,sizeof(stud),1,fpt);
}
fclose(fpo);
fclose(fpt);
fpo=fopen("Record","w");
fpt=fopen("TempFile","r");
while(fread(&)stud,sizeof(stud),1,fpt)
fwrite(&stud,sizeof(stud),1,fpo);
printf("\nRECORD
DELETE\n");
}
fclose(fpo);
fclose(fpt);
}
// FUNCTION TO UPDATE THE RECORD
void update()
{
int avl;
FILE *fpt;
FILE *fpo;
int s,r,ch;
printf("enter roll number to update");
scanf("%d",&r);
avl=avlrollno(r);
if(avl==0)
{
printf("roll number %d is not
Available in the file",r);
}
else
{
fpo=fopen("Record","r");
fpt=fopen("TempFile","w");
while(fread(&stud,sizeof(stud),1,fpo))
{
s=stud.rollno;
if(s!=r)
fwrite(&stud,sizeof(stud),1,fpt);
else
{
printf("\n\t1_UPDATE THE NAME OF ROLL NUMBER
%d",r);
printf("\n\t1_UPDATE THE MARK OF ROLL NUMBER
%d",r);
printf("\n\t1_UPDATE BOTH NAME AND MARK OF ROLL
NUMBER %d",r);
PRINTF("\N\N eNTER YOUR CHOICE");
scanf("%d",&ch);
switch(ch)
{
case 1:
printf("Enter Name :
");
scanf("%d",stud.name);
`
break;
case 2:
printf("Enter Mark :
");
scanf("%d",&stud.mark);
break;
case 3:
printf("Enter Name and Mark:
");
scanf("%d",stud.name,&stud.mark );
break;
default:
printf("Invalid
Selection");
break;
}
fwrite(&stud,sizeof(stud),1,fpt);
}
}
fclose(fpo);
fclose(fpt);
fpo=fopen("Record","w");
fpt=fopen("TempFile","r");
while(fread(&stud,sizeof(stud),1,fpt))
{
fwrite(&stud,sizeof(stud),1,fpo);
}
fclose(fpo);
fclose(fpt);
printf("RECORD
UPDATED");
}
}
/* FUNCTION TO SORT THE RECORD */
void sort()
{
int
a[20],count=0,i,j,t,c;
FILE *fpo;
fpo=fopen("Record","r");
while(fread(&stud,sizeof(stud),1,fpo))
{
a[count]=stud.rollno;
count++;
}
c=count;
for(i=0;i<count-1;i++)
{
for(j=i+1;j<count;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
printf("Roll
no.\tName\t\tMar\n\n");
count=c;
for(i=0;i<count;i++)
{
rewind(fpo);
while(fread(&stud,sizeof(stud),1,fpo))
{
if(a[i]==stud.rollno)
printf("\n %d\t\t %s \t\t
%2f",stud.name,stud.mark);
}
// FUNCTION TO CHECK GIVEN ROLL NO IS AVAILABLE
//
int avLrollno(int rno)
{
FILE *fp;
int c=0;
fp=fopen("Record","r");
while(!feof(fp))
{
fread(& NAME
:shahul rollno:46 stud,sizeof(stud),1,fp);
if(rno==stud.rollno)
{
fclose(fp);
return
1;
}
}
fclose(fp);
return 0;
}
//FUNCTION TO CHECK THE FILE IS EMPTY OR NOT
int empty()
{
int c=0;
FILE *fp;
fp=fopen("Record","r");
while(fread(&stud,sizeof(stud),1,fp))
c=1;
fclose(fp);
return c;
}
// MAIN PROGRAM
{
int c,emp,empty();
do
{
printf("\n\t---Select your choice---------\n");
printf("\n\t1. INSERT\n\t2.DISPLAY\n\t3. SEARCH");
printf("\n\t4. DELETE\n\t5.UPDATE\n\t6.SORT");
printf("\n\t7. EXIT");
printf("\n\n------------------------------------------\n");
printf("\nEnter your choice:"0;
scanf("%d",&c);
printf("\n");
switch(c)
{
case 1:
insert();
break;
case 2
emp=empty();
if(emp==0)
printf("\nThe file is EMPTY\n");
else
disp();
break;
case 3:
search();
break;
case 4:
delete();
break;
case 5:
update();
break;
case 6:
emp=empty();
ifemp==0()
printf("\n
The file is EMPTY\n");
else
sort();
break;
case 7:
exit(0);
default:
printf("\nYour choice is wrong\nPlease try again...\n");
break;
}
}while(c!=7);
}