佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1320|回复: 9

这程式应该如何写?logic 高手请进。

[复制链接]
发表于 5-6-2012 09:23 AM | 显示全部楼层 |阅读模式
本帖最后由 sktan007 于 5-6-2012 09:33 AM 编辑

程式是 user 会一年一年的检查,但是第一年就不是从年初开始,可能是一年中的任何一天,
每隔五年(包括5年,10年,15年。。。),要分成两段,因为不一定从1月1号开始,所以
从开始的日期加五年,就搞到五年,十年,十五年,前段属前五年,后段属后五年,
比如1990年3月29日开始,第一次五年就是19950329,然后是20000329。。。
19950101到19950329是前面五年的,19950329到19951231是后面五年的。
每过五FiveYear这个变数就加1,每过一年OneYear也加1。
user 有个gui form 他可以click button一年一年的看,看到五年就分两段给他。假如他往前走
普通年份OneYear一定要加1, FiveYear不动。
像1995这种年份,前段只能OneYear 加1, FiveYear不动,后段OneYear不变,FiveYear加1。
如果 user  只能一直往前走,很好写,不难。问题在 user  还能往后走,  而且是隨时可以从
1996后退到1995后段,再1995前段, 又往前1995后段。或者从1994进1995前段, 直接退
回1994,
写来写去也没有办法搞定OneYear和FiveYear这两个integer.

看起来很简单,写下去才发现不是一个单纯的quene(好像没有写錯英文字吧。。。)
回复

使用道具 举报


ADVERTISEMENT

发表于 5-6-2012 09:39 AM | 显示全部楼层
回复 1# sktan007
看了,不知道你在讲什么
回复

使用道具 举报

 楼主| 发表于 5-6-2012 07:47 PM | 显示全部楼层
本帖最后由 sktan007 于 5-6-2012 08:01 PM 编辑

回复 2# leon_lcl

这段程式是針对OneYear与FiveYear两个integer. 以前没有发现这一条bug,
所以解决掉这问题,程式就会产生一连串的资料给user 在gui form 上看。

假设开始日期是1990年3月29日,每5年就是一个交界年,因为从1990年3月
29日开始算5年,是1995年3月29日,再5年是2000年3月29日,然后是
20050329(这种日期格式看得懂吧?),20100329。。。。
1995,2000,2005。。。这些就是交界年。user用gui form 一年一
年的检查资料,每逢交界年要分成3月29前和3月29后两段,当成两年一样检
查,3月29前的那一段,属前面的5年,即19900329到19950329。
3月29后的一段,属后五年,即19950329~20000329。
现在如果User 在 Gui form 上按往下走,比如1994年到1995年前段,假如写成
OneYear++;
if (OneYear % 5) == 0   FiveYear++;
OneYear 对了, FiveYear不对,因为还不到3月29号。
但1995年分成两个时段,所以User 再往下走,就是1995年3月29日到1995年12月
31日的时段,这个时段OneYear++是錯的,还是1995年OneYear不能又加一。

反过来user 在gui form 往上走,比如从1996到1995年后段,假如写成
OneYear--;
if (OneYear % 5) ==0   FiveYear--;
变成OneYear对了,但 FiveYear 不对。
回复

使用道具 举报

发表于 5-6-2012 11:22 PM | 显示全部楼层
回复 3# sktan007
老实说没看到code,很难帮你。
我只能从你所说的给你点意见。
你或许可以在if (OneYear % 5) == 0 里面加个compare date的。一开始你可以store3月29日在个variable,过后用来compare。如果是在那个date前,5year就不用加
回复

使用道具 举报

 楼主| 发表于 6-6-2012 08:34 AM | 显示全部楼层
回复 4# leon_lcl


    谢谢!用个日期变数去比较,这个我没有想过,等下去试。
我原先还想过用个boolean变数去标记年头年尾,可是如果user
从1994,进1995年,到1995年后段突然往后退,马上就死。
回复

使用道具 举报

发表于 6-6-2012 03:13 PM | 显示全部楼层
我之前被人考,就是这个逻辑,年假是 1年-8天,
3-5年-12天,〉5年-16天,入行日期 有给,用户可以选择如何一个日期,就要计算出年假日数。

很像你这个。

你要会计算月份 Month++

if(Month 〉60){
FiveYear++;
}
回复

使用道具 举报

Follow Us
 楼主| 发表于 6-6-2012 07:25 PM | 显示全部楼层
解决了,谢谢各位。
要用两个日期变数才可以,一个存放上一次五年的日期,一个存放下一次五年的日期。
每逢交界年就改变两个日期。
如此不管 user 如何Click Next, Click Previous 都不会出錯。
回复

使用道具 举报

 楼主| 发表于 6-6-2012 09:10 PM | 显示全部楼层
回复 6# mengmeng1288


    你这个问题, user 不会一直在gui form上Click Next, 到了交界年后段,突然来个Click previous,
又或者从下面Click Previous 来到交界年,突然又Click Next 。。。 然后再Click Previous。。。
所以你的比较简单,
&*(&*(%……&%&不知道是那个user 想出这个功能的,实在够刁难人
回复

使用道具 举报


ADVERTISEMENT

发表于 8-6-2012 05:18 PM | 显示全部楼层
请问你是使用什么语言写?
我是很精通VB,现在学习Java
回复

使用道具 举报

 楼主| 发表于 8-6-2012 10:50 PM | 显示全部楼层
回复 9# mengmeng1288

不说出你绝对猜不到,是Gambas!
只在Linux下能用,是一种VB Like语言。不过也只是比较像早期的版本,跟.NET时代的vb, 相差
太多。
当然偶也会C/C++.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 30-11-2025 04:59 PM , Processed in 0.116193 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表