多功能电子日历的开发毕业论文_第1页
多功能电子日历的开发毕业论文_第2页
多功能电子日历的开发毕业论文_第3页
多功能电子日历的开发毕业论文_第4页
多功能电子日历的开发毕业论文_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录摘 要关键字前 言第一章 vb语言概述11、vb简介 12、vb语言的基本特点及vb应用程序的基本持点13、为何我选择vb作为开发语言14、vb6.0应用的基本开发方法第二章 用vb开发多功能日历程序21、本程序运行界面简介22、本程序部分控件的设置23、主程序部分代码第三章 毕业设计总结第四章 主要参考文献附录 摘 要:在日常生活和工作中经常有人用到农历和公历的查询问题。因此,我借这次毕业设计之机,在辅导老师的指导下,编写了一个可以在vb6下正常运行的日历、计算器多功能应用程序,编程的思路是:先把公、农历的数据用数组查询设置好,再通过算法转换成具体应用。程序应用了不规则窗体技术,使得窗

2、体比较美观。单击属相标志可以退出程序。单击时钟数字将返回到今天。单击查询控制面板开关将向下拉出查询控制面板。.关键字:农历公历转换及计算器、查询控制面板、vb6。多功能电子日历的开发 前 言电脑已经成为挂在我们嘴角的一句口头禅,它已经深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。windows系统的推出使电脑从高雅的学术殿堂走入了寻常百姓家,各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。然而,虽然现在世界上已经充满了多如牛毛的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。

3、以前开发windows下软件是专业人员的工作,需要掌握许多专业知识和经过特殊的培训才能胜任。现在不同了,即使你没有接受过严格的程序设计训练,使用visual basic也一样能够开发出功能强大、适合自己特殊需求的应用程序了。visual basic继承了basic语言易学易用的特点,特别适合于初学者学习windows系统编程。我作为一名中央电大的学生,对从事计算机操作和编程工作有着特殊的爱好,在工作和学习之余,我时常钻研专业课基础理论,经常用vb搞一些小程序,在工作中经常有人问到农历和公历的查询问题。网页上有一些这方面的介绍,但是关于vb方面的编程资料却比较少。因此,借这次毕业设计之机,我编写

4、了一个可以在vb6下正常运行的日历、计算器多功能应用程序,欢迎各位老师提出批评改进意见。 第一章 vb语言概述 一、vb简介 vb是微软公司出品的一个快速可视化程序开发工具软件,借助微软在操作系统和办公软件的垄断地位,vb在短短的几年内风靡全球。vb是极有和功能强大的软件,主要表现在:所见即所得的界面设计,基于对象的设计方法,极短的软件开发周期,较易维护的生成代码。 美国微软公司在1991年推出vb1.0至今已经经历了6个版本,vb6.0运行在win9x或winme,win2000,winxp,windowsnt等操作系统下,是一个32位的应用程序开发工具。二、vb语言的基本特点及vb应用程序

5、的基本持点 vb程序语言具有许多优秀的特性,用其设计应用程序时有两个基本特点:可视化设计和事件驱动编程.1、可视化设计 同其他的一些可视化程序开发工具一样,vb具有可视化设计的特点,微软的word在刚刚进入市场时,同wps竞争的一个重要的功能砝码就是所见即所得的字处理功能,vb在设计应用程序界面时也可以说是所见即所得.在设计时,头脑中所想象的应用程序界面,完全可以通过键盘鼠标以及徒手画出来,而不是编制大量的代码然后再编译生成,如果需要修改,也是利用键盘鼠标和手画,而底层的一些程序代码由vb自动生成或修改。 vb为用户提供大量的界面元素(在vb中称为控件对象),这些控件对象对于熟悉windows

6、应用程序的用户而言是一点也不陌生,如窗体、菜单、命令按钮、工具按钮、检查框等等,用户只需要利用鼠标、键盘把这些控件对象拖动到适当的位置,设置它们的大小、形状、属性等,就可以设计出所需的应用程序界面。2事件驱动编程 windows操作系统出现以来,图形化的用户界面和多任务多进程的应用程序要求程序设计不能是单一性的,在使用vb设计应用程序时,必须首先确定应用程序如何同用户进行交互.例如发生鼠标单击、键盘输入等事件时,由用户编写的代码控制这些事件的响应,这就是所谓的事件驱动编程。 前面已经谈到,在vb中把窗体以及菜单、按钮等控件称为对象,如果设计出了应用程序,那么与应用程序的用户直接进行交互的就是这

7、些对象组成的图形界面,也称为用户接口或用户界面,在设计应用程序时就必须考虑到用户如何与程序进行交户.更进一步,甚至程序和程序之间也会有通讯和交户,基本上用户是通过鼠标、键盘与应用程序进行交互的,这时那些对象就必须对鼠标和键盘操作所引发的事件做出响应.响应就是指执行一段应用程序,它不沿预定的路径执行,而是在响应不同事件时执行不同的代码.因此,应用程序代码的路径在每次响应而执行时可能都是不形同的。 三、为何选择vb作为开发语言 除了vb之外,当前能够编制windows应用程序的可视化编程工具还有很多,所针对的编程领域也各有侧重,就微软系列的可视化开发工具而言,就有vb,visualc+,visua

8、lj+,visual foxpro等,其中visual foxpro是针对数据库编程的开发工具;visual c+是为专业程序设计员提供的开发工具,变量声明和定义严密,功能强大灵活,必须经过相当的努力才能掌握;而vb不支持虚类、多态性和类的继承,相对而言vb简单易学,变量定义不太严密,对于非专业程序员而言功能足够强大,同visual c+一样也支持网络编程和数据库编程。 除了微软之外,其他公司也在为windows操作系统平台制作应用程序开发工具,例如前borland的公司出品的delphi,c+bulider, j+bulider等,其他一些公司出品的针对数据库编程的powerbulider,

9、 powerdesigner等,不可否认,这些产品相当出色,如果能够熟练掌握将是编程者能力的体现,但是必须承认,对windows操作系统最熟悉的还是微软,而且微软本身windows操作系统的源代码采取不公开的策略,使得其他公司出品的产品在实现相同功能时多少都要走些弯路,用户在使用这些产品设计应用程序时,程序的效率将会受到影响。 在选择所需要的应用程序开发工具时,不但要考虑开发工具的功能是否强大,还要考虑所花费的时间和效果,单纯地追求功能的强大,也许会事倍功半。 中央电大陈明主编的visual basic程序设计是计算机应用专业采用的一本难得的教材,使我受益匪浅。通过这门课程的学习,我已能用vb

10、编写简单的程序,为了搞好这次毕业设计,我决定使用vb作为编程语言。 四、vb6.0应用的基本开发方法 1、交互式开发 传统的应用程序开发过程可以分为三个明显的步骤:编码、编译和测试。但是vb与传统的语言不同,它使用交互式方法开发应用程序,使三个步骤之间不再有明显的界限。 在大多数语言里,如果编写代码时发生了错误,则在开始编译应用程序时该错误就会被编译器捕获。此时必须查找并改正该错误,然后再次进行编译,对每一个发现的错误都要重复这样的过程。vb在编程者输入代码时便进行解释,即时捕获并突出显示大多数语法或拼写错误。看起来就像一位专家在监视代码的输入。 除即时捕获错误以外,vb也在输入代码时部分地编

11、译该代码。当准备运行和测试应用程序时,只需极短时间即可完成编译。如果编译器发现了错误、则将错误突出显示于代码中。这时可以更正错误并继续编译、而不需从头开始。 由于vb的交互特性,因此在开发应用程序时,系统频繁地运行着应用程序。通过这种方式,代码运行的效果可以在开发时进行测试,而不必等到编译完成以后。 第二章 用vb开发多功能日历程序 一、本程序运行界面简介编程的主导思想是:先把公、农历的数据用数组查询设置好,再通过算法转换成具体应用。程序的运行界面见图1,计算器面板开关查询控制面板开关属相标志,单击退出本程序 图1程序应用了不规则窗体技术,使得窗体比较美观。单击属相标志可以退出程序。单击时钟数

12、字将返回到今天。单击计算器面板开关将向下拉出计算器面板,单击查询控制面板开关将向下拉出查询控制面板,见图2。 图2二、本程序部分控件的设置gzpicture1n_y,下面两个为n_m,n_dg_y,下面两个为g_m,g_dc_clock该时钟是画出来的,还有l1,l2,l3 三个line控件pt : picturebox控件lable4cmdtpicture2picture5图中我们看到的一个个小按钮是用photoshop画出来的,实际上在每个按钮上面我都加上了透明的lable控件updown1text1:textbox控件三、主程序部分代码:option explicit*拖动无标题窗体co

13、nst htcaption = 2const wm_nclbuttondown = &ha1private declare function releasecapture lib user32 () as longprivate declare function sendmessage lib user32 alias sendmessagea (byval hwnd as long, byval wmsg as long, byval wparam as long, lparam as long) as long=private declare function getobjectapi l

14、ib gdi32 alias getobjecta (byval hobject as long, byval ncount as long, lpobject as any) as longprivate declare function deleteobject lib gdi32 (byval hobject as long) as longprivate declare function setwindowrgn lib user32 (byval hwnd as long, byval hrgn as long, byval bredraw as boolean) as longpr

15、ivate declare function createrectrgn lib gdi32 (byval x1 as long, byval y1 as long, byval x2 as long, byval y2 as long) as longprivate declare function combinergn lib gdi32 (byval hdestrgn as long, byval hsrcrgn1 as long, byval hsrcrgn2 as long, byval ncombinemode as long) as longprivate declare fun

16、ction getbitmapbits lib gdi32 (byval hbitmap as long, byval dwcount as long, lpbits as any) as longprivate type bitmap bmtype as long bmwidth as long bmheight as long bmwidthbytes as long bmplanes as integer bmbitspixel as integer bmbits as longend typeprivate const rgn_or = 2dim bmbyte() as byte*滚动

17、字幕private declare function drawtext lib user32 alias drawtexta (byval hdc as long, byval lpstr as string, byval ncount as long, lprect as rect, byval wformat as long) as longprivate declare function gettickcount lib kernel32 () as longconst dt_bottom as long = &h8const dt_calcrect as long = &h400con

18、st dt_center as long = &h1const dt_expandtabs as long = &h40const dt_externalleading as long = &h200const dt_left as long = &h0const dt_noclip as long = &h100const dt_noprefix as long = &h800const dt_right as long = &h2const dt_singleline as long = &h20const dt_tabstop as long = &h80const dt_top as

19、long = &h0const dt_vcenter as long = &h4const dt_wordbreak as long = &h10private type rect left as long top as long right as long bottom as longend typeconst scrolltext as string = 1901-2049 & vbcrlf & _ 多功能电子日历 *dim endingflag as boolean, js as integerdim e as stringdim f as stringdim g as doubledi

20、m s_mem as doubledim op as stringdim chk as integerconst pi = 3.14159265358979private const swp_nomove = 2private const swp_nosize = 1private const flags = swp_nomove or swp_nosizeprivate const hwnd_topmost = -1private const hwnd_notopmost = -2dim flage as boolean, color_index as integer, tiao as bo

21、olean, jisuan as booleandim s_mem_b as boolean, tip as integer, zishi as string* 数字按下、松开private sub cmdnum_mousedown(index as integer, button as integer, shift as integer, x as single, y as single) show_b picture5, p8, cmdnum(index)end subprivate sub cmdnum_mouseup(index as integer, button as intege

22、r, shift as integer, x as single, y as single) show_b picture5, p9, cmdnum(index)end sub* 角度、弧度private sub cmdop_1_click(index as integer) mpl.play select case index case 0 if g = 1 then if op = then e = str(val(e) * 180 / pi) txtdisp.text = e else f = str(val(e) * 180 / pi) txtdisp.text = f end if

23、chk = 1 g = pi / 180 end if shownumarg pt, wpw1(3), 19 case 1 if g 1 then if op = then e = str(val(e) * pi / 180) txtdisp.text = e else f = str(val(e) * pi / 180) txtdisp.text = f end if chk = 1 g = 1 end if shownumarg pt, wpw1(3), 20 case 2 g = 1 shownumarg pt, wpw1(3), 21 end selectend subprivate

24、sub cmdop_1_mouseup(index as integer, button as integer, shift as integer, x as single, y as single) show_b picture5, p9, cmdop_1(index)end subprivate sub cmdop_1_mousedown(index as integer, button as integer, shift as integer, x as single, y as single) show_b picture5, p8, cmdop_1(index)end sub* 单一

25、功能键按下、松开private sub cmdops_mousedown(index as integer, button as integer, shift as integer, x as single, y as single) show_b picture5, p8, cmdops(index)end subprivate sub cmdops_mouseup(index as integer, button as integer, shift as integer, x as single, y as single) show_b picture5, p9, cmdops(index

26、)end sub* 单一功能键按下、松开private sub cmdops_click(index as integer) dim sum as double, i as integeron error goto eh1 mpl.play select case index case 0 e = str(sqr(val(e) shownumfun pt, wpw1(3), 10 ji_suan case 1 if e 0 then e = -val(txtdisp) else e = 0 end if ji_suan case 2 e = str(sin(val(e) * g) shownu

27、mfun pt, wpw1(3), index - 1 ji_suan case 3 e = str(cos(val(e) * g) shownumfun pt, wpw1(3), index - 1 ji_suan case 4 e = str(tan(val(e) * g) shownumfun pt, wpw1(3), index - 1 ji_suan case 5 e = str(atn(val(e) shownumfun pt, wpw1(3), index - 1 ji_suan case 6 e = str(1 / sin(val(e) * g) shownumfun pt,

28、wpw1(3), index - 1 ji_suan case 7 e = str(1 / cos(val(e) * g) shownumfun pt, wpw1(3), index - 1 ji_suan case 8 e = str(exp(val(e) shownumfun pt, wpw1(3), index - 1 ji_suan case 9 e = str(log(val(e) shownumfun pt, wpw1(3), index - 1 ji_suan case 10 randomize if op = then e = str(9999999999# * rnd) tx

29、tdisp.text = e f = else f = str(99999999 * rnd) txtdisp.text = f end if shownumfun pt, wpw1(3), index - 1 case 11 e = str(1 / val(e) ji_suan * 第11-23种情况略* case 24 if s_mem_b = false then if op = then e = str(s_mem) txtdisp.text = e f = else f = str(s_mem) txtdisp.text = f end if s_mem_b = true else

30、s_mem = 0 s_mem_b = false end if end selectexit subeh1:txtdisp.text = -e-e = f = op = end subprivate sub cmdac_click() mpl.play g = 1 shownumfun pt, wpw2(3), 1 shownumarg pt, wpw1(3), 20 e = f = op = txtdisp.text = 0end subprivate sub cmdac_mousedown(button as integer, shift as integer, x as single,

31、 y as single) show_b picture5, p8, cmdacend subprivate sub cmdac_mouseup(button as integer, shift as integer, x as single, y as single) show_b picture5, p9, cmdacend subprivate sub cmdeq_click() mpl.play if op = then e = str(-(val(e) txtdisp.text = e else f = str(-(val(e) txtdisp.text = f end if chk

32、 = 1end subprivate sub cmdeq_mousedown(button as integer, shift as integer, x as single, y as single) show_b picture5, p8, cmdeqend subprivate sub cmdeq_mouseup(button as integer, shift as integer, x as single, y as single) show_b picture5, p9, cmdeqend subprivate sub cmdnum_click(index as integer)

33、on error goto eh2 mpl.play if chk = 1 then e = f = op = chk = 0 end if if op = then e = e & trim(str(index) txtdisp.text = e else f = f & trim(str(index) txtdisp.text = f end if exit subeh2: txtdisp.text = -e- e = f = op = end subprivate sub cmdop_mousedown(index as integer, button as integer, shift

34、 as integer, x as single, y as single) show_b picture5, p8, cmdop(index)end subprivate sub cmdop_mouseup(index as integer, button as integer, shift as integer, x as single, y as single) show_b picture5, p9, cmdop(index)end subprivate sub cmdop_click(index as integer) on error goto eh3 op_sub txtdisp

35、.text = e op = chk = 0 select case index case 0 op = + case 1 op = - case 2 op = * case 3 op = / case 4 op = end select exit subeh3: txtdisp.text = -e- e = f = op = end subprivate sub cmdpi_mousedown(button as integer, shift as integer, x as single, y as single) show_b picture5, p8, cmdpiend subpriv

36、ate sub cmdpi_mouseup(button as integer, shift as integer, x as single, y as single) show_b picture5, p9, cmdpiend subprivate sub cmdpi_click() mpl.play if op = then e = 3.141592654 txtdisp.text = e else f = 3.141592654 txtdisp.text = f end ifend subprivate sub cmdpm_mousedown(button as integer, shi

37、ft as integer, x as single, y as single) show_b picture5, p8, cmdpmend subprivate sub cmdpm_mouseup(button as integer, shift as integer, x as single, y as single) show_b picture5, p9, cmdpmend subprivate sub cmdpm_click() on error goto eh1 op_sub txtdisp.text = e op = chk = 1 exit subeh1: txtdisp.te

38、xt = -e- e = f = op = end subprivate sub cmdpt_mousedown(button as integer, shift as integer, x as single, y as single) show_b picture5, p8, cmdptend subprivate sub cmdpt_mouseup(button as integer, shift as integer, x as single, y as single) show_b picture5, p9, cmdptend subprivate sub cmdpt_click()

39、 mpl.playif op = then e = e & . txtdisp.text = eelse f = f & . txtdisp.text = fend ifend subprivate sub cmdt_click() 显示查询面板 if tiao then timer4.enabled = false timer3.enabled = true else timer4.enabled = true timer3.enabled = false end if label4.enabled = false picture4.visible = true picture5.visib

40、le = falseend subprivate sub label4_click() pt.visible = true cmdt.enabled = false picture5.visible = true picture4.visible = false if jisuan then timer6.enabled = true timer5.enabled = false timer1.enabled = true timer8.enabled = false else timer6.enabled = false timer5.enabled = true timer8.enable

41、d = true timer1.enabled = false end if picture5.setfocusend sub单击返回今天private sub c_clock_click() text1.text = year(date) text2.text = month(date) text3.text = day(date) txt_sub display (date)end subprivate sub form_activate() runmain picscrollend subprivate sub form_load()= dim t as single, rtn form

42、1.height = 2715 form1.width = 5400 rtn = setwindowpos(form1.hwnd, -1, 0, 0, 0, 0, flags) tip = 1 t = timer if me.picture 0 then call setautorgn(me) tiao = false jisuan = false- picture4.visible = false picture5.visible = false-计算器变量初始化 s_mem_b = false s_mem = 0 chk = 0 e = f = op = txtdisp.text = 0

43、g = 1 shownumfun pt, wpw2(3), 1 shownumarg pt, wpw1(3), 20- fhsec3 = 0 color_index = 1 js = 0 picscroll.forecolor = vbred picscroll.fontsize = 8 picture2.visible = false color1 = 1 flage = false shxing= text1.text = year(date) text2.text = month(date) text3.text = day(date) txt_sub display (date)end

44、 subprivate sub form_mousedown(button as integer, shift as integer, x as single, y as single) if button = 1 then dim returnval as long x = releasecapture() returnval = sendmessage(hwnd, wm_nclbuttondown, htcaption, 0) end ifend subprivate sub gz_click() endend subprivate sub picscroll_click() pictur

45、e2.visible = true runmain picture2end subprivate sub picture1_mousedown(button as integer, shift as integer, x as single, y as single) if button = 1 then dim returnval as long x = releasecapture() returnval = sendmessage(hwnd, wm_nclbuttondown, htcaption, 0) end ifend subprivate sub picture2_click()

46、 picture2.visible = false runmain picscrollend subprivate sub picture4_click() timer3.enabled = true timer4.enabled = falseend subprivate sub picture5_click() pt.visible = false timer6.enabled = true timer5.enabled = false timer1.enabled = true timer8.enabled = falseend subprivate sub picture5_keypress(keyascii as integer) select case keyascii case 13 cmdpm_click case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 cmdnum_click (keyascii - 48) case 46 cmdpt_click case 42 cmdop_click (2) case 43 cmdop_click (0) case 45 cmdop_click (1) case 47 cmdop_clic

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论