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