2 u014075041 u014075041 于 2014.12.15 09:46 提问

一个查询功能,管理员,教师,专家,查询的结果不同,应该如何设计代码
问题描述如下:
                查询学生的信息。管理员可以查询所有人的信息。教师只能查询自己班级的信息。专家只能查询自己负责班级的信息。
                现在代码结果,我在一个方法中做判断,这样查询也可以得到查询结果。但是我觉得,这样做的话,如果其他的功能中也有相似的权限设置,又要查询一次,也不符合面向对象的设计原则 。请帮忙解答,不盛感激!

3个回答

lowanty
lowanty   2014.12.15 09:59

重新抽象对象设计,从你的描述中,可以这样抽象:被管理对象有:学生、班级(学生分组)。管理对象有:教师、专家。
我们可以这样设计数据结构:班级表:保存基本班级信息
学生表:包含学生基本信息 以及 学生所属班级
教师表:包含教师基本信息 以及 教师管理的班级信息(一个教师一个班级直接存于主表、多个可以根据实际情况考虑字表)
专家表:设计类似教师表。

此时查询时:只需要从教师或者专家对象上获得 管理范围内的班级,然后查询学生表 班级字段是管理范围内的所有 学生,就可以了。

u014075041
u014075041 回复lowanty: 我明白了。我一直想把判断用户这个去掉。其实这个不能去掉。必须有这个判断,才能调用对应的方法。恩。把教师,专家,管理员抽象出一个对象,用简单工厂创建出相对应的对象,得到结果接口相同。就可以直接调用对应的方法。我本来是想着可不可以用面向切面编程的方法实现。我还是没有想到。
3 年多之前 回复
lowanty
lowanty 回复u014075041: 你只需要设计两个方法就可以了。一个getStudent(班级数组);一个getAllStudent();这样把判断交给前置服务、甚至页面去处理,你设计的方法就是职能单一的
3 年多之前 回复
u014075041
u014075041 谢谢你。我问题可能是表述不清楚。我举一个例子吧。如果我现在是管理员,我查询的时候,要查询所有的,我访问的方法getStudent,我在这个方法中先判断是不是管理员,如果是的话,我就调用这个查询所有的查询语句。如果我是教师的话,我也是查询这个getResult方法,也是先做判断,然后调用对应的查询SQL。但是呢。我现在想把这个判断能不能不放到这个方法中。因为,像查询教师的话,也是做类似的if-else判断。在面向对象中有职责单一的原则。我是在想如果遇到这样的问题,有没有可能使用其他的处理方式。
3 年多之前 回复
guwei4037
guwei4037   Ds   Rxr 2014.12.15 10:04

用中间表做个关联,设置不同人员对应的班级人员的对应关系。然后登陆的时候查询加载不同的人员。

u014075041
u014075041   2014.12.15 11:29

我刚才说的不对。两个用的同一个方法getStudent。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
使用JSP内置对象:1、设计教师与学生不同登陆界面:在同一页面上设计两个单选按钮(教师、学生),当点击提交按钮后,进入相应的教师或学生登录JSP页面。
学习JAVA内置对象实验,1、设计教师与学生不同登陆界面:在同一页面上设计两个单选按钮(教师、学生),当点击提交按钮后,进入相应的教师或学生登录JSP页面。当用户名及密码均正确时,进入欢迎界面;如果两者其一不正确就要提醒需要重新输入。 2、参照任一电子商城的注册页面,编写一个用户注册的页面(register.html),提交后由register.jsp负责处理,并将用户信息在网页上输出(使用out); 3、编写程序,实现3秒后自动跳转到指定的某页面的功能。
JSP 设计教师与学生不同登陆界面(带验证码)
一、实验目的 1、掌握代码片段中的注释的应用; 2、掌握JSP脚本标示—Java代码片段的应用。 二、实验内容 1、设计教师与学生不同登陆界面,如下图;2、验证码随机生成; 3、提交后分别转向教师页面和学生页面进行判断用户名和密码正确性; 4、如果正确,3秒后,转向成功页面,否则跳回验证页面; 三、实验方法 1、在同一页面上设计两个单选按钮:教师、学生,当点击提交按钮后,进入相应的
机房上机管理系统 JavaEE 开发的(分教师用户、学生用户、管理员用户等角色)
这是用JavaEE开发的学生机房上机管理系统,学生一上机等待教师确认,老师确认后计时开始,下机注销。对学生和教师起一个监督考察的作用。同时作为管理员可以很方便的查询学生和教师的上机情况。
学生选课系统-管理员功能模块设计(Java+NetBeans+SQLServer2008)
学生选课系统描述:   学生选课系统是一个面向管理员、教师、学生三个对象的小型选课系统,实现了管理员对教师、学生、课程等管理,教师任课信息查询和学生选课,以及修改密码等功能。本文将着重介绍管理员功能模块设计。    语言和环境   A、实现语言:Java   B、实现技术: JavaSE、JDBC、Swing   C、环境要求: NetBeans 8.0.2, SQLServer2008
ASP.NET(C#)实现的学生-教师基本信息查询系统
学生-教师基本信息查询系统的主要功能是——基础用户可以查询学生教师的部分基本信息,并及时提交变更请求。而登陆管理员界面之后,可以修改管理员密码,新增管理员,对学院、部门、专业、学生、教师进行添加、修改、删除操作,同时为了系统的安全还可以备份还原数据库信息、查看登陆日志等信息。
学生管理系统数据库 系统主要对学生的信息进行查询和管理。分为三种权限:学生,教师和管理员。
本系统主要对学生的信息进行查询和管理。分为三种权限:学生,教师和管理员。 学生可以对学生的基本信息和所学课程的成绩进行查询,并可以按一定的约束条件进行查询,但因为权限不够而无法对其中的内容进行修改。 教师可以查询学生的基本信息和成绩,也可以查询教师的基本信息,并可以对学生的成绩进行插入,修改和删除。
学生选课系统(学生、教师、管理员三种登录类型)
简单的学生选课系统! 单机版的!支持学生选课、退选、查看课程信息、查询等等
jsp教师与学生不同登陆界面
jsp实验--用eclipse设计教师与学生不同登陆界面,验证码随机生成;提交后分别转向教师页面和学生页面进行判断用户名和密码正确性;如果正确,3秒后,转向成功页面,否则跳回验证页面; 亲测可用。
基于java和sqlserver的学生信息管理系统
分为多个角色:管理员,学生和教师。每类用户可实现不同的功能,学生可以查询自己的成绩与所选的课程,进行选课。教师可以查询学生与课程信息,并录入成绩,管理员设计系统的权限,可修改学生和教师信息。
Java GUI学生成绩管理系统管理员权限之教师添加功能
管理员可以给教师管理系统添加一个新的教师用户:添加的内容包括教师工号、姓名、密码、性别、任教班级; 以下图片就是实现的界面: 添加内容之后的数据库验证: 以下是教师添加功能的源代码: package Dialog; import java.awt.BorderLayout; import java.awt.GridLayout; import java