版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、20122013學年度第1學期Java程序設計課程報告項目:日歷記事本專業(yè):計算機科學與技術學號: 10570235姓名:常兆華班級:計算機2班分數(shù):項目說明角色姓名學號任務分配小組評定組長王思琪強制練習工具組員常兆華10570235日歷記事本隋欣日歷記事本楊海桂小游戲關樂小游戲王冕卿Atm取款機系統(tǒng)目錄第一部分、項目整體概述 3頁第二部分、我的任務 5頁第三部分、代碼和詳細注釋 6頁第四部分、心得體會 14頁第一部分、項目整體概述日歷記事本帶有日程提醒功能的日歷。2 .顯示信息:用戶可以看到這個月的信息,包括年份、日期等。點擊翻頁按鈕可以查詢前一個月的日期,也可以向后翻頁查詢下一個月的日期。
2、同樣,可以根據(jù)年份查詢不同年份的日期。日期的顯示有一些優(yōu)化, 用戶不僅可以查詢到本月份的信息,還可以根據(jù)上個月與下個月的日期填充來方便查詢?nèi)掌诤托瞧凇? .定時提醒:用戶可以針對某一天來添加、刪除和編輯這一天的日程提醒信息當系統(tǒng)時間和提醒時間相吻合時,給出具有提示信息的對話框。4 .查詢信息:用戶可以查詢到某個月的所有的提示信息。日歷記事本共有 4個java源文件。CalendarPad.java該java文件生成的類負責創(chuàng)建本日歷記事本程序主窗口。該類含有main方法,程序從該類開始執(zhí)行。Year.java該文件負責創(chuàng)建管理年份的對象。Month.java該文件負責創(chuàng)建管理月份的類對象。No
3、tePad.java該文件負責創(chuàng)建記事本。截圖:2012年12月25日 情鍵入文字.,二.星期日星帽一期二星期三星期四星期五星期六25272S29301?345678910111213141516171®19翻2122232425加2729293031112345清在玨附特人更輸人師苴年份,拉回手確定員就為會元前圖上年i 2012 .族|上月 12 |下月保存日志刪除日志初始界面可輸入年份查看相應的日歷與記事本第二部分、我的任務具體任務:資料查找,匯總及需求分析,負責日歷的編寫,和板塊的布局輸出等。編寫大致思路:我主要負責這個項目中日歷的編寫和輸出顯示的一部分。經(jīng)過調(diào)查自己電腦中的日
4、歷記事本和大家紙質(zhì)的日歷記事本,我知道若想完整地顯示一個月的信息至少需要一個首先需要一個7*7的網(wǎng)格,要用到GridLayout網(wǎng)格設置語言。其中每一列的頂層可以稱它為 title “標題”,也就是顯示“星期幾”,表頭顯示這個月所在的年份與月份。隨后對日期進行編號, 判斷閏平年、大小月等必要的程序。為了能使用戶查找到前一年、下一年,上一 月、下一月的內(nèi)容,還需要設置按鈕,讓成員變量實現(xiàn)其更改??傮w規(guī)劃:1.成員變量主類 CanlendarPad成員變量描述變量類型名稱年、月、日intyear,month,day保存日志的散列表Hanshtablehanshtable存放散列表的文件Filefi
5、le顯示日期JtextFile口showDay日歷對象CalendarP日歷記事本對象NotePadnotepad月Month:負責改變月年Year負責改變年2方法名稱功能備注CalendarPad創(chuàng)建窗口主程序構(gòu)造方法設置日歷牌設置日立的年份、月份排列號碼排列月份中的號碼mousePressed處理MouseEvent事件接口方法main程序開始運行第三部分、源代碼及詳細注釋:CalendarPadimport java.util.Calendar;/寫的Calendar類里面導入這個包下的所有類庫public class CalendarPad extends JFrame impleme
6、nts MouseListener 定義CalendarPad類繼承JFrame父類的屬性 MouseListener鼠標監(jiān)聽int year , month , day ; / 定義年月 日Hashtable hashtable ;/用來保存日志的散列哈希表File file ;/存在哈希表中的文件JTextField showDay ;/每天是7X7的一個小格子單元JLabel title 口;/用來創(chuàng)建日歷牌中的表格屬性“星期幾”Calendar 日歷;/定義"日歷"方法是 calendarint 星期幾;整形定義“星期幾”方法NotePad notepad =nul
7、l ;/日記本對象,初值為空Month負責改變月;定義“負責改變月”方法Year負責改變年;/定義"負責改變年”方法String 星期="星期日","星期一","星期二","星期三","星期四","星期五","星期 六"JPanel leftPanel , rightPanel ; /界面設計,左邊是日歷,右面為記事本 public CalendarPad( int year, int month, int day) / 在CalendarPad
8、 類中定 義年月日getContentPane().setBackground(new Color(255, 228, 225);/ 初始化一個容器,設置顏色值為(255 , ,228,225)setBackground( new Color(255, 250, 250);/ 顏色設置setFont( new Font("微軟雅黑",F(xiàn)ont. BOLD, 12);/ 字體設置setForeground( new Color(70, 130, 180);setTitle( "");leftPanel =new JPanel(); /傳入一個布局對象作為參
9、數(shù)來創(chuàng)建左邊的面板JPanel leftCenter=JPanel leftNorth=new JPanel();new JPanel();leftCenter.setLayout(參數(shù)說明(行數(shù),列數(shù))new GridLayout(7,7);/設置窗口,為7*7的網(wǎng)格,rightPanel =new JPanel(); / 設置右側(cè)面板this . year =year;this . month =month;this . day =day;負責改變年=new Year( this );負責改變年.setFont( new Font("微軟雅黑",F(xiàn)ont. BOLD,
10、12);設置字體負責改變年.setForeground( new Color(65, 105, 225);/ 設置前景色負責改變年.setYear(year);/調(diào)用方法負責改變月=new Month( this );負責改變月.setFont( new Font("微軟雅黑",F(xiàn)ont. BOLD, 12);設置字體負責改變月.setForeground( new Color(65, 105, 225);/ 設置前景色負責改變月.setMonth(month); /調(diào)用方法title =new JLabel7; / “星期幾”標題,有7個showDay =new JTex
11、tField42;/ 顯示日期的文件有42 個(對應42 個網(wǎng)格)for ( int j=0;j<7;j+)/ 標題的寫入,周日到周一title j= new JLabel();title j.setText( 星期 j);title j.setBorder(BorderFactory.createRaisedBevelBorder();/ 創(chuàng)建邊框leftCenter.add(titlej);title 0.setForeground(Color.red); / 設置周日為紅色title 6.setForeground(Color.blue); /設置周六為藍色for ( int i=
12、0;i<42;i+)/ 日期寫入showDay i= new JTextField();showDay i.addMouseListener(this );showDay i.setEditable(false );leftCenter.add(showDay i);日歷 =Calendar. getInstance (); / 年份月份的查詢 Box box=Box. createHorizontalBox (); box.add(負責改變年);box.add(負責改變月);leftNorth.add(box);leftPanel .setLayout( new BorderLayou
13、t();leftPanel .add(leftNorth,BorderLayout.NORTH); / 上方的邊界leftPanel .add(leftCenter,BorderLayout.CENTER); / 中間Label label =new Label( " 請在年份輸入框輸入所查年份,按回車確定。負數(shù)為公元前 " );label.setBackground(UIManager.getColor ( "ScrollBar.foreground"); / 具體設置label.setFont(new Font( " 黑體 " ,
14、 Font. BOLD, 13);label.setForeground(new Color(204, 0, 0);leftPanel.add(label,BorderLayout.SOUTH) ; / 下方的邊界leftPanel.validate();Container con=getContentPane();JSplitPane split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT ,leftPanel , rightPanel );CENTER);con.add(split,BorderLayout. con.validate();hash
15、table =new Hashtable(); / 初始化哈希表file =new File( "日歷記事本.txt" ); /初始化文件if (! file.exists。)new FileOutputStream( file );new ObjectOutputStream(out); hashtable );try FileOutputStream out= ObjectOutputStream objectOut= objectOut.writeObject( objectOut.close();out.close();catch (IOException e) /
16、捕獲輸入輸出異常notepad =new NotePad( this );/ 調(diào)用 notepad 的數(shù)據(jù)rightPanel .add( notepad );設置日歷牌(year,month); addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e) System.exit (0); ); setVisible( true ); setBounds(100,50,612,320); validate(); public void 設置日歷牌(int year, int month) 日歷.se
17、t(year,month-1,1);/ Calendar是 JAVA 默認的類,set (年,月,日)格式,月份是從0開始計為1月,以此類推。故設置月份參數(shù)為month-1星期幾=日歷.get(Calendar. DAY_OF_WEEK)-1; /規(guī)定格式,得到此日為星期幾 if (month=1|month=3|month=5|month=7|month=8|month=10|month =12) /判斷大小月排列號碼(星期幾,31);else if (month=4|month=6|month=9|month=11) 排列號碼( 星期幾 ,30);else if (month=2) if
18、(year%4=0&&year%100!=0)|(year%400=0)/ 判斷閏年,平年排列號碼( 星期幾 ,29);else排列號碼( 星期幾 ,28);public void 排列號碼( int 星期幾 , int 月天數(shù) )for ( int i= 星期幾 ,n=1;i< 星期幾 +月天數(shù) ;i+) showDay i.setText( "" +n); / 設置天數(shù),累加 if (n= day )showDay i.setForeground(Color.green );showDay i.setFont( newFont( "Tim
19、esRoman" ,Font. BOLD,20); elseshowDay i.setFont( newFont( "TimesRoman" ,Font. BOLD,12);showDayi.setForeground(Color.blackif (i%7=6)showDayi.setForeground(Color.blueif (i%7=0)showDayi.setForeground(Color.red )n+;/ 程序優(yōu)化:顯示上個月和下個月部分日期int lastmonth = month - 1;/ 取得上個月月份if (lastmonth = 0)l
20、astmonth = 12;int date = 0;if (lastmonth=1|lastmonth=3|lastmonth=5|lastmonth=7|lastmonth= =8|lastmonth=10|lastmonth=12)date = 31;elseif (lastmonth=4|lastmonth=6|lastmonth=9|lastmonth=11)date = 30;else if (lastmonth=2)if ( year %4=0&& year %100!=0)|( year %400=0) date = 29;elsedate = 28;/ 將上個
21、月部分日期放入單元格gray );""for ( int i= 星期幾 - 1;i >= 0;i-)showDay i.setForeground(Color. showDay i.setText(date + date -;int flag = 1;/ 將下個月部分日期放入單元格for ( int i= 星期幾 +月天數(shù) ;i<42;i+)showDay i.setForeground(Color.gray );showDay i.setText(String.valueOf (flag);flag +;public int getYear()return y
22、ear ;public void setYear( int y)year =y;notepad .setYear( year );public int getMonth() return month ;public void setMonth( int m) month =m;notepad .setMonth( month );public int getDay() return day ;public void setDay( int d) day =d;notepad .setDay( day );public Hashtable getHashtable() return hashta
23、ble ; public File getFile() return file ;public void mousePressed(MouseEvent e) JTextField source=(JTextField)e.getSource(); try day =Integer. parseInt (source.getText(); notepad .setDay( day );notepad .設置信息條(year , month , day );notepad .設置文本區(qū)(null );notepad .獲取日志內(nèi)容 (year , month , day ); catch (Ex
24、ception ee) public void mouseClicked(MouseEvent e) public void mouseReleased(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public staticvoid main(String args口)Calendar calendar=C y=calendar.get(C m=calendar.get(C d=calenda
25、r.get(Calendar. new CalendarPad(y,m,d);getInstance ();YEAR);MONTH)+1;DAY_OF_MONTH);YEAR :import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Year extends Box implements ActionListener int year ;int month ;JTextField showYear =null ;JButton 明年,去年;CalendarPad 日歷; public Year(Ca
26、lendarPad 日歷)super (BoxLayout. X_AXIS );showYear =new JTextField(4);showYear .setBackground(new Color(230, 230, 250);showYear .setForeground(new Color(255, 20, 147);showYear .setFont( new Font( "TimesRomn" ,Font. BOLD,14);this . 日歷 =日歷 ;year =日歷.getYear();明年=new JButton(" 下年" );明
27、年 .setForeground( new Color(0, 139, 139);明年.setFont(new Font(" 微軟雅黑" , Font.BOLD, 13);去年=new JButton(" 上年" );去年.setFont(new Font(" 微軟雅黑" , Font.BOLD, 13);去年 .setForeground( new Color(0, 139, 139);add(去年);add( showYear );add(明年);showYear .addActionListener(this );去年.addActionListener(this );明年.addActionListener(this ); publicvoid setYear(int year)this . year =year;showYear .setText( "" +year); public int getYea
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年解除婚約協(xié)議模板
- 借證件合同范本
- 甲方方合同范本
- 感悟心靈的成長 演講稿
- 生產(chǎn)型企業(yè)績效考核方案說明
- 大廈空調(diào)水管更換合同范本
- 工程復工合同范本
- 2024年異辛酸市場發(fā)展前景分析:異辛酸市場規(guī)模超過11.96億美元
- 2024年乳膠行業(yè)前景分析:我國乳膠行業(yè)產(chǎn)值為34.95億元
- 2024年建筑工人班組勞動協(xié)議范本
- 第七章課程概述
- 2024《公共基礎知識必刷300題》題庫帶答案(輕巧奪冠)
- 創(chuàng)新設計前沿-知到答案、智慧樹答案
- 人力資源外包投標方案
- MOOC 實驗室安全學-武漢理工大學 中國大學慕課答案
- 基于人工智能的文化遺產(chǎn)保護與傳承策略
- 2024-2029年中國酒店行業(yè)發(fā)展分析及發(fā)展前景與趨勢預測研究報告
- 2024年全國法院檢察院書記員招聘筆試參考題庫附帶答案詳解
- 地理滑坡泥石流省公開課一等獎全國示范課微課金獎課件
- 2024年江西吉安市城市建設投資開發(fā)有限公司招聘筆試參考題庫含答案解析
- 營銷商務類管培生
評論
0/150
提交評論