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语言写的一个管理系统,功能很简单,可以说是不太完善。写的不太好,望读者见谅。
浙公网安备 33010602011771号