java课程设计报告万年历詹永堂.docx
- 文档编号:15975742
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:13
- 大小:136.98KB
java课程设计报告万年历詹永堂.docx
《java课程设计报告万年历詹永堂.docx》由会员分享,可在线阅读,更多相关《java课程设计报告万年历詹永堂.docx(13页珍藏版)》请在冰点文库上搜索。
java课程设计报告万年历詹永堂
《Java程序设计》课程设计报告
题目:
万年历
学院:
运算机科学与工程学院
专业:
信息治理与信息系统
学生姓名:
詹永堂
学号:
29
指导教师:
汪华登
2021年6月30日
前言
1995年,Java语言的名字从Oak编程了Java。
1997年发布。
1998年发布,标志Java2的诞生。
十连年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。
Java的体系结构由Java语言、Javaclass、JavaAPI、Java虚拟机组成。
它具有简单、面向对象、健壮、平安、结构中立、可移植和高效能等众多优势。
Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。
Java的平台标准有JavaME,JavaSE和JavaEE。
Java进展到今天,它的卓越成绩及在业界的地位毋庸置疑。
本次课程设计开发平台利用Eclipse。
参照JDK帮忙。
1需求分析
需求分析
本程序的要求为:
(1)能够显示实现1800-2100年的日期,包括公历、农历、礼拜、二十四骨气。
(2)能够依照月份格式显示,或依照礼拜格式显示。
(3)能够显示系统时刻。
(4)能够设置闹钟。
(5)能够查询假设干国际大城市(散布在不同时区)的时刻。
功能设计
本程序要构建的万年历程序,其功能有以下几个方面:
一、设计程序运行界面,具有显示各类功能的面板模块,并对各功能按钮就行时刻监听;
二、程序需要显示1800年到2100年的日历,包括公历、农历、时刻所对应的礼拜。
要求系
统能够从界面上的操作获取公历日期,计算其所对应的礼拜和相应的农历并显示到界面上;
三、程序要求显示系统时刻,并能设置闹铃。
要求能够自己设置一个时刻点,在这一时刻点
做出相应的响应;
四、查询显示假设干国际城市不同时区的时刻,那个地址只需要挪用Java的系统里就能够够解决。
五、对时刻的更新,日历显示要求关联系统时刻,能在进入程序时显示系统时刻对应的日历,
并能返回当天日历;
六、程序界面的美观设计和人性化结构,要求具有良好的人机交互,容易明白得界面内容,易
操作;
七、就此刻的水平来讲,功能一、二、3、5是能够实现,功能4有待研究,可能碰到的问题是
按钮对时刻的监听处置可能难度较大,还有确实是在公历转农历中可能比较难获取相应的公历
转变日期。
程序设计思路
1.总天数的算法:
第一用if语句判定概念年到输入年之间每一年是不是为闰年,是闰年,该年的总天数为366,不然,为365。
然后判定输入的年是不是为概念年,假设是,令总天数S=1,不然,用累加法计算出概念年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,假设该月是闰年中的月份而且该月还大于二月,再使总天数加1,不然,不加,既算出从概念年一月一日到输出年的该月一日的总天数。
2.输出月份第一天为星期几的算法:
使总天数除以7取余加2得几既为星期几,若是7,则为星期日。
3.算出输出月份第一天为礼拜几的算法:
算出输出月份第一天为礼拜几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为礼拜几的数字再除以7得0换行,即可完整的输出该月的日历。
4.获取系统时刻,计算当天农历日期并显示
程序运行界面
流程图
.初始化组件
import.*;
import.*;
import初始化数据
publicclasswannianliextendsJFrameimplementsActionListener,MouseListener{
privateCalendarcld=();;
privateJLabellt=newJLabel();
privateJLabelld=newJLabel();
privateJLabellu=newJLabel("农历和骨气");
privateJLabelnull1=newJLabel();
privateintlastTime;
制程序界面
publicwannianli(){
super("花江日历过去仅留追思,以后刚生向往,唯有坚守本心,把握今天ZYT詹永堂");etLayout(newBorderLayout(9,10));
(true);dd(p3,;
().add(p5,;
().add(p6,;
().add(p8,;
String[]strDate=().format(newDate())
.split("-");tart();
newTimeThread().start();
(200,200,700,350);
(false);
(true);
计算各个月的天数
运用if语句判定各个月的最大天数
publicintgetDaysOfMonth(intYear,intMonth){
ength()!
=4)
{
thrownewNumberFormatException();
}
y=());
m=());
}
catch(NumberFormatExceptionex)
{
(this,"请输入4位0-9的数字!
","年份有误",;
return;
}
("没有选择日期");
for(inti=0;i if()==bLastYear){(--y));} if()==bNextYear){(++y));} if()==bLastMonth) { if(m==1) { (--y)); m=12; (m)); } else { (--m)); } } if()==bNextMonth) { if(m==12) { (++y)); m=1; (m)); } else { (++m)); } } (y,m-1,0); showCalendar(y,m,cld); } } 获取点击表格详细日期 publicvoidmouseClicked(MouseEvente) { (null); intr=(); intc=(); if(r,c)==null) { ("没有选择日期"); } else { (r,c)); } } 打印日期 privatevoidshowTextArea(Objectselected) { ()+"年"+()+"月"+selected+"日"); 国际时刻系统挪用显示 privatevoidupdateTimeText(StringtimeZoneId){ if(timeZoneId! =null){ TimeZonetimeZone=(timeZoneId); (timeZone); Calendarcalendar=(); (timeZone); ())); }else{ (null); } } privateclassTimeSelectedChangedListenerimplementsItemListener{ publicvoiditemStateChanged(ItemEvente){ if()=={ if()instanceofString){ s=().toString(); } } } } privateclassTimeThreadextendsThread{ publicvoidrun(){ while(true){ updateTimeText(s); try{ (100); }catch(InterruptedExceptione){ (); } } } } 显示系统时刻 classTimerextendsThreadear0.month1.day2.yearCyl3.monCyl4.dayCyl5.isLeap6 finalprivatelong[]Lunar(inty,intm){ long[]nongDate=newlong[7]; inti=0,temp=0,leap=0; DatebaseDate=newGregorianCalendar(1900+1900,1,31).getTime(); DateobjDate=newGregorianCalendar(y+1900,m,1).getTime(); longoffset=()-())/L; if(y<2000) offset+=year19[m-1]; if(y>2000) offset+=year20[m-1]; if(y==2000) offset+=year2000[m-1]; nongDate[5]=offset+40; nongDate[4]=14; for(i=1900;i<2050&&offset>0;i++){ temp=lYearDays(i); offset-=temp; nongDate[4]+=12; } if(offset<0){ offset+=temp; i--; nongDate[4]-=12; } nongDate[0]=i; nongDate[3]=i-1864; leap=leapMonth(i);ear0.month1.day2.yearCyl3.monCyl4.dayCyl5.isLeap6 finalpublicstaticlong[]calElement(inty,intm,intd){ long[]nongDate=newlong[7]; inti=0,temp=0,leap=0; DatebaseDate=newGregorianCalendar(0+1900,0,31).getTime(); DateobjDate=newGregorianCalendar(y,m-1,d).getTime(); longoffset=()-())/L; nongDate[5]=offset+40; nongDate[4]=14; for(i=1900;i<2050&&offset>0;i++){ temp=lYearDays(i); offset-=temp; nongDate[4]+=12; } if(offset<0){ offset+=temp; i--; nongDate[4]-=12; } nongDate[0]=i; nongDate[3]=i-1864; leap=leapMonth(i); ava语言程序设计/郎波编著.---2版.---北京: 清华大学出版社,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 报告 万年历 詹永堂