客运综合管理系统项目解析-调度管理-临时加班

来源:互联网 发布:java离线安装包 32位 编辑:程序博客网 时间:2024/04/28 23:40

2.2-1 临时加班:

        该功能模块可与售票、检票管理联动进行。如调度进行临时加班处理后,票房就可以对新增加的班次进行售票,无需人工通知。而班次延时的执行,又使对应班次的售票、检票时间也相应延长。功能如图2.2-1:


从界面上可以看到我们这里用到工具箱的控件有:

控件名称

说明

容器控件()GroupBox

每个控件都可以根据需要的功能更改其属性,右键查看.也可以进行编辑事件-->找到一个闪电图标点击查看需要的事件,例如:查询按钮(btnSrean)是修改过按钮文本Text属性的重命名!

btnSrean_Click这是单击查询事件,还有很多的事件根据项目需求找到来编辑.

 

公共控件(下拉框)ComboBox

公共控件(文字描写)Label

公共控件(按钮)Button

公共控件(日期)DateTimePicker

公共控件(文本框)TextBox

所有Windows窗体(dgv)DataGridView

公共控件(单选框)CheckBox

 

临时加班功能实现:

第一步:数据库

1、  表与表关系(图2.2-2)


从上面可以知道用到的表有:

表1:员工表 (StaffList)

主要包含如下字段信息:(说明)

列名

数据类型

主键/外键

说明

StaffID

int - Identity

主键

员工ID

StaffNumber

char (100)

 

员工编号

StaffName

char (100)

 

员工姓名

Sex

char (100)

 

性别

IdentityCardNumber

char (100)

 

身份证号

HomeLocation

char (100)

 

家庭地址

Phone

char (100)

 

电话

StaffTypeID

int

外键

员工类型ID

OrganizationID

int

外键

机构ID

StationID

int

外键

站点ID

Remarks

char (100)

 

备注

LeaveOfficeNo

bit

 

离职否

InvokingNo

bit

 

调用否

Date

datetime

 

日期

Photo

nvarchar (3000)

 

相片

表2:站点表  (StationList)

主要包含如下字段信息:(说明)

列名

数据类型

主键/外键

说明

StationID

int - Identity

主键

站点ID

StationNumber

char (100)

 

站点编号

StationName

char (100)

 

站点名称

WindowID

int

外键

窗口ID

StopNo

bit

 

调用否

表3:司机表  (DriverList)

主要包含如下字段信息:(说明)

列名

数据类型

主键/外键

说明

DriverID

int - Identity

主键

司机ID

DriverNumber

char (100)

 

司机编号

WorkValue

char (100)

 

工价

DriveCardNumber

char (100)

 

驾驶证号

GrantDriveVehicleTypeID

int

外键

准驾车型ID

FollowEnterpriseQualificationCard

char (100)

 

从业资格证

CardCheckDate

datetime

 

证件验期

Remarks

char (100)

 

备注

MountGuardCardValidityDate

datetime

 

上岗证有效期

CardLicenseNewsID

int

外键

证照信息ID

StaffID

int

外键

员工ID

Picture

char (100)

 

图片

下面开始编写数据库储存过程:

        数据库对应逻辑层(BLL)和界面层(UIL)文件夹:SchedulingManage_frmTemporaryOvertime(临时加班窗体和对应的类的存储过程)

USE [客运综合管理系统2015]GO/****** Object:  StoredProcedure [dbo].[SchedulingManage_frmTemporaryOvertime]    Script Date: 05/30/2015 19:42:38 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:<Author,,Name>-- Create date: <Create Date,,>-- Description:<Description,,>-- =============================================ALTER PROCEDURE [dbo].[SchedulingManage_frmTemporaryOvertime]--调度管理-临时加班    @Type CHAR(200)='',@StartTime DATETIME='',@EndTime DATETIME='',@TimeLong CHAR(100)='',    @OvertimeWages  DECIMAL(18,3)=0,@StaffID INT=0,@NullifyNo BIT=0ASBEGIN    IF @Type='frmTemporaryOvertime_Load_cboStaffName'--绑定cboStaffNameBEGIN    SELECT     StaffID, LTRIM(RTRIM(StaffName))AS StaffName    FROM       StaffList    END    IF @Type='frmTemporaryOvertime_Load_cboCheckTicketMouth'--绑定cboCheckTicketMouthBEGIN    SELECT     StationID, LTRIM(RTRIM(StationName))AS StationName    FROM       StationList    END    IF @Type='frmTemporaryOvertime_Load_dgvStaffNews'--绑定dgvStaffNewsBEGIN    SELECT     StaffList.StaffID, LTRIM(RTRIM(StaffList.StaffNumber))AS StaffNumber, LTRIM(RTRIM(StaffList.StaffName))AS StaffName,                LTRIM(RTRIM(StaffList.Sex))AS Sex, LTRIM(RTRIM(StaffList.IdentityCardNumber))AS IdentityCardNumber,                LTRIM(RTRIM(StaffList.HomeLocation))AS HomeLocation, LTRIM(RTRIM(StaffList.Phone))AS Phone, LTRIM(RTRIM(StationList.StationName))AS StationName,                LTRIM(RTRIM(StaffList.Remarks))AS Remarks,                StaffList.LeaveOfficeNo, StaffList.InvokingNo    FROM       StaffList INNER JOIN               StationList ON StaffList.StationID = StationList.StationID    ORDER BY   StaffList.StaffID DESC              END    IF @Type='frmTemporaryOvertime_Insert_dgvTemporaryOvertime'--加班dgvTemporaryOvertimeBEGIN    INSERT INTO OvertimeList               (StartTime, EndTime, TimeLong, OvertimeWages, StaffID,NullifyNo)    VALUES     (@StartTime,@EndTime,@TimeLong,@OvertimeWages,@StaffID,0)    END    IF @Type='frmTemporaryOvertime_Load_dgvTemporaryOvertime'--加班信息BEGIN    SELECT     OvertimeID, StartTime, EndTime, TimeLong, OvertimeWages, StaffID, NullifyNo    FROM       OvertimeList    WHERE      OvertimeList.StaffID=@StaffID    END    IF @Type='frmTemporaryOvertime_Load_AlldgvTemporaryOvertime'--全部加班信息显示BEGIN    SELECT     OvertimeID, StartTime, EndTime, LTRIM(RTRIM(TimeLong))AS TimeLong,                LTRIM(RTRIM(OvertimeWages))AS OvertimeWages, NullifyNo, StaffID    FROM       OvertimeList     ORDER BY   OvertimeList.StartTime DESC--数据按日期最新排序    ENDEND

第二步:服务端BLL(逻辑层)写方法<---调用数据库代码:

对应文件夹:SchedulingManage_frmTemporaryOvertime.cs(临时加班类)

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.ServiceModel;//添加命名空间using System.Data;//添加命名空间using System.Data.SqlClient;//添加命名空间namespace BLL客运综合管理系统.SchedulingManage{    [ServiceContract]//添加服务标签    public class frmTemporaryOvertime    {        DALPublic.DALMethod myDALMethod = new DALPublic.DALMethod();//实例化调用数据库存储过程方法        #region 绑定cboStaffName        [OperationContract]//添加行为标签        public DataSet frmTemporaryOvertime_Load_cboStaffName()//编写方法        {            SqlParameter[] mySqlParameters = {                                                new SqlParameter("@Type", SqlDbType.Char),                                             };            mySqlParameters[0].Value = "frmTemporaryOvertime_Load_cboStaffName";//方法名称对应数据库方法名称            DataTable dt = myDALMethod.QueryDataTable("SchedulingManage_frmTemporaryOvertime", mySqlParameters);            DataSet ds = new DataSet();            ds.Tables.Add(dt);            return ds        }        #endregion        #region 绑定cboCheckTicketMouth        [OperationContract]        public DataSet frmTemporaryOvertime_Load_cboCheckTicketMouth()        {            SqlParameter[] mySqlParameters = {                                                new SqlParameter("@Type", SqlDbType.Char),                                             };            mySqlParameters[0].Value = "frmTemporaryOvertime_Load_cboCheckTicketMouth";            DataTable dt = myDALMethod.QueryDataTable("SchedulingManage_frmTemporaryOvertime", mySqlParameters);            DataSet ds = new DataSet();            ds.Tables.Add(dt);            return ds;        }        #endregion        #region 绑定dgvStaffNews员工信息        [OperationContract]        public DataSet frmTemporaryOvertime_Load_dgvStaffNews()        {            SqlParameter[] mySqlParameters = {                                                new SqlParameter("@Type", SqlDbType.Char),                                             };            mySqlParameters[0].Value = "frmTemporaryOvertime_Load_dgvStaffNews";            DataTable dt = myDALMethod.QueryDataTable("SchedulingManage_frmTemporaryOvertime", mySqlParameters);            DataSet ds = new DataSet();            ds.Tables.Add(dt);            return ds;        }        #endregion        #region 加班dgvTemporaryOvertime信息(Insert)        [OperationContract]        public int frmTemporaryOvertime_Insert_dgvTemporaryOvertime(DateTime dtStartTime, DateTime dtEndTime, string strTimeLong, decimal decOvertimeWages, int intStaffID)        {            SqlParameter[] mySqlParameters = {                                                new SqlParameter("@Type", SqlDbType.Char),                                                 new SqlParameter("@StartTime", SqlDbType.DateTime),                                                  new SqlParameter("@EndTime", SqlDbType.DateTime),                                                   new SqlParameter("@TimeLong", SqlDbType.Char),                                                    new SqlParameter("@OvertimeWages", SqlDbType.Decimal),                                                     new SqlParameter("@StaffID", SqlDbType.Int),                                             };            mySqlParameters[0].Value = "frmTemporaryOvertime_Insert_dgvTemporaryOvertime";             mySqlParameters[1].Value =dtStartTime;              mySqlParameters[2].Value =dtEndTime;               mySqlParameters[3].Value =strTimeLong;                mySqlParameters[4].Value = decOvertimeWages;                 mySqlParameters[5].Value = intStaffID;                  return myDALMethod.UpdateData("SchedulingManage_frmTemporaryOvertime", mySqlParameters);        }        #endregion        #region 根据StaffID查询加班信息dgvTemporaryOvertime        [OperationContract]        public DataSet frmTemporaryOvertime_Load_dgvTemporaryOvertime(int intStaffID)        {            SqlParameter[] mySqlParameters = {                                                new SqlParameter("@Type", SqlDbType.Char),                                                new SqlParameter("@StaffID", SqlDbType.Int),                                             };            mySqlParameters[0].Value = "frmTemporaryOvertime_Load_dgvTemporaryOvertime";            mySqlParameters[1].Value = intStaffID;            DataTable dt = myDALMethod.QueryDataTable("SchedulingManage_frmTemporaryOvertime", mySqlParameters);            DataSet ds = new DataSet();            ds.Tables.Add(dt);            return ds;        }        #endregion        #region 查询全部加班信息dgvTemporaryOvertime信息        [OperationContract]        public DataSet frmTemporaryOvertime_Load_AlldgvTemporaryOvertime()        {            SqlParameter[] mySqlParameters = {                                                new SqlParameter("@Type", SqlDbType.Char),                                             };            mySqlParameters[0].Value = "frmTemporaryOvertime_Load_AlldgvTemporaryOvertime";            DataTable dt = myDALMethod.QueryDataTable("SchedulingManage_frmTemporaryOvertime", mySqlParameters);            DataSet ds = new DataSet();            ds.Tables.Add(dt);            return ds;        }        #endregion    }}

第三步:客户端UIL(界面层)写调用方法<---调用BLL(逻辑层)代码:

对应文件夹:SchedulingManage_frmTemporaryOvertime.cs(临时加班窗体)对应各种功能详解:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;//添加命名空间namespace XX集团客运综合管理系统client.SchedulingManage{    public partial class frmTemporaryOvertime : Form    {        public frmTemporaryOvertime()        {            InitializeComponent();        }        public delegate void ChangeFormColor(bool topmost);        public delegate void ChangeFormColor1(bool topmost1);        public event ChangeFormColor ChangeColor;//自定义方法调用窗体颜色        public event ChangeFormColor1 ChangeColor1;//自定义方法调用        BLL客运综合管理系统.SchedulingManage.frmTemporaryOvertime.frmTemporaryOvertimeClient myfrmTemporaryOvertimeClient =            new BLL客运综合管理系统.SchedulingManage.frmTemporaryOvertime.frmTemporaryOvertimeClient();//实例化调用BLL方法        private void frmLingShiJiaBan_FormClosing(object sender, FormClosingEventArgs e)        {            ChangeColor1(true);            ChangeColor(true);        }        #region frmTemporaryOvertime_Load事件功能        DataTable dtdgvStaffNews;        DataTable dtAlldgvTemporaryOvertime;//声明全局变量使用        private void frmTemporaryOvertime_Load(object sender, EventArgs e)        {            try            {                DataTable dtcboStaffName = myfrmTemporaryOvertimeClient.frmTemporaryOvertime_Load_cboStaffName().Tables[0];//绑定数据DataTable                cboStaffName.DataSource = dtcboStaffName;//绑定员工姓名下拉框                cboStaffName.DisplayMember = "StaffName";                cboStaffName.ValueMember = "StaffID";                cboStaffName.SelectedValue = -1;                cboOvertimeMan.DataSource = dtcboStaffName.Copy();//绑定加班人下拉框                cboOvertimeMan.DisplayMember = "StaffName";                cboOvertimeMan.ValueMember = "StaffID";                cboOvertimeMan.SelectedValue = -1;                DataTable dtcboCheckTicketMouth = myfrmTemporaryOvertimeClient.frmTemporaryOvertime_Load_cboCheckTicketMouth().Tables[0];                cboCheckTicketMouth.DataSource = dtcboCheckTicketMouth;//绑定检票口下拉框                cboCheckTicketMouth.DisplayMember = "StationName";                cboCheckTicketMouth.ValueMember = "StationID";                cboCheckTicketMouth.SelectedValue = -1;                dtdgvStaffNews = myfrmTemporaryOvertimeClient.frmTemporaryOvertime_Load_dgvStaffNews().Tables[0];                dgvStaffNews.DataSource = dtdgvStaffNews;//查询dgv员工信息                this.dgvStaffNews = SYS_PublicStaticClass.SetDgv(dgvStaffNews);//dgv序号                this.dgvStaffNews.CellBorderStyle = DataGridViewCellBorderStyle.Sunken;//设置dgv三维凹陷边框                this.dgvStaffNews.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;//设置dgv列标题居中                this.dgvStaffNews.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;//设置dgv单元格内容居中                string[] strStaffNumber = new string[dtdgvStaffNews.Rows.Count];                for (int i = 0; i < dtdgvStaffNews.Rows.Count; i++)                {                    strStaffNumber[i] = dtdgvStaffNews.Rows[i]["StaffNumber"].ToString().Trim();                }                txtStaffNumber.AutoCompleteSource = AutoCompleteSource.CustomSource;//自动完成源--员工编号                txtStaffNumber.AutoCompleteCustomSource.AddRange(strStaffNumber);                txtStaffNumber.AutoCompleteMode = AutoCompleteMode.SuggestAppend;                string[] strRemarks = new string[dtdgvStaffNews.Rows.Count];                for (int j = 0; j < dtdgvStaffNews.Rows.Count; j++)                {                    strRemarks[j] = dtdgvStaffNews.Rows[j]["Remarks"].ToString().Trim();                }                txtRemarks.AutoCompleteSource = AutoCompleteSource.CustomSource;//自动完成源方法--备注                txtRemarks.AutoCompleteCustomSource.AddRange(strRemarks);                txtRemarks.AutoCompleteMode = AutoCompleteMode.SuggestAppend;                dtAlldgvTemporaryOvertime = myfrmTemporaryOvertimeClient.frmTemporaryOvertime_Load_AlldgvTemporaryOvertime().Tables[0];//绑定DGV信息                dgvTemporaryOvertime.DataSource = dtAlldgvTemporaryOvertime;//查询DGV全部加班信息                this.dgvTemporaryOvertime = SYS_PublicStaticClass.SetDgv(dgvTemporaryOvertime);//序号                this.dgvTemporaryOvertime.CellBorderStyle = DataGridViewCellBorderStyle.Sunken;//设置dgv三维凹陷边框                this.dgvTemporaryOvertime.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;//设置dgv列标题居中                this.dgvTemporaryOvertime.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;//设置dgv单元格内容居中                dtpStartTime.Format = DateTimePickerFormat.Custom;//设置时间格式2015-04-15 16:26:00                dtpStartTime.CustomFormat = "yyyy-MM-dd HH:mm:ss";                dtpEndTime.Format = DateTimePickerFormat.Custom;                dtpEndTime.CustomFormat = "yyyy-MM-dd HH:mm:ss";            }            catch             {                 MessageBox.Show("请认真检查绑定的数据是否有问题!"+"\n否则系统会崩溃!!!");//提示框            }        }        #endregion        #region 多条件查询功能        private void btnSearch_Click(object sender, EventArgs e)        {            try            {                if (chkInvokingNoOne.Checked == true)//判断绑定选择否                {                    DataView dvdgvStaffNewsOne = new DataView(dtdgvStaffNews);//实例化DataView调用                    dvdgvStaffNewsOne.RowFilter = "InvokingNo =" + chkInvokingNo.Checked;                    dtdgvStaffNews = dvdgvStaffNewsOne.ToTable();                    dgvStaffNews.DataSource = dtdgvStaffNews;//绑定DGV数据                    DataView dvdgvStaffNews = new DataView(dtdgvStaffNews);                    string strcboStaffName = "";//声明变量并赋值                    string strtxtStaffNumber = "";                    string strcboCheckTicketMouth = "";                    string strtxtRemarks = "";                    if (cboStaffName.Text != "")//判断文本是否为空                    {                        strcboStaffName = cboStaffName.Text.ToString().Trim();//获取文本值                    }                    if (txtStaffNumber.Text != "")                    {                        strtxtStaffNumber = txtStaffNumber.Text.ToString().Trim();                    }                    if (cboCheckTicketMouth.Text != "")                    {                        strcboCheckTicketMouth = cboCheckTicketMouth.Text.Trim();                    }                    if (txtRemarks.Text != "")                    {                        strtxtRemarks = txtRemarks.Text.ToString().Trim();                    }                    dvdgvStaffNews.RowFilter = "StaffName LIKE '%" + strcboStaffName + "%'AND StaffNumber LIKE '%" + strtxtStaffNumber + "%'AND StationName LIKE '%" + strcboCheckTicketMouth +                    "%'AND Remarks LIKE '%" + strtxtRemarks + "%'";                    dgvStaffNews.DataSource = dvdgvStaffNews.ToTable();//查询相应数据                }                if (chkInvokingNoOne.Checked == false)//当单选框为没选择状态时                {                    DataTable dtdgvStaffNewsOne = myfrmTemporaryOvertimeClient.frmTemporaryOvertime_Load_dgvStaffNews().Tables[0];//获取DGV数据                    DataView dvdgvStaffNews = new DataView(dtdgvStaffNewsOne);                    string strcboStaffName = "";                    string strtxtStaffNumber = "";                    string strcboCheckTicketMouth = "";                    string strtxtRemarks = "";//声明变量并赋值                    if (cboStaffName.Text != "")                    {                        strcboStaffName = cboStaffName.Text.ToString().Trim();//获取文本值                    }                    if (txtStaffNumber.Text != "")                    {                        strtxtStaffNumber = txtStaffNumber.Text.ToString().Trim();                    }                    if (cboCheckTicketMouth.Text != "")                    {                        strcboCheckTicketMouth = cboCheckTicketMouth.Text.Trim();                    }                    if (txtRemarks.Text != "")                    {                        strtxtRemarks = txtRemarks.Text.ToString().Trim();                    }                    dvdgvStaffNews.RowFilter = "StaffName LIKE '%" + strcboStaffName + "%'AND StaffNumber LIKE '%" + strtxtStaffNumber + "%'AND StationName LIKE '%" + strcboCheckTicketMouth +                    "%'AND Remarks LIKE '%" + strtxtRemarks + "%'";                    dgvStaffNews.DataSource = dvdgvStaffNews.ToTable();                }            }            catch            {                MessageBox.Show("查询失败!字符串拼接是否有问题?请检查!!!");//显示提示框内容            }        }        #endregion        #region 加班功能        private void btnOvertime_Click(object sender, EventArgs e)        {            if (txtOvertimeWages.Text == "" || dtpStartTime.Value >= dtpEndTime.Value)//判断两个条件是否同时成立            {                MessageBox.Show("加班工资不能为空!或者结束时间应大于开始时间!!!");//提示框                return;            }            if (cboOvertimeMan.Text == "")            {                MessageBox.Show("对不起!没有选择加班人则不能加班!!!");                return;            }            else            {                if (MessageBox.Show("您确定要加班?", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Question) == DialogResult.OK)                {                    try                    {                        DateTime dtStartTime = Convert.ToDateTime(dtpStartTime.Value.ToString().Trim());//时间格式转换                        DateTime dtEndTime = Convert.ToDateTime(dtpEndTime.Value.ToString().Trim());                        string strTimeLong = (dtEndTime - dtStartTime).ToString();//文本时长的结算                        decimal decOvertimeWages = Convert.ToDecimal(txtOvertimeWages.Text.ToString().Trim());                        int intStaffID = Convert.ToInt32(cboOvertimeMan.SelectedValue);//获取ID                        int OvertimeCount = myfrmTemporaryOvertimeClient.frmTemporaryOvertime_Insert_dgvTemporaryOvertime(dtStartTime, dtEndTime, strTimeLong, decOvertimeWages, intStaffID);                        if (OvertimeCount > 0)                        {                            MessageBox.Show("加班成功!");//提示框                            dgvStaffNews.DataSource = dtdgvStaffNews;//刷新查询员工信息                            dgvTemporaryOvertime.DataSource = dtAlldgvTemporaryOvertime;//刷新查询全部加班信息                           // btnReset_Click(null, null);                        }                        else                        {                            MessageBox.Show("加班失败了!");                            dgvStaffNews.DataSource = dtdgvStaffNews;//刷新查询员工信息                            dgvTemporaryOvertime.DataSource = dtAlldgvTemporaryOvertime;//刷新查询全部加班信息                            //btnReset_Click(null, null);                            return;                        }                    }                    catch                     {                        MessageBox.Show("数据有问题!请检查!!!");                    }                }            }        }        #endregion        #region 重置功能        private void btnReset_Click(object sender, EventArgs e)        {            cboStaffName.SelectedValue = -1;//隐藏值            txtStaffNumber.Text = "";//清空文本            cboCheckTicketMouth.SelectedValue = -1;            txtRemarks.Text = "";            chkInvokingNo.Checked = false;            txtOvertimeWages.Text = "";            dgvStaffNews.DataSource = dtdgvStaffNews;//刷新查询员工信息            dgvTemporaryOvertime.DataSource = dtAlldgvTemporaryOvertime;//刷新查询全部加班信息        }        #endregion            #region dgvStaffNews单击获取ID功能        private void dgvStaffNews_CellClick(object sender, DataGridViewCellEventArgs e)//事件        {            PublicStaticObject.intStaffID = Convert.ToInt32(dgvStaffNews.CurrentRow.Cells["员工ID"].Value);//获取ID            DataTable dtdgvTemporaryOvertime = myfrmTemporaryOvertimeClient.frmTemporaryOvertime_Load_dgvTemporaryOvertime(PublicStaticObject.intStaffID).Tables[0];            dgvTemporaryOvertime.DataSource = dtdgvTemporaryOvertime;//根据员工ID查询加班信息        }        #endregion    }}

以上是调度管理-临时加班功能实现步骤:数据库-->BLL-->UIL

-------实现功能待续!!!
                   以上仅供学习参考,禁止商业用途!!!











0 0
原创粉丝点击