1 #include<stdio.h> /*引用库函数*/
  2 #include<stdlib.h>
  3 #include<ctype.h>
  4 #include<string.h>
  5 #include<windows.h>
  6 #define N 3
  7 struct Student /*定义结构体数组*/
  8 {
  9 char num[10]; /*学号*/
 10 char room[10];
 11 char name[20]; /*姓名*/
 12 int score; /*成绩*/
 13 } stu[N]; /*结构体数组变量*/
 14 typedef struct date
 15 {
 16 int da_year;//
 17 int da_day;//
 18 int da_mon;//
 19 };
 20 void gettime(struct date *dateblk)
 21 {
 22 SYSTEMTIME sys;
 23 GetLocalTime(&sys);
 24 dateblk->da_day=sys.wDay;
 25 dateblk->da_mon=sys.wMonth;
 26 dateblk->da_year=sys.wYear;
 27 printf("%d-%d-%d",dateblk->da_year,dateblk->da_mon,dateblk->da_day);
 28 }
 29 int menu_select() /*菜单函数*/
 30 {
 31 char c;
 32 do
 33 {
 34 system("cls"); /*运行前清屏*/
 35 struct date Date;
 36 gettime(&Date);
 37 printf("\n");
 38 printf("\t\t****Students' CET Grade Management System****\n"); /*菜单选择*/
 39 printf("\t\t | 1. Input Records |\n");
 40 printf("\t\t | 2. Write to a Text file |\n");
 41 printf("\t\t | 3. Display All Records in a examroom |\n");
 42 printf("\t\t | 4. search score by num |\n");
 43 printf("\t\t | 5. search CET6 in a exanroom |\n");
 44 printf("\t\t | 6. score Statistic |\n");
 45 printf("\t\t | 7. display |\n");
 46 printf("\t\t | 0. Quit |\n");
 47 printf("\t\t*********************************************\n");
 48 printf("\t\t\tGive your Choice(0-7):");
 49 getch();
 50 c=getchar(); /*读入选择*/
 51 }
 52 while(c<'0'||c>'7');
 53 return(c-'0'); /*返回选择*/
 54 }
 55 
 56  
 57 
 58 void save()
 59 {
 60 FILE*fp;
 61 int i;
 62 if((fp=fopen("cet.txt","wb"))==NULL)
 63 {
 64 printf("cannot open the file\n");
 65 return;
 66 
 67 }
 68 for(i=0; i<N; i++)
 69 if(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1)
 70 printf("file write error\n");
 71 fclose(fp);
 72 
 73 }
 74 int Input()
 75 /*输入若干条记录*/
 76 {
 77 int n=0;
 78 int i=0;
 79 char sign='y',x[10]; /*x[10]为清除多余的数据所用*/
 80 while(sign!='n'&&sign!='N') /*判断*/
 81 {
 82 printf("\t\t\tstudent's num:");
 83 scanf("%s",stu[n+i].num);
 84 printf("\t\t\tstudent's room:");
 85 scanf("%s",stu[n+i].room);
 86 printf("\t\t\tstudent's name:");
 87 scanf("%s",stu[n+i].name);
 88 printf("\t\t\tstudent's score:");
 89 scanf("%d",&stu[n+i].score);
 90 gets(x); /*清除多余的输入*/
 91 printf("\t\t\tany more records?(Y/N)");
 92 getch();
 93 scanf("%c",&sign); /*输入判断*/
 94 i++;
 95 }
 96 return(n+i);
 97 }
 98 
 99 
100 void Display()
101 {
102 system("cls");
103 int i,flag=0;
104 char p[10];
105 printf("\t\t\t-----------------------------------\n");
106 /*格式头*/
107 printf("\t\t\tPlease input the examroom number:");
108 getch();
109 scanf("%s",p);
110 for(i=0; i<N; i++)
111 {
112 if (strcmp(stu[i].room,p)==0)
113 {
114 flag=1 ;
115 printf("\t\t\t%s\t%d\n",stu[i].name,stu[i].score);
116 }
117 }
118 if(flag==0) printf("\t\t\tfind error\n");
119 printf("\t\t\t-----------------------------------\n");
120 getch();
121 }
122 
123 void search_by_num()/*查某考号考试成绩*/
124 {
125 system("cls");
126 char s[20];
127 int i,flag=0;
128 printf("\t\t\tPlease input his(her) num:");
129 getch();
130 scanf("%s",s);
131 printf("\t\t*********************************************\n");
132 for(i=0; i<N; i++) /*查找判断*/
133 {
134 if(strcmp(stu[i].num,s)==0)
135 {
136 flag=1;
137 printf("\t\t\this name :%s\n",stu[i].name); /*输出该学生信息*/
138 printf("\t\t\this score:%d\n",stu[i].score);
139 }
140 }
141 if(flag==0) printf("\t\t\tnot find!\n");
142 printf("\t\t*********************************************\n");
143 getch(); /*输入失败信息*/
144 
145 }
146 
147 void search_by_enum()
148 {
149 system("cls");
150 int i,p,count=0,flag=0;
151 char x[10];
152 printf ("\t\t\tPlease input the enum:");
153 getch();
154 scanf("%s",x);
155 printf("\t\t*********************************************\n");
156 p=425;
157 for(i=0; i<N; i++)
158 {
159 if(stu[i].score>=p&&strcmp(stu[i].room,x)==0)
160 {
161 flag=1;
162 printf("\t\t\tname:%s num:%s score:%d\t\t\n",stu[i].name,stu[i].num,
163 stu[i].score);
164 ++count;
165 }
166 }
167 printf("\t\t*********************************************\n");
168 if(flag==0) printf("\t\t\tno one\n");
169 else printf("\t\t\tEnter CET6 num:%d",count);
170 getch();
171 }
172 
173 void score_statistics()
174 {
175 system("cls");
176 int i,j=2,p,k=2,sum=0;
177 char m[10];
178 int count=0;
179 int a[80],b[6]= {0,0,0,0,0,0};
180 int aver;/*成绩平均值*/
181 printf("\t\t\tPlease input the enum: ");
182 getch();
183 scanf("%s",m);
184 for(i=0; i<N; i++) /*循环输入判断*/
185 if(strcmp(stu[i].room,m)==0)
186 {
187 sum+=stu[i].score;
188 count=count+1;
189 a[count]=stu[i].score ;
190 }
191 for(i=1; i<=count; i++)
192 {
193 if(a[j]<a[i]) j=i;
194 if(a[k]>a[i]) k=i;
195 if(a[i]>=425&&a[i]<=500) ++b[1];
196 else if(a[i]>=501&&a[i]<=550) ++b[2];
197 else if (a[i]>=551&&a[i]<=600) ++b[3];
198 else if(a[i]>=601&&a[i]<=650) ++b[4];
199 else if (a[i]>=651&&a[i]<=710) ++b[5];
200 else ++b[0];
201 }
202 aver=sum/count;
203 p=(b[1]+b[2]+b[3]+b[4]+b[5])/count;
204 printf("\t\t-------------------------------------------------\t\n");
205 printf("\t\t|\tthe score between 0~424:%d\t\t|\n",b[0]);
206 printf("\t\t|\tthe score between 425~500:%d\t\t|\n",b[1]);
207 printf("\t\t|\tthe score between 501~550:%d\t\t|\n",b[2]);
208 printf("\t\t|\tthe score between 551~600:%d\t\t|\n",b[3]);
209 printf("\t\t|\tthe score between 601~650:%d\t\t|\n",b[4]);
210 printf("\t\t|\tthe score between 651~750:%d\t\t|\n",b[5]);
211 printf("\t\t|\tthe pass pecentage :%d\t\t|\n",p);
212 printf("\t\t|\tthe hignest score :%d\t\t|\n",a[j]); /*最高分*/
213 printf("\t\t|\tthe lowest score :%d\t\t|\n",a[k]); /*最低分*/
214 printf("\t\t|\tthe average score is :%d\t\t|\n",aver); /*平均分*/
215 printf("\t\t-------------------------------------------------\t");
216 getch();
217 }
218 
219  
220 
221 void display() /*显示所有记录*/
222 {
223 system("cls");
224 int i;
225 printf("\t\t\t--------------------------------------------\n"); /*格式头*/
226 printf("\t\t\tnum examroomnum name score\n");
227 printf("\t\t\t--------------------------------------------\n");
228 for(i=0; i<N; i++) /*循环输入*/
229 {
230 printf("\t\t\t%s %s %s %d\n",stu[i].num,
231 stu[i].room,stu[i].name,stu[i].score );
232 }
233 printf("\t\t\t--------------------------------------------\n");
234 getch();
235 }
236 
237 void main() /*主函数*/
238 {
239 int i;
240 FILE*fp;
241 if((fp=fopen("cet.txt","rb"))==NULL)
242 {
243 printf("Sorry,cannot open file\n");
244 exit(0);
245 
246 }
247 for(i=0; i<N; i++)
248 {
249 fread(&stu[i],sizeof(struct Student),1,fp);
250 
251 }
252 fclose(fp);
253 system("color 37");
254 int n=0;
255 for(;;)
256 {
257 switch(menu_select()) /*选择判断*/
258 {
259 case 1:
260 printf("\t\t\tInput Records\n"); /*输入若干条记录*/
261 n=Input();
262 break;
263 case 2:
264 system("cls");
265 printf("\t\t\tWrite to a Text file\n");
266 save();
267 printf("Save successfully!");
268 system("pause");
269 break;
270 case 3:
271 printf("\t\t\tDisplay All Records in a examroom\n");
272 Display();
273 break;
274 case 4:
275 printf("\t\t\tSearch score by num\t\t\t\n");
276 search_by_num();
277 break;
278 case 5:
279 printf("\t\t\tSearch CET6 in a exanroom\t\t\t\n");
280 search_by_enum();
281 break;
282 case 6:
283 printf("\t\t\tScore Statistic\t\t\t\n");
284 score_statistics();
285 break;
286 case 7:
287 printf("\t\t\tDisplay\t\t\t\n");
288 getch();
289 display();
290 break;
291 case 0:
292 printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*结束程序*/
293 printf("\t\t\t");
294 getch();
295 system("pause");
296 exit(0);
297 }
298 }
299 }
300 
301  

 这是用C语言写的一个管理系统,功能很简单,可以说是不太完善。写的不太好,望读者见谅。