Jump to content


Check out our Community Blogs

Bouki

Member Since 08 Apr 2010
Offline Last Active Apr 10 2010 12:10 AM
-----

Topics I've Started

Structures and Files

08 April 2010 - 04:15 PM

You are required to create a student management system that will allow you to store and
update student records. Each student record should consist of an id, a name (fist name
and last name), date of birth, address, telephone number and the program being pursued.
Assume 10 records will be stored.
1. Create and populate an array of records. Store records into file
2. Allow user to update a record. Note, the user should only manipulate the data
structure. All changes to the data structure should then be use to overwrite the
file.
3. Allow user to search for a record from the data structure.
4. Print all records from the structure.
NB. The students should create appropriate functions to solve the problem.


I have done more than three quarter of the code but its missing three functions.
1. Update Students
2. Print Students
3. Load Students

When is is compiled i get these errors
27 `student students[10]' have incomplete type
27 storage size of `students' isn't known
16 storage size of `students' isn't known


#include <stdio.h>
#include <ctype.h>

struct Student
{
int ID;
char LastName[32];
char FirstName[32];
int DateOfBirth; // This could be of the form YYYYMMDD. For example someone born on December 21st, 1990 would have a value of 19901221
char Address[32];
char TelephoneNumber[11]; // a 10-digit string
char ProgramPursued[32];
};

struct student students[10]={
{"123","Hall", "Rayon", "160687", "43_Olympic_Court", "898-0497", "Computer"},
{"234","Spencer", "Sochelle", "220587", "29_Decent_Village", "528-5214", "Business"},
{"345","Dobson", "Dwayne", "890583", "263_Far Park Blvd", "457-2014", "Computer"},
{"456","Clarke", "Dave", "10181", "87_Rasta_Village", "354-5874", "Law"},
{"567","Currie", "Nickeisha", "230491", "26_Waterground_rd", "898-6578", "Nurse"},
{"678","Blackwood", "Mariann", "090490", "3_St_Johns_road", "256-1458", "Art"},
{"789","Hall", "Wesley", "101086", "3_Bayfarm_road", "236-1028", "Science"},
{"891","Hall", "Bouki", "251285", "67_pimpim_drive", "887-9910", "Engineer"},
{"912","Paul", "Shawn", "231180", "25_glasco_Close", "567-1996", "Law"},
{"101","Able", "Frank", "100591", "1_Camp_road", "528-1235", "Business"},
};

char GetUserOption();
int GetIDFromUser();
void LetUserSearchForStudent();
void UpdateStudents(Student students[]);
void PrintStudents(Student students[]);
void LoadStudents(Student students[]);
void SaveStudents(Student students[]);


char GetUserOption()
{
char option = 'I'; // 'I' for Invalid

while(option == 'I')
{
// Print the menu items
printf("\n");
printf("Choose one of the following options:\n[u]pdate [P]rint [S]earch [E]xit\n");
scanf("%c", &option);

switch(toupper(option))
{
case 'U':
case 'P':
case 'S':
case 'E':
break;
default:
option = 'I';
break;
}
}

return option;
}

int GetIDFromUser()
{
int id = 0;
printf("Enter the ID: ");
scanf("%d", &id);
return id;
}

void LetUserSearchForStudent()
{
// Getting the ID from the user to search for
int id = GetIDFromUser();
}





// students must hold 10 students
void UpdateStudents(Student students[])
{


}



// students must hold 10 students
void PrintStudents(Student students[])
{

FILE *fp ;
char ch ;

fp = fopen ( "records.txt", "rb" ) ;

while ( 1 )
{
ch = fgetc ( fp) ;

if ( ch == EOF )
break ;

printf ( "%c", ch ) ;
}
fclose ( fp ) ;
}


// students must hold 10 students
void LoadStudents(Student students[])
{

FILE *fp;
fp=fopen("records.txt","a+");
}



// students must hold 10 students
void SaveStudents(Student students[])
{
int i;

// Open the file for writing
FILE *fp = fopen("records.txt", "wb");
if(fp == NULL) return;

// Loop through each student
for(i = 0; i < 10; ++i)
{
// Write the student to the file....here we will use comma-separated values
fprintf(fp, "%d,%s,%s,%d,%s,%s,%s\r\n",
students[i].ID,
students[i].LastName,
students[i].FirstName,
students[i].DateOfBirth,
students[i].Address,
students[i].TelephoneNumber,
students[i].ProgramPursued
);
}

// Close the file
fclose(fp);
}


int main()
{
Student students[10];
int looping = 1;

// Load the students from the file
LoadStudents(students);

// Loop until exit
while(looping)
{
char option = GetUserOption();
switch(option)
{
case 'U':
// TODO: Let the user update a record
break;

case 'P':
// TODO: Print the students to the screen
break;

case 'S':
LetUserSearchForStudent();
break;

case 'E':
looping = 0; // exit the loop
break;
}
}

// Save the students to the file
SaveStudents(students);

return 0;
}


Its is possible this could be completed or pointer given.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download