第4章用户及权限管理

上传人:桔**** 文档编号:580618149 上传时间:2024-08-29 格式:PPT 页数:51 大小:517.52KB
返回 下载 相关 举报
第4章用户及权限管理_第1页
第1页 / 共51页
第4章用户及权限管理_第2页
第2页 / 共51页
第4章用户及权限管理_第3页
第3页 / 共51页
第4章用户及权限管理_第4页
第4页 / 共51页
第4章用户及权限管理_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《第4章用户及权限管理》由会员分享,可在线阅读,更多相关《第4章用户及权限管理(51页珍藏版)》请在金锄头文库上搜索。

1、上一次课讲到在Visual FoxPro 6.0中设计程序的Splash界面、设计用户登录界面以及为用户密码加密的方法。请同学们回顾这样两个问题:1.Bitxor函数的格式2.及功能是什么?2.文档界面类型有哪些?函数格式:BITXOR(n1, n2)功能:返回n1, n2两个数值型数值按位进行异或运算的结果。VFP允许创建单文档界面和多文档界面。单文档界面(SDI)由一个或多个独立窗口组成,都在桌面上独立显示。多文档界面(MDI)由单一主窗口组成,应用程序包含在主窗口或浮动在主窗口顶端。上一次课主要学习的内容本章主要介绍用户数据表的设计、权限管理,用户管理。第第4 4章章. .用户及权限管理

2、用户及权限管理人力资源管理系统中用户管理使用用户组和用户2个表的双层管理机制,首先通过用户组设置权限,然后将用户归属某个组获取权限。 在HRMData数据库中新建“UserGroup”表存放用户组信息;新建“Users”表存放用户信息。 表结构如下:4.14.1设计数据表设计数据表 字段名字段名 类型类型 宽度宽度 索引索引 1 组编号 字符型 2 2 组名称 字符型 20 升序 3 基础信息管理 逻辑型 1 4 员工档案管理 逻辑型 1 5 奖励记录管理 逻辑型 1 6 惩罚记录管理 逻辑型 1 7 培训记录管理 逻辑型 1 8 调动记录管理 逻辑型 1 9 考评记录管理 逻辑型 110 用

3、户组管理 逻辑型 11.1.UserGroupUserGroup表表结构结构 字段名字段名 类型类型 宽度宽度11 用户管理 逻辑型 112 奖励记录查询 逻辑型 113 惩罚记录查询 逻辑型 114 培训记录查询 逻辑型 115 调动记录查询 逻辑型 116 考评记录查询 逻辑型 117 员工档案查询 逻辑型 118 用户密码修改 逻辑型 119 培训项目管理 逻辑型 1 字段名字段名 类型类型 宽度宽度 索引索引 NullsNulls1 用户名 字符型 20 升序 是2 密码 字符型 20 是3 姓名 字符型 204 用户组 字符型 2 升序 是2.2.UsersUsers表结构表结构管理

4、用户,可以新增、修改、删除等。4.24.2用户管理表单用户管理表单在项目管理器中新增表单:UserAdmin将users和usergroup表添加到数据环境中,设置表users的属性exclusive=.T.bufferModeOverRide=2-保守式行缓冲在表单中添加控件:1个列表框、4个标签、4个文本框、1个组合框、4个按钮。. .创建表单创建表单AutoCenter=.T.BorderStyle=2-固定对话框Caption=部门结构设置Closable=.F.Height=267Width=466Icon=people.icoMDIForm=.T.MaxButton=.F.MinB

5、utton=.F.ShowTips=.T.ShowWindow=1-在顶层表单中WindowType=1-模式 Name=userAdminCmdNew.Caption=新增 CmdModify.Caption=修改 .ToolTipText=新增 .ToolTipText=修改CmdExit.Caption=退出 CmdDelete.Caption=删除 .ToolTipText=退出 .ToolTipText=删除 .Cancel=.T. .属性设置属性设置-1/2-1/2txt用户名.ControlSource=users.用户名txt密码.PassWordChar=*txt确认密码.P

6、assWordChar=*txt姓名.ControlSource=users.姓名cbo用户组.controlsource=users.用户组 .rowsourcetype=6-字段 .rowsource=users.组编号,组名称 .style=2-下拉列表框表单自定义属性:OldRecord=0 新增记录前的当前记录formmode=browse 表单状态browse/new/modify表单自定义方法:setmode. .属性设置属性设置-2/2-2/2*获取要设置的状态IF THISFORM.FormMode = browseFormMode = .F.ELSEFormMode = .

7、T.ENDIF*控制文本框THISFORM.SETALL(ReadOnly, !FormMode, TextBox)*控制组合框THISFORM.SETALL(Enabled , FormMode, ComboBox). .setmodesetmode-1/3-1/3*控制“新增”按钮THISFORM.CmdNew.Enabled = !FormMode*控制“退出”按钮THISFORM.CmdExit.Enabled = !FormMode*更改按钮标题IF !THISFORM.FormMode = browseTHISFORM.CmdModify.Caption = 保存THISFORM.

8、CmdDelete.Caption = 取消ELSE. .setmodesetmode-2/3-2/3THISFORM.CmdModify.Caption = 修改THISFORM.CmdDelete.Caption = 删除ENDIF*如果用户名为“admin”,不能修改其用户名IF THISFORM.UserList.Value = admin ;.AND. THISFORM.FormMode != newTHISFORM.txt用户名.ReadOnly = .T.ENDIF. .setmodesetmode-3/3-3/3表单的表单的initinit代码代码:*表单进入“浏览”状态THI

9、SFORM.FormMode = browseTHISFORM.SetMode*刷新表单THISFORM.Refresh. .添加代码添加代码THISFORM.Refresh. .列表框列表框userlistuserlist.Click.Click*保存记录指针的位置SELECT USERSTHISFORM.OldRecord = RECNO()*设置列表框的数据源THISFORM.UserList.ControlSource = THISFORM.UserList.RowSourceType = 0THISFORM.UserList.RowSource = . .新增新增CmdNewCmdN

10、ew.Click-1/2.Click-1/2*新增空白记录APPEND BLANKTHISFORM.UserList.Requery*设置表单状态THISFORM.FormMode = newTHISFORM.SetMode*刷新表单THISFORM.Refresh. .新增新增CmdNewCmdNew.Click-2/2.Click-2/2*如果是作为“修改”按钮IF THIS.CAPTION = 修改*使表单进入“修改”状态THISFORM.FormMode = ModifyTHISFORM.SetMode*刷新表单THISFORM.RefreshRETURNENDIF*精确比较SET E

11、XACT ON. .修改修改CmdModifyCmdModify.Click-1/10.Click-1/10*如果是作为“保存”按钮IF THIS.CAPTION = 保存*用户名不能为空IF EMPTY(ALLTRIM(THISFORM.txt用户名.Value)MESSAGEBOX(用户名不能为空, 48, 人力资源管理系统)THISFORM.txt用户名.SetFocusRETURNENDIF. .修改修改CmdModifyCmdModify.Click-2/10.Click-2/10*“新增”时密码不能为空IF EMPTY(ALLTRIM(THISFORM.txt密码.Value) ;

12、.AND. EMPTY(ALLTRIM(THISFORM.txt确认密码.Value) ;.AND. THISFORM.FormMode != newMESSAGEBOX(密码不能为空, 48, 人力资源管理系统)THISFORM.txt密码.SetFocusRETURNENDIF. .修改修改CmdModifyCmdModify.Click-3/10.Click-3/10*密码与确认密码要一致IF ALLTRIM(THISFORM.txt密码.Value) != ALLTRIM(THISFORM.txt确认密码.Value)MESSAGEBOX(密码与确认密码不一致, 48, 人力资源管理系

13、统)THISFORM.txt密码.SetFocusRETURNENDIF. .修改修改CmdModifyCmdModify.Click-4/10.Click-4/10*姓名不能为空IF EMPTY(ALLTRIM(THISFORM.txt姓名.Value)MESSAGEBOX(姓名不能为空, 48, 人力资源管理系统)THISFORM.txt姓名.SetFocusRETURNENDIF. .修改修改CmdModifyCmdModify.Click-5/10.Click-5/10*用户组不能为空IF EMPTY(THISFORM.cbo用户组.Value)MESSAGEBOX(用户组不能为空,

14、48, 人力资源管理系统)THISFORM.cbo用户组.SetFocusRETURNENDIF. .修改修改CmdModifyCmdModify.Click-6/10.Click-6/10*如果用户数据无误YN = MESSAGEBOX(确认保存, 4+32, 人力资源管理系统)IF YN =6SELECT UsersIF (TABLEUPDATE(.F.) = .F.)MESSAGEBOX(用户名重复, 48, 人力资源管理系统)THISFORM.txt用户名.SETFOCUSRETURNENDIF. .修改修改CmdModifyCmdModify.Click-7/10.Click-7/1

15、0*如果密码与确认密码不为空IF .NOT. (EMPTY(ALLTRIM(THISFORM.txt密码.Value) ;.AND. EMPTY(ALLTRIM(THISFORM.txt确认密码.Value)sPass = Encode(ALLTRIM(THISFORM.txt密码.Value), 0)sUName = ALLTRIM(THISFORM.txt用户名.Value)*更新密码UPDATE Users SET 密码 = sPass WHERE 用户名 = sUNameENDIF. .修改修改CmdModifyCmdModify.Click-8/10.Click-8/10*设置列表框

16、的数据源THISFORM.UserList.ControlSource = users.用户名THISFORM.UserList.RowSourceType = 6THISFORM.UserList.RowSource = users.用户名,姓名. .修改修改CmdModifyCmdModify.Click-9/10.Click-9/10*表单进入“浏览”状态THISFORM.FormMode = browseTHISFORM.SetModeTHISFORM.UserList.RequeryTHISFORM.RefreshENDIFENDIFTHISFORM.REFRESHSET EXACT

17、 OFF. .修改修改CmdModifyCmdModify.Click-10/10.Click-10/10*如果是作“取消”按钮IF THIS.CAPTION = 取消*确认对话框YN = MESSAGEBOX(确定取消修改, 4+32, 人力资源管理系统)IF YN = 6*取消修改SELECT USERSTABLEREVERT(.T.). .删除删除CmdDeleteCmdDelete.Click-1/6.Click-1/6*回到原记录IF THISFORM.FormMode = newIF THISFORM.OldRecord 0GO THISFORM.OldRecordENDIFEND

18、IF. .删除删除CmdDeleteCmdDelete.Click-2/6.Click-2/6*设置列表框数据源THISFORM.UserList.ControlSource = users.用户名THISFORM.UserList.RowSourceType = 6THISFORM.UserList.RowSource = users.用户名,姓名THISFORM.UserList.Requery. .删除删除CmdDeleteCmdDelete.Click-3/6.Click-3/6*回到“浏览”状态THISFORM.FormMode = browseTHISFORM.SetMode*刷新

19、表单THISFORM.RefreshRETURNENDIFENDIF. .删除删除CmdDeleteCmdDelete.Click-4/6.Click-4/6*如果是作为“删除”按钮IF THIS.CAPTION = 删除*不能删除内置的“admin”用户IF ALLTRIM(THISFORM.txt用户名.Value) = adminMESSAGEBOX(不能删除系统内置管理用户, 48, 人力资源管理系统)RETURNENDIF*确认对话框. .删除删除CmdDeleteCmdDelete.Click-5/6.Click-5/6YN = MESSAGEBOX(确认删除用户 + + ALLT

20、RIM(THISFORM.txt用户名.Value), ;4+32, 人力资源管理系统)*如果确认IF YN = 6*删除用户DELETE FROM USERS WHERE 用户名 = ALLTRIM(THISFORM.txt用户名.Value)PACKTHISFORM.UserList.RequeryTHISFORM.RefreshENDIFENDIF. .删除删除CmdDeleteCmdDelete.Click-6/6.Click-6/6人力资源系统中将权限分为17项。为方便操作,将权限的读取与保存分离。主程序文件main.prg中,定义全局变量数组AuthName17,用于存放权限。4.

21、34.3权限管理权限管理PUBLIC Array AuthName17AuthName1 = 基础信息管理AuthName2 = 员工档案管理AuthName3 = 奖励记录管理AuthName4 = 惩罚记录管理AuthName5 = 培训记录管理AuthName6 = 调动记录管理AuthName7 = 考评记录管理AuthName8 = 用户组管理. .数组与权限对应关系数组与权限对应关系AuthName9 = 用户管理AuthName10 = 奖励记录查询AuthName11 = 惩罚记录查询AuthName12 = 培训记录查询AuthName13 = 考评记录查询AuthName1

22、4 = 调动记录查询AuthName15 = 员工档案查询AuthName16 = 用户密码修改AuthName17 = 培训项目管理在项目中新建程序:ReadAuth,通过函数方式接收用户组编号和权限序号,读取对应权限字符串。 程序建立后,通过如下代码可读取编号为01的用户组权限: For I=1 to 17 ReadAuth(01,I) Endfor4.3.14.3.1读取权限*“ReadAuth”函数*读取指定用户组的指定权限FUNCTION ReadAuth(sUGNo,nAuthID)*读取权限名称LOCAL Array AuthName17AuthName1 = 基础信息管理Aut

23、hName2 = 员工档案管理AuthName3 = 奖励记录管理AuthName4 = 惩罚记录管理AuthName5 = 培训记录管理AuthName6 = 调动记录管理ReadAuthReadAuth. .prgprg-1/3-1/3AuthName7 = 考评记录管理AuthName8 = 用户组管理AuthName9 = 用户管理AuthName10 = 奖励记录查询AuthName11 = 惩罚记录查询AuthName12 = 培训记录查询AuthName13 = 考评记录查询AuthName14 = 调动记录查询AuthName15 = 员工档案查询AuthName16 = 用户

24、密码修改AuthName17 = 培训项目管理ReadAuthReadAuth. .prgprg-2/3-2/3*读取权限值LOCAL rValue*查找权限值Select UserGroupLOCATE FOR 组编号 = sUGNoIF FOUND()*读取权限rValue = &AuthNamenAuthIDENDIFSET FILTER TOReturn rValueENDFUNCReadAuthReadAuth. .prgprg-3/3-3/3在项目中新建程序:SaveAuth,通过函数方式接收参数 “用户组编号,权限序号,权限值”,设置指定用户、指定序号的权限。 通过获取表单中与权

25、限对应的控件值,保存到数组,如AuthStatus,然后调用数组中的值更新用户信息表,使用数组AuthStatus和程序SaveAuth保存权限信息的程序段如下: For i=1 to 17 SaveAuth(This.Value,i,AuthStatusi) Endfor4.3.2保存权限*“SaveAuth”函数*设定指定用户组的指定权限FUNCTION SaveAuth(sUGNo,nAuthID,bValue)*读取权限名称LOCAL Array AuthName17AuthName1 = 基础信息管理AuthName2 = 员工档案管理AuthName3 = 奖励记录管理AuthNa

26、me4 = 惩罚记录管理AuthName5 = 培训记录管理AuthName6 = 调动记录管理SaveAuthSaveAuth. .prgprg-1/3-1/3AuthName7 = 考评记录管理AuthName8 = 用户组管理AuthName9 = 用户管理AuthName10 = 奖励记录查询AuthName11 = 惩罚记录查询AuthName12 = 培训记录查询AuthName13 = 考评记录查询AuthName14 = 调动记录查询AuthName15 = 员工档案查询AuthName16 = 用户密码修改AuthName17 = 培训项目管理SaveAuthSaveAuth

27、. .prgprg-2/3-2/3*更新指定用户组的指定权限SELECT UserGroupLOCATE FOR 组编号 = sUGNoIF FOUND()REPLACE &AuthNamenAuthID WITH bValueENDIFENDFUNCSaveAuthSaveAuth. .prgprg-3/3-3/3权限控制主要是介绍如何在整个系统中实现权限控制。4.3.34.3.3权限控制权限控制在主程序main.prg中声明全局变量数组GotAuth,系统登录时从usergroup表读取用户所属用户组权限,到系统各表单中根据gotAuth存储的值设置控件状态。系统设置Admin为默认系统管

28、理员,不受权限限制,也不能删除。.1.1权限控制流程权限控制流程主程序main.prg中加入如下代码:Public GotAuth17.2.2主程序设计主程序设计如果系统登录成功后,执行以下代码:.3.3登录处理登录处理IF IS_USER &以下保存登录用户:cUser=ALLTRIM(THISFORM.txt用户名.Value)SELECT UserGroup &查找登录用户的权限LOCATE FOR 组编号 = nGroupIF FOUND()FOR i = 1 TO 17GotAuthi = ReadAuth(nGroup, i)ENDFORENDIFDO FORM MainForm &调用主界面THISFORM.RELEASE &退出当前表单ELSE &如果登录不正确 在菜单设计器中,每个菜单项项都可以设置选项,即单击菜单列选项钮,打开提示选项对话框,在“跳过”栏输入条件,多为如下格式:not GotAuth1 AND cUser != admin.4.4菜单设置菜单设置主要介绍了用户数据表的设计、权限管理,用户管理。第第4章小结章小结1.设计权限数据表。2.设计读取权限自定义函数3.设计保存权限自定义函数4.设计用户管理表单5.如何在整个系统中实现权限控制?第第4章思考题章思考题4.设计用户管理表单第第4章作业题章作业题长春大学管理学院会计系冯建祝本章本章结束

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号