萬年歷課程設(shè)計報告任務(wù)書_第1頁
萬年歷課程設(shè)計報告任務(wù)書_第2頁
萬年歷課程設(shè)計報告任務(wù)書_第3頁
萬年歷課程設(shè)計報告任務(wù)書_第4頁
萬年歷課程設(shè)計報告任務(wù)書_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

-.z?高級語言程序設(shè)計〔2〕?課程設(shè)計任務(wù)書專業(yè)數(shù)學(xué)與應(yīng)用數(shù)學(xué)班級數(shù)學(xué)0901**7**〔簽名〕完成日期指導(dǎo)教師〔簽名〕程序設(shè)計說明書【設(shè)計題目】萬能日歷程序程序【問題描述】萬能日歷是查詢?nèi)掌诘墓ぞ?,它適合于上班族,以便他們準(zhǔn)確地把握時間。【軟件功能】1以月歷形式顯示日期與星期。2支持用戶自己輸入年份以及年份下拉形式選擇年份,并提供月份的下拉形式菜單來選擇月份。3通過點(diǎn)擊面板任意處可以刷新日歷。【算法思想】將一個星期面板和一個月份面板同時添加到一個主面板,再在相應(yīng)的面板內(nèi)添加對應(yīng)的組件,從而形成日歷的界面;然后繼承java本身的日歷類中得成員方法來實(shí)現(xiàn)日歷功能;繼而構(gòu)造成員方法實(shí)現(xiàn)日歷界面的刷新【類的設(shè)計】 直接繼承的是java中已有的類,然后構(gòu)造成員方法來實(shí)現(xiàn)界面的刷新【用戶界面】【程序技巧】直接繼承java日歷的類,就沒必要構(gòu)造太多的方法以及其他類【模塊劃分及調(diào)用關(guān)系】〔用word的繪圖工具繪出圖形,不能省略!〕【模塊流程圖】程序初始化程序初始化獲取當(dāng)前系統(tǒng)時間年份等數(shù)據(jù)提交年月變更數(shù)據(jù)是否輸入年份或選擇月份開場計算,繪制屏幕完畢【運(yùn)行說明】〔1〕將eclipse軟件翻開〔2〕在eclipse中建立一個包,接著在包內(nèi)建一個空白的java程序文檔〔3〕將現(xiàn)有的程序復(fù)制,粘貼到空白文檔,運(yùn)行即可。〔4〕運(yùn)行之后即可出現(xiàn)用戶界面,你只需按照自己的要求選擇相應(yīng)的年份,月份。如此你便可以看到對應(yīng)的月歷查看星期,月份。程序上機(jī)調(diào)試報告【語法錯誤及其排除】程序測試結(jié)果【測試數(shù)據(jù)】測試數(shù)據(jù):1.2011年12月份2.2023年2月【輸出結(jié)果】初始界面〔月份含有下拉框〕年份的改變月份的改變界面可以改變大小【收獲及體會】第一次,對于每個人來說,都是難以忘懷的,同樣也是給人以體會最深的,收獲也是最大的從這次java課程設(shè)計中,我獲益匪淺。為了完成這個任務(wù),可謂是煞費(fèi)苦心,絞盡腦汁。我經(jīng)過了長時間的反復(fù)編寫調(diào)試,課本和網(wǎng)上查閱相關(guān)資料相關(guān)文章。經(jīng)過這一次,自我的檢驗(yàn),我發(fā)現(xiàn)自己在學(xué)習(xí)這門課上還是有很多缺乏的,比方說,對JAVA語言整體知識構(gòu)架不夠熟悉;不能靈活地運(yùn)用所學(xué)的知識點(diǎn);自己的編程方式也不是太標(biāo)準(zhǔn),經(jīng)常出現(xiàn)代碼寫錯而調(diào)試很久的低級錯誤情況出現(xiàn)。同時我也懂得了一個很淺顯的道理,條條道路通羅馬。學(xué)習(xí)的途徑很多,上網(wǎng),看書,問同學(xué)等。以后我會利用可以利用的學(xué)習(xí)工具,好好學(xué)習(xí),將自己在學(xué)習(xí)方面的缺乏予以彌補(bǔ)。讓我體會最深的是,我覺察自己的java學(xué)習(xí)有所進(jìn)步。為了完成任務(wù),我一遍又一遍的看書,查資料,不知不覺中,感覺書在心中,對課本知識有了一個更深的認(rèn)識。從這一點(diǎn),我似乎明白,實(shí)踐是最好的教師。實(shí)踐讓我們進(jìn)一步的和理論接觸,更深的認(rèn)識它。人們常說,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。確實(shí)如此,與此同時,實(shí)踐也是檢驗(yàn)我們學(xué)習(xí)成效的最好標(biāo)尺。所以說,我們的學(xué)以致用,多多留心生活,關(guān)注身邊,盡可能的利用我們所掌握的知識進(jìn)展解答,分析。這樣,對我們學(xué)習(xí)很重要。不光如此,我們還可以用理論創(chuàng)造事物。實(shí)現(xiàn)所學(xué)知識的用處,同樣也是實(shí)現(xiàn)自我價值的最好方法。另外值得一提的是,我認(rèn)為合作也是很有價值的一件事,這也是我感悟的。大家都知道術(shù)業(yè)有專攻之說。確實(shí)如此,不同的人對不同的領(lǐng)域有不同的領(lǐng)悟能力。要完成一件綜合性的任務(wù),并非則簡單,不單指這任務(wù)內(nèi)容多么難,而是指它所涉及的知識點(diǎn)很廣。這次任務(wù)書,不僅僅是要求我們寫一個程序,打幾個字,還要求我們畫流程圖。對于計算機(jī),我是個們外漢。流程圖,前所未聞,更別提畫了。面對這個難題,我開場很疑惑,很郁悶。天無絕人之路,我碰到一計算機(jī)高手,在他的幫助之下,我現(xiàn)在不光畫出了所需流程圖,還懂的流程圖的根本作圖方法。合作是一種學(xué)習(xí)方法,更是一種處世方法。自從這次的合作,我和他關(guān)系也升溫了。我感謝合作,我喜歡合作?!驹闯绦虼a】importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.Dimension;importjava.awt.GridLayout;importjava.awt.SystemColor;importjava.awt.event.ActionEvent;importjava.awt.event.KeyEvent;importjava.awt.event.MouseEvent;importjava.util.Calendar;importjava.util.GregorianCalendar;importjava.util.Locale;importjava.util.Date;importjava.util.StringTokenizer;importjava*.swing.BorderFactory;importjava*.swing.utton;importjava*.swing.JFrame;importjava*.swing.JLabel;importjava*.swing.JPanel;importjava*.swing.JTe*tField;importjava*.swing.JToggleButton;importjava*.swing.SwingConstants;importjava*.swing.UIManager;classJCalendare*tendsJPanel{//動態(tài)表示年月日privateintyear=0;privateintmonth=0;privateintday=0;//主面板privateJPanelMain=newJPanel();//日面板privateJPaneljPanelDay=newJPanel();//月份面板privateJPaneljPanelMonth=newJPanel();//年份輸入位置privateJTe*tFieldYear=newJTe*tField();//月份輸入位置privateJTe*tFieldMonth=newJTe*tField();//減少月份privateuttonMonthDown=newutton();//增加月份privateuttonMonthUp=newutton();privateJPaneljPanelButton=newJPanel();//減少年份privateuttonYearDown=newutton();//增加年份privateuttonYearUp=newutton();//顯示日期的位置privateJLabelOut=newJLabel();//設(shè)置時區(qū)privateLocalel=Locale.CHINESE;//主日歷privateGregorianCalendarcal=newGregorianCalendar(l);//星期面板privateJPanelweekPanel=newJPanel();//日期按鈕組privateJToggleButton[]days=newJToggleButton[42];//日期面板privateJPanelDays=newJPanel();//標(biāo)示privateJLabeljLabel1=newJLabel();privateJLabeljLabel2=newJLabel();privateJLabeljLabel3=newJLabel();privateJLabeljLabel4=newJLabel();privateJLabeljLabel5=newJLabel();privateJLabeljLabel6=newJLabel();privateJLabeljLabel7=newJLabel();//當(dāng)前選擇的天數(shù)按鈕privateJToggleButtoncur=null;//月份天數(shù)數(shù)組,用來取得當(dāng)月有多少天//123456789101112privateint[]mm={31,28,31,30,31,30,31,31,30,31,30,31};//空日期構(gòu)造函數(shù)publicJCalendar(){try{Init();}catch(E*ceptione){e.printStackTrace();}//異常拋出}//帶日期設(shè)置的構(gòu)造函數(shù)publicJCalendar(intyear,intmonth,intday){cal.set(year,month,day);try{Init();}catch(E*ceptione){e.printStackTrace();}}//帶日歷輸入的構(gòu)造函數(shù)publicJCalendar(GregorianCalendarcalendar){cal=calendar;try{Init();}catch(E*ceptione){e.printStackTrace();}}//帶日期輸入的構(gòu)造函數(shù)publicJCalendar(Datedate){cal.setTime(date);try{Init();}catch(E*ceptione){e.printStackTrace();}}//初始化組件privatevoidInit()throwsE*ception{//初始化年、月、日iniCalender();this.setLayout(newBorderLayout());this.setBorder(BorderFactory.createRaisedBevelBorder());this.setMa*imumSize(newDimension(200,200));this.setMinimumSize(newDimension(200,200));this.setPreferredSize(newDimension(200,200));Main.setLayout(newBorderLayout());Main.setBackground(SystemC);Main.setBorder(null);Out.setBackground(Color.lightGray);Out.setHorizontalAlignment(SwingConstants.CENTER);Out.setMa*imumSize(newDimension(100,19));Out.setMinimumSize(newDimension(100,19));Out.setPreferredSize(newDimension(100,19));jLabel1.setForeground(Color.red);jLabel1.setHorizontalAlignment(SwingConstants.CENTER);jLabel1.setHorizontalTe*tPosition(SwingConstants.CENTER);jLabel1.setTe*t("日");jLabel2.setForeground(Color.blue);jLabel2.setHorizontalAlignment(SwingConstants.CENTER);jLabel2.setHorizontalTe*tPosition(SwingConstants.CENTER);jLabel2.setTe*t("六");jLabel3.setHorizontalAlignment(SwingConstants.CENTER);jLabel3.setHorizontalTe*tPosition(SwingConstants.CENTER);jLabel3.setTe*t("五");jLabel4.setHorizontalAlignment(SwingConstants.CENTER);jLabel4.setHorizontalTe*tPosition(SwingConstants.CENTER);jLabel4.setTe*t("四");jLabel5.setHorizontalAlignment(SwingConstants.CENTER);jLabel5.setHorizontalTe*tPosition(SwingConstants.CENTER);jLabel5.setTe*t("三");jLabel6.setBorder(null);jLabel6.setHorizontalAlignment(SwingConstants.CENTER);jLabel6.setHorizontalTe*tPosition(SwingConstants.CENTER);jLabel6.setTe*t("二");jLabel7.setBackground(Color.lightGray);jLabel7.setForeground(Color.black);jLabel7.setBorder(null);jLabel7.setHorizontalAlignment(SwingConstants.CENTER);jLabel7.setHorizontalTe*tPosition(SwingConstants.CENTER);jLabel7.setTe*t("一");weekPanel.setBackground(UIManager.getColor("InternalFrame.activeTitleGradient"));weekPanel.setBorder(BorderFactory.createEtchedBorder());weekPanel.setLayout(newGridLayout(1,7));weekPanel.add(jLabel1,null);weekPanel.add(jLabel7,null);weekPanel.add(jLabel6,null);weekPanel.add(jLabel5,null);weekPanel.add(jLabel4,null);weekPanel.add(jLabel3,null);weekPanel.add(jLabel2,null);MonthUp.setAlignment*((float)0.0);MonthUp.setActionMap(null);jPanelMonth.setBackground(SystemC);jPanelMonth.setLayout(newBorderLayout());jPanelMonth.setBorder(BorderFactory.createEtchedBorder());Month.setBorder(null);Month.setHorizontalAlignment(SwingConstants.CENTER);Month.addMouseListener(newjava.awt.event.MouseAdapter(){publicvoidmouseClicked(MouseEvente){Month_mouseClicked(e);}});Month.addKeyListener(newjava.awt.event.KeyAdapter(){publicvoidkeyPressed(KeyEvente){Month_keyPressed(e);//響應(yīng)鍵盤事件}});MonthDown.setBorder(null);MonthDown.setTe*t("\u25C4");MonthDown.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(ActionEvente){MonthDown_actionPerformed(e);}});MonthUp.setBorder(null);MonthUp.setTe*t("\u25BA");MonthUp.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(ActionEvente){MonthUp_actionPerformed(e);}});jPanelButton.setLayout(null);jPanelButton.setBorder(null);jPanelButton.addponentListener(newjava.awt.event.ponentAdapter(){publicvoidponentResized(java.awt.event.ponentEventevt){jPanelButtonponentResized(evt);}});Year.setBorder(BorderFactory.createEtchedBorder());Year.setMa*imumSize(newDimension(80,25));Year.setMinimumSize(newDimension(80,25));Year.setPreferredSize(newDimension(80,25));Year.setHorizontalAlignment(SwingConstants.CENTER);Year.addMouseListener(newjava.awt.event.MouseAdapter(){publicvoidmouseClicked(MouseEvente){Year_mouseClicked(e);}});Year.addKeyListener(newjava.awt.event.KeyAdapter(){publicvoidkeyPressed(KeyEvente){Year_keyPressed(e);}});YearDown.setBorder(null);YearDown.setMa*imumSize(newDimension(16,16));YearDown.setMinimumSize(newDimension(16,16));YearDown.setPreferredSize(newDimension(16,16));YearDown.setSize(newDimension(16,16));//按鍵的規(guī)格YearDown.setTe*t("▼");//YearDown.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(ActionEvente){YearDown_actionPerformed(e);}});YearUp.setBorder(null);YearUp.setMa*imumSize(newDimension(16,16));YearUp.setMinimumSize(newDimension(16,16));YearUp.setPreferredSize(newDimension(16,16));YearUp.setSize(newDimension(16,16));//設(shè)置按鈕大小YearUp.setTe*t("▲");//設(shè)置按鈕上得標(biāo)志YearUp.addActionListener(newjava.awt.event.ActionListener(){//監(jiān)聽事件publicvoidactionPerformed(ActionEvente){YearUp_actionPerformed(e);}});jPanelDay.setLayout(newBorderLayout());Days.setLayout(newGridLayout(6,7));Days.setBackground(SystemC);for(inti=0;i<42;i++){days[i]=newJToggleButton();days[i].setBorder(null);days[i].setBackground(SystemC);days[i].setHorizontalAlignment(SwingConstants.CENTER);days[i].setHorizontalTe*tPosition(SwingConstants.CENTER);//days[i].setSize(l,l);days[i].addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(ActionEvente){day=Integer.parseInt(((JToggleButton)e.getSource()).getTe*t());showDate();showDays();}});Days.add(days[i]);}this.add(Main,BorderLayout.NORTH);this.add(jPanelDay,BorderLayout.CENTER);this.add(jPanelMonth,BorderLayout.SOUTH);Main.add(Year,BorderLayout.CENTER);Main.add(Out,BorderLayout.WEST);Main.add(jPanelButton,BorderLayout.EAST);jPanelButton.add(YearUp);jPanelButton.add(YearDown);jPanelDay.add(weekPanel,BorderLayout.NORTH);jPanelDay.add(Days,BorderLayout.CENTER);jPanelMonth.add(Month,BorderLayout.CENTER);jPanelMonth.add(MonthDown,BorderLayout.WEST);jPanelMonth.add(MonthUp,BorderLayout.EAST);//添加相應(yīng)的組件showMonth();showYear();showDate();showDays();}//自定義重畫年選擇面板voidjPanelButtonponentResized(java.awt.event.ponentEventevt){YearUp.setLocation(0,0);YearDown.setLocation(0,YearUp.getHeight());jPanelButton.setSize(YearUp.getWidth(),YearUp.getHeight()*2);jPanelButton.setPreferredSize(newDimension(YearUp.getWidth(),YearUp.getHeight()*2));jPanelButton.updateUI();}//測試用publicstaticvoidmain(String[]args){JFramef=newJFrame();f.setContentPane(newJCalendar());f.pack();//f.setResizable(false);f.show();}//增加年份voidYearUp_actionPerformed(ActionEvente){year++;showYear();showDate();showDays();}//減少年份voidYearDown_actionPerformed(ActionEvente){year--;showYear();showDate();showDays();}//減少月份voidMonthDown_actionPerformed(ActionEvente){month--;if(month<0){month=11;year--;showYear();}showMonth();showDate();showDays();}//增加月份voidMonthUp_actionPerformed(ActionEvente){month++;if(month==12){month=0;year++;showYear();}showMonth();showDate();showDays();}//初始化年月日voidiniCalender(){year=cal.get(Calendar.YEAR);month=cal.get(Calendar.MONTH);day=cal.get(Calendar.DAY_OF_MONTH);}//刷新月份voidshowMonth(){Month.setTe*t(Integer.toString(month+1)+"月");}//刷新年份voidshowYear(){Year.setTe*t(Integer.toString(year)+"年");}//刷新日期voidshowDate(){Out.setTe*t(Integer.toString(year)+"-"+Integer.toString(month+1)+"-"+Integer.toString(day));}//重畫天數(shù)選擇面板voidshowDays(){cal.set(year,month,1);intfirstDayOfWeek=cal.get(Calendar.DAY_OF_WEEK);intn=mm[month];if(cal.isLeapYear(year)&&month==1)n++;inti=0;for(;i<firstDayOfWeek-1;i++){days[i].setEnabled(false);//表示該鍵不能使用其對應(yīng)的方法days[i].setSelected(false);days[i].setTe*t(");//表示在day鍵上不設(shè)置任何字}intd=1;for(;d<=n;d++){days[i].setTe*t(Integer.toString(d));days[i].setEnabled(true);if(d==day)days[i].setSelected(true);elsedays[i].setSelected(false);;i++;}for(;i<42;i++){days[i].setEnabled(false);days[i].setSelected(false);days[i].setTe*t(");}}//單擊年份面板選擇整個年份字符串voidSelectionYear(){Year.setSelectionStart(0);Year.setSelectionEnd(Year.getTe*t().length());}//單擊月份面板選擇整個月份字符串voidSelectionMonth(){Month.setSelectionStart(0);Month.setSelectionEnd(Month.getTe*t().length());}//月份面板響應(yīng)鼠標(biāo)單擊事件voidMonth_mouseClicked(MouseEvente){//SelectionMonth();inputMonth();}//檢驗(yàn)輸入的月份voidinputMonth(){Strings;if(Month.getTe*t().endsWith("月")){s=Month.getTe*t().substring(0,Month.getTe*t().length()-1);}elses=Month.getTe*t();month=Integer.parseInt(s)-1;this.showMe();}//月份面板鍵盤敲擊事件響應(yīng)voidMonth_keyPressed(KeyEvente){if(e.getKeyChar()==10)inputMonth();}//年份面板響應(yīng)鼠標(biāo)單擊事件voidYear_mouseClicked(MouseEvente){//SelectionYear();inputYear();}//年份鍵盤敲擊事件響應(yīng)voidYear_keyPressed(KeyEvente){//System.out.print(newInteger(e.getKeyChar()).byteValue());if(e.getKeyChar()==10)inputYear();}//檢驗(yàn)輸入的年份字符串voidinputYear(){Strings;if(Year.getTe*t().endsWith("年")){s=Year.getTe*t().substring(0,Year.getTe*t().length()-1);}elses=Year.getTe*t();year=Integer.parseInt(s);this.showMe();}//以字符串形式返回日期,yyyy-mm-ddpublicStringgetDate(){returnOut.getTe*t();}//以字符串形式輸入日期,yyyy-mm-ddpub

溫馨提示

  • 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

提交評論