小型考試系統

源代碼:測試

  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <stdlib.h>
  4 
  5 #define   Score_Num  35
  6 
  7 struct Standard
  8 {
  9     int A;
 10     int B;
 11     int C;
 12     int D;
 13     char Correct_Answer;
 14 };
 15 
 16 struct Standard Standard_Answer[Score_Num];//記錄標準答案
 17 
 18 struct Stu
 19 {
 20     int Num;//學生學號
 21     char Name[32];//學生姓名
 22     char Answer[Score_Num];//準確答案
 23     int Score;//學生分數
 24 };
 25 
 26 struct Stu Student[100];//存儲學生信息
 27 int Stu_Num = 0;//存儲學生數目
 28 
 29 //---------------------------------統計標準答案------------------------
 30 void Standard_Num()
 31 {
 32     int i, j;
 33     int tag;
 34     for(i=0;i<Stu_Num;i++)
 35     {
 36         for(j=0; j<Score_Num; j++)
 37         {
 38             switch(Student[i].Answer[j])
 39             {
 40             case 'A':Standard_Answer[j].A++;break;
 41             case 'B':Standard_Answer[j].B++;break;
 42             case 'C':Standard_Answer[j].C++;break;
 43             case 'D':Standard_Answer[j].D++;break;
 44             }
 45         }
 46     }
 47     for(j=0; j<Score_Num; j++)
 48     {
 49         tag = Standard_Answer[j].A;
 50         Standard_Answer[j].Correct_Answer = 'A';
 51         if(Standard_Answer[j].B > tag)
 52         {
 53             tag = Standard_Answer[j].B;
 54             Standard_Answer[j].Correct_Answer = 'B';
 55         }
 56         if(Standard_Answer[j].C > tag)
 57         {
 58             tag = Standard_Answer[j].C;
 59             Standard_Answer[j].Correct_Answer = 'C';
 60         }if(Standard_Answer[j].D > tag)
 61         {
 62             tag = Standard_Answer[j].D;
 63             Standard_Answer[j].Correct_Answer = 'D';
 64         }
 65     }
 66 }
 67 //---------------------------------統計標準答案------------------------
 68 
 69 
 70 
 71 //------------------實現每次從文本文件中讀取一行-----------------------
 72 char* Read_line(FILE* f, char* line)
 73 {
 74     
 75     return line;
 76 }
 77 //------------------實現每次從文本文件中讀取一行-----------------------
 78 
 79 //------------------打印標準答案---------------------------------------
 80 void Standard_Print()
 81 {
 82     int i;
 83     for(i=0; i<Score_Num; i++)
 84     {
 85         printf("第%d題標準答案:%c    選A的人數%d,選B的人數%d,選C的人數%d,選D的人數%d,\n", i+1, Standard_Answer[i].Correct_Answer, Standard_Answer[i].A, Standard_Answer[i].B, Standard_Answer[i].C, Standard_Answer[i].D);
 86     }
 87 }
 88 //------------------打印標準答案---------------------------------------
 89 
 90 //------------------計算每一個學生的成績---------------------------------
 91 void Student_Score_Get()
 92 {
 93     int i, j;
 94     for(i=0;i<Stu_Num;i++)
 95     {
 96         Student[i].Score = 0;
 97         for(j=0; j<15; j++)
 98         {
 99             if(Student[i].Answer[j] == Standard_Answer[j].Correct_Answer)
100             Student[i].Score = Student[i].Score + 2;
101         }
102         for(j=15; j<25; j++)
103         {
104             if(Student[i].Answer[j] == Standard_Answer[j].Correct_Answer)
105             Student[i].Score = Student[i].Score + 3;
106         }
107         for(j=25; j<35; j++)
108         {
109             if(Student[i].Answer[j] == Standard_Answer[j].Correct_Answer)
110             Student[i].Score = Student[i].Score + 4;
111         }
112     }
113 }
114 //------------------計算每一個學生的成績---------------------------------
115 
116 //------------------查詢學生成績---------------------------------------
117 void Student_Score_Look()
118 {
119     int i;
120     char name[32]={0};
121     printf("輸入要查詢的學生的姓名:\n");
122     scanf("%s", name);
123     for(i=0; i< Stu_Num; i++)
124     {
125         if(strcmp(name, Student[i].Name) == 0)
126         {
127             printf("%d %s的成績是%d\n", Student[i].Num, Student[i].Name, Student[i].Score);
128         }
129     }
130 }
131 //------------------查詢學生成績---------------------------------------
132 
133 
134 //------------------打印全部學生信息-----------------------------------
135 void Student_All_Score_Print()
136 {
137     int i;
138     for(i=0; i< Stu_Num; i++)
139     {
140         printf("%d %s的成績是%d\n", Student[i].Num, Student[i].Name, Student[i].Score);
141     }
142 }
143 //------------------打印全部學生信息-----------------------------------
144 
145 //------------------從txt中加載學生信息--------------------------------
146 int Load_File()
147 {
148     FILE* fp;
149     int i=0;
150     int j=0;
151     char line[100][256];
152     fp = fopen("sample.txt", "r+t");
153     if(fp == NULL)
154     {
155         printf("文件打開失敗!\n");
156         return -1;
157     }
158     while((fgets(line[i], 256, fp)) != NULL)
159     {
160         line[i][3] = '\0';
161         Student[i].Num = atoi(line[i]);//獲取學號
162         for(j=4; j<10; j++)//獲取姓名
163         {
164             if(line[i][j] != ' ')
165             {
166                 Student[i].Name[j-4] = line[i][j];
167             }
168         }
169         strcpy(Student[i].Answer, &(line[i][15]));//獲取答案
170         i++;
171         Stu_Num++;
172     }
173     fclose(fp);
174     return 0;
175 }
176 //------------------從txt中加載學生信息-----------------------------------
177 
178 //--------按學生成績排序,tag=1按升序排序,tag=0按降序排序-----------------
179 void Student_All_Score_Sort(const int tag)
180 {
181     int i, j;
182     struct Stu tmp;
183     for(i=0; i<Stu_Num;i++)
184     {
185         for(j=i; j<Stu_Num;j++)
186         {
187             if (Student[i].Score < Student[j].Score)
188             {
189                 memcpy(&tmp, &(Student[i]), sizeof(struct Stu));
190                 memcpy(&(Student[i]), &(Student[j]), sizeof(struct Stu));
191                 memcpy(&(Student[j]), &tmp, sizeof(struct Stu));
192             }
193         }
194     }
195     if(tag == 1)
196     {
197         printf("按升序排列學生成績:\n");
198         for(i=Stu_Num-1; i>=0; i--)
199         {
200             printf("%d %s的成績是%d\n", Student[i].Num, Student[i].Name, Student[i].Score);
201         }
202     }
203     else
204     {
205         printf("按升序排列學生成績:\n");
206         for(i=0; i<Stu_Num; i++)
207         {
208             printf("%d %s的成績是%d\n", Student[i].Num, Student[i].Name, Student[i].Score);
209         }
210     }
211 }
212 
213 //--------按學生成績排序,tag=1按升序排序,tag=0按降序排序-----------------
214 
215 
216 //----------------------------------試卷分析------------------------------
217 void Paper_Analyse()
218 {
219     int high=0, low=100;
220     int i;
221     int hege=0;//計算超過60分的學生人數
222     float sum=0, avr;
223     for(i=0; i<Stu_Num; i++)
224     {
225         sum = sum+Student[i].Score;
226         if(Student[i].Score > high)
227             high = Student[i].Score;
228         if(Student[i].Score < low)
229             low = Student[i].Score;
230         if(Student[i].Score >= 60)
231         hege++;
232     }
233     avr = sum/Stu_Num;
234     printf("最高分是:%d\n最低分是:%d\n平均分是:%f\n及格率是:%f\n", high, low, avr, hege*1.0/Stu_Num);
235 }
236 //----------------------------------試卷分析------------------------------
237 
238 
239 int main()
240 {
241     int tag=1;
242     Load_File();//從文件中讀取學生信息
243     Standard_Num();//統計標準答案
244     Student_Score_Get();//計算每一個學生的分數
245     while(tag != 0)
246     {
247         tag = 0;
248         printf("**************************************************************\n");
249         printf("1.打印標準答案\n");
250         printf("2.根據學生姓名查詢學生信息\n");
251         printf("3.按升序打印學生成績\n");
252         printf("4.按降序打印學生成績\n");
253         printf("5.打印統計信息\n");
254         printf("0.退出系統\n");
255         printf("請輸入你要操做的序號:\n");
256         printf("**************************************************************\n");
257         scanf("%d", &tag);
258         switch(tag)
259         {
260         case 1:Standard_Print();break;
261         case 2:Student_Score_Look();break;
262         case 3:Student_All_Score_Sort(0);break;
263         case 4:Student_All_Score_Sort(1);break;
264         case 5:Paper_Analyse();break;
265         case 0:return 0;
266         default:printf("輸入錯誤!請重新輸入:\n");
267         }
268     }
269     return 0;
270 }

測試文件:spa

 
 1 1   趙光       CADADCDCDACCCDACCBCAAACCDBBCBDDBBAD
 2 2   羅志       CADBDCBCDADCABACBCCACACCAABCBDDBCAB
 3 3   閆谷凡     CDCBDCCCDBDBBBCCBBCACACBAABCBDDBCAB
 4 4   黃智博     CDCBDCCCDBDDABACBDCACACAAABCBDDBCCA
 5 5   汪昇朗     CACBDCBCDBDCBBACBDCACCCAAABCBDDBCAB
 6 6   劉奮倫     CDDBDCDCDBDAABBDDBCBCACAAABCBDDBCAB
 7 7   李磊鵬     CADBDABCDBDCABCCBDBACCCAABBCBDDBCAB
 8 8   高衛       DADBDDBCDBDCBCCCBDCBCACBAABCBDDADAA
 9 9   周鴻韻     CADBDCCBCADCBCDCABCCCACADBBCDCDBDAA
10 10  楊建       CBDBDBBCDBDBBCCABDBACACBABBCBDAADAB
11 11  李海凱     CADBDCACDBDCBDADDADABAACBBBCBDDBCAB
12 12  李衝譜     CADBDCCCDBDCBBACBBCACACAABBCBDDBCAB
13 13  邰楊敏     CACCDCBCDBDCBCCCBDCDCACABBBCBDDBCAB
14 14  姚暢生     CBDBDCDDDBDCDCCBBDCDCCCADABCBDDACAA
15 15  禤微       CADBDABCDCDCBBCBBDBACCAAABBCBDDBCAB
16 16  丁寧       CADADCBCDBDCBDDCDCCABACABABCBDDBCDD
17 17  喬夢進     CADDDABCDBDCBBCABDBACACBDBBCBDDBCAB
18 18  張華       CADBDCBCDBDCBBCACDCACACAABBCBDDBCAB
19 19  代怡康     CADBDABBDBDCBCDABDCBCCCAAABCBDDBCAB
20 20  張文劍     CABDACCCDBDCBCCCBCDBCCABBDBBCCDBCCD
21 21  吳漢       AADBACCCDBDABBCCBDCACACABABCBDDBCAB
22 22  劉亞       CADBBABCDADBBCCADBBACACADABCBDDBCAB
23 23  吳璐       CADBDBCCDBDCBBCCBCBACACAABBCBDDBCAB
24 24  唐金       CACBDBACDBDBBCADDCCAAACBCABCBDDBCAB
25 25  劉秋       CADCDABCDADCBCDADDBCCAAABBBCBDDBCAB
26 26  徐文       CADBDDBCDBDCBBAABDBACCCADBBCBDDACAB
27 27  孫育夫     CABDDCBCDBDCBBDCBDCAACCCDBBCBDDBCCA
28 28  毛東       CDABDDBCDBDCBCCADDCACCCAABBCBDDBCAB
29 29  陳環勇     CADBDABCDBDCBBACCABACCCAABBCBDDBCCB
30 30  鄭彪爽     CBDBCCDBBAACBADBCBDDAACCDBBCCDDBCAB
31 31  趙志龍     CADBDDBCDBDABBDABDBACCCBAABCBDDBCAB
32 32  梁傲朝     CADBDABCDBDBBBDCDDCACAAADBBCBDDBCAA
33 33  許同雷     CADBDABCDBDABBBCBDCDCACAABBCBDDBCAB
34 34  徐彥楠     CADBDCBCDBDCBBACDDCACCAABABCBDDBCAB
35 35  羅建磊     CADBDCCCDBDCBCDADBCAACACBBBCBDDBBAD
36 36  曾少林     CBDBDCBCBADDCCADDABACAABCBBCADDBAAB
37 37  郭磊傑     CADBDBBCDACCABDCDDBBCAADBBBCBDDBCAD
38 38  閤道煒     CADBDCBCDBDBADBCABDCCACABBBCBDDADCD
39 39  胡風波     DADBDDBCDBDCBBCCBDBAACCABBBCBDDACAB
40 40  張兆       CDDBDADCDBDCBCCDDDBACAACDBBCBDDBDAB
41 41  吳雪       BDDBDCBCDBDCBDDCBDCACAAAABBCBDDBCCA
42 42  衛曦羣     CADBDDACDBDCBBCCDCCACCCAABBCBDDBCCA
43 43  郭文雪     CBDBDDBCDBDBCCCCBBCACAAAABBCBBDBCCB
44 44  黃甘亮     CBDBDCBCDBDBADBCDDCCAACADABCDDDBCBA
45 45  蘇子淇     CADBDCBCDBCCBCACADBACACDAABCBCDACCA
46 46  王樊聰     CBDBDCBCDBDCABABBDCACCCAAABCBDDACAB
47 47  肖勇傑     CADBDCBCDBDCBBCCBDCACCCAABBCBDDBCAB
48 48  石小       CCDBDDCCDBDBBBCCCBCAAAADCBBCBDDBCAB
49 49  劉大遠     CADBDCCCDBDBADCCADCCCAAAAABCADDCCCA
50 50  陳世怡     CADBDCCCDBDABCCCDDCAAAACAABCADDACCA
51 51  王鵬康     CADBDCDCDCCACCDDBDCABAAACBBCBDDBCAB
52 52  解欣琦     BBDBADCDDBACADBACBDDAADABABCACDBCAA
53 53  劉周雯     CADBDCCCDBDCBCACBACACCCADABCBDDACAB
54 54  代博濤     CADBDBBCDBDBBCDCDABDCCABBABCBDDACAB
55 55  劉亞明     CADBDCDCDBDABBAABABACACAABBCBDDBCAB
56 56  韓建昊     CADBDBBCDBDCBBCBBDBACCCAABBCBDDBCAB
57 57  於磊思琪   CBDCDCCCDBDBBDCAACDACAAADBBBBDABCCA
58 58  王治       DADBDBBCDBDCBBCABDBCCCCAABBCBDDBCAD
59 59  劉春東     CADBDCBCDBDBBBCCADDACAAAAABCBDDBCAB
60 60  魏恆宇     CACBDCBCDBDCBBDCBDBACACBABBCBCDBCAB
61 61  陳春迪     CADBDCBCDBDCBBCCBBBACAABBBBCBDDBCCD
62 62  賈汝遠     CADBDBBCDBDBCADABDCBAACCBABCACDBCAB
63 63  韓全彤     CADBDCBCDBDCBBCCBDBACACAABBCBDDCCAB
64 64  付彬祺     CADBDCBCDADABBDCDDBACACBABBCBDDBCBB
65 65  王澤文     CADBBCBCDBDACDBBBBCDBAADBBBCBCDACAB
66 66  胡富南     CADBDCDCDACCBDCCCABACCCDBBBCBDDBCAB
67 67  肖秋來     CADDDCBCDBCCBCACDCBABACCAABBBDDACCA
68 68  周曉       CADBDABCDADCBCCDBDBACCCAABBCBDDBCAB
69 69  王奕敏     CADBDCBCDBDCBBCABDBACCCAABBCBDDBCAB
70 70  徐鈺英     DADBDABCDBDCABCCBDBBCCCABBBCBDCBCAB
71 71  陳贏       CDDBAABCBADABCCCDBCACACDAABCBDDBCAB
72 72  楊君       CADBDDACCBDCBDDCBCCCCCCCCBBCBDDBCAB
73 73  李清雪     DADBDCBCDBDCABDCBDCACCCAABBCBDDBCAB
74 74  周俊蒙     CADBCDBCCCDCBDBCBCCACACBBBBCBDDACAB
75 75  李夢       CACBDCBCDBDCBAACBDCACACCBABCBDDBCAB
76 76  夏煥宏     CBDBDCCCDADABBDCBCCAACAADBBBBDDBCDD
77 77  徐鑫強     CADBDCBCDBDAAADCBBCABACAABBCBDDBCAB
78 78  婁克瑞     CACBDBBCCBDCBBDABACACAAAAABCBDABCAB
79 79  董澤光     CDDCDABCDBDDBCDDDCBACACBBABCBDDBBCD
80 80  黃念龍     CACBDABCDBDABBCCBDCACCCAABBCBDDBCAB
81 81  林世       CADBDCBCDBDABAACBDBACCCAABBCBDDBCAB
82 82  王雪       CADBDCBCDBDCBBCABDBACACAABBCBDDBCAB
83 83  何璐       CADCDBBCDBDCCBACBDBCCACAABBCBDDBCAB
84 84  吳一       CBDBDCACBBDCBCACBDCCCACADBBCBDDBCAB
85 85  龔文傑     CADBDCBCDBDCBBCBBDCACCCBAABCBDDBCAB
86 86  王志媛     DAABDCACDBDCCCCCBDCAAACCCABCACDBCCA
87 87  段靖章     CADBDCBCDCDCBBDABDBACAACABBCBCDBCAB
88 88  胡大       CADBDCCCDBDBBDDCBDDCCACAAABBBCDBCBB
89 89  黃利偉     CADBDCBCDBDCABDCCDBACACCADBCBDDBCAB
90 90  張文源     CADBDCBCDBDCBBDABDBACCCAABBCBDDBCAB
91 91  林濤       CADBDBBCDBDCBBCABDBACCCAABBCBDDBCAB
相關文章
相關標籤/搜索