版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
歡迎閱讀本文檔,希望本文檔能對(duì)您有所幫助!歡迎閱讀本文檔,希望本文檔能對(duì)您有所幫助!感謝閱讀本文檔,希望本文檔能對(duì)您有所幫助!感謝閱讀本文檔,希望本文檔能對(duì)您有所幫助!歡迎閱讀本文檔,希望本文檔能對(duì)您有所幫助!感謝閱讀本文檔,希望本文檔能對(duì)您有所幫助!課程設(shè)計(jì)2013年11月3日設(shè)計(jì)題目:學(xué)生成績(jī)統(tǒng)計(jì)設(shè)計(jì)條件:掌握C語言的基本知識(shí),能夠熟練地應(yīng)用順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),能夠善于應(yīng)用結(jié)構(gòu)體數(shù)組和對(duì)文件的輸入輸出。設(shè)計(jì)內(nèi)容:【問題描述】學(xué)期考試結(jié)束,統(tǒng)計(jì)有N個(gè)班某班每個(gè)人的平均成績(jī),每門課的平均成績(jī),并按個(gè)人平均成績(jī)從高到低的順序輸出成績(jī),輸出不及格人名單。輸入、輸出格式自定。【實(shí)現(xiàn)提示】假設(shè)某班有:30人(姓名自定)考試課程有:高等數(shù)學(xué)、物理、外語、C語言、德育5門課程。將所有同學(xué)的成績(jī)保留在文件中,對(duì)文件中的數(shù)據(jù)處理,輸出所要求的內(nèi)容,程序的功能主要包括3方面:輸入成績(jī)到文件中輸出成績(jī)輸出不及格學(xué)生名單成績(jī)排序修改記錄刪除記錄插入記錄等主函數(shù)中對(duì)3個(gè)功能選擇(菜單),調(diào)用對(duì)應(yīng)的函數(shù)完成。下達(dá)日期:2013年10月完成日期:2013年11月目錄前言····································4設(shè)計(jì)思想································4設(shè)計(jì)過程································4程序流程圖······························7程序清單································8總結(jié)····································8附錄1.用戶文檔·····························10附錄2.技術(shù)文檔·····························13參考文獻(xiàn)···································13前言本課程設(shè)計(jì)提供了一個(gè)既動(dòng)手又動(dòng)腦,自學(xué),查資料,獨(dú)立實(shí)踐的機(jī)會(huì)。將課本上的理論知識(shí)和實(shí)際有機(jī)的結(jié)合起來,鍛煉學(xué)生實(shí)際分析問題和解決問題的能力,提高學(xué)生適應(yīng)實(shí)際、實(shí)踐編程的能力,使對(duì)C語言系統(tǒng)編程有一個(gè)大致的了解。本課程設(shè)計(jì)——學(xué)生成績(jī)統(tǒng)計(jì),在日常的教學(xué)過程中具有較高的應(yīng)用價(jià)值。當(dāng)老師批改完一大批試卷后,需要統(tǒng)計(jì)成績(jī)得出相應(yīng)結(jié)果時(shí),“學(xué)生成績(jī)統(tǒng)計(jì)”就能夠發(fā)揮其重要作用。設(shè)計(jì)這個(gè)程序,主要用到結(jié)構(gòu)體數(shù)組和文件兩個(gè)知識(shí)點(diǎn),再結(jié)合順序、循環(huán)、選擇、函數(shù)······來實(shí)現(xiàn)功能。設(shè)計(jì)思想首先編譯預(yù)處理,輸入頭文件;再之全局聲明;對(duì)函數(shù)進(jìn)行定義。再建立一個(gè)student結(jié)構(gòu)體,把結(jié)構(gòu)體里面的內(nèi)容寫入一個(gè)文件中。然后先把主函數(shù)main()寫好,再把子函數(shù)完善好,最后測(cè)試、修改,直到達(dá)到最終功能和界面美觀為止。設(shè)計(jì)過程根據(jù)設(shè)計(jì)要求做好分析,把主要框架設(shè)計(jì)羅列出來。考慮到此程序主要有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;//定義一個(gè)指向文件的指針變量fp structstudentstu[4],*p=stu;voidmain(){ charchoice,zlq='y'; intover=0; while(!over)//循環(huán)語句 { if(zlq=='Y'||zlq=='y') { printf("***************功能選擇****************\n"); printf("1.輸入成績(jī)到文件中\(zhòng)n"); printf("2.輸出成績(jī)\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("輸入錯(cuò)誤!\n"); continue; } if(!over)//在每次運(yùn)行完選項(xiàng)后,選擇退出還是繼續(xù) { printf("\n\n\n返回主菜單嗎?\n(請(qǐng)輸入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輸入錯(cuò)誤!將退出~\n"); over=1; } }}輸入1后,按enter,會(huì)出現(xiàn)如下主菜單:確定好主函數(shù)后,再根據(jù)要求撰寫執(zhí)行“輸入成績(jī)到文件中”之后相對(duì)應(yīng)的“返回主菜單”程序,檢查是否會(huì)出現(xiàn)錯(cuò)誤。待檢查無錯(cuò)誤之后,開始寫下一步:“輸出成績(jī)”程序。輸出程序里面又包含有4個(gè)子程序語句,分別為“排序”、“輸出成績(jī)”、“輸出不及格名單”、“返回”,查找與之相對(duì)應(yīng)的函數(shù)的資料,然后撰寫相應(yīng)程序。與第4步相似地進(jìn)行撰寫“編輯”程序下的“修改”、“刪除”、“插入”、“返回”程序。運(yùn)行程序,看是否出現(xiàn)錯(cuò)誤,如有錯(cuò)誤,根據(jù)相關(guān)提示修改錯(cuò)誤,例如一些字符漏寫或者函數(shù)類型錯(cuò)誤等等。等修改完,再次運(yùn)行,根據(jù)功能選擇,輸入相應(yīng)數(shù)字,運(yùn)行看看能否執(zhí)行相應(yīng)要求的功能。輸入一些假設(shè)結(jié)果,驗(yàn)證程序設(shè)置的正確性。完善所有之后,就正式宣告課程設(shè)計(jì)結(jié)束,并撰寫設(shè)計(jì)報(bào)告。程序流程圖開始開始輸出菜單根據(jù)菜單輸入choice的值選擇程序輸入輸出編輯排序輸出成績(jī)輸出不及格名單返回修改刪除插入返回是否返回主菜單?結(jié)束程序清單各函數(shù)的功能和實(shí)現(xiàn):1、輸入某班的所有學(xué)生的成績(jī)。輸入信息包括:班級(jí),姓名,高等數(shù)學(xué)、物理、外語、C語言、德育5門課程成績(jī)并寫入文件“stud”中;可用函數(shù)voidinput(structstudentstu[])來實(shí)現(xiàn)。2、輸出模塊:函數(shù)voidprint()里嵌套4個(gè)函數(shù)用于排序、輸出成績(jī)、輸出不及格名單、返回;排序:函數(shù)voidlist(structstudentstu[])只是實(shí)現(xiàn)排序個(gè)功能,需要輸出名單得需再次選擇選項(xiàng)“2”。輸出:輸出學(xué)生的信息以及成績(jī)——voidprint(structstudentstu[]):通過輸入班級(jí)來查看某個(gè)班的相關(guān)情況。輸出平均分不及格的名單:用函數(shù)voidprinot(structstudentstu[])來實(shí)現(xiàn)輸出所以平均分不及格的學(xué)生的班級(jí)及姓名。返回:返回到主界面。3、編輯模塊:函數(shù)voidbian()中應(yīng)用4個(gè)函數(shù)加于循環(huán)選擇,可以進(jìn)行選擇修改、刪除、插入、返回;修改:在函數(shù)voidchanges(structstudentstu[])里面輸入需要修改的學(xué)生的班級(jí)、姓名以及成績(jī),就可以對(duì)某班某個(gè)學(xué)生的成績(jī)進(jìn)行修改。刪除:用函數(shù)voiddel(structstudentstu[])實(shí)現(xiàn)。刪除某班某個(gè)學(xué)生的成績(jī)。插入:用函數(shù)voidser(structstudentstu[])實(shí)現(xiàn)。實(shí)現(xiàn)在某班中插入某些同學(xué)的相關(guān)信息。4、判斷是否返回主菜單:用判斷語言if。總結(jié)回顧起此次C語言課程設(shè)計(jì),我感慨頗多,從拿到題目到完成整個(gè)編程、調(diào)試到撰寫報(bào)告,從理論到實(shí)際,在將近一個(gè)月的時(shí)間里,我學(xué)到了很多知識(shí),攻破了以前的一些知識(shí)盲點(diǎn)。在這之中,我不僅可以鞏固了以前學(xué)習(xí)的知識(shí),而且學(xué)習(xí)到了很多在書本上所沒有學(xué)到過的知識(shí),拓寬了知識(shí)面。通過此次課程設(shè)計(jì),我懂得了理論和實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)際相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中,算是困難重重吧。在編寫時(shí),遇到不少問題,低級(jí)錯(cuò)誤是主要的問題。特別在整合時(shí),問題更多。比如因float誤用作int而導(dǎo)致的錯(cuò)誤,花費(fèi)了我好長(zhǎng)的時(shí)間。由其得到,錯(cuò)誤或許就出在最根本處。由于本課題中的很多知識(shí)點(diǎn)都沒有學(xué)過,要自己去翻看書里后面幾章的內(nèi)容去熟悉理解,并且通過查找課外的相關(guān)資料。小到一個(gè)術(shù)語,大到一個(gè)函數(shù)、一個(gè)邏輯關(guān)系,都需要在這過程中理解。開始設(shè)計(jì)出來的程序存在著很多錯(cuò)誤,修改了很多次都沒有出現(xiàn)可觀的跡象,詢問了周圍的同學(xué)研究了之后才得到解決。設(shè)計(jì)出來的菜單也不是預(yù)想的那樣,而是整個(gè)窗口出現(xiàn)混亂。解決這個(gè)問題就是調(diào)整。一個(gè)系統(tǒng)的菜單和信息的提示語句是非常重要的。如果沒有這些用戶根本不知道怎么用你設(shè)計(jì)的這個(gè)系統(tǒng),在設(shè)計(jì)的調(diào)試過程中也無法順利地完成調(diào)試工作。有了一個(gè)清晰明了的菜單和一些提示信息之后,調(diào)試過程完成得非常順利。在本次實(shí)習(xí)過程中碰到的編譯、連接的錯(cuò)誤主要有:定義變量時(shí):變量不容易聯(lián)系起來,經(jīng)常會(huì)寫錯(cuò)變量名,但是在錯(cuò)誤信息的提示下一般還是很容易找到。但是在寫各個(gè)函數(shù)時(shí),發(fā)現(xiàn)一個(gè)變量名,只要不是全局變量就可以無數(shù)次定義,只要分開在不同的函數(shù)中就可以了。不過需要注意的是在定義的時(shí)候有些函數(shù)使用同樣的變量名而表示不同的作用,因而使用要很小心,定義及定義的位置要特別留意。在編寫程序時(shí)要安靜,才不會(huì)出現(xiàn)低級(jí)錯(cuò)誤。語法錯(cuò)誤:語法錯(cuò)誤在通過書本參考下能夠修改,并且在上機(jī)的錯(cuò)誤提示中得到修改,但是由于書本是C語言,不是C++的。所以在使用時(shí)要注意在主函數(shù)和一些定義變量跟聲明函數(shù)時(shí)有些不同,這不是語法的錯(cuò)誤,而是作為一個(gè)程序員必須要注意到的,要體會(huì)兩種語言的區(qū)別,由于平時(shí)看書不仔細(xì)、沒有經(jīng)過仔細(xì)的思考造成的。如沒有注意具體數(shù)據(jù)使用是有一定的范圍限定。在本次調(diào)試過程中我還碰到了一些以前上機(jī)過程中從未碰到過的錯(cuò)誤。邏輯上的錯(cuò)誤機(jī)器不易檢查出來,這時(shí)需要對(duì)數(shù)據(jù)結(jié)果進(jìn)行分析。這種錯(cuò)誤的查找是最難的,需要編程序的人有相當(dāng)?shù)哪托暮图?xì)心去把問題找出來。這也是本次程序編輯過程中碰到的最大的難題。因此我使用的是一個(gè)一個(gè)函數(shù)的檢查,并通過調(diào)試修改。通過此次課程設(shè)計(jì),我還得到了一些有用的教訓(xùn):寫程序時(shí)必須要細(xì)心,不能輸錯(cuò)一個(gè)字符標(biāo)點(diǎn),就連全角半角也得注意。在修改時(shí)要有耐心,編譯出錯(cuò)后必須逐個(gè)錯(cuò)誤去改正,絕不能心急浮躁,否則修改之后還會(huì)有新的錯(cuò)誤。在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固。通過這次課程設(shè)計(jì)之后,我一定把以前所學(xué)過的知識(shí)重新溫故。剛開始做的時(shí)候,一點(diǎn)感覺都沒有,到后來就越有感覺了,開始慢慢懂了!曾記得有個(gè)同學(xué)說過“有問題找百度”,這次剛好派上用場(chǎng)了,在做程序設(shè)計(jì)的過程中,不懂的就上網(wǎng)搜索,真的學(xué)到挺多東西的!我想接下來的日子也得好好補(bǔ)補(bǔ)C語言,好為以后的課程打下基礎(chǔ)。做課程設(shè)計(jì)的日子是辛苦的,但是當(dāng)完成一項(xiàng)工程后,那種欣喜是油然而生的。連續(xù)奮戰(zhàn)了幾個(gè)星期,尤其在臨近上交期限的時(shí)候,我連續(xù)幾晚待在電腦前,一待就是幾個(gè)小時(shí),敲擊著代碼,測(cè)試著每個(gè)語句,然后上網(wǎng)查找資料,看書里的內(nèi)容。這種生活雖然很累,很枯燥,但是感覺世界很安靜,鍵盤的聲響是一種心里知識(shí)的書寫。尤其是最后的這段期間,說起一件有趣的事情,大家為了老師交代的格式和字?jǐn)?shù)拼命查找資料而且為了趕在驗(yàn)收日期前做好,一天除了上課睡覺之外,吃完飯就開工了。昨晚宿舍還集體為了測(cè)試程序而到11點(diǎn)都還沒人洗澡,然后就是集體晚睡了。這都是此次課程設(shè)計(jì)過程中發(fā)生的趣事。不過這種生活也是很難得,難得因?yàn)檫@樣的一件事大家能夠那么集中地做事情。挺難得的一段經(jīng)歷,C語言,以后要再翻出來看看,而且,要努力準(zhǔn)備下次的二級(jí)C考試。附錄1.用戶文檔調(diào)試與測(cè)試主要程序運(yùn)行結(jié)果:運(yùn)行開始選擇1輸入成績(jī)輸入完成后選擇Y返回(輸入Y或y都可以)選擇2,輸出選擇1對(duì)成績(jī)進(jìn)行排序后,再選擇2輸出成績(jī)輸入3,輸出不及格名單返回主菜單,選擇3進(jìn)行編輯選擇1,修改a的成績(jī)返回主菜單,選擇2輸出,檢查是否修改成功選擇2,刪除b的信息選擇3,插入d的信息附錄2.技術(shù)文檔主要函數(shù)input()該函數(shù)主要用來創(chuàng)建新數(shù)據(jù)文件,當(dāng)?shù)谝淮问褂迷摮绦蚧蛘咴瓌?chuàng)建的文件的內(nèi)容無效,需建立一個(gè)新的文件的時(shí)候,可通過該函數(shù)來實(shí)現(xiàn)。print()使用該函數(shù)可以顯示所有的操作員自己輸入的所有的學(xué)生數(shù)據(jù)記
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 武漢紡織大學(xué)《醫(yī)藥企業(yè)管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年教育輔助機(jī)構(gòu)勞動(dòng)合同及教學(xué)質(zhì)量協(xié)議3篇
- 二零二五年環(huán)保產(chǎn)品生產(chǎn)加工合作合同范本2篇
- 二零二五年度塑料加工工廠承包生產(chǎn)與環(huán)保責(zé)任合同3篇
- 濰坊護(hù)理職業(yè)學(xué)院《學(xué)習(xí)科學(xué)與技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 天津藝術(shù)職業(yè)學(xué)院《燈光照明基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度高科技設(shè)備租賃擔(dān)保服務(wù)合同3篇
- 2024民間借貸合同(自動(dòng)放棄利息)
- 二零二五年影視制作項(xiàng)目投資合同正本3篇
- 二零二五版影視制作借款合同示范文本2篇
- 山東省濰坊市2024-2025學(xué)年高三上學(xué)期期末 地理試題(無答案)
- 勞動(dòng)法培訓(xùn)課件
- 2024年建筑施工安全工作計(jì)劃(3篇)
- 2024屆九省聯(lián)考英語試題(含答案解析、MP3及錄音稿)
- 倉庫消防知識(shí)安全培訓(xùn)
- 從事專業(yè)與所學(xué)專業(yè)不一致專業(yè)技術(shù)人員申報(bào)職稱崗位任職合格證明附件6
- 我國房屋建筑模板技術(shù)的研究綜述
- 人教版小學(xué)三年級(jí)上冊(cè)數(shù)學(xué)豎式筆算練習(xí)題
- 航天科工集團(tuán)在線測(cè)評(píng)題
- 山東省濰坊新2025屆高三語文第一學(xué)期期末經(jīng)典試題含解析
- 醫(yī)院三基考核試題(康復(fù)理療科)
評(píng)論
0/150
提交評(píng)論