37. 全班學生成績處理

   某學校有一系統的資料庫儲存各項課程資訊,其提供的功能如下:
1.  輸出各科系、各年級的每一學年平均成績前三名的名次百分比和撤選百分比
2.  輸出每項課程每年的最高學期成績、平均學期成績、最低學期成績和撤選百分比、前三名的成績和名次百分比
3.  可搜尋某課程歷年學期分數最高的前兩名學號和最多人數的科系
  
每個課程資訊包含課程編碼、學期編碼、學生學校學號編碼和學生成績。各項編碼資訊如下:
    學校學號:共八碼,前三碼是入學年度,中間三碼是科系編碼、後兩碼是座號
 課程編碼:共四碼,前三碼是學科編碼(整數,英文一是101、國文一是201),後一碼是學分數(整數)
 學期編碼:   共四碼,前三碼是學年度(整數)、後一碼是學期(第一學期1、第二學期2)

每個學科一學年僅開一次,且每位學生一年至少上完一堂課,各項數值計算如下:
1.  排名:成績較高排名較前,若成績相同則學號編碼較小排名較前
2.  課程撤選百分比: 課程撤選人數/課程總人數
3.  學生撤選百分比:    學生撤選的課程數/學生選修的課程數
4.  學年平均成績: 該學年所有非撤選課程成績*該課程學分數加總/該學年所有非撤選學分數且無條件捨去至整數
5.  名次百分比:
        假如總人數(包含撤選人數)有50人
百分比為1%的人數=(50*0.01且無條件進位至整數)=1
百分比為2%的人數=(50*0.02且無條件進位至整數)-(百分比為1%的人數)=1-1=0
百分 比為3%的人數=(50*0.03且無條件進位至整數)-(百分比為1-2%人數)=2-1=1
           因此排名第一名為1%,第二名的百分比為3%

請輸入多項課程資訊到資料庫,並依序執行所有功能

  
【輸入說明】
第1行:輸入課程數N(整數)
第2行至倒數第2行:輸入各科課程資料。如果學生退選,則學期成績為w
     非國文一或英文一的課程,僅包含學期成績(無會考成績)
      第N行:輸入課程編碼,學期成績和學生人數,中間以一個空白隔開
      第N+1行:輸入修課學生1學號和學生學期成績,中間以一個空白隔開
      第N+2行:輸入修課學生2學號和學生學期成績,中間以一個空白隔開
      
     國文一和英文一的學期成績包含課程學期成績和會考成績,分別占比70%、30%,總分為無條件進位至整數,如果學生退選則僅輸入學期成績w
      第N行:輸入課程編碼,學期成績和學生人數,中間以一個空白隔開
      第N+1行:輸入修課學生1學號、課程學期成績和會考成績,中間以一個空白隔開
      第N+2行:輸入修課學生2學號、課程學期成績和會考成績,中間以一個空白隔開
      …
      
最後1行:搜尋課程資料
     輸入想要搜尋的課程編碼
範例輸入說明:
2 (課程數)
1013 1121 9(課程編碼1013、112學年度上學期,學生數量9)
11153001 59 63(學生入學年度111年,科系530,號碼01,課程學期成績59,會考成績63)
11153002 68 72(學生入學年度111年,科系530,號碼02,課程學期成績68,會考成績62)
11153003 39 64(學生入學年度111年,科系530,號碼03,課程學期成績39,會考成績64)
11153004 w  (學生入學年度111年,科系530,號碼04,退選)
11153005 68 82(學生入學年度111年,科系530,號碼05,課程學期成績68,會考成績82)
11253001 67 91(學生入學年度112年,科系530,號碼01,課程學期成績67,會考成績91)
11253002 78 92(學生入學年度112年,科系530,號碼02,課程學期成績78,會考成績92)
11253003 72 68(學生入學年度112年,科系530,號碼03,課程學期成績72,會考成績68)
11253004 91 76(學生入學年度112年,科系530,號碼04,課程學期成績91,會考成績76)
1214 1131 9(課程編碼1214,113學年度上學期,學生數量9)
11153001 63(學生入學年度111年,科系530,號碼01,學期成績63)
11153002 75(學生入學年度111年,科系530,號碼02,學期成績75)
11153003 82(學生入學年度111年,科系530,號碼03,學期成績82)
11153004 92(學生入學年度111年,科系530,號碼04,學期成績92)
11153005 83(學生入學年度111年,科系530,號碼05,學期成績83)
11253001 82(學生入學年度112年,科系530,號碼01,學期成績82)
11253002 79(學生入學年度112年,科系530,號碼02,學期成績79)
11253003 90(學生入學年度112年,科系530,號碼03,學期成績90)
11253004 70(學生入學年度112年,科系530,號碼04,學期成績70)
1013(搜尋課程編碼1013歷年學期分數最高的前兩名學號和最多人數的科系)


【輸出說明】
輸出分為以下三部分,每一部分中間無間隔
1.  輸出各科系、各年級、每年的平均成績前三名的名次百分比與撤選百分比
2.  輸出每個課程、每年所有非撤選學生的最高學期成績、平均學期成績、最低學期成績和課程的撤選百分比(無條件捨去至整數),前三名的成績和名次百分比。
3.  輸出在搜尋的學科編碼,歷年學期分數最高的前兩名學號和最多人數的科系

各個部份的輸出規範如下:
 1.輸出各科系(編碼由小到大)、各年級(編碼由小到大)的每一學年(編碼由小到大)學年平均成績前三名的名次百分比和撤選百分比(無條件捨去至整數)。某科系,某年級的某學年輸出如下:
     第N行:科系編碼,年級編碼,學年,中間以一個空白隔開
     第N+1行:第一名學生學號編碼,學年平均成績,名次百分比,撤選百分比,中間以一個空白隔開
     第N+2行:第二名學生學號編碼,學年平均成績,名次百分比,撤選百分比,中間以一個空白隔開
     第N+3行:第三名學生學號編碼,學年平均成績,名次百分比,撤選百分比,中間以一個空白隔開

 2.輸出每個課程(編碼由小到大)每年(年份由小到大)所有非撤選學生的最高學期成績、平均學期成績(無條件捨去至整數)、最低學期成績和課程的撤選百分比(無條件捨去至整數),前三名的成績和名次百分比。某年某課程的輸出如下:
     第N行:課程編碼,學年,中間以一個空白隔開
     第N+1行:最高學期成績,平均學期成績,最低學期成績,撤選百分比,中間以一個空隔開
     第N+1行:第一名學生學號編碼,學期成績,名次百分比,中間以一個空白隔開
     第N+2行:第二名學生學號編碼,學期成績,名次百分比,中間以一個空白隔開
     第N+3行:第三名學生學號編碼,學期成績,名次百分比,中間以一個空白隔開


3.搜尋結果
    輸出課程歷年學期分數最高的前兩名學號和最多人數的科系
      第N行:第一名學號編碼,第二名學號編碼,人數最多的科系編碼,人數第二多的科系編碼(如果沒有則不用輸出),中間以一個空白隔開
    


範例輸出說明:
530 111 112 (科系530,入學年度111,112年)
11153005 73 1% 0%
(112年課程:1013,1013成績=68*0.7+82*0.3=72.2且無條件進位至整數=73,學年成績=73*3/3=73,同科同年級總人數=5,學年平均成績排名=1,5*1%=0.05無條件進位至整數=1=排名,撤選百分比=該學年退選科目數量/該學年選修科目數量=0%)
11153002 70 21% 0%
(112年課程:1013,1013成績=68*0.7+72*0.3=69.2且無條件進位至整數=70,學年成績=70*3/3=70,同科同年級總人數=5,學年平均成績排名=2,5*21%=1.05無條件進位至整數=2=排名,撤選百分比=該學年退選科目數量/該學年選修科目數量=0%)
11153001 61 41% 0%
(112年課程:1013,1013成績:=59*0.7+63*0.3=60.2且無條件進位至整數=61,學年成績=61*3/3=61,同科同年級總人數=5,學年平均成績排名=3,5*41%=2.05無條件進位至整數=3=排名,撤選百分比=該學年退選科目數量/該學年選修科目數量=0%)
530 111 113(科系530,入學年度111,113年)
11153004 92 1% 0%
(113年課程:1214,1214成績=92,學年成績=92*4/4=92,同科同年級總人數=5,學年平均成績排名=1,5*1%=0.05無條件進位至整數=1=排名,撤選百分比=該學年退選科目數量/該學年選修科目數量=0%)
11153003 82 21% 0%
(113年課程:1214,1214成績=82,學年成績=82*4/4=82,同科同年級總人數=5,學年平均成績排名=2,5*21%=1.05無條件進位至整數=2=排名,撤選百分比=該學年退選科目數量/該學年選修科目數量=0%)
11153002 75 41% 0%
(113年課程:1214,1214成績=75,學年成績=75*4/4=75
同科同年級總人數=5,學年平均成績排名=3,5*41%=2.05無條件進位至整數=3=排名,撤選百分比=該學年退選科目數量/該學年選修科目數量=0%)
530 112 112(科系530,入學年度112,112年)
11253004 87 1% 0%
(112年課程:1013,1214成績=91*0.7+76*0.3=86.5且無條件進位=87,學年成績=87*3/3=87,同科同年級總人數=4,學年平均成績排名=1,4*1%=0.04無條件進位至整數=1=排名,撤選百分比=該學年退選科目數量/該學年選修科目數量=0%)
11253002 83 26% 0%
(112年課程:1013,1214成績=78*0.7+92*0.3=82.2且無條件進位=83,學年成績=83*3/3=83,同科同年級總人數=4,學年平均成績排名=2,4*26%=1.04無條件進位至整數=2=排名,撤選百分比=該學年退選科目數量/該學年選修科目數量=0%)
11253001 75 51% 0%
(112年課程:1013,1214成績=59*0.7+63*0.3=74.2且無條件進位=75,學年成績=75*3/3=83,同科同年級總人數=4,學年平均成績排名=3,4*51%=2.05無條件進位至整數=3=排名,撤選百分比=該學年退選科目數量/該學年選修科目數量=0%)
530 112 113(科系530,入學年度112,113年)
11253003 90 1% 0%
(113年課程:1214,1214成績=90,學年成績=90*4/4=90,同科同年級總人數=4,學年平均成績排名=1,4*1%=0.04無條件進位至整數=1=排名,撤選百分比=該學年退選科目數量/該學年選修科目數量=0%)
11253001 82 26% 0%
(113年課程:1214,1214成績=82,學年成績=82*4/4=82,同科同年級總人數=4,學年平均成績排名=2,4*26%=1.04無條件進位至整數=2=排名,撤選百分比=該學年退選科目數量/該學年選修科目數量=0%)
11253002 79 51% 0%
(113年課程:1214,1214成績=79,學年成績=79*4/4=79,同科同年級總人數=4,學年平均成績排名=3,4*51%=2.04無條件進位至整數=3=排名,撤選百分比=該學年退選科目數量/該學年選修科目數量=0%)
1013 112(課程1013,112年)
87 70 47 11%(最高學期成績87,平均學期成績70,最低學期成績47,撤選百分比11%)
11253004 87 1%(學期成績第一名11253004,學期成績87,名次百分比1%)
11253002 83 12%(學期成績第二名11253002,學期成績83,名次百分比12%)
11253001 75 23%(學期成績第三名11253001,學期成績75,名次百分比23%)
1214 113(課程1214,113年)
92 79 63 0%(最高學期成績92,平均學期成績79,最低學期成績63,撤選百分比0%)
11153004 92 1%(學期成績第一名11153004,學期成績92,名次百分比1%)
11153003 90 12%(學期成績第二名11153003,學期成績90,名次百分比12%)
11153005 83 23%(學期成績第三名11153003,學期成績82,名次百分比23%)
11253004 11253002 530(課程編碼1013,歷年學期成績第一名11253004,歷年學期第二名11253002,最多人數科系編碼530)

                                                                            
【特殊要求】
各項資料請用 dictionary儲存

【測試資料一】
輸入:
2
1012 1101 17
11029301 72 63
11029302 64 72
11029303 65 75
11029307 72 81
11029308 85 83
11029309 75 72
11029310 86 77
11029311 83 79
11029312 76 75
11029313 82 74
11029314 85 73
11029315 89 72
11029316 75 65
11029317 83 72
11029319 84 56
11029320 82 73
11029321 89 92
1021 1102 20
11029301 92
11029302 53
11029303 57
11029304 66
11029305 82
11029306 85
11029307 92
11029308 95
11029309 82
11029310 86
11029311 82
11029312 86
11029313 89
11029314 87
11029315 85
11029316 86
11029317 73
11029319 w
11029320 76
11029321 74
1012

輸出:
293 110 110
11029308 88 1% 0%
11029306 85 6% 0%
11029310 84 11% 0%
1012 110
90 78 67 0%
11029321 90 1%
11029308 85 6%
11029310 84 12%
1021 110
95 80 53 5%
11029308 95 1%
11029301 92 6%
11029307 92 11%
11029321 11029308 293


【測試資料二】
輸入:
3
1033 1132 17
11263001 65
11263002 67
11263003 68
11263004 73
11263005 69
11263006 83
11363001 92
11363002 59
11363003 88
11363004 95
11363005 76
11363006 82
11363007 62
11363008 w
11363009 59
11363010 87
11363011 72
1033 1142 9
11363001 83
11363002 92
11363003 70
11363004 60
11363005 81
11363006 59
11363007 66
11363008 75
11363009 71
1072 1141 17
11263001 82
11263002 95
11263003 78
11263004 81
11263005 77
11263006 53
11363001 86
11363002 88
11363003 87
11363004 72
11363005 95
11363006 78
11363007 83
11363008 92
11363009 83
11363010 92
11363011 75
1033

輸出:
630 112 113
11263006 83 1% 0%
11263004 73 17% 0%
11263005 69 34% 0%
630 112 114
11263002 95 1% 0%
11263001 82 17% 0%
11263004 81 34% 0%
630 113 113
11363004 95 1% 0%
11363001 92 10% 0%
11363003 88 19% 0%
630 113 114
11363010 92 1% 0%
11363002 90 10% 0%
11363005 86 19% 0%
1033 113
95 74 59 5%
11363004 95 1%
11363001 92 6%
11363003 88 12%
1033 114
92 73 59 0%
11363002 92 1%
11363001 83 12%
11363005 81 23%
1072 114
95 82 53 0%
11263002 95 1%
11363005 95 6%
11363008 92 12%
11363004 11363001 630






【測試資料三】
輸入:
3
1012 1121 11
11252001 62 78
11252002 56 93
11252003 85 64
11252004 92 71
11252005 83 72
11252006 73 64
11252007 81 63
11252101 63 59
11252102 73 64
11252103 82 94
11252104 75 64
2012 1131 11
11252001 82 94
11252002 72 64
11252003 92 71
11252004 61 89
11252005 69 96
11252006 74 63
11252007 32 69
11252101 81 92
11252102 70 65
11252103 80 64
11252104 75 68
1035 1132 8
11252001 53
11252002 69
11252003 82
11252004 79
11252101 83
11252102 90
11252103 88
11252104 92
1012

輸出:
520 112 112
11252004 86 1% 0%
11252005 80 15% 0%
11252003 79 29% 0%
520 112 113
11252003 83 1% 0%
11252005 78 15% 0%
11252004 76 29% 0%
521 112 112
11252103 86 1% 0%
11252104 72 26% 0%
11252102 71 51% 0%
521 112 113
11252104 86 1% 0%
11252102 84 26% 0%
11252103 84 51% 0%
1012 112
86 74 62 0%
11252004 86 1%
11252103 86 10%
11252005 80 19%
1035 113
92 79 53 0%
11252104 92 1%
11252102 90 13%
11252103 88 26%
2012 113
86 73 44 0%
11252001 86 1%
11252003 86 10%
11252101 85 19%
11252004 11252103 520 521


【隱藏測試資料一】
輸入:
2
2015 1121 9
11021001 56 68
11021002 85 92
11021003 76 69
11021004 85 92
11021005 82 82
11021006 83 70
11021007 80 70
11021008 100 100
11021009 82 75
2201 1122 7
11021001 w
11021002 83
11021003 68
11021004 w
11021005 82
11021006 82
11021007 92
2015

輸出:
210 110 112
11021008 100 1% 0%
11021004 88 12% 50%
11021002 87 23% 0%
2015 112
100 81 60 0%
11021008 100 1%
11021002 88 12%
11021004 88 23%
2201 112
92 81 68 28%
11021007 92 1%
11021002 83 15%
11021005 82 29%
11021008 11021002 210





【隱藏測試資料二】
輸入:
3
1035 1121 11
11152001 68
11152002 75
11152003 89
11152004 86
11152005 92
11152006 95
11152007 100
11152008 60
11252101 92
11252102 82
11252103 80
1072 1122 5
11252101 72
11252102 68
11252103 72
11252104 80
11252105 60
1035 1131 13
11152001 72
11152002 71
11152003 68
11152004 92
11152005 83
11152006 74
11152007 82
11152008 90
11252101 92
11252102 86
11252103 76
11252104 80
11252105 69
1035

輸出:
520 111 112
11152007 100 1% 0%
11152006 95 13% 0%
11152005 92 26% 0%
520 111 113
11152004 92 1% 0%
11152008 90 13% 0%
11152005 83 26% 0%
521 112 112
11252101 86 1% 0%
11252104 80 21% 0%
11252102 78 41% 0%
521 112 113
11252101 92 1% 0%
11252102 86 21% 0%
11252104 80 41% 0%
1035 112
100 83 60 0%
11152007 100 1%
11152006 95 10%
11152005 92 19%
1035 113
92 79 68 0%
11152004 92 1%
11252101 92 8%
11152008 90 16%
1072 112
80 70 60 0%
11252104 80 1%
11252101 72 21%
11252103 72 41%
11152007 11152006 520 521


【隱藏測試資料三】
輸入:
2
2013 1091 8
10923001 82 71
10923002 70 65
10923003 81 90
10923004 88 56
10923005 75 59
10823001 57 92
10823002 99 50
10823003 82 60
1011 1101 8
10923001 55 68
10923002 66 84
10923003 95 73
10923004 88 92
10923005 75 58
10823001 88 91
10823002 83 72
10823003 99 58
2013

輸出:
230 108 109
10823002 85 1% 0%
10823003 76 34% 0%
10823001 68 67% 0%
230 108 110
10823001 89 1% 0%
10823003 87 34% 0%
10823002 80 67% 0%
230 109 109
10923003 84 1% 0%
10923001 79 21% 0%
10923004 79 41% 0%
230 109 110
10923004 90 1% 0%
10923003 89 21% 0%
10923002 72 41% 0%
1011 110
90 79 59 0%
10923004 90 1%
10823001 89 13%
10923003 89 26%
2013 109
85 76 68 0%
10823002 85 1%
10923003 84 13%
10923001 79 26%
10823002 10923003 230