C语言程序设计,要带注释,投票系统

某班从全班20人(学号1~20)中投票选举6位班委委员,每张选票内容包括:所选班委的学号,投票人学号。
基本要求用菜单选择并完成下述系统功能:
(1)输入全班的名单(姓名与学号),并可显示。
(2)选票输入:输入每张选票的投票人学号及所选班委的学号(可选6个,没有则键入空白)。
(3)输出得票前6位的当选班委名单
(4)输出6位班委名单全部选票与投票结果完全相符的投票人姓名。
(5)退出程序

#include <stdio.h>
#include <stdlib.h>
#define N 3  //定义人数 
#define N2 2 //打印几个选举结果
struct student {
    int xh;
    //学号 
    char xm[10];
    //姓名
    int flag;
    //已投票数 
    int flag_p;
    //被投票数
    int xp_xh[6];
    //被选人学号
}
stu[N];
//函数功能:录入学生信息    
void lr() {
    int i;
    for (i=0;i<N;i++) {
        printf("学号:%d\n",i+1);
        printf("请输入姓名:");
        stu[i].xh=(i+1);
        scanf("%s",&stu[i].xm);
        stu[i].flag=0;
        stu[i].flag_p=0;
        stu[i].xp_xh[6]=0;
        printf("\n");
        system("cls");
    }
    printf("学号\t");
    printf("姓名\t");
    printf("票数\n");
    for (i=0;i<N;i++) {
        printf("%d\t",stu[i].xh);
        printf("%s\t",stu[i].xm);
        printf("%d\n",stu[i].flag_p);
    }
}
//函数功能:投票,对数据进行操作 ,输出结果 
void tp(int tpr,int tp) {
    int q=0;
    if (stu[tpr-1].flag<6) {
        if (tpr>N || tpr<0) {
            printf("输入有误!\n");
            system("pause");
        } else {
            q = stu[tpr-1].flag;
            stu[tpr-1].xp_xh[q]=(tp-1);
            stu[tpr-1].flag++;
            stu[tp-1].flag_p++;
        }
    } else {
        printf("您已经投了6票!");
        system("pause");
        return ;
    }
}
int Comp(const void *p1,const void *p2) {
    return ((struct student *)p2)->flag_p - ((struct student *)p1)->flag_p;
    //降序
    //return ((student *)p1)->flag_p - ((student *)p2)->flag_p; //升序
}
int main() {
    int xh_tpr;
    //投票人学号 
    int xh_tp;
    //被投票人学号 
    int k;
    lr();
    while(1) {
        printf("请输入你的学号“100”结束投票打印结果:\n");
        scanf("%d",&xh_tpr);
        if (xh_tpr==100) {
            system("cls");
            printf("投票结果:\t");
            printf("学号\t姓名\t票数\t投票数\n");
            qsort(stu, N, sizeof(stu[0]), Comp);
            for (k=0;k<N2;k++)
                printf("\t\t%d\t%s\t%d\t%d\n",stu[k].xh,&stu[k].xm,stu[k].flag_p,stu[k].flag);
            system("pause");
            break;
        } else {
            printf("\n请输入你要投票人的学号:");
            scanf("%d",&xh_tp);
            tp(xh_tpr,xh_tp);
        }
    }
    //goto start; //不需要用goto 
    return 0;
}