java課程設(shè)計(jì)-萬歷_第1頁
java課程設(shè)計(jì)-萬歷_第2頁
java課程設(shè)計(jì)-萬歷_第3頁
java課程設(shè)計(jì)-萬歷_第4頁
java課程設(shè)計(jì)-萬歷_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 簡易萬年歷目 錄1緒論.12需求分析.2 2.1設(shè)計(jì)要求.22.2相關(guān)功能.23詳細(xì)設(shè)計(jì).33.1設(shè)計(jì)思路.33.2 流程圖.44運(yùn)行結(jié)果.5參考文獻(xiàn).7附錄 源程序.81緒論java的前身是oak,它一開始只是被應(yīng)用于消費(fèi)性電子產(chǎn)品中。后來它的開發(fā)者們發(fā)現(xiàn)它還可以被用于更大范圍的internet上。1995年,java語言的名字從oak編程了java。1997年j2se1.1發(fā)布。1998年j2se1.2發(fā)布,標(biāo)志java2的誕生。十多年來,java編程語言及平臺成功地運(yùn)用在網(wǎng)絡(luò)計(jì)算及移動(dòng)等各個(gè)領(lǐng)域。java的體系結(jié)構(gòu)由java語言、java class、java api、java虛擬機(jī)組

2、成。它具有簡單、面向?qū)ο?、健壯、安全、結(jié)構(gòu)中立、可移植和高效能等眾多優(yōu)點(diǎn)。java支持多線程編程,java運(yùn)行時(shí)系統(tǒng)在多線程同步方面具有成熟的解決方案。java的平臺標(biāo)準(zhǔn)有java me,java se和java ee。java發(fā)展到今天,它的卓越成就及在業(yè)界的地位毋庸置疑。目前在眾多的支持java的開發(fā)工具中主要的7有java development kit,netbeans,jcreator,jbuilder,jdeveloper和eclipse等。其中java development kit 簡稱jdk是大多開發(fā)工具的基礎(chǔ)。以上的每種開發(fā)工具都有優(yōu)缺點(diǎn),對于開發(fā)者來說,重要的是要根據(jù)自己

3、的開發(fā)規(guī)模、開發(fā)內(nèi)容和軟硬件環(huán)境等因素來選擇一種合適的開發(fā)工具。2需求分析2.1設(shè)計(jì)要求1.使用圖形用戶界面2.輸入年份查詢    3.選擇年份,月份查詢    4.顯示每月天數(shù),輸出該月每天星期,輸出該月日期的表格形式。2.2相關(guān)功能本程序要構(gòu)建的萬年歷程序,其功能有以下幾個(gè)方面:1通過網(wǎng)頁形式運(yùn)行,實(shí)現(xiàn)圖形界面。2能以月歷形式顯示日期與星期。3支持用戶自己輸入年份,并提供月份的上下變化來選擇月份。3詳細(xì)設(shè)計(jì)3.1設(shè)計(jì)思路1. 總天數(shù)的算法:首先用if語句判斷定義年到輸入年之間每一年是否為閏年,是閏年,該年的總天數(shù)為366,否則,為365。然后判斷輸入

4、的年是否為定義年,若是,令總天數(shù)s=1,否則,用累加法計(jì)算出定義年到輸入年之間的總天數(shù),再把輸入年的一月到要輸出的月份之間的天數(shù)累加起來,若該月是閏年中的月份并且該月還大于二月,再使總天數(shù)加1,否則,不加,既算出從定義年一月一日到輸出年的該月一日的總天數(shù)。2. 輸出月份第一天為星期幾的算法:使總天數(shù)除以7取余加2得幾既為星期幾,若是7,則為星期日。3. 算出輸出月份第一天為星期幾的算法:算出輸出月份第一天為星期幾后,把該日期以前的位置用空格補(bǔ)上,并總該日起一次輸出天數(shù)直到月底,該月中的天數(shù)加上該月一日為星期幾的數(shù)字再除以7得0換行,即可完整的輸出該月的日歷。4. 如果年份小于1582年則程序不

5、予判斷。3.2 流程圖程序初始化獲取當(dāng)前系統(tǒng)時(shí)間年份等數(shù)據(jù)提交年月變更數(shù)據(jù) 是否輸入年份或選擇月份開始計(jì)算,繪制屏幕結(jié)束4運(yùn)行結(jié)果1.輸入2010年,并表格輸出。2.查詢2011年5月,并表格輸出。3. 查詢2000年2月,并表格輸出。4. 查詢1990年12月,并表格輸出。參考文獻(xiàn)1 曾令明.索望.甘剛.宋波.java程序設(shè)計(jì)教程m.西安:電子科技大學(xué)出版社,2007.2 孫全黨.王吳迪.趙楓朝.java程序設(shè)計(jì)應(yīng)用教程m.電子工業(yè)出版社,2006.3 趙玉陽.java從入門到精通m.清華大學(xué)出版社,2006.4 唐大仕java 程序設(shè)計(jì)m北方交通出版社,2003.5 劉寶林java 程序設(shè)

6、計(jì)與案例m高考教育出版社,2004.附錄 源程序import java.awt.*;import java.awt.event.actionevent;import java.awt.event.actionlistener;import java.awt.event.mouseevent;import java.awt.event.mouselistener;import java.io.bufferedreader;import java.io.bufferedwriter;import java.io.file;import java.io.fileinputstream;import

7、java.io.filenotfoundexception;import java.io.fileoutputstream;import java.io.ioexception;import java.io.inputstreamreader;import java.io.outputstreamwriter;import java.text.dateformat;import java.text.simpledateformat;import java.util.calendar;import java.util.date;import javax.swing.jbutton;import

8、javax.swing.jdialog;import javax.swing.jframe;import javax.swing.jlabel;import javax.swing.joptionpane;import javax.swing.jpanel;import javax.swing.jscrollpane;import javax.swing.jtable;import javax.swing.jtextarea;import javax.swing.jtextfield;import javax.swing.table.defaulttablemodel;public class

9、 mycalendar extends jframe implements actionlistener, mouselistener private calendar cld = calendar.getinstance(); private string astr = "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" private defaulttablemodel dtm = new defaultta

10、blemodel(null,astr); private jtable table = new jtable(dtm); /裝日期的表格 private jscrollpane sp = new jscrollpane(table); private jbutton blastyear = new jbutton("上一年"); private jbutton bnextyear = new jbutton("下一年"); private jbutton blastmonth = new jbutton("上月"); private

11、jbutton bnextmonth = new jbutton("下月"); private jtextfield jtfyear = new jtextfield(5);/jtfyear年份顯示和輸入文本框 private jtextfield jtfmonth = new jtextfield(2);/jtfmonth月份顯示文本框 private jpanel p1 = new jpanel(); /裝入控制日期按鈕的模塊 private jpanel p2 = new jpanel(); private jpanel p3 = new jpanel(new bor

12、derlayout(); private jpanel p4 = new jpanel(new gridlayout(2,1); private jpanel p5 = new jpanel(new borderlayout(); private jbutton badd = new jbutton("保存日志"); private jbutton bdel = new jbutton("刪除日志"); private jtextarea jta = new jtextarea(); /jta-jtextarea private jscrollpane

13、jsp = new jscrollpane(jta); private jlabel l = new jlabel("您可以向年份文本框中鍵入您要查找的年份,以提高查詢效率"); private jlabel lt = new jlabel(); private jlabel ld = new jlabel(); private int lasttime; public mycalendar() super("簡易萬年歷"); /框架命名 this.setdefaultcloseoperation(jframe.exit_on_close);/窗口關(guān)閉函

14、數(shù) this.getcontentpane().setlayout(new borderlayout(10, 0); jta.setlinewrap(true); table.setgridcolor(color.gray); /星期之間的網(wǎng)格線是灰色的 table.setcolumnselectionallowed(true); table.setselectionbackground(color.black);/當(dāng)選定某一天時(shí)這一天背景黑色 table.setselectionforeground(color.green);/選定的日期字體是綠色的 table.setbackground(

15、new color(184,207,229);/日期顯示表格顏色淺藍(lán)色 table.setfont(new font("黑體",font.bold,24);/日期數(shù)字字體格式 table.setrowheight(30);/表格的高度 table.addmouselistener(this); /鼠標(biāo)監(jiān)聽器 jtfyear.addactionlistener(this);/可輸入年份的文本框 /為各個(gè)按鈕添加監(jiān)聽函數(shù) badd.addactionlistener(this); bdel.addactionlistener(this); blastyear.addaction

16、listener(this); bnextyear.addactionlistener(this); blastmonth.addactionlistener(this); bnextmonth.addactionlistener(this); /將按鈕添加到j(luò)panel上 p1.add(blastyear); p1.add(jtfyear);/年份輸入文本框 p1.add(bnextyear); p1.add(blastmonth); p1.add(jtfmonth); p1.add(bnextmonth); p2.add(badd); p2.add(bdel); p3.add(jsp, b

17、orderlayout.center); /jsp? p3.add(p2, borderlayout.south); p3.add(ld, borderlayout.north); p4.add(l); p4.add(lt); p5.add(p4, borderlayout.south); p5.add(sp, borderlayout.center); p5.add(p1, borderlayout.north); this.getcontentpane().add(p5, borderlayout.center); this.getcontentpane().add(p3, borderl

18、ayout.east); string strdate = dateformat.getdateinstance().format(new date().split("-");/獲得日期 cld.set(integer.parseint(strdate0), integer.parseint(strdate1)-1, 0); showcalendar(integer.parseint(strdate0), integer.parseint(strdate1), cld); jtfmonth.seteditable(false);/設(shè)置月份的文本框?yàn)椴豢删庉?jtfyear.

19、settext(strdate0); jtfmonth.settext(strdate1); this.showtextarea(strdate2); ld.setfont(new font("新宋體",font.bold,24); new timer(lt).start(); this.setbounds(200,200,600,320); this.setresizable(false); this.setvisible(true); public void showcalendar(int localyear, int localmonth, calendar cld

20、) int days = getdaysofmonth(localyear, localmonth) + cld.get(calendar.day_of_week) - 2; object ai = new object7; lasttime = 0; for (int i = cld.get(calendar.day_of_week)-1; i <= days; i+) aii%7 = string.valueof(i-(cld.get(calendar.day_of_week)-2); if (i%7 = 6) dtm.addrow(ai); ai = new object7; la

21、sttime+; dtm.addrow(ai); public int getdaysofmonth(int year, int month) /顯示所選月份的天數(shù) if(month = 1 | month = 3 | month = 5 | month = 7 | month = 8 | month = 10 | month = 12) return 31; if(month = 4 | month = 6 | month = 9 | month = 11) return 30; if(year%4 = 0 && year%100 != 0 | year%400 = 0)/閏

22、年 return 29; else return 28; public void actionperformed(actionevent e) if(e.getsource() = jtfyear | e.getsource() = blastyear | e.getsource() = bnextyear | e.getsource() = blastmonth | e.getsource() = bnextmonth) int m, y; try/控制輸入的年份正確,異常控制 if (jtfyear.gettext().length() != 4) throw new numberform

23、atexception(); y = integer.parseint(jtfyear.gettext(); m = integer.parseint(jtfmonth.gettext(); catch (numberformatexception ex) joptionpane.showmessagedialog(this, "請輸入4位0-9的數(shù)字!", "年份有誤", joptionpane.error_message); return; ld.settext("沒有選擇日期"); for (int i = 0; i <

24、lasttime+1; i+) dtm.removerow(0); if(e.getsource() = blastyear) jtfyear.settext(string.valueof(-y); if(e.getsource() = bnextyear)jtfyear.settext(string.valueof(+y); if(e.getsource() = blastmonth) if(m = 1) jtfyear.settext(string.valueof(-y); m = 12; jtfmonth.settext(string.valueof(m); else jtfmonth.

25、settext(string.valueof(-m); if(e.getsource() = bnextmonth) if(m = 12) jtfyear.settext(string.valueof(+y); m = 1; jtfmonth.settext(string.valueof(m); else jtfmonth.settext(string.valueof(+m); cld.set(y, m-1, 0); showcalendar(y, m, cld); if(e.getsource() = badd) int r = table.getselectedrow(); int c =

26、 table.getselectedcolumn(); if(!ld.gettext().equals("沒有選擇日期") try file file = new file(ld.gettext() + ".txt"); bufferedwriter bw=new bufferedwriter(new outputstreamwriter(new fileoutputstream(file); bw.write(jta.gettext(); bw.close(); catch (filenotfoundexception ex) ex.printstac

27、ktrace(); catch (ioexception ex) ex.printstacktrace(); if(e.getsource() = bdel) int r = table.getselectedrow(); int c = table.getselectedcolumn(); file filedel = new file(ld.gettext() + ".txt"); if(filedel.exists() if(filedel.delete() jta.settext("日志刪除成功"); else jta.settext("

28、;日志刪除失敗"); else jta.settext("沒有找到日志文件"); public void mouseclicked(mouseevent e) jta.settext(null); int r = table.getselectedrow(); int c = table.getselectedcolumn(); if (table.getvalueat(r,c) = null) ld.settext("沒有選擇日期"); else this.showtextarea(table.getvalueat(r,c); public

29、void mousepressed(mouseevent e) public void mousereleased(mouseevent e) public void mouseentered(mouseevent e) public void mouseexited(mouseevent e) private void showtextarea(object selected) /將所選日期顯示出來,能不能弄成農(nóng)歷顯示? ld.settext(jtfyear.gettext()+"年"+jtfmonth.gettext()+"月"+selected+"日"); file filein = new file(ld.gettext() + ".txt"); if(filein.exists() try bufferedr

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論