HR部门如何免费搭建员工请假管理系统

本教程适合公司员工大于100人的企业HR经理,其他人可以忽略。
说到HRMS – 人力资源管理系统,一般分为4大模块

  • 组织人事
  • 招聘管理
  • 薪酬考勤
  • 绩效激励

市面上有很多成熟的产品,并且现在很多SaaS软件,直接付钱在线使用,不用自己操心自己搭建服务器,省了很多本地IT的工作,当然SaaS模式也有弊端,数据安全性一直是被诟病的一点。前一段时间看到FlowPortal推出了软件免费,免费20个流程的消息,觉得以前需要花大钱才可以做的事情,现在很轻松的就可以去做了。
记得以前基于FlowPortal做过一个请假的流程,现在的公司竟然专门有一套系统叫做E-Level,在线请假系统。
如果你们公司也有这样的需求,不妨一试,免费的,根据自己的需求订制流程。1. 下载FlowPortal最免费版,安装在服务器。2. 数据库新建两张表,一张Employee主数据,包含员工的姓名工号,以及各种类型假期的剩余天数,建好后,可以从excel导入原始数据。另外一张leave请假表,包括姓名工号,申请日期,申请假期的类型,假期天数等3. 制作表单:员工打开表单,自动带出员工信息,包括剩余假期天数。自动计算申请假期时长。员工提交的时候做一下验证,如果申请天数超出假期剩余天数,不能提交。

eleave form

4. 制作流程员工提交后,有Line Manager审批,然后经过HR审批,每个审批节点都设置email通知。当员工请假申请被批准后,系统在Employee的表里面把对应类型的假期剩余天数扣掉。

eleave process

5. 发布是不是很简单?提高了自己的工作效率,为公司节约了成本,你朝着HRD又近了一步。
其实,用这套系统可以把HR的4大模块全部做进来,需要花点时间去做。
好了,有任何问题,欢迎咨询托尼大叔

.NET连接MySql数据库

首先要下载并安装Connector/Net 目前最新版本为6.2.3。
http://www.mysql.com/downloads/connector/net/ 
 

添加引用:
  <compilation debug="true">
   <assemblies>
    <add assembly="MySql.Data, Version=6.2.3.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>
   </assemblies></compilation>

配置web.config
<connectionStrings>
  <add name="MySqlDB_L" connectionString="Server=www.denghaigang.com;Port=6033;Database=discuz;Uid=root;Pwd=root;Allow Zero Datetime=true" providerName="MySql.Data.MySqlClient"/>
 </connectionStrings>

好了,开始写程序了

using MySql.Data.MySqlClient;
    MySqlConnection mysqldbconnection = new MySqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MySqlDB_L"].ConnectionString);
            mysqldbconnection.Open();

            MySqlDataAdapter mysqlad = new MySqlDataAdapter("select * from cdb_members", mysqldbconnection);
            DataSet user = new DataSet();

            mysqlad.Fill(user,"user");

            GridView1.DataSource = user.Tables["user"];
            GridView1.DataBind();

            mysqldbconnection.Close();

健身、运动场馆预订系统

随着经济的发展,社会的进步,越来越多的城市病、职业病、亚健康状态不断的进入人们的意识中,也就意味着人们对健康的重视程度在不断的提高。

健康,想拥有健康,途径很多,前几天倒台的张悟本,也能反映一个事实,就是人们越来越重视健康,张悟本说的是喝绿豆汤能养生,把吃出来的病吃回去。不能说没道理,但是对绿豆的功效夸太大了,把绿豆的价格都炒上去了。想健康,吃肯定是第一位的,不能乱吃东西的,再就是心情,心情影响健康一直是本人在研究的课题,然后再就是运动。。。。。。太多影响健康的因素了。

身体是革命的本钱,身体完了,啥梦想都完了。

“吃”的话题,我以后会在创业博客中详述。本文只对运动中的场地进行研究。

1、会员中心
会员身体详细资料,身高体重,脂肪率,喜欢的运动。。。。。。联系方式。。。。。。

2、场馆信息
上海市各大健身运动场馆的详细信息(桌球馆,KTV,羽毛球场。。。。。。)
与运动场馆的系统做接口,做到运动场馆的使用情况与网络同步

3、在线预订
在线选场地 ——> 在线选时段 ——> 在线付费(或放置出票机在运动场所,会员凭手机密码到场馆取票)

 

4、用户信息反馈

5、发行会员卡

运营难点:
1、与场馆的合作,需要有市场运作高手谈判高手参与其中。
2、用户体验,一定做到最有利于用户。
3、系统同步,不同场馆的系统不同,数据同步的成本就很高。(可以与场馆的软件供应商合作,开发一套标准B2B,想办法搞到软件公司的客户,去开发客户,或直接与软件公司合作,让软件公司去谈,然后分成)

目前市场竞争对手:
哈票网:www.hipiao.com
格瓦拉:www.gewara.com

如果你有资金,可以与我联系,会有详细的创业计划书呈上。

取消php上传2M的限制

一、修改php.ini文件。
找到php中的php.ini文件,用写字板打开:

1、查找post_max_size,指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值,默认为8M,看你自己需要进行改变。
2、查找File Uploads,首先确认file_uploads = on ;是否允许通过HTTP上传文件的开关,默认为ON即是开。 upload_tmp_dir ;
查找upload_max_filesize ;即允许上传文件大小的最大值。默认为2M。
3、如果要上传>8M的文件,那么只设置上述四项还不定一定可以。最好对下面的参数也进行设置:
查找max_execution_time = 600 ;每个PHP页面运行的最大时间值(秒),默认30秒。
max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒 。
memory_limit = 8M ;每个PHP页面所吃掉的最大内存,默认8M。

二、修改phpmyadminimport.php文件。(注:这是设置phpmyadmin的,如果你的数据库很大的情况可以通过这个办法将数据库备份下来,而不再是分卷备份)
用写字板打开import.php文件:
1、查找$memory_limit,默认为$memory_limit = 2 * 1024 * 1024;自己修改。
2、下边三四行的位置有同样的语句,自己修改。

三、到这里还不行,IIS的问题。

1)解决在 IIS 6.0 中,无法上传大容量文件的办法:
1、先在服务里关闭 iis admin service 服务。
2、找到 windowssystem32inetsrv 下的 metabase.xml 文件。
3、用写字板打开,找到 ASPMaxRequestEntityAllowed 把它修改为需要的值(默认为:204800,即:200K)。
4、存盘,然后重启 iis admin service 服务,重启IIS。

2)解决在 IIS 6.0 中,无法下载超过4M的附件步骤:
1、先在服务里关闭 iis admin service 服务。
2、找到 windowssystem32inetsrv 下的 metabase.xml 文件。
3、用写字板打开,找到 AspBufferingLimit 把它修改为需要的值(默认为:4194304,即:4MB)。
4、存盘,然后重启 iis admin service 服务,重启IIS。

OK,有以上三步,PHP的2M限制完全搞定!

 
其他网友补充:

在php.ini里面可以设置最大上传文件大小

解决方法:
第一:
在php.ini里面查看如下行:
upload_max_filesize = 8M
post_max_size = 10M
memory_limit = 20M

另外要确认上传的 <form> 里类似下面的这行

<input type="hidden" name="MAX_FILE_SIZE" value="500000">

天翼应用工厂-打造自己的垃圾短信发送平台^_^

组织台球赛期间,看到Troy推荐的天翼应用工厂 – http://www.189works.com/

开放API接口,直接能调用电信的短信,语音,GPRS应用。

正好解决了短信通知运动员的问题。记得上次组织Baan战友聚会的时候,就想如果有一个群发短信的软件多好。

当时在网上找到了解决方案,需要短信猫。需要硬件支持,或者一次性购买多少短信的那种在线服务。想想有风险,就没做。现在有了这个解决方案,真是组织活动者的福音。

事不迟疑,立即开发,花了两个晚上,做了一个简单的页面,经过几次试验,真的很好用,给运动员群发信息,直接点一下,整个办公室的手机一起响。。。O(∩_∩)O哈哈哈~

把程序给大家贡献一下,有兴趣的也去搞个自己的垃圾短信工厂!O(∩_∩)O哈哈~,挨骂别怪我。

step 1.在数据库里做个表

USE [MESSAGE]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[m_user](
 [u_id] [int] IDENTITY(1,1) NOT NULL,
 [u_name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
 [u_gender] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
 [u_group] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
 [u_num] [numeric](18, 0) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

step 2:设计个简单的页面,像下面那样拖几个控件:

Step 3:写几行程序:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.Page.IsPostBack)
        {
            userdata("select * from m_user order by u_group");

            connection.Open();
            DataSet group = new DataSet();
            String grouplist = "select distinct [u_group] from m_user";
            SqlDataAdapter groupad = new SqlDataAdapter(grouplist, connection);
            groupad.Fill(group, "grouplist");
            DropDownList_group.DataSource = group.Tables["grouplist"];
            DropDownList_group.DataTextField = "u_group";
            DropDownList_group.DataValueField = "u_group";
            DropDownList_group.DataBind();
            DropDownList_group.Items.Insert(0, "请选择用户组");

            //DropDownList_user.Items.Insert(0, "请选择用户");

            connection.Close();
        }
    }
    private void userdata(String sqlstring)
    {
        connection.Open();

        SqlDataAdapter myad = new SqlDataAdapter(sqlstring, connection);
        DataSet myds = new DataSet();
        myad.Fill(myds, "users");

        GridView1.DataSource = myds.Tables["users"];
        GridView1.DataBind();
        connection.Close();
    }
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        userdata("select * from m_user ");//重新绑定GridView数据的函数
    }
    protected void Button_send_Click(object sender, EventArgs e)
    {
        //发送方的Ap编号     
        decimal APID = 10011XXX;

        //短信发送能力编号
        decimal FuncID = 10000033;

        //能力管控平台分配给AP的密钥
        string APKey = "XXXXXXXXXXXXXXXXXXXXXXXX";

        int j = 0;

        while (j < GridView1.Rows.Count)
        {
            System.Web.UI.WebControls.CheckBox check = new CheckBox();
            check = (System.Web.UI.WebControls.CheckBox)GridView1.Rows[j].Cells[0].FindControl("CheckBox_select");
            if (check.Checked)
            {
                string num = GridView1.Rows[j].Cells[4].Text.ToString().Trim();
                String name = GridView1.Rows[j].Cells[1].Text.ToString().Trim();
                String chenghu = GridView1.Rows[j].Cells[2].Text.ToString().Trim();

                //发送的信息内容
                string msg = "尊敬的" + name + chenghu + ":" + TextBox_message.Text.ToString();

                //发出短信的IMS号码,可为空
                string from = "";

                //鉴权认证接口地址,可为空。为空时取默认值
                string AuthInterfaceURL = "";

                //发送短信接口地址,可为空。为空时取默认值
                string SendMsgURL = "";

                //发送失败时,返回的错误提示
                string errMsg = "";

                int ret = AMCP.PSO.SendManage.Sen
d(APID, FuncID, APKey, num, msg, from, AuthInterfaceURL, SendMsgURL, out errMsg);
                if (ret == 0)
                {
                    //短信发送成功
                    //在这里Ap可以写上自己的业务逻辑
                }
                else
                {
                    //失败
                    //可以根据 errMsg 查询失败原因
                }
            }
            j++;
        }
        Label_error.Visible = true;
        Label_error.Text = "发送成功!";

    }
    protected void Button_filter_Click(object sender, EventArgs e)
    {
        String condition = "select * from m_user where 1 = 1 ";
        if (DropDownList_group.SelectedIndex != 0)
        {
            condition = condition + " and u_group = ‘" + DropDownList_group.SelectedValue.ToString() + "’";
        }
        if (DropDownList_user.SelectedIndex != 0)
        {
            condition = condition + " and u_name = ‘" + DropDownList_user.SelectedValue.ToString() + "’";
        }

        userdata(condition);
    }
    protected void DropDownList_group_SelectedIndexChanged(object sender, EventArgs e)
    {
        connection.Open();
        DataSet users = new DataSet();
        String userlist = "select u_name from m_user where u_group = ‘" + DropDownList_group.SelectedValue.ToString().Trim() + "’";
        SqlDataAdapter userad = new SqlDataAdapter(userlist, connection);
        userad.Fill(users, "userlist");
        DropDownList_user.DataSource = users.Tables["userlist"];
        DropDownList_user.DataTextField = "u_name";
        DropDownList_user.DataValueField = "u_name";
        DropDownList_user.DataBind();
        DropDownList_user.Items.Insert(0, "请选择用户");

        connection.Close();
    }

Step 4:在数据库里放几条数据,试验一下自己的垃圾短信工厂吧!O(∩_∩)O哈哈~,哎骂别怪我!