Java万年历课程设计报告_第1页
Java万年历课程设计报告_第2页
Java万年历课程设计报告_第3页
Java万年历课程设计报告_第4页
Java万年历课程设计报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java课程设计设计题目:万年历系别:计算机科学与工程学院专业:信息管理与信息系统学 号:姓 名:岑少兵指导教师:汪华澄时 间: 2013-6-29目录摘要3 系统功能结构图 31 系统模块设计 4需求设计 4开发和运行环境 4 功能设计 42 万年历详细设计思路 4程序设计思路 5程序运行主界面 5流程图 63 各模块功能实现及代码说明 6MainFramel 类 6Lunar 类 14national 类 22SetClock 类 264 小结345 参考文献34基于 Myeclipse 的万年历摘要 :万年历是日常生活中不可或缺的小工具,用万年历我们可以准确地查到当前,以后或是过去的日

2、期,极大地方便了我们的生活。在万年历上添加了显示本地时间以后会更加准确地显示时间。无论是对于我 们学生还是上班族或是自由职业者需要经常查看和查找万年历来规划自己将要做得一些事情, 或是回忆在过 去的时间里已经做过的事情,使之更加有利于提升我们的学习或是工作进度。系统功能结构图:主要描述系统要实现的各个模块的功能。1 系统模块设计1 1 需求分析本程序的要求为: 1. 使用图形用户界面2. 能够实现日期与星期的查询3. 能够显示农历4. 能够查看世界时间5. 能够添加闹钟12 开发和运行环境开发工具: Myeclipse运行环境: windows 713 功能设计本程序要构建的万年历程序,其功能

3、有以下几个方面 :(1) 通过 MainFrame 类,实现图形界面和公历日期。(2) 提供年份、月份的下拉形式菜单来选择年份和月份。(3) 通过 Lunar 类实现农历日期。(4) 通过 national 类实现世界时间。(5) 能以月历形式显示日期与星期。(6) 通过 SetClock 类来实现闹钟功能。(7) 通过点击世界时间按钮查询世界时间(8) 通过点击闹钟按钮设置闹钟(9) 显示系统当前时间和日期。(10) 显示作者信息。2 万年历详细设计思路程序设计思路1. 总天数的算法:首先用 if 语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数 为 366,否则,为 365

4、 。然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份 并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。2. 输出月份第一天为星期几的算法:使总天数除以 7 取余加 2 得几既为星期几,若是 7 ,则为星期日。3. 算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补 上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以 7得 0换行,即 可完整的输出该月的日历

5、。4. 如果年份小于 1900 年则程序不予判断。 程序运行主界面 流程图3 各模块功能实现及代码说明MainFrame 类import ;public class MainFrame extends JFrame implements ItemListenerormat(new Date();(" 现在时间是: "+s1););();etText(logi);for(int i=0;i<49;i=i+7) labeli.setForeground;etForeground;oString(); month3=().toString()-1;week3=use(yea

6、r3,month3); Resetday(week3,year3,month3);etForeground;for(int j=0;i<49;i=i+7)labeli.setForeground;for(int j=6;i<49;i=i+7)labeli.setForeground;对于一年第几个月来说,Date date = new Date(year_log, month_log + 1, 1);MONT一H月份是 0,二月份是 1.Calendar cal = ();(date);, -1); etText("");国庆" );week_log

7、= week_log + 6; etText(count +"labeli.setForeground;else if(month_log=0&&count=1)labeli.setText(count +"元旦" );labeli.setForeground;else if(month_log=11&&count=24)labeli.setText(count +" 平安夜 " );labeli.setForeground;else if(month_log=11&&count=25)label

8、i.setText(count +"圣诞" );labeli.setForeground;else if(month_log=1&&count=14)labeli.setText(count +"情人节 " );labeli.setForeground;else if(month_log=4&&count=1)labeli.setText(count +"劳动节 " );labeli.setForeground;春节else if(LunarDatei-week_log.equals("端午&

9、quot;)|LunarDatei-week_log.equals("元 宵 ")|LunarDatei-week_log.equals("中秋")")|LunarDatei-week_log.equals(" labeli.setText("n"+count +LunarDatei-week_log ); labeli.setForeground; else labeli.setText(count +LunarDatei-week_log );public void itemStateChanged(ItemE

10、vent e)stateChanged(); * yearCyl3: 农历年与 1864 的相差数* monCyl4: 从 1900年 1月 31日以来,闰月数* dayCyl5: 与1900年1月31日相差的天数 ,再加 40 ?* param cal* return*/public String getLunarDate(int year_log, int month_log, int day_log) 1900 年 1 月 31 日 nowadays=year_log+" 年 "+month_log+" 月 "+day_log+" 日 &

11、quot; try nowaday = (nowadays); catch (ParseException e) (); 1900 年 1 月 31 日 ;public class SetClock extends JFrame implements Runnable JLabel ri, shi, fen, miao, dangqian, guanji;JButton queding, dakai;JTextField music, RI, SHI, FEN, MIAO;int h = 0, f = 0, m = 0, r = 0;boolean fo = false, foo = fals

12、e;public AudioClip soumd1;int riqi, shizhong, fenzhong, miaozhong;public SetClock() Container c = getContentPane();(new GridLayout(4, 1);JPanel jp = new JPanel();dangqian = new JLabel();(dangqian);(jp);JPanel jp3 = new JPanel();guanji = new JLabel("离闹铃时间 :0 日 0 时 0 分 0 秒 ");(guanji);(jp3);

13、JPanel jp1 = new JPanel();music = new JTextField(20);dakai = new JButton(" 选择闹铃音乐 ");(music);(dakai);(jp1);ri = new JLabel(" 日 ");RI = new JTextField(4);shi = new JLabel("时 ");SHI = new JTextField(4);fen = new JLabel("分 ");FEN = new JTextField(4);miao = new JL

14、abel("秒 ");MIAO = new JTextField(4);JPanel jp2 = new JPanel();(ri);(RI);(shi);(SHI);(fen);(FEN);(miao);(MIAO);queding = new JButton("确定 ");(queding);(jp2);setSize(400, 160);setVisible(true);(new ActionListener() public void actionPerformed(ActionEvent event) JFileChooser fileChoo

15、ser = new JFileChooser(); ); oLowerCase();return (".wav")| (".au")| ();public String getDescription() av,*.au)");if = etAbsolutePath(); quals(" 确定 ") tryr = ();h = ();f = ();m = ();if (1 <= r && r<= 31 && 0 <= h && h <= 23 &&

16、amp; 0 <= f && f <= 59 && 0 <= m && m <= 59)Date now = new Date();SimpleDateFormat ri = new SimpleDateFormat("dd");if () = null | ().equals("")r = (now);(now);elser = ();fo = true;else(null, " 输入时间错误 ");catch (Exception e)(null,"

17、 请输入正确的时间 ");elsetryfo = false;(true);(true);(true);(true);(" 确定 ");();catch(Exception E)(null," 已关闭! "););public void Set()oURL(); 这样不起床都不行 .fo = false;foo = false;catch (MalformedURLException e)();try(1000);catch (InterruptedException ie) 4 小结(1)选题目的:对于给定的题目,我觉得就学生成绩管理系统和万

18、年历相对比较简 单,但鉴于学生成绩管理系统有很多人选了,所以我就选择万年历了。对于设计一个万年 历图形界面程序,由于其功能简单设计也相对较易,通过设计这样的一个日历小组件,也 能使自己对 JAVA的一些基础知识掌握的更加牢固。(2)对于本程序的设计,首先考虑其功能有哪些,需要显示什么,如何进行窗体构 建布局,需要用哪些知识点,如相关的类和对象等。最后,就是根据初步设计的功能和布 局构架,考虑用源代码进行实现了。经过了长时间的反复编写调试,课本和网上查阅相关资料相关文章,终于基本完成了 整个课程设计,虽然还有些功能没有实现,但已经是我所能做到的最好的了。在这个过程 中,在把书本上的知识给系统的复习了一下的同时, 同时也发现了自己的太多不足, 对 JAVA 语言整体知识构架不够熟悉,不能灵活地运用所学的知识点。自己的编程方式也不是太标 准,经常出现代码写错而调试很久的低级错误情况出现。通过这次课程设计,我明白了编写程序,不仅要求对课本知识有较深刻的了解,同 时要求程序设计者有较强的思维和动手能力。还要熟悉常用的编程技巧和编程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论