基于RBAC权限管理实现的中小学成绩管理系统

xjtuer最好不要抄,五次作业都是去年优秀作业,被老师逮住全给0分就得不偿失了,放在这里是给大家一个思路不用再去查找很多资料,了解之后再自己总结写一写

本文讲解的系统是中小学成绩管理系统,因为RBAC最大的优势在于灵活方便的授权管理,在中小学成绩管理系统中,角色特征鲜明,功能权限划分清楚,非常适合用作实现RBAC权限管理系统

系统分析

在学校成绩管理系统中,用户包括学生、教师,管理人员,有学生、教师和管理人员三大角色,教师角色又可细化普通教师和具有管理职能教师,如班主任、年级主任、教务人员等,系统的权限就是系统提供给用户的功能。因为不同用户使用本系统的功能不同,所以不同的角色拥有的权限不同,具有管理职能的教师有普通教师的权限,普通教师却不具有管理权限。

系统功能描述

image-20211026130001657.png

从系统设计和实际使用方面来考虑,这样的安排比较合理,系统将根据访问的用户不同,可用的功能不同,如果学生登录,那就只有学生功能和通用两个模块,如果是班主任登录,那就有班主任、教师、通用三个模块。这些功能的安排由管理员在后台管理的权限管理来进行动态设置。

系统使用逻辑

对于上表所示系统的详细功能,用户在使用中小学成绩管理系统时需要先登录,如果用户名和密码不匹配,则认定为非法登录,系统将阻止用户的下一步操作,刷新登录界面,方便用户再次登录。如果登录成功,先从数据库中查询到用户所属的角色,根据角色的不同,加载不同的功能,基于RBAC的访问逻辑下图所示。

image-20211026130853451.png

框架说明

在这次设计中,由于需要配合java的监听机制来实现RBAC系统,因此我使用的java GUI + JDBC来完成实现,系统框架如下图所示

image-20211026201331401.png
RBAC管理界面

权限管理

权限管理部分分为两部分,点击右侧的按钮即可切换

  • 设置权限:在该部分,可以对已经设置好的操作对象及操作进行组合,形成针对系统上一项特定功能的权限

  • 分配权限:在该部分,可以将已经设置好的权限分配个各个角色,从而形成一个拥有一系列权限集合的角色

image-20211026202831889.png

image-20211026203423379.png

代码实现细节讲解

  • 在该系统中,我将java提供的Swing框架组件又进行了再次封装,使其适合在该系统下完成某些特定的功能,具体的实现如:MyJPanelMyFrameMyMenuMyMenuItem,以及ResultDialog,其中,

    • 对于MyFrame以及ResultDialog的封装是为了更好的实现代码复用,减少不必要的代码量,
    • 对于MyJPanel的封装是因为在页面切换时,有些页面需要从数据库中获取数据,而将这部分获取数据的内容放在构造函数中是及其不合理的,因为这样会增加系统在开始时候的压力,于是便封装了MyJPanel,在其中实现了init()函数,同时所有功能界面均extends MyJpanel,这样便可在切换到指定页面时仅初始化当前页面而不影响其他页面,
    • 对于MyMenuMyMenuItem的封装是为了实现菜单栏的权限管理,在其中加入了一个额外的名为permission的属性,用户登录进入该系统后即可根据该字段来判断用户是否有权限来执行这一系列的操作
  • 在该框架中,为了方便统一组织页面,因此对于外部的框架在程序运行及界面跳转的过程中并未做任何改变,页面跳转仅需要根据当前选中的菜单页设置功能界面即可,而为了实现该功能,我用到了第一次作业中的回调机制,首先提供一个接口TabSwitch,在该类中声明一个方法void switchTo(String tabName);,然后在主程序中实现这个类,并将这个类在声明内部主功能界面时传入保存,当主功能界面内的监听器监听到页面菜单栏发生点击事件即可通知外部主框架跳转到对应的页面,并且执行初始化操作,具体实现代码请见附录Main.javaMainPanel.java

// TabSwitch.java
public interface TabSwitch {
    void switchTo(String tabName);
}

// Main.java部分代码
static class TabSwitchImpl implements TabSwitch {

    @Override
    /**
    * 页面切换回调函数
    * 根据返回的页面名称在map中查找需要跳转到的页面
    * @param tabName 切换到的页面的名称
    */
    public void switchTo(String tabName) {
        System.out.println("panel: " + map.get(tabName));
        mainPanel.remove(currentPanel);
        map.get(tabName).setId(info_id);
        map.get(tabName).init();
        currentPanel = map.get(tabName);
        mainPanel.add(map.get(tabName));
        mainPanel.updateUI();
    }
}

// MainPanel.java部分代码
for (int i = 0; i < itemList.size(); i++) {
    JMenuItem menuItem = itemList.get(i);
    menuItem.addActionListener(new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            tabSwitch.switchTo(menuItem.getName());
        }
    });
}
  • 另外由于使用的JDBC原生数据库,因此我封装了一系列的api方便在具体执行sql语句时减少代码量以及增加代码的复用性,主要封装的方法如下(具体实现请见附录MysqlUtil.java):
public static Connection getConnection(); // 生成于数据库的连接
public static void close() throws SQLException; // 关闭连接
public static String Insert(String tableName, Map<String, String> map); // 生成插入语句
public static String Delete(String tableName, Map<String, String> map); // 生成删除语句
public static String Update(String tableName, Map<String, String> conditionMap, Map<String, String> valueMap); // 生成更新语句
public static String Select(String tableName, Map<String, String> map); // 生成查询语句
public static String Select(String tableName, String type, Map<String, String> map); // 生成查询语句
public static String getNextId(String tableName, String idTitle); // 获取下一个值是多少,用于获得下一个插入数据的主键值

如果觉得还不错的话请点个star,谢谢
项目地址:https://gitee.com/hydrogenion/rbac-control-system

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
简易成绩分析系统使用说明 四川省泸州市纳溪区大渡中学教务室制作使用 ※※※※一、特色 EXCEL平台 本作品采用EXCEL 公式+VBA制作,既可根据你平时使用EXCEL的习惯和方式操作充分发挥EXCEL的功能,又能利用本作品提高效率。 结构紧凑,界面简洁 本作品工作表个数极少,分别是总表、表册、设置。你可以先在总表输入、在记录单逐条录入、导入或复制粘贴原始成绩,经设置表简单设置后即可在“表册”中根据你的需要自动生成各种表册,包括分班成绩册等各种表册、成绩单、各种统计表等。 ※※※※二、与众不同 本人曾上网搜索到EXCEL平台成绩管理系统不下20款,发现绝大多数都或多或少存在以下问题:总表(或成绩录入表)各项目名称、位置、格式均固定,如班级只能在某列输入且各班级名称必须采用统一格式(如“七(1)”、“七(2)”等)、各科目名称、顺序、录入范围固定等;如果采用公式制作的话,有些单元格还不能移除、拖动、删除等,否则公式会发生错误,当然一不小心公式被删除或破坏那就更糟了。但本作品为你解决了这几个问题,与众不同: 1、限制条件少,通用性更强 只需把原始成绩输入、导入、复制粘贴或在记录单逐条录入总表即可,对总表要求极为宽松:不必整理试卷、非顺序录入;各列(包括科目)名称、位置任意;不受班级、每班人数、科目等数量限制,行列不受限制。简言之,只要您原始成绩表是什么样,把它搞过来就行,只是需注意对本总表的惟一要求是:第一行为表格项目且有班级一列和不合并单元格即可,其它不受任何限制。 2、具有容错能力 也许您对函数和公式比较熟悉,知道当公式引用的单元格被移动或删除时公式往往会出错。本作品避免了这个问题。本作品“成绩册(公式)”、统计表和“成绩单(公式)”采用公式生成,数据均来源于总表。可是对总表您尽可放心大胆编辑、修改,对数据进行各种处理,比如可以进行排序、筛选、删除等操作,哪怕移动和删除任何一行、一列,删除任何一个单元格也无妨。 3、具有恢复能力 本作品对“成绩册(公式)”和“成绩单(公式)”,虽然采用函数和公式实现,但您仍可自由编辑排版以便输出,如编辑、修改、删除公式,删除行列,哪怕删除或者清空整张表也可,如果你进行了以上或者其他误操作,您只需重新点击相应按钮即可自动恢复。 ※※※※三、主要功能 1、查询:查询条件多样,可按姓名查询、按班级查询(分班);按某学科(含总分)某分数段查询;按班内名次(年级名次)段查询(如某班前XX名、年级前XX-XX名)等,各种查询条件还可自由组合。对查询结果,可按某关键字排序后显示,如按班级排名升序可组合出某班全部或班前XX名、年级前XX名排名等,按年级排名升序可组合出年级前XX名排名或全部排名等。 2、统计:根据班级和科目(含总体)按统计范围自动实时生成各项指标(参考人数、平均分、及格人数、及格率、优生人数、优生率、差生人数、差生率、优质分等)、各分数段人数统计、年级前XX名在各班分布等。 3、成绩册和成绩条:自动按班生成成绩册和成绩条。 ※※※※四、操作指南 在总表中输入、导入、复制粘贴或在记录单逐条录入原始成绩,经设置表简单设置后即可在“表册”中根据你的需要自动生成各种表册,包括分班成绩册等各种表册、成绩单、各种统计表等。 其中,分班成绩册和成绩单、统计分别以VBA和公式两种方式制作,这两种方式各有特点,供你选择:公式方式的优点是当条件变化(如所选班级、科目变化)时显示结果随之实时变化,除非公式被破坏或者刚从其它表册转入本功能你才需要重新点击按钮;VBA方式每次改变条件后必须点击相应按钮才能刷新结果,但对结果你可随意进行各种操作。如果你觉得窗体有可能遮住结果,窗体可移动,可关闭,也可随时按CTRL+Q(W)打开,以便在EXCEL中按你熟悉的方式操作。另总表中还提供了按班级排序、填入总分、平均分、计算班级排名、年级排名、分数超限检查等多种自动化功能。 ※※※※四、温馨提示 1、本成绩分析设计是本人想当然而成,加之时间仓促,错误和疏漏在所难免,如果你在使用中不符合您的需要,请及时告知,以便进一步改进! 2、本成绩分析工作表之间,相互引用,相互关联,不得随意更改删除,也不得对工作表重命名,否则将影响本成绩分析的正常使用。 3、操作前请做好数据备份,凡因使用本成绩分析而造成的数据损失,本人概不负责。 4、如果不能运行宏,请把“工具--宏--安全性”中,安全级别设为“中”。 制作:石明富 2009-6-29 简易成绩分析系统使用说明 总表操作提示 进入总表,你会发现一个窗口,如图所示,你可以利用这个窗口上的按钮来自动完成某些功能,当然你也可以移动或关闭该窗口,直接在总表中进行你能够进行的各种操作,如果你关闭了该窗口,按CTRL+W还可重新显示。 对总表要求极为宽松,你只需把原始成绩输入、导入、复制粘贴或在记录单逐条录入总表即可:不必整理试卷、非顺序录入;各列(包括科目)名称、位置任意;不受班级、每班人数、科目等数量限制,行列不受限制,你看图中工作表是不是显得多么乱啊!。而且在总表中可放心大胆编辑、修改,对数据进行各种处理,比如可以进行排序、筛选、删除等操作,哪怕移动和删除任何一行、一列,删除任何一个单元格也无妨。操作时可以利用窗口中的按钮进行自动处理,你也可以在工作表中按你平时使用方式直接操作,只是需注意对本总表的惟一要求是:第一行为表格项目且有班级一列和不合并单元格即可,其它不受任何限制。 窗口中各按钮作用和功能分别简述如下: “导入”按钮:如果你有现成原始成绩数据表,可点导入选择你的原始成绩工作簿和工作表(默认为1)追加或导入数据到总表,如果追加,你的原始工作表第二行为标题且须与总表首行标题完全一致方可。 “记录单”按钮:你可以在记录单中对某条成绩记录进行查询、修改、删除、添加等。 “生成总分和平均分”按钮:按你在设置表中“C”列的科目加计总分并根据你的选择是否计算平均分。 “生成班级名次”按钮:计算该生在班内的名次,该工作表无需按班级排序,如果该总表首行无“班内名次”一列(无论在哪列),则将在该表最后一列后面自动添加“班内名次”一列并填入相应数据。 “生成年级名次”按钮:计算全校名次,效果同“生成班级名次”。 “按班排序”按钮:按班级排序,不论“班级”在哪一列。 “超限检查”按钮:按设置表“C”列科目、“D”列分值检查总表成绩是否超过上限并提示。 “添表头”按钮:按需要添加表头。 “去表头”按钮:去表头,如果首行含有“班级”一格,则视为表格项目,不能再删除。如果你需要进行统计、查询、成绩册、成绩单等操作,必须去掉表头,让首行成为表格项目。 “关闭”按钮:隐藏本窗口,需要时可按CTRL+W重新显示。 设置操作提示 进入设置,首先会询问你是否采用公式,你可以选择“否”,稍后点按钮自动输入,进入设置后,界面如图所示。 各项设置的作用和目的如下: “A” 、“B”列分别为班级选项和字段,其数据分别来源于总表“班级”一列和首行,作用是其内容将呈现在表册窗口和统计表的选项框中以便选择输入,该设置可自动生成。 “C”列为科目选项,其数据应来源于该设置“B”列,作用一是其内容将呈现在表册窗口和统计表的选项框中以便选择输入科目,二是总表中自动生成总分时将以其内容加计而成。 “D”列为“C”列各科目相应的总分,其作用一是成绩统计(公式)时各优生数、及格数、后进生数将自动分别以其相应总分的80%、60%、40%作为判断分值计算,二是总表里“超限检查”时将按此分数检查相应科目成绩是否超过上限。 “E”列作用是其内容将呈现在表册窗口的查询条件选框中以便选择输入。 “G2”、“G3”、“G4”、“G5”为计算优质分(又叫考核分、积分等)时各率加权求和的权重。 “I1”为考试名称,总表、成绩册等表头将参考其内容。 表册操作提示 进入表册,界面如下,你在本窗口中的操作不同,该工作表呈现的内容也会即时变化,分班成绩册、成绩单、多条件查询等均在该表操作,所以该表暂以“表册”命名,如果你觉得不恰当,可联系作者修改。 本表窗口中,分班成绩册和成绩单、统计分别以VBA和公式两种方式制作,这两种方式各有特点,供你选择:公式方式的优点是当条件变化(如所选班级、科目变化)时显示结果随之实时变化,除非公式被破坏或者刚从其它表册转入本功能你才需要重新点击按钮;VBA方式每次改变条件后必须点击相应按钮才能刷新结果,但对结果你可随意进行各种操作。如果选框有误,请检查设置表中相应设置是否正确。如果你觉得窗体有可能遮住结果,窗体可移动,可关闭,也可随时按CTRL+Q(W)打开,以便在EXCEL中按你熟悉的方式操作。 多条件查询为按照你设置的条件并按你要求的顺序显示相应查询结果,可按姓名查询、按班级查询(分班);按某学科(含总分)某分数段查询;按班内名次(年级名次)段查询(如某班前XX名、年级前XX-XX名)等,各种查询条件还可自由组合。对查询结果,可按某关键字排序后显示,如按班级排名升序可组合出某班全部或班前XX名、年级前XX名排名等,按年级排名升序可组合出年级前XX名排名或全部排名等。如下面窗口内设置为班级为“4”班、数学b卷大于36分的班内名次前9名同学的成绩册并按总分降序显示。 统计操作提示 进入统计表,页面如下: 根据班级和科目(含总体)按统计范围自动实时生成各项指标(参考人数、平均分、及格人数、及格率、优生人数、优生率、差生人数、差生率等)、各分数段人数统计、年级前XX名在各班分布等。 统计范围为选择全部成绩进入统计、按每班前XX名还是按全年级前XX名进行统计。 表格内班级和科目两列可点下拉框选择输入并自由组合,如班级选择不同班级,科目为同一科,则是该科成绩在各班之间的对比;如科目为“平均分”(总表须有该列且有数据),则是各班总体成绩对比;如班级选择同一班,科目选择该班不同科目,则是该班各科成绩对比等。 各分数段人数统计一栏内各分数段可自行设置,可按各科目设置分数段(B列选择科目)、按总分设置分数段(B列选择“总分”),按年级名次设置名次段(B列选择年级名次,总表须有该列并有数据)可显示各名次段在各班的人数统计等。 该表可根据需要适当修改,如有多余行可删除,如行不够可往下复制,同样不必要的列也可删除,如各分数段统计列不够也可添加复制。
※※※※一、特色 1、EXCEL平台 本作品采用EXCEL 公式+VBA制作,既可根据你平时使用EXCEL的习惯和方式操作充分发挥EXCEL的功能,又能利用本作品提高效率。 2、结构紧凑,界面简洁 本作品仅有三四个工作表,分别是总表、表册、设置。你可以先在总表输入、导入、复制粘贴或在记录单逐条录入原始成绩,经设置表简单设置后即可在“表册”中根据你的需要自动生成各种表册,包括分班成绩册等各种表册、成绩单、各种统计表等。 ※※※※二、与众不同 1、限制条件少,通用性强 只需把原始成绩输入、导入、复制粘贴或在记录单逐条录入总表即可,对总表要求极为宽松:不必整理试卷、非顺序录入;各列(包括科目)名称、位置任意;不受班级、每班人数、科目等数量限制,行列不受限制。简言之,只要您原始成绩表是什么样,把它搞过来就行,只需注意本总表第一行为表格项目且有班级一列和不合并单元格即可,其它不受任何限制。 2、具有容错能力 也许您对函数和公式比较熟悉,知道当公式引用的单元格被移动或删除时公式往往会出错。本作品避免了这个问题。本作品成绩册、统计表和成绩单采用公式生成,数据均来源于总表。可是对总表您尽可放心大胆编辑、修改,对数据进行各种处理,比如可以进行排序、筛选、删除等操作,哪怕移动和删除任何一行、一列,删除任何一个单元格也无妨。 3、具有恢复能力 本作品对成绩册和成绩单,虽然采用函数和公式实现,但您仍可自由编辑排版以便输出,如编辑、修改、删除公式,删除行列,哪怕删除或者清空整张表也可,如果你进行了以上或者其他误操作,您只需重新点击相应按钮即可。 ※※※※三、主要功能 1、查询:查询条件多样,可按姓名查询、按班级查询(分班);按某学科(含总分)某分数段查询;按班内名次(年级名次)段查询(如某班前XX名、年级前XX-XX名)等,各种查询条件还可自由组合。对查询结果,可按某关键字排序后显示,如按班级排名升序可组合出某班全部或班前XX名、年级前XX名排名等,按年级排名升序可组合出年级前XX名排名或全部排名等。 2、统计:根据班级和科目(含总体)按统计范围自动实时生成各项指标(参考人数、平均分、及格人数、及格率、优生人数、优生率、差生人数、差生率等)、各分数段人数统计、年级前XX名在各班分布等。 3、成绩册和成绩条:实时自动按班生成成绩册和成绩条。 ※※※※三、操作指南 在总表中输入、导入、复制粘贴或在记录单逐条录入原始成绩,经设置表简单设置后即可在“表册”中根据你的需要自动生成各种表册,包括分班成绩册等各种表册、成绩单、各种统计表等。 其中,分班成绩册和成绩单、统计分别以VBA和公式两种方式制作,这两种方式各有特点,供你选择:公式方式的优点是当条件变化(如所选班级、科目变化)时显示结果随之实时变化,除非公式被破坏或者刚从其它表册转入本功能你才需要重新点击按钮;VBA方式每次改变条件后必须点击相应按钮才能刷新结果,但对结果你可随意进行各种操作。如果你觉得窗体有可能遮住结果,窗体可移动,可关闭,也可随时按CTRL+Q(W)打开,以便在EXCEL中按你熟悉的方式操作。另总表中还提供了按班级排序、填入总分、平均分、计算班级排名、年级排名、分数超限检查等多种自动化功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hydrion-Qlz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值