C語(yǔ)言專業(yè)課程設(shè)計(jì)學(xué)生成績(jī)統(tǒng)計(jì)設(shè)計(jì)方案報(bào)告_第1頁(yè)
C語(yǔ)言專業(yè)課程設(shè)計(jì)學(xué)生成績(jī)統(tǒng)計(jì)設(shè)計(jì)方案報(bào)告_第2頁(yè)
C語(yǔ)言專業(yè)課程設(shè)計(jì)學(xué)生成績(jī)統(tǒng)計(jì)設(shè)計(jì)方案報(bào)告_第3頁(yè)
C語(yǔ)言專業(yè)課程設(shè)計(jì)學(xué)生成績(jī)統(tǒng)計(jì)設(shè)計(jì)方案報(bào)告_第4頁(yè)
C語(yǔ)言專業(yè)課程設(shè)計(jì)學(xué)生成績(jī)統(tǒng)計(jì)設(shè)計(jì)方案報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

課程設(shè)計(jì)11月3日設(shè)計(jì)題目:學(xué)生成績(jī)統(tǒng)計(jì)設(shè)計(jì)條件:掌握C語(yǔ)言基礎(chǔ)知識(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)容:【問(wèn)題描述】學(xué)期考試結(jié)束,統(tǒng)計(jì)有N個(gè)班某班每個(gè)人平均成績(jī),每門課平均成績(jī),并按個(gè)人平均成績(jī)從高到低次序輸出成績(jī),輸出不及格人名單。輸入、輸出格式自定?!緦?shí)現(xiàn)提醒】假設(shè)某班有:30人(姓名自定)考試課程有:高等數(shù)學(xué)、物理、外語(yǔ)、C語(yǔ)言、德育5門課程。將全部同學(xué)成績(jī)保留在文件中,對(duì)文件中數(shù)據(jù)處理,輸出所要求內(nèi)容,程序功效關(guān)鍵包含3方面:輸入成績(jī)到文件中輸出成績(jī)輸出不及格學(xué)生名單成績(jī)排序修改統(tǒng)計(jì)刪除統(tǒng)計(jì)插入統(tǒng)計(jì)等主函數(shù)中對(duì)3個(gè)功效選擇(菜單),調(diào)用對(duì)應(yīng)函數(shù)完成。下達(dá)日期:10月完成日期:11月目錄序言····································4設(shè)計(jì)思想································4設(shè)計(jì)過(guò)程································4程序步驟圖······························7程序清單································8總結(jié)····································8附錄1.用戶文檔·····························10附錄2.技術(shù)文檔·····························13參考文件···································13序言本課程設(shè)計(jì)提供了一個(gè)既動(dòng)手又動(dòng)腦,自學(xué),查資料,獨(dú)立實(shí)踐機(jī)會(huì)。將書本上理論知識(shí)和實(shí)際有機(jī)結(jié)合起來(lái),鍛煉學(xué)生實(shí)際分析問(wèn)題和處理問(wèn)題能力,提升學(xué)生適應(yīng)實(shí)際、實(shí)踐編程能力,使對(duì)C語(yǔ)言系統(tǒng)編程有一個(gè)大致了解。本課程設(shè)計(jì)——學(xué)生成績(jī)統(tǒng)計(jì),在日常教學(xué)過(guò)程中含有較高應(yīng)用價(jià)值。當(dāng)老師批改完一大批試卷后,需要統(tǒng)計(jì)成績(jī)得出對(duì)應(yīng)結(jié)果時(shí),“學(xué)生成績(jī)統(tǒng)計(jì)”就能夠發(fā)揮其關(guān)鍵作用。設(shè)計(jì)這個(gè)程序,關(guān)鍵用到結(jié)構(gòu)體數(shù)組和文件兩個(gè)知識(shí)點(diǎn),再結(jié)合次序、循環(huán)、選擇、函數(shù)······來(lái)實(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ì)過(guò)程依據(jù)設(shè)計(jì)要求做好分析,把關(guān)鍵框架設(shè)計(jì)羅列出來(lái)。考慮到此程序關(guān)鍵有3大方面內(nèi)容,所以主函數(shù)里分為3大模塊,模塊里面再依據(jù)要求實(shí)施對(duì)應(yīng)內(nèi)容。依據(jù)關(guān)鍵框架,確定沒(méi)有問(wèn)題后,編寫主函數(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)語(yǔ)句 { 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來(lái)進(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ù)要求撰寫實(shí)施“輸入成績(jī)到文件中”以后相對(duì)應(yīng)“返回主菜單”程序,檢驗(yàn)是否會(huì)出現(xiàn)錯(cuò)誤。待檢驗(yàn)無(wú)錯(cuò)誤以后,開始寫下一步:“輸出成績(jī)”程序。輸出程序里面又包含有4個(gè)子程序語(yǔ)句,分別為“排序”、“輸出成績(jī)”、“輸出不及格名單”、“返回”,查找和之相對(duì)應(yīng)函數(shù)資料,然后撰寫對(duì)應(yīng)程序。和第4步相同地進(jìn)行撰寫“編輯”程序下“修改”、“刪除”、“插入”、“返回”程序。運(yùn)行程序,看是否出現(xiàn)錯(cuò)誤,如有錯(cuò)誤,依據(jù)相關(guān)提醒修改錯(cuò)誤,比如部分字符漏寫或函數(shù)類型錯(cuò)誤等等。等修改完,再次運(yùn)行,依據(jù)功效選擇,輸入對(duì)應(yīng)數(shù)字,運(yùn)行看看能否實(shí)施對(duì)應(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é)、物理、外語(yǔ)、C語(yǔ)言、德育5門課程成績(jī)并寫入文件“stud”中;可用函數(shù)voidinput(structstudentstu[])來(lái)實(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īng)過(guò)輸入班級(jí)來(lái)查看某個(gè)班相關(guān)情況。輸出平均分不及格名單:用函數(shù)voidprinot(structstudentstu[])來(lái)實(shí)現(xiàn)輸出所以平均分不及格學(xué)生班級(jí)及姓名。返回:返回到主界面。3、編輯模塊:函數(shù)voidbian()中應(yīng)用4個(gè)函數(shù)加于循環(huán)選擇,能夠進(jìn)行選擇修改、刪除、插入、返回;修改:在函數(shù)voidchanges(structstudentstu[])里面輸入需要修改學(xué)生班級(jí)、姓名和成績(jī),就能夠?qū)δ嘲嗄硞€(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、判定是否返回主菜單:用判定語(yǔ)言if??偨Y(jié)回顧起此次C語(yǔ)言課程設(shè)計(jì),我感慨頗多,從拿到題目到完成整個(gè)編程、調(diào)試到撰寫匯報(bào),從理論到實(shí)際,在快要30天時(shí)間里,我學(xué)到了很多知識(shí),攻破了以前部分知識(shí)盲點(diǎn)。在這之中,我不僅能夠鞏固了以前學(xué)習(xí)知識(shí),而且學(xué)習(xí)到了很多在書本上所沒(méi)有學(xué)到過(guò)知識(shí),拓寬了知識(shí)面。經(jīng)過(guò)此次課程設(shè)計(jì),我知道了理論和實(shí)際相結(jié)合是很關(guān)鍵,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠,只有把所學(xué)理論知識(shí)和實(shí)際相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提升自己實(shí)際動(dòng)手能力和獨(dú)立思索能力。在設(shè)計(jì)過(guò)程中,算是困難重重吧。在編寫時(shí),碰到不少問(wèn)題,低級(jí)錯(cuò)誤是關(guān)鍵問(wèn)題。尤其在整合時(shí),問(wèn)題更多。比如因float誤用作int而造成錯(cuò)誤,花費(fèi)了我好長(zhǎng)時(shí)間。由其得到,錯(cuò)誤或許就出在最根本處。因?yàn)楸菊n題中很多知識(shí)點(diǎn)全部沒(méi)有學(xué)過(guò),要自己去翻看書里后面幾章內(nèi)容去熟悉了解,而且經(jīng)過(guò)查找課外相關(guān)資料。小到一個(gè)術(shù)語(yǔ),大到一個(gè)函數(shù)、一個(gè)邏輯關(guān)系,全部需要在這過(guò)程中了解。開始設(shè)計(jì)出來(lái)程序存在著很多錯(cuò)誤,修改了很數(shù)次全部沒(méi)有出現(xiàn)可觀跡象,問(wèn)詢了周圍同學(xué)研究了以后才得四處理。設(shè)計(jì)出來(lái)菜單也不是預(yù)想那樣,而是整個(gè)窗口出現(xiàn)混亂。處理這個(gè)問(wèn)題就是調(diào)整。一個(gè)系統(tǒng)菜單和信息提醒語(yǔ)句是很關(guān)鍵。假如沒(méi)有這些用戶根本不知道怎么用你設(shè)計(jì)這個(gè)系統(tǒng),在設(shè)計(jì)調(diào)試過(guò)程中也無(wú)法順利地完成調(diào)試工作。有了一個(gè)清楚明了菜單和部分提醒信息以后,調(diào)試過(guò)程完成得很順利。在此次實(shí)習(xí)過(guò)程中碰到編譯、連接錯(cuò)誤關(guān)鍵有:定義變量時(shí):變量不輕易聯(lián)絡(luò)起來(lái),常常會(huì)寫錯(cuò)變量名,不過(guò)在錯(cuò)誤信息提醒下通常還是很輕易找到。不過(guò)在寫各個(gè)函數(shù)時(shí),發(fā)覺(jué)一個(gè)變量名,只要不是全局變量就能夠無(wú)數(shù)次定義,只要分開在不一樣函數(shù)中就能夠了。不過(guò)需要注意是在定義時(shí)候有些函數(shù)使用一樣變量名而表示不一樣作用,所以使用要很小心,定義及定義位置要尤其留心。在編寫程序時(shí)要平靜,才不會(huì)出現(xiàn)低級(jí)錯(cuò)誤。語(yǔ)法錯(cuò)誤:語(yǔ)法錯(cuò)誤在經(jīng)過(guò)書本參考下能夠修改,而且在上機(jī)錯(cuò)誤提醒中得到修改,不過(guò)因?yàn)闀臼荂語(yǔ)言,不是C++。所以在使用時(shí)要注意在主函數(shù)和部分定義變量跟申明函數(shù)時(shí)有些不一樣,這不是語(yǔ)法錯(cuò)誤,而是作為一個(gè)程序員必需要注意到,要體會(huì)兩種語(yǔ)言區(qū)分,因?yàn)槠綍r(shí)看書不仔細(xì)、沒(méi)有經(jīng)過(guò)仔細(xì)思索造成。如沒(méi)有注意具體數(shù)據(jù)使用是有一定范圍限定。在此次調(diào)試過(guò)程中我還碰到了部分以前上機(jī)過(guò)程中從未碰到過(guò)錯(cuò)誤。邏輯上錯(cuò)誤機(jī)器不易檢驗(yàn)出來(lái),這時(shí)需要對(duì)數(shù)據(jù)結(jié)果進(jìn)行分析。這種錯(cuò)誤查找是最難,需要編程序人有相當(dāng)耐心和細(xì)心去把問(wèn)題找出來(lái)。這也是此次程序編輯過(guò)程中碰到最大難題。所以我使用是一個(gè)一個(gè)函數(shù)檢驗(yàn),并經(jīng)過(guò)調(diào)試修改。經(jīng)過(guò)此次課程設(shè)計(jì),我還得到了部分有用教訓(xùn):寫程序時(shí)必需要細(xì)心,不能輸錯(cuò)一個(gè)字符標(biāo)點(diǎn),就連全角半角也得注意。在修改時(shí)要有耐心,編譯犯錯(cuò)后必需逐一錯(cuò)誤去更正,絕不能心急浮躁,不然修改以后還會(huì)有新錯(cuò)誤。在設(shè)計(jì)過(guò)程中發(fā)覺(jué)了自己不足之處,對(duì)以前所學(xué)過(guò)知識(shí)了解得不夠深刻,掌握得不夠牢靠。經(jīng)過(guò)這次課程設(shè)計(jì)以后,我一定把以前所學(xué)過(guò)知識(shí)重新溫故。剛開始做時(shí)候,一點(diǎn)感覺(jué)全部沒(méi)有,到以后就越有感覺(jué)了,開始慢慢懂了!曾記得有個(gè)同學(xué)說(shuō)過(guò)“有問(wèn)題找baidu”,這次剛好派上用場(chǎng)了,在做程序設(shè)計(jì)過(guò)程中,不懂就上網(wǎng)搜索,真學(xué)到挺多東西!我想接下來(lái)日子也得好好補(bǔ)補(bǔ)C語(yǔ)言,好為以后課程打下基礎(chǔ)。做課程設(shè)計(jì)日子是辛勞,不過(guò)當(dāng)完成一項(xiàng)工程后,那種欣喜是油然而生。連續(xù)奮戰(zhàn)了多個(gè)星期,尤其在臨近上交期限時(shí)候,我連續(xù)幾晚待在電腦前,一待就是多個(gè)小時(shí),敲擊著代碼,測(cè)試著每個(gè)語(yǔ)句,然后上網(wǎng)查找資料,看書里內(nèi)容。這種生活即使很累,很枯燥,不過(guò)感覺(jué)世界很平靜,鍵盤聲響是一個(gè)心里知識(shí)書寫。尤其是最終這段期間,說(shuō)起一件有趣事情,大家為了老師交代格式和字?jǐn)?shù)拼命查找資料而且為了趕在驗(yàn)收日期前做好,一天除了上課睡覺(jué)之外,吃完飯就開工了。昨晚宿舍還集體為了測(cè)試程序而到11點(diǎn)全部還沒(méi)人洗澡,然后就是集體晚睡了。這全部是此次課程設(shè)計(jì)過(guò)程中發(fā)生趣事。不過(guò)這種生活也是極難得,難得因?yàn)檫@么一件事大家能夠那么集中地做事情。挺難得一段經(jīng)歷,C語(yǔ)言,以后要再翻出來(lái)看看,而且,要努力準(zhǔn)備下次二級(jí)C考試。附錄1.用戶文檔調(diào)試和測(cè)試關(guān)鍵程序運(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輸出,檢驗(yàn)是否修改成功選擇2,刪除b信息選擇3,插入d信息附錄2.技術(shù)文檔關(guān)鍵函數(shù)input()該函數(shù)關(guān)鍵用來(lái)創(chuàng)建新數(shù)據(jù)文件,當(dāng)?shù)谝淮问褂迷摮绦蚧蛟瓌?chuàng)建文件內(nèi)容無(wú)效,需建立一個(gè)新文件時(shí)候,可經(jīng)過(guò)該函數(shù)來(lái)實(shí)現(xiàn)。print()使用該函數(shù)能夠顯示全部操作員自己輸入全部學(xué)生數(shù)據(jù)統(tǒng)計(jì)。它只用到

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論