c語言課程設(shè)計學(xué)生成績管理_第1頁
c語言課程設(shè)計學(xué)生成績管理_第2頁
c語言課程設(shè)計學(xué)生成績管理_第3頁
c語言課程設(shè)計學(xué)生成績管理_第4頁
c語言課程設(shè)計學(xué)生成績管理_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 目錄目錄2一、課程設(shè)計的目的與要求31.1課程設(shè)計目的:31.2課程設(shè)計要求3二、題目說明52.1 程序開發(fā)背景52.2 開發(fā)工具介紹5三、總體設(shè)計73.1 系統(tǒng)結(jié)構(gòu)圖73.2模塊流程圖83.2模塊流程圖9四、詳細說明124.1成績添加模塊124.2成績顯示模塊134.3按姓名查找模塊144.4成績排序模塊144.5成績比較模塊15五、遇到的問題和解決方法17六、課程設(shè)計總結(jié)18七、參考文獻19附錄(源程序代碼)20一、課程設(shè)計的目的與要求1.1課程設(shè)計目的: 1.為培養(yǎng)學(xué)生嚴謹?shù)墓ぷ鲬B(tài)度,鍛煉學(xué)生編寫文檔的能力。進一步掌握和利用c語言進行程設(shè)計的能力;進一步理解和運用結(jié)構(gòu)化程設(shè)計的思想和方

2、法;初步掌握開發(fā)一個小型實用系統(tǒng)的基本方法;學(xué)會調(diào)試一個較長程序的基本方法;學(xué)會利用流程圖或n-s圖表示算法;掌握書寫程設(shè)計開發(fā)文檔的能力(書寫課程設(shè)計報告); 2、熟練掌握c語言課程中所學(xué)的理論知識; c語言是在國內(nèi)外廣泛使用的一種計算機語言。它既有高級語言的特點,又具有匯編語言的特點。它可以作為系統(tǒng)設(shè)計語言,編寫工作系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言,編寫不依賴計算機硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛。學(xué)習(xí)使用c語言程序的目的是掌握程序設(shè)計的思路,學(xué)會用計算機語言編寫程序正確處理算法和語法的關(guān)系算法是程序的核心、是靈魂,語法是外殼、是工具。通過課程設(shè)計,我們要熟練的掌握c語言的算

3、法、語言、函數(shù)的調(diào)用、循環(huán)的使用、數(shù)組的運用等。 3、通過綜合c語言的基本知識來解決實際問題; c語言中與許多的東西,像:數(shù)據(jù)類型、運算符、表達式、程序設(shè)計結(jié)構(gòu)、數(shù)組與函數(shù)調(diào)用。其中c語言最難和最經(jīng)典的地方就是循環(huán),(while和for的嵌套)運用while,for,switch和if的循環(huán)嵌套,我們可以實現(xiàn)現(xiàn)實中課程信息管理、圖書信息管理、學(xué)生信息管理、商品信息管理等。c語言還具有繪圖能力強,可移植性,并具備很強的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動畫。它是數(shù)值計算的高級語言。 4、加強分析和解決問題的能力。通過這次的課程設(shè)計,能加強我們對程序設(shè)計的思考、設(shè)計、分析、理解和

4、解決問題的能力。對于我們初學(xué)者來說,主要是學(xué)習(xí)成長設(shè)計的方法,進行程序設(shè)計的基本訓(xùn)練為將來進一步學(xué)習(xí)打下基礎(chǔ)。課程設(shè)計不能之掌握概念,還要動手編程、上機調(diào)試運行。只有自己動手,才能學(xué)的更多。1.2課程設(shè)計要求1.課程設(shè)計步驟:(1)對系統(tǒng)進行功能需求分析;(2)設(shè)計合理的數(shù)據(jù)結(jié)構(gòu)和系統(tǒng)框架;(3)編程簡練,程序功能齊全,能正確運行;(4)說明書、流程圖要清楚;(5)課題完成后必須按要求提交課程設(shè)計說明書;在課程設(shè)計過程中要求學(xué)生:重視課程設(shè)計環(huán)節(jié),用嚴謹、科學(xué)和踏實的工作態(tài)度對待課程設(shè)計的每一項任務(wù);按照課程設(shè)計的題目要求,獨立地完成各項任務(wù),不允許相互抄襲;按時到機房上機,并接受教師的檢查。

5、認真編寫課程設(shè)計報告。課程設(shè)計可以由24名同學(xué)合作完成一個課題。全體成員應(yīng)共同協(xié)作完成選題,確定設(shè)計思想,進行功能模塊劃分,然后由組長為各成員分配任務(wù)。整個設(shè)計期間,組長負責(zé)協(xié)調(diào)工作。各小組成員明確自己的任務(wù)后,應(yīng)獨立完成各自模塊的設(shè)計、編碼和調(diào)試,獨立完成課程設(shè)計說明書。小組成員要理解同組其他成員設(shè)計的模塊,熟練操作本組設(shè)計。2. 考核方式和成績評定考核分為兩個部分:(1)程序運行情況:按規(guī)定時間到機房運行程序,由老師檢查運行情況(2)課程設(shè)計報告:是否按規(guī)定書寫課程設(shè)計要求的各項內(nèi)容課程設(shè)計成績采用百分制:100%=平時(20)上機檢查(30%)+課程設(shè)計報告(50%)二、題目說明 2.1

6、 程序開發(fā)背景 計算機已經(jīng)成為我們學(xué)習(xí)和工作的得力助手,它被應(yīng)用于許多領(lǐng)域,之所以如此,主要有以下幾個方面的原因:首先,計算機可以替代人工進行許多繁雜的勞動;其次,計算機可以節(jié)省許多資源;第三計算機可以大大提高人們的工作效率;第四,計算機可以保證文檔的安全通過c語言,我們可以開發(fā)許多新的項目,實現(xiàn)智能操作化,科技化,實現(xiàn)低投入,高產(chǎn)出的良好現(xiàn)象?,F(xiàn)在我國學(xué)生成績管理還停留在紙介質(zhì)層面上,這樣的機制已經(jīng)不能適應(yīng)時代的發(fā)展,因為他浪費許多人力物力資源,在信息時代這種管理方法必然將被計算機為基礎(chǔ)的信息管理方法所取代。 2.2 開發(fā)工具介紹 c語言是combined language(組合語言)的中英

7、混合簡稱。是一種計算機程序設(shè)計語言。它既具有高級語言的特點,又具有匯編語言的特點。它可以作為工作系統(tǒng)設(shè)計語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言,編寫不依賴計算機硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到c語言,具體應(yīng)用比如單片機以及嵌入式系統(tǒng)開發(fā)。早期的c語言主要是用于unix系統(tǒng)。由于c語言的強大功能和各方面的優(yōu)點逐漸為人們認識,到了八十年代,c語言開始進入其它操作系統(tǒng),并很快在各類大、中、小和微型計算機上得到了廣泛的使用。成為當(dāng)代最優(yōu)秀的程序設(shè)計語言之一。c語言的特點: c語言是一種結(jié)構(gòu)化語言。它層次清晰,便于按模塊化方式組織程序,易于

8、調(diào)試和維護。c語言的表現(xiàn)能力和處理能力極強。它不僅具有豐富的運算符和數(shù)據(jù)類型,便于實現(xiàn)各類復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。它還可以直接訪問內(nèi)存的物理地址,進行位(bit)一級的操作。由于c語言實現(xiàn)了對硬件的編程操作,因此c語言集高級語言和低級語言的功能于一體。既可用于系統(tǒng)軟件的開發(fā),也適合于應(yīng)用軟件的開發(fā)。c語言中:main是主函數(shù)的函數(shù)名,表示這是一個主函數(shù)。每一個c源程序都必須有,且只能有一個主函數(shù)(main函數(shù))。函數(shù)調(diào)用語句,printf函數(shù)的功能是把要輸出的內(nèi)容送到顯示器去顯示。printf函數(shù)是一個由系統(tǒng)定義的標準函數(shù),可在程序中直接調(diào)用。此外,c語言還具有效率高,可移植性強等特點。因此廣泛地移植

9、到了各類各型計算機上,從而形成了多種版本的c語言。優(yōu)點: (1)c語言靈活性好,效率高,可以接觸到軟件開發(fā)比較底層的東西。 (2)微軟的mfc庫博大精深,學(xué)會它可以讓隨心所欲地進行編程。 (3)vc是微軟制作的產(chǎn)品,與操作系統(tǒng)的結(jié)合更加緊密。 缺點: 對使用者的要求比較高,既要具備豐富的c語言編程經(jīng)驗,又要具有一定的windows編程基礎(chǔ),它的過于專業(yè)使得一般的編程愛好者學(xué)習(xí)起來會有不小的困難。 三、總體設(shè)計3.1 系統(tǒng)結(jié)構(gòu)圖學(xué)生成績管理系統(tǒng)是為了方便用戶根據(jù)需要對學(xué)生的各科成績信息進行管理的系統(tǒng)。在如今的現(xiàn)代化信息理念下,一個學(xué)生管理系統(tǒng)在國際各大高校的教育機構(gòu)中是一個必不可少的應(yīng)用程序,它

10、可以方便的對學(xué)生信息進行查詢,比較,排序等功能,大大提高工作效率。學(xué)生成績管理系統(tǒng)包括人員信息的錄入,信息查詢,比較,排序等操作。內(nèi)容比較龐大復(fù)雜。通過以上說明,我們可以總結(jié)得到如下的系統(tǒng)結(jié)構(gòu)圖;各科最低分學(xué)生成績管理增加學(xué)生成績顯示學(xué)生成績查詢學(xué)生成績學(xué)生成績統(tǒng)計與排序?qū)W生成績比較按姓名查找學(xué)生總分學(xué)生平均分平均分降序排序各科最高分各科平均分圖3-13.2模塊流程圖3.2.1成績添加和打印模塊開始輸入學(xué)號輸入姓名輸入成績打印學(xué)生信息圖3-2 3.2.2查看成績模塊查看成績輸入姓名是否相等輸出相關(guān)信息結(jié)束yn圖3-33.2.3成績排序模塊學(xué)生成績利用for循環(huán)i=0;in-1;i+j=i;ja

11、verage(head+k)-average) if(head+j)-average(head+k)-average) k=j;if(k!=i)temp=*(head+k)*(head+k)=*(head+i)*(head+i)=temp圖 3-43.2.4成績比較模塊開始for(p=head;phead+m;p+)for(i=0;iscoreip-scorekp-scoreiscorek)p-max=p-scoreip-min=p-scorei輸出最大值最小值開始for(p=head;phead+m;p+)for(i=0;iscoreip-scorekp-scoreiscorek)開始for

12、(p=head;phead+m;p+)for(i=0;in;i+)是輸出最大值最小值圖3-5四、詳細說明4.1成績添加模塊appendscore函數(shù):功能簡介:向鏈表的末尾添加從鍵盤輸入學(xué)生的學(xué)號、姓名和成績等信息。 函數(shù)參數(shù):結(jié)構(gòu)體指針head,指向存儲學(xué)生信息的結(jié)構(gòu)體數(shù)組的首地址。 整形變量n,表示學(xué)生人數(shù); 整形變量m,表示考試科目。 圖4-1int appendscore(stu *head,int n,int m) int j; stu *p; char ch; for(p=head+n;pnumber); printf(input name:); scanf(%s,p-name);

13、 for(j=0;jscore+j); n+; printf(do you want to append a new node(y/n)?); scanf(%c,&ch); if(ch=n|ch=n) return n; 定義結(jié)構(gòu)體指針head,存儲學(xué)生信息。利用for循環(huán)依次輸入學(xué)生的學(xué)號、姓名和成績等信息。4.2成績顯示模塊printscore函數(shù):功能簡介:打印學(xué)生的學(xué)號、姓名和成績等信息; 函數(shù)參數(shù):結(jié)構(gòu)體指針head,指向存儲學(xué)生信息的結(jié)構(gòu)體數(shù)組的首地址。 整形變量n,表示學(xué)生人數(shù); 整形變量m,表示考試科目。圖4-2void printscore(stu *head,int n,i

14、nt m) stu *p; int i; char str100=0,temp4; strcat(str,number name); for(i=1;i=m;i+) strcat(str,score); itoa(i,temp,10); strcat(str, ); strcat(str, average); printf(%s,str); for(p=head;pnumber,p-name); for(i=0;iscorei); printf(%9.2fn,p-average); 定義結(jié)構(gòu)體變量head,儲存學(xué)生信息,利用for循環(huán)依次輸出學(xué)生的學(xué)好、姓名和成績等信息。4.3按姓名查找模塊s

15、earchscort函數(shù):功能簡介:按學(xué)號查找學(xué)生成績并顯示查找結(jié)果; 函數(shù)參數(shù):結(jié)構(gòu)體指針head,指向存儲學(xué)生信息的結(jié)構(gòu)體數(shù)組的首地址。 整形變量n,表示學(xué)生人數(shù); 整形變量m,表示考試科目。圖4-3void searchscore(stu *head,int n,int m) int name,findno; printf(please input the name you want to search:); scanf(%c,&name); findno=searchname(head,name,n); if(findno=-1) printf(nnot found!n); else

16、printscore(head+findno,1,m); 輸入要查找的學(xué)生的姓名,進入系統(tǒng),定義findno,findno=searchname(head,name,n),如果findno=-1,那么這顯示沒有找到,如果findno不等于-1,則說明有,調(diào)用printscore函數(shù),輸出要查找的學(xué)生的成績。4.4成績排序模塊sortscore函數(shù):功能簡介:用選擇法按平均成績由高到低排序;函數(shù)參數(shù):結(jié)構(gòu)體指針head,指向存儲學(xué)生信息的結(jié)構(gòu)體數(shù)組的首地址。 整形變量n,表示學(xué)生人數(shù)。圖4-4void sortscore(stu *head,int n) int i,j,k; stu temp;

17、 for(i=0;in-1;i+) k=i; for(j=i;javerage(head+k)-average) k=j; if(k!=i) temp=*(head+k); *(head+k)=*(head+i); *(head+i)=temp; 定義i、j、k,i是指向?qū)W生人數(shù)的外循環(huán),k、j是指向?qū)W生人數(shù)的內(nèi)循環(huán)。k=i時,如果j指向的數(shù)比k指向的那個數(shù)大,那么k=j.而k!=i時,i指向的外循環(huán)的數(shù)與k指向的內(nèi)循環(huán)的數(shù)相等。實現(xiàn)排序。4.5成績比較模塊readscore函數(shù):功能簡介:結(jié)合學(xué)生的各科成績,計算每科的平均成績、最高分和最低分。 函數(shù)參數(shù):結(jié)構(gòu)體指針head,指向存儲學(xué)生信息

18、的結(jié)構(gòu)體數(shù)組的首地址。 整形變量n,表示學(xué)生人數(shù); 整形變量m,表示考試科目。 圖4-5void readscore(stu *head,int n,int m) stu *p; int i,k; for(p=head;psum1=0; for(i=0;isum1=p-sum1+p-scorei; p-average1=(float)p-sum1/n; k=0; i=1; if(p-scoreip-scorek) k=i; p-max=p-scorei; 定義結(jié)構(gòu)體指針p,p是指向考試科目的外循環(huán),定義i,i是指向?qū)W生人數(shù)的內(nèi)循環(huán)。利用這兩個循環(huán),對各科成績進行統(tǒng)計與比較,計算出各科成績的總分

19、,繼而計算出各科成績的平均分,以及各科成績的最高分和最低分。五、遇到的問題和解決方法1、for(i=0;in;i+)經(jīng)常寫成for(i=0,in,i+),導(dǎo)致運行錯誤。解決方法:編程時候需要仔細和耐心。并記住易錯的地方,輸入時不應(yīng)該太快 然后仔細檢查。2. 對一些課本中的知識不熟悉,導(dǎo)致剛開始編程的時候很難下手。 解決方法:重新掌握不熟悉的知識并收集相關(guān)資料,通過課程設(shè)計,我們要熟練的掌握c語言的算法、語言、函數(shù)的調(diào)用、循環(huán)的使用、數(shù)組的運用等。 3、由于馬虎經(jīng)常漏掉、;等等。 解決方法:時刻提醒自己認真仔細一點,病記住易錯、易漏的地方,而且要仔細認真檢查。 4、有些程序太過復(fù)雜,違反了kis

20、s規(guī)則。 解決方法:要深刻理解程序的意義,化繁為簡,化難為易5、計算機應(yīng)用不熟練,截圖是我遇到的最大的問題。 解決方法:提高計算機的操作技術(shù),使快而有效的完成任務(wù)。 六、課程設(shè)計總結(jié)一周的課程設(shè)計很快結(jié)束了,一開始拿起題目時什么都不懂,真不知道從何下手到后來覺得它很有趣,很想去做并希望能把它做得更好。剛開始錯誤實在太多,改錯誤真的很頭疼,不過當(dāng)經(jīng)過一次又一次的調(diào)試后,終于弄好了,那時卻是特別的高興??偟膩碚f就是這次的課程讓我學(xué)了不少東西,也讓我對編程更有興趣,雖然學(xué)的不是很好,不過以后會努力的。課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生

21、實際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,當(dāng)今計算機應(yīng)用在生活中可以說得是無處不在。因此作為二十一世紀的大學(xué)來說掌握計算機開發(fā)技術(shù)是十分重要的??偟膩碚f,本次課程設(shè)計,實在是受益匪淺。雖然課程設(shè)計只有短短的幾天,但是我發(fā)現(xiàn)我學(xué)到的知識比整整一個學(xué)期學(xué)到的都多。理論和實踐的相結(jié)合是學(xué)習(xí)最有效的方法。在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故?;仡櫰鸫舜握n程設(shè)計,至今我仍感慨頗多,的確,從從拿到題目到完成整個編程,從理論到實踐,在整整一個星期的日子里,可以學(xué)到很多很多的的東西,同時不

22、僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。本次c 語言的課程設(shè)計讓我對c 語言的學(xué)習(xí)又有了更深入的了解,也讓我更深刻地領(lǐng)悟到了“實踐出真理”這個道理,在上機實踐過程中學(xué)到的知識遠遠超過了在課堂上十幾周學(xué)到的,學(xué)校組織的這次實習(xí)讓我們這些實踐知識匱乏的大學(xué)生增添了許多社會經(jīng)驗,為我們將來走上工作崗位其了不小的鋪墊作用。本次課程設(shè)計中遇到了很多以前沒有遇到過的問題,也曾想

23、要放棄,但看到那些同學(xué)都在那認真的寫程序,給了我繼續(xù)的信心。在同學(xué)的幫助下,我順利的結(jié)束了本次課程設(shè)計,讓我知道原來憑借自己努力取得的成功會讓自己這么欣慰,也讓我知道了友誼和團結(jié)的重要性。七、參考文獻1.visual c+課程設(shè)計案例精編 作者:夏崇鐠、任海軍、余健2.c語言程序設(shè)計 作者譚浩強3.實用c語言程序設(shè)計教程 李金祥等編 中國電力出版社 20104.網(wǎng)址1: 5.網(wǎng)址2: 附錄(源程序代碼)#include#include#include#include#define stu_num 10#define course_num 4struct student int number;

24、char name10; int score4; int sum; int sum1; int max; int min; float average; float average1;typedef struct student stu;int appendscore(stu *head,int n,int m) int j; stu *p; char ch; for(p=head+n;pnumber); printf(input name:); scanf(%s,p-name); for(j=0;jscore+j); n+; printf(do you want to append a ne

25、w node(y/n)?); scanf(%c,&ch); if(ch=n|ch=n) return n; void printscore(stu *head,int n,int m) stu *p; int i; char str100=0,temp4; strcat(str,number name); for(i=1;i=m;i+) strcat(str,score); itoa(i,temp,10); strcat(str, ); strcat(str, average); printf(%s,str); for(p=head;pnumber,p-name); for(i=0;iscor

26、ei); printf(%9.2fn,p-average); void totalscore(stu *head,int n,int m) stu *p; int i; for(p=head;psum=0; for(i=0;isum=p-sum+p-scorei; p-average=(float)p-sum/m; void sortscore(stu *head,int n) int i,j,k; stu temp; for(i=0;in-1;i+) k=i; for(j=i;javerage(head+k)-average) k=j; if(k!=i) temp=*(head+k); *(

27、head+k)=*(head+i); *(head+i)=temp; void readscore(stu *head,int n,int m) stu *p; int i,k; for(p=head;psum1=0; for(i=0;isum1=p-sum1+p-scorei; p-average1=(float)p-sum1/n; k=0; i=1; if(p-scoreip-scorek) k=i; p-max=p-scorei; int searchname(stu *head,char name,int n) int i; for(i=0;inumber=name) return i; return -1;void searchscore(stu *head,int n,int m) int name,findno; printf(please input the name you want to search:); scanf(%c,&name); findno=searchname(head,name,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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論