Exemple #1
0
int main(int argc, char ** argv)
{
  if (argc < 4)
    {
      printf("need four file names: input, output1, and output2");
      return EXIT_FAILURE;
    }
  Student * stu = readStudent(argv[1]);
  if (stu == NULL)
    {
      printf("readStudent fail\n");
      return EXIT_FAILURE;
    }
  stu = sortStudentbyID(stu);
  if (writeStudent(argv[2], stu) == EXIT_FAILURE)
    {
      printf("writeStudent fail\n");
      return EXIT_FAILURE;
    }
  stu = sortStudentbyName(stu);
  if (writeStudent(argv[3], stu) == EXIT_FAILURE)
    {
      printf("writeStudent fail\n");
      return EXIT_FAILURE;
    }
  freeStudent(stu);
  return EXIT_SUCCESS;
}
Exemple #2
0
int main(int argc, char ** argv)
{
  if (argc < 4)
    {
      printf("need four file names: input, output1, and output2");
      return EXIT_FAILURE;
    }
  int numberStudent; /* not initialized */
  if (countStudent(argv[1], & numberStudent) == EXIT_FAILURE)
    {
      printf("countStudent fail\n");
      return EXIT_FAILURE;
    }
  Student * studentArray; /* not initialized */
  studentArray = allocateStudent(numberStudent);
  if (studentArray == NULL)
    {
      printf("allocateStudent fail\n");
      return EXIT_FAILURE;
    }
  if (readStudent(argv[1], studentArray, numberStudent) == EXIT_FAILURE)
    {
      printf("readStudent fail\n");
      return EXIT_FAILURE;
    }
  sortStudentbyID(studentArray, numberStudent);
  if (writeStudent(argv[2], studentArray, numberStudent) == EXIT_FAILURE)
    {
      printf("writeStudent fail\n");
      return EXIT_FAILURE;
    }
  sortStudentbyName(studentArray, numberStudent);
  if (writeStudent(argv[3], studentArray, numberStudent) == EXIT_FAILURE)
    {
      printf("writeStudent fail\n");
      return EXIT_FAILURE;
    }
  freeStudent(studentArray, numberStudent);
  return EXIT_SUCCESS;
}
int main(){
	srand(time(0));

	int facultyCount = rand() % 2000 + 1000;	//average 2500 faculty
	int studentCount = facultyCount * 5 + rand() % 1000 - rand() % 1000;	//average 12.5k students
	int organizationCount = studentCount / 25 + rand() % 200 - rand() % 200;//average 500 organizations
	int courseCount = facultyCount / 5;			//average 500 courses offered

	cout<<facultyCount<<"  Faculty\n"<<studentCount<<"  Students \n"<<organizationCount<<"  Groups\n"<<courseCount<<"  Courses\n";

	//create our base objects for the university
	cout<<"Hiring Faculty..."<<endl;
	for(int i = 0; i < facultyCount; i++){
		faculty.push_back(Faculty());
	}
	cout<<"Accepting Student Applications..."<<endl;
	for(int i = 0; i < studentCount; i++){
		students.push_back(Student());
	}
	cout<<"Founding Organizations..."<<endl;
	for(int i = 0; i < organizationCount; i++){
		organizations.push_back(Organization());
	}
	cout<<"Designing Curriculum..."<<endl;
	unordered_set<string> uniqueCourses;	//the set stores only unique values and determines duplicates in O(1) time.  This is how we keep from regenerating the same class twice
	for(int i = 0; i < courseCount; i++){

		Class newClass;
		string key;
		do{
			newClass = Class();	//regenerate a class if it already exists
			key = newClass.subject + itos(newClass.number);
		}while(uniqueCourses.find(key) != uniqueCourses.end());	//loop until we fail to find a course with this key value.  then we'll know it's unique

		uniqueCourses.insert(uniqueCourses.begin(), key);
		courses.push_back(newClass);
	}

	//create relations between these base objects (a.k.a the hard part).
	cout<<"Opening Registration & Open House..."<<endl;
	for(int i = 0; i < studentCount; i++){
		for(int j = 0; j < (rand() % 20)+1; j++){//average 10 enrollments over the course of 4 semesters
			enrollment.push_back(EnrolledIn(students[i]));
		}

		for(int j = 0; j < rand() % 4; j++){	//up to 3 memberships per student
			membership.push_back(MemberOf(students[i]));
		}
	}
	cout<<"Assigning Professors..."<<endl;
	for(int i = 0; i < facultyCount; i++){
		for(int j = 0; j < rand() % 4; j++){	//faculty can teach up to 3 courses
			instruction.push_back(Teaches(faculty[i]));
		}		
	}
	cout<<"Volunteering Faculty to Organizations..."<<endl;
	for(int i = 0; i < organizationCount; i++){
		if(rand() % 5 == 0) leadership.push_back(Leads());	//a quarter of organizations have faculty leadership
	}

	cout<<"Checking constraints..."<<endl;

	for(int i = 0; i < courseCount; i++){
		if(courses[i].size == 0){
			cout<<"Empty course fixed\n";
			enrollment.push_back(EnrolledIn(&courses[i]));
		}
		if(!courses[i].hasProf){
			cout<<"Untaught course fixed\n";
			instruction.push_back(Teaches(&courses[i]));
		}
	}
	for(int i = 0; i < organizationCount; i++){
		if(organizations[i].size == 0){
			cout<<"Empty organization fixed\n";
			membership.push_back(MemberOf(&organizations[i]));
		}
	}

	cout<<"Writing data to file...\n"<<endl;	//self explanatory vvvvvv
	openFile();

	for(int i = 0; i < facultyCount; i++){
		writeFaculty(faculty[i].ID, faculty[i].name, faculty[i].salary);
	}
	for(int i = 0; i < studentCount; i++){
		writeStudent(students[i].UIN, students[i].name, students[i].major, students[i].advisorID);
	}
	for(int i = 0; i < organizationCount; i++){
		writeStudentOrganization(organizations[i].ID, organizations[i].name, organizations[i].category);
	}
	for(int i = 0; i < courseCount; i++){
		writeCourse(courses[i].subject, courses[i].number, courses[i].hours, courses[i].title);
	}
	for(int i = 0; i < enrollment.size(); i++){
		writeEnrolledIn(itosem(enrollment[i].semester), enrollment[i].subject, enrollment[i].number, enrollment[i].UIN, itograde(enrollment[i].grade));
	}
	for(int i = 0; i < instruction.size(); i++){
		writeTeaches(instruction[i].subject, instruction[i].number, instruction[i].facultyID, itosem(instruction[i].semester));
	}
	for(int i = 0; i < leadership.size(); i++){
		writeLeads(leadership[i].facultyID ,leadership[i].studentOrgID, itos(leadership[i].joinedMo)+"/"+itos(leadership[i].joinedYr));
	}
	for(int i = 0; i < membership.size(); i++){
		writeMemberOf(membership[i].UIN, membership[i].studentOrgID, itos(membership[i].joinedMo)+"/"+itos(membership[i].joinedYr));
	}
	
	closeFile();
	cout<<"All data generated"<<endl;
}