#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) ++ ;
}
سلام ! این برنامه نمره و نام و شماره و ... رو میگیره امکان ویرایش هم داره