基于Delphi7的学生成绩管理系统,登录界面不能实现不同用户登录的结果不同,可能是数据库的用户表的权限设置问题,求解

anke_1 2016-09-24 11:58:06
procedure TForm2.Button1Click(Sender: TObject);
var
user,pass,temp:string;

begin
//------------------根据用户输入的密码和帐号进行查询----------
//保存用户输入的帐号和密码
user:=Edit1.Text;
pass:=Edit2.Text;

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='select 用户名 from 用户表 where 用户名='''+user+'''and 密码='''+pass+'''';
Adoquery1.Open;
temp:=adoquery1.FieldByName('用户名').AsString;
if temp<>'' then
//如果输入了正确的用户名和密码,那么必然能查到用户编号,否则结果为空
begin

//---------------根据用户获得的权限来确定能否操作相关窗口-----------------------
//先将所有按钮使能都设为否
Form1.Button1.Enabled:=false;
Form1.Button2.Enabled:=false;
Form1.N1.Enabled:=false;
Form1.N2.Enabled:=false;
Form1.N3.Enabled:=false;
Form1.N4.Enabled:=false;
Form1.N5.Enabled:=false;
Form1.N6.Enabled:=false;
Form1.N7.Enabled:=false;
Form1.N8.Enabled:=false;


adoquery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='select 权限序号 from 权限清单 where 用户名='''+temp+'''and 权限名称=''管理员''';
Adoquery1.Open;
if adoquery1.FieldByName('权限序号').AsString<>'' then
Form1.N1.Enabled:=true;
Form1.N2.Enabled:=true;
Form1.N3.Enabled:=true;
Form1.N4.Enabled:=true;
Form1.N5.Enabled:=true;
Form1.N6.Enabled:=true;
Form1.N7.Enabled:=true;
Form1.N8.Enabled:=true;


adoquery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='select 权限序号 from 权限清单 where 用户名='''+temp+'''and 权限名称=''教师''';
Adoquery1.Open;
if adoquery1.FieldByName('权限序号').AsString<>'' then
Form1.Button1.Enabled:=true;


ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='select 权限序号 from 权限清单 where 用户名='''+temp+'''and 权限名称=''学生''';
Adoquery1.Open;
if adoquery1.FieldByName('权限序号').AsString<>'' then
Form1.Button2.Enabled:=true;


Form1.Visible:=true;
// Form1.StatusBar1.Panels[0].Text:=user;
Form2.Hide;
end
//---------登录失败,提示用户重新输入----------------------------------
else
begin
ShowMessage('用户名或密码错误,请检查后重新登录');
end;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
application.Terminate;
end;

end.
...全文
298 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyhoo163 2016-09-25
  • 打赏
  • 举报
回复
建议将登录名与权限放在一个表中, 字段 姓名 用户名 密码 权限 ID 李则 ligang 12345 管理员 00001 王小二 wang1 34567 教师 00002 张三 zhang3 asd23 学生 00003 ....

procedure TForm2.Button1Click(Sender: TObject);
var user,pass,temp:string;
begin
  user:=Edit1.Text;
  pass:=Edit2.Text;

  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Text:='select * from 用户表 where 用户名='+#39+'+user+#39+'and 密码='+#39+pass+#39;
  Adoquery1.Open;
  if Adoquery1.RecordCount>0 then
  begin
    Form1.Button1.Enabled:=false;
    Form1.Button2.Enabled:=false;
    Form1.N1.Enabled:=false;
    Form1.N2.Enabled:=false;
    Form1.N3.Enabled:=false;
    Form1.N4.Enabled:=false;
    Form1.N5.Enabled:=false;
    Form1.N6.Enabled:=false;
    Form1.N7.Enabled:=false;
    Form1.N8.Enabled:=false;
    temp:=adoquery1.FieldByName('权限').AsString;
    if temp='管理员' then
    begin
      Form1.N1.Enabled:=true;
      Form1.N2.Enabled:=true;
      Form1.N3.Enabled:=true;
      Form1.N4.Enabled:=true;
      Form1.N5.Enabled:=true;
      Form1.N6.Enabled:=true;
      Form1.N7.Enabled:=true;
      Form1.N8.Enabled:=true;
    end;
    if temp='教师' then
      Form1.Button1.Enabled:=true;
    if temp='学生' then
      Form1.Button2.Enabled:=true;
    Form1.Visible:=true;
    Form2.Hide;
  end
  else 
    ShowMessage('用户名或密码错误,请检查后重新登录');
end;
lyhoo163 2016-09-25
  • 打赏
  • 举报
回复
procedure TForm2.Button1Click(Sender: TObject);
var user,pass,temp:string;
begin
 //------------------根据用户输入的密码和帐号进行查询----------
 //保存用户输入的帐号和密码
 user:=Edit1.Text;
 pass:=Edit2.Text;

 ADOQuery1.Close;
 ADOQuery1.SQL.Clear;
 ADOQuery1.SQL.Text:='select * from 用户表 where 用户名='''+user+'''and 密码='''+pass+'''';
 Adoquery1.Open;
 temp:=adoquery1.FieldByName('编号').AsString;
 if temp<>'' then
 //如果输入了正确的用户名和密码,那么必然能查到用户编号,否则结果为空
 begin
 //---------------根据用户获得的权限来确定能否操作相关窗口-----------------------
 //先将所有按钮使能都设为否
        Form1.Button1.Enabled:=false;
        Form1.Button2.Enabled:=false;
        Form1.N1.Enabled:=false;
        Form1.N2.Enabled:=false;
        Form1.N3.Enabled:=false;
        Form1.N4.Enabled:=false;
        Form1.N5.Enabled:=false;
        Form1.N6.Enabled:=false;
        Form1.N7.Enabled:=false;
        Form1.N8.Enabled:=false;
    adoquery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Text:='select * from 权限清单 where 用户名='''+temp+'''and 权限名称=''管理员''';
    Adoquery1.Open;
    if adoquery1.FieldByName('权限序号').AsString<>'' then
        Form1.N1.Enabled:=true;
        Form1.N2.Enabled:=true;
        Form1.N3.Enabled:=true;
        Form1.N4.Enabled:=true;
        Form1.N5.Enabled:=true;
        Form1.N6.Enabled:=true;
        Form1.N7.Enabled:=true;
        Form1.N8.Enabled:=true;
    adoquery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Text:='select * from 权限清单 where 用户名='''+temp+'''and 权限名称=''教师''';
    Adoquery1.Open;
    if adoquery1.FieldByName('权限序号').AsString<>'' then
      Form1.Button1.Enabled:=true;
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Text:='select * from 权限清单 where 用户名='''+temp+'''and 权限名称=''学生''';
    Adoquery1.Open;
    if adoquery1.FieldByName('权限序号').AsString<>'' then
      Form1.Button2.Enabled:=true;
   Form1.Visible:=true;
   Form2.Hide;
   end
//---------登录失败,提示用户重新输入----------------------------------
 else begin
   ShowMessage('用户名或密码错误,请检查后重新登录');
 end;
end;
修改代码,试试。
anke_1 2016-09-25
  • 打赏
  • 举报
回复
谢谢!!!问题已经解决了

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧