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; }
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; }
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; }
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); } }
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); }
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; }
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; }
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; }