#include
#include
#include
#define MAX 100
struct student {
char name[10] ;
float mead ;
int unit ;
int number ;
int stno;
} st[MAX] ;
void init_list(void), enter(void);
void search(void);
void del(void), list(void);
void mash(), mom();
void print(int *, int), title(int *);
void save(void), load(void);
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: search(); break;
case 3: del(); break ;
case 4: list(); break;
case 5: mash(); break ;
case 6: mom(); break ;
case 7: save(); break;
case 8: load(); break;
case 9: exit(0) ;
} // end of switch
}//end of for
}
//*********************
void init_list(void)
{
register int t ;
for(t = 0; t < MAX; ++t)
st[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) << search a student >>");
gotoxy(29, 7);
printf("3) << delete a student >>");
gotoxy(29, 9) ;
printf("4) << list all student >>");
gotoxy(29, 11) ;
printf("5) << list for mashrot >>");
gotoxy(29, 13) ;
printf("6) << list for momtaz >>");
gotoxy(29, 15) ;
printf("7) << save in file >>");
gotoxy(29, 17) ;
printf("8) << load file >>");
gotoxy(29, 19) ;
printf("9) << Quit >>");
do {
gotoxy(29, 21) ;
printf(" Please enter your choice(1-9): ") ;
gets(s);
c = atoi(s);
} while(c < 0 || c > 9) ;
return (c) ;
}
//*********************
void enter(void)
{
float grade, sumgrade = 0;
int s, j, unit1, sumunit = 0 ;
s = find_free() ;
if(s == -1){
printf("\n list full. press a key to continue...");
getch();
return ;
}
gotoxy(5, 25) ;
printf("enter name:") ;
gets(st[s].name) ;
gotoxy(5, 27) ;
printf("enter stno:") ;
scanf("%d", &st[s].stno) ;
gotoxy(5, 29) ;
printf("enter number of dars:") ;
scanf("%d", &st[s].number) ;
for(j = 1; j <= st[s].number; j++) {
gotoxy(40, 25) ;
printf(" ");
gotoxy(40, 25) ;
printf("enter grade dars number %d:",j);
scanf("%f", &grade) ;
gotoxy(40, 27) ;
printf(" ");
gotoxy(40,27) ;
printf("enter unit dars %d:", j);
scanf("%d", &unit1) ;
sumgrade += grade * unit1 ;
sumunit += unit1 ;
} //end of for
st[s].mead = sumgrade / sumunit ;
st[s].unit = sumunit;
}
//*********************
int find_free(void)
{
register int t ;
for(t = 0; st[t].name[0] && t < MAX ; ++t);
if(t == MAX) return -1 ;
return t ;
}
//*********************
void del(void)
{
int t, s, r=0 ;
gotoxy(28, 24) ;
printf("enter stno student:") ;
scanf("%d", &s);
clrscr() ;
title(&r) ;
for(t = 0; t < MAX; ++t){
if(st[t].name[0] && st[t].stno == s)
st[t].name[0]='\0' ;
}// end of for
}
//*********************
void search(void)
{
int t, s, r=0 ;
gotoxy(28, 24) ;
printf("enter stno student:") ;
scanf("%d", &s);
clrscr() ;
title(&r) ;
for(t = 0; t < MAX; ++t){
if(st[t].name[0] && st[t].stno == s)
print(&r, t) ;
}// end of for
gotoxy(13, r) ;
printf("******************************");
printf("*******************************") ;
gotoxy(27, r + 1) ;
printf("press any key to continue ") ;
getch();
}
//*********************
void list(void)
{
int t, r = 0;
clrscr() ;
title(&r) ;
for(t = 0; t < MAX; ++t)
if(st[t].name[0])
print(&r, t);
gotoxy(13, r) ;
printf("******************************");
printf("*******************************") ;
gotoxy(27, r + 1) ;
printf("press any key to continue ") ;
getch();
}
//********************* list mashrot
void mash(void)
{
int t, r = 0 ;
clrscr() ;
title(&r) ;
for(t = 0; t < MAX; ++t){
if(st[t].name[0] && st[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();
}
//********************* list momtaz
void mom(void)
{
int t, r=0 ;
clrscr() ;
title(&r) ;
for(t = 0; t < MAX; ++t){
if(st[t].name[0] && st[t].mead >= 16)
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 student: >>");
gotoxy(13, *r + 1) ;
printf("*************************");
printf("************************************");
gotoxy(10, *r + 2);
printf(" name mead ");
printf(" unit number_dars stno ");
gotoxy(10, *r + 3);
printf(" ________ ________ ");
printf(" ______ ______ ____ ");
*r = 6;
}
//*********************
void print(int *r, int t)
{
gotoxy(14, *r) ;
printf("%s ", st[t].name) ;
gotoxy(26, *r) ;
printf("%.2f ", st[t].mead) ;
gotoxy(40, *r) ;
printf("%d ", st[t].unit) ;
gotoxy(54, *r) ;
printf("%d ", st[t].number) ;
gotoxy(70, *r) ;
printf("%u ", st[t].stno) ;
(*r) ++ ;
}
//***********************
void save(void)
{
FILE *fp ;
register int i ;
fp = fopen("st", "wb");
if(!fp) {
printf("\n cannot open file press a key ...");
getch() ;
return ;
}
for(i = 0 ; i < MAX ; i++)
if(*st[i].name)
fwrite(&st[i], sizeof(struct student), 1, fp) ;
clrscr() ;
gotoxy(20, 10) ;
printf("data saved.press a key.");
getch() ;
}
//************************
void load(void)
{
FILE *fp ;
register int i ;
fp = fopen("st", "rb");
if(!fp) {
printf("\n cannot open file press a key ...");
getch() ;
return ;
}
init_list() ;
for(i = 0 ; i < MAX ; i++) {
fread(&st[i], sizeof(struct student), 1, fp);
if(feof(fp)) {
clrscr() ;
gotoxy(20,10) ;
printf("data loaded.press a key.");
getch() ;
return ;
}//end of if
}
}
|
+| نوشته شده توسط محمد رضا ابراهیمی در یکشنبه دوم دی 1386 و ساعت 16:57 |