版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《高級(jí)語(yǔ)言程序設(shè)計(jì)》</p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 課題名稱: 學(xué)生成績(jī)管理管理 </p><p><b> 電子信息學(xué)院</b></p><p> 2015年 07 月 10 日</p><p&
2、gt;<b> 目 錄</b></p><p><b> 1 課題分析1</b></p><p> 1.1 問(wèn)題描述1</p><p> ?。?)錄入每個(gè)學(xué)生的學(xué)號(hào)、姓名和各科考試成績(jī)1</p><p> ?。?)計(jì)算每門(mén)課程的總分和平均分1</p><p>
3、; ?。?)計(jì)算每個(gè)學(xué)生的總分和平均分1</p><p> ?。?)按每個(gè)學(xué)生的總分由高到低排出名次表1</p><p> ?。?)按每個(gè)學(xué)生的總分由低到高排出名次表1</p><p> ?。?)按學(xué)號(hào)由小到大排出成績(jī)表1</p><p> (7)按姓名的字典順序排出成績(jī)表1</p><p>
4、(8)按學(xué)號(hào)查詢學(xué)生排名及其考試成績(jī)1</p><p> ?。?)按姓名查詢學(xué)生排名及其考試成績(jī)1</p><p> ?。?0)按優(yōu)秀(90-100)、良好(89-89)、中等(70-79)、及格(60-69)、不及格(0-59)5個(gè)類別,對(duì)每門(mén)課程分別統(tǒng)計(jì)每個(gè)類別的人數(shù)以及所占的百分比1</p><p> ?。?1)輸出每個(gè)學(xué)生的學(xué)號(hào)、姓名、各科考試
5、成績(jī),以及每門(mén)課程的總分和平均分1</p><p> ?。?2)將每個(gè)學(xué)生的記錄信息寫(xiě)入文件1</p><p> ?。?3)從文件中讀出每個(gè)學(xué)生的記錄信息并顯示1</p><p> 1.2 功能需求分析1</p><p><b> 2 系統(tǒng)設(shè)計(jì)3</b></p><p> 2.
6、1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)3</p><p> 2.2 函數(shù)設(shè)計(jì)與說(shuō)明3</p><p> 2.3 菜單設(shè)計(jì)3</p><p> 2.4 文件清單與說(shuō)明4</p><p><b> 3 系統(tǒng)實(shí)現(xiàn)5</b></p><p> 3.1 管理系統(tǒng)菜單5</p><p>
7、; 3.2 學(xué)生成績(jī)排名5</p><p> 3.3 學(xué)生成績(jī)統(tǒng)計(jì)9</p><p> 4 測(cè)試數(shù)據(jù)與測(cè)試過(guò)程記錄10</p><p> 4.1 菜單測(cè)試10</p><p> 4.2 系統(tǒng)功能測(cè)試13</p><p> 4.2.1管理系統(tǒng)菜單13</p><p> 4
8、.2.2輸入學(xué)生信息14</p><p> 錄入每個(gè)學(xué)生的學(xué)號(hào)、姓名和各科考試成績(jī)14</p><p> 4.2.3計(jì)算總分和平均分14</p><p> 計(jì)算每門(mén)課程的總分和平均分測(cè)試14</p><p> 計(jì)算每個(gè)學(xué)生的總分和平均分測(cè)試15</p><p> 4.2.4學(xué)生成績(jī)排名16<
9、/p><p> 按每個(gè)學(xué)生總分由高到低排名16</p><p> 按每個(gè)學(xué)生總分由低到高排名16</p><p> 按學(xué)號(hào)由大到小排名17</p><p> 按姓名的在字典順序排名18</p><p> 4.2.5查詢學(xué)生成績(jī)18</p><p> 按學(xué)號(hào)查詢學(xué)生排名及其考試成
10、績(jī)測(cè)試18</p><p> 按姓名查詢學(xué)生排名及其考試成績(jī)測(cè)試19</p><p> 4.2.6學(xué)生成績(jī)統(tǒng)計(jì)20</p><p> 各等級(jí)學(xué)生的百分比20</p><p> 4.2.6學(xué)生信息的輸入輸出20</p><p> 輸出每個(gè)學(xué)生的學(xué)號(hào)、姓名、各科考試成績(jī),以及每門(mén)課程的總分和平均分測(cè)試
11、20</p><p> 將每個(gè)學(xué)生的記錄信息寫(xiě)入文件測(cè)試21</p><p> 從文件中讀出每個(gè)學(xué)生的記錄信息并顯示測(cè)試22</p><p> 5 課程設(shè)計(jì)遇到的問(wèn)題及解決方法22</p><p> 6 課程設(shè)計(jì)總結(jié)23</p><p><b> 參考文獻(xiàn)23</b></
12、p><p><b> 附錄源代碼23</b></p><p><b> 1 課題分析</b></p><p><b> 1.1 問(wèn)題描述</b></p><p> 某班有最多不超過(guò)30人(具體人數(shù)鍵盤(pán)輸入)參加期末考試,考試科目為數(shù)學(xué)(MT)、英語(yǔ)(EN)和物理(PH)。
13、學(xué)生成績(jī)管理系統(tǒng)是一個(gè)非常實(shí)用的程序,如果能夠把用戶輸入的數(shù)據(jù)存盤(pán),下次運(yùn)行時(shí)讀出,就更有用了。</p><p> 編程實(shí)現(xiàn)如下菜單驅(qū)動(dòng)的學(xué)生成績(jī)管理系統(tǒng)</p><p> ?。?)錄入每個(gè)學(xué)生的學(xué)號(hào)、姓名和各科考試成績(jī)</p><p> ?。?)計(jì)算每門(mén)課程的總分和平均分</p><p> ?。?)計(jì)算每個(gè)學(xué)生的總分和平均分<
14、/p><p> (4)按每個(gè)學(xué)生的總分由高到低排出名次表</p><p> ?。?)按每個(gè)學(xué)生的總分由低到高排出名次表</p><p> ?。?)按學(xué)號(hào)由小到大排出成績(jī)表</p><p> (7)按姓名的字典順序排出成績(jī)表</p><p> ?。?)按學(xué)號(hào)查詢學(xué)生排名及其考試成績(jī)</p><
15、;p> (9)按姓名查詢學(xué)生排名及其考試成績(jī)</p><p> ?。?0)按優(yōu)秀(90-100)、良好(89-89)、中等(70-79)、及格(60-69)、不及格(0-59)5個(gè)類別,對(duì)每門(mén)課程分別統(tǒng)計(jì)每個(gè)類別的人數(shù)以及所占的百分比</p><p> ?。?1)輸出每個(gè)學(xué)生的學(xué)號(hào)、姓名、各科考試成績(jī),以及每門(mén)課程的總分和平均分</p><p> (
16、12)將每個(gè)學(xué)生的記錄信息寫(xiě)入文件</p><p> (13)從文件中讀出每個(gè)學(xué)生的記錄信息并顯示</p><p> 1.2 功能需求分析</p><p> 若要完成問(wèn)題中的各項(xiàng)要求,首先需要運(yùn)用結(jié)構(gòu)體數(shù)據(jù)儲(chǔ)存學(xué)生的成績(jī)信息,再運(yùn)用循環(huán)語(yǔ)句求得各學(xué)生成績(jī)之和及平均分和各學(xué)科成績(jī)之和及平均分,再運(yùn)用文件存儲(chǔ)數(shù)據(jù)便于以后查詢,對(duì)于數(shù)據(jù)查詢,則同樣需要運(yùn)用循環(huán)語(yǔ)
17、句將要查詢的姓名或?qū)W號(hào)與已儲(chǔ)存的信息進(jìn)行對(duì)比,直至找到要查詢的信息。系統(tǒng)功能模塊如圖1.2.1所示</p><p> 圖1 系統(tǒng)功能模塊圖</p><p><b> 表1.2.1</b></p><p><b> 2 系統(tǒng)設(shè)計(jì)</b></p><p> 2.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</p>
18、;<p> 系統(tǒng)處理的數(shù)據(jù)主要是學(xué)生信息,由C語(yǔ)言數(shù)據(jù)體表示</p><p> 2.2 函數(shù)設(shè)計(jì)與說(shuō)明</p><p> 學(xué)生信息管理系統(tǒng)采用結(jié)構(gòu)化程序設(shè)計(jì)思想,程序處理主函數(shù)以外,共設(shè)計(jì)了13個(gè)函數(shù),函數(shù)的原型及功能說(shuō)明如表2.3.1所示</p><p> 表2.3.1 函數(shù)列表</p><p><b>
19、2.3 菜單設(shè)計(jì)</b></p><p> 采用二級(jí)菜單設(shè)計(jì),為保證程序有效性,先選擇1項(xiàng)錄入學(xué)生各項(xiàng)信息,再進(jìn)入其他功能選擇。</p><p><b> 否</b></p><p><b> 是</b></p><p><b> 是</b></p&g
20、t;<p><b> 否</b></p><p> 2.4 文件清單與說(shuō)明</p><p> 表2.3.1中的函數(shù)與主函數(shù),以及函數(shù)聲明、數(shù)據(jù)結(jié)構(gòu)定義、數(shù)據(jù)存儲(chǔ)二進(jìn)制文件共兩個(gè),程序文件清單如表2.5.1所示。</p><p><b> 表2.5.1</b></p><p>&
21、lt;b> 3 系統(tǒng)實(shí)現(xiàn)</b></p><p> 3.1 管理系統(tǒng)菜單</p><p> 進(jìn)入菜單選擇界面,進(jìn)行成績(jī)單錄入和各項(xiàng)功能的選擇</p><p><b> 否</b></p><p><b> 是</b></p><p><b&g
22、t; 是</b></p><p><b> 否</b></p><p> 3.2 學(xué)生成績(jī)排名</p><p> 按每個(gè)學(xué)生的總分由高到低排出名次表</p><p> 進(jìn)入菜單后選擇該功能,用循環(huán)語(yǔ)句計(jì)算出存儲(chǔ)在不同結(jié)構(gòu)體中每個(gè)學(xué)生各科的分?jǐn)?shù)之和即為總分。再應(yīng)用比較語(yǔ)句進(jìn)行比較總分大小,按照從高到低
23、進(jìn)行輸出顯示</p><p><b> N</b></p><p><b> Y</b></p><p> 按每個(gè)學(xué)生的總分由低到高排出名次表</p><p> 進(jìn)入菜單后選擇該功能,用循環(huán)語(yǔ)句計(jì)算出存儲(chǔ)在不同結(jié)構(gòu)體中每個(gè)學(xué)生各科的分?jǐn)?shù)之和即為總分。再應(yīng)用比較語(yǔ)句進(jìn)行比較總分大小,按照從低到
24、高進(jìn)行輸出顯示</p><p><b> N</b></p><p><b> Y</b></p><p> 按學(xué)號(hào)由小到大排出名次表</p><p> 進(jìn)入菜單后選擇該功能,用循環(huán)語(yǔ)句計(jì)算出存儲(chǔ)在不同結(jié)構(gòu)體中每個(gè)學(xué)生各科的分?jǐn)?shù)之和即為總分。再應(yīng)用比較語(yǔ)句進(jìn)行比較學(xué)號(hào)大小,按照學(xué)號(hào)從小到大進(jìn)
25、行輸出顯示</p><p><b> N</b></p><p><b> Y</b></p><p> 按姓名的在字典順序排出成績(jī)表</p><p> 進(jìn)入菜單后選擇該功能,用循環(huán)語(yǔ)句計(jì)算出存儲(chǔ)在不同結(jié)構(gòu)體中每個(gè)學(xué)生各科的分?jǐn)?shù)之和即為總分。再應(yīng)用比較語(yǔ)句進(jìn)行比較姓名在字典順序,按照姓名在字
26、典順序進(jìn)行輸出顯示</p><p><b> N</b></p><p><b> Y</b></p><p> 3.3 學(xué)生成績(jī)統(tǒng)計(jì)</p><p> 進(jìn)入菜單后選擇該功能,用switch語(yǔ)句進(jìn)行各項(xiàng)等級(jí)累加,在將各項(xiàng)累加的數(shù)量處于總?cè)藬?shù)算出百分比,輸出顯示</p><
27、p><b> N</b></p><p><b> Y</b></p><p> 4 測(cè)試數(shù)據(jù)與測(cè)試過(guò)程記錄</p><p><b> 4.1 菜單測(cè)試</b></p><p> 進(jìn)入菜單選擇,可以有多項(xiàng)選擇,選擇錄入學(xué)生信息后進(jìn)行其他從菜單功能的選擇進(jìn)行該項(xiàng)功
28、能。進(jìn)行完此項(xiàng)功能后有選擇是否繼續(xù)的功能,可以進(jìn)行選擇繼續(xù)返回主菜單在進(jìn)行其他功能的選擇。</p><p><b> 圖4.1.1</b></p><p><b> 圖4.1.2</b></p><p><b> 圖4.1.3</b></p><p><b>
29、 圖4.1.4</b></p><p><b> 圖4.2.5</b></p><p> 4.2 系統(tǒng)功能測(cè)試</p><p> 4.2.1管理系統(tǒng)菜單</p><p> 進(jìn)入菜單選擇界面,選擇想要執(zhí)行的功能</p><p><b> 圖4.2.1</b>
30、;</p><p> 4.2.2輸入學(xué)生信息</p><p> 錄入每個(gè)學(xué)生的學(xué)號(hào)、姓名和各科考試成績(jī)</p><p> 先選擇1進(jìn)入錄入信息界面,再按要求輸入總?cè)藬?shù),然后根據(jù)彈出的格式依次輸入學(xué)生信息,按回車(chē)結(jié)束輸入后可選擇是否繼續(xù)進(jìn)行其他功能。</p><p><b> 圖4.2.2</b></p>
31、;<p> 4.2.3計(jì)算總分和平均分</p><p> 計(jì)算每門(mén)課程的總分和平均分測(cè)試</p><p> 輸入成績(jī)后,在菜單界面選擇計(jì)算成績(jī)功能進(jìn)入二級(jí)菜單,選擇計(jì)算每門(mén)課程的總分和平均分,則功能完成,然后可選擇是否繼續(xù)實(shí)現(xiàn)其他功能。</p><p><b> 圖4.2.3.1</b></p><p&
32、gt; 計(jì)算每個(gè)學(xué)生的總分和平均分測(cè)試</p><p> 輸入成績(jī)后,在菜單界面選擇計(jì)算成績(jī)功能進(jìn)入二級(jí)菜單,選擇計(jì)算每個(gè)學(xué)生的總分和平均分,則功能完成,然后可選擇是否繼續(xù)實(shí)現(xiàn)其他功能。</p><p><b> 圖4.2.3.2</b></p><p> 4.2.4學(xué)生成績(jī)排名</p><p> 按每個(gè)學(xué)生總
33、分由高到低排名</p><p> 先輸入學(xué)生信息,在一級(jí)菜單選擇排名,在二級(jí)菜單選擇該功能,可以選擇是否繼續(xù)</p><p><b> 圖4.2.4.1</b></p><p> 按每個(gè)學(xué)生總分由低到高排名</p><p> 先輸入學(xué)生信息,在一級(jí)菜單選擇排名,在二級(jí)菜單選擇該功能,可以選擇是否繼續(xù)</p&
34、gt;<p><b> 圖4.2.4.2</b></p><p><b> 按學(xué)號(hào)由大到小排名</b></p><p> 先輸入學(xué)生信息,在一級(jí)菜單選擇排名,在二級(jí)菜單選擇該功能,可以選擇是否繼續(xù)</p><p><b> 圖4.2.4.3</b></p><
35、p> 按姓名的在字典順序排名</p><p> 先輸入學(xué)生信息,在一級(jí)菜單選擇排名,在二級(jí)菜單選擇該功能,可以選擇是否繼續(xù)</p><p><b> 圖4.2.4.4</b></p><p> 4.2.5查詢學(xué)生成績(jī)</p><p> 按學(xué)號(hào)查詢學(xué)生排名及其考試成績(jī)測(cè)試</p><p&
36、gt; 輸入成績(jī)后,在菜單界面選擇查詢功能進(jìn)入二級(jí)菜單,選擇按學(xué)號(hào)查詢學(xué)生排名及其考試成績(jī),輸入要查詢的學(xué)號(hào),則功能完成,然后可選擇是否繼續(xù)實(shí)現(xiàn)其他功能。</p><p><b> 圖4.2.5.1</b></p><p> 按姓名查詢學(xué)生排名及其考試成績(jī)測(cè)試</p><p> 輸入成績(jī)后,在菜單界面選擇查詢功能進(jìn)入二級(jí)菜單,選擇按姓名
37、查詢學(xué)生排名及其考試成績(jī),輸入要查詢的姓名,則功能完成,然后可選擇是否繼續(xù)實(shí)現(xiàn)其他功能。</p><p><b> 圖4.2.5.2</b></p><p> 4.2.6學(xué)生成績(jī)統(tǒng)計(jì)</p><p><b> 各等級(jí)學(xué)生的百分比</b></p><p> 先輸入學(xué)生信息,在一級(jí)菜單選擇統(tǒng)計(jì)進(jìn)
38、入該功能,可以選擇是否繼續(xù)</p><p><b> 圖4.2.6</b></p><p> 4.2.6學(xué)生信息的輸入輸出</p><p> 輸出每個(gè)學(xué)生的學(xué)號(hào)、姓名、各科考試成績(jī),以及每門(mén)課程的總分和平均分測(cè)試</p><p> 輸入學(xué)生個(gè)人信息后,進(jìn)入菜單選擇界面,選擇菜單代碼1,則完成此功能。選擇是否繼續(xù),
39、進(jìn)行其他操作。</p><p><b> 圖4.2.6.</b></p><p> 將每個(gè)學(xué)生的記錄信息寫(xiě)入文件測(cè)試</p><p> 輸入學(xué)生個(gè)人信息后,進(jìn)入菜單選擇界面,選擇菜單代碼2,則完成此功能。選擇是否繼續(xù),進(jìn)行其他操作。</p><p><b> 圖4.2.6.2</b><
40、/p><p> 從文件中讀出每個(gè)學(xué)生的記錄信息并顯示測(cè)試</p><p> 輸入學(xué)生個(gè)人信息后,進(jìn)入菜單選擇界面,選擇菜單代碼3,則完成此功能。選擇是否繼續(xù),進(jìn)行其他操作。</p><p><b> 圖4.2.5.3</b></p><p> 5 課程設(shè)計(jì)遇到的問(wèn)題及解決方法</p><p>
41、 (1)在建立二級(jí)菜單是定義錯(cuò)誤</p><p> 問(wèn)題內(nèi)容:在switch選擇語(yǔ)句中定義變量,導(dǎo)致程序出錯(cuò);</p><p> 問(wèn)題分析:switch選擇語(yǔ)句中不能定義變量;</p><p> 解決方法:重新定義變量在switch選擇語(yǔ)句前,同時(shí)修改二級(jí)菜單選擇的變量與一級(jí)菜單選擇的變量不同。</p><p> ?。?)輸出統(tǒng)計(jì)成績(jī)
42、百分比時(shí)錯(cuò)誤</p><p> 問(wèn)題內(nèi)容:將第一門(mén)成績(jī)輸出錯(cuò)誤,而后面課程的成績(jī)百分比變?yōu)榍耙婚T(mén)成績(jī)的百分比</p><p> 問(wèn)題分析:學(xué)生成績(jī)與學(xué)號(hào)的混淆,系統(tǒng)錯(cuò)將學(xué)號(hào)為學(xué)生成績(jī);</p><p> 解決方法:修改學(xué)生成績(jī)的輸出方式,將循環(huán)輸出是定義的j=0改為j=1,輸出的j<3改為j<4。</p><p><b
43、> 6 課程設(shè)計(jì)總結(jié)</b></p><p> 在結(jié)束了一個(gè)學(xué)年的C語(yǔ)言學(xué)習(xí)后,在下學(xué)期結(jié)束后我們迎來(lái)了為期一周的C語(yǔ)言程序設(shè)計(jì)的實(shí)訓(xùn),嘗試去編輯一個(gè)比以前復(fù)雜而且較長(zhǎng)的程序。在和同學(xué)討論、分工合作,終于做出了這個(gè)讓我們滿意的成果。短短的一個(gè)星期的設(shè)計(jì)讓我有了和以前的不一樣的感受。以前做的程序短小而且內(nèi)容少,就一兩個(gè)知識(shí)點(diǎn)。而這次的程序整整結(jié)合一個(gè)學(xué)年所學(xué)到知識(shí),要在其中選擇最好最方便的方法
44、。通過(guò)C語(yǔ)言實(shí)訓(xùn),讓我加深了對(duì)C語(yǔ)言的了解,而不只是單單的在課本中學(xué)到的那些理論,平時(shí)乏味的課程,通過(guò)自己動(dòng)手親自編寫(xiě),變的生動(dòng)有趣,而在自己動(dòng)手的過(guò)程中,出現(xiàn)的問(wèn)題很多,比理論要難的多,當(dāng)一個(gè)程序?qū)懲暌院螅?jīng)常會(huì)有很多錯(cuò)誤而沒(méi)法解決。不過(guò),通過(guò)幾天的實(shí)訓(xùn),逐漸積攢了一些經(jīng)驗(yàn),有些錯(cuò)誤可以很快就看出來(lái)。對(duì)于這次的實(shí)訓(xùn),我有很大的收獲,對(duì)于C語(yǔ)言有了更深度的了解,平時(shí)在課堂上學(xué)習(xí)的理論知識(shí)可以轉(zhuǎn)化為一些實(shí)際的技能。但一個(gè)程序出錯(cuò)時(shí),會(huì)去仔
45、細(xì)的觀察,思考,找出程序的錯(cuò)誤點(diǎn)并修改;但程序成功運(yùn)行時(shí)會(huì)有一種自豪感。通過(guò)短短的幾天,我認(rèn)識(shí)到了我以前學(xué)習(xí)的不足之處,處在的問(wèn)題,在老師和同學(xué)的幫助下去改正。我相信這將是我學(xué)習(xí)C語(yǔ)言中的一個(gè)里程碑,它將促進(jìn)我以后</p><p><b> 參考文獻(xiàn)</b></p><p> 1. 吉順如,陶恂,曾祥緒.C程序設(shè)計(jì)教程與實(shí)驗(yàn).清華大學(xué)出版社.2011</p&
46、gt;<p> 2. 吉順如,計(jì)春雷.C程序設(shè)計(jì)習(xí)題集與課程設(shè)計(jì)指導(dǎo).電子工業(yè)出版社.2012</p><p> 3. 程序設(shè)計(jì)語(yǔ)言. 百度百科.</p><p> http://baike.baidu.com/view/128511.htm?fr=aladdin</p><p><b> 附錄源代碼</b></p&
47、gt;<p> #include<stdio.h> </p><p> #include<stdlib.h> </p><p> #include<string.h> </p><p> #define NUM_N 30 </p><p> #define N 100 </p&
48、gt;<p> #define SCORE_N 7 </p><p> #define COURSE_N 6</p><p> typedef struct student /*聲明一個(gè)結(jié)構(gòu)體模板STUDENT*/ </p><p><b> { </b></p><p> char n
49、ame[NUM_N]; </p><p> int score[SCORE_N]; </p><p> float averstudent; </p><p> }STUDENT; </p><p> int Input(STUDENT stu[],int n); /*函數(shù)原型聲明*/ </p>
50、<p> int Refernum(STUDENT stu[],int n); </p><p> int Refername(STUDENT stu[],int n); </p><p> void Print(STUDENT stu[],int n); </p><p> void High(STUDENT stu[],STUDENT b[]
51、,int n); </p><p> void Down(STUDENT stu[],STUDENT b[],int n); </p><p> void Score(STUDENT stu[],STUDENT b[],int n); </p><p> void SortString(STUDENT stu[],STUDENT b[],int n); <
52、;/p><p> void Sum(STUDENT stu[],int n,int coursesum[]); </p><p> void Count(STUDENT stu[],int n); </p><p> void Printf(STUDENT stu[],int n,float avercourse[],int coursesum[]); <
53、/p><p> void Average(STUDENT stu[],int n,float avercourse[],int coursesum[]); </p><p> void Writetofile(STUDENT stu[],FILE *fp,int n); </p><p> void Readfromfile(FILE *fp,int n); &l
54、t;/p><p> void main() </p><p><b> {</b></p><p> int coursesum[COURSE_N]={0},count[NUM_N][COURSE_N]={0};</p><p> float avercourse[NUM_N]; </p&g
55、t;<p> int i,j,p,n,op,r=0,m; </p><p> char answer='Y';</p><p> FILE *fp; </p><p> STUDENT stu[NUM_N]; </p><p> STUDENT b[NUM_N]; </p><
56、p><b> menu:; </b></p><p> system("cls"); </p><p> printf(" *歡迎使用學(xué)生成績(jī)管理系統(tǒng)*\n"); </p><p> printf("\n"); </p><p> pr
57、intf(" 歡迎使用如下菜單\n"); </p><p> printf("\n"); </p><p> printf(" 1.錄入每個(gè)學(xué)生的學(xué)號(hào)、姓名、各科考試成績(jī)\n"); </p><p> printf(" 2.計(jì)算成績(jī)\n"); </p><
58、p> printf(" 3.排名\n"); </p><p> printf(" 4.查詢\n"); </p><p> printf(" 5.統(tǒng)計(jì)\n"); </p><p> printf(" 6.輸入輸出\n"); </p><p> p
59、rintf(" 0.退出\n"); </p><p> printf("\n"); </p><p><b> choose:;</b></p><p> printf("請(qǐng)輸入你的選擇:\n"); </p><p> scanf("%d&qu
60、ot;,&op); </p><p> if(op!=1&&op!=13&&r==0) </p><p><b> { </b></p><p> printf("請(qǐng)先輸入學(xué)號(hào)、姓名、各科成績(jī)!"); </p><p><b> r++; &
61、lt;/b></p><p> goto choose; </p><p><b> } </b></p><p><b> else </b></p><p><b> {</b></p><p><b> r++; <
62、;/b></p><p> goto start; </p><p><b> } </b></p><p><b> do{ </b></p><p> answer='N'; </p><p> printf("請(qǐng)輸入你的選擇
63、:\n"); </p><p> scanf("%d",&op); </p><p><b> start:; </b></p><p> switch(op) </p><p><b> {</b></p><p> case
64、 1: n=Input(stu,n);break; /*調(diào)用Input函數(shù)*/</p><p> case 2: printf("1.計(jì)算每門(mén)課程的總分和平均分\n");</p><p> printf("2.計(jì)算每個(gè)學(xué)生的總分和平均分\n");</p><p> printf("請(qǐng)輸入你的選擇:\n&
65、quot;); </p><p> scanf("%d",&m);</p><p><b> switch(m)</b></p><p><b> {</b></p><p> case 1: printf("計(jì)算每門(mén)課程的總分和平均分\n"
66、); /*調(diào)用Sum和Average函數(shù)*/</p><p> Sum(stu,n,coursesum); </p><p> for(i=0;i<3;i++) </p><p> printf("課程[%d]總分=%d\n",i,coursesum[i]); </p><p> Average(st
67、u,n,avercourse,coursesum);</p><p> for(i=0;i<3;i++) </p><p> printf("課程[%d]平均分=%f\n",i,avercourse[i]); </p><p><b> break; </b></p><p><
68、b> case 2: </b></p><p> printf("計(jì)算每個(gè)學(xué)生的總分和平均分\n"); /*調(diào)用Sum和Average函數(shù)*/</p><p> Sum(stu,n,coursesum); </p><p> for(i=0;i<n;i++) </p><p> p
69、rintf("學(xué)生%d總分=%d\n",i+1,stu[i].score[4]); </p><p> Average(stu,n,avercourse,coursesum); </p><p> for(i=0;i<n;i++) </p><p> printf("學(xué)生%d平均分=%f\n",i+1,stu[i
70、].averstudent); </p><p><b> break;</b></p><p><b> }</b></p><p><b> break;</b></p><p> case 3: printf("1.按每個(gè)學(xué)生的總分由高到低排出名次表\
71、n");</p><p> printf("2.按每個(gè)學(xué)生的總分由低到高排出名次表\n");</p><p> printf("3.按學(xué)號(hào)由小到大排出成績(jī)表\n");</p><p> printf("4.按姓名的字典順序排出成績(jī)表\n");</p><p> pr
72、intf("請(qǐng)輸入你的選擇:\n"); </p><p> scanf("%d",&m);</p><p><b> switch(m)</b></p><p><b> {</b></p><p><b> case 1:</
73、b></p><p> printf("按每個(gè)學(xué)生的總分由高到低排出名次表\n"); /*調(diào)用Sum、High函數(shù)*/</p><p> Sum(stu,n,coursesum); </p><p> High(stu,b,n); </p><p> Print(stu,n); </p>&l
74、t;p><b> break; </b></p><p><b> case 2: </b></p><p> printf("按每個(gè)學(xué)生的總分由低到高排出名次表\n"); /*調(diào)用Sum、Down函數(shù)*/</p><p> Sum(stu,n,coursesum); </p
75、><p> Down(stu,b,n);</p><p> Print(stu,n); </p><p><b> break; </b></p><p><b> case 3:</b></p><p> printf("按學(xué)號(hào)由小到大排出成績(jī)表\n&quo
76、t;); /*調(diào)用Score函數(shù)*/</p><p> Score(stu,b,n); </p><p> Print(stu,n); </p><p><b> break; </b></p><p><b> case 4: </b></p><p> p
77、rintf("按姓名的字典順序排出成績(jī)表\n"); /*調(diào)用Sum、SortString函數(shù)*/</p><p> Sum(stu,n,coursesum); </p><p> SortString(stu,b,n); </p><p> printf("姓名 學(xué)號(hào) 物理 數(shù)學(xué) 英語(yǔ) 總分\n"); </
78、p><p> for(i=0;i<n;i++) </p><p><b> { </b></p><p> puts(stu[i].name); </p><p> for(j=0;j<5;j++) </p><p><b> { </b></p&
79、gt;<p> printf("%6ld",stu[i].score[j]); </p><p><b> } </b></p><p> printf("\n"); </p><p><b> }</b></p><p><b&
80、gt; break;</b></p><p><b> }</b></p><p><b> break;</b></p><p> case 4: printf("1.按學(xué)號(hào)查詢學(xué)生排名及其考試成績(jī)\n");</p><p> printf("
81、2.按姓名查詢學(xué)生排名及其考試成績(jī)\n");</p><p> printf("請(qǐng)輸入你的選擇:\n"); </p><p> scanf("%d",&m);</p><p><b> switch(m)</b></p><p><b> {&l
82、t;/b></p><p><b> case 1:</b></p><p> Sum(stu,n,coursesum); /*調(diào)用Sum、High和Refernum函數(shù)*/</p><p> High(stu,b,n); </p><p> printf("按學(xué)號(hào)查詢學(xué)生排名及其考試成績(jī)
83、\n"); </p><p> i=Refernum(stu,n); </p><p> if(i!=-1) </p><p><b> { </b></p><p> printf("姓名 學(xué)號(hào) 物理 數(shù)學(xué) 英語(yǔ) 總分 名次\n"); </p><p>
84、 for(j=0;j<5;j++) </p><p> printf("%6ld",stu[i].score[j]); </p><p> printf("%6ld\n",i+1); </p><p><b> } </b></p><p> else prin
85、tf("查無(wú)此人\n"); </p><p><b> break; </b></p><p><b> case 2: </b></p><p> printf("按姓名查詢學(xué)生排名及其考試成績(jī)\n"); /*調(diào)用Sum、High和Refername函數(shù)*/</
86、p><p> Sum(stu,n,coursesum); </p><p> High(stu,b,n); </p><p> i=Refername(stu,n); </p><p><b> if(i!=-1)</b></p><p><b> { </b><
87、;/p><p> printf("姓名 學(xué)號(hào) 物理 數(shù)學(xué) 英語(yǔ) 總分 名次\n"); </p><p> printf("%s",stu[i].name); </p><p> for(j=0;j<5;j++) </p><p> printf("%6ld",stu[i]
88、.score[j]); </p><p> printf("%6ld\n",i+1); </p><p><b> } </b></p><p> else printf("查無(wú)此人\n"); </p><p><b> break; </b><
89、;/p><p><b> }</b></p><p><b> break;</b></p><p> case 5: </p><p> printf("按優(yōu)秀、良好、中等、及格、不及格對(duì)每門(mén)課程分別統(tǒng)計(jì)人數(shù)及其所占百分比\n"); /*調(diào)用Count函數(shù)
90、*/</p><p> Count(stu,n); </p><p><b> break;</b></p><p> case 6: printf("1.輸出每個(gè)學(xué)生的學(xué)號(hào)、姓名、各科考試成績(jī),每門(mén)課程的總分和平均分\n");</p><p> printf("2.將每個(gè)學(xué)生的
91、記錄信息寫(xiě)入文件\n");</p><p> printf("3.文件中讀出每個(gè)學(xué)生的記錄信息并顯示\n");</p><p> printf("請(qǐng)輸入你的選擇:\n"); </p><p> scanf("%d",&m);</p><p> switch
92、(m)</p><p><b> {</b></p><p><b> case 1:</b></p><p> printf("輸出每個(gè)學(xué)生的學(xué)號(hào)、姓名、各科考試成績(jī),每門(mén)課程的總分和平均分\n"); /*調(diào)用Sum、Average函數(shù)*/</p><p> Sum
93、(stu,n,coursesum); </p><p> Average(stu,n,avercourse,coursesum); </p><p> Printf(stu,n,avercourse,coursesum); </p><p><b> break; </b></p><p><b>
94、case 2: </b></p><p> printf("將每個(gè)學(xué)生的記錄信息寫(xiě)入文件\n"); /*調(diào)用Sum、Average和Writeotfile函數(shù)*/</p><p> Sum(stu,n,coursesum); </p><p> Average(stu,n,avercourse,coursesum);<
95、;/p><p> Writetofile(stu,fp,n); </p><p><b> break; </b></p><p><b> case 3: </b></p><p> printf("文件中讀出每個(gè)學(xué)生的記錄信息并顯示\n"); /*調(diào)用Readfrom
96、eile函數(shù)*/</p><p> Readfromfile(fp,n); </p><p><b> break; </b></p><p><b> }</b></p><p><b> break;</b></p><p><b>
97、; case 0: </b></p><p> if(op==0) goto end; </p><p><b> break; </b></p><p><b> } </b></p><p> printf("您還需要繼續(xù)嗎?(回答Y或N)");
98、</p><p> scanf("%c%c",&p,&answer); </p><p> if(answer=='N') goto end; </p><p> else goto menu; </p><p> }while(op!=0); </p><p&
99、gt;<b> end:; </b></p><p> printf("感謝您的使用,下次再見(jiàn)!\n"); </p><p><b> } </b></p><p> int Input(STUDENT stu[],int n) /*輸入函數(shù)*/</p><p>
100、<b> { </b></p><p><b> int i; </b></p><p> printf("總?cè)藬?shù):\n"); </p><p> scanf("%d",&n); </p><p> while (n>30) <
101、;/p><p><b> { </b></p><p> printf("人數(shù)應(yīng)小于30\n"); </p><p> printf("總?cè)藬?shù):\n"); </p><p> scanf("%d",&n); </p><p>
102、;<b> } </b></p><p> printf("姓名 學(xué)號(hào) 物理 數(shù)學(xué) 英語(yǔ)\n"); </p><p> for(i=0;i<n;i++) </p><p><b> { </b></p><p> scanf("%s %d %d %d
103、%d",&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]); </p><p><b> } </b></p><p> return(n); </p><p><b>
104、; } </b></p><p> void Print(STUDENT stu[],int n) /*輸出函數(shù)*/</p><p><b> { </b></p><p> int i,j; </p><p> printf("姓名 學(xué)號(hào) 物理 數(shù)學(xué) 英語(yǔ) 總分\n"
105、); </p><p> for(i=0;i<n;i++) </p><p><b> { </b></p><p> printf("%s",stu[i].name); </p><p> for(j=0;j<5;j++)</p><p><b&g
106、t; { </b></p><p> printf("%6ld",stu[i].score[j]); </p><p><b> } </b></p><p> printf("\n"); </p><p><b> } </b>&l
107、t;/p><p><b> } </b></p><p> void Sum(STUDENT stu[],int n,int coursesum[]) /*計(jì)算成績(jī)總和*/</p><p><b> { </b></p><p> int i,j; </p>
108、;<p> for(j=1;j<4;j++) /*計(jì)算每門(mén)課程成績(jī)總和*/ </p><p><b> { </b></p><p> coursesum[j-1]=0; </p><p> for(i=0;i<n;i++) </p><p><b> { <
109、;/b></p><p> coursesum[j-1]=coursesum[j-1]+stu[i].score[j]; </p><p><b> } </b></p><p><b> } </b></p><p> for(i=0;i<n;i++) /*計(jì)算每個(gè)學(xué)生
110、成績(jī)總和*/ </p><p><b> { </b></p><p> stu[i].score[4]=0; </p><p> for(j=1;j<4;j++) </p><p><b> { </b></p><p> stu[i].score
111、[4]=stu[i].score[4]+stu[i].score[j]; </p><p><b> } </b></p><p><b> } </b></p><p><b> } </b></p><p> void Average(STUDENT stu[]
112、,int n,float avercourse[],int coursesum[]) /*計(jì)算平均分?jǐn)?shù)*/</p><p><b> { </b></p><p><b> int i; </b></p><p> for (i=0;i<3;i++) </p><p><b
113、> { </b></p><p> avercourse[i]=(float)coursesum[i]/n; /*計(jì)算每門(mén)課程平均分*//*強(qiáng)制類型轉(zhuǎn)換*/</p><p> stu[i].averstudent=(float)stu[i].score[4]/3; /*計(jì)算每個(gè)學(xué)生平均分*//*強(qiáng)制類型轉(zhuǎn)換*/</p><p><
114、b> } </b></p><p><b> } </b></p><p> void High(STUDENT stu[],STUDENT b[],int n) /*按總分由高到低排列*/</p><p><b> { </b></p><p> int i,s
115、=0; </p><p><b> do{ </b></p><p> for(i=0;i<n-1;i++) </p><p><b> { </b></p><p> if (stu[i].score[4]<stu[i+1].score[4]) </p>&l
116、t;p><b> { </b></p><p> b[i]=stu[i]; </p><p> stu[i]=stu[i+1]; </p><p> stu[i+1]=b[i]; </p><p><b> } </b></p><p><b>
117、 } </b></p><p><b> s++; </b></p><p> }while(s<n); </p><p><b> } </b></p><p> void Down(STUDENT stu[],STUDENT b[],int n) /*按學(xué)生成績(jī)
118、由低到高排列*/</p><p><b> { </b></p><p> int i,s=0; </p><p><b> do{ </b></p><p> for(i=0;i<n-1;i++) </p><p><b> { </b&
119、gt;</p><p> if (stu[i].score[4]>stu[i+1].score[4]) </p><p><b> { </b></p><p> b[i]=stu[i]; </p><p> stu[i]=stu[i+1]; </p><p> stu[i+1
120、]=b[i]; </p><p><b> } </b></p><p><b> } </b></p><p><b> s++; </b></p><p> }while(s<n); </p><p><b> } <
121、;/b></p><p> void Score(STUDENT stu[],STUDENT b[],int n) /*按學(xué)號(hào)由小到大排列*/</p><p><b> { </b></p><p> int i,s=0; </p><p><b> do{ </b></p
122、><p> for(i=0;i<n-1;i++) </p><p><b> { </b></p><p> if (stu[i].score[0]>stu[i+1].score[0]) </p><p><b> { </b></p><p> b[i
123、]=stu[i]; </p><p> stu[i]=stu[i+1]; </p><p> stu[i+1]=b[i]; </p><p><b> } </b></p><p><b> } </b></p><p><b> s++; </b
124、></p><p> }while(s<n); </p><p><b> } </b></p><p> void SortString(STUDENT stu[],STUDENT b[],int n) /*按姓名的字典順序排出成績(jī)表*/ </p><p><b> { <
125、;/b></p><p> int i,j; </p><p> for(i=0;i<n-1;i++) </p><p><b> { </b></p><p> for(j=i+1;j<n;j++) </p><p><b> { </b>
126、</p><p> if(strcmp(stu[j].name,stu[i].name)<0) </p><p><b> { </b></p><p> b[i]=stu[i]; </p><p> stu[i]=stu[i+1];</p><p> stu[i+1]=b[i]
127、; </p><p><b> } </b></p><p><b> } </b></p><p><b> } </b></p><p><b> } </b></p><p> int Refernum(STU
128、DENT stu[],int n) /*按學(xué)號(hào)查詢學(xué)生排名及其各科考試成績(jī)*/ </p><p><b> { </b></p><p> int i=0,t,num1; </p><p> printf("請(qǐng)輸入所要查詢的學(xué)號(hào):"); </p><p> scanf("%d
129、",&num1); </p><p><b> do{ </b></p><p> if(i<=n) </p><p><b> { </b></p><p> if(stu[i].score[0]==num1) </p><p><
130、;b> { </b></p><p> return i; </p><p><b> t=1; </b></p><p><b> } </b></p><p> else t=0; </p><p><b> i++; </
131、b></p><p><b> } </b></p><p><b> else { </b></p><p><b> t=1; </b></p><p> return -1; </p><p><b> } </b
132、></p><p> }while(t==0); </p><p><b> } </b></p><p> int Refername(STUDENT stu[],int n) /*按姓名查詢學(xué)生排名及其各科考試成績(jī)*/ </p><p><b> { </b></p
133、><p> int i=0,j,t; </p><p> char prt[NUM_N]; </p><p> printf("請(qǐng)輸入需要查找的姓名\n"); </p><p> scanf("%c",&j); </p><p> gets(prt); <
134、/p><p><b> do{ </b></p><p><b> if(i<=n) </b></p><p><b> { </b></p><p> if(strcmp(stu[i].name,prt)==0) </p><p><
135、;b> { </b></p><p> return i; </p><p><b> t=1; </b></p><p><b> } </b></p><p> else t=0; </p><p><b> i++; <
136、/b></p><p><b> } </b></p><p><b> else { </b></p><p><b> t=1; </b></p><p> return -1; </p><p><b> } </
137、b></p><p> }while(t==0); </p><p><b> } </b></p><p> void Count(STUDENT stu[],int n) /*按優(yōu)秀、良好、中等、及格、不及格對(duì)每門(mén)課程分別統(tǒng)計(jì)人數(shù)及其所占百分比*/ </p><p><b> { &
138、lt;/b></p><p> int i,j,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0,grade; </p><p> double n1,n2,n3,n4,n5; </p><p> for(j=1;j<4;j++) </p><p><b> { </b><
139、/p><p> for(i=0;i<n;i++) </p><p><b> { </b></p><p> grade=stu[i].score[j]/10; </p><p> switch (grade) </p><p><b> { </b><
140、/p><p> case 10: </p><p> case 9: sum1= sum1+1; break; </p><p> case 8: sum2= sum2+1; break; </p><p> case 7: sum3= sum3+1; break; </p><p> case
141、 6: sum4= sum4+1; break; </p><p> case 5: </p><p> case 4: </p><p> case 3: </p><p> case 2: </p><p> case 1: </p><p>
142、 case 0:sum5= sum5+1; break; </p><p><b> } </b></p><p><b> } </b></p><p> n1=(double)sum1/(double)n; </p><p> n2=(double)sum2/(double)n;
143、</p><p> n3=(double)sum3/(double)n; </p><p> n4=(double)sum4/(double)n; </p><p> n5=(double)sum5/(double)n; </p><p> printf("第%d門(mén)\n",j); </p><
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告-學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告--學(xué)生成績(jī)管理系統(tǒng)
- 課程設(shè)計(jì)報(bào)告---學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 《學(xué)生成績(jī)管理系統(tǒng)》課程設(shè)計(jì)報(bào)告
- vb學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告---學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告 (2)
- java學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- java學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告 (3)
- c課程設(shè)計(jì)報(bào)告--學(xué)生成績(jī)管理系統(tǒng)
- java學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告.doc
- vfp課程設(shè)計(jì)報(bào)告---學(xué)生成績(jī)管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論