C語言——學生成績管理系統

本文轉自博客園

C語言——學生成績管理系統

 
複製代碼
  1 /* ***********************
  2 author : C / C#
  3 data   : 2011-8-19
  4 Copyright  2011 
  5 *********************** */  
  6   
  7 #include <stdio.h>  
  8 #include <stdlib.h>  
  9 #include <string.h> 
  10  
 11 #define  N       5 
 12  
 13 void aver(score); 
 14 void menu(int *num , char *name , char *flag);
 15 float *search(int *num , char *flag , char *name , char *p_name , int *p_num , float * score);
 16 void repo(int *stu_num , char *stu_name , float * score , float *score_i);
 17  18 int main(void)
 19 {
 20     int number , stu_num[N] = { 2 , 3 , 5 , 8 , 9 };
 21  22     float score[N][4] = {
 23         {78 ,67 , 89} ,
 24         {90 ,87 , 65} ,
 25         {65 ,54 , 79} ,
 26         {98 ,87 , 69} ,
 27         {87 ,70 , 60} ,
 28     } ;
 29     float *p_score ;
 30  31     char stu_name[N][20] = {
 32         "li dong" ,
 33         "zhu li" ,
 34         "wang ming" ,
 35         "tang tai guo" ,
 36         "bai dong hui" ,
 37     };
 38     char name[20] , flag ;
 39  40     aver(score);
 41     menu(&number , name , &flag);
 42     p_score = search(&number , &flag , name , stu_name , stu_num , score);
 43     repo(stu_num , stu_name , score , p_score);
 44  45 }
 46  47 void aver(float *score_a)
 48 {
 49     int i , j ;
 50     float sum ;
 51  52     for(i = 0 ; i < N ; i++)
 53     {
 54         for(sum = 0 , j = 0 ; j < 4 ; j++)
 55         {
 56             sum += *(score_a + i * 4 + j);
 57         }
 58         *(score_a + i * 4 + 3) = sum / 3 ;   //將平均值賦給每一行的第四位數 59     }
 60  61     return ;
 62 }
 63  64 void menu(int *num , char *name , char *flag)
 65 {
 66     printf("\nSelect the searching method : \n C—————— name | N —————— no : ");
 67     *flag = getchar();
 68  69     if(*flag == 'n' || *flag == 'N')
 70     {
 71         printf("\nInput student number :");
 72         scanf("%d" , num);
 73     }
 74     else if(*flag == 'c' || *flag == 'C')
 75     {
 76         getchar();      //第一次編譯把這個掉了,找了好久才找到 ,要注意  77         printf("\nInput student name :");
 78         gets(name);
 79     }
 80     else 
 81     {
 82         printf("\nInput Erroe !");
 83         exit(1);
 84     }
 85  86     return ;
 87 }
 88  89 float *search(int *num , char *flag , char *name , char *p_name , int *p_num , float *score)
 90 {
 91     int i ;
 92  93     if(*flag == 'n' || *flag == 'N')
 94     {
 95         for(i = 0 ; i < N ; i++)
 96         {
 97             while(*num == *(p_num + i))
 98                 return ( score + i * 4 ) ;
 99         }
100     }
101     else if(*flag == 'c' || *flag == 'C')
102     {
103         for(i = 0 ; i < N ; i++)
104         {
105             while(strcmp(name , p_name + i * 20) == 0)
106                 return ( score + i * 4 ) ;
107         }
108     }
109     else 
110     {
111         printf("\nNot found !");
112         exit(1);
113     }
114 }
115 116 void repo(int *stu_num , char *stu_name , float * score , float *score_i)
117 {
118     int i , j ;
119     i = (score_i - score) / 4 ;
120     printf("\nNo.\tName\t\tmath\tphys\tengl\taveragr");
121 122     printf("\n%-8d", *(stu_num + i));
123 124     printf("%-16s", stu_name + i * 20);
125 126     for(j = 0 ; j < 4 ; j++)
127     {
128         printf("%-8.2f", *(score_i + j));
129     }
130 131     printf("\n");
132 133     return ;
134 }
複製代碼

 
 
標籤: 指針

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章