考勤服务平台系统架构图 考勤管理系统流程图
开发工具:MyEclipse 10 Aad SQLyogEnt
关键技术:MyBaits + SpringMVC + Spring + H5 + Bootstrap + JQuery + Css
完成模块功能:编号管理、工作机构管理、工组管理、部门管理、员工信息管理
一、功能实现
编号管理:
见图1,编号管理实现界面。
编号管理模块主要是管理各个模块的编号信息。
图1 编号管理模块
根据输入的模块编号名称或者前缀进行模糊筛选所有的编号信息
点击 “查询”按钮查询出根据“考勤”所查询的数据,界面如图2,
图2 根据条件“考勤”所查询的编号数据
点击“操作”按钮可以对编号信息进行新增修改删除操作
图3 显示编号管理模块的操作信息
新增编号信息
点击图3“新增”按钮打开图4新增编号信息界面
点击图中的“关闭”按钮可关闭当前显示的新增Modal,点击“重置”按钮可对图中的数据进行重置。
新增成功后显示的编号数据如下
修改编号信息
选中图中的某一条数据,点击“修改”对此条数据进行修改
删除编号信息
选中图中数据(多条数据),点击“删除”对选择的数据进行删除
工作机构管理:
机构管理界面:可根据机构条件(机构编号、机构名称)、机构创建时间和机构所在城市 进行查询
机构条件:可对机构编号和机构名称进行模糊查询
创建时间:根据时间范围段进行查询
所在城市:模糊查询所在城市,根据选择的城市查询工作机构
新增机构信息
机构编号:根据数据库的编号前缀生成特定的机构编号(不可编辑)
机构名称:机构名称(可输入/必填)
上级机构:选择该机构的上级机构(自选)
机构负责人:所负责此机构的员工(不可编辑/必选)
省份:选择该机构所在的省份(不可编辑/必选)
城市:选中省份后解禁,根据省份id获取所在省份的所有城市(不可编辑/必选)
区域:选中城市后解禁,根据城市id获取所在城市的所有区域(不可编辑/必选)
机构地址:机构所在地址(可输入/必填)
机构说明:机构一些需要说明的信息(选填)
修改机构信息
机构编号:根据数据库的编号前缀生成特定的机构编号(不可编辑)
机构名称:机构名称(可输入/必填)
上级机构:选择该机构的上级机构(自选)
机构负责人:所负责此机构的员工(不可编辑/必选)
省份:选择该机构所在的省份(不可编辑/必选)
城市:选中省份后解禁,根据省份id获取所在省份的所有城市(不可编辑/必选)
区域:选中城市后解禁,根据城市id获取所在城市的所有区域(不可编辑/必选)
机构地址:机构所在地址(可输入/必填)
机构说明:机构一些需要说明的信息(选填)
机构启用否
已启用的数据不可进行修改以及删除操作
是否启用此条数据
删除机构信息
已启用的数据不可删除,先禁用才可操作
部门管理:
部门管理:根据部门名称、创建时间和隶属机构 查询部门信息
新增部门信息
部门名称:部门名称(可输入/必填)
创建时间:系统自动实时获取当前时间(默认已填写)
隶属机构:该部门所隶属的机构(不可编辑/必选)
部门负责人:此部门的负责人(不可编辑/必选)
部门说明:部门所负责的信息(选填)
修改部门信息
部门名称:部门名称(可输入/必填)
创建时间:系统自动实时获取当前时间(默认已填写)
隶属机构:该部门所隶属的机构(不可编辑/必选)
部门负责人:此部门的负责人(不可编辑/必选)
部门说明:部门所负责的信息(选填)
删除部门信息
删除部门信息:判断此条数据是否启用,启用的数据不可删除
工作组管理:
工组管理:根据选中的部门进行数据的查询、绑定
新增工组信息
隶属部门:所隶属的部门名称(默认已填写)
创建时间:系统自动实时获取当前时间(默认已填写)
工组编码:系统默认生成,根据工组编码前缀拼接(默认已填写)
工组名称:工组名称(可编辑/必填)
上级工组:该工组的上级工组(不可编辑/必选)
节假安排:节假日安排(自选)
公休安排:公休日安排(自选)
工组负责人:该工组的负责人(不可编辑/必选)
工组说明:该工组的说明(选填)
修改工组信息
隶属部门:所隶属的部门名称(默认已填写)
创建时间:系统自动实时获取当前时间(默认已填写)
工组编码:系统默认生成,根据工组编码前缀拼接(默认已填写)
工组名称:工组名称(可编辑/必填)
上级工组:该工组的上级工组(不可编辑/必选)
节假安排:节假日安排(自选)
公休安排:公休日安排(自选)
工组负责人:该工组的负责人(不可编辑/必选)
工组说明:该工组的说明(选填)
删除工组信息
删除工组信息:判断此条数据是否启用,启用的数据不可删除
员工信息管理:
根据员工信息、入职时间和隶属工组来查询员工信息
员工信息:根据输入的员工编号、员工姓名和身份证号来模糊查询
入职时间:根据选中的一个时间范围来查询员工数据
隶属工组:根据员工所在的工组为条件来查询
详细信息:显示该员工的详细信息(不可编辑)
新增员工信息
员工照片:选择本地图片上传路径到数据库(可编辑/必填)
员工姓名:员工姓名(可编辑/必填)
联系电话:员工手机号码(可编辑/必填)
婚姻状况:已婚或未婚(不可编辑/必选)
电子邮箱:该员工的邮箱(可编辑/必填)
身份证:输入员工身份证绑定员工生日、性别、年龄,限制长度18,(有输入验证/可编辑/必填)
居住地址:该员工所居住的地址(可编辑/必填)
员工编号:系统根据员工编号前缀生成特定编号(默认已填)
入职时间:获取当前创建的时间(默认已填)
隶属工组:该员工所在的工组(不可编辑/必选)
职位:员工所处职位(不可编辑/必选)
员工状态:在职或离职(不可编辑/必选)
修改员工信息
员工照片:选择本地图片上传路径到数据库(可编辑/必填)
员工姓名:员工姓名(可编辑/必填)
联系电话:员工手机号码(可编辑/必填)
婚姻状况:已婚或未婚(不可编辑/必选)
电子邮箱:该员工的邮箱(可编辑/必填)
身份证:输入员工身份证绑定员工生日、性别、年龄,限制长度18,(有输入验证/可编辑/必填)
居住地址:该员工所居住的地址(可编辑/必填)
员工编号:系统根据员工编号前缀生成特定编号(默认已填)
入职时间:获取当前创建的时间(默认已填)
隶属工组:该员工所在的工组(不可编辑/必选)
职位:员工所处职位(不可编辑/必选)
员工状态:在职或离职(不可编辑/必选)
删除员工信息
删除员工信息:判断此条数据是否启用,启用的数据不可删除
二、经典代码
根据身份证号获取生日、性别、年龄
var MyIDCard = "11204416541220243X";//身份证号
var MyBirthday;//出生日期
var MySex;//性别
var MyAge;//年龄
//根据身份证号获取生日、性别、年龄
function IDCardData() {
if (MyIDCard != "") {
//根据身份证号获取出生日期
MyBirthday = MyIDCard.substring(6, 10) + "-" + MyIDCard.substring(10, 12) + "-" + MyIDCard.substring(12, 14);
//根据身份证号获取性别
if (parseInt(MyIDCard.substr(16, 1)) % 2 == 1)
{ MySex = "男"; }
else { MySex = "女"; }
//根据身份证号获取年龄
var MyDate = new Date();
MyAge = MyDate.getFullYear() - MyIDCard.substring(6, 10) - 1;
}
}
三、开发总结(不少于500字)
刚刚接触Java这方面的时候很懵,因为我是在企业学习中途回来学java的所以有很多不理解的地方,好在有一帮热心的同学在旁边帮助我快速进入状态。
以前一直觉得Java特别特别难,那种触不可及的难。进入学习状态后觉得Java也没有想象中那么恐怖,发现Java开发其实跟C#的开发很多语法有一样的共同点他们都是面向对象的语言,也就是说,它们都能实现面向对象的思想(封装,继承,多态),只有部分的细节有不同而已。
比如:
c#中的命名空间是namespace类似于Java中的package(包),在Java中导入包用import而c#中用using。
数据类型:Java跟c#基本都差不多,但是Java的String类型的首字母必须大写,而c#中可以小写也可以大写,还有布尔型,Java中是boolean,c#中是bool。
变量的命名:Java中可以用$符号,而c#中不可以使用。
继承:Java中用关键字extends,c#只用":"就行了.调用父类的构造方法Java用super关键字,而c#用base关键字。
多态:抽象类和抽象方法两种语言都用abstract关键字。Java中另外一个类如果继承了它,实现直接重写此方法就可以了;而c#必须加上关键字override实现。C#还比Java多一种虚方法来实现多态。
输出:c#有三种方式输出:Cosole.WriteLine(); Cosole.WriteLine(要输出的值); Cosole.WriteLine(“格式字符串”,变量列表); 前两种的用法与Java中的ystem.out.println()方法的用法相同,第三种方式是根据占位符输出的,比Java更方便了。等等等等……(很多很多,就不一一列举出来了)
现在的我已经掌握Java的大概编程风格了,但还有部分Java开发技术点不熟悉,我会继续跟Java磨合,相信用不了多久我就能像当初掌握C#MVC那样完全掌握Java开发技术。
推荐阅读
-
openEuler郑州用户组成立!openEuler与hyperfusion携手共建河南地区用户生态 - 开幕致辞 超融合操作系统业务总经理、openEuler委员会成员蒋振华先生为本次活动致辞。 在本次活动的致辞中,他提到,作为openEuler社区早期的成员,超融合见证了openEuler从成立到在各行业商业落地,再到跨越生态拐点的过程,感谢openEuler提供了一个全产业链共同创新的平台,共同推动创新技术的商业落地。 同时,本次活动得到了郑州市郑东新区大数据管理局、郑州中原科技城投资服务局的大力支持。 郑东新区大数据管理局曹光远 在活动致辞中表示,openEuler的应用和*应用设施的深度优化,为郑东新区数字化转型提供了安全、可靠、高性能的技术基础;郑州中原科技城招商服务局王林表示,郑东新区欢迎所有openEuler生态相关企业扎根当地,围绕openEuler社区共同发展,形成合力。 openEuler社区及运维功能介绍 openEuler技术委员会委员胡峰 openEuler技术委员会委员胡峰先生在本次活动中介绍了openEuler社区目前发展的整体情况,并重点从技术层面介绍了openEuler的运维功能。 openEuler 晚会 胡峰先生介绍智能运维工具 A-Ops 和 openEuler gala、 阿波罗 Apollo、智能漏洞管理解决方案等新功能,以及涵盖各种运维场景的精品运维组件。在*交流环节,许多用户就目前使用的 openEuler 在*交流环节,许多用户就自己在使用openEuler过程中遇到的一些问题与胡峰先生进行了进一步的交流。 软硬结合,构建多样化算力操作系统 Hyperfusion 基于 openEuler 的基础上,结合自身软硬件技术积累,推出了富讯服务器操作系统 FusionOS FusionOS. FusionOS 首席架构师张海亮 分享了 FusionOS FusionOS首席架构师张海亮分享了FusionOS的软硬件协同优势、卓越的性能和可靠性,以及FusionOS在金融、运营商、*、互联网等行业的实践案例,引起了众多用户的兴趣,分享结束后,不少参会者就FusionOS的特点向讲师提问并进行了交流。
-
课程安排系统在这里!预约排课 + 课时统计 + 考勤管理
-
考勤服务平台系统架构图 考勤管理系统流程图
-
*职称管理服务平台申报系统
-
移动云加强全方位云网保护,守护数字中国发展 - 新增云安全中心涵盖终端安全,整合EDR的查杀、预警、应对及溯源功能,实现终端安全管理一体化。它能迅速定位并处理各类网络威胁,如病毒、入侵和新漏洞,减少人工应对负担。EDR在HVV行动中是关键防护,能在终端建立坚固防线,阻止威胁扩散,并协同其他产品追踪攻击链路。 态势感知全面覆盖监控、审计、运维、评估和预警等多个方面,针对混合云环境,提供统一业务安全管理、全面安全信息收集、智能安全事件关联分析以及系统性能与可用性的全面检测,满足等保标准、安全运营、数据保护和重要时期的保障需求。 云堡垒机推出全新混合云版本,支持混合云、私有云及客户自建平台部署,专为运维资源管理和审计提供安全保障。安全资源池行业版则针对于私有云和行业云,提供定制化的场景化安全合规整体解决方案,并可根据需要提供改造、统一管理、远程更新等一系列配套服务。 共同构建安全、便捷且高效的远程办公环境。
-
在线商城、门户站、微信服务站、内容管理系统(CMS)、简易企业展示工具(易企秀)、电子红包、分销购物平台、游戏源代码开发
-
玩转Java底层:JMX详解 - jconsole与自定义MBean监控工具的实际应用与区别" 在日常JVM调优中,我们熟知的jconsole工具通过JMX包装的bean以图形化形式展示管理数据,而像jstat和jmap这类内建监控工具则由JVM直接支持。本文将以jconsole为例,深入讲解其实质——基于JMX的MBean功能,包括可视化界面上的bean属性查看和操作调用。 MBeans在jconsole中的体现是那些可观察的组件属性和方法,如上图所示,通过名为"Verbose"的属性能看到其值为false,同时还能直接操作该bean的方法,例如"closeJerryMBean"。 尽管jconsole给我们提供了直观的可视化界面,但请注意,这里的MBean并非固定不变,开发者可根据JMX提供的接口将自己的自定义bean展示到jconsole。以下步骤展示了如何创建并注册一个名为"StudyJavaMBean"的自定义MBean: 1. 首先定义接口`StudyJavaMBean`,接口需遵循MBean规范,即后缀为"MBean"且包含getter方法代表属性,如`getApplicationName`,和无返回值的setter方法代表操作,如`closeJerryMBean`。 ```java public interface StudyJavaMBean { String getApplicationName(); void closeJerryMBean(); } ``` 2. 编写接口的实现类`StudyJavaMBeanImpl`,实现接口中的方法: ```java public class StudyJavaMBeanImpl implements StudyJavaMBean { @Override public String getApplicationName() { return "每天学Java"; } @Override public void closeJerryMBean() { System.out.println("关闭Jerry应用"); } } ``` 3. 在代码中注册自定义MBean,涉及的关键步骤包括: - 获取平台MBeanServer - 定义ObjectName,指定唯一的MBean标识符 - 注册MBean到服务器 - 启动RMI连接器服务,以便jconsole能够访问 ```java public void registerMBean() throws Exception { // ... 具体实现省略 ... } ``` 实际运行注册后的MBean,您将在jconsole中发现并查看自定义bean的属性和调用相关方法。然而,这种方式相较于传统的属性/日志查看和HTTP接口,实用性相对有限,可能存在潜在的安全风险。但不可否认的是,JMX及其MBean机制对于获取操作系统信息、内存状态等关键性能指标仍然具有重要价值。例如: 1. **获取操作系统信息**:通过JMX MBean,可以直接获取到诸如CPU使用率、操作系统版本等系统级信息,这对于资源管理和优化工作具有显著帮助。
-
企业供应链平台:在线供应链系统服务方案中的业务、功能和技术管理架构