#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define MAX 100
struct  student {
    char   name[10] ;
    float  mead ;
    int    unit ;
    int    number ;
    int stno;
} st_info[MAX] ;
void init_list(void), enter(void);
void del_rec(void), list(void);
void list1(), list2();
void print(int *, int), title(int *);
int menu_select(void);
int find_free(void) ;
int main(void)
{
   char choice ;
   init_list() ;
   for(;

{
    choice = menu_select() ;
    switch(choice) {
        case 1: enter(); break;
        case 2: del_rec(); break ;
        case 3: list();  break;
        case 4: list1(); break ;
        case 5: list2();  break ;
        case 6: exit(0) ;
    } // end of switch
   }//end of for
}
//*********************
void init_list(void)
{
 register int t ;
 for(t = 0; t < MAX; ++t)
     st_info[t].name[0] = '\0' ;
}
//*********************
int menu_select(void)
{
   char s[10];
   int c ;
   clrscr() ;
   gotoxy(29, 3) ;
   printf("1) << enter a student    >>");
   gotoxy(29, 5) ;
   printf("2) << delete a student   >>");
   gotoxy(29, 7) ;
   printf("3) << list the array     >>");
   gotoxy(29, 9) ;
   printf("4) << list for probation >>");
   gotoxy(29, 11) ;
   printf("5) << list for exelent   >>");
   gotoxy(29, 13) ;
   printf("6) <<         Quit       >>");
   do {
  gotoxy(27, 15) ;
  printf(" Please enter your choice(1-6): ") ;
  gets(s);
  c = atoi(s);
       } while(c < 0 || c > 6) ;
   return (c) ;
}
//*********************
void enter(void)
{
   float grade, sumgrade = 0;
   int slot, j, unit1, sumunit = 0 ;
   slot = find_free() ;
   if(slot == -1){
      printf("\n list full. press a key to continue...");
      getch();
      return ;
   }
   gotoxy(5, 17) ;
   printf("enter name:") ;
   gets(st_info[slot].name) ;
   gotoxy(5, 18) ;
   printf("enter stno:") ;
   scanf("%d", &st_info[slot].stno) ;
   gotoxy(5, 19) ;
   printf("enter number of course:") ;
   scanf("%d", &st_info[slot].number) ;
   for(j = 1; j <= st_info[slot].number; j++) {
       gotoxy(40, 17) ;
       printf("                        ");
       gotoxy(40, 17) ;
       printf("enter grade number %d:",j);
       scanf("%f", &grade) ;
       gotoxy(40, 19) ;
       printf("                        ");
       gotoxy(40,19) ;
       printf("enter unit of grade %d:", j);
       scanf("%d", &unit1) ;
       sumgrade += grade * unit1 ;
       sumunit += unit1 ;
   } //end of for
   st_info[slot].mead = sumgrade / sumunit ;
   st_info[slot].unit = sumunit;
}
//*********************
int find_free(void)
{
    register int t ;
    for(t = 0; st_info[t].name[0] && t < MAX ; ++t);
    if(t == MAX) return -1 ;
    return t ;
}
//*********************
void del_rec(void)
{
    int slot ;
    gotoxy(28, 19) ;
    printf("enter record #(0 - 99):") ;
    scanf("%d", &slot) ;
    if(slot >= 0 && slot < MAX)
       st_info[slot].name[0]='\0' ;
}
//*********************
void list(void)
{
    int t, r = 0;
    clrscr() ;
    title(&r) ;
    for(t = 0; t < MAX; ++t)
       if(st_info[t].name[0])
    print(&r, t);
    gotoxy(13, r) ;
    printf("******************************");
    printf("*******************************") ;
    gotoxy(27, r + 1) ;
    printf("press any key to continue ") ;
    getch();
}
//*********************
void list1(void)
{
    int t, r = 0 ;
    clrscr() ;
    title(&r) ;
    for(t = 0; t < MAX; ++t){
      if(st_info[t].name[0] && st_info[t].mead < 12)
  print(&r, t) ;
    }//end of for
    gotoxy(13, r) ;
    printf("******************************");
    printf("*******************************") ;
    gotoxy(27, r + 1) ;
    printf("press any key to continue ") ;
    getch();
  }
//*********************
void list2(void)
{
    int t, r=0 ;
    clrscr() ;
    title(&r) ;
    for(t = 0; t < MAX; ++t){
      if(st_info[t].name[0] && st_info[t].mead >= 17)
  print(&r, t) ;
    }// end of for
    gotoxy(13, r) ;
    printf("******************************");
    printf("*******************************") ;
    gotoxy(27, r + 1) ;
    printf("press any key to continue ") ;
    getch();
  }
//*********************
void title(int *r)
{
    *r = 2;
    gotoxy(25, *r) ;
    printf(" <<   information in list are:  >>");
    gotoxy(13, *r + 1) ;
    printf("*************************");
    printf("************************************");
    gotoxy(10, *r + 2);
    printf("     name       mead     ");
    printf("   unit        number            stno      ");
    gotoxy(10, *r + 3);
    printf("   ________     ________ ");
    printf("     ______     ______          ____   ");
    *r = 6;
}
//*********************
void print(int *r, int t)
{
    gotoxy(14,  *r) ;
    printf("%s ", st_info[t].name) ;
    gotoxy(26,  *r) ;
    printf("%.2f ", st_info[t].mead) ;
    gotoxy(40,  *r) ;
    printf("%d ", st_info[t].unit) ;
    gotoxy(54,  *r) ;
    printf("%d ", st_info[t].number) ;
    gotoxy(70,  *r) ;
    printf("%u ", st_info[t].stno) ;
    (*r) ++ ;
}
سلام ! این برنامه نمره و نام و شماره و ... رو میگیره امکان ویرایش هم داره