农历公历转换.docx

上传人:b****6 文档编号:6708755 上传时间:2023-01-09 格式:DOCX 页数:45 大小:225.14KB
下载 相关 举报
农历公历转换.docx_第1页
第1页 / 共45页
农历公历转换.docx_第2页
第2页 / 共45页
农历公历转换.docx_第3页
第3页 / 共45页
农历公历转换.docx_第4页
第4页 / 共45页
农历公历转换.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

农历公历转换.docx

《农历公历转换.docx》由会员分享,可在线阅读,更多相关《农历公历转换.docx(45页珍藏版)》请在冰豆网上搜索。

农历公历转换.docx

农历公历转换

目录

摘要

关键字

前言

第一章VB语言概述

1.1、VB简介

1.2、VB语言的基本特点及VB应用程序的基本持点

1.3、为何我选择VB作为开发语言

1.4、VB6.0应用的基本开发方法

第二章用VB开发多功能日历程序

2.1、本程序运行界面简介

2.2、本程序部分控件的设置

2.3、主程序部分代码

第三章毕业设计总结

第四章主要参考文献

附录

摘要:

在日常生活和工作中经常有人用到农历和公历的查询问题。

因此,我借这次毕业设计之机,在辅导老师的指导下,编写了一个可以在VB6下正常运行的日历、计算器多功能应用程序,编程的思路是:

先把公、农历的数据用数组查询设置好,再通过算法转换成具体应用。

程序应用了不规则窗体技术,使得窗体比较美观。

单击属相标志可以退出程序。

单击时钟数字将返回到今天。

单击查询控制面板开关将向下拉出查询控制面板。

.

关键字:

农历公历转换及计算器、查询控制面板、VB6。

 

多功能电子日历的开发

前言

电脑已经成为挂在我们嘴角的一句口头禅,它已经深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。

Windows系统的推出使电脑从高雅的学术殿堂走入了寻常百姓家,各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。

然而,虽然现在世界上已经充满了多如牛毛的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。

以前开发Windows下软件是专业人员的工作,需要掌握许多专业知识和经过特殊的培训才能胜任。

现在不同了,即使你没有接受过严格的程序设计训练,使用VisualBasic也一样能够开发出功能强大、适合自己特殊需求的应用程序了。

VisualBasic继承了Basic语言易学易用的特点,特别适合于初学者学习Windows系统编程。

我作为一名中央电大的学生,对从事计算机操作和编程工作有着特殊的爱好,在工作和学习之余,我时常钻研专业课基础理论,经常用VB搞一些小程序,在工作中经常有人问到农历和公历的查询问题。

网页上有一些这方面的介绍,但是关于VB方面的编程资料却比较少。

因此,借这次毕业设计之机,我编写了一个可以在VB6下正常运行的日历、计算器多功能应用程序,欢迎各位老师提出批评改进意见。

第一章VB语言概述

一、VB简介

VB是微软公司出品的一个快速可视化程序开发工具软件,借助微软在操作系统和办公软件的垄断地位,VB在短短的几年内风靡全球。

VB是极有和功能强大的软件,主要表现在:

所见即所得的界面设计,基于对象的设计方法,极短的软件开发周期,较易维护的生成代码。

美国微软公司在1991年推出VB1.0至今已经经历了6个版本,VB6.0运行在win9x或winme,win2000,winxp,windowsNT等操作系统下,是一个32位的应用程序开发工具。

二、VB语言的基本特点及VB应用程序的基本持点

VB程序语言具有许多优秀的特性,用其设计应用程序时有两个基本特点:

可视化设计和事件驱动编程.

1、可视化设计

同其他的一些可视化程序开发工具一样,VB具有可视化设计的特点,微软的Word在刚刚进入市场时,同WPS竞争的一个重要的功能砝码就是"所见即所得"的字处理功能,VB在设计应用程序界面时也可以说是"所见即所得".在设计时,头脑中所想象的应用程序界面,完全可以通过键盘鼠标以及徒手画出来,而不是编制大量的代码然后再编译生成,如果需要修改,也是利用键盘鼠标和手画,而底层的一些程序代码由VB自动生成或修改。

VB为用户提供大量的界面元素(在VB中称为控件对象),这些控件对象对于熟悉Windows应用程序的用户而言是一点也不陌生,如"窗体"、"菜单"、"命令按钮"、"工具按钮"、"检查框"等等,用户只需要利用鼠标、键盘把这些控件对象拖动到适当的位置,设置它们的大小、形状、属性等,就可以设计出所需的应用程序界面。

2事件驱动编程

Windows操作系统出现以来,图形化的用户界面和多任务多进程的应用程序要求程序设计不能是单一性的,在使用VB设计应用程序时,必须首先确定应用程序如何同用户进行交互.例如发生鼠标单击、键盘输入等事件时,由用户编写的代码控制这些事件的响应,这就是所谓的事件驱动编程。

前面已经谈到,在VB中把窗体以及"菜单"、"按钮"等控件称为对象,如果设计出了应用程序,那么与应用程序的用户直接进行交互的就是这些对象组成的图形界面,也称为用户接口或用户界面,在设计应用程序时就必须考虑到用户如何与程序进行交户.更进一步,甚至程序和程序之间也会有通讯和交户,基本上用户是通过鼠标、键盘与应用程序进行交互的,这时那些对象就必须对鼠标和键盘操作所引发的事件做出响应.响应就是指执行一段应用程序,它不沿预定的路径执行,而是在响应不同事件时执行不同的代码.因此,应用程序代码的路径在每次响应而执行时可能都是不形同的。

三、为何选择VB作为开发语言

除了VB之外,当前能够编制Windows应用程序的可视化编程工具还有很多,所针对的编程领域也各有侧重,就微软系列的可视化开发工具而言,就有VB,VisualC++,VisualJ++,VisualFoxpro等,其中VisualFoxpro是针对数据库编程的开发工具;VisualC++是为专业程序设计员提供的开发工具,变量声明和定义严密,功能强大灵活,必须经过相当的努力才能掌握;而VB不支持虚类、多态性和类的继承,相对而言VB简单易学,变量定义不太严密,对于非专业程序员而言功能足够强大,同VisualC++一样也支持网络编程和数据库编程。

除了微软之外,其他公司也在为Windows操作系统平台制作应用程序开发工具,例如前Borland的公司出品的Delphi,C++Bulider,J++Bulider等,其他一些公司出品的针对数据库编程的PowerBulider,PowerDesigner等,不可否认,这些产品相当出色,如果能够熟练掌握将是编程者能力的体现,但是必须承认,对Windows操作系统最熟悉的还是微软,而且微软本身Windows操作系统的源代码采取不公开的策略,使得其他公司出品的产品在实现相同功能时多少都要走些弯路,用户在使用这些产品设计应用程序时,程序的效率将会受到影响。

在选择所需要的应用程序开发工具时,不但要考虑开发工具的功能是否强大,还要考虑所花费的时间和效果,单纯地追求功能的强大,也许会事倍功半。

中央电大陈明主编的《VisualBasic程序设计》是计算机应用专业采用的一本难得的教材,使我受益匪浅。

通过这门课程的学习,我已能用VB编写简单的程序,为了搞好这次毕业设计,我决定使用VB作为编程语言。

四、VB6.0应用的基本开发方法

1、交互式开发

传统的应用程序开发过程可以分为三个明显的步骤:

编码、编译和测试。

但是VB与传统的语言不同,它使用交互式方法开发应用程序,使三个步骤之间不再有明显的界限。

在大多数语言里,如果编写代码时发生了错误,则在开始编译应用程序时该错误就会被编译器捕获。

此时必须查找并改正该错误,然后再次进行编译,对每一个发现的错误都要重复这样的过程。

VB在编程者输入代码时便进行解释,即时捕获并突出显示大多数语法或拼写错误。

看起来就像一位专家在监视代码的输入。

除即时捕获错误以外,VB也在输入代码时部分地编译该代码。

当准备运行和测试应用程序时,只需极短时间即可完成编译。

如果编译器发现了错误、则将错误突出显示于代码中。

这时可以更正错误并继续编译、而不需从头开始。

由于VB的交互特性,因此在开发应用程序时,系统频繁地运行着应用程序。

通过这种方式,代码运行的效果可以在开发时进行测试,而不必等到编译完成以后。

第二章用VB开发多功能日历程序

一、本程序运行界面简介

编程的主导思想是:

先把公、农历的数据用数组查询设置好,再通过算法转换成具体应用。

程序的运行界面见图1,

 

图1

程序应用了不规则窗体技术,使得窗体比较美观。

单击属相标志可以退出程序。

单击时钟数字将返回到今天。

单击计算器面板开关将向下拉出计算器面板,单击查询控制面板开关将向下拉出查询控制面板,见图2。

图2

二、本程序部分控件的设置

 

 

三、主程序部分代码:

OptionExplicit

'***************************************

'拖动无标题窗体

ConstHTCAPTION=2

ConstWM_NCLBUTTONDOWN=&HA1

PrivateDeclareFunctionReleaseCaptureLib"user32"()AsLong

PrivateDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsLong)AsLong

'=============================================================================

PrivateDeclareFunctionGetObjectAPILib"gdi32"Alias"GetObjectA"(ByValhObjectAsLong,ByValnCountAsLong,lpObjectAsAny)AsLong

PrivateDeclareFunctionDeleteObjectLib"gdi32"(ByValhObjectAsLong)AsLong

PrivateDeclareFunctionSetWindowRgnLib"user32"(ByValhwndAsLong,ByValhRgnAsLong,ByValbRedrawAsBoolean)AsLong

PrivateDeclareFunctionCreateRectRgnLib"gdi32"(ByValX1AsLong,ByValY1AsLong,ByValX2AsLong,ByValY2AsLong)AsLong

PrivateDeclareFunctionCombineRgnLib"gdi32"(ByValhDestRgnAsLong,ByValhSrcRgn1AsLong,ByValhSrcRgn2AsLong,ByValnCombineModeAsLong)AsLong

PrivateDeclareFunctionGetBitmapBitsLib"gdi32"(ByValhBitmapAsLong,ByValdwCountAsLong,lpBitsAsAny)AsLong

PrivateTypeBITMAP

bmTypeAsLong

bmWidthAsLong

bmHeightAsLong

bmWidthBytesAsLong

bmPlanesAsInteger

bmBitsPixelAsInteger

bmBitsAsLong

EndType

PrivateConstRGN_OR=2

DimbmByte()AsByte

'***************************************

'滚动字幕

PrivateDeclareFunctionDrawTextLib"user32"Alias"DrawTextA"(ByValhdcAsLong,ByVallpStrAsString,ByValnCountAsLong,lpRectAsRECT,ByValwFormatAsLong)AsLong

PrivateDeclareFunctionGetTickCountLib"kernel32"()AsLong

ConstDT_BOTTOMAsLong=&H8

ConstDT_CALCRECTAsLong=&H400

ConstDT_CENTERAsLong=&H1

ConstDT_EXPANDTABSAsLong=&H40

ConstDT_EXTERNALLEADINGAsLong=&H200

ConstDT_LEFTAsLong=&H0

ConstDT_NOCLIPAsLong=&H100

ConstDT_NOPREFIXAsLong=&H800

ConstDT_RIGHTAsLong=&H2

ConstDT_SINGLELINEAsLong=&H20

ConstDT_TABSTOPAsLong=&H80

ConstDT_TOPAsLong=&H0

ConstDT_VCENTERAsLong=&H4

ConstDT_WORDBREAKAsLong=&H10

PrivateTypeRECT

LeftAsLong

TopAsLong

RightAsLong

BottomAsLong

EndType

ConstScrollTextAsString="1901-2049"&vbCrLf&_

"多功能电子日历"

'***********************************************

DimEndingFlagAsBoolean,jSAsInteger

DimeAsString

DimfAsString

DimgAsDouble

DimS_memAsDouble

DimopAsString

DimchkAsInteger

ConstPi=3.14159265358979

PrivateConstSWP_NOMOVE=2

PrivateConstSWP_NOSIZE=1

PrivateConstFLAGS=SWP_NOMOVEOrSWP_NOSIZE

PrivateConstHWND_TOPMOST=-1

PrivateConstHWND_NOTOPMOST=-2

DimflAgeAsBoolean,color_indexAsInteger,tiAoAsBoolean,jiSuanAsBoolean

Dims_mem_BAsBoolean,tipAsInteger,ziShiAsString

'**************************************************

'数字按下、松开

PrivateSubcmdNum_MouseDown(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)

Show_bPicture5,P8,cmdNum(Index)

EndSub

PrivateSubcmdNum_MouseUp(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)

Show_bPicture5,P9,cmdNum(Index)

EndSub

'**************************************************

'角度、弧度

PrivateSubcmdOp_1_Click(IndexAsInteger)

MPl.Play

SelectCaseIndex

Case0

Ifg=1Then

Ifop=""Then

e=Str((Val(e)*180/Pi))

txtDisp.Text=e

Else

f=Str((Val(e)*180/Pi))

txtDisp.Text=f

EndIf

chk=1

g=Pi/180

EndIf

ShowNumARGPt,wPw1(3),19

Case1

Ifg<>1Then

Ifop=""Then

e=Str((Val(e)*Pi/180))

txtDisp.Text=e

Else

f=Str((Val(e)*Pi/180))

txtDisp.Text=f

EndIf

chk=1

g=1

EndIf

ShowNumARGPt,wPw1(3),20

Case2

'g=1

ShowNumARGPt,wPw1(3),21

EndSelect

EndSub

PrivateSubcmdOp_1_MouseUp(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)

Show_bPicture5,P9,cmdOp_1(Index)

EndSub

PrivateSubcmdOp_1_MouseDown(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)

Show_bPicture5,P8,cmdOp_1(Index)

EndSub

'**************************************************

'单一功能键按下、松开

PrivateSubcmdops_MouseDown(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)

Show_bPicture5,P8,cmdOps(Index)

EndSub

PrivateSubcmdops_MouseUp(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)

Show_bPicture5,P9,cmdOps(Index)

EndSub

'**************************************************

'单一功能键按下、松开

PrivateSubcmdOps_Click(IndexAsInteger)

DimsumAsDouble,iAsInteger

OnErrorGoToeh1

MPl.Play

SelectCaseIndex

Case0

e=Str(Sqr(Val(e)))

ShowNumFunPt,wPw1(3),10

Ji_suan

Case1

Ife<>0Then

e=-Val(txtDisp)

Else

e=0

EndIf

Ji_suan

Case2

e=Str(Sin(Val(e)*g))

ShowNumFunPt,wPw1(3),Index-1

Ji_suan

Case3

e=Str(Cos(Val(e)*g))

ShowNumFunPt,wPw1(3),Index-1

Ji_suan

Case4

e=Str(Tan(Val(e)*g))

ShowNumFunPt,wPw1(3),Index-1

Ji_suan

Case5

e=Str(Atn(Val(e)))

ShowNumFunPt,wPw1(3),Index-1

Ji_suan

Case6

e=Str(1/Sin(Val(e)*g))

ShowNumFunPt,wPw1(3),Index-1

Ji_suan

Case7

e=Str(1/Cos(Val(e)*g))

ShowNumFunPt,wPw1(3),Index-1

Ji_suan

Case8

e=Str(Exp(Val(e)))

ShowNumFunPt,wPw1(3),Index-1

Ji_suan

Case9

e=Str(Log(Val(e)))

ShowNumFunPt,wPw1(3),Index-1

Ji_suan

Case10

Randomize

Ifop=""Then

e=Str(9999999999#*Rnd)

txtDisp.Text=e

f=""

Else

f=Str(99999999*Rnd)

txtDisp.Text=f

EndIf

ShowNumFunPt,wPw1(3),Index-1

Case11

e=Str(1/Val(e))

Ji_suan

***第11-23种情况略****

Case24

Ifs_mem_B=FalseThen

Ifop=""Then

e=Str(S_mem)

txtDisp.Text=e

f=""

Else

f=Str(S_mem)

txtDisp.Text=f

EndIf

s_mem_B=True

Else

S_mem=0

s_mem_B=False

EndIf

EndSelect

ExitSub

eh1:

txtDisp.Text="-E-"

e=""

f=""

op=""

EndSub

PrivateSubcmdAC_Click()

MPl.Play

g=1

ShowNumFunPt,wPw2(3),1

ShowNumARGPt,wPw1(3),20

e=""

f=""

op=""

txtDisp.Text="0"

EndSub

PrivateSubcmdAC_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

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

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