數(shù)據(jù)結(jié)構(gòu) 實習(xí)報告_第1頁
數(shù)據(jù)結(jié)構(gòu) 實習(xí)報告_第2頁
數(shù)據(jù)結(jié)構(gòu) 實習(xí)報告_第3頁
數(shù)據(jù)結(jié)構(gòu) 實習(xí)報告_第4頁
數(shù)據(jù)結(jié)構(gòu) 實習(xí)報告_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

長春理工大學(xué)學(xué)生實習(xí)報告2012~2013學(xué)年第一學(xué)期實習(xí)類別:課程設(shè)計學(xué)院:計算機(jī)學(xué)院專業(yè):網(wǎng)絡(luò)工程班級:姓名:2012年12月29日起止周17~18周數(shù)2實習(xí)地點軟件學(xué)院專業(yè)實驗室實習(xí)目的:數(shù)據(jù)結(jié)構(gòu)課程主要是研究非數(shù)值計算的程序設(shè)計問題中所出現(xiàn)的計算機(jī)操作對象以及它們之間的關(guān)系和操作的學(xué)科。數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學(xué)、計算機(jī)軟件和計算機(jī)硬件之間的一門計算機(jī)專業(yè)的核心課程,它是計算機(jī)程序設(shè)計、數(shù)據(jù)庫、操作系統(tǒng)、編譯原理及人工智能等的重要基礎(chǔ),廣泛的應(yīng)用于信息學(xué)、系統(tǒng)工程等各種領(lǐng)域。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)是為了將實際問題中所涉及的對象在計算機(jī)中表示出來并對它們進(jìn)行處理。通過課程設(shè)計可以提高學(xué)生的思維能力,促進(jìn)學(xué)生的綜合應(yīng)用能力和專業(yè)素質(zhì)的提高。通過此次課程設(shè)計主要達(dá)到以下目的:了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計方法,具備初步的獨立分析和設(shè)計能力;初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能;提高綜合運(yùn)用所學(xué)的理論知識和方法獨立分析和解決問題的能力;訓(xùn)練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進(jìn)行軟件開發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng)。實習(xí)要求:1、獨立思考,獨立完成:課程設(shè)計中各任務(wù)的設(shè)計和調(diào)試要求獨立完成,遇到問題可以討論,但不可以拷貝。2、做好上機(jī)準(zhǔn)備:每次上機(jī)前,要事先編制好準(zhǔn)備調(diào)試的程序,認(rèn)真想好調(diào)試步驟和有關(guān)環(huán)境的設(shè)置方法,準(zhǔn)備好有關(guān)的文件。3、按照課程設(shè)計的具體要求建立的功能模塊,每個模塊要求按照如下幾個內(nèi)容認(rèn)真完成;其中包括:a)需求分析:在該部分中敘述,每個模塊的功能要求b)概要設(shè)計在此說明每個部分的算法設(shè)計說明(可以是描述算法的流程圖),每個程序中使用的存儲結(jié)構(gòu)設(shè)計說明(如果指定存儲結(jié)構(gòu)請寫出該存儲結(jié)構(gòu)的定義。c)詳細(xì)設(shè)計各個算法實現(xiàn)的源程序,對每個題目要有相應(yīng)的源程序(可以是一組源程序,每個功能模塊采用不同的函數(shù)實現(xiàn))源程序要按照寫程序的規(guī)則來編寫。要結(jié)構(gòu)清晰,重點函數(shù)的重點變量,重點功能部分要加上清晰的程序注釋。d)調(diào)試分析測試數(shù)據(jù),測試輸出的結(jié)果,時間復(fù)雜度分析,和每個模塊設(shè)計和調(diào)試時存在問題的思考,算法的改進(jìn)設(shè)想。實習(xí)進(jìn)度安排及主要內(nèi)容:第一周:對題目進(jìn)行研究,進(jìn)行需求分析,明確分工。第二周:開始寫代碼,實現(xiàn)需求分析的功能,并進(jìn)行調(diào)試可修改。成績:指導(dǎo)教師/帶隊教師(簽字)年月日一、需求分析參加運(yùn)動會有n個學(xué)校,學(xué)校編號為1……n.比賽分成m個男子項目,和w個女子項目.項目編號為男子1m,女子m+1m+w.不同的項目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m<=20,n<=20)【功能要求】:可以輸入各個項目的前三名或前五名的成績;能統(tǒng)計各學(xué)校總分;可以按學(xué)校編號、學(xué)校總分、男女團(tuán)體總分排序輸出;可以按學(xué)校編號查詢學(xué)校某個項目的情況;可以按項目編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校。5)輸出形式:有中文提示,各學(xué)校分?jǐn)?shù)為整形6)存儲結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計,但是要求運(yùn)動會的相關(guān)數(shù)據(jù)要存儲在數(shù)據(jù)文件中。算法的基本思想 算法的主要思路是:1.函數(shù)main()用來輸入m,n,w,將其用作參數(shù)確定input()中數(shù)組的大??;基本思路如下:(1)提示并等待輸入m,n,w(2)完成后進(jìn)入主菜單(3)按提示完成相應(yīng)功能2.函數(shù)input()用來錄入前三名或前五名的成績;基本思路如下:根據(jù)傳進(jìn)來的參數(shù),確定數(shù)組dele[]大?。?)輸入項目名稱,根據(jù)標(biāo)志確定錄入前三名的還是前五名的成績(3)分別存入數(shù)組中3.函數(shù)divide()將處理dele[]中數(shù)據(jù),并將其存放到二維數(shù)組中,并形成學(xué)?!畔⒌男问交舅悸啡缦拢海?)創(chuàng)建二維數(shù)組school[][],第一個參數(shù)是學(xué)校,第二個是dele[]中的信息(2)將信息分別放入到對應(yīng)得位置(3)形成學(xué)?!畔?.函數(shù)malesort(),femalesort()用來處理男女團(tuán)體的得分的排序?;舅悸啡缦拢赫{(diào)用divide()。根據(jù)”男”,”女”的標(biāo)志分別得到每個學(xué)校的男女得分分別用冒泡排序法的到從大到小的排序函數(shù)sumScore()用來的到學(xué)校的總分基本思路如下:創(chuàng)建school[]的一維數(shù)組調(diào)用divide()函數(shù)循環(huán)累加各項得分,得到各學(xué)??偡?.函數(shù)sumsort(booleanb)用來按學(xué)校編號、學(xué)??偡峙判蚧舅悸啡缦拢赫{(diào)用sumScore()若b=false,則利用冒泡排序法,按學(xué)校編號由大到小排序若b=true,則利用冒泡排序法,按學(xué)??偡钟纱蟮叫∨判?.函數(shù)search()用來/按學(xué)校編號和項目查詢基本思路如下:輸入學(xué)校編號和項目判斷是否有數(shù)據(jù),并對其處理輸出此學(xué)校在某項目的運(yùn)動員詳細(xì)信息8.函數(shù)searchitem()用來按按項目查前三或前五的成績基本思路如下:輸入某項目的名稱判斷是否存在此項目得到前三或前五名學(xué)校的編號8.函數(shù)outFile()用來存數(shù)據(jù)記錄基本思路如下:創(chuàng)建FileWriter對象寫入文件信息主要代碼如下:publicvoidinput(){ stu=newDele[3*m+5*w];//數(shù)組的大小 //System.out.println(stu.length); for(inti=0;i<stu.length;i++) { stu[i]=newDele();//循環(huán)創(chuàng)建Stu對象 } Stringnumitem;//項目名 intnumSchool;//學(xué)校編號 intnameStudent;//學(xué)生的編號 intrank;//名次 intscore;//得分 StringsexStudent;//性別 intj,i; j=i=0; //intj=0; booleanflag1=false;//標(biāo)志用來判斷是取前三的還是去前五的項目 booleanflag2=false; for(;i<3*m+5*w;){ Stringstr1[]={"跳遠(yuǎn)","跳高","接力","標(biāo)槍"};//定好的項目st1取前三st2取前五 Stringstr2[]={"長跑","短跑","鉛球","1000米"}; System.out.println("輸入項目名稱:"); numitem=s.next(); stu[i].setNumitem(numitem); for(intk=0;k<str1.length;k++){ if(str1[k].equals(numitem)){ flag1=true; flag2=false; } elseif(str2[k].equals(numitem)){ flag1=false; flag2=true; } } if(flag1){ System.out.println("前三名學(xué)校編號選手編號取得名次得分性別"); for(j=i;j<i+3;j++){ numSchool=s.nextInt(); nameStudent=s.nextInt(); rank=s.nextInt(); score=s.nextInt(); sexStudent=s.next(); stu[j].setNumitem(numitem); stu[j].setNumSchool(numSchool); stu[j].setNameStudent(nameStudent); stu[j].setRank(rank); stu[j].setScore(score); stu[j].setSexStudent(sexStudent); System.out.println("錄入完成"); } i=j; } elseif(flag2){ System.out.println("前五名的"); for(j=i;j<i+5;j++){ numSchool=s.nextInt(); nameStudent=s.nextInt(); rank=s.nextInt(); score=s.nextInt(); sexStudent=s.next(); stu[j].setNumitem(numitem); stu[j].setNumSchool(numSchool); stu[j].setNameStudent(nameStudent); stu[j].setRank(rank); stu[j].setScore(score); stu[j].setSexStudent(sexStudent); System.out.println("錄入完成"); } i=j; }else{ System.out.println("項目名錯,重新輸入"); } } }publicvoiddivide(){ Deledd[]=newDele[3*m+5*w]; pp=newDele[n][3*m+5*w];//n代表每個學(xué)校里面有詳細(xì)信息如運(yùn)動員編號得分性別等 for(inti=0;i<pp.length;i++)//pp.length=n for(intj=0;j<pp[i].length;j++) pp[i][j]=newDele();//向每個學(xué)校添加詳細(xì)信息 for(inti=0;i<dd.length;i++) dd[i]=newDele(); for(inti=0;i<stu.length;i++){ dd[i]=stu[i];//將stu[]里的信息裝入dd[] } for(inti=0,k=0;i<dd.length;i++){//將學(xué)校按行列出來在按學(xué)校存入信息最后構(gòu)成學(xué)?!畔⒌男问? if(dd[i]!=null){ pp[k][0]=dd[i]; for(intj=i+1;j<dd.length;j++) if(dd[j]!=null&&dd[i].getNumSchool()==dd[j].getNumSchool()){ pp[k][j]=dd[j]; dd[j]=null; } k++; } } } publicvoidmalesort(){ Stringman="男"; Schoolss1[]=newSchool[n]; for(inti=0;i<ss1.length;i++) ss1[i]=newSchool(); intmaleschoolscore[]=newint[n]; this.divide(); for(inti=0;i<pp.length;i++) for(intj=0;j<pp[i].length;j++){ if(man.equals(pp[i][j].getSexStudent())) maleschoolscore[i]+=pp[i][j].getScore(); } for(inti=0;i<ss1.length;i++){ ss1[i].setSchoolnum(pp[i][0].getNumSchool()); ss1[i].setSchoolscore(maleschoolscore[i]); } inti,j; Schoolindex;//男團(tuán)排序 for(i=0;i<ss1.length;i++)//冒泡排序 for(j=i+1;j<ss1.length;j++) if(ss1[i].getSchoolscore()<ss1[j].getSchoolscore()){ index=ss1[i]; ss1[i]=ss1[j]; ss1[j]=index; } System.out.println("學(xué)校男團(tuán)體總分排序:"); for(i=0;i<maleschoolscore.length;i++) System.out.println(ss1[i].getSchoolnum()+""+ss1[i].getSchoolscore()); } publicvoidfemalesort(){ Stringwoman="女"; Schoolss1[]=newSchool[n]; for(inti=0;i<ss1.length;i++) ss1[i]=newSchool(); intfemaleschoolscore[]=newint[n]; this.divide(); for(inti=0;i<pp.length;i++) for(intj=0;j<pp[i].length;j++){ if(woman.equals(pp[i][j].getSexStudent())) femaleschoolscore[i]+=pp[i][j].getScore(); } for(inti=0;i<ss1.length;i++){ ss1[i].setSchoolnum(pp[i][0].getNumSchool()); ss1[i].setSchoolscore(femaleschoolscore[i]); } inti,j; Schoolindex;//女團(tuán)排序 for(i=0;i<ss1.length;i++) for(j=i+1;j<ss1.length;j++) if(ss1[i].getSchoolscore()<ss1[j].getSchoolscore()){ index=ss1[i]; ss1[i]=ss1[j]; ss1[j]=index; } System.out.println("學(xué)校女團(tuán)體總分排序:"); for(i=0;i<femaleschoolscore.length;i++) System.out.println(ss1[i].getSchoolnum()+""+ss1[i].getSchoolscore()); } publicvoidsumScore(){//得到學(xué)校的總分 schoolscore=newint[n]; ss=newSchool[n]; for(inti=0;i<ss.length;i++) ss[i]=newSchool(); this.divide(); for(inti=0;i<pp.length;i++) for(intj=0;j<pp[i].length;j++){ schoolscore[i]+=pp[i][j].getScore(); } for(inti=0;i<ss.length;i++){ ss[i].setSchoolnum(pp[i][0].getNumSchool()); ss[i].setSchoolscore(schoolscore[i]); } } publicvoidsumsort(booleanb){ inti,j; Schoolindex; this.sumScore(); if(b){//b為標(biāo)志false--按學(xué)校編號排序true--按總分 for(i=0;i<ss.length;i++){//按學(xué)??偡峙判? for(j=i+1;j<ss.length;j++) if(ss[i].getSchoolscore()<ss[j].getSchoolscore()){ index=ss[i]; ss[i]=ss[j]; ss[j]=index; } } System.out.println("按學(xué)??偡峙判颍?); for(i=0;i<schoolscore.length;i++) System.out.println(ss[i].getSchoolnum()+""+ss[i].getSchoolscore()); } else{ for(i=0;i<ss.length;i++){//按學(xué)校編號排序 for(j=i+1;j<ss.length;j++) if(ss[i].getSchoolnum()<ss[j].getSchoolnum()){ index=ss[i]; ss[i]=ss[j]; ss[j]=index; } } System.out.println("按學(xué)校編號排序:"); for(i=0;i<schoolscore.length;i++) System.out.println(ss[i].getSchoolnum()+""+ss[i].getSchoolscore()); } } publicvoidsearch(){//按學(xué)校編號和項目查詢 intnum; Stringname; booleanbl=true; System.out.println("輸入學(xué)號和項目名:"); num=s.nextInt(); name=s.next(); for(inti=0;i<stu.length;i++) if(num==stu[i].getNumSchool()&&name.equals(stu[i].getNumitem())){ System.out.println("學(xué)校"+num+"的"+name+"信息:"); bl=false; System.out.println(stu[i].getNumSchool()+""+stu[i].getNumitem()+""+stu[i].getNameStudent()+""+stu[i].getSexStudent()+""+stu[i].getRank()+""+stu[i].getScore()); } if(bl){ System.out.println("無信息"); } } publicvoidsearchitem(){//按按項目查前三或前五的成績 Stringitemname; booleant=true; System.out.println("輸入項目:"); itemname=s.next(); System.out.println("該項目前三或前五的學(xué)校信息:"); for(inti=0;i<stu.length;i++){ if(itemname.equals(stu[i].getNumitem())){ t=false; System.out.println(stu[i].

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論