关于不同用户身份登录系统,权限不同的问题

时间:2022-10-24 19:47:30
本人纯新手,最近做一个简单的学生选课系统,有两种身份登录:学生,管理员,登录到主窗体,如图 关于不同用户身份登录系统,权限不同的问题
我是想管理员登录后显示文件、信息操作、信息查询三个菜单项,学生登录后显示文件、学生选课、已选课程三个菜单项。

因为我建的用户表中有致命管理员或学生身份的auth字段,所以我想在登录窗体中定义一个判断身份的全局变量temp,然后把查询到auth信息赋给temp,即temp:=trim(adoquery1.FieldByName('auth').AsString);再然后想在主窗体中,通过判断temp来决定显示哪几个菜单项,具体应该怎么实现?

求大神指教!!如有概念错误,请指正!!!

6 个解决方案

#1


一定要给满分呀!

procedure TForm_main.Button1Click(Sender: TObject);
var ado_tmp:tadoquery;
i:Integer;
begin
  ado_tmp:=TADOQuery.Create(nil);
  ado_tmp.Connection:=ADOConnection1;

   ado_tmp.Close;
   ado_tmp.sql.clear;
   ado_tmp.SQL.Add('select * from user where UserName=''www'' ');
   ado_tmp.Open;

   ado_tmp.First;
   for i:=0 to ado_tmp.RecordCount do
   begin
     TMenuItem(self.FindComponent( Trim(ado_tmp.fieldbyname('MenuItemName').AsString))).Visible:=False;
     ado_tmp.Next;
   end;
end;

#2


用户、角色、角色资源。
把需要按角色分配的菜单权限或者按钮权限全部初始化。
然后把这些资源分别指定给各个角色。
最后登录时取出用户所对应角色的所有资源,遍历,设置visible

#3


大多数软件对于菜单的处理,主要如下:

1、不同的角色,都共用一个菜单。这样,菜单项不需要分别创建了。
2、通过角色分别设置权限,消除(隐藏)无权的菜单项。有无权的菜单项主要有二种处理办法。
(1)MenuItem.Enabled:=False;  无权菜单项,显示灰色,不能操作(事件无效)
(2)MenuItem.visible:=False;   无权菜单项,隐藏起来,自然无法操作了。


#4


引用 1 楼 tangfuyou 的回复:
一定要给满分呀!

procedure TForm_main.Button1Click(Sender: TObject);
var ado_tmp:tadoquery;
i:Integer;
begin
  ado_tmp:=TADOQuery.Create(nil);
  ado_tmp.Connection:=ADOConnection1;

   ado_tmp.Close;
   ado_tmp.sql.clear;
   ado_tmp.SQL.Add('select * from user where UserName=''www'' ');
   ado_tmp.Open;

   ado_tmp.First;
   for i:=0 to ado_tmp.RecordCount do
   begin
     TMenuItem(self.FindComponent( Trim(ado_tmp.fieldbyname('MenuItemName').AsString))).Visible:=False;
     ado_tmp.Next;
   end;
end;


引用 1 楼 tangfuyou 的回复:
一定要给满分呀!

procedure TForm_main.Button1Click(Sender: TObject);
var ado_tmp:tadoquery;
i:Integer;
begin
  ado_tmp:=TADOQuery.Create(nil);
  ado_tmp.Connection:=ADOConnection1;

   ado_tmp.Close;
   ado_tmp.sql.clear;
   ado_tmp.SQL.Add('select * from user where UserName=''www'' ');
   ado_tmp.Open;

   ado_tmp.First;
   for i:=0 to ado_tmp.RecordCount do
   begin
     TMenuItem(self.FindComponent( Trim(ado_tmp.fieldbyname('MenuItemName').AsString))).Visible:=False;
     ado_tmp.Next;
   end;
end;


思路、代码大赞,感谢!已解决!

#5


引用 2 楼 zzmjhy520 的回复:
用户、角色、角色资源。
把需要按角色分配的菜单权限或者按钮权限全部初始化。
然后把这些资源分别指定给各个角色。
最后登录时取出用户所对应角色的所有资源,遍历,设置visible


嗯嗯,后来想明白了,先都置为false了,然后相应的打开了

#6


引用 3 楼 lyhoo163 的回复:
大多数软件对于菜单的处理,主要如下:

1、不同的角色,都共用一个菜单。这样,菜单项不需要分别创建了。
2、通过角色分别设置权限,消除(隐藏)无权的菜单项。有无权的菜单项主要有二种处理办法。
(1)MenuItem.Enabled:=False;  无权菜单项,显示灰色,不能操作(事件无效)
(2)MenuItem.visible:=False;   无权菜单项,隐藏起来,自然无法操作了。
 多谢,这下更加明白了!

#1


一定要给满分呀!

procedure TForm_main.Button1Click(Sender: TObject);
var ado_tmp:tadoquery;
i:Integer;
begin
  ado_tmp:=TADOQuery.Create(nil);
  ado_tmp.Connection:=ADOConnection1;

   ado_tmp.Close;
   ado_tmp.sql.clear;
   ado_tmp.SQL.Add('select * from user where UserName=''www'' ');
   ado_tmp.Open;

   ado_tmp.First;
   for i:=0 to ado_tmp.RecordCount do
   begin
     TMenuItem(self.FindComponent( Trim(ado_tmp.fieldbyname('MenuItemName').AsString))).Visible:=False;
     ado_tmp.Next;
   end;
end;

#2


用户、角色、角色资源。
把需要按角色分配的菜单权限或者按钮权限全部初始化。
然后把这些资源分别指定给各个角色。
最后登录时取出用户所对应角色的所有资源,遍历,设置visible

#3


大多数软件对于菜单的处理,主要如下:

1、不同的角色,都共用一个菜单。这样,菜单项不需要分别创建了。
2、通过角色分别设置权限,消除(隐藏)无权的菜单项。有无权的菜单项主要有二种处理办法。
(1)MenuItem.Enabled:=False;  无权菜单项,显示灰色,不能操作(事件无效)
(2)MenuItem.visible:=False;   无权菜单项,隐藏起来,自然无法操作了。


#4


引用 1 楼 tangfuyou 的回复:
一定要给满分呀!

procedure TForm_main.Button1Click(Sender: TObject);
var ado_tmp:tadoquery;
i:Integer;
begin
  ado_tmp:=TADOQuery.Create(nil);
  ado_tmp.Connection:=ADOConnection1;

   ado_tmp.Close;
   ado_tmp.sql.clear;
   ado_tmp.SQL.Add('select * from user where UserName=''www'' ');
   ado_tmp.Open;

   ado_tmp.First;
   for i:=0 to ado_tmp.RecordCount do
   begin
     TMenuItem(self.FindComponent( Trim(ado_tmp.fieldbyname('MenuItemName').AsString))).Visible:=False;
     ado_tmp.Next;
   end;
end;


引用 1 楼 tangfuyou 的回复:
一定要给满分呀!

procedure TForm_main.Button1Click(Sender: TObject);
var ado_tmp:tadoquery;
i:Integer;
begin
  ado_tmp:=TADOQuery.Create(nil);
  ado_tmp.Connection:=ADOConnection1;

   ado_tmp.Close;
   ado_tmp.sql.clear;
   ado_tmp.SQL.Add('select * from user where UserName=''www'' ');
   ado_tmp.Open;

   ado_tmp.First;
   for i:=0 to ado_tmp.RecordCount do
   begin
     TMenuItem(self.FindComponent( Trim(ado_tmp.fieldbyname('MenuItemName').AsString))).Visible:=False;
     ado_tmp.Next;
   end;
end;


思路、代码大赞,感谢!已解决!

#5


引用 2 楼 zzmjhy520 的回复:
用户、角色、角色资源。
把需要按角色分配的菜单权限或者按钮权限全部初始化。
然后把这些资源分别指定给各个角色。
最后登录时取出用户所对应角色的所有资源,遍历,设置visible


嗯嗯,后来想明白了,先都置为false了,然后相应的打开了

#6


引用 3 楼 lyhoo163 的回复:
大多数软件对于菜单的处理,主要如下:

1、不同的角色,都共用一个菜单。这样,菜单项不需要分别创建了。
2、通过角色分别设置权限,消除(隐藏)无权的菜单项。有无权的菜单项主要有二种处理办法。
(1)MenuItem.Enabled:=False;  无权菜单项,显示灰色,不能操作(事件无效)
(2)MenuItem.visible:=False;   无权菜单项,隐藏起来,自然无法操作了。
 多谢,这下更加明白了!