Java学生出勤管理系统

时间: 2023-09-09 21:13:08 浏览: 129
RAR

学生出勤系统

学生出勤管理系统主要包含以下几个模块: 1. 学生信息管理:包括学生基本信息、出勤情况、请假情况等。 2. 课程信息管理:包括课程名称、授课教师、上课时间、上课地点等。 3. 出勤情况管理:包括考勤情况、迟到情况、早退情况等。 4. 请假情况管理:包括请假类型、请假原因、请假时间等。 5. 报表统计:对学生出勤情况、请假情况进行统计分析,输出报表。 下面是一个简单的Java学生出勤管理系统的代码示例: ``` import java.util.*; class Student { private String name; private String id; public Student(String name, String id) { this.name = name; this.id = id; } public String getName() { return name; } public String getId() { return id; } } class Attendance { private Student student; private boolean isPresent; private int minutesLate; private int minutesEarly; public Attendance(Student student, boolean isPresent, int minutesLate, int minutesEarly) { this.student = student; this.isPresent = isPresent; this.minutesLate = minutesLate; this.minutesEarly = minutesEarly; } public Student getStudent() { return student; } public boolean isPresent() { return isPresent; } public int getMinutesLate() { return minutesLate; } public int getMinutesEarly() { return minutesEarly; } } class Course { private String name; private String teacher; private String time; private String location; private List<Attendance> attendanceList; public Course(String name, String teacher, String time, String location) { this.name = name; this.teacher = teacher; this.time = time; this.location = location; this.attendanceList = new ArrayList<>(); } public void addAttendance(Attendance attendance) { attendanceList.add(attendance); } public int numPresent() { int count = 0; for (Attendance attendance : attendanceList) { if (attendance.isPresent()) { count++; } } return count; } public int numLate() { int count = 0; for (Attendance attendance : attendanceList) { if (!attendance.isPresent() && attendance.getMinutesLate() > 0) { count++; } } return count; } public int numEarly() { int count = 0; for (Attendance attendance : attendanceList) { if (!attendance.isPresent() && attendance.getMinutesEarly() > 0) { count++; } } return count; } public int numAbsent() { return attendanceList.size() - numPresent(); } public String getName() { return name; } public String getTeacher() { return teacher; } public String getTime() { return time; } public String getLocation() { return location; } } class AttendanceSystem { private List<Student> studentList; private List<Course> courseList; public AttendanceSystem() { this.studentList = new ArrayList<>(); this.courseList = new ArrayList<>(); } public void addStudent(Student student) { studentList.add(student); } public void addCourse(Course course) { courseList.add(course); } public List<Student> getStudentList() { return studentList; } public List<Course> getCourseList() { return courseList; } public static void main(String[] args) { // 创建学生 Student student1 = new Student("张三", "001"); Student student2 = new Student("李四", "002"); Student student3 = new Student("王五", "003"); // 创建课程 Course course1 = new Course("Java程序设计", "张三老师", "周一 9:00-10:30", "教1-101"); Course course2 = new Course("计算机网络", "李四老师", "周二 13:30-15:00", "教1-102"); // 添加学生和课程 AttendanceSystem attendanceSystem = new AttendanceSystem(); attendanceSystem.addStudent(student1); attendanceSystem.addStudent(student2); attendanceSystem.addStudent(student3); attendanceSystem.addCourse(course1); attendanceSystem.addCourse(course2); // 添加出勤记录 course1.addAttendance(new Attendance(student1, true, 0, 0)); course1.addAttendance(new Attendance(student2, false, 5, 0)); course1.addAttendance(new Attendance(student3, true, 0, 10)); course2.addAttendance(new Attendance(student1, false, 15, 0)); course2.addAttendance(new Attendance(student2, true, 0, 0)); course2.addAttendance(new Attendance(student3, true, 0, 0)); // 输出报表 for (Course course : attendanceSystem.getCourseList()) { System.out.println(course.getName() + " 课程报表:"); System.out.println("应到人数:" + course.getAttendanceList().size()); System.out.println("实到人数:" + course.numPresent()); System.out.println("迟到人数:" + course.numLate()); System.out.println("早退人数:" + course.numEarly()); System.out.println("缺勤人数:" + course.numAbsent()); System.out.println(); } } } ``` 这个简单的Java程序实现了一个学生出勤管理系统,可以管理学生信息和课程信息,并且能够统计出勤情况并输出报表。你可以按照自己的需求进行修改和完善。
阅读全文

相关推荐

rar
目 录 目 录 I 摘 要 I ABSTRACT II 第1章 问题定义 1 1.1 引言 1 1.2开发背景 1 1.3问题描述 1 第2章 可行性分析 3 2.1 引言 3 2.2 目的和意义 3 2.3 可行性分析 3 第3章 需求分析 5 3.1 引言 5 3.2 用户需求描述 5 3.2.1学生用户需求描述 5 3.2.2任课老师用户需求描述 5 3.2.3班主任用户需求描述 6 3.2.4院(系)领导用户需求描述 6 3.2.5学校领导用户需求描述 6 3.2.6系统管理员用户需求描述 6 3.3功能需求描述 7 3.4系统开发工具 7 3.5相关开发工具简介 7 3.5.1 B/S(浏览器/服务器)简介 7 3.5.2 JAVA/JSP简介 8 3.6 系统功能划分 8 3.7 数据字典 9 3.8 数据流图 11 3.9运行需求 12 3.9.1 最低配置 12 3.9.2 建议配置 12 第4章 总体设计 13 4.1 引言 13 4.2 系统布局设计 13 4.3 总体结构图 14 4.4 本人主要工作任务 15 第5章 详细设计 16 5.1 引言 16 5.2 系统功能流程图 16 5.3系统目录结构设计 17 5.4 数据库设计与实现 17 5.4.1 实体模型 17 5.4.2 E-R模型 18 5.4.3 数据库的逻辑设计 19 5.4.4 数据库表的创建 19 5.4.5 数据库的建立 21 5.5 前端操作页面设计 21 5.5.1 系统登陆设计 21 5.5.2 学生用户功能设计 21 5.5.3 任课老师用户功能设计 22 5.5.4 班主任用户功能设计 23 5.5.5 院系领导用户功能设计 23 5.5.6 学校领导用户功能设计 24 第6章 编码 25 6.1用户操作页面编码 25 6.1.1 系统登陆编码 25 6.1.2 学生用户功能编码 27 6.1.3 任课老师用户功能编码 30 6.1.4 班主任用户功能编码 34 6.1.5 院系领导用户功能编码 35 6.2 数据库连接池编码 38 6.2.1数据库连接池程序编码 38 6.2.2 连接池配置文件 41 第7章 软件测试 43 7.1 引言 43 7.2 测试方案 43 7.2.1 黑盒测试 43 7.2.2 白盒测试 43 7.2.3 其它测试方案 43 7.2.4 本系统所采用测试方案 43 7.3 测试过程 44 7.3.1 用户登陆测试 44 7.3.2 页面使用安全测试 44 7.3.3学生用户测试 45 7.3.4任课老师用户测试 46 7.3.5班主任用户测试 46 7.3.6院系领导/学校领导用户测试 47 总 结 48 参考文献 49 致 谢 50 附 录 51 附录一:文献资料 51 原文 51 译文 53 附录二、系统部署及使用手册 57 开发工具的安装与配置 57 系统部署 59 用户操作手册 60

最新推荐

recommend-type

精细金属掩模板(FMM)行业研究报告 显示技术核心部件FMM材料产业分析与市场应用

精细金属掩模板(FMM)作为OLED蒸镀工艺中的核心消耗部件,负责沉积RGB有机物质形成像素。材料由Frame、Cover等五部分组成,需满足特定热膨胀性能。制作工艺包括蚀刻、电铸等,影响FMM性能。适用于显示技术研究人员、产业分析师,旨在提供FMM材料技术发展、市场规模及产业链结构的深入解析。
recommend-type

【创新未发表】斑马算法ZOA-Kmean-Transformer-LSTM负荷预测Matlab源码 9515期.zip

CSDN海神之光上传的全部代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:Main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2024b;若运行有误,根据提示修改;若不会,可私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开除Main.m的其他m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博主博客文章底部QQ名片; 4.1 CSDN博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 智能优化算法优化Kmean-Transformer-LSTM负荷预测系列程序定制或科研合作方向: 4.4.1 遗传算法GA/蚁群算法ACO优化Kmean-Transformer-LSTM负荷预测 4.4.2 粒子群算法PSO/蛙跳算法SFLA优化Kmean-Transformer-LSTM负荷预测 4.4.3 灰狼算法GWO/狼群算法WPA优化Kmean-Transformer-LSTM负荷预测 4.4.4 鲸鱼算法WOA/麻雀算法SSA优化Kmean-Transformer-LSTM负荷预测 4.4.5 萤火虫算法FA/差分算法DE优化Kmean-Transformer-LSTM负荷预测 4.4.6 其他优化算法优化Kmean-Transformer-LSTM负荷预测
recommend-type

j link 修复问题套件

j link 修复问题套件
recommend-type

C#实现modbusRTU(实现了01 3 05 06 16等5个功能码)

资源包括 modbuspoll 虚拟串口软件vspd modsim32和modscan32 以及C#版的modbus程序 打开modsim32连接串口2 打开程序连接串口3 即可和Mdosim32进行读写通信。 本代码为C# winform程序,实现了01 03 05 06 16总共五个功能码的功能。 备注: 01功能码:读线圈开关。 03功能码: 读寄存器值。 05功能码:写线圈开关。 06功能码:写单个寄存器值。 16功能码:写多个寄存器值。
recommend-type

WordPress作为新闻管理面板的实现指南

资源摘要信息: "使用WordPress作为管理面板" WordPress,作为当今最流行的开源内容管理系统(CMS),除了用于搭建网站、博客外,还可以作为一个功能强大的后台管理面板。本示例展示了如何利用WordPress的后端功能来管理新闻或帖子,将WordPress用作组织和发布内容的管理面板。 首先,需要了解WordPress的基本架构,包括它的数据库结构和如何通过主题和插件进行扩展。WordPress的核心功能已经包括文章(帖子)、页面、评论、分类和标签的管理,这些都可以通过其自带的仪表板进行管理。 在本示例中,WordPress被用作一个独立的后台管理面板来管理新闻或帖子。这种方法的好处是,WordPress的用户界面(UI)友好且功能全面,能够帮助不熟悉技术的用户轻松管理内容。WordPress的主题系统允许用户更改外观,而插件架构则可以扩展额外的功能,比如表单生成、数据分析等。 实施该方法的步骤可能包括: 1. 安装WordPress:按照标准流程在指定目录下安装WordPress。 2. 数据库配置:需要修改WordPress的配置文件(wp-config.php),将数据库连接信息替换为当前系统的数据库信息。 3. 插件选择与定制:可能需要安装特定插件来增强内容管理的功能,或者对现有的插件进行定制以满足特定需求。 4. 主题定制:选择一个适合的WordPress主题或者对现有主题进行定制,以实现所需的视觉和布局效果。 5. 后端访问安全:由于将WordPress用于管理面板,需要考虑安全性设置,如设置强密码、使用安全插件等。 值得一提的是,虽然WordPress已经内置了丰富的管理功能,但在企业级应用中,还需要考虑性能优化、安全性增强、用户权限管理等方面。此外,由于WordPress主要是作为内容发布平台设计的,将其作为管理面板可能需要一定的定制工作以确保满足特定的业务需求。 【PHP】标签意味着在实现该示例时,需要使用PHP编程语言。WordPress本身是由PHP语言开发的,因此开发者可能需要具备PHP开发能力,或至少能够理解PHP代码基础,以便对WordPress进行定制和扩展。 最后,【压缩包子文件的文件名称列表】中的"dctb-wp-as-admin-panel-master"暗示了这是一个存放所有相关文件的主目录,包括源代码、配置文件、模板文件、资源文件等,这些文件是安装和运行WordPress管理面板所必需的。在实际部署时,开发者需要上传这些文件到服务器,按照文档说明进行配置和安装。 总之,本示例提供了一个通过WordPress来搭建一个简单新闻或帖子管理系统的思路,展示了如何利用现有的开源工具来实现特定的业务需求。开发者需要有相应的PHP和WordPress知识,以及对网络安全和性能优化的基本了解。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

函数与模块化编程宝典:J750编程高效之路

![函数与模块化编程宝典:J750编程高效之路](https://github.blog/wp-content/uploads/2021/12/python-intermediate-update.png?resize=1024%2C494) 参考资源链接:[泰瑞达J750设备编程基础教程](https://wenku.csdn.net/doc/6412b472be7fbd1778d3f9e1?spm=1055.2635.3001.10343) # 1. 函数与模块化编程基础 ## 1.1 编程中的函数基础 函数是编程的基础构件,它允许将代码块组织成可重复使用的组件。在函数中封装特定的逻辑
recommend-type

用C语言求有4个圆塔,圆心分别为(2,2),(2,-2),(-2,2),(-2,-2)圆半径为1, 这4个塔的高度为10m 塔以外无建筑物接输入任意点的坐标 求该点的建筑高度(塔外的高度为零)的程序

在C语言中,你可以编写一个简单的函数来解决这个问题。首先,你需要确定每个圆是否包含了给定的点。如果包含,则返回塔高10米,如果不包含则返回0。这里提供一个基本的伪代码思路: ```c #include <stdio.h> #include <math.h> // 定义圆的结构体 typedef struct { double x, y; // 圆心坐标 int radius; // 半径 } Circle; // 函数判断点是否在圆内 int is_point_in_circle(Circle circle, double px, double py) { d
recommend-type

NPC_Generator:使用Ruby打造的游戏角色生成器

资源摘要信息:"NPC_Generator是一个专门为角色扮演游戏(RPG)或模拟类游戏设计的角色生成工具,它允许游戏开发者或者爱好者快速创建非玩家角色(NPC)并赋予它们丰富的背景故事、外观特征以及可能的行为模式。NPC_Generator的开发使用了Ruby编程语言,Ruby以其简洁的语法和强大的编程能力在脚本编写和小型项目开发中十分受欢迎。利用Ruby编写的NPC_Generator可以集成到游戏开发流程中,实现自动化生成NPC,极大地节省了手动设计每个NPC的时间和精力,提升了游戏内容的丰富性和多样性。" 知识点详细说明: 1. NPC_Generator的用途: NPC_Generator是用于游戏角色生成的工具,它能够帮助游戏设计师和玩家创建大量的非玩家角色(Non-Player Characters,简称NPC)。在RPG或模拟类游戏中,NPC是指在游戏中由计算机控制的虚拟角色,它们与玩家角色互动,为游戏世界增添真实感。 2. NPC生成的关键要素: - 角色背景故事:每个NPC都应该有自己的故事背景,这些故事可以是关于它们的过去,它们为什么会在游戏中出现,以及它们的个性和动机等。 - 外观特征:NPC的外观包括性别、年龄、种族、服装、发型等,这些特征可以由工具随机生成或者由设计师自定义。 - 行为模式:NPC的行为模式决定了它们在游戏中的行为方式,比如友好、中立或敌对,以及它们可能会执行的任务或对话。 3. Ruby编程语言的优势: - 简洁的语法:Ruby语言的语法非常接近英语,使得编写和阅读代码都变得更加容易和直观。 - 灵活性和表达性:Ruby语言提供的大量内置函数和库使得开发者可以快速实现复杂的功能。 - 开源和社区支持:Ruby是一个开源项目,有着庞大的开发者社区和丰富的学习资源,有利于项目的开发和维护。 4. 项目集成与自动化: NPC_Generator的自动化特性意味着它可以与游戏引擎或开发环境集成,为游戏提供即时的角色生成服务。自动化不仅可以提高生成NPC的效率,还可以确保游戏中每个NPC都具备独特的特性,使游戏世界更加多元和真实。 5. 游戏开发的影响: NPC_Generator的引入对游戏开发产生以下影响: - 提高效率:通过自动化的角色生成,游戏开发团队可以节约大量时间和资源,专注于游戏设计的其他方面。 - 增加多样性:自动化的工具可以根据不同的参数生成大量不同的NPC,为游戏世界带来更多的故事线和交互可能性。 - 玩家体验:丰富的NPC角色能够提升玩家的沉浸感,使得玩家在游戏中的体验更加真实和有吸引力。 6. Ruby在游戏开发中的应用: 虽然Ruby不是游戏开发中最常用的编程语言,但其在小型项目、原型设计、脚本编写等领域有其独特的优势。一些游戏开发工具和框架支持Ruby,如Ruby on Rails可以在Web游戏开发中发挥作用,而一些游戏开发社区也在探索Ruby的更多潜力。 7. NPC_Generator的扩展性和维护: 为了确保NPC_Generator能够长期有效地工作,它需要具备良好的扩展性和维护性。这意味着工具应该支持插件或模块的添加,允许社区贡献新功能,并且代码应该易于阅读和修改,以便于未来的升级和优化。 综上所述,NPC_Generator是一款利用Ruby编程语言开发的高效角色生成工具,它不仅提高了游戏开发的效率,而且通过提供丰富多样的NPC角色增加了游戏的深度和吸引力。随着游戏开发的不断发展,此类自动化工具将变得更加重要,而Ruby作为一种支持快速开发的编程语言,在这一领域有着重要的应用前景。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依