用Vb.net实现事务提醒

来源 :科技创新导报 | 被引量 : 0次 | 上传用户:bcrav4
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:对于大多数单位而言,每天需要完成的工作很多,时常会因漏办事务而对工作造成影响。已有的一些如闹钟、备忘录等工具,很难满足实际工作的需要。设计一个功能较为完善的事务提醒程序很有必要。该文以一个功能较为全面的事务提醒程序编制为例,从程序功能设计、实现的过程、具体编程方法等方面,详细介绍了用Vb.net实现事务提醒的思路和编程方法,对于相似类型的事务提醒程序的编制有一定的参考价值。
  关键词:Vb.net 实现 事务提醒 方法
  中图分类号:TP311 文献标识码:A 文章编号:1674-098X(2015)08(c)-0059-03
  目前,对于大多数单位而言,每天需要完成的工作很多,时常会因漏办事务而对工作造成影响。由于事务类型繁多,提醒周期也不尽相同,已有的一些如闹钟、备忘录等工具,很难满足实际工作的需要。因此,设计一个功能较为完善的事务提醒程序很有必要。
  该文以一个功能较为全面的事务提醒程序编制为例,介绍用Vb.net实现事务提醒的思路和编程方法。
  1 程序功能概述
  程序能对节假日(包括法定和自定义节假日)、24节气、自定义事务等进行提醒。对于自定义任务,还能按周期,如“仅一次、每天、每周、每月、每年”等进行重复提醒,并可设置再次提醒时间。程序运行主界面如“图1”所示。
  2 提醒功能的实现
  2.1 “万年历”的制作
  万年历是实现节假日(包括法定公农历节假日、自定义节假日等)提醒的基础。
  本程序建立了一个“公——农历转换”的类,以公历日期为参数,通过该类可计算出相对应的农历日期、星期、节假日日期、天干地支、星座等。主要实现方法如下。
  2.1.1 公歷节假日的获取
  (1)定义如下数组并进行初始化:
  Dim sFtv() As Object={1,1,“元旦”,3,8,“妇女节”,3,23,“世界气象日”}
  其中:每个节日为3个元素,分别表示月、日和节日名。按此规律可加入自定义的节假日。
  (2)下面的代码可取得数组中定义的节假日月、日及节假日名称。
  Private SolarHolidayInfo()As SolarHolidayStruct
  Private Structure SolarHolidayStruct
  Dim Month As Integer
  Dim Day As Integer Dim HolidayName As String
  End Structure
  ‘取得节假日月、日及名称
  Dim b As Integer= UBound(sFtv) + 1
  ReDim SolarHolidayInfo(b /3) ‘为数组重新分配存储空间
  For i=0To(b/3)-1
  SolarHolidayInfo(i).Month = sFtv(i*3)‘月数
  SolarHolidayInfo(i).Day = sFtv(i * 3 + 1)‘日数
  SolarHolidayInfo(i).HolidayName = sFtv(i * 3 + 2)‘节假日名称
  Next
  (3)用公历的月、日数分别与SolarHolidayInfo(i).Month、SolarHolidayInfo(i).Day对比,如果相同,SolarHolidayInfo(i).HolidayName即为相应日的公历的节假日名称。
  2.1.2 农历节假日的获取
  定义如下数组并进行初始化:
  Dim lFtv() AsObject ={1,1,“春节”,1,15,“元宵”,5,5,“端午”,8,8, “苗族风情节”}
  先将公历日期通过“公——农历转换”类,得到相应的农历日期。同前述“公历节假日的获取”方法,便可得到相应日的农历的节假日名称。
  2.2 “24节气”日期的计算
  我国的万年历以紫金山天文台发布的为标准,通过公式法计算出的24节气日期与标准日期有时会相差一天。为了与标准万年历一致,本软件先将标准万年历中的24节气日期存入数据库(图2),采用查表法得到24节气的日期。
  2.3 本程序中与日期、时间运算相关的主要方法
  2.3.1 日期、时间大小的比较
  将需要比较的两个日期、时间值转化为24小时制的String类型,再用比较运算符直接比较。此方法可以比较任意精度的日期、时间。例如:如下代码能将当前日期转化为24小时制的String类型:
  DateTime.Now.ToString(“yyyy-MM-dd HH:mm:ss”)
  2.3.2 日期、时间加减
  使用下面Date对象的方法可以实现日期、时间的加减运算:AddYears, AddMonths, AddDays, AddHours, AddMinutes, AddSeconds, AddMilliseconds。
  例:DateTime.Now.AddDays(x)‘当前日期加x天(x可正可负,负时为减)
  DateTime.Now.AddHours(-x) ‘当前日期减x小时
  2.3.3 日期、时间差计算
  DateDiff 函可以取得两个日期的间隔,并且可以用年、月、日等单位传回两个日期的差距,语法为: DateDiff(间隔参数, 日期一, 日期二)
  间隔参数为: DateInterval.Year (年)DateInterval.Quarter (季)   DateInterval.Month(月)DateInterval.Day(日)
  DateInterval.Week(周) DateInterval.Hour(时)
  DateInterval.Minute (分) DateInterval.Second (秒)
  2.4 “节假日、24节气”提醒功能的实现
  2.4.1“节假日”提醒
  日历中节假日较多,但并不是每个节假日均有提醒的必要。因此,可先将需要提醒的节假日存入一个表(图3)。
  (1)以当前日期为初始参数,调用“公——农历转换”类,如果未返回节假日名称、或返回的节假日不在“需要提醒的节日”表中,则日期加一天,再调用“公——农历转换”类,直至返回最近的“需要提醒”的节假日名称。
  (2)查询“节日再次提醒时间表”(图4),如果记录中的“节日名称”与返回的需要提醒的公、农历节假日名称均不相同,则删除相关记录,并直接进行提醒。否则,如果有与返回的节假日名称相同的记录,并且当前时间大于或等于“再次提醒时间”,则进行提醒。
  (3)计算出最近的“需要提醒”的节假日与当前日相差天数,进行倒计时提醒,并允许设置“下次提醒时间”(图5)。
  2.4.2“24节气”提醒
  (1)从“24节气表”中读取“节气日期”大于或等于当前日期、并且小于或等于当前日期加18天(因两个节气的日期间隔不可能大于18天)的节气名称,即为当前需要提醒的节气名称。
  (2)提醒方式以及“下次提醒时间”的设置与“节假日提醒”相同。
  2.5 “自定义任务”提醒功能的实现
  (1)任务登记:根据任务周期对需要提醒的任务进行登记,生成任务表(图6)。
  (2)定时对任务表进行查询,按“提醒类型”对每条记录进行处理,以确定是否进行提醒。
  (3)“仅一次”提醒的实现,①查询“任务表”,如果当前日期大于任务日期,则删除该條任务记录,不再提醒。②如果已经设置了“下次提醒时间”,则当当前时间大于或等于“下次提醒时间”,才进行提醒。否则,当当前日期大于或等于任务日期,就进行提醒。进行提醒时,可设置“下次提醒时间”。
  (4)“每天”提醒的实现,查询任务表中相关任务是否在“下次提醒时间”中设置了“当日不再提醒”,如已设置,则不作任何操作,否则,如果当前时间大于或等于下次提醒时间,则进行提醒。
  (5)“每周、每月、每年”提醒的实现,此类提醒功能的实现,与“每天”提醒的方法基本相同,主要是根据日期进行对比,确定是否需要提醒。但要注意的是:每个月的天数不完全相同。如果“每月或每年”提醒日期的号数大于相应月的总天数,运算时应予处理,否则会出现错误。当提醒日期的号数大于相应月总天数时,一般默认提醒日期为月末。
  3 结语
  该文介绍了事务提醒程序编制的一些思路和编程方法,对于相似类型的事务提醒程序的编制有一定的参考价值。由于作者思维和知识面的局限,定有欠妥和不足之处,望各位同行提出宝贵意见。
  参考文献
  [1] Bill Sheldon,Billy Hollis.NET 4.5与Visual Basic 2012高级编程[M].7版.北京:清华大学出版社,2014.
  [2] 邵峰晶,于忠清,韩静海,等.VB.NET程序设计[M].北京:电子工业出版社,2011.
其他文献
新生代农民工将自身定位为城市的打工者,这种角色定位和认同反映了新生代农民工对于城市的心理已经从上一代农民工的"城市过客"的心态变成了"城市主体"的心态。
经济全球化推动了国际物流的发展。我国大型企业要跻身于世界企业强手之林,也必须提高我国国际物流的支持能力。我国加入世界贸易组织后,国际贸易和跨国经营都面临新的机遇和
随着我国有效发明专利拥有量的增加,专利价值评估和筛选工作是专利运用和管理的重要内容,如何从浩如烟海的专利数据中筛选出高价值专利是摆在我们面前的重要课题。本文在前人
上海卫生监督数据标准管理平台是卫生监督数据标准管理的支撑工具,对卫生监督所有的数据标准进行统一规划、统一管理、综合利用。该平台建立了卫生监督标准化的数据元集信息库
该文通过对现有国内高校的质量管理体系认证的分析,探寻一种适用于“研究型大学”建立质量管理体系并开展质量认证的通用模式,旨在通过认证模型的建立,为高校建立科学研究、产品
目前,国与国之间的竞争已是国家综合实力的竞争。在世界政治军事趋于缓和的大背景下,竞争已由战场转移到市场,竞争工具已由军事手段换为科技手段,已由军舰大炮换为高新技术产品,竞
对望奎县进行了房屋装修的75户居民住宅进行了室内氨的监测和评价.结果表明望奎县居民室内氨浓度户均值在0.135-0373mg/m^3之间.超标率达50.67%.最大超标倍数为0.865.室内氨浓度与装修