请教一下这个需求如何实现。

问题描述

有一个停车场,有10个停车位,1-5个位是贵宾位,6-10普通位。贵宾位有个默认值:每月的一号和15号的9:00--18:00位5元/小时,其他时间段为3元/小时。普通位有个默认值:每周的工作日(周一到周五)的9:00-22:00为3元/小时,其他时间段为2元/小时。上面的是默认值,是在管理员没有设置的情况下的价格,管理员可以对任何停车位的任何时间段进行价格,设置了的将覆盖默认价格,请教一下实现思路或者表设计。本帖不讨论技术。

解决方案

解决方案二:
管理员设置时段区间,可以细化到什么程度呢?最小计算单位为小时吗?
解决方案三:
如果是最小单位为小时的话,我觉得表结构可以这样:idtype(用来标识是vip还是普通车位)date(日期,如果Type为vip,这个就是每月的几号;如果是普通车位,那就是星期几)hour(小时,如1点、2点、3点等)price(每小时的价格)然后在表里面把每种车位的每个小时的默认单价先存到数据库,在管理员设置了某个小时的价格后,直接覆盖数据库里面的默认的那条记录就行了。这样在计算停车费的时候,就根据停车的车位类型、日期(每月几号或星期几)、hour(停车了好几个小时,就取多条记录进行相加)、price,来计算总金额。上面是我自己的思路,不知道能不能满足楼主需求。
解决方案四:
记录下停车时间车位和管理员制定的价格,然后按照你的逻辑在程序中计算即可。这种逻辑并不复杂,事实上在很多考勤系统中对人员工资计算和它类似。
解决方案五:
引用1楼dokia123的回复:

管理员设置时段区间,可以细化到什么程度呢?最小计算单位为小时吗?

一个小时吧。
解决方案六:
引用3楼caozhy的回复:

记录下停车时间车位和管理员制定的价格,然后按照你的逻辑在程序中计算即可。这种逻辑并不复杂,事实上在很多考勤系统中对人员工资计算和它类似。

请问一下,那个默认的停车价格(管理员没有设置的情况下),怎么持久化到数据库?
解决方案七:
引用2楼dokia123的回复:

如果是最小单位为小时的话,我觉得表结构可以这样:idtype(用来标识是vip还是普通车位)date(日期,如果Type为vip,这个就是每月的几号;如果是普通车位,那就是星期几)hour(小时,如1点、2点、3点等)price(每小时的价格)然后在表里面把每种车位的每个小时的默认单价先存到数据库,在管理员设置了某个小时的价格后,直接覆盖数据库里面的默认的那条记录就行了。这样在计算停车费的时候,就根据停车的车位类型、日期(每月几号或星期几)、hour(停车了好几个小时,就取多条记录进行相加)、price,来计算总金额。上面是我自己的思路,不知道能不能满足楼主需求。

贵宾停车位和普通停车位的需求不同,贵宾是15号1号特殊,普通是上班时间特殊。你怎么区分?
解决方案八:
给车位添加一个标识,是否是贵宾车位停车的默认价格初始化数据库脚本时就初始化到数据库中,这个不用管理员来设置。引用5楼zhengyuechuan的回复:

请问一下,那个默认的停车价格(管理员没有设置的情况下),怎么持久化到数据库?

解决方案九:
想了下,做了些许设计:基础类IdEntity:packageentity;importjava.io.Serializable;importjava.util.Date;/***统一定义id的entity基类.**基类统一定义id的属性名称、数据类型、列名映射及生成策略.子类可重载getId()函数重定义id的列名映射和生成策略.*/publicabstractclassIdEntityimplementsSerializable{protectedstaticfinallongserialVersionUID=Long.MAX_VALUE;privateLongid;protectedDatecreateDate=newDate();publicLonggetId(){returnid;}publicvoidsetId(Longid){this.id=id;}publicvoidsetCreateDate(DatecreateDate){this.createDate=createDate;}publicDategetCreateDate(){returncreateDate;}/***重写equals方法,以id为准判断**@paramobject**@returnboolean*/@Overridepublicbooleanequals(Objectobject){if(this==object){returntrue;}if(object==null){returnfalse;}if(objectinstanceofIdEntity){IdEntityidEntity=(IdEntity)object;//由于IdEntity是hibernate托管的,所以一定要用getUuid方法,而不能直接用uuidif(this.getId()==null||idEntity.getId()==null){returnfalse;}else{returnthis.getId().equals(idEntity.getId());}}returnfalse;}/***重写hashCode方法,直接返回uuid的hashcode**@paramhashCode**@returnint*/@OverridepublicinthashCode(){returngetId()==null?super.hashCode():getId().hashCode();}}

停车位抽象类ParkingSpace:packageentity;publicabstractclassParkingSpaceextendsIdEntity{privatestaticfinallongserialVersionUID=1L;privateStringno;//停车位编号privateTypetype;publicParkingSpace(){}publicstaticParkingSpacegetInstance(Typetype){if(Type.VIP==type){returnnewVipParkingSpace();}else{returnnewGeneralParkingSpace();}}publicStringgetNo(){returnno;}publicvoidsetNo(Stringno){this.no=no;}publicTypegetType(){returntype;}publicvoidsetType(Typetype){this.type=type;}publicstaticenumType{//贵宾、普通VIP,GENERAL}}

贵宾停车位VipParkingSpace:packageentity;publicclassVipParkingSpaceextendsParkingSpace{privatestaticfinallongserialVersionUID=1L;publicVipParkingSpace(){this.setType(ParkingSpace.Type.VIP);}}

普通车位GeneralParkingSpace:packageentity;publicclassGeneralParkingSpaceextendsParkingSpace{privatestaticfinallongserialVersionUID=1L;publicGeneralParkingSpace(){this.setType(ParkingSpace.Type.GENERAL);}}

时间区间基类DateRange:packageentity;importjava.util.Date;publicclassDateRangeextendsIdEntity{privatestaticfinallongserialVersionUID=1L;privateStringalias;//区间别名,如"一号","十五号"privateDatestartDate;privateDateendDate;publicDategetStartDate(){returnstartDate;}publicvoidsetStartDate(DatestartDate){this.startDate=startDate;}publicDategetEndDate(){returnendDate;}publicvoidsetEndDate(DateendDate){this.endDate=endDate;}publicStringgetAlias(){returnalias;}publicvoidsetAlias(Stringalias){this.alias=alias;}}

价格策略抽象类PriceStrategy:packageentity;publicabstractclassPriceStrategyextendsIdEntity{privatestaticfinallongserialVersionUID=1L;privatedoubleprice;publicstaticPriceStrategygetInstance(ParkingSpace.Typetype,DateRangedateRange){if(dateRange!=null){returnnewDateRangePriceStrategy(type,dateRange);}else{returnnewGeneralPriceStrategy(type);}}publicdoublegetPrice(){returnprice;}publicvoidsetPrice(doubleprice){this.price=price;}}

特殊时间区间价格策略DateRangePriceStrategy:packageentity;publicclassDateRangePriceStrategyextendsPriceStrategy{privatestaticfinallongserialVersionUID=1L;privateParkingSpaceparkingSpace;privateDateRangedateRange;publicDateRangePriceStrategy(){}publicDateRangePriceStrategy(ParkingSpace.Typetype,DateRangedateRange){this.parkingSpace=ParkingSpace.getInstance(type);this.dateRange=dateRange;}publicParkingSpacegetParkingSpace(){returnparkingSpace;}publicvoidsetParkingSpace(ParkingSpaceparkingSpace){this.parkingSpace=parkingSpace;}publicDateRangegetDateRange(){returndateRange;}publicvoidsetDateRange(DateRangedateRange){this.dateRange=dateRange;}}

普通时间区间价格策略GeneralPriceStrategy:packageentity;publicclassGeneralPriceStrategyextendsPriceStrategy{privatestaticfinallongserialVersionUID=1L;privateParkingSpaceparkingSpace;publicGeneralPriceStrategy(){}publicGeneralPriceStrategy(ParkingSpace.Typetype){this.parkingSpace=ParkingSpace.getInstance(type);}publicParkingSpacegetParkingSpace(){returnparkingSpace;}publicvoidsetParkingSpace(ParkingSpaceparkingSpace){this.parkingSpace=parkingSpace;}}

大致如此了,楼主感受下。
解决方案十:
引用7楼magi1201的回复:

给车位添加一个标识,是否是贵宾车位停车的默认价格初始化数据库脚本时就初始化到数据库中,这个不用管理员来设置。Quote: 引用5楼zhengyuechuan的回复:
请问一下,那个默认的停车价格(管理员没有设置的情况下),怎么持久化到数据库?

价格肯定是需要从后台配置的,怎么可能是死的!
解决方案十一:
引用9楼jchuang2011的回复:

价格肯定是需要从后台配置的,怎么可能是死的!

楼主说了,这就是个默认的价格。页面上肯定有设置价格的地方,初始化的就是个参考。当然也可以从后台配置文件中配置。
解决方案十二:
引用10楼magi1201的回复:

Quote: 引用9楼jchuang2011的回复:
价格肯定是需要从后台配置的,怎么可能是死的!

楼主说了,这就是个默认的价格。页面上肯定有设置价格的地方,初始化的就是个参考。当然也可以从后台配置文件中配置。

嗯,这个是我漏看了
解决方案十三:
引用6楼zhengyuechuan的回复:

Quote: 引用2楼dokia123的回复:
如果是最小单位为小时的话,我觉得表结构可以这样:idtype(用来标识是vip还是普通车位)date(日期,如果Type为vip,这个就是每月的几号;如果是普通车位,那就是星期几)hour(小时,如1点、2点、3点等)price(每小时的价格)然后在表里面把每种车位的每个小时的默认单价先存到数据库,在管理员设置了某个小时的价格后,直接覆盖数据库里面的默认的那条记录就行了。这样在计算停车费的时候,就根据停车的车位类型、日期(每月几号或星期几)、hour(停车了好几个小时,就取多条记录进行相加)、price,来计算总金额。上面是我自己的思路,不知道能不能满足楼主需求。

贵宾停车位和普通停车位的需求不同,贵宾是15号1号特殊,普通是上班时间特殊。你怎么区分?

数据里面存的是每一天的每一小时为一条记录,这本身就已经区分开了啊?已经到最小粒度了。
解决方案十四:
引用6楼zhengyuechuan的回复:

Quote: 引用2楼dokia123的回复:
如果是最小单位为小时的话,我觉得表结构可以这样:idtype(用来标识是vip还是普通车位)date(日期,如果Type为vip,这个就是每月的几号;如果是普通车位,那就是星期几)hour(小时,如1点、2点、3点等)price(每小时的价格)然后在表里面把每种车位的每个小时的默认单价先存到数据库,在管理员设置了某个小时的价格后,直接覆盖数据库里面的默认的那条记录就行了。这样在计算停车费的时候,就根据停车的车位类型、日期(每月几号或星期几)、hour(停车了好几个小时,就取多条记录进行相加)、price,来计算总金额。上面是我自己的思路,不知道能不能满足楼主需求。

贵宾停车位和普通停车位的需求不同,贵宾是15号1号特殊,普通是上班时间特殊。你怎么区分?

你可以好好理解下我说的表的date字段的意义就好了。

时间: 2024-08-28 05:07:54

请教一下这个需求如何实现。的相关文章

需求管理 工具-有哪些好用的软件需求管理工具

问题描述 有哪些好用的软件需求管理工具 请教: 软件需求管理有哪些工具和软件啊?大家都在用什么进行需求管理啊? 解决方案 RationalRequisitePro Rational RequisitePro是一个强大.易用.集成的需求管理产品.而通过与Rational系列软件产品的广泛集成,大大扩展了RequisitePro及其他产品的功能,给软件工程生命周期内的各个阶段都提供了强大.方便的信息查询.跟踪.管理功能.从而能够促进更好的团队沟通.帮助管理变更和评估变更的影响,帮助验证所有的规划需求

需求分析的故事——如何练就需求分析的火眼金晴?

             需求分析的故事--如何练就需求分析的火眼金晴?   话说小P刚刚加入到一个项目组里面,项目经理安排他做需求分析,小P一听需求分析就有点不乐意,心里嘀咕:"需求有什么分析的啊?客户要什么给什么呗,简直是浪费我这个人才!" 虽然不乐意,但毕竟工作还是要做,很快小P接到了的第一个需求,客户打电话来说"我要一只羊",小P一听就觉得太简单了,简单的写了一下需求"XXX客户需要一只羊",然后就交给同样是新手的小Q去处理,小Q也觉得很

JBPM4动态创建ActivityImpl

问题描述 流程:---->A----->B----->C在B出动态创建一个节点DD完成任务后再转向B如下:---->A----->B----->D------>B----->C请教高手这个需求怎么实现以上节点都是Task节点 解决方案 本帖最后由 wai2014kuaile 于 2011-05-11 18:49:00 编辑解决方案二:该回复于2011-12-12 15:33:55被版主删除

Spring MVC与表单提交的问题

问题描述 1.model:public class UserType implements Serializable {private static final long serialVersionUID = 1L;private int id;private String typeName;private String remark;private Date addDate;private Date editDate;2.<form name="userTypeForm" me

## ** ## ** 急切请教生成走势图,有些特殊需求。。。

问题描述 请教一下,想生成个类似http://www.ifeng.com/凤凰网首页中间的那个股市行情的图,该如何去实现呢?我试过jfreechart可以实现下面的效果:但是像凤凰网这样复杂的我就不知如何是好了,画圆圈的都是特殊的地方,也是我想要实现的地方:需求:1.分区间显示不同颜色,像Y轴上的3161是平均水平就黑色字体,3176和3169比平均水平高的就用红色,3154和3146比平均水平低的就用绿色字体.2.像3161对应的那条网格线是红色的.需求:1.在焦点上显示出Y轴对应的值.2.X

请教个关于视频网站带宽需求的问题

问题描述 有个投资者联系到本人想了解下视频网站建设的带宽投入问题,他的网站需求定位于特定行业的视频资料发布,提供浏览者在线播放观看视频内容,初步预计最高同时在线观看是500人.采用独立服务器托管方式,预计每月投入两万元的带宽费用,不知道能否足够支持得起呢流畅播放呢?本人平时都是搞后台底层的开发,至于视频.带宽这方面的知识了解很肤浅,希望得到论坛上的人士指教指教.谢谢! 解决方案 解决方案二:每月投入两万元的带宽费用肯定是不够了,20万还差不多,另外还要根据你的视频格式和压缩率定,如果在不影响效果

甲方如何与设计师明确需求?

  甲方虐我千百遍,我待甲方如初恋.相信设计师们都有过遇到奇葩甲方的经历,那么下一次遇到时,请你狠狠地拿出这篇文章,告诉他怎么成为一个合格的甲方. 如果你就是甲方,仔细阅读来自两位资深前辈的衷心建议,对职业发展会非常有帮助. 正文: 永远不要跟设计师对接 不要跟设计师谈需求,跟你的AE(Account Executive,广告执行,客户经理)去谈. 平面广告设计师目前的人才状况参差不齐,高度参差不齐.按道理,科班出身的应该是美院相关专业毕业的.而由于过去三十年商业高速发展,对广告的需求量猛增,使

交互设计师:哪些需求该接?

对大团队来说,交互设计师常常会接触到不同产品线的需求,比如之前两周我就需要同时与四五个产品经理合作.产品经理是需求方,他们会带着 idea 以及 PRD 文档来找设计师,告诉我们需求的具体内容.目标.排期等等.不过,由于设计资源有限(开发资源也一样),并不可能所有的需求都被能处理,所以在产品经理提出需求的同时也需要设计师能够对需求的合理性有自己的判断. 需求的合理性判断非常依赖交互设计师对业务的熟悉程度,而新人却又在这方面最匮乏.如果对需求来者不拒,或者也没有帮助产品经理改善需求内容.指出不合理

net-C# 问题 虚心请教

问题描述 C# 问题 虚心请教 小弟初学C# ,算是边上班边学边用,这段代码是C# 编程指南上的,每次看到下面这种代码,都有些晕乎,这些代码在实际中用的应该不多吧,该怎么学?希望前辈能不吝赐教,谢谢 using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace ConsoleApplication128{ class Program { static void Main(s