




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、湖南第一師范學(xué)院信息科學(xué)與工程系課程設(shè)計(jì)報(bào)告題 目 java簡(jiǎn)易時(shí)間日歷程序 2009 年 12 月 18 日目 錄1. 課程設(shè)計(jì)任務(wù)書(shū)第 2頁(yè)2. 題目說(shuō)明第 4頁(yè)3. 系統(tǒng)設(shè)計(jì)第 4頁(yè)4. 類及接口描述第 5頁(yè)5. 運(yùn)行結(jié)果第 7頁(yè)6. 程序源代碼第 8頁(yè)7. 總 結(jié)第17頁(yè)8. 參考文獻(xiàn)第18頁(yè)2007級(jí)計(jì)算機(jī)應(yīng)用專業(yè)java課程設(shè)計(jì)安排計(jì)劃書(shū)指導(dǎo)老師:伍智平 指導(dǎo)方式:集體輔導(dǎo)、分組討論研究一、 課程設(shè)計(jì)教學(xué)目的及基本要求1、 培養(yǎng)獨(dú)立的java語(yǔ)言與算法設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力;2、 學(xué)習(xí)軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;3、 訓(xùn)練綜合運(yùn)
2、用所學(xué)的理論知識(shí)和方法進(jìn)行獨(dú)立分析和解決問(wèn)題的能力;4、 訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開(kāi)發(fā)一般規(guī)范進(jìn)行軟件開(kāi)發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng)。5、 設(shè)計(jì)的題目要求達(dá)到一定工作量,程序能夠運(yùn)行,并對(duì)標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù)有正確的輸出結(jié)果。6、 按湖南第一師范學(xué)院信息科學(xué)與工程系課程設(shè)計(jì)報(bào)告寫(xiě)作規(guī)范要求的書(shū)寫(xiě)格式編寫(xiě)出課程設(shè)計(jì)報(bào)告書(shū),報(bào)告書(shū)不少于8頁(yè)(代碼不算)。二、 計(jì)劃安排1、 任務(wù)書(shū)下達(dá)時(shí)間:第15周2、 任務(wù)講解與動(dòng)員:第15周3、 任務(wù)設(shè)計(jì)與輔導(dǎo):輔導(dǎo)教師:伍智平輔導(dǎo)形式:以學(xué)生自行設(shè)計(jì)為主,教師現(xiàn)場(chǎng)解答學(xué)生疑難問(wèn)題。紀(jì)律要求:上課前學(xué)生簽到,課后學(xué)習(xí)委員交名單給老師。4、完成時(shí)間:第
3、16周星期四三、課程設(shè)計(jì)課題與安排每位學(xué)生在下面列出的設(shè)計(jì)題目中選擇其中的一個(gè)獨(dú)立完成:課題詳細(xì)要求:參見(jiàn)教材13.2節(jié)課程設(shè)計(jì)的要求和選題(p408413)五、提交成果1、課程設(shè)計(jì)報(bào)告(電子版和打印版,格式參照湖南第一師范學(xué)院信息科學(xué)與工程系課程設(shè)計(jì)報(bào)告寫(xiě)作規(guī)范)(注意:報(bào)告中一定要包括課程設(shè)計(jì)任務(wù)書(shū),課程設(shè)計(jì)任務(wù)書(shū)的格式參加本文檔的附件1)2、源代碼(電子版和打印版)六、成績(jī)?cè)u(píng)定1、根據(jù)平時(shí)上機(jī)考勤(考勤20分);注重平時(shí)上機(jī)成績(jī),教師要不定期檢查學(xué)生進(jìn)度,學(xué)生不得以自己有私人電腦為借口而不來(lái)上機(jī)。2、根據(jù)程序運(yùn)行結(jié)果(上機(jī)演示30分);3、 根據(jù)java課程設(shè)計(jì)報(bào)告,學(xué)生能對(duì)自己的程序面
4、對(duì)教師提問(wèn)并能熟練地解釋清楚(報(bào)告50分)4、無(wú)報(bào)告書(shū)者或者答辯不通過(guò)者,課程設(shè)計(jì)記0分。 指導(dǎo)教師:伍智平 2009年12月10日課程設(shè)計(jì)題目2. 題目說(shuō)明通過(guò)編寫(xiě)一個(gè)基于java的應(yīng)用系統(tǒng)綜合實(shí)例,自定義一個(gè)日歷組件顯示日期和時(shí)間并進(jìn)行適當(dāng)?shù)墓δ軘U(kuò)充,實(shí)踐java語(yǔ)言編程技術(shù)。3. 系統(tǒng)設(shè)計(jì)2.1 設(shè)計(jì)目標(biāo)一個(gè)完整的程序應(yīng)具有以下功能:1)顯示當(dāng)月日歷、當(dāng)前日期、當(dāng)前時(shí)間;2)可查尋任意月以及任意年的日歷;3)使用圖形化界面能夠彈出對(duì)話框;5)正常退出程序。 2.2 設(shè)計(jì)思想設(shè)計(jì)一個(gè)類用來(lái)構(gòu)成日歷系統(tǒng)的主窗口,然后編寫(xiě)一個(gè)框架類顯示時(shí)間和提示信息。在設(shè)計(jì)中應(yīng)用了多種容器和控件。2.3 系統(tǒng)
5、模塊劃分public static class calendartable(日歷類)public static void main(string args)public static class rollbyjframe(滾動(dòng)時(shí)間類)public class mycalendar extends japplet(主日歷框架類)圖1:簡(jiǎn)易日歷的程序結(jié)構(gòu)圖2.3.1 初始化: public void init()完成界面初始化,形成一個(gè)以掛歷形式顯示當(dāng)前日期的窗口。2.3.2 日歷描述: (1)public void updateview()改變?nèi)掌诤笸瓿筛陆缑妫?(2)抽象類java.util
6、.calendar獲取系統(tǒng)日期并傳遞日期數(shù)據(jù)而且在人工改變?nèi)掌诤蟮贸霎?dāng)天是周幾; (3)public static void main(string args)主函數(shù)完成系統(tǒng)各算法的調(diào)用并對(duì)主窗口的一些屬性進(jìn)行設(shè)置;2.3.3 滾動(dòng)時(shí)間: 將時(shí)間以文本的形式在文本框中滾動(dòng)播出,并能改變滾動(dòng)的速度。4. 使用類及接口僅僅簡(jiǎn)單說(shuō)明類的功能,詳細(xì)資料請(qǐng)參看 javatm2platform standarded. 6的電子文檔,常規(guī)的接口與包則省略不屑。/以下是日歷程序塊中使用的類package fancy; import java.awt.*; import java.awt.event.*; im
7、port java.util.*; /主要用此包中的日期和時(shí)間類import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*;/以下是對(duì)滾動(dòng)時(shí)間程序塊所使用的類和接口,用到定時(shí)器類timerimport java.awt.color;import java.awt.flowlayout;import java.awt.event.actionlistener;import java.awt.event.actionevent;import java.awt.event.focuslistener;、/用
8、于監(jiān)聽(tīng)鼠標(biāo)單擊(焦點(diǎn)改變)事件import java.awt.event.focusevent;/用于響應(yīng)鼠標(biāo)單擊(焦點(diǎn)改變)事件、import javax.swing.jframe;import javax.swing.jtextfield;import javax.swing.jspinner;/讓用戶從一個(gè)有序序列中選擇一個(gè)數(shù)字或者一個(gè)對(duì)象值的單行輸入字段。import javax.swing.jpanel;import javax.swing.timer;/在指定時(shí)間間隔觸發(fā)一個(gè)或多個(gè) actionevent, 創(chuàng)建一個(gè) timer 對(duì)象,在該對(duì)象上注冊(cè)一個(gè)或多個(gè)動(dòng)作偵聽(tīng)器,以及使用
9、start 方法啟動(dòng)該計(jì)時(shí)器。并配合事件監(jiān)聽(tīng)器支持時(shí)間的滾動(dòng)播放。import javax.swing.event.changelistener;import javax.swing.event.changeevent;5. 運(yùn)行結(jié)果與分析圖2:初始界面顯示日歷。圖3:點(diǎn)擊查看時(shí)間按鈕, 彈出時(shí)間消息對(duì)話框。圖4:滾動(dòng)顯示當(dāng)前時(shí)間。6. 程序源代碼/* * (#) mycalendar.java * author fancy */日歷使用的類 import java.awt.borderlayout;import java.awt.color;import java.awt.component
10、;import java.awt.container;import java.awt.flowlayout;import java.awt.event.actionevent;import java.awt.event.actionlistener;import java.awt.event.focusevent;import java.awt.event.focuslistener;import java.util.calendar;import javax.swing.japplet;import javax.swing.jbutton;import javax.swing.jcombob
11、ox;import javax.swing.jframe;import javax.swing.jlabel;import javax.swing.joptionpane;import javax.swing.jpanel;import javax.swing.jspinner;import javax.swing.jtable;import javax.swing.jtextfield;import javax.swing.listselectionmodel;import javax.swing.timer;import javax.swing.event.changeevent;impo
12、rt javax.swing.event.changelistener;import javax.swing.table.abstracttablemodel;import javax.swing.table.tablecellrenderer;import javax.swing.table.tablemodel;/日歷 public class mycalendar extends japplet public static final string week_sun = sun; public static final string week_mon = mon; public stat
13、ic final string week_tue = tue; public static final string week_wed = wed; public static final string week_thu = thu; public static final string week_fri = fri; public static final string week_sat = sat; public static final color background = color.yellow; public static final color foreground = colo
14、r.black; public static final color headerbackground = color.blue; public static final color headerforeground = color.white; public static final color selectedbackground = color.blue; public static final color selectedforeground = color.white; private jpanel cpane; private jlabel yearslabel; private
15、jspinner yearsspinner; private jlabel monthslabel; private jcombobox monthscombobox; private jtable daystable; private abstracttablemodel daysmodel; private calendar calendar; private jbutton button1; public mycalendar() cpane = (jpanel) getcontentpane(); public void init() cpane.setlayout(new borde
16、rlayout(); calendar = calendar.getinstance(); calendar = calendar.getinstance(); jbutton button1=new jbutton( 單擊此處 查看時(shí)間 ); button1.setbounds(10,10,10,10); cpane.add(button1,borderlayout.south); button1.addactionlistener( new java.awt.event.actionlistener() public void actionperformed(actionevent e)
17、rollbyjframe myrili=new rollbyjframe(); joptionpane.showmessagedialog(null, 您點(diǎn)擊了+e.getactioncommand().tostring()+按鈕); ); yearslabel = new jlabel(year: ); yearsspinner = new jspinner(); yearsspinner.seteditor(new jspinner.numbereditor(yearsspinner, 0000); yearsspinner.setvalue(new integer(calendar.ge
18、t(calendar.year); yearsspinner.addchangelistener(new changelistener() public void statechanged(changeevent changeevent) int day = calendar.get(calendar.day_of_month); calendar.set(calendar.day_of_month, 1); calendar.set(calendar.year, (integer) yearsspinner.getvalue().intvalue(); int maxday = calend
19、ar.getactualmaximum(calendar.day_of_month); calendar.set(calendar.day_of_month, day maxday ? maxday : day); updateview(); ); jpanel yearmonthpanel = new jpanel(); cpane.add(yearmonthpanel, borderlayout.north); yearmonthpanel.setlayout(new borderlayout(); yearmonthpanel.add(new jpanel(), borderlayout
20、.center); jpanel yearpanel = new jpanel(); yearmonthpanel.add(yearpanel, borderlayout.west); yearpanel.setlayout(new borderlayout(); yearpanel.add(yearslabel, borderlayout.west); yearpanel.add(yearsspinner, borderlayout.center); monthslabel = new jlabel(month: ); monthscombobox = new jcombobox(); fo
21、r (int i = 1; i maxday ? maxday : day); updateview(); ); jpanel monthpanel = new jpanel(); yearmonthpanel.add(monthpanel, borderlayout.east); monthpanel.setlayout(new borderlayout(); monthpanel.add(monthslabel, borderlayout.west); monthpanel.add(monthscombobox, borderlayout.center); daysmodel = new
22、abstracttablemodel() public int getrowcount() return 9; public int getcolumncount() return 7; public object getvalueat(int row, int column) if (row = 0) return getheader(column); row-; calendar calendar = (calendar) mycalendar.this.calendar.clone(); calendar.set(calendar.day_of_month, 1); int daycou
23、nt = calendar.getactualmaximum(calendar.day_of_month); int moredaycount = calendar.get(calendar.day_of_week) - 1; int index = row * 7 + column; int dayindex = index - moredaycount + 1; if (index daycount) return null; else return new integer(dayindex); ; daystable = new calendartable(daysmodel, cale
24、ndar); daystable.setcellselectionenabled(true); daystable.setselectionmode(listselectionmodel.single_selection); daystable.setdefaultrenderer(daystable.getcolumnclass(0), new tablecellrenderer() public component gettablecellrenderercomponent(jtable table, object value, boolean isselected, boolean ha
25、sfocus, int row, int column) string text = (value = null) ? : value.tostring(); jlabel cell = new jlabel(text); cell.setopaque(true); if (row = 0) cell.setforeground(headerforeground); cell.setbackground(headerbackground); else if (isselected) cell.setforeground(selectedforeground); cell.setbackgrou
26、nd(selectedbackground); else cell.setforeground(foreground); cell.setbackground(background); return cell; ); updateview(); cpane.add(daystable, borderlayout.center); public static string getheader(int index) switch (index) case 0: return week_sun; case 1: return week_mon; case 2: return week_tue; ca
27、se 3: return week_wed; case 4: return week_thu; case 5: return week_fri; case 6: return week_sat; default: return null; public void updateview() daysmodel.firetabledatachanged(); daystable.setrowselectioninterval(calendar.get(calendar.week_of_month), calendar.get(calendar.week_of_month); daystable.s
28、etcolumnselectioninterval(calendar.get(calendar.day_of_week) - 1, calendar.get(calendar.day_of_week) - 1); public static class calendartable extends jtable private calendar calendar; public calendartable(tablemodel model, calendar calendar) super(model); this.calendar = calendar; public void changes
29、election(int row, int column, boolean toggle, boolean extend) super.changeselection(row, column, toggle, extend); if (row = 0) return; object obj = getvalueat(row, column); if (obj != null) calendar.set(calendar.day_of_month, (integer)obj).intvalue(); public static void main(string args) jframe fram
30、e = new jframe(簡(jiǎn)易時(shí)間日歷); frame.setdefaultcloseoperation(jframe.exit_on_close); mycalendar mycalendar = new mycalendar(); mycalendar.init(); frame.getcontentpane().add(mycalendar); frame.setlocation(330,80); frame.setsize(360, 212); frame.setvisible(true); /滾動(dòng)字public static class rollbyjframe extends
31、jframe implements actionlistener, focuslistener, javax.swing.event.changelistener private jtextfield text; private jspinner spinner; private timer timer; private jbutton button; public rollbyjframe() super(滾動(dòng)時(shí)間); this.setsize(360,100); this.setbackground(java.awt.color.lightgray); this.setlocation(7
32、00,120); container c=getcontentpane(); jbutton button=new jbutton(修改速度); this.add(button,east); button.addactionlistener(this); calendar now = calendar.getinstance();int hour=now.get(calendar.hour);int minute=now.get(calendar.minute);int year=now.get(calendar.year);int month=now.get(calendar.month);
33、int day=now.get(calendar.day_of_month); text = new jtextfield( hello 當(dāng)前時(shí)間是: +hour+:+minute+ +year+/+month+/+day); this.add(text,center); text.addfocuslistener(this); /注冊(cè)焦點(diǎn)事件監(jiān)聽(tīng)器 timer = new timer(136,this); timer.start(); jpanel panel = new jpanel(new flowlayout(flowlayout.right); this.add(panel,south); spinner = new jspinner(); spinner.setvalue(timer.getdelay(); panel.add(spinner); spinner.addchangelistener(this); this.setvisible(true); public void focusgained(focusevent e) /獲得焦點(diǎn)時(shí) if (e.getsource()=text) timer.stop(); public void focuslost(focuse
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年進(jìn)口貿(mào)易代理合同全文
- 2025年人才選拔勞動(dòng)合同簽訂及操作指引
- XX年食品購(gòu)銷合同書(shū)樣本5篇
- 高空作業(yè)勞務(wù)合同6篇
- 維修協(xié)議合同范本網(wǎng)絡(luò)維修合同范本8篇
- 2025年企業(yè)財(cái)務(wù)職責(zé)年雇傭合同范本
- 2025年南通物業(yè)策劃租賃合同官方樣本
- 2025年企業(yè)食堂廚房設(shè)備維修服務(wù)合同
- 2025年不銹鋼防火門供應(yīng)及安裝合同范本
- 借款擔(dān)保合同模板7篇
- 上海市幼兒園幼小銜接活動(dòng)指導(dǎo)意見(jiàn)(修訂稿)
- 《十萬(wàn)個(gè)為什么》整本書(shū)閱讀-課件-四年級(jí)下冊(cè)語(yǔ)文(統(tǒng)編版)
- 法社會(huì)學(xué)教程(第三版)教學(xué)
- TB-10303-2020 鐵路橋涵工程施工安全技術(shù)規(guī)程
- 走近湖湘紅色人物智慧樹(shù)知到答案2024年湖南工商大學(xué)
- (完整版)韓國(guó)商法
- (高清版)DZT 0208-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 金屬砂礦類
- 小工考勤表記工模板
- 劉姥姥進(jìn)大觀園課本劇劇本3篇
- 2022年拖拉機(jī)駕駛?cè)丝荚噮⒖碱}庫(kù)(含答案)
- 產(chǎn)品承認(rèn)書(shū)客(精)
評(píng)論
0/150
提交評(píng)論