版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 課 程 設 計</b></p><p> 2013年 11月 3 日</p><p> 設計題目:學生成績統(tǒng)計</p><p> 設計條件:掌握C語言的基本知識,能夠熟練地應用順序結構、選擇結構、循環(huán)結構,能夠善于應用結構體數(shù)組和對文件的輸入輸出。</p><p><b>
2、 設計內容: </b></p><p><b> 【問題描述】</b></p><p> 學期考試結束,統(tǒng)計有N個班某班每個人的平均成績,每門課的平均成績,并按個人平均成績從高到低的順序輸出成績,輸出不及格人名單。輸入、輸出格式自定。</p><p><b> 【實現(xiàn)提示】</b></p>
3、<p> 假設某班有:30人(姓名自定)</p><p> 考試課程有:高等數(shù)學、物理、外語、C語言、德育5門課程。</p><p> 將所有同學的成績保留在文件中,對文件中的數(shù)據(jù)處理,輸出所要求的內容,程序的功能主要包括3方面: </p><p><b> 輸入成績到文件中</b></p><p>
4、<b> 輸出成績</b></p><p><b> 輸出不及格學生名單</b></p><p><b> 成績排序</b></p><p><b> 修改記錄</b></p><p><b> 刪除記錄</b></p
5、><p><b> 插入記錄等</b></p><p> 主函數(shù)中對3個功能選擇(菜單),調用對應的函數(shù)完成。</p><p> 下達日期:2013年10月</p><p> 完成日期:2013年11月</p><p><b> 目錄</b></p>&l
6、t;p> 前言···································
7、;·4</p><p> 設計思想·······························
8、;·4</p><p> 設計過程·······························
9、;·4</p><p> 程序流程圖······························7<
10、;/p><p> 程序清單································8<
11、;/p><p> 總結·································
12、···8</p><p> 附錄1.用戶文檔····························
13、183;10</p><p> 附錄2.技術文檔·····························13</p&
14、gt;<p> 參考文獻·································
15、183;·13</p><p><b> 前言</b></p><p> 本課程設計提供了一個既動手又動腦,自學,查資料,獨立實踐的機會。將課本上的理論知識和實際有機的結合起來,鍛煉學生實際分析問題和解決問題的能力,提高學生適應實際、實踐編程的能力,使對C語言系統(tǒng)編程有一個大致的了解。</p><p> 本課程設計——學生成績統(tǒng)
16、計,在日常的教學過程中具有較高的應用價值。當老師批改完一大批試卷后,需要統(tǒng)計成績得出相應結果時,“學生成績統(tǒng)計”就能夠發(fā)揮其重要作用。設計這個程序,主要用到結構體數(shù)組和文件兩個知識點,再結合順序、循環(huán)、選擇、函數(shù)······來實現(xiàn)功能。</p><p><b> 設計思想</b></p><p> 首先編
17、譯預處理,輸入頭文件;再之全局聲明;對函數(shù)進行定義。再建立一個student結構體,把結構體里面的內容寫入一個文件中。然后先把主函數(shù)main()寫好,再把子函數(shù)完善好,最后測試、修改,直到達到最終功能和界面美觀為止。</p><p><b> 設計過程</b></p><p> 根據(jù)設計要求做好分析,把主要框架設計羅列出來??紤]到此程序主要有3大方面的內容,所以主
18、函數(shù)里分為3大模塊,模塊里面再根據(jù)要求執(zhí)行相應的內容。</p><p> 根據(jù)主要的框架,確定沒有問題后,編寫主函數(shù)如下:</p><p> #include<stdio.h></p><p> #include<stdlib.h></p><p> #include<string.h></p
19、><p> #define N 3000</p><p> int system(const char*string);</p><p> struct student //聲明結構體類型struct student</p><p> {
20、 //以下4行為結構體的成員</p><p> char name[20];</p><p> float score[5];</p><p> float aver;</p><p><b> int cla;</b></p><p><b> };</b><
21、;/p><p> void input(struct student stu[]);</p><p> void print(struct student stu[]);</p><p> void prinot(struct student stu[]);</p><p> void list(struct student stu[])
22、;</p><p> void changes(struct student stu[]);</p><p> void del(struct student stu[]);</p><p> void ser(struct student stu[]);</p><p> void bian();</p><p&
23、gt; void prin();</p><p><b> int M;</b></p><p> FILE*fp; //定義一個指向文件的指針變量fp</p><p> struct student stu[4],*p=stu;</p><p> void main
24、()</p><p><b> {</b></p><p> char choice,zlq='y';</p><p> int over=0;</p><p> while(!over) //循環(huán)語句</p><p><b>
25、 {</b></p><p> if(zlq=='Y'||zlq=='y')</p><p><b> {</b></p><p> printf("***************功能選擇****************\n");</p><p>
26、 printf("1.輸入成績到文件中\(zhòng)n");</p><p> printf("2.輸出成績\n");</p><p> printf("3.編輯\n");</p><p> printf("***************************************\n")
27、;</p><p> printf("你的選擇(1-3):");</p><p><b> do{</b></p><p> scanf("%c",&choice);</p><p> }while(choice=='\n');</p>
28、<p> printf("\n");</p><p> switch(choice) //用switch來進行選擇</p><p><b> {</b></p><p><b> case'1':</b></p><p> inpu
29、t(p);break;</p><p><b> case'2':</b></p><p> prin();break;</p><p><b> case'3':</b></p><p> bian();break;</p><p>
30、<b> default:</b></p><p> printf("輸入錯誤!\n");</p><p><b> continue;</b></p><p><b> }</b></p><p> if(!over) //
31、在每次運行完選項后,選擇退出還是繼續(xù)</p><p><b> {</b></p><p> printf("\n\n\n返回主菜單嗎?\n(請輸入Y或者N,Y代表是,N代表不是.)\n");</p><p> scanf("%s",&zlq);</p><p>
32、system("CLS");</p><p><b> }</b></p><p><b> }</b></p><p> if(zlq=='N'||zlq=='n')</p><p><b> {</b></p
33、><p> printf("歡迎下次使用.\n");</p><p><b> over=1;</b></p><p><b> }</b></p><p> if(zlq!='Y'&&zlq!='N'&&zlq
34、!='y'&&zlq!='n')</p><p><b> {</b></p><p> printf("\n輸入錯誤!將退出~\n");</p><p><b> over=1;</b></p><p><b>
35、 }</b></p><p><b> }</b></p><p><b> }</b></p><p> 輸入1后,按enter,會出現(xiàn)如下主菜單:</p><p> 確定好主函數(shù)后,再根據(jù)要求撰寫執(zhí)行“輸入成績到文件中”之后相對應的“返回主菜單”程序,檢查是否會出現(xiàn)錯誤。&l
36、t;/p><p> 待檢查無錯誤之后,開始寫下一步:“輸出成績”程序。輸出程序里面又包含有4個子程序語句,分別為“排序”、“輸出成績”、“輸出不及格名單”、“返回”,查找與之相對應的函數(shù)的資料,然后撰寫相應程序。</p><p> 與第4步相似地進行撰寫“編輯”程序下的“修改”、“刪除”、“插入”、“返回”程序。</p><p> 運行程序,看是否出現(xiàn)錯誤,如有錯
37、誤,根據(jù)相關提示修改錯誤,例如一些字符漏寫或者函數(shù)類型錯誤等等。</p><p> 等修改完,再次運行,根據(jù)功能選擇,輸入相應數(shù)字,運行看看能否執(zhí)行相應要求的功能。輸入一些假設結果,驗證程序設置的正確性。</p><p> 完善所有之后,就正式宣告課程設計結束,并撰寫設計報告。</p><p><b> 程序流程圖</b></p&g
38、t;<p><b> 程序清單</b></p><p> 各函數(shù)的功能和實現(xiàn):</p><p> 1、輸入某班的所有學生的成績。輸入信息包括:班級,姓名,高等數(shù)學、物理、外語、C語言、德育5門課程成績并寫入文件“stud”中;可用函數(shù)void input(struct student stu[])來實現(xiàn)。</p><p>
39、 2、輸出模塊:函數(shù)void print()里嵌套4個函數(shù)用于排序、輸出成績、輸出不及格名單、返回;</p><p> 排序:函數(shù) void list(struct student stu[])只是實現(xiàn)排序個功能,需要輸出名單得需再次選擇選項“2”。</p><p> 輸出:輸出學生的信息以及成績——void print(struct student stu[]):通過輸入班級來查看某
40、個班的相關情況。</p><p> 輸出平均分不及格的名單:用函數(shù)void prinot(struct student stu[])來實現(xiàn)輸出所以平均分不及格的學生的班級及姓名。</p><p> 返回:返回到主界面。</p><p> 3、編輯模塊:函數(shù)void bian()中應用4個函數(shù)加于循環(huán)選擇,可以進行選擇修改、刪除、插入、返回;</p>
41、<p> 修改:在函數(shù)void changes(struct student stu[])里面輸入需要修改的學生的班級、姓名以及成績,就可以對某班某個學生的成績進行修改。</p><p> 刪除:用函數(shù)void del(struct student stu[])實現(xiàn)。刪除某班某個學生的成績。</p><p> 插入:用函數(shù)void ser(struct student
42、stu[])實現(xiàn)。實現(xiàn)在某班中插入某些同學的相關信息。</p><p> 4、判斷是否返回主菜單:用判斷語言if。</p><p><b> 總結</b></p><p> 回顧起此次C語言課程設計,我感慨頗多,從拿到題目到完成整個編程、調試到撰寫報告,從理論到實際,在將近一個月的時間里,我學到了很多知識,攻破了以前的一些知識盲點。在這之
43、中,我不僅可以鞏固了以前學習的知識,而且學習到了很多在書本上所沒有學到過的知識,拓寬了知識面。通過此次課程設計,我懂得了理論和實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實際相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。</p><p> 在設計的過程中,算是困難重重吧。在編寫時,遇到不少問題,低級錯誤是主要的問題。特別在整合時,問題更多
44、。比如因float誤用作int而導致的錯誤,花費了我好長的時間。由其得到,錯誤或許就出在最根本處。由于本課題中的很多知識點都沒有學過,要自己去翻看書里后面幾章的內容去熟悉理解,并且通過查找課外的相關資料。小到一個術語,大到一個函數(shù)、一個邏輯關系,都需要在這過程中理解。開始設計出來的程序存在著很多錯誤,修改了很多次都沒有出現(xiàn)可觀的跡象,詢問了周圍的同學研究了之后才得到解決。設計出來的菜單也不是預想的那樣,而是整個窗口出現(xiàn)混亂。解決這個問題
45、就是調整。一個系統(tǒng)的菜單和信息的提示語句是非常重要的。如果沒有這些用戶根本不知道怎么用你設計的這個系統(tǒng),在設計的調試過程中也無法順利地完成調試工作。有了一個清晰明了的菜單和一些提示信息之后,調試過程完成得非常順利。</p><p> 在本次實習過程中碰到的編譯、連接的錯誤主要有:</p><p><b> 定義變量時:</b></p><p&g
46、t; 變量不容易聯(lián)系起來,經(jīng)常會寫錯變量名,但是在錯誤信息的提示下一般還是很容易找到。但是在寫各個函數(shù)時,發(fā)現(xiàn)一個變量名,只要不是全局變量就可以無數(shù)次定義,只要分開在不同的函數(shù)中就可以了。不過需要注意的是在定義的時候有些函數(shù)使用同樣的變量名而表示不同的作用,因而使用要很小心,定義及定義的位置要特別留意。在編寫程序時要安靜,才不會出現(xiàn)低級錯誤。</p><p><b> 語法錯誤:</b>
47、</p><p> 語法錯誤在通過書本參考下能夠修改,并且在上機的錯誤提示中得到修改,但是由于書本是C語言,不是C++的。所以在使用時要注意在主函數(shù)和一些定義變量跟聲明函數(shù)時有些不同,這不是語法的錯誤,而是作為一個程序員必須要注意到的,要體會兩種語言的區(qū)別,由于平時看書不仔細、沒有經(jīng)過仔細的思考造成的。如沒有注意具體數(shù)據(jù)使用是有一定的范圍限定。</p><p> 在本次調試過程中我還碰
48、到了一些以前上機過程中從未碰到過的錯誤。邏輯上的錯誤機器不易檢查出來,這時需要對數(shù)據(jù)結果進行分析。這種錯誤的查找是最難的,需要編程序的人有相當?shù)哪托暮图毿娜グ褑栴}找出來。這也是本次程序編輯過程中碰到的最大的難題。因此我使用的是一個一個函數(shù)的檢查,并通過調試修改。</p><p> 通過此次課程設計,我還得到了一些有用的教訓:寫程序時必須要細心,不能輸錯一個字符標點,就連全角半角也得注意。在修改時要有耐心,編譯出
49、錯后必須逐個錯誤去改正,絕不能心急浮躁,否則修改之后還會有新的錯誤。在設計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。通過這次課程設計之后,我一定把以前所學過的知識重新溫故。</p><p> 剛開始做的時候,一點感覺都沒有,到后來就越有感覺了,開始慢慢懂了!曾記得有個同學說過“有問題找百度”,這次剛好派上用場了,在做程序設計的過程中,不懂的就上網(wǎng)搜索,真的學到挺多東西的!我
50、想接下來的日子也得好好補補C語言,好為以后的課程打下基礎。</p><p> 做課程設計的日子是辛苦的,但是當完成一項工程后,那種欣喜是油然而生的。連續(xù)奮戰(zhàn)了幾個星期,尤其在臨近上交期限的時候,我連續(xù)幾晚待在電腦前,一待就是幾個小時,敲擊著代碼,測試著每個語句,然后上網(wǎng)查找資料,看書里的內容。這種生活雖然很累,很枯燥,但是感覺世界很安靜,鍵盤的聲響是一種心里知識的書寫。尤其是最后的這段期間,說起一件有趣的事情,
51、大家為了老師交代的格式和字數(shù)拼命查找資料而且為了趕在驗收日期前做好,一天除了上課睡覺之外,吃完飯就開工了。昨晚宿舍還集體為了測試程序而到11點都還沒人洗澡,然后就是集體晚睡了。這都是此次課程設計過程中發(fā)生的趣事。不過這種生活也是很難得,難得因為這樣的一件事大家能夠那么集中地做事情。</p><p> 挺難得的一段經(jīng)歷,C語言,以后要再翻出來看看,而且,要努力準備下次的二級C考試。</p><
52、p><b> 附錄1.用戶文檔</b></p><p><b> 調試與測試</b></p><p><b> 主要程序運行結果:</b></p><p><b> 運行開始</b></p><p><b> 選擇1輸入成績<
53、;/b></p><p><b> 輸入完成后</b></p><p> 選擇Y返回(輸入Y或y都可以)</p><p><b> 選擇2,輸出</b></p><p> 選擇1對成績進行排序后,再選擇2輸出成績</p><p> 輸入3,輸出不及格名單<
54、;/p><p> 返回主菜單,選擇3進行編輯</p><p> 選擇1,修改a的成績</p><p> 返回主菜單,選擇2輸出,檢查是否修改成功</p><p> 選擇2,刪除b的信息</p><p> 選擇3,插入d的信息</p><p><b> 附錄2.技術文檔</
55、b></p><p><b> 主要函數(shù)</b></p><p><b> input()</b></p><p> 該函數(shù)主要用來創(chuàng)建新數(shù)據(jù)文件,當?shù)谝淮问褂迷摮绦蚧蛘咴瓌?chuàng)建的文件的內容無效,需建立一個新的文件的時候,可通過該函數(shù)來實現(xiàn)。</p><p><b> prin
56、t()</b></p><p> 使用該函數(shù)可以顯示所有的操作員自己輸入的所有的學生數(shù)據(jù)記錄。它只用到了簡單的printf(“”)語句,當需先打開數(shù)據(jù)文件時,讀取其中的數(shù)據(jù)記錄,然后將這些記錄按一定的形式打印在屏幕上。</p><p> 2、insert()</p><p> 該函數(shù)可對文件的數(shù)據(jù)進行插入。在進行添加的時候需要首先打開原來的數(shù)據(jù)文件
57、,在該函數(shù)中調用了input()函數(shù)將數(shù)據(jù)文件打開。再調用input()函數(shù)文件之后同input()中一樣的形式輸入數(shù)據(jù),輸入完之后進行保存,對插入的數(shù)據(jù)進行保存前要先確定插入的地點,insert()函數(shù)在設計時將插入點放在了文件末尾,即將添加的數(shù)據(jù)加到文件的最后。Insert()函數(shù)與創(chuàng)建新數(shù)據(jù)文件的input()函數(shù)除保存及被功能上的使用時間不同外,其他功能基本相同。</p><p> 3、delete()
58、</p><p> 該函數(shù)用來刪除不需要的數(shù)據(jù)記錄。</p><p><b> changs()</b></p><p> 該函數(shù)用來修改程序中的某些數(shù)據(jù)。</p><p><b> bian()</b></p><p> 該函數(shù)用來編輯,指使下一步的“刪除”、“修
59、改”、“插入”要求。</p><p><b> list()</b></p><p> 該函數(shù)用來羅列出程序輸入的名單。</p><p><b> 7、main()</b></p><p> 一個程序主函數(shù)不能少。當以上的函數(shù)均編完之后,要實現(xiàn)各個功能操作的連接,還必須有主函數(shù)將它們聯(lián)系起來
60、,這樣才能達到理想的結果。</p><p><b> 參考文獻</b></p><p> 1. 譚浩強《C程序設計》(第四版)清華大學出版社,2010</p><p> 2. 馬靖善 秦玉平《C語言等程序設計》清華大學出版社,2005</p><p> 3. 王士元《C高級實用程序設計》清華大學出版社,1995&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設計報告-- 學生成績統(tǒng)計系統(tǒng)
- c++語言課程設計 ----學生成績統(tǒng)計
- c語言課程設計-學生成績統(tǒng)計管理
- c語言課程設計報告-學生成績管理系統(tǒng)
- c語言課程設計報告學生成績管理系統(tǒng)
- c語言課程設計報告---學生成績管理系統(tǒng)
- c語言課程設計報告--學生成績管理系統(tǒng)
- c語言課程設計報告----學生成績管理系統(tǒng)
- c語言課程設計報告--學生成績管理系統(tǒng)
- c語言課程設計--學生成績管理
- c語言課程設計--- 學生成績管理
- c語言課程設計報告--學生成績管理系統(tǒng)
- 課程設計報告(學生成績管理系統(tǒng)c語言)
- c語言課程設計報告書--學生成績管理
- c語言學生成績管理系統(tǒng)課程設計報告
- c語言學生成績管理系統(tǒng)課程設計報告
- c語言課程設計學生成績管理系統(tǒng)設計
- c語言課程設計--學生成績管理系統(tǒng)
- c語言課程設計---學生成績管理系統(tǒng)
- c語言課程設計學生成績管理系統(tǒng)
評論
0/150
提交評論