2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論