c語言課程設計—班級成績管理系統_第1頁
已閱讀1頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  課 程 設 計 報 告</p><p>  課程名稱 C語言課程設計 </p><p>  課題名稱 班級成績管理系統 </p><p><b>  目錄</b></p><p>  前 言- 2 -</p>

2、<p>  課程設計報告規(guī)范- 3 -</p><p>  第一章 緒論- 4 -</p><p>  1.1 課程背景- 4 -</p><p>  1.2 本文所作工作- 4 -</p><p>  第二章 需求分析- 4 -</p><p>  第三章 總體設計- 5 -</p>

3、<p>  3.1 文字描述- 5 -</p><p>  3.1.1成績輸入- 5 -</p><p>  3.1.2 成績查詢- 5 -</p><p>  3.1.3 成績修改- 5 -</p><p>  3.1.4 成績統計- 5 -</p><p>  3.1.5 成績查看- 5

4、-</p><p>  3.1.6 成績保存- 6 -</p><p>  3.1.7 成績添加- 6 -</p><p>  3.1.8 成績刪除- 6 -</p><p>  3.1.9 退出系統- 6 -</p><p>  3.2 模板劃分圖- 6 -</p><p>  3.

5、2.1 總層次圖- 7 -</p><p>  3.2.2 基本總流程圖- 7 -</p><p>  3.3 功能介紹圖- 8 -</p><p>  3.3.1 成績查詢流程圖- 8 -</p><p>  3.3.2 成績添加功能- 8 -</p><p>  第四章 詳細設計- 8 -</p&

6、gt;<p>  4.1 系統模塊函數- 8 -</p><p>  4.1.1 模塊函數組成- 8 -</p><p>  4.1.2 模塊函數介紹- 9 -</p><p>  4.2學生信息數組- 9 -</p><p>  第五章 測試- 10 -</p><p>  5.1 測試圖展示

7、- 10 -</p><p>  5.2 系統調試- 14 -</p><p>  5.3 分析結果- 14 -</p><p>  第六章 使用說明- 14 -</p><p>  第七章 總結- 15 -</p><p>  附1:源程序代碼- 16 -</p><p>  附2

8、:參考文獻- 31 -</p><p>  計算機與通信學院課程設計評分表- 32 -</p><p><b>  前 言</b></p><p>  《C語言程序設計》課程設計是對學生的一種全面綜合訓練,它包括問題分析,總體結構設計,用戶界面設計,程序設計基本技能和技巧,多人合作,以至一整套軟件工作規(guī)范的訓練和科學作風的培養(yǎng)。是與課堂聽

9、講、自學和練習相輔相成的必不可少的一個教學環(huán)節(jié)。通常,課程設計的課題比平時的習題復雜得多,也更接近實際。課程設計著眼于與應用的結合點,使學生學會如何把書上學到的知識用于解決實際問題,培養(yǎng)軟件工作所需要的動手能力;另一方面,能使書上的知識變“活”,使學生更好地深化理解和靈活掌握教學內容。為了達到上述目的,本課程設計安排了八個設計課題,訓練重點在于基本的程序設計方法和分析問題的能力,而不強調面面俱到。學生可任選其中一題進行設計,設計完畢寫出

10、課程設計報告,用A4紙打印成冊;并將課程設計報告與源程序存盤。學習委員將課程設計報告與磁盤收齊后交指導老師。</p><p><b>  一、目的</b></p><p>  全面熟悉、掌握C語言基本知識,掌握C程序設計中的順序、分支、循環(huán)三種結構及數組、函數和C語言基本圖形編程等方法,把編程和實際結合起來,增強對不同的問題運用和靈活選擇合適的數據結構以及算法描述的本

11、領,熟悉編制和調試程序的技巧,掌握分析結果的若干有效方法,進一步提高上機動手能力,培養(yǎng)使用計算機解決實際問題的能力,養(yǎng)成提供文檔資料的習慣和規(guī)范編程的思想,為以后在專業(yè)課程中應用計算機系統解決計算、分析、實驗和設計等學習環(huán)節(jié)打下較扎實的基礎。</p><p><b>  二、設計要求</b></p><p>  掌握結構化程序設計的主體思想,以自頂向下逐步求精的方法編

12、制程序解決一些實際的問題,為將來編寫軟件積累一些典型的案例處理經驗。</p><p>  設計正確,方案合理。</p><p>  界面友好,使用方便。</p><p>  程序精煉,結構清晰。</p><p>  設計報告5000字以上,含程序設計說明,用戶使用說明,源程序清單及程序框圖。</p><p><b

13、>  上機演示。</b></p><p>  按學號順序選課題號,并在規(guī)定的時間內獨自完成相關課題的C源程序編寫、調整和運行。源程序及編譯生成各文件均保存在軟盤中;</p><p>  按本任務書的要求,按附錄的要求編寫《課程設計報告》(Word文檔格式)。并用A4的復印紙打印并裝訂; </p><p>  在2014年6月30日之前,請各班學

14、習委員收齊課程設計報告和源程序交王穎老師 ,聯系電話:18607323600。</p><p><b>  三、進度安排</b></p><p>  第一周 星期四: 課題講解,查閱資料</p><p>  第二周 星期一: 總體設計,詳細設計</p><p>  星期二: 編程,上機調試、修改程序</p&

15、gt;<p>  星期三:上機調試、完善程序</p><p>  星期四:上機調試、完善程序</p><p>  星期五: 答辯</p><p>  星期六-星期天:撰寫課程設計報告</p><p><b>  課程設計報告規(guī)范</b></p><p><b>  需

16、求分析</b></p><p><b>  1、程序的功能。</b></p><p>  2、輸入輸出的要求。</p><p><b>  概要設計</b></p><p>  1、程序由哪些模塊組成以及一個模塊之間的層次結構、模塊的調用關系;每個模塊的功能。</p>&l

17、t;p>  2、課題的總體數據結構和數據庫結構;即要存儲什么數據,這些數據是什么樣的結構,它們之間有什么關系等。</p><p><b>  詳細設計</b></p><p>  1、采用C語言定義相關的數據類型。</p><p>  2、寫出各模塊的類C碼算法。</p><p>  3、畫出函數的調用關系圖。&l

18、t;/p><p>  調試分析以及設計體會</p><p>  1、測試數據:準備典型的測試數據和測試方案,包括正確的輸入及輸出結果和含有錯誤的輸入及輸出結果。</p><p>  2、程序調試中遇到的問題以及解決問題的方法。</p><p>  3、課程設計過程經驗教訓、心得體會。</p><p><b>  

19、使用說明</b></p><p>  用戶使用手冊:說明如何使用你編寫的程序,詳細列出每一步的操作步驟。</p><p><b>  書寫格式</b></p><p>  設計報告要求用A4紙打印成冊:</p><p>  標題和正文要求見附1</p><p><b>  封

20、面格式如下頁。</b></p><p><b>  附錄</b></p><p><b>  1、參考書目</b></p><p>  2、源程序清單(帶注釋)</p><p><b>  第一章 緒論</b></p><p><b&g

21、t;  1.1 課程背景</b></p><p>  現代社會是飛速發(fā)展的信息社會,各行各業(yè)皆離不開信息管理與信息處理,正是計算機被廣泛應用于信息管理系統的環(huán)境。計算機的最大優(yōu)點在于利用它的信息管理,使用計算機進行信息控制。不僅提高了工作效率,而且大大的提高了其安全性。尤其對于復雜的信息管理,計算機能夠充分發(fā)揮它的優(yōu)越性。而C語言是一門高級計算機編程語言,設計目標是提供一種能以簡易的方式編譯、處理低級

22、存儲器、產生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言。C語言也很適合搭配匯編語言來使用(往往可以通過內聯匯編語言或與匯編語言目標文件一起連接。對于任何一種操作系統環(huán)境。盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規(guī)格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業(yè)平臺。</p><p>  本程序可以在短時間

23、內得到總成績并且得到相應的排名,節(jié)省時間。在多名同學參加多門科目考試時很便捷,只要考試成績出來,輸入電腦就可以在短時間內得到總成績,并知道了某學生在班級的排名,班級的最高分與最底分的情況以及某門課程的平均分,提高了工作效率。</p><p>  1.2 本文所作工作</p><p>  與同組同學一起審閱題目,認真分析該系統需要進行哪些步驟,如何操作,在草稿紙上定好提綱,將功能逐個解析。遇

24、到不懂或解決不了的地方,查閱書籍,參考文獻,上網查資料和上機時向老師尋求幫助等。</p><p><b>  第二章 需求分析</b></p><p>  對一個有N名學生,每個學生有M門課程的班級做一個系統,實現對班級學生的成績的管理。該系統應具備成績輸入,成績查看,成績查找,成績統計,成績排序,成績修改,成績添加,成績刪除,成績保存,退出程序等功能。輸入和顯示的信

25、息應該為學生的姓名,學號,各科成績等內容。</p><p><b>  第三章 總體設計</b></p><p><b>  3.1 文字描述</b></p><p><b>  3.1.1成績輸入</b></p><p>  依次輸入學生的姓名,學號和成績,如果該生的信息在學

26、生文件中沒有記錄,給出提示,完善學生信息,然后保存至學生文件中。最后返回主菜單。數據類型定義如下:姓名 char,學號 char,課程名稱 char,成績char。</p><p>  3.1.2 成績查詢</p><p>  打開學生文件或輸入相關學生信息后,可以按照學生的“學號”查詢成績,顯示該名學生的成績與信息;如果查詢記錄不存在,給出提示信息找不到該學生信息。然后任意鍵返回主菜單。

27、</p><p>  3.1.3 成績修改</p><p>  開打學生文件或輸入相關學生信息后前,用戶需輸入密碼,密碼錯誤無權修改;密碼正確則可以按照“學號”,查詢信息,依次修改學生的“學號”,“姓名”,“語文成績”,“數學成績”,“英語成績”和“計算機成績”。先將修改后的學生信息預覽,最后保存至學生文件。沒有找到需要修改的信息,給出提示, 然后按任意鍵返回主菜單。</p>

28、<p>  3.1.4 成績統計</p><p>  打開學生文件或輸入相關學生信息后,對所有科目進行統計,然后顯示學生的“學號”,“姓名”以及各科“成績”最高分的同學的信息和顯示該科的平均分。然后任意鍵返回主菜單。</p><p>  3.1.5 成績查看</p><p>  打開學生文件或輸入相關學生信息后,按“科目名次”查詢,進行“排序;如果查詢信

29、息不存在,給出提示。然后任意鍵返回主菜單。</p><p>  3.1.6 成績保存</p><p>  其他功能的運行都需要從保存的學生文件中調用,對學生文件操作步驟后,利用指針與地址的作用,經過一系列操作,會將信息資料保存成.txt格式。然后任意鍵返回主菜單。</p><p>  3.1.7 成績添加</p><p>  打開學生文件或輸

30、入相關學生信息發(fā)現遺漏的學生后,輸入遺漏學生人數,然后依次輸入學生的“學號”,“姓名”,“語文成績”,“數學成績”,“英語成績”和“計算機成績”,然后任意鍵返回主菜單。</p><p>  3.1.8 成績刪除</p><p>  通過輸入學生學號,然后顯示該名同學信息,并提示是否刪除。操作完成后任意鍵返回主菜單。</p><p>  3.1.9 退出系統</

31、p><p>  每執(zhí)行一個具體的功能,程序重新顯示菜單;完成相關程序后,退出系統。如果此前沒有進行“保存文件”步驟,給出提示是否保存成功,然后任意鍵返回主菜單。</p><p><b>  3.2 模板劃分圖</b></p><p>  3.2.1 總層次圖</p><p>  3.2.2 基本總流程圖</p>

32、<p><b>  3.3 功能介紹圖</b></p><p>  3.3.1 成績查詢流程圖</p><p>  3.3.2 成績添加功能</p><p><b>  第四章 詳細設計</b></p><p>  根據功能模塊設計思路,主要功能模塊的算法設計思路,班級內同學的相關信息應

33、包括“學號”,“姓名”,“各科成績”。此程序應具備“成績輸入”,“成績查看”,“成績查找”,“成績統計”,“成績排序”,“成績修改”,“成績添加”,“成績刪除”,“成績保存”,“退出程序”等功能。詳情如下:</p><p>  4.1 系統模塊函數</p><p>  4.1.1 模塊函數組成</p><p>  01.主函數 void main()</p&g

34、t;<p>  02.成績輸入函數 enter()</p><p>  03.成績查詢函數 find()</p><p>  04.成績修改函數 modify()</p><p>  05.成績統計函數 count()</p><p>  06.成績察看函數 look()</p><p>  07.文件保

35、存函數 save()</p><p>  08.成績添加函數 add()</p><p>  09.成績刪除函數 deleted()</p><p>  主界面函數 home()</p><p>  11.退出系統函數 exit()</p><p>  4.1.2 模塊函數介紹</p><p>

36、  01.menu():用switch執(zhí)行功能選項;用do...while執(zhí)行每種功能完成后返回菜單。</p><p>  02.enter():用scanf一一對應輸入學生的信息;用for循環(huán)輸入多門成績;最后用save()函數保存。(參考3.1.1)</p><p>  03.find():用于查詢全班各科成績,與學生姓名,學號,科目相對應。為了美觀采用5%換行輸出,使信息簡潔明了。(

37、參考3.1.2)</p><p>  04.modify():用于修改成績或學生信息。定義好一個密碼以及mm=0;如果密碼錯誤mm=1,用do...while執(zhí)行是否重新輸入密碼;密碼正確獲得修改信息的權限。(參考.1.3)</p><p>  05.count():調用一個menu1()執(zhí)行菜單功能,用switch執(zhí)行用戶想進行的排序,調用paixu1(),paixu2(),再用menu

38、()函數轉回菜單。(參考3.1.4)</p><p>  06.look():定義choice1(),根據用戶需要對信息執(zhí)行所需的排序(參考3.1.5)</p><p>  07.save():用于使用系統功能對學生文件產生變化后,保存學生文件。(參考3.1.6)</p><p><b>  4.2學生信息數組</b></p>&

39、lt;p>  typedef struct student</p><p><b>  {</b></p><p>  char number[10];</p><p>  char name[20];</p><p>  float score[M];</p><p>  float av

40、er;</p><p><b>  }STU;</b></p><p><b>  第五章 測試</b></p><p><b>  5.1 測試圖展示</b></p><p><b>  圖.1</b></p><p><b

41、>  主界面。</b></p><p><b>  圖.2</b></p><p><b>  菜單欄。</b></p><p><b>  圖.3</b></p><p><b>  查看成績。</b></p><p

42、><b>  圖.4</b></p><p><b>  查詢欄。</b></p><p><b>  圖.5</b></p><p><b>  平均成績。</b></p><p><b>  圖.6</b></p>

43、;<p><b>  添加功能。</b></p><p><b>  圖.7</b></p><p><b>  刪除功能。</b></p><p><b>  圖.8</b></p><p><b>  保存功能。</b&g

44、t;</p><p><b>  5.2 系統調試</b></p><p>  01:在enter()函數中對學生成績的輸入用scanf(“%d”,s);當輸入一門成績后就會跳回,使接下來的程序無法運行,改為for(j=1;j<=M;j++) scanf(“%d”,&s[i].score[j]);將錯誤解決。</p><p>  

45、02:在enter函數中,輸入姓名用scanf(“%s”,&s[i].name);錯誤,在scanf函數中的輸入項如果是字符數組名代表該數組的起始地址.則應改為scanf(“%d”,s[i].name); </p><p>  03:在運行find()函數時,第四門課顯示出來的分數并非輸入項:錯誤,在定義時將j=1,要改為j=0。</p><p>  04:學生成績定義為浮點型,但

46、與scanf連接不起來。是由于所使用的系統不支持該項操作。</p><p>  05:在count()函數中,paixu3();輸出的人數比實際的多一人,因為b++:在循環(huán)結束之后會自增一次,則比實際的大一。</p><p><b>  5.3 分析結果</b></p><p>  01:為了使調試程序簡便,先定義班級的人數N為2人,編譯連接后

47、,顯示出菜單桌面,先輸入學生成績保存起來。 </p><p>  2:選擇2.在用循環(huán)輸出學生的基本信息的最后加printf(“\n”);,則輸出學生的基本信息是每行顯示一位同學的信息。</p><p>  3:選擇5.修改函數中用getchar()來覆蓋原有的,則就可輸出修改的信息。</p><p>  4:在modify( )函數中,當輸入一個錯誤的密碼時會出現

48、死循環(huán),因為跳出的位置錯誤了。</p><p><b>  第六章 使用說明</b></p><p>  運行系統以后,主界面需要輸入帳號和密碼,分別為“jintong”,“123456”。進入菜單后,按“1”鍵進入“輸入想添加的學生人數,相關信息與成績”,按任意鍵返回主菜單;按“2”鍵進入“查看全班學生的信息與成績”功能,可以按任意鍵返回主菜單;按“3”鍵進入“按學

49、號查詢班級內某個同學的信息與成績”功能,可以按任意鍵返回主菜單;按“4”鍵進入“查詢班級平均分與各科平均分”功能,可以按任意鍵返回主菜單;按“5”鍵進入“按學號查看和修改班級內某個同學的信息和成績”功能,可以按任意鍵返回主菜單;按“6”鍵進入“想添加的人數和相關學生信息與成績”功能,可以按任意鍵返回主菜單;按“7”鍵進入“按學號查詢到班級內某個同學的相關信息并提示是否刪除改名學生信息”功能,可以按任意鍵返回主菜單;按“8”鍵進入“保存全

50、班同學信息”功能;按“9”鍵退出程序。</p><p><b>  第七章 總結</b></p><p>  課程設計是培養(yǎng)學生綜合運用所學知識,發(fā)現,提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發(fā)展的日新日異,當今計算機應用在是生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握計算機開發(fā)技術十分重要

51、的。</p><p>  我的題目是班級成績管理系統的設計,對于我們這些新手來說,這是很大的考驗,我一千次一萬次的問自己,怎么才能找到課堂所學與實際應用的最佳結合點?怎么才能讓自己的程序在篇幅上簡單,在使用價值上豐富?怎樣讓自己的業(yè)余更靠近專業(yè)?怎樣讓自己的計劃更具有序性,而不會忙無一用?機會是老師,學校,以及無數代教育工作者給的,而能力是自己的,耐性是需要的。經過自己的琢磨,還查閱了很多書籍,才做到了心中有數,

52、才了解了C語言課程設計的真正用意——培養(yǎng)自學能力,養(yǎng)成程序編輯的好習慣。我從來不相信車到山前必有路的說法,認為那只是懶惰者自尋懶惰的借口,我要積極,要把握,要努力。</p><p>  回顧起此次課程設計,至今我仍感慨頗多,的確,從拿到題目到完成整個編程,從理論到實踐,在整整半個學期的日子里,可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我

53、懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說結構體等等。通過這次課程設計之后,一定把以前所學過的知識重新溫故。<

54、/p><p>  這次課程設計終于順利完成了,在設計中遇到了很多編程問題,最后在郭老師的辛勤指導下,終于游逆而解。同時,在郭老師的身上我學得到很多實用的知識,在次我表示感謝!同時,對給過我?guī)椭乃型瑢W和各位指導老師再次表示忠心的感謝。</p><p>  做完這個課程設計,我們的自信一下子提高了,我們也會寫程序了;盡管對于有些人這種程序會很簡單,可對于我們C語言初學者來說,已經很不容易了。這

55、次體驗為以后的學習計算機的我們增強了信心。享受勞動成果的滋味實在美妙啊!</p><p>  在課程設計過程中,我學到了很多人生的哲理,懂得怎么樣去制定計劃,怎么樣去實現這個計劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒,黑夜過去了,我們收獲的是黎明。在本次實踐中,給我印象最為深刻的是在文件刪除程序的編譯過程中,先有我的各個子程序都已經編輯成功,那么這最后的程序就將是我成功的關鍵。老天不會讓我太過順利,他

56、在這最后的時刻設置的障礙,是要考驗我的能力,他要置我于死地?在這個問題的解決上,我打了退堂鼓,我不能忍受長時間的無功而反,時間正在消磨我的意志。沒有了柳暗花明的一天,那么我怎么能說經受住了考驗?謝謝老師的那句話,她說:人力有所不能及,然而,人的精神是不會敗倒的。我鼓起勇氣,到處問,到處查資料,黃天不負有心人,在一篇文章上,終于看到了我所特別要求的函數,我實現了組合是關鍵的理論。不得不說這是精神的勝利,是永不言敗的精神讓我的程序重見天日。

57、謝謝給我指點迷津的老師。</p><p><b>  附1:源程序代碼</b></p><p>  #include<stdio.h></p><p>  #include<string.h></p><p>  #include<windows.h></p><p

58、>  #include<process.h></p><p>  #include<conio.h></p><p>  #define N 20</p><p>  #define M 4</p><p>  typedef struct student</p><p><b>

59、;  {</b></p><p>  char number[10];</p><p>  char name[20];</p><p>  float score[M];</p><p>  float aver;</p><p><b>  }STU;</b></p>

60、<p>  STU stu[N];</p><p><b>  int n;</b></p><p>  void enter();//輸入</p><p>  void save();//保存</p><p>  void avergescore();//平均分</p><p>  

61、void home();//主界面 </p><p>  void look();//查看</p><p>  void find();//查找</p><p>  void count();//統計</p><p>  void add();//添加</p><p>  void modify();//修

62、改</p><p>  void deleted();//刪除</p><p>  void menu();//菜單</p><p>  void exit();//退出</p><p>  void main()//主函數開始</p><p><b>  {</b></p><

63、;p>  int i,k=0;</p><p>  char username[15],pwd[6];</p><p>  printf("\n\n");</p><p>  printf(" \t┏━━━━━━━━━━━━━━━━━━━━━┓\n");</p><p>  printf(&qu

64、ot; \t┃******************************************┃\n");</p><p>  printf(" \t┃*** ****┃\n");</p><p>  printf(" \t┃*** 歡迎使用班級成績管理系統

65、 ****┃\n");</p><p>  printf(" \t┃*** ****┃\n");</p><p>  printf(" \t┃*** 湖南工程學院 ****┃\n");</p><p>

66、  printf(" \t┃*** ****┃\n");</p><p>  printf(" \t┃*** 指導老師:王穎 ****┃\n");</p><p>  printf(" \t┃***

67、 ****┃\n");</p><p>  printf(" \t┃*** 操作學生:金潼 ****┃\n");</p><p>  printf(" \t┃*** ****┃\n");</

68、p><p>  printf(" \t┃******************************************┃\n");</p><p>  printf(" \t┗━━━━━━━━━━━━━━━━━━━━━┛\n");</p><p>  for(i=0;i<3;i++)</p><

69、p><b>  {</b></p><p>  printf("\n請輸入我的名字:");</p><p>  gets(username);</p><p>  printf("\n請輸入權限密碼:");</p><p>  gets(pwd);</p>&l

70、t;p>  if((strcmp(username,"jintong")==0)&&(strcmp(pwd,"123456")==0))</p><p><b>  {</b></p><p>  printf("\n您已經成功登錄\n");</p><p>&l

71、t;b>  k=1;</b></p><p>  for(i=0;i<20;i++)</p><p><b>  {</b></p><p>  printf(".");</p><p>  Sleep(100);</p><p><b>  

72、}</b></p><p>  system("cls");</p><p><b>  home();</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>&

73、lt;b>  else</b></p><p>  printf("\n用戶名或密碼無效 請重新輸入:\n");</p><p><b>  continue;</b></p><p><b>  }</b></p><p><b>  if(k==0

74、)</b></p><p>  printf("\n連續(xù)輸入錯誤3次 將退出程序\n");</p><p>  Sleep(2000);</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p&g

75、t;  void home() /*功能選項調用*/</p><p><b>  {</b></p><p><b>  int mm=0;</b></p><p><b>  menu();</b></p><p><b>  do</b></

76、p><p><b>  {</b></p><p><b>  mm=1;</b></p><p>  switch(getch())</p><p><b>  {</b></p><p>  case '1' : enter();brea

77、k; /*成績輸入*/</p><p>  case '2' : look();break; /*成績查看*/</p><p>  case '3' : find();break; /*成績查找*/</p><p>  case '4' : count();break;

78、 /*成績統計*/</p><p>  case '5' : modify();break; /*成績修改*/</p><p>  case '6' : add();break; /*成績添加*/</p><p>  case '7' : deleted();break; /*成績刪

79、除*/</p><p>  case '8' : save();break; /*成績保存*/</p><p>  case '9' : exit(0); /*退出程序*/</p><p>  default : printf("輸入有誤\n");</p><p>

80、;<b>  }</b></p><p>  printf("按任意鍵繼續(xù)\n");</p><p><b>  getch();</b></p><p><b>  menu();</b></p><p>  }while (mm==1);</p&g

81、t;<p><b>  }</b></p><p>  void menu() /*進入菜單*/</p><p><b>  {</b></p><p>  system("cls");</p><p>  printf("\n");<

82、/p><p>  printf("\n");</p><p>  printf("┃**********歡迎進入學生成績管理系統**********┃\n");</p><p>  printf("┃ 菜單 ┃\n");</p&g

83、t;<p>  printf("┃ 1、成績輸入 ┃\n");</p><p>  printf("┃ 2、成績查看 ┃\n");</p><p>  printf("┃ 3

84、、成績查詢 ┃\n");</p><p>  printf("┃ 4、成績統計 ┃\n");</p><p>  printf("┃ 5、成績修改 ┃\n");</p>&

85、lt;p>  printf("┃ 6、成績添加 ┃\n");</p><p>  printf("┃ 7、成績刪除 ┃\n");</p><p>  printf("┃ 8、成績保存

86、 ┃\n");</p><p>  printf("┃ 9、退出系統 ┃\n");</p><p>  printf("┃********請選擇相應的功能號(1---9):*******┃\n");</p><p><

87、b>  }</b></p><p>  void enter()/*輸入信息和成績功能*/</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p>  system("cls");</p>&l

88、t;p>  printf("輸入班級學生人數:\n");</p><p>  scanf("%d",&n);</p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  printf("請輸入學

89、生%d的學號 姓名:\n",i+1);</p><p>  scanf("%s%s",stu[i].number,stu[i].name);</p><p>  printf("請輸入學生成績:\n");</p><p>  printf("語文\t數學\t英語\t計算機\n");</p&g

90、t;<p>  for(j=0;j<M;j++)</p><p>  scanf("%f",&stu[i].score[j]);</p><p><b>  }</b></p><p>  printf("成功輸入\n");</p><p><b&

91、gt;  }</b></p><p>  void avergescore()/*計算平均分功能*/</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p>  for(i=0;i<n;i++)</p><

92、p><b>  {</b></p><p>  stu[i].aver=0;</p><p>  for(j=0;j<M;j++)</p><p><b>  {</b></p><p>  stu[i].aver+=stu[i].score[j];</p><p&

93、gt;<b>  }</b></p><p>  stu[i].aver=stu[i].aver/M;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void look()/*查看及排序功能*/</p><

94、;p><b>  {</b></p><p>  int i,j,k;</p><p><b>  STU t;</b></p><p>  avergescore();</p><p>  system("cls");</p><p>  for(

95、i=0;i<n-1;i++)</p><p><b>  {</b></p><p>  for(k=i,j=i+1;j<n;j++)</p><p>  if(stu[j].aver>stu[k].aver)</p><p><b>  k=j;</b></p>&

96、lt;p><b>  if(k!=j)</b></p><p><b>  {</b></p><p><b>  t=stu[k];</b></p><p>  stu[k]=stu[i];</p><p><b>  stu[i]=t;</b>&

97、lt;/p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("名次\t學號\t姓名\t語文\t數學\t英語\t計算機\t平均分\n");</p><p>  for(i=0;i<n;i++)</p><

98、;p><b>  {</b></p><p>  printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);</p><p>  for(j=0;j<M;j++)</p><p>  printf("%4.2f\t",stu[i].score[j

99、]);</p><p>  printf("%4.2f",stu[i].aver);</p><p>  printf("\n");</p><p><b>  }</b></p><p><b>  }</b></p><p>  v

100、oid find()/*查找功能*/</p><p><b>  {</b></p><p>  char a[10];</p><p><b>  int i,j;</b></p><p>  system("cls");</p><p>  print

101、f("請輸入需查詢的學生學號\n");</p><p>  scanf("%s",a);</p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  if(strcmp(a,stu[i].number)==0)</p

102、><p><b>  {</b></p><p>  printf("名次\t學號\t姓名\t語文\t數學\t英語\t計算機\t平均分\n");</p><p>  printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);</p><p&

103、gt;  for(j=0;j<M;j++)</p><p>  printf("%4.2f\t",stu[i].score[j]);</p><p>  printf("%4.2f",stu[i].aver);</p><p>  printf("\n");</p><p>&

104、lt;b>  break;</b></p><p><b>  }</b></p><p><b>  else</b></p><p>  printf("未找到該學生信息\n");</p><p><b>  }</b><

105、/p><p><b>  }</b></p><p>  void count()/*統計功能*/</p><p><b>  {</b></p><p>  STU *p=stu;</p><p><b>  int i,j;</b></p>

106、<p>  float aver[M]={0};</p><p>  float count=0.0,sum=0.0;</p><p>  system("cls");</p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p>

107、<p>  sum+=(p+i)->aver;</p><p><b>  }</b></p><p>  printf("班級平均分為:%4.2f分\n下列依次為語文\t數學\t英語\t計算機的平均分:\n",sum/n);/*平均分計算*/</p><p>  for(i=0;i<M;i++)&l

108、t;/p><p>  for(j=0;j<n;j++)</p><p>  aver[i]=aver[i]+stu[j].score[i]/n;</p><p>  for(i=0;i<M;i++)</p><p>  printf("%f\n",aver[i]);</p><p>  pr

109、intf("\n");</p><p><b>  }</b></p><p>  void modify()/*修改功能*/</p><p><b>  {</b></p><p>  char a[10];</p><p><b>  int

110、 i,j;</b></p><p>  system("cls");</p><p>  printf("請輸入需要修改成績的學生學號\n");</p><p>  scanf("%s",a);</p><p>  for(i=0;i<n;i++)</p>

111、;<p><b>  {</b></p><p>  if(strcmp(a,stu[i].number)==0)</p><p><b>  {</b></p><p>  printf("名次\t學號\t姓名\t語文\t數學\t英語\t計算機\t平均分\n");</p>

112、<p>  printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);</p><p>  for(j=0;j<M;j++)</p><p>  printf("%4.2f\t",stu[i].score[j]);</p><p>  printf("

113、%4.2f",stu[i].aver);</p><p>  printf("\n");</p><p>  printf("請重新輸入該學生的學號 姓名:\n");</p><p>  scanf("%s%s",stu[i].number,stu[i].name);</p><

114、;p>  printf("請重新輸入學生成績:\n");</p><p>  printf("\t語文\t數學\t英語\t計算機\n");</p><p>  for(j=0;j<M;j++)</p><p>  scanf("%f",&stu[i].score[j]);/*找到該學生成

115、績后進行修改,跳出for循環(huán)*/</p><p>  printf("修改成功\n");</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  else</b></p><p

116、>  printf("未找到該學生信息\n");</p><p><b>  }</b></p><p><b>  }</b></p><p>  void add()/*添加功能*/</p><p><b>  {</b></p>

117、<p>  int a,i,j;</p><p>  system("cls");</p><p>  printf("請輸入新增加的學生人數:\n");</p><p>  scanf("%d",&a);</p><p><b>  n=n+a;<

118、/b></p><p>  for(i=n-a;i<n;i++)</p><p><b>  {</b></p><p>  printf("請輸入學生%d的學號 姓名:\n",i+1);</p><p>  scanf("%s%s",stu[i].number,stu

119、[i].name);</p><p>  printf("請輸入學生成績:\n");</p><p>  printf("\t語文數學\t英語\t計算機\n");</p><p>  for(j=0;j<M;j++)</p><p>  scanf("%f",&stu[

120、i].score[j]);</p><p>  printf("添加成功\n");</p><p><b>  }</b></p><p><b>  }</b></p><p>  void deleted()/*刪除功能*/</p><p><b

121、>  {</b></p><p>  int i,j,c;</p><p>  char m,a[10];</p><p>  system("cls");</p><p>  printf("請輸入學生學號\n");</p><p>  scanf("

122、;%s",a);</p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  if(strcmp(a,stu[i].number)==0)</p><p><b>  {</b></p><p>  pri

123、ntf("名次\t學號\t姓名\t語文\t數學\t英語\t計算機\t平均分\n");</p><p>  printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);</p><p>  for(j=0;j<M;j++)</p><p>  printf("%4.

124、2f\t",stu[i].score[j]);</p><p>  printf("%4.2f",stu[i].aver);</p><p>  printf("\n");</p><p><b>  c=i;</b></p><p><b>  break;&

125、lt;/b></p><p><b>  }</b></p><p><b>  else</b></p><p>  printf("未找到該學生信息\n");</p><p><b>  }</b></p><p>  pr

126、intf("是否刪除該學生成績(y/n)\n");</p><p>  scanf("%s",&m);</p><p>  if(m=='y')</p><p><b>  {</b></p><p>  for(i=c;i<n-1;i++)<

127、/p><p>  stu[i]=stu[i+1];/*結構體整體賦值將后一位學生成績信息拷貝進入前一位學生信息的存儲位置*/</p><p>  n=n-1;/*刪除該學生信息后學生總數減一*/</p><p>  printf("刪除成績成功\n");</p><p><b>  }</b&

128、gt;</p><p><b>  else</b></p><p>  printf("刪除成績失敗\n");</p><p><b>  }</b></p><p>  void save()/*保存功能*/</p><p><b>  {&

129、lt;/b></p><p><b>  FILE *fp;</b></p><p>  int i,mm=1;</p><p><b>  char m;</b></p><p>  system("cls");</p><p>  puts(&q

130、uot;是否保存學生成績(y/n)");</p><p>  scanf("%s",&m);</p><p>  if(m=='y')</p><p><b>  {</b></p><p>  if((fp=fopen("score.dat",&

131、quot;wb"))==NULL)</p><p><b>  {</b></p><p>  printf("文件打開失敗\n");</p><p><b>  return;</b></p><p><b>  }</b></p>

132、<p>  for(i=0;i<n;i++)</p><p>  if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)</p><p><b>  {</b></p><p>  printf("保存失敗\n");</p><p&g

133、t;<b>  mm=0;</b></p><p><b>  }</b></p><p><b>  if(mm==1)</b></p><p>  printf("保存成功!\n");</p><p>  fclose(fp);</p>&

134、lt;p><b>  }</b></p><p><b>  else</b></p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  附2:參考文獻</b><

135、;/p><p><b>  1、C語言程序設計</b></p><p><b>  2、軟件工程</b></p><p><b>  3、C語言項目開發(fā)</b></p><p>  計算機與通信學院課程設計評分表</p><p>  課題名稱: 班級成

溫馨提示

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

評論

0/150

提交評論