Designing a protocol to record attendance to lectures

Scenario: a class that is not mandatory. The teacher wants a protocol that will satisfy the following requirements:

1. It must record each student's attendance.
2. A student X should not be able to say that another student Y went to the lecture.
3. The teacher should not be able to know who attended the lessons and who didn't until the end of the term.
4. It must provide integrity and non-repudiation.
5. It must be simple and fast.

This is what I thought:

Suppose that there are N students enroled.

Each class:

• The teacher generates N random numbers, stores them somewhere safe, and writes them down on a separate piece of paper.
• He gives one of these to each of the students that attend a class. He asks them to sign the reverse of the paper.
• The students sign, and give the piece of paper to the teacher.
• The teacher can check whether a student invented a number.

At the end of the semester:

• The teacher asks for ID of each of the enroled students (or any other document that contains the signature), so he can now know who attended each class and who didn't.

Are there any visible flaws?

-
say = "provide evidence" $\:$ or $\:$ say = "learn from the protocol" $\:$? $\;\;\;$ –  Ricky Demer Jun 28 '13 at 5:35
@D.W. attendance, sorry. –  l19 Jun 29 '13 at 2:54
@RickyDemer, if you are refering to the second requirement, it means that a student should not "sign" in the name of another student. –  l19 Jun 29 '13 at 2:55
You haven't fixed the title. $\:$ For the third requirement, the teacher needs to learn some $\hspace{.78 in}$ information at the end of the term. $\:$ For the fourth requirement, the students need $\hspace{1.42 in}$ to get something from the teacher each class. $\;\;\;$ –  Ricky Demer Jun 29 '13 at 3:27
I'm skeptical that a feasible protocol can be designed because here you're facing the possibility of every student cheating the protocol with every other student. –  pg1989 Jun 29 '13 at 7:28