《第11章自定义请假员工工作流》由会员分享,可在线阅读,更多相关《第11章自定义请假员工工作流(27页珍藏版)》请在金锄头文库上搜索。
1、舱忘啊秘瞥钨殖丹林饮韶焦寒磐签腾码牧挟籍愤刚产冤佐虱誊轿固腆垄巴第11章自定义请假员工工作流第11章自定义请假员工工作流第第11章章 自定义员工请自定义员工请 假审批工作流假审批工作流 大连理工大学电子音像出版社出版茂恫穗辜恒吸鹃附顾幂雷皂拢蠢潦吮淑蝉箱啦棠誉伊此呵散琶宾估剔术异第11章自定义请假员工工作流第11章自定义请假员工工作流舱忘啊秘瞥钨殖丹林饮韶焦寒磐签腾码牧挟籍愤刚产冤佐虱誊轿固腆垄巴第11章自定义请假员工工作流第11章自定义请假员工工作流第第11章章 自定义员工请假审批工作流自定义员工请假审批工作流 目的和要求:掌握视图的定义与使用掌握视图的定义与使用掌握触发器的定义与使用掌握触
2、发器的定义与使用掌握掌握 ADO.NET事务的定义与使用事务的定义与使用重点和难点:触发器的定义与使用触发器的定义与使用ADO.NET事务的定义与使用事务的定义与使用必价叹囊布榨索肢脏常羞苫贪侍足撵魔趾毕矽荧址痢妇抠威酗琢栅杂丧慕第11章自定义请假员工工作流第11章自定义请假员工工作流3模块业务描述模块业务描述 第一级审批权限第一级审批权限: 如果请假如果请假10天以上天以上, 由员工提交请假申报,经教研由员工提交请假申报,经教研室主任批准后,分别经系主任、副院长、院长逐级审批后室主任批准后,分别经系主任、副院长、院长逐级审批后,最后由董最后由董事长批准终止流程。事长批准终止流程。第二级审批权
3、限:如果请假第二级审批权限:如果请假7-10天天, 由员工提交请假申报,经教研室由员工提交请假申报,经教研室主任批准后,分别由系主任、副院长逐级审批主任批准后,分别由系主任、副院长逐级审批, 最后由院长审批终止最后由院长审批终止流程。流程。第三级审批权限:如果请假第三级审批权限:如果请假3-7天天, 由员工提交请假申报,经教研室主由员工提交请假申报,经教研室主任批准后,再系主任审批,最后由副院长审批终止流程。任批准后,再系主任审批,最后由副院长审批终止流程。第四级审批权限第四级审批权限: 如果请假如果请假1-3天天, 由员工提交请假申报,教研室主任由员工提交请假申报,教研室主任批准批准,呈送经
4、系主任审批终止流程。呈送经系主任审批终止流程。第五级审批权限第五级审批权限: 如果请假如果请假1天,由员工提交请假申报,教研室主任批天,由员工提交请假申报,教研室主任批准终止流程。准终止流程。檄跑粥城援点糖意致称耙邹池浸堑火沁陆伦锯睦赤碳视返羌汁还叼泼鲸雁第11章自定义请假员工工作流第11章自定义请假员工工作流4模块模块 UML图设计图设计 鸦触照改酌亦辆诅针忻伞犹境盾饼绞哪讶囤芹壮恢黑蓄议琳禾诧窟绥控舰第11章自定义请假员工工作流第11章自定义请假员工工作流5模块界面设计模块界面设计 笔阀弥染烦救炭歌坷喂脐钉件毖震蛊一彭伶郊东睛齿处瞒睛些赂涵蜗弄柯第11章自定义请假员工工作流第11章自定义请
5、假员工工作流6基础知识基础知识 视图定义视图定义 视图是一张虚拟表,它数据来源于基本表。优点便于数据的操作,能视图是一张虚拟表,它数据来源于基本表。优点便于数据的操作,能将几张表的中集中起来,可以简化操作将几张表的中集中起来,可以简化操作 示例一示例一:CREATE VIEW view_name AS select_statement二例二二例二:视图示例一:视图示例一: CREATE VIEW SELECTEMPDEPASselect EmployeeID,EmployeeName,DepartmentName from dbo.Employee E,dbo.Department D whe
6、re D.DepID=E.DepartmentID贮粕吓驾拔词阔洲尹并帽情押平逐违汀倡翅骇倾怖住询帆日甭屿侩纫眩税第11章自定义请假员工工作流第11章自定义请假员工工作流7触发器定义触发器定义 触发器是一种特殊的存储过程,它不能显示地被调用,触发器是一种特殊的存储过程,它不能显示地被调用,SQL Server 允许为允许为 INSERT、UPDATE、DELETE 创建创建触发器,当在表(视图)中插入、更新、删除记录时,触触发器,当在表(视图)中插入、更新、删除记录时,触发一个或一系列发一个或一系列 T-SQL 语句。语句。创建触发器通常有两种方式,创建触发器通常有两种方式,一种是使用企业管理
7、器创建触发器,一种是使用企业管理器创建触发器,另一种是使用另一种是使用T-SQL代码创建触发器代码创建触发器 苔倘梆撇烃篱锤享疗瘩复茁导碳虫棺濒撒磺道派薛斋水诅呈宇昭怖诲椿待第11章自定义请假员工工作流第11章自定义请假员工工作流8语法格式语法格式语法格式为语法格式为:CREATE TRIGGER 触发器名称触发器名称ON 表名表名FOR INSERT、UPDATE 或或 DELETEAST-SQL 语句语句勿头婶模宏茧均立茸换孰说诈饮辞负今哗臼墨互东寞冬院从组禁堆辉闭择第11章自定义请假员工工作流第11章自定义请假员工工作流9触发器示例一触发器示例一 CREATE TRIGGER dbo.I
8、nsertLR ON dbo.LeaveRecord FOR INSERTAS BEGINSET NOCOUNT ON;declare RecordID intdeclare EmpID int select RecordID=RecordID,EmpID=EmpID from insertedINSERT INTO dbo.LEAVE_CHECK(leave_bill_id,leave_proposerid,check_employee_level,check_type)values(RecordID,EmpID,5,1)END匹滦陕杀巢百日屉斟拆会恍趴择耳充稻仆宿迷腮码绣节邢冉忙企嘻志岭艾
9、第11章自定义请假员工工作流第11章自定义请假员工工作流10ADO.NET事务事务 事务专门用于操作数据库时,保持数据一致性,事务专门用于操作数据库时,保持数据一致性,如:学生表与班级表,每增加一名学生,便要在班级表的如:学生表与班级表,每增加一名学生,便要在班级表的总人数列上增加一人。如果学生有一名退学,便要在班级总人数列上增加一人。如果学生有一名退学,便要在班级表总人数列中减去一人。表总人数列中减去一人。 为了保持两张表数据的一致性。为了保持两张表数据的一致性。可以使用事务对其进行处理。使用事务处理要用到名称空可以使用事务对其进行处理。使用事务处理要用到名称空间。间。醇戮胺春貉孤瓜遂谆鞭介
10、龚梧体税达岳搜氦茸苛昌汛使喊疆兔狭才评哪签第11章自定义请假员工工作流第11章自定义请假员工工作流11 SqlTransaction mytrans; / mytrans为事务类对象为事务类对象 SqlCommand comm = conn.CreateCommand(); mytrans = conn.BeginTransaction();/连接类对连接类对象的象的BeginTransaction()方法方法 comm.Transaction = mytrans;/ 命令类的命令类的Transaction属性属性榔留斜批送糊谭乖八乱腰痴爬麦煤并嘻鞘舞俩饶粱挫阮怠姬鸳荷俭疚锑氯第11章自定义请
11、假员工工作流第11章自定义请假员工工作流12UML对象时序图讲解对象时序图讲解 栏圭薯细澳运捻骆誊屯正粹坍掉历均裕荫企犊抚庇鹅韵磊惟政蒙涤毖唆薛第11章自定义请假员工工作流第11章自定义请假员工工作流13数据库共用类数据库共用类 :方法一方法一. ExecuteNonQuery public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter commandParameters) SqlCommand cmd = new SqlC
12、ommand(); using (SqlConnection conn = new SqlConnection(connectionString) PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; 胞畔召讹们后罩碰馆码泛镑派踏衍世庚某喝彭馒纫唾弥碍护昆隅众盅蝇梆第11章自定义请假员工工作流第11章自定义请假员工工作流14方法二方法二. ExecuteNonQuerypu
13、blic static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter commandParameters) SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clea
14、r(); return val; 西竖怖身侈礁饰氟债便节员磋罐拢湛臻晤沼倪猛砧塑澄痢歧臣卯巴鸭逮晶第11章自定义请假员工工作流第11章自定义请假员工工作流15方法三方法三. PrepareCommand private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter cmdParms) if (conn.State != ConnectionState.Open) conn.
15、Open(); cmd.Connection = conn; cmd.CommandText = cmdText; if (trans != null) cmd.Transaction = trans; cmd.CommandType = cmdType; if (cmdParms != null) foreach (SqlParameter parm in cmdParms) cmd.Parameters.Add(parm); 停剪搪扒让阁石猛疏柑卤馆痕刑硕葡大班即唯庄靛槽灭茁攘昔仍相醛旁膛第11章自定义请假员工工作流第11章自定义请假员工工作流16方法四方法四. ExecuteScalar
16、 public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter commandParameters) SqlCommand cmd = new SqlCommand(); using (SqlConnection connection = new SqlConnection(connectionString) PrepareCommand(cmd, connection, null, cmdType, cmdText, co
17、mmandParameters); object val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; 绣坞奠短篆陆残戚迭驴鹊潭煌虞青潘伶粤裔坛腐拒两眉贷罩撑县耙倪匝揖第11章自定义请假员工工作流第11章自定义请假员工工作流17方法五方法五. ExecuteReader public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter comm
18、andParameters) SqlCommand cmd = new SqlCommand(); SqlConnection conn = new SqlConnection(connectionString); try PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return rdr; catch conn
19、.Close(); throw; 娶揖嵌咸汉此药悬重袍望睛掷嚼顶衡互鼻敛舔肺柬豢亡陀死址戚孰痉邮淮第11章自定义请假员工工作流第11章自定义请假员工工作流18数据库操作类数据库操作类 :方法一方法一. GetLeave public int GetLeave(int Inputday) SqlParameter param = new SqlParameter(inputDay, SqlDbType.Int) ; param0.Value = Inputday; string sqlSelect = selConfigLeave; int row=Convert.ToInt32(SqlHelp
20、er.ExecuteScalar(connectionstr,CommandType.StoredProcedure,sqlSelect,param); return row; 着鹅财烹余凉收诬热熔均挺门无型足藩畜恩依磅陆暇砖板商堰姚双洁审制第11章自定义请假员工工作流第11章自定义请假员工工作流19方法二方法二. GetLC。 public int GetLC(int LC) SqlParameter param = new SqlParameter(LC, SqlDbType.Int) ; param0.Value = LC; string sqlSelect = select check
21、_employee_level from dbo.LEAVE_CHECK where leave_bill_id=LC; int row = Convert.ToInt32(SqlHelper.ExecuteScalar(connectionstr, CommandType.Text, sqlSelect, param); return row; 酸舱王箩坪忍蒙喊擂嫂蜒匝硅甫潜谁榨全股经胡诱才聘野积呼撇握键饲称第11章自定义请假员工工作流第11章自定义请假员工工作流20方法三方法三. updateApprove public int updateApprove(int leaveid, int
22、 check_type) SqlParameter param = new SqlParameter(leaveid, SqlDbType.Int), new SqlParameter(check_type, SqlDbType.Int) ; param0.Value = leaveid; param1.Value = check_type; string sqlUpdate = updateLC; return SqlHelper.ExecuteNonQuery(connectionstr, CommandType.StoredProcedure, sqlUpdate, param); 峭攀
23、挟拯幌阳让埋氟干糟鹰萌结茨琉蚁自噎零菇髓策魄乘湘高抿窍掌蟹吟第11章自定义请假员工工作流第11章自定义请假员工工作流21 方法四方法四. InsertLeaveRecord public int InsertLeaveRecord(LeaveRecordInfo LRInfo) SqlParameter param = new SqlParameter(EmpID, SqlDbType.Int), new SqlParameter(LeaveTypeID, SqlDbType.Int), new SqlParameter(BeginDate, SqlDbType.DateTime), new
24、SqlParameter(EndDate, SqlDbType.DateTime); param0.Value = LRInfo.EmpID; param1.Value = LRInfo.LeaveTypeID; param2.Value = LRInfo.BeginDate; param3.Value = LRInfo.EndDate; string sqlInsert = insert into dbo.LeaveRecord(EmpID,LeaveTypeID,BeginDate,EndDate,LeaveState)values(EmpID,LeaveTypeID,BeginDate,
25、EndDate,1); return SqlHelper.ExecuteNonQuery(connectionstr, CommandType.Text, sqlInsert, param); 颤爆眶拽南焚艾钻银沁氢刹转琢筏誉灵台墒贝落镐悯彝默鹏食悸金椿攒酉第11章自定义请假员工工作流第11章自定义请假员工工作流22方法五方法五. GetEmpName public List GetEmpName() List ListEmp = new List(); EmployeeInfo emp = null; string sqlSelect = select EmpID, EmployeeName
26、 from dbo.Employee; SqlDataReader dr = SqlHelper.ExecuteReader(connectionstr, CommandType.Text, sqlSelect, null); while (dr.Read() emp = new EmployeeInfo(dr.GetInt32(0), dr.GetString(1); ListEmp.Add(emp); return ListEmp; 遣陡丽非耘隔明酞盒咬芒礁铝完肩活彦醇唾必袁赘浊胰担捌雾自氧熄度朝第11章自定义请假员工工作流第11章自定义请假员工工作流23 六六.GetLeaveType
27、public List GetLeaveType() List ListTY = new List(); LeaveTypeInfo LYInfo = null; string sqlSelect = SELECT LeaveTypeID,LeaveType FROM dbo.LeaveType; SqlDataReader dr = SqlHelper.ExecuteReader(connectionstr, CommandType.Text, sqlSelect, null); while (dr.Read() LYInfo = new LeaveTypeInfo(dr.GetInt32(
28、0), dr.GetString(1); ListTY.Add(LYInfo); return ListTY; 衬茬锨巨潞的报海戮山汪病陀吗悬佬憋囤楷儒拭障授畦设锐想来讥肮中严第11章自定义请假员工工作流第11章自定义请假员工工作流24方法七方法七. GetGETLeaveALL public DataTable GetGETLeaveALL(int Empid) DataTable dt = new DataTable(); SqlParameter param = new SqlParameter(empid, SqlDbType.Int) ; param0.Value = Empid;
29、string sqlselect = GetLeave; SqlDataReader dr = SqlHelper.ExecuteReader(connectionstr, CommandType.StoredProcedure, sqlselect, param); dt.Load(dr, LoadOption.OverwriteChanges); return dt; 逸匠暂陕琐陕种浆走弗局头利祭疵伟攀桑毫选锤恶锭规挑汗缄祷垣销骄豪第11章自定义请假员工工作流第11章自定义请假员工工作流25方法八方法八. UserCheck。 public bool UserCheck(string us
30、ername, string userpassword, ref int iEmpID, ref int DutyID) string sqlselect=Pr_GetLogin; SqlParameter param = new SqlParameter(EmpName, SqlDbType.VarChar, 20), new SqlParameter(Password, SqlDbType.VarChar, 50) ; param0.Value=username; param1.Value=userpassword; SqlDataReader dr=SqlHelper.ExecuteRe
31、ader(connectionstr,CommandType.StoredProcedure,sqlselect,param); if (dr.Read() iEmpID = Convert.ToInt32(drEmpID.ToString(); DutyID = Convert.ToInt32(drDutyID.ToString(); return true; else return false; 堤醒战逸掖斋莉怖陶却承溢悸疮企熟邦蹄规衅避廓癣谣彼龟衰馆千缸枫滁第11章自定义请假员工工作流第11章自定义请假员工工作流26练习题练习题编程实现以下业务需求:编程实现以下业务需求: 1、公司购物要
32、实现逐级审批制度,根据购物金额大小、公司购物要实现逐级审批制度,根据购物金额大小由低向高逐级审批。购物金额在由低向高逐级审批。购物金额在500元以内,由项目经理元以内,由项目经理审批;购物金额在审批;购物金额在501元至元至1000元之间由部长审批元之间由部长审批; 购物购物金额在金额在1001元至元至5000元由总经理审批;购物金额在元由总经理审批;购物金额在5001元以上由董事长审批。元以上由董事长审批。怒醋睹滁偷诽磋约猫椽审贷千窗哦缚湃沏约余竟蓖谊蓬饿倡驱竭悲专壶裂第11章自定义请假员工工作流第11章自定义请假员工工作流27 2、学院规定了对违纪学生的处分条例,对违纪学生组织、学院规定了对违纪学生的处分条例,对违纪学生组织实施处分要求由低向高逐级申报。学生旷课实施处分要求由低向高逐级申报。学生旷课50节以内,由节以内,由系部给予违纪学生警告处分;旷课系部给予违纪学生警告处分;旷课51节至节至150节,由院学节,由院学生给予违纪学生记过处分;旷课达生给予违纪学生记过处分;旷课达151节以上由学院院长节以上由学院院长给予违纪学生停学一年处分。给予违纪学生停学一年处分。 榜脏赋坎肥湍眼稠呕佰氮讨臭疏混郎醒隆荫赛啮寨果星膊泣枕况盗蔷嫩优第11章自定义请假员工工作流第11章自定义请假员工工作流