c語言課程設(shè)計---班級成績管理系統(tǒng) (2)_第1頁
已閱讀1頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  課 程 設(shè) 計 報 告</p><p>  課程名稱 C語言程序設(shè)計 </p><p>  課題名稱 班級成績管理系統(tǒng) </p><p>  專 業(yè) 建筑環(huán)境與設(shè)備工程 </p><p>  班 級

2、 </p><p>  學(xué) 號 </p><p>  姓 名 </p><p>  指導(dǎo)教師 </p><p>  2013年 6 月 20 日</p><p><b&

3、gt;  目錄</b></p><p><b>  一、引言1</b></p><p><b>  二、總體設(shè)計2</b></p><p><b>  三、詳細設(shè)計4</b></p><p>  四、問題分析及總結(jié)13</p><p>

4、;<b>  五、附件15</b></p><p>  一、設(shè)計內(nèi)容與設(shè)計要求</p><p>  1. 設(shè)計內(nèi)容:班級成績管理系統(tǒng)設(shè)計</p><p><b>  涉及的知識點:</b></p><p> ?、僬莆詹⑹炀氝\用C語言的基本數(shù)據(jù)類型與各種表達式,程序的流程控制語句;</p>

5、;<p>  ②掌握數(shù)組的基本概念。熟練掌握一維數(shù)組、二維數(shù)組的應(yīng)用、掌握字符數(shù)組</p><p>  與字符串的關(guān)系以及字符串的簡單處理。</p><p>  ③掌握函數(shù)的定義,函數(shù)的返回值,函數(shù)的調(diào)用,函數(shù)的形式參數(shù)和實際參數(shù)之間的關(guān)系;掌握變量的作用域與生存期,了解函數(shù)的作用域。</p><p> ?、苷莆战Y(jié)構(gòu)體的概念,結(jié)構(gòu)體類型的定義,結(jié)構(gòu)體變

6、量的定義和初始化,結(jié)構(gòu)體成員的表示,結(jié)構(gòu)體變量的賦值含義,結(jié)構(gòu)體與指針、函數(shù)的關(guān)系。</p><p> ?、菡莆瘴募⑽募愋椭羔樀幕靖拍?,熟練掌握文件的打開與關(guān)閉以及文件的建立、讀寫等有關(guān)操作。</p><p><b>  2.設(shè)計要求:</b></p><p>  用C語言實現(xiàn)系統(tǒng);利用結(jié)構(gòu)體數(shù)組實現(xiàn)班級成績的數(shù)據(jù)結(jié)構(gòu)設(shè)計;系統(tǒng)的各個功能

7、模塊要求用函數(shù)的形式實現(xiàn);應(yīng)提供一個界面來調(diào)用各個功能,調(diào)用界面和各個功能的操作界面應(yīng)盡可能清晰美觀;各項顯示數(shù)據(jù)均要求以表格的形式輸出;在各功能子模塊中應(yīng)設(shè)計相應(yīng)的二級菜單。</p><p>  2) 建立一個班級學(xué)生成績數(shù)據(jù)庫,文件名為bjcjk.txt,并從該文件中讀取數(shù)據(jù);</p><p>  3) 班級成績管理系統(tǒng)應(yīng)能提供以下功能:</p><p>  (

8、1)主菜單界面設(shè)計。通過提示用戶輸入一個數(shù)字選項,調(diào)用相應(yīng)的功能函數(shù)。</p><p>  (2)學(xué)生成績顯示:完成班級全部學(xué)生成績的顯示,顯示時按表格的形式,且應(yīng)有表頭;</p><p>  (3)學(xué)生成績追加:完成新增一個(或多個)學(xué)生的成績記錄,要求在追加過程中有相應(yīng)的提示信息,完成追加后能重新計算學(xué)生平均成績并顯示;</p><p>  (4)學(xué)生成績修改:

9、要求能按學(xué)號和按姓名兩種定位方式,且可以按用戶要求修改記錄中除學(xué)號和姓名以外的指定內(nèi)容,并重新計算學(xué)生的平均成績;</p><p>  (5)學(xué)生成績信息的查詢;要示系統(tǒng)能按學(xué)號、按姓名查詢以及能查總分在某一指定范圍內(nèi)的學(xué)生信息,且能顯示符合條件的所的記錄,若所需查詢的信息不存在時應(yīng)有相應(yīng)的提示信息。</p><p>  (6)學(xué)生成績信息的刪除;要求可按指定的學(xué)號和指定的姓名兩種定位方式

10、刪除學(xué)生的成績記錄。</p><p>  (7)要求在刪除模塊、修改模塊和查詢模塊中若找不到所需的記錄時,系統(tǒng)設(shè)計中應(yīng)有一定的提示信息。</p><p>  (8)成績排序:按學(xué)生平均成績進行排序;</p><p><b>  (9)成績統(tǒng)計:</b></p><p> ?、俳y(tǒng)計并以表格的形式顯示所有課程的平均分;<

11、;/p><p> ?、诮y(tǒng)計并顯示選定的某門課程的平均分以及超過該平均分的人數(shù),同時能將超過該平均分的學(xué)生記錄以表格的形式顯示出來。</p><p><b>  4) 說明:</b></p><p>  要求將修改后的數(shù)據(jù)寫入到一個新的數(shù)據(jù)文件nwejck.txt中。</p><p>  對系統(tǒng)有興趣的同學(xué)可以在實現(xiàn)基本要求的

12、基礎(chǔ)上,完善系統(tǒng)的其它功能。</p><p>  5) 班級成績管理系統(tǒng)采用一個結(jié)構(gòu)體數(shù)組,學(xué)生成績數(shù)據(jù)庫結(jié)構(gòu)如下:</p><p>  int xh /*學(xué)號*/</p><p>  char name[10] /*姓名*/</p><p>  double yy

13、 /*英語*/</p><p>  double mat /*數(shù)學(xué)*/</p><p>  double jsj /*計算機*/</p><p>  double wl /*物理*/</p><p>  double zf /*總分*/&l

14、t;/p><p><b>  6) 要求:</b></p><p>  要求每個學(xué)生必須獨立思考,認(rèn)真并按時完成本課程設(shè)計所包含的所有內(nèi)容;</p><p>  要求學(xué)生必須按照課程設(shè)計報告的完整格式說明設(shè)計內(nèi)容,設(shè)計任務(wù)分析過程和算法,給出程序流程圖和全部源程序;</p><p>  設(shè)計報告的完整格式應(yīng)包括以下部分的內(nèi)容

15、:</p><p><b>  系統(tǒng)設(shè)計總體思路;</b></p><p><b>  系統(tǒng)的主要功能;</b></p><p>  系統(tǒng)功能模塊的劃分(要求畫出總體模塊框圖);</p><p>  主要功能的實現(xiàn)和各個程序模塊說明(每個功能模塊的框圖統(tǒng)主模塊的流程圖,各個功能模塊至少要有一個主要的

16、流程圖);</p><p>  程序調(diào)試過程及各模塊調(diào)試中相應(yīng)的部分截圖</p><p><b>  7)成績評定</b></p><p>  ①系統(tǒng)設(shè)計方案是否合理;②程序設(shè)計是否正確;③調(diào)試結(jié)果;④設(shè)計說明書的質(zhì)量高低;⑤答辯時回答問題情況;⑥課程設(shè)計周表現(xiàn)情況;總評成績記入“課程設(shè)計成績評分表”。</p><p>

17、<b>  二、進度安排</b></p><p><b>  上課時間另外安排。</b></p><p>  附:課程設(shè)計報告排版、打印和裝訂要求</p><p>  1. 課程設(shè)計報告裝訂順序:封面、任務(wù)書、目錄、正文、附件、評分表。按A4大小的紙張排版和打印。 </p><p>  2. 設(shè)計

18、報告的頁碼從目錄之后開始使用;</p><p>  3. 正文的格式:一級標(biāo)題用3號黑體,二級標(biāo)題用四號宋體加粗,正文用小四號宋體;行距為22磅。正文中程序清單(英文)用英文字體Times New Roman,單倍行間距。 </p><p>  4. 正文的內(nèi)容:一、課題的主要功能;二、課題的功能模塊的劃分(要求畫出模塊圖);三、主要功能的實現(xiàn)(至少要有一個主要模塊的流程圖);四、程序調(diào)

19、試(各模塊至少有一個程序調(diào)試的截圖);五、總結(jié)(不少于500字);六、參考文獻;七、附件(包含所有程序的原代碼,且程序中應(yīng)有必要的注釋)。八.正文總字?jǐn)?shù)要求在5000字以上(不含程序原代碼)。</p><p>  5.設(shè)計報告中任務(wù)書和評分表不需重新排版。</p><p><b>  一、引言</b></p><p><b>  1.

20、1前言</b></p><p>  C語言課程設(shè)計是對學(xué)生的一種全面綜合訓(xùn)練,它包括問題分析,總體結(jié)構(gòu)設(shè)計,用戶界面設(shè)計,程序設(shè)計基本技能和技巧的培養(yǎng)。是與課堂聽講、自學(xué)和練習(xí)相結(jié)合的必不可少的一個環(huán)節(jié)。課程設(shè)計的課題比平時的習(xí)題復(fù)雜得多,也更接近實際。全面熟悉、掌握C語言基本知識,掌握C程序設(shè)計中的順序、分支、循環(huán)三種結(jié)構(gòu)及數(shù)組、函數(shù)和C語言基本圖形編程等方法,把編程和實際結(jié)合起來,熟悉編制和調(diào)試程

21、序的技巧,掌握分析結(jié)果的若干有效方法,進一步提高上機動手能力,培養(yǎng)使用計算機解決實際問題的能力,養(yǎng)成提供文檔資料的習(xí)慣和規(guī)范編程的思想,為以后在專業(yè)課程中應(yīng)用計算機系統(tǒng)解決計算、分析、實驗和設(shè)計等學(xué)習(xí)環(huán)節(jié)打下較扎實的基礎(chǔ)。</p><p><b>  1.2設(shè)計目的</b></p><p>  隨著電腦技術(shù)的發(fā)展越來越快,管理系統(tǒng)得到人們廣泛的應(yīng)用。本課題中編寫班級成

22、績管理系統(tǒng)主要是為了方便我們能更加高效快捷地管理學(xué)生的各項成績信息,能夠?qū)W(xué)生成績進行追加、修改、刪除等操作。并能對輸入的數(shù)據(jù)進行平均分、總分的計算以及總分的排序,進而清楚明朗地顯示出來。</p><p><b>  二、總體設(shè)計</b></p><p><b>  2.1主要功能</b></p><p>  主要實現(xiàn)對學(xué)

23、生成績信息實現(xiàn)成績的顯示,成績的追加,成績的修改,成績的查詢,成績的刪除,成績的排序和統(tǒng)計等功能。</p><p>  班級成績管理系統(tǒng)具體提供以下功能:</p><p>  a、成績顯示:完成全班同學(xué)全部學(xué)生成績的顯示,以表格形式顯示出來,并帶有表頭。</p><p>  b、成績追加:新增學(xué)生成績記錄,在追加過程中有相應(yīng)的提示信息并實現(xiàn)連續(xù)追加的功能。追加成功的

24、成績能重新計算學(xué)生的平均成績并顯示。</p><p>  c、成績修改:實現(xiàn)按學(xué)號修改和按姓名修改兩種修改方式,并可以對指定的學(xué)生的各科成績進行修改,修改過程中有相應(yīng)的提示信息。修改后能重新計算學(xué)生的平均成績。</p><p>  d、成績刪除:對指定的學(xué)號或者指定的姓名進行定位刪除,并有相應(yīng)的提示信息。</p><p>  e、成績查詢:對指定的學(xué)號或指定的姓名進

25、行定位查詢,并能顯示出符合條件的查詢結(jié)果。查詢的信息不存在時有相應(yīng)的提示信息。</p><p>  f、成績排名:按學(xué)生平均成績進行排序,并以表格形式顯示。</p><p>  g、成績統(tǒng)計:以表格的形式顯示所有課程的平均分,并顯示選定的某門課程的平均分以及超過該平均分的人數(shù),同時將超過該平均分的學(xué)生記錄以表格的形式顯示出來。</p><p><b>  

26、2.2功能模塊劃分</b></p><p> ?。?)本程序由八個模塊構(gòu)成,其中主模塊是由系統(tǒng)函數(shù)搭建而成,其重要功能是顯示出功能主菜單,由用戶作出選擇進入子菜單。在子菜單中操作完畢后,能夠準(zhǔn)確返回到功能主菜單。</p><p>  系統(tǒng)主要模塊流程圖如下:</p><p><b> ?。?)模塊說明</b></p>

27、<p>  主界面 main() 用戶選擇界面</p><p>  顯示模塊 Disp() 顯示所有學(xué)生的成績信息</p><p>  追加模塊 Appe() 添加學(xué)生成績信息</p><p>  修改模塊 Mo

28、di() 修改學(xué)生某項成績信息</p><p>  刪除模塊 Dele() 刪除學(xué)生某項成績信息</p><p>  查詢模塊 Query() 查詢學(xué)生成績信息</p><p>  排序模塊 Sort() 按成績總分排

29、序</p><p>  統(tǒng)計模塊 Total() 統(tǒng)計各科目平均分信息</p><p>  退出模塊 Quit() 退出系統(tǒng)并保存信息</p><p><b>  三、詳細設(shè)計</b></p><p>  3.1主要功能的實現(xiàn)(下面以追加模

30、塊和修改模塊為例)</p><p>  (1)追加模塊流程圖</p><p><b>  修改模塊流程圖</b></p><p><b>  3.2程序調(diào)試</b></p><p>  各模塊運行步驟及界面</p><p>  3.2.1功能主菜單選擇界面</p>

31、<p>  3.2.2顯示模塊(輸入“1”進入全班成績顯示菜單)</p><p>  3.2.2顯示模塊截圖</p><p>  3.2.3追加模塊(在功能主菜單輸入“2”進入成績追加界面,這里輸入一組追加信息后,系統(tǒng)會提示是否繼續(xù)追加,從而實現(xiàn)了“連續(xù)追加”的功能)</p><p>  3.2.4追加模塊截圖</p><p>

32、  (注:這里的總分輸入值為0,因為在該程序中,總分會計算出來)</p><p>  3.2.4修改模塊(在功能主菜單輸入“4”進入成績修改菜單,這里可以根據(jù)學(xué)號和姓名查找到對應(yīng)學(xué)生成績信息進行修改。下面以按姓名修改為例,對姓名為“ww”的學(xué)生的計算機成績進行修改后,系統(tǒng)還能提示是否對該生的其他科目成績進行繼續(xù)修改,實現(xiàn)了“一人多項”的修改功能。修改完系統(tǒng)會退到所有學(xué)生成績菜單,可以清楚地看到修改后的學(xué)生的成績信

33、息)</p><p>  3.2.4修改模塊截圖</p><p>  3.2.5刪除模塊(在功能主菜單輸入“4”進入刪除方式菜單,此功能可以對學(xué)生成績信息進行按學(xué)號刪除和按姓名刪除兩種刪除方式。下面以對姓名為“ww”的學(xué)生成績進行刪除,輸入該生姓名后,系統(tǒng)能顯示該生的各項成績信息,并提示是否確認(rèn)刪除。刪除后,系統(tǒng)還能提示是否繼續(xù)進行刪除操作。這里的刪除模塊實現(xiàn)了“多人多項”的刪除功能,操作

34、使用起來十分便利高效。如果不繼續(xù),選擇“2”能退出到刪除方式菜單,進行接下來的刪除操作)</p><p>  3.2.5刪除模塊截圖</p><p>  3.2.6查詢模塊(在功能主菜單輸入“5”系統(tǒng)進入成績查詢菜單。此功能可以對學(xué)生成績信息按學(xué)號查詢和按姓名查詢,以下以按學(xué)號查詢?yōu)槔?。輸入學(xué)號為“201310”的學(xué)生學(xué)號,系統(tǒng)以表格的形式顯示出該生的成績信息。輸入“1”能返回到查詢菜單繼

35、續(xù)查詢,輸入任意鍵系統(tǒng)退出到主菜單界面)</p><p>  3.2.6查詢模塊截圖</p><p>  3.2.7排序模塊(在功能主菜單輸入“6”進入成績排名的界面,成績排名以總分的高低由高向低以表格的形式顯示出來)</p><p>  3.2.7排序詢模塊截圖</p><p>  3.2.8統(tǒng)計模塊(在功能主菜單輸入“7”進入平均分統(tǒng)計菜

36、單界面,菜單顯示:1、所有課程平均分2、單一課程平均分3、退出。以下輸入“2”進入單一課程平均分界面,菜單界面顯示各科目的選擇列表,輸入“2”查詢數(shù)學(xué)成績的平均分,結(jié)果以表格形式輸出超過該科平均分的學(xué)生信息。查詢完數(shù)學(xué)這項后,還能繼續(xù)對其他科目的平均分統(tǒng)計信息進行查詢。實現(xiàn)了“多次循環(huán)”的功能)</p><p>  3.2.8統(tǒng)計模塊截圖</p><p>  3.2.9退出模塊(在完成對該

37、系統(tǒng)的所有操作后,在功能主菜單界面輸入“8”進入退出界面,如下圖:鍵入任意鍵即可退出該系統(tǒng))</p><p>  3.2.9退出模塊截圖</p><p><b>  四、問題分析及總結(jié)</b></p><p><b>  4.1問題分析</b></p><p>  從接到這個課題開始,我們就開始了為

38、期一周的C語言課程設(shè)計。首先是針對本次課題設(shè)計進行建庫工作,在開始建庫的過程中,就遇到了一點困難。建庫的時候一不留神就會使輸入的數(shù)據(jù)庫前功盡棄,為此嘗試了幾次,最后耐心地一項一項輸才建好庫。針對這個課題,老師給我們分了7人一組的小組進行合作,我在組中主要負責(zé)了修改模塊程序的編寫和整個系統(tǒng)的美化工作。在調(diào)試過程中遇到了不少的錯誤、警告等信息,有時候因為一個符號的失誤導(dǎo)致程序的錯誤達到十幾個。在做完修改模塊后,個人覺得修改的方式還是不夠妥當(dāng)

39、,不能實現(xiàn)多想同時修改而只能一項一項進行修改保存。這是我個人覺得修改模塊存在的值得改進的地方。</p><p><b>  4.2總結(jié)</b></p><p>  學(xué)習(xí)C語言已經(jīng)半年了,半年來,從接觸C語言這門課程到后來逐漸了解這門課程的點滴知識,使我自己對計算機方面的知識有了更加深刻的認(rèn)識。作為一個電腦愛好者,平時和同學(xué)們在一起就喜歡討論java編程和電腦系統(tǒng)方面的

40、知識。從一年前拿到自己的第一臺智能手機刷機開始,漸漸了解一點關(guān)于安卓apk程序的開發(fā)及框架。每次的刷機都會使我自己對安卓系統(tǒng)有進一步的了解,同時,每次解決一個問題,都會有一點點小小的成就感。最近的半年,由于電腦的使用頻率的增加,注意力開始轉(zhuǎn)移到電腦系統(tǒng)的安裝以及自己學(xué)習(xí)封裝win7系統(tǒng)。由于對電腦軟件的使用和電腦知識了解較多,很多同學(xué)們電腦有問題都會找我?guī)兔?,這半年中,拆過許多筆記本電腦,用各種方法裝過很多臺電腦的系統(tǒng),還裝了幾臺機子的

41、內(nèi)存以及對電腦主板上灰塵的進行清理。這些在我看來簡單的操作給我自己帶來了許多快樂,同時也給別人帶去了方便。</p><p>  剛接觸到C語言這門課程時就感覺到了它的難度,但通過漸漸的學(xué)習(xí),我認(rèn)識到了它的重要性,更認(rèn)識到這是一種能力的培養(yǎng)。經(jīng)過幾次的上機操作,看到自己設(shè)計的程序能運行出正確的結(jié)果,開始對C語言產(chǎn)生了興趣。同時,學(xué)習(xí)的東西越來越復(fù)雜,遇到的困難也越來越多。</p><p> 

42、 拿到我們組的課題時,心里十分的沒底,覺得很難不知道該如何下手。原因是自己沒把知識真正學(xué)到手,不知道自己學(xué)的東西能不能用得上。但學(xué)習(xí)就是要不斷的發(fā)現(xiàn)問題,不斷的解決問題的。于是,在試探中開始了建庫的工作。曾以為建庫是很簡單很容易的,但是開始建立的時候,就很容易出錯。通過幾次失敗,幾次重試,終于建好了庫文件。接下來的任務(wù)就是做好我負責(zé)的修改模塊,在做修改模塊的時候,問題的困難程度還是顯現(xiàn)出來了,調(diào)用函數(shù)的時候經(jīng)常出錯。程序運行起來不能對指

43、定的學(xué)生成績信息進行連續(xù)的修改,經(jīng)過同學(xué)們一起努力,慢慢改正了一點錯誤。上機調(diào)試的時候,在指導(dǎo)老師的幫助下逐漸將不能連續(xù)修改的問題解決。接著就遇到了程序運行完畢不能退出到主菜單的問題,在幾次嘗試修改語句后,終于知道了語句缺失的命令,最后完美地解決了這個問題。在解決問題的過程中,對于課堂上學(xué)的for,Switch和while語句還有結(jié)構(gòu)體的使用和指針的用法與作用都有了進一步的認(rèn)識。后來遇到問題的時候,查閱了課本知識,通過網(wǎng)絡(luò)查找到與之類似

44、的問題加以解決。</p><p>  經(jīng)過幾次上機調(diào)試后,其余同學(xué)已經(jīng)將剩下的模塊做得差不多了。但是我發(fā)現(xiàn)一個普遍的問題,那就是所有界面的布局都不夠合理。于是接下來的工作就把各模塊的顯示菜單進行美化,使界面看起來清晰美觀。這個看似簡單的工作做起來卻是很費時間,因為要想把顯示得居中,同時清晰明朗,得加入空格或者是加入“\t”,可能就因為一個空格對不齊就不能很好地顯示對應(yīng)的信息。另外我發(fā)現(xiàn)程序運行界面就是黑白相間,顯

45、得不夠美觀,于是在查閱資料后弄明白了,加入一個頭文件然后再主函數(shù)中加入顏色的調(diào)用命令。在網(wǎng)上查找了關(guān)于顏色的代碼,添加進去后運行界面顯得很漂亮,比以前黑白相間的界面更明朗美觀。</p><p>  一周的時間很快就過去了,C語言答辯安排就在老師安排下開始了。周五上午,我就在機房里完成了答辯?,F(xiàn)在覺得有點遺憾的就是,老師問我的問題因為緊張了一定就沒回答得很好,覺得有點失望。但是我的程序做得還是比較合理,因為在答辯運

46、行時,老師所要求的所有操作我的程序都能實現(xiàn),而且完美無瑕,這讓我覺得付出還是有回報的。</p><p>  經(jīng)過這次的C語言課程設(shè)計,我才真正了解到理論知識轉(zhuǎn)為實踐的重要性。其實從剛接到課題任務(wù)的時候,心里還是有點畏懼的,畢竟這個系統(tǒng)的源程序就有好幾頁,看著就頭痛。但是看著同學(xué)們一個個認(rèn)真的坐在電腦面前幾個小時一點點摸索,自己才開始冷靜地思考著問題。通過自己的努力,同學(xué)們的幫助和老師的指導(dǎo),終于完成了這個課題的設(shè)

47、計任務(wù)。同時,也使我對C語言課程有了更為深刻的認(rèn)識,讓我對自己有了信心。我想,若干年后,當(dāng)看到我做的這份報告,都會是一段美好的回憶。這段短短幾天的努力也會給我動力,給我在以后的學(xué)習(xí)中以鞭策,更加加深我對計算機知識的了解。</p><p><b>  五、附件</b></p><p><b>  源程序清單:</b></p><

48、p>  #include <stdio.h></p><p>  #include <stdlib.h></p><p>  #include <string.h></p><p>  #include <conio.h></p><p><b>  int N=0;</b

49、></p><p>  struct stu</p><p><b>  {</b></p><p>  int xh; /*學(xué)號*/</p><p>  char name[18]; /*姓名*/</p><p>  double yy;

50、 /*英語*/</p><p>  double mat; /*數(shù)學(xué)*/</p><p>  double jsj; /*計算機*/</p><p>  double wl; /*物理*/</p><p>  double zf;

51、 /*總分*/</p><p><b>  }s[20];</b></p><p>  void Re_file()</p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  fp=fo

52、pen("bjcjk.txt","r");</p><p>  while( fscanf(fp,"%d\n%s\n%lf\n%lf\n%lf\n%lf\n%lf\n",&s[N].xh,s[N].name,&s[N].yy,&s[N].mat,&s[N].jsj,&s[N].wl,&s[N].zf)!=E

53、OF) N++;</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void Wr_file()</p><p><b>  {int i;</b></p><p><b>  FILE *fp;</b&g

54、t;</p><p>  fp=fopen("nwejck.txt","w");</p><p>  for(i=0;i<N;i++)</p><p>  fprintf(fp,"%d\n%s\n%lf\n%lf\n%lf\n%lf\n%lf\n",s[i].xh,s[i].name,s[i].yy,

55、s[i].mat,s[i].jsj,s[i].wl,s[i].zf);</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void Js() /*計算總分*/</p><p><b>  {int i;</b></p>&

56、lt;p>  for(i=0;i<N;i++)</p><p>  s[i].zf=s[i].yy+s[i].mat+s[i].jsj+s[i].wl;</p><p>  } </p><p>  void Sort() /*排序模塊*/</p><p><b>  {int j,k;<

57、/b></p><p>  double ave[20],t;</p><p>  struct stu m;</p><p><b>  Js();</b></p><p>  for(k=0;k<N;k++)</p><p>  ave[k]=s[k].zf/4;

58、/*計算平均分*/</p><p>  for(k=0;k<N-1;k++)</p><p>  for(j=k+1;j<N;j++)</p><p>  if(ave[k]<ave[j])</p><p>  { t=ave[k];ave[k]=ave[j];ave[j]=t; /*對平均分排序*/</p&

59、gt;<p>  m=s[k];s[k]=s[j];s[j]=m; } /*按平均分整體排序*/</p><p><b>  }</b></p><p>  void Disp() /*顯示模塊*/</p><p><b>  {</b></p><p><b

60、>  Js();</b></p><p><b>  int i;</b></p><p>  printf("\n\t\t\t\t全班學(xué)生成績表\n");</p><p>  printf("\t -------------------------------------------------

61、-------------\n");</p><p>  printf("\t 學(xué)號 姓名 英語 數(shù)學(xué) 計算機 物理 總分 平均分 \n");</p><p>  printf("\t --------------------------------------------------------------\

62、n");</p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p>  printf("\t %d\t %s\t %.1lf\t %.1lf\t %.1lf\t %.1lf\t %.1lf %.1lf\n",s[i].xh,s[i].name,s[i].

63、yy,s[i].mat,s[i].jsj,s[i].wl,s[i].zf,s[i].zf/4);</p><p>  printf("\t --------------------------------------------------------------\n");</p><p><b>  }</b></p><p&

64、gt;  printf("按回車鍵返回主菜單:");</p><p>  getchar();</p><p><b>  }</b></p><p>  void Total() /*統(tǒng)計模塊*/</p><p><b>  {</b></p><

65、p>  double av[4]={0.0};</p><p>  int xz,sum0,sum1,sum2,sum3; </p><p><b>  int xz2;</b></p><p><b>  int k,i;</b></p><p>  sum0=sum1=sum2=sum3

66、=0;</p><p>  for(k=0;k<N;k++) /*計算各科課程平均分*/</p><p>  {av[0]+=s[k].yy;</p><p>  av[1]+=s[k].mat;</p><p>  av[2]+=s[k].jsj;</p><p>  av[3]+=s

67、[k].wl;</p><p><b>  }</b></p><p>  av[0]=av[0]/N;</p><p>  av[1]=av[1]/N;</p><p>  av[2]=av[2]/N;</p><p>  av[3]=av[3]/N;</p><p> 

68、 for(k=0;k<N;k++) /*比較學(xué)生各科成績與平均成績*/</p><p><b>  {</b></p><p>  if(s[k].yy>av[0]) sum0++;</p><p>  if(s[k].mat>av[1]) sum1++;</p><p> 

69、 if(s[k].jsj>av[2]) sum2++;</p><p>  if(s[k].wl>av[3]) sum3++;</p><p><b>  }</b></p><p><b>  while(1)</b></p><p>  {

70、 /*統(tǒng)計菜單一*/ </p><p>  printf("\n\n\n");</p><p>  printf(" 平均分統(tǒng)計菜單\n");</p><p>  printf(" ******************

71、****************\n"); </p><p>  printf(" *--------------------------------*\n");</p><p>  printf(" * 1.所有課程平均分 *\n");</p

72、><p>  printf(" * 2.單一課程平均分 *\n");</p><p>  printf(" * 3.退出 *\n");</p><p>  printf("

73、 *--------------------------------*\n");</p><p>  printf(" **********************************\n");</p><p>  printf("\n\n");</p><p&g

74、t;  printf("請輸入您要統(tǒng)計的方式:");</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  scanf("%d",&xz);</p><p>  if(xz==1 ||xz==

75、2 || xz==3 ) break;</p><p>  else printf("\n\n\n\n 輸入錯誤!請重新輸入!");</p><p><b>  break; </b></p><p><b>  }</b></p><p>

76、;<b>  if(xz==1)</b></p><p><b>  {</b></p><p>  printf("\n\n\n");</p><p>  printf(" 各科成績平均分\n");</p><p&

77、gt;  printf(" ---------------------------------------------\n");</p><p>  printf(" 英語 計算機 數(shù)學(xué) 物理\n");</p><p>  printf(" -----------

78、----------------------------------\n");</p><p>  printf(" %10.1f%10.1f%10.1f%10.1f\n",av[0],av[1],av[2],av[3]);</p><p>  printf(" -----------------------------

79、----------------\n");</p><p><b>  }</b></p><p><b>  if(xz==2)</b></p><p><b>  {</b></p><p><b>  while(1)</b></p&

80、gt;<p><b>  {</b></p><p>  printf("\n 各科成績平均分統(tǒng)計:\n"); /*統(tǒng)計菜單二*/ </p><p>  printf(" **********************************

81、****\n");</p><p>  printf(" *------------------------------------*\n");</p><p>  printf(" * 1.英語 2.數(shù)學(xué) *\n");</p>&l

82、t;p>  printf(" * 3.計算機 4.物理 *\n");</p><p>  printf(" * 0.退出到平均分統(tǒng)計菜單 *\n");</p><p>  printf(" *--

83、----------------------------------*\n");</p><p>  printf(" **************************************\n");</p><p>  printf("\n請選擇您查詢的科目:");</p><p>

84、<b>  while(1)</b></p><p><b>  {</b></p><p>  scanf("%d",&xz2);</p><p>  if(xz2==1 ||xz2==2 || xz2==3 || xz2==4 || xz2==0) break;</p><

85、;p>  else printf("\n 輸入錯誤!請重新輸入:");</p><p><b>  }</b></p><p>  if(xz2==1) /*統(tǒng)計超出英語平均分人數(shù)*/</p><p><b>  {&

86、lt;/b></p><p>  printf("\n 英語平均成績:%.1f\t超過人數(shù):%d\n",av[0],sum0);</p><p>  printf(" ----------------------------------------------\n");</p>

87、<p>  printf(" 學(xué)號 姓名 英語 數(shù)學(xué) 計算機 物理 \n");</p><p>  printf(" ----------------------------------------------\n");</p><p>  for(i=0;i<N;

88、i++)</p><p><b>  {</b></p><p>  if(s[i].yy>av[0])</p><p><b>  {</b></p><p>  printf(" %d %s%8.1lf%8.1lf%8.1lf%8.1lf\n",s

89、[i].xh,s[i].name,s[i].yy,s[i].mat,s[i].jsj,s[i].wl);</p><p>  printf(" ---------------------------------------------\n");</p><p><b>  }</b></p><p>&

90、lt;b>  }</b></p><p><b>  }</b></p><p>  if(xz2==2) /*統(tǒng)計超出數(shù)學(xué)平均分人數(shù)*/</p><p><b>  {</b></p><p>  printf("\n

91、 數(shù)學(xué)平均成績:%.1f\t超過人數(shù):%d\n",av[1],sum1);</p><p>  printf(" -----------------------------------------------\n");</p><p>  printf(" 學(xué)號 姓名 英語

92、 數(shù)學(xué) 計算機 物理 \n");</p><p>  printf(" -----------------------------------------------\n");</p><p>  for(i=0;i<N;i++)</p><p><b>  {</b><

93、/p><p>  if(s[i].mat>av[1])</p><p><b>  {</b></p><p>  printf(" %d %s%8.1lf%8.1lf%8.1lf%8.1lf\n",s[i].xh,s[i].name,s[i].yy,s[i].mat,s[i].jsj,s[i].wl

94、);</p><p>  printf(" ----------------------------------------------\n");</p><p><b>  }</b></p><p><b>  }</b></p><p><b&g

95、t;  }</b></p><p>  if(xz2==3) /*統(tǒng)計超出計算機平均分人數(shù)*/</p><p><b>  {</b></p><p>  printf("\n 計算機平均成績:%.1f\t超過人數(shù):%d\n",av[2],su

96、m2);</p><p>  printf(" -----------------------------------------------\n");</p><p>  printf(" 學(xué)號 姓名 英語 數(shù)學(xué) 計算機 物理 \n");</p><p&

97、gt;  printf(" -----------------------------------------------\n");</p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p>  if(s[i].jsj>av[2])<

98、;/p><p><b>  {</b></p><p>  printf(" %d %s%8.1lf%8.1lf%8.1lf%8.1lf\n",s[i].xh,s[i].name,s[i].yy,s[i].mat,s[i].jsj,s[i].wl);</p><p>  printf("

99、 ------------------------------------------------\n");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  i

100、f(xz2==4) /*統(tǒng)計超出物理平均分人數(shù)*/</p><p><b>  {</b></p><p>  printf("\n 物理平均成績:%.1f\t超過人數(shù):%d\n",av[3],sum3);</p><p>  printf("

101、 ---------------------------------------------\n");</p><p>  printf(" 學(xué)號 姓名 英語 數(shù)學(xué) 計算機 物理 \n");</p><p>  printf(" ----------

102、------------------------------------\n");</p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p>  if(s[i].wl>av[3])</p><p><b>  {</b><

103、;/p><p>  printf(" %d %s%8.1lf%8.1lf%8.1lf%8.1lf\n",s[i].xh,s[i].name,s[i].yy,s[i].mat,s[i].jsj,s[i].wl);</p><p>  printf(" --------------------------------

104、---------------\n");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(xz2==0)</p><p><b>  b

105、reak;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(xz==3) </p><p><b>  break;</b></p><p><b>  }</

106、b></p><p><b>  }</b></p><p>  void Appe1() /*追加模塊1*/</p><p><b>  {</b></p><p><b>  int i=N; </b></p><p>  printf(&q

107、uot;\t學(xué)號:");</p><p>  scanf("%d",&s[i].xh);</p><p>  printf("\t姓名:");</p><p>  scanf("%s",s[i].name);</p><p>  printf("\t英語:

108、");</p><p>  scanf("%lf",&s[i].yy);</p><p>  printf("\t數(shù)學(xué):");</p><p>  scanf("%lf",&s[i].mat);</p><p>  printf("\t計算機:&q

109、uot;);</p><p>  scanf("%lf",&s[i].jsj);</p><p>  printf("\t物理:");</p><p>  scanf("%lf",&s[i].wl);</p><p>  printf("\t總分:"

110、;);</p><p>  scanf("%lf",&s[i].zf);</p><p><b>  N++;</b></p><p><b>  }</b></p><p>  void Appe() /*追加模塊*/ </p><p>&

111、lt;b>  {</b></p><p>  char s='y';</p><p><b>  int i;</b></p><p>  for(i=0;s=='y' || s=='Y';i++)</p><p><b>  {</b&g

112、t;</p><p>  printf("請輸入追加的學(xué)生成績信息:\n");</p><p><b>  Appe1();</b></p><p>  getchar();</p><p>  printf("是否繼續(xù)輸入?\n(Y/N)");</p><p&

113、gt;  scanf("%c",&s);</p><p><b>  }</b></p><p>  Wr_file();</p><p><b>  }</b></p><p>  void Modi1(int i) /*修改模塊1*/</p>&l

114、t;p><b>  {</b></p><p><b>  int n;</b></p><p>  double temp;</p><p><b>  while(1)</b></p><p><b>  {</b></p><

115、;p>  printf("\n\n\n");</p><p>  printf(" *******************************************\n");</p><p>  printf(" *-----------------------------

116、------------*\n");</p><p>  printf(" * 1.英語 2.數(shù)學(xué) *\n");</p><p>  printf(" * 3.計算機 4.物理 *\n"

117、);</p><p>  printf(" * 5.返回上級菜單 *\n");</p><p>  printf(" *-----------------------------------------*\n");</p><

118、p>  printf(" *******************************************\n");</p><p>  printf("\n\n請輸入您的選擇:");</p><p><b>  while(1)</b></p><p><b

119、>  {</b></p><p>  scanf("%d",&n);</p><p>  if(n==1||n==2||n==3||n==4||n==5) break;</p><p>  else printf("\t\t\t\t對不起,輸入有誤!請重新輸入:");</p><

120、p><b>  }</b></p><p><b>  if(n==1)</b></p><p><b>  {</b></p><p>  printf("請修改后的英語成績?yōu)?");</p><p>  scanf("%lf",

121、&temp);</p><p>  s[i].yy=temp;</p><p><b>  }</b></p><p><b>  if(n==2)</b></p><p><b>  {</b></p><p>  printf("請

122、修改后的數(shù)學(xué)成績?yōu)?");</p><p>  scanf("%lf",&temp);</p><p>  s[i].mat=temp;</p><p><b>  }</b></p><p><b>  if(n==3)</b></p><

123、p><b>  {</b></p><p>  printf("請修改后的計算機成績?yōu)?");</p><p>  scanf("%lf",&temp);</p><p>  s[i].jsj=temp;</p><p><b>  }</b>&

124、lt;/p><p><b>  if(n==4)</b></p><p><b>  {</b></p><p>  printf("請修改后的物理成績?yōu)?");</p><p>  scanf("%lf",&temp);</p><p

125、>  s[i].wl=temp;</p><p><b>  }</b></p><p><b>  if(n==5) </b></p><p><b>  {</b></p><p><b>  break;</b></p><

126、p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void Modi() /*修改模塊*/ </p><p><b>  {</b></p><p&

127、gt;  int i,xz3,xh,j;</p><p>  char name[10];</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  printf("

128、 成績修改菜單\n");</p><p>  printf(" **********************************************\n");</p><p>  printf(" *------------------------------------

129、--------*\n");</p><p>  printf(" * 1.按學(xué)號修改 *\n");</p><p>  printf(" * 2.按姓名修改

130、 *\n");</p><p>  printf(" * 3.返回到所有成績及主菜單 *\n");</p><p>  printf(" *--------------------------------------------*\n"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論