ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:153.10KB ,
资源ID:11733658      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11733658.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java万年历.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java万年历.docx

1、Java万年历软件工程学院JAVA程序设计课程实训报告( 2012 2013)学年第 1 学期)姓 名: 学 号: 专 业: 班 级: 指导教师: JAVA程序设计课程实训报告日 期2012-9-3至2012-9-14地 点项目名称Java程序设计课程综合训练实训目的能力目标1、 熟悉JAVA开发工具的操作界面2、 掌握JAVA程序语法规则3、 较好完成布置的各实训课题内容实训要求: 【程序】编写一个万年历的软件。(1). 掌握Eclipse中工程的使用,项目的调试、编译、链接、运行。 (2). 面向对象程序设计中类的组织和类之间的关系分析。 (3). 构造函数的应用。 (4) 继承和派生的使

2、用 (5). 多态性和接口的使用。(6). 网络编程的组织与使用。学会Eclipse完成工程的创建;掌握面向对象中类、继承、多态性的开发思想;掌握网络编程的概念; 独立设计B/S螃蟹过街游戏;考试管理管理系统;C/S网络。实训内容(过程及步骤):1、创建文件目录:在E盘下新建以文件夹万年历,将程序保存到此文件下。2、运行程序:双击打开eclipse.exe软件,打开文件新建项目,新建java项目,创建项目名,”wannianli”;点击 下一步,之后完成,则这个项目就创建好了,如图所示:4、 在新建的项目上单击右键创建包,如图所示: 4、在包上单击右键创建类,输入程序,运行程序, 查看结果,保

3、存java程序。5、 输入程序:package myCalendar;/ Download by import java.awt.Color;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class Lunar private int year; private int month; private int day; private boolean leap; final static String

4、chineseNumber = 一, 二, 三, 四, 五, 六, 七, 八, 九, 十, 十一, 十二; static SimpleDateFormat chineseDateFormat = new SimpleDateFormat(yyyy年MM月dd日); final static long lunarInfo = new long 0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x

5、1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2

6、b2, 0x0a950, 0x0b557, 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5d0, 0x14573, 0x052d0, 0x0a9a8, 0x0e950, 0x06aa0, 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b5a0, 0x195a6, 0x095b0,

7、 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0, 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x

8、055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, 0x05aa0, 0x076a3, 0x096d0, 0x04bd7, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b2

9、55, 0x06d20, 0x0ada0; /= 传回农历 y年的总天数 final private static int yearDays(int y) int i, sum = 348; for (i = 0x8000; i 0x8; i = 1) if (lunarInfoy - 1900 & i) != 0) sum += 1; return (sum + leapDays(y); /= 传回农历 y年闰月的天数 final private static int leapDays(int y) if (leapMonth(y) != 0) if (lunarInfoy - 1900 &

10、 0x10000) != 0) return 30; else return 29; else return 0; /= 传回农历 y年闰哪个月 1-12 , 没闰传回 0 final private static int leapMonth(int y) return (int) (lunarInfoy - 1900 & 0xf); /= 传回农历 y年m月的总天数 final private static int monthDays(int y, int m) if (lunarInfoy - 1900 & (0x10000 m) = 0) return 29; else return 3

11、0; /= 传回农历 y年的生肖 final public String animalsYear() final String Animals = new String鼠, 牛, 虎, 兔, 龙, 蛇, 马, 羊, 猴, 鸡, 狗, 猪; return Animals(year - 4) % 12; /= 传入 月日的offset 传回干支, 0=甲子 final private static String cyclicalm(int num) final String Gan = new String甲, 乙, 丙, 丁, 戊, 己, 庚, 辛, 壬, 癸; final String Zhi

12、 = new String子, 丑, 寅, 卯, 辰, 巳, 午, 未, 申, 酉, 戌, 亥; return (Gannum % 10 + Zhinum % 12); /= 传入 offset 传回干支, 0=甲子 final public String cyclical() int num = year - 1900 + 36; return (cyclicalm(num); public static String getChinaDayString(int day) String chineseTen = 初, 十, 廿, 卅; int n = day % 10 = 0 ? 9 : d

13、ay % 10 - 1; if (day 30) return ; if (day = 10) return 初十; else return chineseTenday / 10 + chineseNumbern; /* */* * 传出y年m月d日对应的农历. * yearCyl3:农历年与1864的相差数 ? * monCyl4:从1900年1月31日以来,闰月数 * dayCyl5:与1900年1月31日相差的天数,再加40 ? * param cal * return */ public String getLunarDate(int year_log, int month_log,

14、int day_log) /SuppressWarnings(unused) int yearCyl, monCyl, dayCyl; int leapMonth = 0; String nowadays; Date baseDate = null; Date nowaday=null; try baseDate = chineseDateFormat.parse(1900年1月31日); catch (ParseException e) e.printStackTrace(); /To change body of catch statement use Options | File Tem

15、plates. nowadays=year_log+年+month_log+月+day_log+日; try nowaday = chineseDateFormat.parse(nowadays); catch (ParseException e) e.printStackTrace(); /To change body of catch statement use Options | File Templates. /求出和1900年1月31日相差的天数 int offset = (int) (nowaday.getTime() - baseDate.getTime() / 86400000

16、L); dayCyl = offset + 40; monCyl = 14; /用offset减去每农历年的天数 / 计算当天是农历第几天 /i最终结果是农历的年份 /offset是当年的第几天 int iYear, daysOfYear = 0; for (iYear = 1900; iYear 0; iYear+) daysOfYear = yearDays(iYear); offset -= daysOfYear; monCyl += 12; if (offset 0) offset += daysOfYear; iYear-; monCyl -= 12; /农历年份 year = iY

17、ear; yearCyl = iYear - 1864; leapMonth = leapMonth(iYear); /闰哪个月,1-12 leap = false; /用当年的天数offset,逐个减去每月(农历)的天数,求出当天是本月的第几天 int iMonth, daysOfMonth = 0; for (iMonth = 1; iMonth 0; iMonth+) /闰月 if (leapMonth 0 & iMonth = (leapMonth + 1) & !leap) -iMonth; leap = true; daysOfMonth = leapDays(year); els

18、e daysOfMonth = monthDays(year, iMonth); offset -= daysOfMonth; /解除闰月 if (leap & iMonth = (leapMonth + 1) leap = false; if (!leap) monCyl+; /offset为0时,并且刚才计算的月份是闰月,要校正 if (offset = 0 & leapMonth 0 & iMonth = leapMonth + 1) if (leap) leap = false; else leap = true; -iMonth; -monCyl; /offset小于0时,也要校正

19、if (offset 0) offset += daysOfMonth; -iMonth; -monCyl; month = iMonth; day = offset + 1; if(month)=1)&day=1) return 春节; else if(month)=1)&day=15) return 元宵; else if(month)=5)&day=5) return 端午; else if(month)=8)&day=15) return 中秋; else if(day=1) return chineseNumbermonth - 1 + 月; else return getChina

20、DayString(day); public String toString() if(chineseNumbermonth - 1=一&getChinaDayString(day)=初一) return 农历+year + 年; else if(getChinaDayString(day)=初一) return chineseNumbermonth - 1 + 月; else return getChinaDayString(day); /return year + 年 + (leap ? 闰 : ) + chineseNumbermonth - 1 + 月 + getChinaDayStr

21、ing(day); 6、如四五 所示,创建Clock.java和MainFrame.java类,并且 添加代码;7、Clock.java 代码如下:package myCalendar;/ Download by import java.awt.Canvas;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.text.SimpleDateFormat;import java.util.Calendar; class Clock extends Canvas implements Run

22、nable /* * */ private static final long serialVersionUID = 3660124045489727166L; MainFrame mf; Thread t; String time; public Clock(MainFrame mf) this.mf=mf; setSize(280,40); setBackground(Color.white); t=new Thread(this); /实例化线程 t.start(); /调用线程 public void run() while(true) try Thread.sleep(1000);

23、/休眠1秒钟 catch(InterruptedException e) System.out.println(异常); this.repaint(100); public void paint(Graphics g) Font f=new Font(宋体,Font.BOLD,16); SimpleDateFormat SDF=new SimpleDateFormat(yyyy年MM月dd日HH:mm:ss);/格式化时间显示类型 Calendar now=Calendar.getInstance(); time=SDF.format(now.getTime(); /得到当前日期和时间 g.s

24、etFont(f); g.setColor(Color.black); g.drawString(time,45,25); 8、MainFrame.java 代码如下:package myCalendar;import java.awt.BorderLayout;import java.awt.Color;import java.awt.GridLayout;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Date;imp

25、ort java.util.Calendar;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JButton; class MainFrame extends JFrame /* * */ private static final long serialVersionUID = 1L; JPanel panel = new JPanel(new BorderLayout(); JPanel p

26、anel1 = new JPanel(); JPanel panel2 = new JPanel(new GridLayout(7, 7); JPanel panel3 = new JPanel(); JLabel label = new JLabel49; JLabel y_label = new JLabel(年份); JLabel m_label = new JLabel(月份); JComboBox com1 = new JComboBox(); JComboBox com2 = new JComboBox(); JButton but1=new JButton(上个月); JButt

27、on but2=new JButton(下个月); int re_year, re_month; int x_size, y_size; String year_num; Calendar now = Calendar.getInstance(); / 实例化Calendar MainFrame() super(万年历); setSize(600, 700); x_size = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth(); y_size = (int) (Toolkit.getDefaultToolkit().ge

28、tScreenSize().getHeight(); setLocation(x_size - 300) / 2, (y_size - 350) / 2); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); panel1.add(but1); panel1.add(y_label); panel1.add(com1); panel1.add(m_label); panel1.add(com2); panel1.add(but2); for (int i = 0; i 49; i+) labeli = new JLabel(, JLabel.CENTER);/ 将显示的字符设置为居中 panel2.add(labeli); panel3.add(new Clock(this); panel.add(panel1, BorderLayout.NORTH); panel.add(panel2, BorderLayout.CENTER); panel.add(panel3, BorderLayout.SOUTH); panel.setBackground(Color.white); panel1.setBackground(Color.white);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1