import java.util.Scanner;
public class yuan{
public static boolean runnian(int year){
if(year%4==0&&year%100!=0||year%400==0)
return true;
else
return false;
}
public static int day1(int year,int month){
int a[]={31,28,31,30,31,30,31,31,30,31,30,31};
if(runnian(year))
a[1]=29;
return a[month-1];
}
public static int day2(int year,int month,int day){
int i,sum=0;
for(i=1;i<month;i++){
sum+=day1(year,i);
}
sum+=day;
return sum;
}
public static int week1(int year,int month,int day){
int number=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+day2(year,month,day);
number%=7;
return number;
}
public static String Week2(int number){
switch(number)/*分类一周七天*/{
case 0: return "星期日";
case 1: return "星期一";
case 2: return "星期二";
case 3: return "星期三";
case 4: return "星期四";
case 5: return "星期五";
case 6: return "星期六";
default:return "错误!请您重新输入。";/*不符和上面七种情况的报错提示*/
}
}
public static void x1(int year,int month,int day){
int number=week1(year,month,day);
if(runnian(year))System.out.print("闰年");/*年份为闰年则输出“闰年“*/
else System.out.print("平年");
System.out.print(year+"年"+month+"月"+day+"日"+Week2(number)+"\n\n");/*按年 月 日输出结果*/
}
public static void x2(int year,int month){
int max,number,i,j=1;
max=day1(year,month);
number=week1(year,month,1);
System.out.println("星期日"+" "+"星期一"+" "+"星期二"+" "+"星期三"+" "+"星期四"+" "+" 星期五"+" "+"星期六");/*按照间隔打印日历*/
for(i=0;i<number;i++){
System.out.print(" ");
}
while(j<=max){
System.out.print(j+" ");
if(i%7==6)
{
System.out.println();
}
i++;
j++;
}
System.out.println("\n");
}
public static int x3(int year,int month,int day){
if(year<0||month<1||month>12||day<1||day>day1(year,month))/*当输入值出现这些情况时*/
return 0;/*返回0*/
else
return 1;/*返回1*/
}
public static void nianli(int year){
int i;
System.out.println();
for(i=1;i<=12;i++)
{
if(runnian(year))System.out.print("闰年");
else System.out.print("平年");
System.out.print(year+"年"+i+"月\n\n");
}
}
public static void yueli(int year,int month){
if(runnian(year))
System.out.print("闰年");
else System.out.print("平年");
System.out.print(year+"年"+month+"月\n\n");
x2(year,month);
}
public static void rili(int year,int month,int day){
System.out.println();
x1(year,month,day);
}
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int year,month,day,a,b;
boolean i=true;
while(i){
System.out.print("\n\n\n\n");
System.out.print(" **********************************************************\n\n");
System.out.print(" * * \n");
System.out.print(" 欢迎进入万年历查询系统 \n");
System.out.print(" * * \n\n");
System.out.print(" **********************************************************\n\n\n");
System.out.print(" 1 年历 2 月历 3 日历 4 退出\n");
System.out.print(" 请输入您的选择<1~4>,按回车键确定: ");
b=sc.nextInt();
switch(b){
case 1:/*选择1时*/
System.out.print("\n请输入您要查的年份: ");/*给出输入提示*/
year=sc.nextInt();/*输入查询的年份*/
a=x3(year,1,1);
if(a==0)
{
System.out.print("错误!请您重新输入。\n");/*输入植异常时报错*/
break;
}
nianli(year);
break;
case 2:/*选择二时*/
System.out.print("\n请输入您要查的年和月,年月之间用空格隔开: ");/*给出输入提示*/
year=sc.nextInt();
month=sc.nextInt();/*输入需要查询的年 月*/
a=x3(year,month,1);
if(a==0)
{
System.out.print("错误!请您重新输入。\n");
break;
}
yueli(year,month);
break;
case 3:/*选择3时*/
System.out.print("\n请输入您要查的年月日,年月日之间用空格隔开: ");/*给出输入提示*/
year=sc.nextInt();
month=sc.nextInt();
day=sc.nextInt();/*输入年 月 日*/
a=x3(year,month,day);
if(a==0)
{
System.out.print("错误!请您重新输入。\n");/*输入植异常时报错*/
break;
}
rili(year,month,day);
break;
case 4:
i=false;
default:
System.out.print("错误!请您重新输入。\n\n");
}
}
}
}
分享到:
相关推荐
能够实现万年历,不是很全面,毕竟第一次写嘛!!嘿嘿,支持下!!
基于-MCS-51单片机实现万年历!.doc
《Proteus仿真技术在构建万年历项目中的应用》 在现代电子设计领域,模拟与测试是不可或缺的重要环节,而Proteus软件以其强大的电路仿真能力,深受广大电子工程师和学习者的喜爱。本篇文章将重点探讨如何利用...
利用JAVA开发万年历,采取的是初级java开发技术,实现自1900年1月1日开始查询,实现年月日的日历查询!
单片机实时时钟(RTC)与万年历是嵌入式系统中常见的功能模块,它们在各种设备中都有广泛的应用,例如智能家居、工业控制、物联网设备等。本篇文章将详细探讨这两个知识点。 首先,实时时钟(RTC)是单片机中用于...
非常好用的万年历!有世界各地的节日,方便查询检索。
欢迎您使用日梭万年历! 日梭万年历是世界上第一款采用现代高精度天文历算算法制作的公历、农历、伊斯兰历(回历)三历对照、信息丰富、年代特长的多功能万年历。时间跨度长达4000年(起自格里历开始实行年之后的...
欢迎您使用日梭万年历! 日梭万年历是世界上第一款采用现代高精度天文历算算法制作的公历、农历、伊斯兰历(回历)三历对照、信息丰富、年代特长的多功能万年历。时间跨度长达4000年(起自格里历开始实行年之后的...
51单片机的万年历!!!大家可以看看哈!!
Java万年历!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
欢迎您使用日梭万年历! <br> 日梭万年历是世界上第一款采用现代高精度天文历算算法制作的公历、农历、伊斯兰历(回历)三历对照、信息丰富、年代特长的多功能万年历。时间跨度长达4000年(起自格里历开始实行年...
继上次的万年历以后, 闻鸥先生再接再厉,又设计出了包含农历的新版万年历!还等什么,赶快下载吧!
好神奇的万年历!
《万年历:桌面日历的功能与应用》 在当今数字化时代,万年历作为一款实用的桌面工具,已经深入到人们的日常生活中。万年历不仅提供了日期查询的基本功能,更融合了多种实用特性,使其成为提升工作效率和生活便利性...
基于stm32+lcd12864+行列式键盘的万年历! 将LCD12864的PSB与GND短接,RE--PB.12,RW--PB.13,E--PB.15; 将行列式键盘S1-S8依次与PD.00-PD.07连接好(S1-S4控制行,S5-S8控制列)
正确性可与其他万年历比较,大多数万年历都使用存储1900-2050或1900-2100农历数据,实现150或200年的“万年历”,本人的转换方法可转换公元前102年到公元9999年的公历和家历,才真正称得上万年历!
在本资源中,我们主要探讨的是一个用C语言编写的万年历程序。万年历是一种可以显示公历年、月、日以及星期等信息的工具,对于编程爱好者来说,实现一个万年历是一项有趣的挑战,同时也能够提升对日期计算和编程逻辑...
微信小程序 万年历 (源码)微信小程序 万年历 (源码)微信小程序 万年历 (源码)微信小程序 万年历 (源码)微信小程序 万年历 (源码)微信小程序 万年历 (源码)微信小程序 万年历 (源码)微信小程序 万年历 (源码)微信小...
在IT领域,尤其是在嵌入式系统设计中,"万年历_单片机_万年历_温湿度_万年历lcd12864_万年历闹钟"这个标题涉及了几个关键的技术点,包括单片机编程、万年历算法、温湿度传感器的应用以及LCD12864液晶显示屏的控制。...
微信小程序源码 万年历(学习版)微信小程序源码 万年历(学习版)微信小程序源码 万年历(学习版)微信小程序源码 万年历(学习版)微信小程序源码 万年历(学习版)微信小程序源码 万年历(学习版)微信小程序源码 万年历(学习...