BlinCT, например, у тебя объявлена переменная nstud в date.c файле, а ты ее хочешь использовать в menu.c. Естественно, что компилятор ругается, ведь он не видит эту переменную. Если у тебя есть задача сделать в нескольких *.c файлах общую переменную, то используй либо глобальную переменную (не рекомендуется), либо передавай ее в параметрах функции (традиционный вариант). И аккуратнее с extern и static. В твоем случае они вообще не нужны (читай мануал по ним).