版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
歡迎閱讀本文檔,希望本文檔能對您有所幫助!歡迎閱讀本文檔,希望本文檔能對您有所幫助!感謝閱讀本文檔,希望本文檔能對您有所幫助!感謝閱讀本文檔,希望本文檔能對您有所幫助!歡迎閱讀本文檔,希望本文檔能對您有所幫助!感謝閱讀本文檔,希望本文檔能對您有所幫助!課程設(shè)計2013年11月3日設(shè)計題目:學(xué)生成績統(tǒng)計設(shè)計條件:掌握C語言的基本知識,能夠熟練地應(yīng)用順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),能夠善于應(yīng)用結(jié)構(gòu)體數(shù)組和對文件的輸入輸出。設(shè)計內(nèi)容:【問題描述】學(xué)期考試結(jié)束,統(tǒng)計有N個班某班每個人的平均成績,每門課的平均成績,并按個人平均成績從高到低的順序輸出成績,輸出不及格人名單。輸入、輸出格式自定?!緦崿F(xiàn)提示】假設(shè)某班有:30人(姓名自定)考試課程有:高等數(shù)學(xué)、物理、外語、C語言、德育5門課程。將所有同學(xué)的成績保留在文件中,對文件中的數(shù)據(jù)處理,輸出所要求的內(nèi)容,程序的功能主要包括3方面:輸入成績到文件中輸出成績輸出不及格學(xué)生名單成績排序修改記錄刪除記錄插入記錄等主函數(shù)中對3個功能選擇(菜單),調(diào)用對應(yīng)的函數(shù)完成。下達(dá)日期:2013年10月完成日期:2013年11月目錄前言····································4設(shè)計思想································4設(shè)計過程································4程序流程圖······························7程序清單································8總結(jié)····································8附錄1.用戶文檔·····························10附錄2.技術(shù)文檔·····························13參考文獻(xiàn)···································13前言本課程設(shè)計提供了一個既動手又動腦,自學(xué),查資料,獨立實踐的機會。將課本上的理論知識和實際有機的結(jié)合起來,鍛煉學(xué)生實際分析問題和解決問題的能力,提高學(xué)生適應(yīng)實際、實踐編程的能力,使對C語言系統(tǒng)編程有一個大致的了解。本課程設(shè)計——學(xué)生成績統(tǒng)計,在日常的教學(xué)過程中具有較高的應(yīng)用價值。當(dāng)老師批改完一大批試卷后,需要統(tǒng)計成績得出相應(yīng)結(jié)果時,“學(xué)生成績統(tǒng)計”就能夠發(fā)揮其重要作用。設(shè)計這個程序,主要用到結(jié)構(gòu)體數(shù)組和文件兩個知識點,再結(jié)合順序、循環(huán)、選擇、函數(shù)······來實現(xiàn)功能。設(shè)計思想首先編譯預(yù)處理,輸入頭文件;再之全局聲明;對函數(shù)進(jìn)行定義。再建立一個student結(jié)構(gòu)體,把結(jié)構(gòu)體里面的內(nèi)容寫入一個文件中。然后先把主函數(shù)main()寫好,再把子函數(shù)完善好,最后測試、修改,直到達(dá)到最終功能和界面美觀為止。設(shè)計過程根據(jù)設(shè)計要求做好分析,把主要框架設(shè)計羅列出來。考慮到此程序主要有3大方面的內(nèi)容,所以主函數(shù)里分為3大模塊,模塊里面再根據(jù)要求執(zhí)行相應(yīng)的內(nèi)容。根據(jù)主要的框架,確定沒有問題后,編寫主函數(shù)如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#defineN3000intsystem(constchar*string);structstudent//聲明結(jié)構(gòu)體類型structstudent{//以下4行為結(jié)構(gòu)體的成員 charname[20]; floatscore[5]; floataver; intcla;};voidinput(structstudentstu[]); voidprint(structstudentstu[]); voidprinot(structstudentstu[]); voidlist(structstudentstu[]); voidchanges(structstudentstu[]); voiddel(structstudentstu[]); voidser(structstudentstu[]); voidbian(); voidprin(); intM; FILE*fp;//定義一個指向文件的指針變量fp structstudentstu[4],*p=stu;voidmain(){ charchoice,zlq='y'; intover=0; while(!over)//循環(huán)語句 { if(zlq=='Y'||zlq=='y') { printf("***************功能選擇****************\n"); printf("1.輸入成績到文件中\(zhòng)n"); printf("2.輸出成績\n"); printf("3.編輯\n"); printf("***************************************\n");printf("你的選擇(1-3):"); do{ scanf("%c",&choice); }while(choice=='\n'); printf("\n"); switch(choice)//用switch來進(jìn)行選擇 { case'1': input(p);break; case'2': prin();break; case'3': bian();break; default: printf("輸入錯誤!\n"); continue; } if(!over)//在每次運行完選項后,選擇退出還是繼續(xù) { printf("\n\n\n返回主菜單嗎?\n(請輸入Y或者N,Y代表是,N代表不是.)\n"); scanf("%s",&zlq); system("CLS"); } } if(zlq=='N'||zlq=='n') { printf("歡迎下次使用.\n"); over=1; } if(zlq!='Y'&&zlq!='N'&&zlq!='y'&&zlq!='n') { printf("\n輸入錯誤!將退出~\n"); over=1; } }}輸入1后,按enter,會出現(xiàn)如下主菜單:確定好主函數(shù)后,再根據(jù)要求撰寫執(zhí)行“輸入成績到文件中”之后相對應(yīng)的“返回主菜單”程序,檢查是否會出現(xiàn)錯誤。待檢查無錯誤之后,開始寫下一步:“輸出成績”程序。輸出程序里面又包含有4個子程序語句,分別為“排序”、“輸出成績”、“輸出不及格名單”、“返回”,查找與之相對應(yīng)的函數(shù)的資料,然后撰寫相應(yīng)程序。與第4步相似地進(jìn)行撰寫“編輯”程序下的“修改”、“刪除”、“插入”、“返回”程序。運行程序,看是否出現(xiàn)錯誤,如有錯誤,根據(jù)相關(guān)提示修改錯誤,例如一些字符漏寫或者函數(shù)類型錯誤等等。等修改完,再次運行,根據(jù)功能選擇,輸入相應(yīng)數(shù)字,運行看看能否執(zhí)行相應(yīng)要求的功能。輸入一些假設(shè)結(jié)果,驗證程序設(shè)置的正確性。完善所有之后,就正式宣告課程設(shè)計結(jié)束,并撰寫設(shè)計報告。程序流程圖開始開始輸出菜單根據(jù)菜單輸入choice的值選擇程序輸入輸出編輯排序輸出成績輸出不及格名單返回修改刪除插入返回是否返回主菜單?結(jié)束程序清單各函數(shù)的功能和實現(xiàn):1、輸入某班的所有學(xué)生的成績。輸入信息包括:班級,姓名,高等數(shù)學(xué)、物理、外語、C語言、德育5門課程成績并寫入文件“stud”中;可用函數(shù)voidinput(structstudentstu[])來實現(xiàn)。2、輸出模塊:函數(shù)voidprint()里嵌套4個函數(shù)用于排序、輸出成績、輸出不及格名單、返回;排序:函數(shù)voidlist(structstudentstu[])只是實現(xiàn)排序個功能,需要輸出名單得需再次選擇選項“2”。輸出:輸出學(xué)生的信息以及成績——voidprint(structstudentstu[]):通過輸入班級來查看某個班的相關(guān)情況。輸出平均分不及格的名單:用函數(shù)voidprinot(structstudentstu[])來實現(xiàn)輸出所以平均分不及格的學(xué)生的班級及姓名。返回:返回到主界面。3、編輯模塊:函數(shù)voidbian()中應(yīng)用4個函數(shù)加于循環(huán)選擇,可以進(jìn)行選擇修改、刪除、插入、返回;修改:在函數(shù)voidchanges(structstudentstu[])里面輸入需要修改的學(xué)生的班級、姓名以及成績,就可以對某班某個學(xué)生的成績進(jìn)行修改。刪除:用函數(shù)voiddel(structstudentstu[])實現(xiàn)。刪除某班某個學(xué)生的成績。插入:用函數(shù)voidser(structstudentstu[])實現(xiàn)。實現(xiàn)在某班中插入某些同學(xué)的相關(guān)信息。4、判斷是否返回主菜單:用判斷語言if??偨Y(jié)回顧起此次C語言課程設(shè)計,我感慨頗多,從拿到題目到完成整個編程、調(diào)試到撰寫報告,從理論到實際,在將近一個月的時間里,我學(xué)到了很多知識,攻破了以前的一些知識盲點。在這之中,我不僅可以鞏固了以前學(xué)習(xí)的知識,而且學(xué)習(xí)到了很多在書本上所沒有學(xué)到過的知識,拓寬了知識面。通過此次課程設(shè)計,我懂得了理論和實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實際相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中,算是困難重重吧。在編寫時,遇到不少問題,低級錯誤是主要的問題。特別在整合時,問題更多。比如因float誤用作int而導(dǎo)致的錯誤,花費了我好長的時間。由其得到,錯誤或許就出在最根本處。由于本課題中的很多知識點都沒有學(xué)過,要自己去翻看書里后面幾章的內(nèi)容去熟悉理解,并且通過查找課外的相關(guān)資料。小到一個術(shù)語,大到一個函數(shù)、一個邏輯關(guān)系,都需要在這過程中理解。開始設(shè)計出來的程序存在著很多錯誤,修改了很多次都沒有出現(xiàn)可觀的跡象,詢問了周圍的同學(xué)研究了之后才得到解決。設(shè)計出來的菜單也不是預(yù)想的那樣,而是整個窗口出現(xiàn)混亂。解決這個問題就是調(diào)整。一個系統(tǒng)的菜單和信息的提示語句是非常重要的。如果沒有這些用戶根本不知道怎么用你設(shè)計的這個系統(tǒng),在設(shè)計的調(diào)試過程中也無法順利地完成調(diào)試工作。有了一個清晰明了的菜單和一些提示信息之后,調(diào)試過程完成得非常順利。在本次實習(xí)過程中碰到的編譯、連接的錯誤主要有:定義變量時:變量不容易聯(lián)系起來,經(jīng)常會寫錯變量名,但是在錯誤信息的提示下一般還是很容易找到。但是在寫各個函數(shù)時,發(fā)現(xiàn)一個變量名,只要不是全局變量就可以無數(shù)次定義,只要分開在不同的函數(shù)中就可以了。不過需要注意的是在定義的時候有些函數(shù)使用同樣的變量名而表示不同的作用,因而使用要很小心,定義及定義的位置要特別留意。在編寫程序時要安靜,才不會出現(xiàn)低級錯誤。語法錯誤:語法錯誤在通過書本參考下能夠修改,并且在上機的錯誤提示中得到修改,但是由于書本是C語言,不是C++的。所以在使用時要注意在主函數(shù)和一些定義變量跟聲明函數(shù)時有些不同,這不是語法的錯誤,而是作為一個程序員必須要注意到的,要體會兩種語言的區(qū)別,由于平時看書不仔細(xì)、沒有經(jīng)過仔細(xì)的思考造成的。如沒有注意具體數(shù)據(jù)使用是有一定的范圍限定。在本次調(diào)試過程中我還碰到了一些以前上機過程中從未碰到過的錯誤。邏輯上的錯誤機器不易檢查出來,這時需要對數(shù)據(jù)結(jié)果進(jìn)行分析。這種錯誤的查找是最難的,需要編程序的人有相當(dāng)?shù)哪托暮图?xì)心去把問題找出來。這也是本次程序編輯過程中碰到的最大的難題。因此我使用的是一個一個函數(shù)的檢查,并通過調(diào)試修改。通過此次課程設(shè)計,我還得到了一些有用的教訓(xùn):寫程序時必須要細(xì)心,不能輸錯一個字符標(biāo)點,就連全角半角也得注意。在修改時要有耐心,編譯出錯后必須逐個錯誤去改正,絕不能心急浮躁,否則修改之后還會有新的錯誤。在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固。通過這次課程設(shè)計之后,我一定把以前所學(xué)過的知識重新溫故。剛開始做的時候,一點感覺都沒有,到后來就越有感覺了,開始慢慢懂了!曾記得有個同學(xué)說過“有問題找百度”,這次剛好派上用場了,在做程序設(shè)計的過程中,不懂的就上網(wǎng)搜索,真的學(xué)到挺多東西的!我想接下來的日子也得好好補補C語言,好為以后的課程打下基礎(chǔ)。做課程設(shè)計的日子是辛苦的,但是當(dāng)完成一項工程后,那種欣喜是油然而生的。連續(xù)奮戰(zhàn)了幾個星期,尤其在臨近上交期限的時候,我連續(xù)幾晚待在電腦前,一待就是幾個小時,敲擊著代碼,測試著每個語句,然后上網(wǎng)查找資料,看書里的內(nèi)容。這種生活雖然很累,很枯燥,但是感覺世界很安靜,鍵盤的聲響是一種心里知識的書寫。尤其是最后的這段期間,說起一件有趣的事情,大家為了老師交代的格式和字?jǐn)?shù)拼命查找資料而且為了趕在驗收日期前做好,一天除了上課睡覺之外,吃完飯就開工了。昨晚宿舍還集體為了測試程序而到11點都還沒人洗澡,然后就是集體晚睡了。這都是此次課程設(shè)計過程中發(fā)生的趣事。不過這種生活也是很難得,難得因為這樣的一件事大家能夠那么集中地做事情。挺難得的一段經(jīng)歷,C語言,以后要再翻出來看看,而且,要努力準(zhǔn)備下次的二級C考試。附錄1.用戶文檔調(diào)試與測試主要程序運行結(jié)果:運行開始選擇1輸入成績輸入完成后選擇Y返回(輸入Y或y都可以)選擇2,輸出選擇1對成績進(jìn)行排序后,再選擇2輸出成績輸入3,輸出不及格名單返回主菜單,選擇3進(jìn)行編輯選擇1,修改a的成績返回主菜單,選擇2輸出,檢查是否修改成功選擇2,刪除b的信息選擇3,插入d的信息附錄2.技術(shù)文檔主要函數(shù)input()該函數(shù)主要用來創(chuàng)建新數(shù)據(jù)文件,當(dāng)?shù)谝淮问褂迷摮绦蚧蛘咴瓌?chuàng)建的文件的內(nèi)容無效,需建立一個新的文件的時候,可通過該函數(shù)來實現(xiàn)。print()使用該函數(shù)可以顯示所有的操作員自己輸入的所有的學(xué)生數(shù)據(jù)記
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 職業(yè)學(xué)院大學(xué)生創(chuàng)業(yè)訓(xùn)練基地安全責(zé)任書
- 2024年精裝修水電清包工程合同書3篇
- 2024餐飲管理:食堂食材供應(yīng)與運營承包合同版
- 2024餐飲服務(wù)協(xié)議:食堂運營管理條款版B版
- 2024食堂特色餐飲項目策劃與執(zhí)行聘用合同3篇
- 2024年跨國服務(wù)提供與許可合同
- 2024裝修合同委托書范文
- 2025年度新能源汽車充電設(shè)施運營管理合同2篇
- 2024年跨境電商物流服務(wù)招投標(biāo)合同
- 中醫(yī)藥在近視治療中的作用
- 履約情況證明(共6篇)
- 礦井提升容器課件
- 云南省迪慶藏族自治州各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細(xì)
- 六年級語文-文言文閱讀訓(xùn)練題50篇-含答案
- 《潔凈工程項目定額》(征求意見稿)
- 城鎮(zhèn)燃?xì)庠O(shè)計規(guī)范
- 年零售藥店操作規(guī)程版
- 日有所誦(二年級)
- 搞笑個性YY娛樂頻道分組設(shè)計圖
- 靜力觸探技術(shù)標(biāo)準(zhǔn)
- 鋼結(jié)構(gòu)、膜結(jié)構(gòu)安全技術(shù)交底
評論
0/150
提交評論