입니다 and 습니다 are both sentence endings in formal manner.
The difference is what kind of words they get attached to.
> noun + 입니다.
저는 한국인입니다.
I am a Korean.
그것은 책입니다.
That is a book.
그 사람은 내일 올 것입니다. (내일 올 것 : nominalized form)
He will come tomorrow.
> verb stem + 습니다./ㅂ니다.
저는 한국어 공부를 하고 있습니다. (있다 -> 있 + 습니다)
I'm studying Korean.
그녀는 점심을 먹습니다. (먹다 -> 먹 + 습니다)
She eats lunch.
저는 오늘 서울에 갑니다. (가다 -> 가 + ㅂ니다)
I'm going to Seoul today.
As you see,
습니다 is used when the verb stem ends with a consonant.
ㅂ니다 is used when the verb stem ends with a vowel.
> 은/는 are topic marking particles.
저는 학생입니다.
I am a student.
겨울은 추운 계절입니다.
The winter is a cold season.
지금 가는 것은 위험합니다.
It's dangerous to go now.
> 을/를 are object marking particles.
책을 한 권 사고 싶어요.
I'd like to buy a book.
그는 내가 담배 피우는 것을 싫어합니다. (내가 담배 피우는 것 is the object)
He hates me smoking.
아직도 저를 기억하세요?
Do you still remember me?
As same above,
은/을 are used when the word before them ends with a consonant.
는/를 are used when the word before them ends with a vowel.
:-)