學(xué)生作業(yè)完成情況程序課程報告_第1頁
學(xué)生作業(yè)完成情況程序課程報告_第2頁
學(xué)生作業(yè)完成情況程序課程報告_第3頁
學(xué)生作業(yè)完成情況程序課程報告_第4頁
學(xué)生作業(yè)完成情況程序課程報告_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE2衡陽師范學(xué)院《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計題目:學(xué)生作業(yè)完成情況管理程序?qū)I(yè):計算機科學(xué)與技術(shù)(非師范)班級:1002學(xué)號:10140115101902051826作者姓名:劉超丁正寧劉新宇王兵指導(dǎo)教師:王杰2011年12月2目錄1、需求分析………………(2) 1.1問題描述…………………(2) 1.2基本要求…………………(2)2、概要設(shè)計………………(2) 2.1數(shù)據(jù)結(jié)構(gòu)…………………(2) 2.2程序模塊…………………(3) 2.3各模塊之間的調(diào)用關(guān)系及算法設(shè)計……(3)3、詳細設(shè)計………………(4)4、調(diào)試與分析…………(8) 4.1程序調(diào)試…………………(8) 4.2數(shù)據(jù)分析…………………(9)5、用戶手冊……………(10) 5.1運行環(huán)境…………………(10) 5.2執(zhí)行文件…………………(10)6、參考文獻……………(10)7、心得體會……………(10)8、小組成員任務(wù)分配及工作進度安排…………(11)學(xué)生作業(yè)完成情況管理程序1、需求分析1.1問題描述請設(shè)計一個學(xué)生作業(yè)完成情況管理程序。假設(shè)某門課程一學(xué)期要留10次作業(yè),每次老師要進行批改,給出分數(shù)后還要進行登記。學(xué)期期末要根據(jù)每次作業(yè)的成績計算出最終的平時成績(滿分100)。作業(yè)登記信息應(yīng)該包含:學(xué)號、姓名、10次作業(yè)的完成情況。1.2基本要求該程序應(yīng)該具有下列功能:(1)通過鍵盤輸入某位學(xué)生某次作業(yè)的分數(shù);(2)給定學(xué)號,顯示某位學(xué)生作業(yè)完成情況;(3)給定某個班級的班號,顯示該班所有學(xué)生的作業(yè)完成情況;(4)給定某位學(xué)生的學(xué)號,修改該學(xué)生的作業(yè)完成信息;(5)給定某位學(xué)生的學(xué)號,刪除該學(xué)生的信息;(6)按學(xué)生的最終平時成績進行排序;(7)輸出平均分數(shù)。2、概要設(shè)計2.1數(shù)據(jù)結(jié)構(gòu)定義了兩個結(jié)構(gòu)體studentInfo和stuType分別存儲學(xué)生的基本信心和所有學(xué)生的信息庫。完整定義如下:structstudentInfo{//定義學(xué)生基本信息結(jié)構(gòu)體intnum;intcls;char*name;intscore[10];}structstuType{//結(jié)構(gòu)類型定義studentInfostu[MUNMAX];intnum;}2.2程序模塊voidDisplayMenu();//顯示菜單intchoiceItem();//菜單選擇voidPrint_aInfo(structstuTypes,intindex);//輸出一個學(xué)生的信息voidPrintInfo(structstuTypes);//輸出所有學(xué)生的信息voidInput_aInfo(structstudentInfo*as);//輸入一個學(xué)生的信息voidInput_allInfo(structstuType*s,intnum);//輸入多個學(xué)生的信息intSearch(structstuTypestu);//查找voidModify(structstuType*s,stuTypestu);//修改voiddel(structstuType*s);//刪除voidSearch_cls(structstuType*s);//查出一個班的成績voidPj(structstuType*s);//求平均成績2.3各模塊之間的調(diào)用關(guān)系及算法設(shè)計1、菜單選擇函數(shù)choiceItem()通過調(diào)用顯示菜單函數(shù)voidDisplayMenu()實現(xiàn)對程序的基本功能的顯示,從而使程序設(shè)計有了方向。2、通過函數(shù)choiceItem()的switch語句列舉查詢的功能,從而實現(xiàn)對程序各模塊之間的調(diào)用,詳細如下:do{choice=choiceItem();switch(choice){case0:printf("\nWelcometo");break;case1:Input_allInfo(&student,MUNMAX);break;case2:Input_allInfo(&student,1);break;case3:PrintInfo(student);break;case4:Init(&student);break;case5:{if((index=Search(student))!=-1)Print_aInfo(student,index);elseprintf("\nNoeixstthestudent.\n");}break;case6:Modify(&student,student);break;case7:del(&student);break;case8:Search_cls(&student);break;case9:Pj(&student);break;}}while(choice);3、輸入多個學(xué)生的信息函數(shù)Input_allInfo(structstuType*s,intnum)通過循環(huán)調(diào)用一個學(xué)生信息輸入函數(shù)Input_aInfo(&s->stu[s->num++])實現(xiàn)對多個學(xué)生信息的輸入,把輸入的數(shù)據(jù)存入結(jié)構(gòu)體的信息庫數(shù)組studentInfostu[MUNMAX]中。3、詳細設(shè)計1、學(xué)生基本信息存儲的實現(xiàn)voidInput_aInfo(structstudentInfo*as)//輸入一個學(xué)生的信息{printf("Pleaseinputnum:");scanf("%d",&as->num);printf("Pleaseinputcls:");scanf("%d",&as->cls);as->name=(char*)malloc(30);printf("Pleaseinputname:");scanf("%s",as->name);printf("Pleaseinput10score:");for(intj=0;j<10;j++)scanf("%d",&as->score[j]);}voidInput_allInfo(structstuType*s,intnum)//輸入多個學(xué)生的信息{printf("\nEnter%dinfomations.\n",num);for(inti=0;i<num;i++){if(s->num==MUNMAX){printf("\nOverflow.");break;}Input_aInfo(&s->stu[s->num++]);}}2、學(xué)生基本信息顯示的實現(xiàn)voidPrint_aInfo(structstuTypes,intindex)//輸出一個學(xué)生的信息{printf("\n%4d%-10s",s.stu[index].num,s.stu[index].name);printf("%4d\n",s.stu[index].cls);for(inti=0;i<=10;i++)printf("%4d\n",s.stu[index].score[i]);}voidPrintInfo(structstuTypes)//輸出所有學(xué)生的信息{if(s.num==0){printf("\nNostudent.");return;}for(inti=0;i<s.num;i++){printf("\n%4d%-16s",s.stu[i].num,s.stu[i].name);printf("%4d%6.1d\n",s.stu[i].cls,s.stu[i].score[10]);}}3、按學(xué)號查找、學(xué)生信息的刪除和修改操作的具體實現(xiàn)intSearch(structstuTypestu)//查找{intnum;printf("\nEnternum:");scanf("%d",&num);for(inti=0;i<stu.num;i++)if(stu.stu[i].num==num)returni;return-1;}voidModify(structstuType*s,stuTypestu)//修改{intnum;if(s->num==0)printf("\nNostudent.");elseprintf("\nEnternum:");scanf("%d",&num);for(inti=0;i<=num;i++)if(stu.stu[i].num==num){printf("Pleaseinput10score");for(intj=0;j<10;j++)scanf("%d",&s->stu[i].score[j]);}}voidDel(structstuType*s)//刪除{intnum,i;if(s->num==0)printf("\nNostudent.");elseprintf("\nEnternum:");scanf("%d",&num);s->num--;for(i=0;i<10,s->stu[i].num==num;i++){s->stu[i].cls=0;s->stu[i].num=0;s->stu[i].name=0;}for(intj=0;j<10;j++)s->stu[i].score[j]=0;}4、按學(xué)號查詢平均成績和輸入班次,把學(xué)生的基本信心輸出的實現(xiàn)voidSearch_cls(structstuType*s)//查出一個班的成績{intcls;printf("\nEntercls:");scanf("%d",&cls);if(cls==0){printf("\nNoclass.");}else{for(inti=0;i<10,s->stu[i].cls==cls;i++){Print_aInfo(*s,i);}}}voidPj(structstuType*s)//求平均成績{intnum;printf("Pleaseinputnum:");scanf("%d",&num);for(inti=0;i<s->num;i++){if(s->stu[i].num==num){floatpj,sum=0;for(intj=0;j<10;j++)sum=sum+s->stu[i].score[j];pj=sum/10;printf("Pjscoreis%f",pj);}}}4、調(diào)試與分析4.1程序調(diào)試1、學(xué)生基本信息存儲和顯示的實現(xiàn)結(jié)果出現(xiàn)分數(shù)顯示錯誤,修改輸出所有學(xué)生信息函數(shù)PrintInfo(structstuTypes),修改后運行結(jié)果如下:2學(xué)生基本信息的查詢與學(xué)生信息的采集部分顯示4.2數(shù)據(jù)分析從整個程序來看,時間的消耗主要花在所有學(xué)生信息的輸入和輸出上,時間復(fù)雜度可認為是O(n2),不過這個程序的主函數(shù)涉及一個do—while循環(huán),使讀者可以任意查詢和修改,因而最終的執(zhí)行時間取決于調(diào)試者。這樣的程序的優(yōu)化主要在空間復(fù)雜度上,數(shù)組空間的利用上著手處理。本程序采用結(jié)構(gòu)體聲明的數(shù)組對象儲存,通過調(diào)用結(jié)構(gòu)體的成員變量來實現(xiàn)還是較成功的。5、用戶手冊5.1運行環(huán)境:PC機在Windowsxp系統(tǒng)下的Code::Blocks10.05編譯環(huán)境。5.2執(zhí)行文件:學(xué)生作業(yè)完成情況管理程序.cpp通過編譯連接生成的學(xué)生作業(yè)完成情況管理程序.exe。6、參考文獻1.郭翠英等編著,《C語言課程設(shè)計案例精編》,中國水利水電出版社,2005年。2.黃明,梁旭,萬洪莉編著《C語言課程設(shè)計》,電子工業(yè)出版社,2006年。3.高濤,《C語言程序設(shè)計-實驗指導(dǎo).課程設(shè)計.習(xí)題解答》,西安交通大學(xué)出版社,2007年2月。4.李建學(xué),李光元,吳春芳編著《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計案例精編》(用C/C++描述),清華大學(xué)出版社,2007年2月。5.王成端魏先民等,《C語言程序設(shè)計實訓(xùn)——題解、實驗、課程設(shè)計與樣題》,中國水利水電出版社,2005年。6.盛夕清,趙陽等編著,《C語言程序設(shè)計學(xué)習(xí)指導(dǎo)、實驗指導(dǎo)與課程設(shè)計》,中國水利水電出版社,2006年。7.嚴蔚敏

吳偉民編著,《

數(shù)據(jù)結(jié)構(gòu)》(C語言版),清華大學(xué)出版社,2010年7、心得體會經(jīng)過一個月的課程設(shè)計,過程曲折可謂一語難盡。整天都是對著電腦,有時翻閱資料。在此期間我失落過,也曾一度熱情高漲。點點滴滴令我回味無長。這次課程設(shè)計使我體會到只有做到細心耐心,恒心才能做好事情。這次的課程設(shè)計,加強了我們動手、思考和解決問題的能力。鞏固和加深了對數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運用本課程所學(xué)知識的能力。培養(yǎng)了我選用參考書,查閱手冊及文獻資料的能力。培養(yǎng)獨立思考,深入研究,分析問題、解決問題的能力。通過實際編譯系統(tǒng)的分析設(shè)計、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計方法。通過課程設(shè)計,培養(yǎng)了我嚴肅認真的工作作風(fēng),逐步建立正確的生產(chǎn)觀念、經(jīng)濟觀念和全局觀念。而且做課程設(shè)計同時也是對課本知識的鞏固和加強,平時看課本時,有些問題就不是很能理解,做完課程設(shè)計,那些問題就迎刃而解了。而且還可以記住很多東西。認識來源于實踐,實踐是認識的動力和最終目的,實踐是檢驗真理的唯一標準。所以這個期末測試之后的課程設(shè)計對我們的作用是非常大的。這次的課程設(shè)計使

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論