Java課程設(shè)計(jì)-大整數(shù)運(yùn)算_第1頁(yè)
Java課程設(shè)計(jì)-大整數(shù)運(yùn)算_第2頁(yè)
Java課程設(shè)計(jì)-大整數(shù)運(yùn)算_第3頁(yè)
Java課程設(shè)計(jì)-大整數(shù)運(yùn)算_第4頁(yè)
Java課程設(shè)計(jì)-大整數(shù)運(yùn)算_第5頁(yè)
已閱讀5頁(yè),還剩11頁(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)介

第1章課題概述本次課程設(shè)計(jì)的題目是年歷顯示。1.1課題的目的年歷顯示掌握java基本編程,熟悉常見的方法,結(jié)構(gòu)。是在學(xué)習(xí)完課程后進(jìn)行的一次全面的綜合練習(xí)。本課程設(shè)計(jì)的目的和任務(wù).鞏固和加深學(xué)生對(duì)java語(yǔ)言課程的基本知識(shí)的理解和掌握.掌握java語(yǔ)言編程和程序調(diào)試的基本技能.利用java語(yǔ)言進(jìn)行基本的軟件設(shè)計(jì),掌握書寫程序設(shè)計(jì)說(shuō)明文檔的能力,提高運(yùn)用java語(yǔ)言解決實(shí)際問(wèn)題的能力.1.2課題的要求年歷顯示要求做個(gè)簡(jiǎn)單的年歷,輸入不同格式的年月日會(huì)輸出不同功能要求的結(jié)果,其功能大體有3個(gè)。1.輸入一個(gè)年份,輸出是在屏幕上顯示該年的日歷。假定輸入的年份在1940-2040年之間。2.輸入年月,輸出該月的日歷。3.輸入年月日,輸出距今天還有多少天,星期幾,是否是公歷節(jié)日。通過(guò)顯示年日歷程序的設(shè)計(jì),培養(yǎng)學(xué)生綜合利用java語(yǔ)言進(jìn)行程序設(shè)計(jì)的能力,加強(qiáng)函數(shù)的運(yùn)用及學(xué)生對(duì)軟件工程方法的初步認(rèn)識(shí),提高軟件系統(tǒng)分析能力和程序文檔建立、歸納總結(jié)的能力。通過(guò)本項(xiàng)課程設(shè)計(jì),可以培養(yǎng)獨(dú)立思考、綜合運(yùn)用所學(xué)有關(guān)相應(yīng)知識(shí)的能力,能更好的鞏固java語(yǔ)言程序設(shè)計(jì)課程學(xué)習(xí)的內(nèi)容,掌握工程軟件設(shè)計(jì)的基本方法,強(qiáng)化上機(jī)動(dòng)手編程能力。第2章概要設(shè)計(jì)2.1整個(gè)程序的模塊結(jié)構(gòu)及流程依據(jù)課程設(shè)計(jì)的要求,需要設(shè)計(jì)一個(gè)菜單功能,進(jìn)入程序后,有菜單可以提供選擇,選擇1,進(jìn)入年歷顯示階段,年歷顯示完畢,再次進(jìn)入菜單選擇。選擇2,進(jìn)入月歷顯示階段,月歷顯示完畢,再次進(jìn)入菜單選擇。選擇3,進(jìn)入日期查詢階段,日期查詢完畢,再次進(jìn)入菜單。選擇0,退出程序。(圖2-1整個(gè)程序各功能模塊間的流程)2.2年歷顯示的結(jié)構(gòu)及方法2.2.1主體構(gòu)思先采用數(shù)組來(lái)實(shí)現(xiàn)年月的顯示,因?yàn)?月,3月,5月,7月,8月,10月,12月都是有31天,而4月,6月,9月,11月都是30天。二月比較特殊,如果是閏年就29天,平年就29天。用數(shù)組方法:intmonthday[12]={31,28,31,30,31,30,31,31,30,31,30,31};charmonthname[12][20]={"Januray1","February2","March3","April4","May5","June6","July7","August8","September9","October10","November11","December12"};charweekname[7][10]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};可以實(shí)現(xiàn)輸出每月的天數(shù)顯示。本代碼用的事switch方法,這更容易理解。;switch(m){ case1: case3: case5: case7: case8: case10: case12: return31; case4: case6: case9: case11: return30; case2: if(isLeapYear(year)){ return29; }else{ return28; } default: return0; } }但代碼數(shù)量較多。2.2.2方法構(gòu)思所選月份天數(shù)的算法:用switch語(yǔ)句實(shí)現(xiàn)。一三五七八十二月份為31天,四六九十一月份為30天對(duì)于二月份進(jìn)行閏年與非閏年的討論。先算出輸入年份的第一天即firstDay,再根據(jù)firstDay計(jì)算出該輸出多少空格,輸出空格后依次輸出天數(shù)到把改月天數(shù)全部輸完。這樣輸出第一月,再循環(huán)增加月份到12月。這樣輸入某一年后將依次輸出該年的12月每個(gè)月的日歷。當(dāng)輸入某一年某一月時(shí)將特定地輸出改月的日歷,只輸出改月的天數(shù)對(duì)應(yīng)的日歷。當(dāng)輸入年月日時(shí),調(diào)用方法LocalDateld=LocalDate.now();將時(shí)間對(duì)象轉(zhuǎn)換成字符串,再將字符串轉(zhuǎn)換成毫秒,又調(diào)用方法算出現(xiàn)在時(shí)間的毫秒。用方法longdiff=date1.getTime()-date2.getTime();longdays=diff/(24*60*60*1000);算出距離今天的天數(shù)。再有switch方法判斷是否為公歷節(jié)日,若是則輸出該節(jié)日。輸出月份第一天為星期幾的算法:使總天數(shù)除以7取余得幾既為星期幾,若是0則為星期日。3.算出輸出月份第一天為星期幾的算法:算出輸出月份第一天為星期幾后,把該日期以前的位置用空格補(bǔ)上,并總該日起一次輸出天數(shù)直到月底,該月中的天數(shù)加上該月一日為星期幾的數(shù)字再除以7得0換行,即可完整的輸出該月的日歷。

第3章程序功能的實(shí)現(xiàn)3.1主函數(shù)的實(shí)現(xiàn)importjava.text.DateFormat;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.time.LocalDate;importjava.time.format.DateTimeFormatter;importjava.util.Calendar;importjava.util.Date;importjava.util.GregorianCalendar;importjava.util.Scanner;publicclassa{ staticintyear,monthday; //得到各月份的天數(shù) publicstaticintmonthDay(intm){ switch(m){ case1: case3: case5: case7: case8: case10: case12: return31; case4: case6: case9: case11: return30; case2: if(isLeapYear(year)){ return29; }else{ return28; } default: return0; } } publicstaticbooleanisLeapYear(inty){//計(jì)算該年第一天是星期幾(1年1月1日是星期一,計(jì)算y年到它的天數(shù)和7取余來(lái)算星期幾 return((y%4==0&&y%100!=0)||(y%400==0)); } publicstaticintfirstDay(inty){ longn=y*365; for(inti=1;i<y;i++){//計(jì)算y年到公元一年的年份中有多少個(gè)閏年,然后加1 if(isLeapYear(i)){ n++; } } return(int)n%7; } publicstaticvoidmain(String[]args){ intchoice; outer:while(true){ System.out.println("請(qǐng)選擇功能:"); System.out.println("1.輸入一個(gè)年份,輸出是在屏幕上顯示該年的日歷。"); System.out.println("2.輸入年月,輸出該月的日歷。"); System.out.println("3.輸入年月日,輸出距今天還有多少天,星期幾,是否是公歷節(jié)日"); Scannerscanner=newScanner(System.in); choice=scanner.nextInt(); System.out.println();3.2主要功能模塊的實(shí)現(xiàn)3.2.1年份顯示的實(shí)現(xiàn)switch(choice){ case1: Scannersc=newScanner(System.in); System.out.print("請(qǐng)輸入年(yyyy)"); Strings=sc.nextLine(); year=Integer.parseInt(s); intfd=firstDay(year); System.out.println("\n"+year+"年"+"\n" +""); for(intm=1;m<=12;m++){ System.out.println("\n"+m+"月"+"\n******************" +"******************"); System.out .println("日一二三四五六"); for(inti=1;i<=fd;i++){ System.out.print(""); } monthday=monthDay(m); for(inti=1;i<=monthday;i++){ if(i<10){ System.out.print(i+""); }else{ System.out.print(i+""); } fd=(fd+1)%7; if(fd==0){ System.out.println(); } } System.out.println(); } break;3.2.2月份顯示的實(shí)現(xiàn)case2: System.out.print("2、請(qǐng)輸入年月(yyyy-mm)"); Scannersc2=newScanner(System.in); Stringtemp=sc2.nextLine(); DateFormatformat2=newSimpleDateFormat("yyyy-MM"); try{ Datedate=format2.parse(temp); Calendarcalendar=newGregorianCalendar(); calendar.setTime(date); intday=calendar.get(Calendar.DATE); calendar.set(Calendar.DATE,1); intmaxDate=calendar.getActualMaximum(Calendar.DATE); System.out.println(temp+"月"); System.out.println("****************************************************"); System.out.println("日\(chéng)t一\t二\t三\t四\t五\t六"); for(inti=1;i<calendar.get(Calendar.DAY_OF_WEEK);i++){ System.out.print('\t'); } for(inti=1;i<=maxDate;i++){ System.out.print(i+"\t"); intw=calendar.get(Calendar.DAY_OF_WEEK); if(w==Calendar.SATURDAY){ System.out.print('\n'); } calendar.add(Calendar.DATE,1); } }catch(ParseExceptione){ e.printStackTrace(); } System.out.println(); break;3.2.3日期距今天天數(shù)的實(shí)現(xiàn)/case3: Scannersc3=newScanner(System.in); System.out.print("3、請(qǐng)輸入年月日(yyyy-mm-dd)"); Stringd1=sc3.nextLine(); LocalDateld=LocalDate.now(); //將時(shí)間對(duì)象轉(zhuǎn)換成字符串 DateTimeFormatterf=DateTimeFormatter.ofPattern("yyyy-MM-dd"); Stringd2=ld.format(f); System.out.println(); DateFormatformat3=newSimpleDateFormat("yyyy-MM-dd"); Datedate1=null, date2=null; Scannersc31=newScanner(System.in); System.out.print("請(qǐng)輸入月"); intd11=sc31.nextInt(); Scannersc32=newScanner(System.in); System.out.print("請(qǐng)輸入日"); intd12=sc32.nextInt(); switch(d11){ case1: if(d12==1){ System.out.println("\n這天是元旦\n"); } break; case6: if(d12==1){ System.out.println("\n這天是國(guó)際兒童節(jié)\n"); } break; case5: if(d12==1){ System.out.println("\n這天是國(guó)際勞動(dòng)節(jié)\n"); } if(d12==4){ System.out.println("\n這天是五四青年節(jié)\n"); } break; case8: if(d12==1){ System.out.println("\n這天是建軍節(jié)\n"); } break; case10: if(d12==1){ System.out.println("\n這天是國(guó)慶節(jié)\n"); } break; case3: if(d12==8){ System.out.println("\n這天是國(guó)際婦女節(jié)\n"); } break; case9: if(d12==10){ System.out.println("\n這天是教師節(jié)\n"); } break; case7: if(d12==1){ System.out.println("\n這天是建黨節(jié)\n"); } break; default: System.out.println("\n這天是不是公歷節(jié)日\(chéng)n"); break; } try{ date1=format3.parse(d1); date2=format3.parse(d2); longdiff=date1.getTime()-date2.getTime(); longdays=diff/(24*60*60*1000); if(days>=0){ System.out.println("距離今天還有"+days+"天"); }else{ days=-days; System.out.println("已經(jīng)過(guò)去"+days+"天"); } }catch(ParseExceptione){ e.printStackTrace(); } break; case0: breakouter; default: System.out.println("輸入的選項(xiàng)有誤,請(qǐng)重新輸入!"); break; } 第4章調(diào)試及發(fā)現(xiàn)問(wèn)題的解決4.1調(diào)試中發(fā)現(xiàn)的問(wèn)題調(diào)試中發(fā)現(xiàn)若用方法,即分別寫三個(gè)方法,在主類可調(diào)用三個(gè)方法,三個(gè)方法分別是輸出年份,輸出月份,輸出日期。但后來(lái)改成了switch,開始是用數(shù)字,根據(jù)提示依次輸出年,再輸出月,再根據(jù)提示輸出日,后發(fā)現(xiàn)按照格式y(tǒng)yyy-mm-dd更適合輸入習(xí)慣,更方便使用。程序能和計(jì)算機(jī)的日期和時(shí)間保持同步,但還不能像網(wǎng)絡(luò)上提供的萬(wàn)年歷一樣有節(jié)日提醒、農(nóng)歷查詢等功能。運(yùn)行時(shí)出現(xiàn)異常。4.2問(wèn)題的解決輸入格式改為yyyy-mm-dd格式形式,這樣將字符串輸入,再將字符串轉(zhuǎn)換成數(shù)字,在根據(jù)數(shù)字運(yùn)算。用一個(gè)catch語(yǔ)句捕獲所有的異常。最常見的情形就是使用catch(Exceptionex)語(yǔ)句。但實(shí)際上,在絕大多數(shù)情況下,這種做法不值得提倡?;仡櫼幌耤atch語(yǔ)句的catch語(yǔ)句表示預(yù)期會(huì)出現(xiàn)某種異常,而且希望能夠處理該異常。異常類的作用就是告訴Java編譯器我們想要處理的是哪一種異常。將Java異??醋魇且活愊ⅲ鼈魉鸵恍┫到y(tǒng)問(wèn)題、故障及未按規(guī)定執(zhí)行的動(dòng)作的相關(guān)信息。異常包含信息,以將信息從應(yīng)用程序的一部分發(fā)送到另一部分。通過(guò)多次該后程序正常運(yùn)行。

第5章程序測(cè)試在電腦中打開eclipse應(yīng)用程序,將程序代碼輸入,運(yùn)行結(jié)果,觀察各個(gè)功能運(yùn)行情況。5.1某年月份顯示測(cè)試輸入一個(gè)年份,輸出是在屏幕上顯示該年的日歷。(圖5-1-1-1菜單功能顯示)(圖5-1-1-2,顯示20

溫馨提示

  • 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)論