虽然对方是个女的,虽然对方比较强势,虽然对方开始就态度不是很好。但还是只能怪自己水平太水了。自我介绍完后,对方了解了一下过往项目情况,然后对方口述了一道题目,给了我两张纸,自己记录题目相关信息并写出解决方案。人事管理系统的一个小功能。需求:公司员工分为正式员工和试用员工,正式员工年假为6天,试用员工假期为(一个很长的计算方式,记不得了,只记得和提供的参数信息有关),年假两年内可以累积,两年后没用完的年假作废。请假一次不得超过3天,请假必须提前两天申请。数据库保存字段不能包括已用年假和剩余年假这些字段。要求:自己设计数据库,给出代码设计方案。(15分钟)一直在小作坊里面工作,虽然待过的公司也有上百号人的,但也只能算是小作坊吧,感觉接触不到什么设计,全部都是数据库驱动的。项目在了解完需求后,马上就出数据库设计文档,然后就是大批量的增删改查,我晕啊。虽然自己前前后后有好几次去了解过OOP的设计,但是毕竟公司项目太要求速度了,并且那种开发模式没有经验,所以不敢轻易尝试。困惑:现在的自我感觉是,给我一个功能,我大概能尝试着给出设计方案,但是要记录到数据库就不知道该怎么弄了。感觉业务里面的功能和数据存储的功能(增删改查)之间总是联系不到一块。希望哪位大哥可以给出一点提示,或者给出一个小模块的设计,不需要太具体了,只要点出我的问题即可,谢谢!设计

解决方案 »

  1.   


    create table user(--用户表
       userid
       username
       userpassword
       usertype
    )create table leaveRecord{--请假记录表
       userid 
       creatime  --请假时间
       leaveLenth  --请求长度
    }
    简单的表设计,可能还需要一个正式工和试用工请求方法的配置表
    代码设计方面使用策略模式比较好,针对正式工和试用工使用不同的策略方法去实现
      

  2.   

    Employee 表员工类型入职日期请假日期这是楼上的。。请假记录表
    人时间
    其他的自己计算
    一颗星……  
      

  3.   

    刚刚吃饭去了,表设计不全,还是楼下几位补的好,嘿嘿。再补上简单的代码设计
    /// <summary>
            /// 请假的策略抽象类
            /// </summary>
            public abstract class LeaveStrategy
            {
                /// <summary>
                /// 是否符合请假通用规则 
                /// </summary>
                /// <returns></returns>
                public virtual bool IsMatchRule()
                {
                    bool flag = true;
                    /*pass 请假一次不得超过3天,请假必须提前两天申请 */
                    return flag;
                }            /// <summary>
                /// 请假操作
                /// </summary>
                /// <returns></returns>
                public abstract bool LeaveOper();
            }        /// <summary>
            /// 正式工 请假
            /// </summary>
            public class FormalWorkersLeave : LeaveStrategy
            {
                public override bool LeaveOper()
                {
                    if (!base.IsMatchRule())
                    {
                        return false;
                    }
                    bool flag = false;
                    /*pass 正式工请假的操作  */
                    return flag;
                }
            }        /// <summary>
            /// 使用工请假
            /// </summary>
            public class TrialWorkLeave : LeaveStrategy
            {
                public override bool LeaveOper()
                {
                    if (!base.IsMatchRule())
                    {
                        return false;
                    }
                    bool flag = false;
                    /*pass 试用工请假的操作*/
                    return flag;
                }
            }        /// <summary>
            /// 请假上下文
            /// </summary>
            public class LeaveContext
            {
                private LeaveStrategy _leave;            public LeaveContext(/*你的相应参数*/)
                {
                    /*
                     * 根据参数指定策略
                     * this._leave = new FormalWorkersLeave();
                     * 或者
                     * this._leave = new TrialWorkLeave();
                     */
                }            public bool LeaveOper()
                {
                    return this._leave.LeaveOper();
                }
            }