//6 Weeks Grading Book Project
//Created By: Joshua Nixon, Alex Holiday, Elliot ?
//This is a grading book project that will allow
//a teacher to enter in the amount of student she
//has and enter in the grades for them.
#include
#include
#include
#include
#include
class GradeBook
{
private:
//Structure for the student gradebook
struct Student_Info
{
char Password[10];//This will hold the password if they even have one
int PwdCheck;//This will
char StudentID[10];//This will hold the student\students ID
char First[20];//This will hold the student\students First Name
char Last[20];//This will hold the student\students Last Name
int GradeLevel;//This will hold the student\students Grade Number
double *Grades;//This will hold the student\students amount of Grades
};
//Global Struct for program
public:
char* Teacher_Gender[3];
//Function to make the start up screen
void Start_Up_Screen(int X, int Y);
void View_Intructions(int Gender, char* Teacher_Name);
void New_GradeBook();// New GradeBook
void Load_GradeBook();// Load GradeBook
void About_GradeBook();// About GradeBook
//The constructor used to intailize the data for the variables
GradeBook::GradeBook()
{
strcpy(Teacher_Gender[0],"Mr. ");
strcpy(Teacher_Gender[1],"Miss. ");
strcpy(Teacher_Gender[2],"Mrs. ");
}
//deconstructor used to give the memory back to the program
};
int main()
{
GradeBook GB;//Intailize the class
// X Y
GB.Start_Up_Screen(79,23);//Create the simple interface
GB.View_Intructions(2,"TeacherName");
return 0;
}
//***************************************************************
//This function will take the X,Y and draw the UI(User Interface)
//The third argument is used for the teacher gender(respect)
//The Fourth argument is the Last or First Teachers Name
//***************************************************************
void GradeBook::Start_Up_Screen(int X, int Y)
{
clrscr();
textbackground(BLACK);
textcolor(GREEN);
//How far the Block will go across
for(int I = 0; I < X; I++)
cout<<"²";
//alt 178
cout<> ";
cin>>Choice;
}//End while Loop
while( (Choice < 0) || (Choice > 4) );
//What will happen from whatever the users choice was
switch(Choice)
{
case 1:
New_GradeBook();
break;
case 2:
Load_GradeBook();
break;
case 3:
About_GradeBook();
break;
case 4:
do
{
//Prompt the user to make sure he wants to exit
Start_Up_Screen(79,23);
gotoxy(11,7);
cout<<"Are you sure you want to exit the gradebook (y/n) >> ";
cin>>Char_Choice;
}//end while loop
while( (Char_Choice != 'Y') && (Char_Choice != 'y') &&
(Char_Choice != 'N') && (Char_Choice != 'n'));
//Check what they typed in
if( (Char_Choice == 'Y') || Char_Choice == 'y')
exit(1);
else
{
Teacher_Name = NULL;//Make the string equal nothing again
View_Intructions(2,"TeacherName");//Do recursion to see the
//instructions again
}
break;
}//end case
}
void GradeBook::New_GradeBook()
{
int IndexNum = 0;
int GradesNum = 0;
char* FileExten = "C:\\";
char SaveName[255];
char *Temp = NULL;
char Pick;// This will let the the gradebook knows if this is password protected
Student_Info *Info;
//Number of student this will allocate the right room for each
Start_Up_Screen(79,23);
gotoxy(11,7);
cout<<"Enter the number of students in your class>> ";
cin>>IndexNum;
Info = new Student_Info[IndexNum]; //This will allocate the appropiate
//space for the structs
//Number grades per student this will allocate the right room for each
Start_Up_Screen(79,23);
gotoxy(11,7);
cout<<"Enter the number of grades for each student>> ";
cin>>GradesNum;
//Set all the allocations for the Grades member in Student_Info
for(int I = 0; I < IndexNum; I++)
Info[I].Grades = new double[GradesNum];
gotoxy(11,8);
cout<<"";
gotoxy(13,9);
cout<<"File Size: "<> ";
cin>>Info[I].StudentID;
//Enter in Student First Name
Start_Up_Screen(79,23);
gotoxy(11,8);
cout<<"Enter in students First Name>> ";
cin>>Info[I].First;
//Enter in Student Last Name
Start_Up_Screen(79,23);
gotoxy(11,8);
cout<<"Enter in students Last Name>> ";
cin>>Info[I].Last;
//Enter in Student First Name
Start_Up_Screen(79,23);
gotoxy(11,8);
cout<<"Enter in student Grade Level>> ";
cin>>Info[I].GradeLevel;
//Nested loop to get the amount of grades
for(int J = 0; J < GradesNum; J++)
{
//Enter in Student grades Name
Start_Up_Screen(79,23);
gotoxy(11,8);
cout<<"Enter in students"<<" "<<"Grade"<> ";
cin>>Info[I].Grades[J];
}//end nested loop
}//end outer loop
//***********************************************************************
//This part will promt the user if he/she wants a password protected file
//***********************************************************************
Start_Up_Screen(79,23);
gotoxy(11,6);
cout<<"Max of 10 chars";
gotoxy(11,7);
cout<<"Will this file be password protected (y/n)>> ";
cin>>Pick;
if(Pick == 'Y' || Pick == 'y')
{
Info[0].PwdCheck = 1;//Let the file know of there is a password
cout<<"Enter the password: ";
cin>>Info[0].Password;
}//end if
if(Pick == 'N' || Pick == 'n')
Info[0].PwdCheck = 0;//Let the file know of there is a password
//************************************************************************
//*****************************************************************
//For optimization lets create the save part inside new gradebook
//*******************************************************************
Start_Up_Screen(79,23);
gotoxy(11,7);
cout<<"Type only the file name (e.g. Test)";
gotoxy(11,8);
cout<<" Enter the name of the file>> ";
cin>>SaveName;
//Concatinate the strings
strcat(FileExten,SaveName);//Concatinate filename
strcpy(Temp,FileExten);//Put the EX:(C:\\Test)into Temp
strcat(FileExten,".txt");//concatinate the extention .txt
//Save the data to a file
ofstream FileS2(FileExten);
FileS2<> ";
cin>>LoadName;
strcat(FileExten,LoadName);
strcat(FileExten,".txt");
cout<>IndexNum;//Load how much is suppost to allocated
FileL2>>GradesNum;//Load the amount of grades per student
FileL2>>PwdCheck;
FileL2>>FilePas;
Student_Info *Info = new Student_Info[IndexNum];//Allocate the correct
//room for the student
//Allocate the right amount of room for the grades
for(int I = 0; I < GradesNum; I++)
Info[I].Grades = new double[GradesNum];
//*************************
//Check for the password
//*************************
if(PwdCheck == 1)
{
Start_Up_Screen(79,23);
gotoxy(11,7);
cout<<"Enter in the password>> ";
cin>>Password;
if(strcmpi(Password,FilePas) == 0)
{//Begin inner if
Start_Up_Screen(79,23);
gotoxy(11,7);
cout<<"Correct, Press any key to view data";
//Clear all data
strcpy(Password,"");//Put nothing in Password
strcpy(LoadName,"");//Put nothing in LoadName
strcpy(FileExten,"C:\\");//Put nothing in Password
getch();
}//End inner if
else//If the password is not right return to the menu
{//Begin else
Start_Up_Screen(79,23);
gotoxy(11,7);
cout<<"Incorrect, Access Denied!";
//Clear all data
strcpy(Password,"");//Put nothing in Password
strcpy(LoadName,"");//Put nothing in LoadName
strcpy(FileExten,"C:\\");//Put nothing in Password
getch();
Start_Up_Screen(79,23);
View_Intructions(2,"");
}//End Else
}//Enter outer If
//Load all data into the structs
for(int A = 0; A < IndexNum;A++)
{
FileL2>>Info[A].StudentID;
FileL2>>Info[A].First;
FileL2>>Info[A].Last;
FileL2>>Info[A].GradeLevel;
for(int B = 0; B < GradesNum; B++)
FileL2>>Info[A].Grades[B];
}//End For Loop
clrscr();
for(A = 0; A < IndexNum;A++)
{
Start_Up_Screen(79,23);
gotoxy(11,7);
cout<<"Student #"<= 60)//Control Range
{
RangeX = 11;
RangeY++;
gotoxy(RangeX,RangeY);//Goto to that direct cursor location
}
else
{
cout<<"|"<>";
gotoxy(13,12);
cout<<"<>";
gotoxy(13,13);
cout<<"<>";
getch();
Start_Up_Screen(79,23);//Create the simple interface
View_Intructions(2,"");
}