求万年历VC6.0 源代码.高手请指教

作者&投稿:错莘 (若有异议请与网页底部的电邮联系)
求Java万年历源代码!!!~

我有个JS的要么?
你可以把他改下我是没时间帮你该哈!!!
!--日期框选择-->>

var DS_x,DS_y;

function dateSelector() //构造dateSelector对象,用来实现一个日历形式的日期输入框。
{
var myDate=new Date();

this.year=myDate.getFullYear(); //定义year属性,年份,默认值为当前系统年份。
this.month=myDate.getMonth()+1; //定义month属性,月份,默认值为当前系统月份。
this.date=myDate.getDate(); //定义date属性,日,默认值为当前系统的日。
this.inputName=''; //定义inputName属性,即输入框的name,默认值为空。注意:在同一页中出现多个日期输入框,不能有重复的name!
this.display=display; //定义display方法,用来显示日期输入框。
}

function display() //定义dateSelector的display方法,它将实现一个日历形式的日期选择框。
{
var week=new Array('日','一','二','三','四','五','六');

document.write("");
document.write(" .ds_font td,span { font: normal 12px 宋体; color: #000000; }");
document.write(" .ds_border { border: 1px solid #000000; cursor: hand; background-color: #DDDDDD }");
document.write(" .ds_border2 { border: 1px solid #000000; cursor: hand; background-color: #DDDDDD }");
document.write("");

var M=new String(this.month);
var d=new String(this.date);

if(M.length==1&&d.length==1){
document.write("");}
else if(M.length==1&&d.length==2){
document.write("");}
else if(M.length==2&&d.length==1){
document.write("");}
else if(M.length==2&&d.length==2){
document.write("");}


document.write("日期");

document.write("");
document.write(" ");
document.write(" ");
document.write(" ");
document.write(" <<");
document.write(" <");
document.write(" "+this.year+"年"+this.month+"月");
document.write(" >");
document.write(" >>");
document.write(" ");
document.write(" ");

document.write(" ");
document.write(" ");
for(i=0;i<7;i++)
document.write(" "+week[i]+"");
document.write(" ");
document.write(" ");

document.write(" ");
for(i=0;i<6;i++)
{
document.write(" ");
for(j=0;j<7;j++)
document.write(" ");
document.write(" ");
}
document.write(" ");

document.write(" 【关闭】");
document.write(" ");
document.write("");

dateShow(document.all("DS_"+this.inputName).nextSibling.nextSibling.childNodes[0].childNodes[2],this.year,this.month)
}

function subYear(obj) //减小年份
{
var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
myObj[0].innerHTML=eval(myObj[0].innerHTML)-1;
dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))
}

function addYear(obj) //增加年份
{
var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
myObj[0].innerHTML=eval(myObj[0].innerHTML)+1;
dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))
}

function subMonth(obj) //减小月份
{
var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
var month=eval(myObj[2].innerHTML)-1;
if(month==0)
{
month=12;
subYear(obj);
}
myObj[2].innerHTML=month;
dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))
}

function addMonth(obj) //增加月份
{
var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
var month=eval(myObj[2].innerHTML)+1;
if(month==13)
{
month=1;
addYear(obj);
}
myObj[2].innerHTML=month;
dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))
}

function dateShow(obj,year,month) //显示各月份的日
{
var myDate=new Date(year,month-1,1);
var today=new Date();
var day=myDate.getDay();
var selectDate=obj.parentNode.parentNode.previousSibling.previousSibling.value.split('-');
var length;
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
length=31;
break;
case 4:
case 6:
case 9:
case 11:
length=30;
break;
case 2:
if((year%4==0)&&(year%100!=0)||(year%400==0))
length=29;
else
length=28;
}
for(i=0;i<obj.cells.length;i++)
{
obj.cells[i].innerHTML='';
obj.cells[i].style.color='';
obj.cells[i].className='';
}
for(i=0;i<length;i++)
{
obj.cells[i+day].innerHTML=(i+1);
if(year==today.getFullYear()&&(month-1)==today.getMonth()&&(i+1)==today.getDate())
obj.cells[i+day].style.color='red';
if(year==eval(selectDate[0])&&month==eval(selectDate[1])&&(i+1)==eval(selectDate[2]))
obj.cells[i+day].className='ds_border2';
}
}

function getValue(obj,inputObj) //把选择的日期传给输入框
{
var myObj=inputObj.nextSibling.nextSibling.childNodes[0].childNodes[0].cells[2].childNodes;
if(obj.innerHTML)
if(obj.innerHTML.length==1&&myObj[2].innerHTML.length==1)
inputObj.value=myObj[0].innerHTML+"-0"+myObj[2].innerHTML+"-0"+obj.innerHTML;
else if(obj.innerHTML.length==1&&myObj[2].innerHTML.length==2)
inputObj.value=myObj[0].innerHTML+"-"+myObj[2].innerHTML+"-0"+obj.innerHTML;
else if(obj.innerHTML.length==2&&myObj[2].innerHTML.length==1)
inputObj.value=myObj[0].innerHTML+"-0"+myObj[2].innerHTML+"-"+obj.innerHTML;
else if(obj.innerHTML.length==2&&myObj[2].innerHTML.length==2)
inputObj.value=myObj[0].innerHTML+"-"+myObj[2].innerHTML+"-"+obj.innerHTML;
inputObj.nextSibling.nextSibling.style.display='none';
for(i=0;i<obj.parentNode.parentNode.parentNode.cells.length;i++)
obj.parentNode.parentNode.parentNode.cells[i].className='';
obj.className='ds_border2'
}

function dsMove(obj) //实现层的拖移
{
if(event.button==1)
{
var X=obj.clientLeft;
var Y=obj.clientTop;
obj.style.pixelLeft=X+(event.x-DS_x);
obj.style.pixelTop=Y+(event.y-DS_y);
}
}
/***调用代码**

var myDate=new dateSelector();
myDate.year=1900;//morenqiri

myDate.inputName='date'; //
myDate.display();

*/

#include"stdio.h"
#include"stdlib.h"
main( )
{
int Year,Month; //年、月
int FirstDay_Year,FirstDay_Month; //某年的第一天是星期几,某年某月的第一天是星期几(范围是0~6,其中0代表星期日)
int IsLeapYear; //是否为闰年,0表示不是闰年,1表示是闰年
int i,d,y; //临时变量
char YN; //Yes No,程序是否要继续

int Days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//Days[1~12]存储每个月有多少天,其中二月的天数是可变的(闰年29天,平年28天),这里初始化为28天

printf(" C语言简单万年历
"); //打印标题

XunHuan: //循环标号(可以通过goto跳转到这里)

printf("请输入年份: "); //提示输入年份(0~9999)
scanf("%d",&Year); //把输入的年份赋值给变量Year

printf("请输入月份: "); //提示输入月份(1~12)
scanf("%d",&Month); //把输入的月份赋值给变量Month

y=Year;
FirstDay_Year=5*(y/4)+(y%4)-(y/100)+(y/400);//蔡勒公式(计算某年的第一天是星期几)
IsLeapYear=(y%4==4&&y%100!=100||y%400==0)?1:0;
//判断是否为闰年
Days[2]=(IsLeapYear==1)?29:28; //闰年二月29天,非闰年二月28天
for(i=1,d=0;i<Month;i++)
d=d+Days[i];
FirstDay_Month=(d+FirstDay_Year)%7; //当月的第一天是星期几(0代表星期日)

printf("
****************************************************
");
printf("公元 %d 年 %2d 月",Year,Month); //打印年月
printf("
****************************************************
");

printf(" 星期日 星期一 星期二 星期三 星期四 星期五 星期六
");
//打印星期表头
for(i=0;i<FirstDay_Month;i++)
printf("%7c",' '); //当某月的第一天不是星期日时打印空格占位

for(d=1;d<=Days[Month];d++) //循环,从每个月的第一天开始打印
{
printf("%7d",d);
if(((d+FirstDay_Month)%7)==0 && d<Days[Month])
printf("
"); //当输出了星期六而且还未输出所有天数时,换行
}
printf("
****************************************************
");
printf("
");
printf("是否继续(Y/N)?
");
scanf("%c",&YN);
scanf("%c",&YN);
if(YN=='Y' || YN=='y')
goto XunHuan;
}

#include <stdio.h>
int day,year,month;
int isLeap()
{int isleap;
if(((year%4==0)&&!(year%100==0))||(year%400==0))isleap=1;
else isleap=0;
return isleap;}
int lastdayofmonth()
{int lastday,isleap;
switch (month)
{case 1: case 3: case 5: case 7:case 8: case 10: case 12: lastday=31;break;
case 4: case 6: case 9: case 11: lastday=30;break;
case 2: {isleap=isLeap();
if (isleap==1) lastday=29;
else lastday=28;}}
return lastday;}
int ValidDate()
{int valid;
int yearOK,monthOK,dayOK;
if ((year>1811)&&(year<=2012)) yearOK=1;
else yearOK=0;
if ((month>0)&&(month<=12)) monthOK=1;
else monthOK=0;
if ((day>0)&&(day<=lastdayofmonth())) dayOK=1;
else dayOK=0;
if(yearOK && monthOK && dayOK) valid=1;
else valid=0;
return valid;}
int getday(){printf("Enter a month/a day/a year");scanf("%d %d %d",&month,&day,&year);
return ValidDate();}
void incrementdate()
{if (day<lastdayofmonth()) day+=1;
else
{day=1;
if (month==12)
{month=1;year+=1;}
else month+=1;}}
void print()
if (ValidDate())printf("nextday is %d/%d/%d",month,day,year);elseprintf("Date error");}
void main(){getday();incrementdate();print();}

补充一下,又发现一个问题。输入之后虽然你做了输入检查,但是现在的写法,这个检查起不到任何作用。可以把main里的getday();改写成if(getday()==0){printf("Date error");return;}意思是如果输入的日期不正常的话打出出错信息并结束程序
主要功能包括
1.查询某年某月每一天对应星期几
2.可以查询某年某月的上个月或是下个月的日历情报
3.查询某年某月某日是这一年的第几天,并查询改天是星期几
4.判断该年是闰年还是平年,判断这一年的生肖
#include <stdio.h>
#include <conio.h>
#include <dos.h>
void rili(int,int);
int runniansub(int);
int week(int,int,int);
int monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{ struct date d;
getdate(&d);
printf("今天是:%d年 %d月 %d日\n",d.da_year,d.da_mon,d.da_day);
rili(d.da_year,d.da_mon-1);
system("pause");
return 0; }
void rili(int year,int month)
{ int d,w,i,s,c,p;
char x;
while(month>11) {
month-=12;
year++; }
while(month<0) { year--;
month+=12; }
if(runniansub(year)) monthday[1]=29;
printf("%d年%d月\n",year,month+1);
printf("S M T W T F S\n");
s=week(year,month+1,1);
for(i=0; i<3*s; i++ ) printf(" ");
c=s;
for(d=1;d<=monthday[month];d++) {
if(c>6) {
printf("\n");
c=0; }
c++;
printf("%d",d);
printf("%s",(d<10)?" ":" "); }
printf("\n");
printf("下月N,上月P,退出Q");
x=getch();
printf("%c\n",x);
if(x=='N' || x=='n') { rili(year,month+1); }
else if(x=='P' || x=='p') { rili(year,month-1); }
else { printf("感谢使用!88\n"); return;} }
int runniansub(int year)
{ return ((year%4==0 && year%100!=0) || (year%4==0 && year%400==0)); }
int week(int y,int m,int d)
{ if((m==1)||(m==2)) {
m+=12;
y--; }
return ((d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)+1)%7;

#include <stdio.h>
int IsLeapYear(int); /*定义子函数*/
main()
{int i,day,year,temp,temp_i; /*定义变量*/
long int Year_days=0;
int Year_Start=1;
int Per_Year_Days;
int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31,29};/*定义
月份*/
printf("We know that 2000.01.01 is saturday!\n");
printf("Please enter the year and month:"); /*提示信息*/
while(1)
{scanf("%d %d",&year,&temp);
if(getchar()=='q')
exit(0);
while(Year_Start < year)
{ if(IsLeapYear(Year_Start)) /*调用IsLeapYear函数判断是否为
闰年*/
Per_Year_Days=366; /*闰年一年366天*/
else
Per_Year_Days=365; /*平年一年365天*/
Year_days=Year_days + Per_Year_Days;
Year_Start++;
} /*输出每个月的日历*/
// for(temp=1;temp<=12;temp++)
{switch(temp)
{ case 1: printf("January (%d) \n",year);break;
case 2: printf("February (%d) \n",year); break;
case 3: printf("March (%d) \n",year); break;
case 4: printf("April (%d) \n",year); break;
case 5: printf("May (%d) \n",year); break;
case 6: printf("June (%d) \n",year);break;
case 7: printf("July (%d) \n",year);break;
case 8: printf("Auguest (%d) \n",year); break;
case 9: printf("September (%d) \n",year);break;
case 10:printf("October (%d) \n",year);break;
case 11:printf("Novermber (%d) \n",year); break;
case 12:printf("December (%d) \n",year); break;
default:printf("error\n");
}
i=Year_days%7;
printf("Mon Tue Wed Thu Fri Sat Sun\n"); /*星期提示信息*/
if(i!=0)
for(temp_i=0;temp_i<i;temp_i++)
printf(" ");
day=1;
if(IsLeapYear(year)&&temp==2)
while(day<=month_day[12])
{if(day>1)
if(Year_days%7==0)
printf("\n");
if(day>=10)
printf("%d ",day);
else
printf("%d ",day);
Year_days++;
day++;}
else
while(day<=month_day[temp-1])
{ if(day>1)
if(Year_days%7==0)
printf("\n");
if(day>=10)
printf("%d ",day);
else
printf("%d ",day);
Year_days++;
day++; } /*依次输入日期*/
printf("\n") ;}}}
int IsLeapYear(int year) /*判断是否是闰年*/
{ if((year%4==0)&&(year%100!=0)||(year%400==0))
return 1;
else
return 0;}}

#include <stdio.h>
int leap (int year)
{if(year%4==0&&year%100!=0||year%400==0) //判断是否是闰年
return 1;
else return 0; }
int days_month (int month,int year) //判断大月和小月
{ if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) //找出大月
return 31;
if(month==4||month==6||month==9||month==11) //找出小月
return 30;
if(month==2&&leap(year)==1) return 29; //判断二月是29天还是29天
else return 28; }
int firstday(int month,int year)
{int w;
w=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1; //判断每个月开始的第一天是星期几
return w; }
main()
{int i,j=1,k=1,a,b,month,year;
printf("\n input month and year:\n");
scanf("%d%d",&month,&year); //输入月和年
b=days_month(month,year);
a=firstday (month,year);
printf(" Sun Mon Tue Wed Thu Fri Sat \n"); //输出对应当月的日历
if(a==7)
{for(i=1;i<=b;i++)
{printf("%4d",i);
if(i%7==0)
{printf("\n"); } } }
if(a!=7)
{while (j<=4*a)
{printf(" ");
j++; }
for(i=1;i<=b;i++)
{printf("%4d",i);
if(i==7*k-a)
{printf("\n");
k++; } } }
printf("\n"); }

参考http://blog.163.com/paradise300@126/blog/static/69940666201322622926503/

工程是用VS2008编写的,可以在VC6.0下新建个工程,然后复制进去,编译一下就可以了。



去程序员网站或者CSDN下载一个就行了,CSDN需要注册账号,程序员网站需要注册完上传跟别人不重的文件获取下载文件的积分才行。
没办法就这么麻烦,要好东西就得费点劲儿!


日喀则市13084565719: 求万年历VC6.0 源代码.高手请指教
鬱芳头力: #include <stdio.h> #include <conio.h> typedef enum { sun, mon, tue, wed, thr, fri, sat } Week; int main() { int check_year(int *); int check_day(int * , int *); Week week(int *); int year , temp_year; FILE * fp; if((fp=fopen("CAL.txt","a+"))==NULL) { ...

日喀则市13084565719: 求能在c++6.0编译器下运行的用c语言编写的万年历程序 及详细注释 -
鬱芳头力: 何必那么麻烦,打开vc,选择工程MFC.exe,然后选择第三个普通对话框,再选择下面完成,然后进入对话框页面,旁边有控件列表,然后把日历控件拉进去就好,更多操作可以定义它的类向导然后使用它的类函数编写程序最后完成

日喀则市13084565719: 求,编写一个日历的程序,用VC6.0...另外,要用大一的水平编写,再另外,必须原创,高分悬赏.
鬱芳头力: #include "stdio.h"void main(){ int a,b,c,d,e,f,i,j,k,n,m,year;printf("input the year:\n");scanf("%d",&year); //输入数据的初始化; b=year; c=year%4; d=year/4; e=d*1461+c*365; f=e%7; j=f; //初始化Year年的第一天的星期; m=j;printf("***...

日喀则市13084565719: 求VC++6.0下的万年历程序 -
鬱芳头力: #include /* 呼叫时须设定 Souce 的值, 若为 0 则为西历转农历, 否则为农历转西历. 然后视输入为西历或农历来设定西历或农历的年月日. 转换后的年月日会填入结构中(农历或西历 ), 以及该日为星期几, 天干地支. 若函式的返回值为 0 表示...

日喀则市13084565719: 菜鸟求助怎样用vc++6.0编写万年历程序 -
鬱芳头力: 1、应在主函数中对函数sub进行初始化 在{ 下面增加代码:int sub(int x); 2、函数int sub(x)应为int sub(int x) 3、函数sub里面又加了int x;x重定义错误,去掉int x;这行代码 修改后的代码为: #include<stdio.h> void main() { int sub(int x); int x,m; ...

日喀则市13084565719: vc6.0高手帮忙啊~ -
鬱芳头力: //调试通过#define LENGTH 1024//一段中最大的字符数#include#include int charlength(char *ch,int length)//得到段的长度{ int k; f...

日喀则市13084565719: 求VC6.0计算器界面C语言程序 急 非常谢谢!! -
鬱芳头力: 这是一个简单计算器程序:1)创建一个对话框的应用2)向对话框中添加一个编辑框控件和十六个按钮3)在头文件声明: double m_Num; //记录编辑框中的数...

日喀则市13084565719: 求一个简单VC++程序 -
鬱芳头力: N年前写的,就是VC6.0写的C++语法的程序,不是MFC的哦,其中用到头文件那是难免的.不过也就三个,一个是标准输入输出要用到,一个是读写文件用到,一个是控制输出格式用到.其实我这份代码原来是...

日喀则市13084565719: 用VC6.0编两个程序 一个是日历输入,例如20111231,分解出年月日,一个是字符串倒序输出 -
鬱芳头力: 第一个没太看懂,什么叫分解出年月日,年月日是按照规定格式输入的么,还是任意格式输入的 第二个,简单#include #include #define MAX 100 void invert(char *str,int n) { char t,*p=str+n-1; while(str { t=*str; *str=*p; *p=t; ++str; --p; } } int main(void) { char str[MAX]; gets(str); invert(str,strlen(str)); puts(str); return 0; }

日喀则市13084565719: 请设计一个C语言程序(VC6.0)
鬱芳头力: #include <stdio.h>void main(){ int y,m,d; int x[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};printf("输入年 月 日,用空格分开:"); scanf("%d%d%d",&y,&m,&d); if(y%4==0&&y%100!=0||y%400==0)x[2]=29;if(m<1||m>12) {printf("月份错...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网