Java实现万年历查询程序

需积分: 10 1 下载量 165 浏览量 更新于2024-09-13 收藏 3KB TXT 举报
"万年历查询源代码是一个用于实现日期计算和万年历查询的程序。用户需要输入用户名和密码进行登录验证,之后可以输入年份和月份来查询指定日期的相关信息。代码中包含了闰年的判断逻辑,以及计算指定年份至今的总天数的方法。" 在给定的代码中,主要涉及以下几个知识点: 1. **Scanner 类**:`Scanner input = new Scanner(System.in)` 用于从标准输入(键盘)读取用户输入,这是Java中获取用户输入的常见方式。 2. **循环结构**:`do-while` 循环用于确保用户输入正确的用户名和密码,以及确认是否重新登录。当用户输入不正确时,程序会提示错误并询问是否继续尝试,直到用户输入正确或选择退出。 3. **字符串比较**:`"admin".equals(userName)` 和 `"123".equals(passwold)` 是对用户名和密码进行比较的方式,这里使用了 `equals()` 方法,而非 `==` 运算符,因为 `equals()` 比较的是字符串内容,而 `==` 比较的是对象引用。 4. **条件判断**:代码中有多个 `if-else` 结构用于处理不同情况,例如检查用户名和密码是否匹配,以及闰年的判断。 5. **闰年判断**:在计算总天数时,涉及到闰年的判断,使用了两个条件 `Numberday%4==0&&Numberday%100!=0` 或 `Numberday%400==0`,这遵循了闰年的规则:能被4整除但不能被100整除,或者能被400整除的年份是闰年。 6. **累加计算**:`Numbersum` 变量用于累加每年的天数,根据闰年和平年的天数进行增加。在循环中,对于平年,每年累加365天;对于闰年,由于有29天的二月,因此累加366天。 7. **循环控制**:`for(int month=1; month<Month; month++)` 循环用于计算指定年份前的总天数,对于二月,需要特别处理,因为它可能有28天或29天,取决于当年是否是闰年。 8. **日期计算**:最后,程序会根据输入的年份和月份,结合之前计算的总天数,输出相关信息。这部分代码未给出完整,可能需要进一步完善。 这个程序提供了一个基本的万年历查询功能,用户可以查询特定日期的相关信息。不过,它还有待扩展和完善,例如添加异常处理、日历显示等功能,以提升用户体验。同时,密码明文存储存在安全风险,实际应用中应考虑加密处理。
2014-05-21 上传
#include int main (void) { int year,month,j,i,day1,day2,one1,one2,w; printf("enter a year:"); scanf("%d",&year); printf("\n\n"); printf("---------------------%d---------------------\n\n",year); one1=((year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+1)%7; for(month=1;month<=12;month+=2) { printf(" ",month,year); printf(" \n",month+1,year); printf("-------------------- --------------------\n"); printf("日 一 二 三 四 五 六 日 一 二 三 四 五 六\n"); switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day1=31;break; case 4: case 6: case 9: case 11:day1=30;break; default:if(!(year%4)&&(year0)||!(year%400)) day1=29; else day1=28; } for(j=1;j<=one1;j++) { if(one1==7) break; else printf(" "); } for(i=1;i<=7-one1;i++) printf("%2d ",i); printf(" "); switch(month+1) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day2=31;break; case 4: case 6: case 9: case 11:day2=30;break; default:if(!(year%4)&&(year0)||!(year%400)) day2=29; else day2=28; } one2=(one1+day1)%7; for(j=1;j<=one2;j++) { if(one2==7) break; if(j!=7) printf(" "); } for(i=1;i<=7-one2;i++) printf("%2d ",i); printf("\n"); for(i=8-one1;i<=14-one1;i++) printf("%2d ",i); printf(" "); for(i=8-one2;i<=14-one2;i++) printf("%2d ",i); printf("\n"); for(i=15-one1;i<=21-one1;i++) printf("%2d ",i); printf(" "); for(i=15-one2;i<=21-one2;i++) printf("%2d ",i); printf("\n"); for(i=22-one1;i<=28-one1;i++) printf("%2d ",i); printf(" "); for(i=22-one2;i<=28-one2;i++) printf("%2d ",i); printf("\n"); for(i=29-one1;i<=35-one1&&i<=day1;i++) printf("%2d ",i); printf(" "); for(w=1;w<=35-day1-one1;w++) printf(" "); for(i=29-one2;i<=35-one2&&i<=day2;i++) printf("%2d ",i); printf("\n"); for(i=36-one1;i<=day1;i++) printf("%2d ",i); for(w=1;w<=35-day1-one1;w++) printf(" "); if(day1==31&&(one1==4||one1==3||one1==2||one1==1||one1==7)) printf(" "); if(day1==30&&(one1==4||one1==3||one1==2||one1==1||one1==7)) printf(" "); for(i=36-one2;i<=day2;i++) printf("%2d ",i); printf("\n-------------------- --------------------\n\n"); printf("\n"); one1=(one2+day2)%7; } printf("---------------------%d---------------------\n",year); getchar(); printf("按任意键退出"); getchar(); return 0; }