我设计的VFP进销存系统,在用户登录后登录界面还在,不能自动关闭,另外设计的菜单显示不出,还是系统的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我设计的VFP进销存系统,在用户登录后登录界面还在,不能自动关闭,另外设计的菜单显示不出,还是系统的相关的知识,希望对你有一定的参考价值。

登陆界面你可以用thisform.release命令关闭,但是一般是不关闭的,因为开始表单的showwindow属性需要设置为“2-作为顶层表单”,而其它表单这项属性则要设置为“1-在顶层表单中”。你可以将其它的表单的大小设置为和首表单相同,并设置titlebar属性为“0-关闭”,这样后面的表单就可以完全挡住首表单了。
至于第2个菜单,不知道你的问题同在哪,执行菜单命令为:do 菜单名.mpr(注意一定要加.mpr扩展名),我给你个在表单中执行菜单的方法,你看看:
在VF的表单中表入菜单2011-04-12 20:31:50
1、打开菜单,点击菜单栏上的“显示”-“常规选项”,勾选右下角的“顶层表单”;
2、生成菜单;
3、打开要显示菜单的表单,将属性showwindow设为“2-作为顶层表单”;
4、在该表单的init事件中加入代码:
do 菜单.mpr with this
参考技术A 登录表单的确定 输入的是什么命令 应该用 do from 主菜单名称 READ EVENTS追问

这当然啊,我是说在用户输入账号密码后,登录界面应该自动关闭,但是我的还在,是不是表单设计程序时候要有关闭界面的命令啊,比如close什么的

追答

不用 确定内用如下:
*——精确比较
SET EXACT ON
*——判断是否输入了用户名
IF ALLTRIM(THISFORM.TextUser.VALUE)==""
MESSAGEBOX("请输入用户名",48,"进销存管理系统")
THISFORM.TextUser.SetFocus
Return
ENDIF
*——获取输入的信息
USER_N=ALLTRIM(THISFORM.TextUser.VALUE)
USER_P=ALLTRIM(THISFORM.TextPass.VALUE)
*——定义逻辑变量is_user,用于判断是否为合法用户
LOCAL Is_User
Is_User=.F.
*——遍历用表中中所有的记录
*——判断输入的用户名称和用户密码是否存在
SELECT 用户信息
GO TOP
DO WHILE .NOT. EOF()
*——寻找与输入的用户名和密码匹配的记录
Is_User=(USER_N=用户信息.用户名).AND.(USER_P=用户信息.密码)
*——如果找到
IF IS_USER
EXIT
ELSE
SKIP
ENDIF
ENDDO
*——如果正确
IF IS_USER
*——保存登录用户
cCurUser=ALLTRIM(THISFORM.TextUser.Value)
*——调用主界面
DO FORM MainForm
*——退出当前表单
THISFORM.RELEASE
*——如果登录不正确
ELSE
MESSAGEBOX("用户名或用户密码不正确!",0+16,"进销存管理系统")
THISFORM.TextUser.Value=""
THISFORM.TextPass.Value=""
THISFORM.TextUser.SetFocus
ENDIF
*——模糊比较
SET EXACT OFF

本回答被提问者采纳
参考技术B 描述不清晰,上图说明追问

比如我设计进货管理、销售管理菜单,在运行的时候上面菜单行应该显示这些,但是运行的时候还是显示系统菜单,比如file等

权限设计-系统登录用户权限设计

需求分析—场景

假设需要为公司设计一个人员管理系统,并为各级领导及全体员工分配系统登录账号。有如下几个要求:

1. 权限等级不同:公司领导登录后可查看所有员工信息,部门领导登录后只可查看本部门员工的信息,员工登录后只可查看自己的信息;
2. 访问权限不同:如公司领导登录后,可查看员工薪水分布界面,而员工则不能看到;
3. 操作权限不同:如系统管理员可以在信息发布界面进行增删改查发布信息,而普通员工只可以在信息发布界面进行查看,不能修改、删除和新增。

功能分析

1. 登录一个系统,基本都需要用户输入用户名、密码;
2. 每个用户的角色不同,则其访问权限一般也不同,如:
       系统管理员:可以查看所有界面;
       普通用户:只能查看部分界面。
3. 不同的用户,即使可以查看同样的界面,但在该界面上可进行的操作权限也不同,如:
       用户1:可以在界面1上进行增删改查;
       用户2:只可以在界面1上查看,不具备增删改功能;
4. 不同用户基本都对应不同角色,如:用户1、用户2分别对应管理员角色、操作员角色,角色之间也存在权限等级的差异,如:
      角色1:对应省级管理员;==>可以查看该省下的所有学校信息;
      角色2:对应市级管理员;==>可以查看该市下的所有学校信息;
      角色3:对应县级管理员;==>可以查看该县下的所有学校信息;
不管是省、市、县哪个系统管理员,他们可访问的界面都是相同的(即访问权限相同),且在每个界面上可进行的操作权限也相同的,不同的是每个管理员角色可以访问的学校个数和学校范围不同,这里称这种不同为:权限等级不同;
 
总结:
从上面的分析中,主要涉及到以下几个概念:
1.角色:
       如系统管理员角色,系统操作员角色,普通用户角色;
       不同的角色,其访问权限是不同的,即可访问的模块(界面)集合是不同的;
       角色的权限等级也不同,权限等级如:公司领导、部分领导、普通员工;
2. 模块:(界面)
    模块就是指具体的界面,每个模块上又有不同的操作,如增删改查;
3. 访问权限:确定角色可以访问的模块(界面)集合;
4. 操作权限:确定可以在各模块(界面)上进行的操作集合,如增删改查;
5. 权限等级:即确定角色可以访问的范围,如:
         角色1:权限等级为公司领导,则可以查看公司所有员工信息;
         角色2:权限等级为部门领导,则只可以查看该部门所有员工信息。
 
 
数据库设计

总体模型:
 
技术分享图片
 

1.模块定义表:
模块是分层级的,如:信息管理–>联系方式管理;
技术分享图片
每个模块都有上级模块。

2. 角色定义表:
含有角色权限等级,用于为角色分配权限等级;
技术分享图片
角色权限等级:是一个菜单选项,包括公司领导、部门领导、普通员工;

3.授权定义表:
用于给角色分配访问权限以及为每个模块分配操作权限;
1个角色可以含有多个模块,同样1个模块可以分配给多个角色,所以角色和模块是多对多的关系;这种多对多的关系可以使用关系表来实现,即通过联合主键和实现关系表:
技术分享图片
表中含有字段“操作权限”,用于给每个界面分配操作权限,见下图:
技术分享图片
若该模块有增删改查功能,则操作权限15,即二进制的“1111”,若该模块只有查看功能,则操作权限为2,即二进制的“0010”,同样的,“0111”表示该模块有增、改、查功能;

4. 系统用户表:
技术分享图片
该表中“角色权限等级”—>应与“所属角色”中的权限等级保持一致,之所以该表中重复该字段,是为了方便查询。
角色权限等级取值:
  1. 公司领导:company_id不能为空;
  2. 部门领导:company_id、dept_id不能为空;
  3. 普通员工:company_id、dept_id、staff_id不能为空;



登录执行过程

1. 系统登录时,首先输入用户名、密码;
2. 确定访问权限:
   2.1 判断该用户的“角色编号”;
   2.2 在“授权定义表”中根据该“角色编号”查找相应的模块,找到的模块集合即是访问权限;
3. 确定操作权限:
   3.1 在2.2步骤中查询到的每个模块都有相应的操作权限,即构成了每个模块的操作权限;
4. 确定权限等级:
   4.1 结合该用户的“角色权限等级”+“公司标识”+“部门标识”+“员工标识”,到员工信息表中去查找相应员工,具体如下:
   角色权限等级取值:
   1. 公司领导:查找<员工信息表.公司标识==该用户.公司标识>的所有用户;
   2. 部门领导:查找<员工信息表.公司标识==该用户.公司标识 && 
                                  员工信息表.部门标识==该用户.部门标识>的所有用户;
   3. 普通员工:查找<员工信息表.公司标识==该用户.公司标识 && 
                                  员工信息表.部门标识==该用户.部门标识 && 
                                  员工信息表.员工标识==该用户.公司标识>的所有用户;





以上是关于我设计的VFP进销存系统,在用户登录后登录界面还在,不能自动关闭,另外设计的菜单显示不出,还是系统的的主要内容,如果未能解决你的问题,请参考以下文章

进销存系统_项目环境搭建&代码生成&登录接口

进销存系统_项目环境搭建&代码生成&登录接口

用delphi设计用户登录界面后,怎样自动弹出程序的总目录

基于php031企业采购进销存管理系统

进销存系统_SpringSecurity权限框架&登录&用户密码加密&退出

进销存系统_SpringSecurity权限框架&登录&用户密码加密&退出