【正文】
C 語言程序設計報告課題:學生成績管理 時間:2010/7/15一、需求分析任務要求:自學C語言中有關鏈表及外部文件的內容,設計出學生成績管理。具體要求如下::(1)能按學期、按班級完成對學生成績的錄入、修改(2)能按班級統(tǒng)計學生的成績,求學生的總分及平均分,并能根據(jù)學生的平均成績進行排序(3)能查詢學生成績,不及格科目及學生名單(4)能按班級輸出學生的成績單系統(tǒng)功能需求分析:定義一個結構體類型,成員包括學期、班級、各科成績、建立鏈表,定義該結構體類型的指針,用于指向各結點; 分別建立具有添輸入、修改、查詢、總分及平均分、排序等功能的子函數(shù),完成相應功能,對程序實現(xiàn)模塊化。二、概要設計系統(tǒng)總體設計框架: 對程序進行模塊化,建立輸入、修改、查詢、查找和顯示功能的子函數(shù),各子函數(shù)中運用鏈表存儲數(shù)據(jù)。系統(tǒng)功能模塊圖:輸入學生信息成績管理成績查詢添加信息修改記錄求總分平均分排序輸出結果成績查詢不及格科目學生名單三、詳細設計主要功能模塊的算法設計思路如下:輸入信息函數(shù)(1)定義指向結構體變量的指針;(2)移動指針,找到插入結點;(3)在要插入的結點輸入信息;(4)返回頭指針。修改信息(1)定義指向結構體變量的指針;(2)用指針檢驗鏈表中是否有記錄,若沒記錄,出現(xiàn)報錯,然后要求重新輸入;(3)根據(jù)要修改的編號查找對應結點;(4)修改信息;(5)修改成功。排序函數(shù)(1)定義所要排序的班級和鏈表的頭指針為形參;(2)調用排序函數(shù),把班級和鏈表的頭指針賦給形參;(3)在子函數(shù)中進行排序;(4)輸出排序結果。顯示學生成績信息(void Disp(Link l))(1)選擇想要查詢的項目(學生各科成績、不及格科目、班級成員);(2)用指針檢驗是否有記錄;(3)若無記錄,輸出提示信息,返回主函數(shù);若有記錄,移動指針,依次輸出記錄;查詢班級成績信息(void Find(Link l))(1)選擇所要查詢的班級;(2)輸入班級:(3)在鏈表中尋找相應結點;(4)輸出結點信息。以上各個函數(shù)的流程圖如下: 主函數(shù)定義程序所需變量調用CREAT函數(shù)創(chuàng)建一個信息鏈表并返回指針繼續(xù)進行操作修改信息統(tǒng)計成績并排序查找信息輸出成績輸入所需修改學生的姓名輸入班級查詢分數(shù)查詢科目查詢班級輸入班級序號調用add并賦值給Psum查找班內成員調用average函數(shù)輸入姓名并查找學生輸出不及格學生的姓名及成績輸入班級序號并輸出班級成員的名字逐個輸出他們的各科成績并賦值給Pave輸出排序前的學生成績調用sort 進行排序輸出排序后的學生成績是否繼續(xù)操作子函數(shù)排序:f!=pclassp=pnextf==rclassf==snextclassamp。amp。snext交換結構體內各成員的值求和:int sumi==pclassyesnosum==pscor_1+ pscor_2+ pscor_3return(sum)求平均數(shù):float aveint sum sum==add(I,P)ave==sum/return (ave)四、主要源程序代碼include include include define NULL 0define LEN sizeof (struct student)define PRINT printf(======================main menu=======================\n)define PRIN printf(Please c