《java万年历课程报告.pdf》由会员分享,可在线阅读,更多相关《java万年历课程报告.pdf(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java程 序 设 计 课 程 设 计 报 告 设 计 题 目:电 子 日 历 设 计 班 级:学 号:姓 名:一 目 录 一 一 需 求 分 析.3二 概 要 设 计.3三 详 细 设 计.4四 程 序 代 码.9五 运 行 结 果.16六 设 计 总 结.17一 需 求 分 析 对 于 万 年 历 系 统,其 主 要 功 能 是:查 看 当 日 日 期(年、月、日)、查 看 当 时 时 间、查 看 其 他 年 月 的 月 历。主 要 使 用 流 程 是:查 看 万 年 历 系 统,查 看 其 他 月 份 或 年 份 日 历,选 中 其 他 日 期 查 看,查 看 当 日 日 期。主 要 功
2、 能 的 用 例 描 述 如 下:1.查 看 万 年 历(1)、进 入 万 年 历 系 统;(2)、系 统 获 取 当 日 日 期 并 设 置 日 历 为 当 月,黑 框 选 中 当 日 日 期;2.查 询 当 月 其 他 年 份 改 变 年 份 的 方 法 是 选 择 年 份。(1)、点 击 选 择 年 份 的 下 拉 菜 单,选 择 年 份;(2)、系 统 获 取 已 选 择 的 年 份;(3)、系 统 设 置 为 已 选 年 份 当 月 的 月 历 并 显 示 在 界 面 显 示。3.查 询 当 年 的 其 他 月 份 改 变 月 份 的 方 法 是 选 择 月 份。(1)、点 击 选
3、择 月 份 的 下 拉 菜 单,选 择 年 份;(2)、系 统 获 取 已 选 择 的 月 份;(3)、系 统 设 置 已 选 月 份 为 当 年 的 月 历 并 在 界 面 显 示。4.选 择 其 他 日 期 查 看(1)、点 击 其 他 日 期;(2)、系 统 对 所 有 日 期 的 label进 行 监 听,判 断 点 击 的 那 个 label;(3)、返 回 被 点 击 的 label的 数 组 下 标;(4)、对 该 下 标 的 label设 置 蓝 色 边 框,表 示 选 中。二 概 要 设 计(1)可 以 通 过 图 形 界 面 显 示 日 历。(2)能 以 月 历 形 式 显
4、 示 日 期 与 星 期。(3)支 持 用 户 自 己 输 入 年 份,可 以 通 过 上 一 年,下 一 年 等 按 钮 来 选 择 年 份 和 月 份。三 详 细 设 计 1.总 天 数 的 算 法:首 先 用 if语 句 判 断 定 义 年 到 输 入 年 之 间 每 一 年 是 否 为 闰 年,是 闰 年,该 年 的 总 天 为 366,否 则,为 365。然 后 判 断 输 入 的 年 是 否 为 定 义 年,若 是,令 总 天 数 S=l,否 则,用 累 加 法 计 算 出 定 义 年 到 输 入 年 之 间 的 总 天 数,再 把 输 入 年 的 一 月 到 要 输 出 的 月
5、份 之 间 的 天 数 累 加 起 来,若 该 月 是 闰 年 中 的 月 份 并 且 该 月 还 大 于 二 月,再 使 总 天 数 加 1,否 则,不 加,既 算 出 从 定 义 年 一 月 日 到 输 出 年 的 该 月 一 日 的 总 天 数。2.输 出 月 份 第 一 天 为 星 期 几 的 算 法:使 总 天 数 除 以 7取 余 加 2 得 儿 既 为 星 期 儿,若 是 7,则 为 星 期 日。3.算 出 输 出 月 份 第 一 天 为 星 期 几 的 算 法:算 出 输 出 月 份 第 一 天 为 星 期 几 后,把 该 日 期 以 前 的 位 置 用 空 格 补 上,并 总
6、 该 日 起 一 次 输 出 天 数 直 到 月 底,该 月 中 的 天 数 加 上 该 月 一 日 为 星 期 儿 的 数 字 再 除 以 7 得 0 换 行,即 可 完 整 的 输 出 该 月 的 日 历。4.输 出 年 份 介 于 1970-21005.显 示 系 统 时 间。6.功 能 实 现 查 询 指 定 年 份 日 历 查 询 指 定 月 份 日 历 查 询 相 邻 年 份 日 历 查 询 相 邻 月 份 日 历 查 看 今 日 显 示 时 间7.关 键 技 术(1)界 面 的 绘 制 与 显 示 public class CalendarSample extends JFram
7、e implementsActionListener,ItemListenerint width,height;static int year=1990,month=l;JButton jll,jl2;JLabel endfield;JPanel jp;Choice chyear;JTable table;Object tab口;CalendarBean ca;String a;Object name二 日,一,二,三,四,五,六;public static void main(String args)new CalendarSample();public CalendarSample()jp
8、=new JPanel();ca=new CalendarBean();year=ca.getYear();month=ca.getMonthO;jll=new JButton(上 月);jl2=new JButton(下 月);chyear=new Choice();for(int i=1970;i2100;i+)chyear.add(String.valueOf(i);)tab=new Object6 7;jll.addActionListener(this);jll.setActionCommand(z,leftz/);jl2.addActionListener(this);jl2.s6
9、tAetionCommand(right);chyear.addltemListener(this);chyear.setNamc(cl);endfield二 new JLabel(+year+年+month+月,JLabel.CENTER);update();jp.add(jll);jp.add(jl2);jp.add(new JScrollPane(table),BorderLayout.CENTER);this.add(chyear,BorderLayout.NORTH);this.add(jp,BorderLayout.CENTER);this,add(endfield,BorderL
10、ayout.SOUTH);width=500;height=210;this.setTitle(日 历);this.setResizable(false);this.setSize(width,height);Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSizeO;this.setLocation(screenSize.width-width)/2,(screenSize.height-height)/2);this.setVisible(true);this,setDefau1tCloseOperation(JFrame
11、.EX1T_ON_CLOSE);validate();public void actionPerformed(ActionEvent e)if(e.getActionCommand().equals(left)if(month=l)year一 二 1;month=12;elsemonth;)else if(e.getActionCommandO.equals(right)if(month=12)year+=l;month=1;elsemonth+;)update();validate();)public void itemStateChanged(ItemEvent e)Choice tmp=
12、(Choice)e.getSource();if(tmp.getName().equals(cl)year=Integer,parselnt(String)e.getltemO);)update();validate();public void update()ca.setYear(year);ca.setMonth(month);endfield.setText(+year+年+month+月);chyear.select(String.valueOf(year);int n=0;a=ca.getCalendar();for(int i=0;i6;i+)for(int j=0;j7;j+)i
13、f(!(”+an).equals(/,zz+null)=+an;elsetabin+;)table=new JTable(tab,name);getContentPane().removeAl1();this,add(chyear,BorderLayout.NORTH);this.add(jp,BorderLayout.CENTER);this,add(endfield,BorderLayout.SOUTH);validate();)(2)根 据 月 份 判 断 每 个 月 的 天 数 以 及 判 断 是 否 为 闰 年 来 判 断 2 月 的 天 数 public int getDaysOf
14、Month(int year,int Month)显 示 所 选 月 份 的 天 数(if(Month=1|Month=3|Month=5|Month=7|Month=810|Month=12)I Month=re tu rn 31;)if(Month-4|Month=6|Month=9|I Month=1 1)(re tu rn 30;i f(year%4=0&year%100!=0|year%400=0)闰 年(re tu rn 29;)e lse(re tu rn 28;)四 程 序 代 码 import java.awt.*;import java.awt.event.*;import
15、 javax.swing.*;import java.util.Calendar;import java.util.Date;public class CalendarSample extends JFrame implementsActionListener,ItemListenerint width,height;static int year=1990,month=l;JButton jll,jl2;JLabel endfield;JPanel jp;Choice chyear;JTable table;Object tab;CalendarBean ca;String a;Object
16、 name=“日 一 旦 二 7 三 二 四 三 五 四 六”;public static void main(String args)new CalendarSample();)public CalendarSample()jp=new JPanel();ca=new CalendarBean();year=ca.getYear();month=ca.getMonth();jll=new JButton(上 月)jl2=new JButton(下 月,chyear=new Choice();for(int i=1970;i2100;i+)chyear.add(String.valueOf(i
17、);)tab=new Object6J;jl 1.addActionListener(this);jl 1.setActionCommand(nleftn);j!2.addActionListener(this);j 12.set ActionCommand(right);chyear.addltemListener(this);chyear.setName(cl);endfield=new JLabel(+year+”年+month+月 JLabel.CENTER);update();jp.add(jll);jp.add(jl2);jp.add(new JScrollPane(table),
18、BorderLayout.CENTER);this.add(chyear,BorderLayout.NORTH);this.add(jp,BorderLayout.CENTER);this.add(endfield,BorderLayout.SOUTH);width=500;height=210;this.setTitle(日 历)this.setResizable(false);this.setSize(width,height);Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();this.setLocation
19、(screenSize.width-width)/2,(screenSize.height-height)/2);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);validate();)public void actionPerformed(ActionEvent e)if(e.getActionCommand().equals(,left,)if(month=l)year-=l;month=12;elsemonth;)else if(e.getActionCommand().equals(,r
20、ight,)if(month=12)year+=1;month=l;elsemonth+4-;)update();validate();)public void itemStateChanged(ItemEvent e)Choice tmp=(Choice)e.getSource();if(tmp.getName().equals(nc 1)year=Integer.parseInt(String)e.getltem();)update();validate();)public void update()ca.setYear(year);ca.setMonth(month);endfield.
21、setText(+year+年+month+“月”);chyear.select(String.valueOf(year);int n=0;a=ca.getCalendar();for(int i=0;i6;i+)for(int j=0;j7;j+)if(!(,+an).equals(,H,+null)tabi|j=M,+an;elsetabij=n,;)n+;)table=new JTable(tab,name);getContentPane().removeAll();this.add(chyear,BorderLayout.NORTH);this.add(jp,BorderLayout.
22、CENTER);this.add(endfield,BorderLayout.SOUTH);validateQ;)class CalendarBean String dayJ;Calendar kalendar;int year=1990,month=1;(kalendar=Calendar.getlnstance();kalendar.setTime(new Date();month=kalendar.get(Calendar.MONTH)+l;year=kalendar.get(Calendar.YEAR);public void setYear(int year)this.year=ye
23、ar;public int getYear()return year;)public void setMonlh(int month)this.month=month;)public int getMonth()return month;public String getCalendar()String a=new String42;kalendar.set(year,month-1,1);int week=kalendar.get(Calendar.DAY_OF_WEEK)-1;int day=0;if(month=1 I I month=3 I I month=5 I I month=7
24、I I month=8 I I month=10 I I month=12)day=31;if(month=4 I I month=6 I I month=9 I I month=11)day=30;if(month=2)if(year%4=0)&(year%100!=0)I I(year%400=0)day=29;else day=28;)for(int i=week,n=1;i week+day;i+)ai=String.valueOf(n);n+;)return a;class Look extends J Dialog implements ItemListenerChoice ski
25、n;public Look()skin=new Choice();skin.add(H);skin.add(H);skin.addO;skin.addItemListener(this);this.add(skin);this.setSize(200,150);Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();this.setLocation(screenSize.width-200)/2,(screenSize.height-150)/2);this.setVisible(true);this.setDefaul
26、tCloseOperation(JFrame.DISPOSE_ON_CLOSE);validate();public void itemStateChanged(ItemEvent argO)/TODO Auto-generated method stub五 运 行 结 果 1.在 下 拉 列 表 中 选 择 2015年,选 择 1 2月 3 0日 后 点 击 查 看 情 况:2.选 择 2015年 12月 30日 后 点 击 上 月 按 钮 查 看 情 况:3.选 择 2015年 12月 30日 后 点 击 下 月 按 钮 查 看 情 况:六 设 计 总 结 1 Java语 言 是 解 释
27、执 行 的 高 级 编 程 语 言,是 面 向 对 象 的 程 序 设 计 语 言,功 能 强 大,它 是 解 释 执 行 的,能 跨 平 台 使 用,具 有 较 高 的 性 能 和 高 度 的 安 全 性。经 过 了 一 个 学 期 对 Java程 序 设 计 的 学 习,我 们 学 习 了 理 论 知 识,了 解 了 Java语 言 程 序 设 计 的 思 想,这 些 知 识 都 为 我 们 的 下 一 步 学 习 打 下 了 坚 实 的 基 础。2 经 过 这 次 课 程 设 计 使 我 对 JAVA图 形 用 户 界 面 的 有 关 知 识 有 了 更 深 入 了 解,如 几 种 布
28、局 管 理 器 的 使 用 方 法,事 件 的 处 理 机 制,SWING的 基 本 体 系 结 构,SWING组 件 的 使 用 方 法,多 媒 体 的 实 现 手 段 等 知 识。完 成 了 简 单 的 万 年 历 功 能。3 本 次 课 程 设 计 的 主 要 内 容 就 是 设 计 一 个 可 以 查 询 日 期 的 程 序,通 过 选 择 下 拉 列 表 中 的 年 份 以 及 月 份 来 实 现 日 期 的 查 询,及 按 键 改 变 年 月 通 过 它 可 以 查 询 到 日 期 的 一 些 具 体 信 息,可 以 查 询 所 选 日 期 是 星 期 儿,还 对 星 期 六 与
29、星 期 日 有 特 殊 颜 色 的 标 记,方 便 查 看。此 外,还 可 以 实 现 显 示 数 字 时 间 的 功 能,简 单 实 用。4 通 过 课 程 设 计,能 够 达 到 全 面、深 入 理 解 和 掌 握 所 学 内 容,能 够 进 行 简 单 的 分 析 和 判 断。此 次 课 程 设 计 一 方 面 是 为 了 检 查 我 们 一 个 学 期 来 我 们 学 习 的 成 果,另 一 方 面 也 是 为 了 让 我 们 进 一 步 的 掌 握 和 运 用 它,同 时 也 让 我 们 认 清 自 己 的 不 足 之 处 和 薄 弱 环 节,加 以 弥 补 和 加 强。是 对 自 己 学 习 的 一 次 很 好 的 检 验。能 完 成 这 次 的 课 程 设 计,和 身 边 的 同 学 和 老 师 的 帮 助 分 不 开 的。在 此 对 指 导 老 师 表 示 感 谢,还 有 帮 助 过 我 的 一 些 同 学,在 此 也 表 示 谢 意。在 今 后 的 学 习 中 我 也 会 更 加 努 力 的。
限制150内