示例#1
0
int edit_teacher(char *database, int index, teacher *xteacher){
	FILE *fp;
	int n, i;
	char file[64], temp_file[64];
	strcpy(file, "Database/");
	strcat(file, database);
	strcat(file, "_teacher");
	strcpy(temp_file, "Database/");
	strcat(temp_file, ".");
	strcat(temp_file, database);
	strcat(temp_file, "_teacher");
	fp = fopen(temp_file,"a");
	n = teacher_number(database);
	teacher yteacher;
	for(i = 0; i < n; i++) {
		yteacher = get_teacher(database, n-1);
		if(i!=index)
			fprintf(fp,"%d %d %s\n",yteacher.index,yteacher.week_time, yteacher.name);
		else
			fprintf(fp,"%d %d %s\n",xteacher->index,xteacher->week_time, xteacher->name);
	}
	remove(file);
	rename(temp_file,file);
	fclose(fp);
	return 0;
}
示例#2
0
int show_teacher_info(char *database, int choice) {
	int c;
	teacher xteacher;
	xteacher = get_teacher(database,choice);
	refresh();
	noecho();
	curs_set(0);
	WINDOW *win;
	int y,x;
	start_color();
	getmaxyx(stdscr,y,x);
	win = newwin(0, 0, 0, 0);
	init_pair(1, COLOR_RED, COLOR_BLACK);
	box(win, 0, 0);
	print_in_middle(win, y/4 + 1, 0, x, "Info", COLOR_PAIR(1));
	mvwhline(win, y/4, x/4, ACS_HLINE, x/2);
	mvwhline(win, y/4 + 2, x/4, ACS_HLINE, x/2);
	mvwhline(win, y/2, x/4, ACS_HLINE, x/2);
	mvwvline(win, y/4 + 1, x/4 , ACS_VLINE, y/4 - 1);
	mvwaddch(win, y/4, x/4 , ACS_ULCORNER);
	mvwaddch(win, y/2, x/4 , ACS_LLCORNER);
	mvwaddch(win, y/4, 3*x/4 , ACS_URCORNER);
	mvwaddch(win, y/2, 3*x/4 , ACS_LRCORNER);
	mvwvline(win, y/4 + 1, 3*x/4, ACS_VLINE, y/4 - 1);
	mvwaddch(win, y/4 + 2, 3*x/4 , ACS_RTEE);
	mvwaddch(win, y/4 + 2, x/4 , ACS_LTEE);
	wrefresh(win);
	mvwaddch(win, y - 3, 0, ACS_LTEE);
	mvwhline(win, y - 3, 1, ACS_HLINE, x - 2);
	mvwaddch(win, y - 3, x - 1, ACS_RTEE);
	move(y/4 + 3,x/3 + 2);
	printw("Name - %s",xteacher.name);
	move(y/4 + 5,x/3 + 2);
	printw("Max Weekly Hours - %d",xteacher.week_time);
	mvwprintw(win,y - 2, 2,"A:Add Allocation\tB:Back\tQ:Quit");
	refresh();
	while((c = wgetch(win))){
		switch(c) {
			case KEY_DOWN:
			case KEY_UP:
				return 0;
			case 'B':
			case 'b':
				curs_set(1);
				return 1;
			case 'Q':
			case 'q':
				curs_set(1);
				return INT_MIN;
			case 'A':
			case 'a':
				return 2;
			default:
				break;
		}
		wrefresh(win);
	}
	curs_set(1);
	return 0;
}
示例#3
0
int remove_teacher(char *database, int index){
	FILE *fp;
	int n, i;
	char file[64],temp_file[64];
	n = teacher_number(database);
	teacher xteacher;
	strcpy(temp_file, "Database/");
	strcat(temp_file, ".");
	strcat(temp_file, database);
	strcat(temp_file, "_teacher");
	strcpy(file, "Database/");
	strcat(file, database);
	strcat(file, "_teacher");
	fp = fopen(temp_file,"w");
	for(i = 0; i < n; i++) {
		if(i != index) {
			xteacher = get_teacher(database, i);
			fprintf(fp,"%d %d %s\n",xteacher.index,xteacher.week_time, xteacher.name);
		}
	}
	remove(file);
	rename(temp_file,file);
	fclose(fp);
	return 0;
}
示例#4
0
void readAssignmnet(assignment_node *assignmentList, teacher_node *teacherList, course_node *courseList, char *s)
{
	int teacher_number;
	int course_number;
	if (sscanf(s, "A %d %d", &teacher_number, &course_number) > 0){
		teacher *myTeacher = get_teacher(teacher_number, teacherList);
		course *myCourse = get_course(course_number, courseList);
		assignment *newAssignment = create_assignment(myTeacher, myCourse);
		add_assignment(assignmentList, newAssignment);
	}
}
示例#5
0
void print_course_for_teacher(assignment_node *assignmentList, teacher_node *teacherList,  int teacher_number)
{
	teacher *myTeacher = get_teacher(123457, teacherList);
	if (myTeacher == NULL)
	{
		printf("teacher number %d: isn't in the database\n", teacher_number);

	}
	printf("Courses for teacher number %d:\n", teacher_number);
	course_node *teacherCourses =  get_teacher_courses(assignmentList, myTeacher);
	print_courses(teacherCourses);
}
示例#6
0
int add_teacher(char *database, teacher *xteacher) {
	FILE *fp;
	int n;
	char file[64];
	n = teacher_number(database);
	if(n) {
		teacher yteacher;
		yteacher = get_teacher(database, n-1);
		xteacher -> index = yteacher.index + 1;
	}
	else
		xteacher->index = 0;
	strcpy(file, "Database/");
	strcat(file, database);
	strcat(file, "_teacher");
	fp = fopen(file,"a");
	fprintf(fp,"%d %d %s\n",xteacher->index,xteacher->week_time,xteacher->name);
	fclose(fp);
	return 0;
}
示例#7
0
int assign_teacher(assignment_node *assignmentList, teacher_node *teacherList, course_node *courseList, int teacher_number, int course_number)
{
	teacher *myTeacher = get_teacher(teacher_number, teacherList);
	if (myTeacher == NULL)
	{
		//student doesn't exist
		printf("Teacher doesn't exist\n");
		return 0;
	}
	course *myCourse = get_course(course_number, courseList);
	if (myCourse == NULL)
	{
		//course doesn't exist
		printf("Course doesn't exist\n");
		return 0;
	}
	assignment *myAssignment = create_assignment(myTeacher, myCourse);
	add_enrollment(assignmentList, myAssignment);
	return 1;
}
示例#8
0
int teacher_menu(char *database){
	int i, c, n, choice = 0;
	teacher *xteacher;
	WINDOW *win;
	ITEM **items;
	MENU *menu;
	n = teacher_number(database);
	start_color();
	cbreak();
	noecho();
	keypad(stdscr, TRUE);
	xteacher = (teacher *)malloc(sizeof(teacher) * (n + 1));
	items = (ITEM **)calloc(n + 3, sizeof(ITEM *));
	for(i = 0; i < n; ++i) {
		xteacher[i] = get_teacher(database,i);
		items[i] = new_item(xteacher[i].name, NULL);
	}
	menu = new_menu((ITEM **)items);
	win = newwin(0, 0, 0, 0);
	int y,x;
	getmaxyx(win,y,x);
	keypad(win, TRUE);
	set_menu_win(menu, win);
	set_menu_sub(menu, derwin(win, y - 5, 38, 5, 0.4*x));
	set_menu_format(menu,x - 4, 1);
	set_menu_mark(menu, " * ");
	set_menu_spacing(menu, 0, 2, 0);
	box(win, 0, 0);
	print_in_middle(win, 1, 0, x, "Teachers" , COLOR_PAIR(1));
	mvwaddch(win, 2, 0, ACS_LTEE);
	mvwhline(win, 2, 1, ACS_HLINE, x - 2);
	mvwaddch(win, 2, x - 1, ACS_RTEE);
	mvwaddch(win, y - 3, 0, ACS_LTEE);
	mvwhline(win, y - 3, 1, ACS_HLINE, x - 2);
	mvwaddch(win, y - 3, x - 1, ACS_RTEE);
	refresh();
	if(n) {
		if(n > 1)
			mvwprintw(win,y - 2, 2,"N:New Teacher\t\tR:Remove Teacher\tS:Sort\t\tB:Back\tQ:Quit");
		else
			mvwprintw(win,y - 2, 2,"N:New Teacher\t\tR:Remove Teacher\tB:Back\tQ:Quit");
		for(i = 0; i < choice; i++)
			menu_driver(menu, REQ_DOWN_ITEM);
		post_menu(menu);
		wrefresh(win);
		while((c = wgetch(win))){
			switch(c) {
				case KEY_DOWN:
					menu_driver(menu, REQ_DOWN_ITEM);
					if(choice != n -1)
						choice++;
					break;
				case KEY_UP:
					menu_driver(menu, REQ_UP_ITEM);
					if(choice != 0)
						choice--;
					break;
				case 10: /* Enter */
					remove_menu(menu,items,n);
					return choice;
				case 'R':
				case 'r':
					remove_teacher(database, choice);
					remove_menu(menu,items,n);
					return -1;
				case 'B':
				case 'b':
					remove_menu(menu,items,n);
					return n + 1;
				case 'N':
				case 'n':
					remove_menu(menu,items,n);
					return n + 2;
				case 'Q':
				case 'q':
					remove_menu(menu,items,n);
					return INT_MIN;
				default:
					break;
			}
			wrefresh(win);
		}
	}
	else {
		mvwprintw(win,y - 2, 2,"N:New Teacher\t\tB:Back\t\tQ:Quit");
		mvwprintw(win,5,3*x/7,"No Teachers found :(\n");
		wrefresh(win);
		curs_set(0);
		while((c = wgetch(win)))
		{
			switch(c) {
				case 'n':
				case 'N':
					remove_menu(menu,items,n);
					curs_set(1);
					return n+2;
				case 'b':
				case 'B':
					remove_menu(menu,items,n);
					curs_set(1);
					return n+1;
				case 'Q':
				case 'q':
					remove_menu(menu,items,n);
					curs_set(1);
					return INT_MIN;
				default:
					break;
			}
			wrefresh(win);
		}
	}
	free(xteacher);
	return -1;
}