#ifndef _STUDENTS #define _STUDENTS 1 #define ADD "ADD" #define DEL "DEL" #define RPN "RPN" #define RBS "RBS" #define GRADE "GRADE" #define RSG "RSG" #define RAS "RAS" #define MAX_OPCODES 7 #define C_ADD 0 #define C_DEL 1 #define C_RPN 2 #define C_RBS 3 #define C_GRADE 4 #define C_RSG 5 #define C_RAS 6 #define NOT_FOUND -1 #define MAX_STRING 100 #define TABLE_SIZE 20 typedef struct string { char *string; int len; } STRING; typedef struct course { STRING *coursenum; STRING *title; char grade; struct course *next; } COURSE; typedef struct userdat { STRING *real_name_first; STRING *real_name_last; STRING *address; STRING *city; STRING *state; STRING *zip; STRING *ssn; COURSE *classes; } USERDAT; typedef struct hashnode { STRING *key; USERDAT *data; struct hashnode *next; } HASHNODE; typedef struct hash_table { int size; HASHNODE **table; } HASH_TABLE; void add_user_func(FILE *fin); void del_user_func(FILE *fin); void rpn_func(FILE *fin); void rbs_func(FILE *fin); void grade_func(FILE *fin); void rsg_func(FILE *fin); COURSE *make_course(); USERDAT *add_user(FILE *fin); USERDAT *make_userdat(); STRING *make_string(); void add_string(STRING *strng, char *s); void print_user(USERDAT *user); HASHNODE *make_node(USERDAT *new_data, HASHNODE *next, STRING *key); HASHNODE *find_prev_node(char *data); void print_node(HASHNODE *node); void print_all(); void add_node(USERDAT *new_user); HASHNODE *find_by_name(char *first, char *last); HASHNODE *find_by_ssn(char *ssn); void end_prog(); void free_node(HASHNODE *node); void free_user(USERDAT *data); void free_courses(COURSE *class); void free_string(STRING *s); HASH_TABLE *make_hash(int size); int hash_key(int key, int size); int hash_index(char *key,int size); void clear_hash(); int s_code(char *string); char *rm_newline(char *string); char *str_dup(char *string); void del_by_ssn(char *ssn); #endif