学生考勤管理系统56558

合集下载

学生考勤管理系统需求分析文档

学生考勤管理系统需求分析文档

学生考勤管理系统需求分析文档需求分析文档:学生考勤管理系统1.引言2.系统概述-学生信息管理:记录学生的基本信息,包括学号、姓名、班级等。

-考勤记录管理:记录学生每天的出勤情况,包括上课时间、请假、迟到、早退等。

-统计报表生成:根据考勤记录生成各类统计报表,包括学生出勤情况、迟到早退次数统计等。

-考勤预警功能:对于频繁缺勤或迟到早退的学生发出预警通知,提醒学生和家长。

3.功能需求3.1学生信息管理-学生信息录入:系统管理员可以录入学生的基本信息,包括学生编号、姓名、班级等。

-学生信息修改:管理员可以对学生的基本信息进行修改,如姓名、班级等。

-学生信息查询:管理员可以根据学生编号或姓名进行学生信息的查询。

- 学生信息导出:管理员可以将学生信息导出为Excel或CSV格式。

3.2考勤记录管理-考勤记录录入:教师可以根据课程表录入学生的考勤记录,包括上课时间、请假、迟到、早退等。

-考勤记录修改:教师可以对学生的考勤记录进行修改。

-考勤记录查询:管理员和教师可以根据学生编号或姓名查询学生的考勤记录。

3.3统计报表生成-学生出勤情况统计:系统可以根据考勤记录生成学生的出勤情况统计报表,包括出勤率、缺勤次数等。

-迟到早退次数统计:系统可以根据考勤记录生成学生的迟到早退次数统计报表,便于学校监督学生的作息时间。

3.4考勤预警功能-缺勤预警:系统可以根据考勤记录判断学生是否频繁缺勤,并发送预警通知给学生和家长。

-迟到早退预警:系统可以根据考勤记录判断学生是否频繁迟到早退,并发送预警通知给学生和家长。

4.非功能需求4.1用户友好性-界面简洁明了,操作简单易懂。

-提供详细的操作指南和帮助文档。

4.2数据安全性-学生信息和考勤记录需要进行加密存储,只有授权人员才能访问。

-学生信息和考勤记录需要进行定期备份,以防数据丢失。

4.3性能要求-系统能够快速响应用户的操作请求,保证较好的用户体验。

-系统能够处理大量的学生信息和考勤记录,保证系统的稳定性和高效性。

学生考勤管理系统

学生考勤管理系统

学生考勤管理系统学生考勤管理系统是一种信息化管理工具,它通过电脑软件与硬件相结合的方式,实现对学生考勤记录的自动化管理。

它的主要目的是提高学校考勤管理的效率,规范学生考勤的行为,保障学校教学秩序和学生的学习效果。

本文主要是对学生考勤管理系统的概述、功能、特点等方面进行详细介绍。

概述学生考勤管理系统是一种利用信息技术手段,实现学生考勤自动化管理的工具。

它通过硬件设备(刷卡器、条形码扫描器、指纹识别仪等)采集学生考勤数据,并通过软件平台进行处理和管理。

学生考勤管理系统可以对学生的学习情况进行记录和分析,为教师和学校管理者提供大量实用的信息支持。

功能1.自动化考勤:学生考勤管理系统可以采用各种现代化的硬件设备,实现自动化考勤,大大提高了考勤的准确度和效率,避免了人为因素的影响。

2.远程考勤:学生考勤管理系统可以通过互联网远程管理学生考勤数据,这样可以让学生在离校期间进行考勤,提高考勤管理的及时性。

3. 实时监测:学生考勤管理系统可以实时监测学生考勤情况,如缺勤、迟到、早退等,及时发出预警提示,提醒老师或学生注意。

4. 数据分析:学生考勤管理系统可以对学生的考勤数据进行统计分析,如出勤率、迟到次数、早退次数等,为教师和学校管理者提供有用的信息支持。

5. 科学管理:学生考勤管理系统可以实现对学生考勤的规范化管理,提高了管理工作的科学性和效率。

特点1.高效性:学生考勤管理系统实现了对考勤数据的自动化处理,极大提高了考勤的效率和准确性。

2.灵活性:学生考勤管理系统可以采用多种硬件设备进行考勤,可以根据学校的实际情况进行选择,灵活适应不同的教育场景。

3.可扩展性:学生考勤管理系统可以根据学校的需要,通过软件升级、硬件更换等方式实现功能的扩展和升级,满足不断变化的考勤管理需求。

4.安全性:学生考勤管理系统可以为学生的考勤数据提供安全保护措施,防止学生考勤数据泄露。

5.管理多样化:学生考勤管理系统可以通过软件平台实现对学生考勤数据的维护管理,解放了教师的劳动力,能够更好地应对学生考勤管理工作的多样性和复杂性挑战。

学生考勤管理系统概要设计

学生考勤管理系统概要设计

学生考勤管理系统概要设计学生考勤管理系统概要设计一、系统概述学生考勤管理系统是一个用于管理和监控学生出勤情况的系统,旨在提高学校对学生出勤的监管效率和准确性,方便教师和行政人员对学生出勤情况进行查询、统计和分析。

该系统应具备用户管理、课程管理、班级管理、学生出勤记录管理等功能,并能够根据学校的需求进行定制和扩展。

二、系统需求分析1.用户管理:系统应具备用户管理功能,包括用户注册、登录、密码找回等功能,以确保系统的安全性和稳定性。

2.课程管理:系统应能够添加、编辑和删除课程信息,包括课程名称、课程代码、授课教师、课程时间等。

3.班级管理:系统应能够添加、编辑和删除班级信息,包括班级名称、班级代码、班主任等。

4.学生出勤记录管理:系统应能够记录每个学生的出勤情况,包括迟到、早退、请假等,并能够根据不同的查询条件进行统计和分析。

5.日志管理:系统应能够记录用户操作日志和系统异常日志,以便于跟踪和排查问题。

6.系统设置:系统应能够设置系统参数,如考勤周期、考勤方式等,以满足不同学校的需求。

三、系统架构设计1.数据库设计:根据系统需求分析,设计数据库表结构,包括用户表、课程表、班级表、学生出勤记录表等。

2.系统模块设计:根据系统需求分析,将系统划分为用户管理模块、课程管理模块、班级管理模块、学生出勤记录管理模块、日志管理模块和系统设置模块。

3.系统流程设计:根据系统模块设计,设计系统的流程图,包括用户注册、登录、添加课程、添加班级、记录学生出勤情况等流程。

4.系统界面设计:根据系统需求分析和流程设计,设计系统的界面布局和交互方式,以提高系统的易用性和用户体验。

四、系统实现与测试1.系统实现:根据系统架构设计和流程设计,编写系统的代码和脚本,实现系统的各项功能。

2.系统测试:对系统进行测试,包括单元测试、集成测试和系统测试等,确保系统的稳定性和可靠性。

3.系统部署与上线:将系统部署到服务器上并上线运行,同时监控系统的运行状态和异常情况,及时进行处理和修复。

《班级管理课件-学生考勤管理系统操作详解》

《班级管理课件-学生考勤管理系统操作详解》
2 异常提醒
实时检测学生的异常考勤情况,并发送提醒通知给班主任。
3 统计报表
生成详细的考勤统计报表,方便班级管理和教学分析。
4 数据安全
保护学生考勤相关信息的安全,只有授权人员可访问。
操作流程
1
步骤一
登录系统,进入课堂管理界面。
2
步骤二
选择班级,进入学生考勤页面。
3
步骤三
录入学生考勤情况并保存。
常见问题
采用先进的数据加密技术,确保 考勤信息安全。
加强沟通
提升学校与家长之间的信息共享 和互动。
引用
学业,考勤,纪律 - 三位一体,班级管理不可或缺。 — 班级管理专家
总结
通过学生考勤管理系统,教师可以更轻松地进行班级管理和教学分析,提高 工作效率。学生考勤管理系统是实现数字化、智能化管理的重要工具。
我忘记密码了怎么办?
在登录界面点击"忘记密码" 链接,按照提示找回密码。
如何导出考勤报表?
在考勤记录页面点击"导出报 表"按钮,选择导出格式和保 存路径。
怎样设置异常考勤提醒?
在系统设置中配置异常考勤 提醒的方式和接收人。
学生考勤管理系统优势
高效便捷
通过智能技术,实现快速准确的 考勤管理。
安全可靠
班级管理课件——学生考 勤管理系统操作详解
在本课件中,我们将详细介绍学生考勤管理系统的操作步骤,让您轻松掌握 班级管通过输入用户名和密码登录 系统。
选择班级
从班级列表中选择要管理的 班级。
查看考勤记录
浏览学生的考勤记录和统计 信息。
功能特点
1 智能考勤
系统自动记录学生进出校门的时间和地点,准确统计考勤情况。

学生考勤管理系统

学生考勤管理系统

学生考勤管理系统正文:1. 引言学生考勤管理系统是一种用于记录和管理学生出勤情况的软件工具。

该系统可以帮助教育机构更好地监控学生的出勤状况,提高校园安全性,并为教职员工提供方便快捷的数据统计与分析功能。

2. 系统概述本章节将介绍整个学生考勤管理系统的总体架构、主要模块以及各模块之间的关系。

2.1 总体架构在这里描述整个系统采用什么样的技术框架进行开发,包括前端界面设计、后台数据库等相关内容。

2.2 主要模块- 学生信息录入:负责输入并保存每位学员基本信息;- 考勤记录:实时跟踪和存储每次课程中所有参与者(包括老师和同班同学)是否到场;- 数据查询与报表:支持按时间段、班级或其他条件对考勤数据进行灵活查询,并能够导出相应报表;3. 功能需求详解此处了针对不同角色用户所需要完成任务清单:3.x 角色A - 例如管理员/老师:- 登录账号;- 添加/修改/删除学生信息;- 创建/编辑课程表;- 查看考勤记录等。

4. 系统设计与实现本章节将详细介绍系统的具体功能模块,包括每个模块的输入输出、流程图以及相关算法或技术。

4.x 模块A:输入:用户提供所需数据(例如学生基本信息);输出:保存到数据库中,并返回相应提示给用户;5. 数据库设计此处描述了系统使用的数据库结构和关系。

列出各张表格名称、字段名及其类型,并解释它们之间的联系。

6. 用户界面设计在这里展示并说明软件前端页面布局和交互方式,确保易用性和友好性。

7. 测试计划与结果分析该部分阐述测试方法论以及对于不同场景下进行验证得到反馈意见,在最后总结整个项目开发过程中遇到问题并加以改进措施。

附件:- 学生考勤管理系统原型文件(.xd)- 数据库脚本文件(.sql)法律名词注释:1) GDPR: General Data Protection Regulation (欧洲通用数据保护条例),是指为增强公民隐私权利而制定的一项监管框架。

2) COPPA: Children's Online Privacy Protection Act (儿童在线隐私保护法),旨在保护13岁以下儿童在互联网上的个人信息安全。

学生考勤管理系统概要设计

学生考勤管理系统概要设计

学生考勤管理系统概要设计简介学生考勤管理系统是一个用于学校管理学生考勤情况的信息化系统。

该系统将学生的考勤记录、请假情况、迟到早退情况等信息进行集中管理,提供便捷、高效的考勤管理服务,以提升学校的管理效率和学生的学习积极性。

功能模块用户管理模块该模块负责管理系统的用户信息,包括学生、教师和管理员。

每种用户都拥有不同的权限和功能。

学生用户•注册账号和登录系统•修改个人信息•查看考勤记录•申请请假•查看请假审批状态教师用户•注册账号和登录系统•修改个人信息•查看班级考勤记录•批准或拒绝学生请假申请•发送提醒消息给学生管理员用户•注册账号和登录系统•修改个人信息•管理学生和教师用户•生成考勤报表•设置系统参数和权限考勤管理模块该模块负责记录学生的考勤情况,包括签到、签退、请假、迟到和早退等信息。

签到与签退学生每天上学前要进行签到操作,下学后进行签退操作。

系统将记录学生签到签退的时间和地点,以便后续查询和分析。

请假管理学生可以在系统中申请请假,教师可以进行审批。

系统将记录请假的时间段和请假状态,并根据请假情况生成请假报表。

迟到和早退系统将记录学生的迟到和早退情况,并进行统计和分析。

教师可以对学生的迟到早退进行批评和提醒。

数据分析模块该模块根据考勤数据进行分析和统计,提供给管理员和教师用户参考。

考勤报表系统将根据学生的考勤记录生成考勤报表,包括学生的出勤率、请假次数、迟到次数等。

管理员和教师可以根据报表进行分析和评估。

迟到早退分析系统将统计学生的迟到和早退情况,并进行分析。

教师可以根据分析结果进行教学活动的调整和改进。

页面设计登录页面用户登录的入口,提供用户名和密码输入框,登录按钮。

注册页面新用户注册的入口,提供用户名、密码、确认密码和用户类型选择。

学生主页学生用户登录后的主页,显示个人信息和考勤记录。

提供请假申请和查看请假状态的功能。

教师主页教师用户登录后的主页,显示个人信息和班级考勤记录。

提供批准或拒绝学生请假申请的功能。

学生考勤管理系统设计

学生考勤管理系统设计

学生考勤管理系统设计一、需求分析1.学生信息管理:包括学生基本信息、班级信息等;2.教师信息管理:包括教师基本信息、所教班级信息等;3.考勤记录管理:教师可以对每节课的学生进行考勤记录,记录学生是否准时到课;4.出勤统计:系统可以对学生的出勤情况进行统计分析,包括出勤天数、迟到次数等;5.教师通知:教师可以通过系统向学生或家长发送考勤相关通知;6.学生请假管理:学生可以通过系统提交请假申请,教师可以审核学生请假情况;7.管理员权限:系统需要具备管理员权限,用于管理系统的用户和权限。

二、系统设计1.数据库设计:(1)学生表:包括学生ID、姓名、性别、班级ID等字段。

(2)教师表:包括教师ID、姓名、性别等字段。

(3)班级表:包括班级ID、班级名称等字段。

(4)考勤记录表:包括记录ID、学生ID、教师ID、上课时间、是否准时到课等字段。

(5)请假申请表:包括申请ID、学生ID、请假开始时间、请假结束时间、请假原因、审核状态等字段。

2.界面设计:(1)登录界面:学生、教师和管理员分别登录系统。

(2)学生信息管理界面:展示学生基本信息,并提供增删改查操作。

(3)教师信息管理界面:展示教师基本信息,并提供增删改查操作。

(4)考勤记录管理界面:教师可以在该界面记录学生的考勤情况。

(5)出勤统计界面:对学生的出勤情况进行统计分析。

(6)教师通知界面:教师可以在该界面向学生或家长发送考勤相关通知。

(7)请假管理界面:学生可以在该界面提交请假申请,教师可以审核请假情况。

(8)管理员权限管理界面:管理员可以在该界面管理系统的用户和权限。

3.功能设计:(1)学生信息管理功能:实现学生信息的增删改查操作。

(2)教师信息管理功能:实现教师信息的增删改查操作。

(3)考勤记录管理功能:教师可以对每节课的学生进行考勤记录。

(4)出勤统计功能:系统可以对学生的出勤情况进行统计分析。

(5)教师通知功能:教师可以通过系统向学生或家长发送考勤相关通知。

学生考勤管理系统

学生考勤管理系统

学生考勤管理系统正文:1·系统介绍1·1 目的学生考勤管理系统旨在实现对学生的考勤情况进行有效管理和监控,提高学校考勤工作的效率和准确性。

1·2 背景传统的学生考勤管理方式存在着诸多问题,如人工记录容易出错、管理不便等。

因此,开发学生考勤管理系统能够帮助学校实现自动化考勤,提升工作效率。

1·3 功能概述学生考勤管理系统主要包括以下功能:●学生信息管理:包括学生基本信息、班级信息等。

●考勤记录管理:记录学生的每次考勤情况,包括考勤时间、考勤状态等。

●统计分析功能:根据考勤记录各类统计报表,提供数据分析支持。

●考勤预警功能:根据设定的规则和条件,对学生的考勤情况进行预警。

●系统设置功能:包括权限管理、数据备份与恢复等。

1·4 目标用户本系统主要面向学校教务管理人员、班主任和学生,以及家长等相关人员。

2·系统需求2·1 功能需求2·1·1 学生信息管理●添加学生信息:包括学生姓名、学号、班级等。

●查看学生信息:提供按条件查询学生信息的功能。

●编辑学生信息:可以修改学生的基本信息。

2·1·2 考勤记录管理●添加考勤记录:记录学生的每次考勤情况,包括考勤时间、考勤状态等。

●查询考勤记录:提供按条件查询考勤记录的功能。

●编辑考勤记录:可以修改考勤记录的相关信息。

2·1·3 统计分析功能●考勤报表:根据考勤记录各类统计报表,如学生考勤统计、班级考勤统计等。

●数据分析支持:提供数据分析功能,帮助教务管理人员进行决策。

2·1·4 考勤预警功能●设置预警规则:根据学校的具体需求,设置考勤预警规则。

●预警通知:当学生的考勤情况触发预警规则时,通过系统通知相关人员。

2·1·5 系统设置功能●权限管理:设置不同用户的权限,保证系统安全。

●数据备份与恢复:提供数据备份和恢复的功能,防止数据丢失。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、设计内容与设计要求1.设计内容:学生考勤管理系统1、问题描述学生信息包括:学号、姓名、性别、年龄、班级等信息。

考勤信息包括:缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假和旷课)。

2、功能要求(1)添加功能:程序能够添加学生的记录和缺课记录,提供选择界面供用户选择所要添加的类别。

添加学生记录时,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。

(2)查询功能:可根据学号、姓名等信息对已添加的学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

还可以按课程名、学生姓名对缺课记录进行查询。

(3)显示功能:可显示当前系统中所有学生的记录和缺课记录,每条记录占据一行。

(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。

(5)删除功能:主要实现对已添加的学生记录进行删除。

如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。

(6)统计功能:能根据多种参数进行统计。

能按课程名统计出学生旷课的信息、还可以按姓名统计出任一学生的旷课情况。

需要排序。

(7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。

(8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。

目录一、需求分析 (6)1.系统设计目的与意义 (6)2.系统功能需求(系统流程图) (6)3.系统功能流程图 (7)4.输入输出的要求 (7)二、总体分析 (7)1. 系统功能分析 (8)2.系统功能结构图 (8)三、详细设计 (9)1.类设计: (11)四、界面设计与各功能模块的实现 (12)1. 界面设计 (12)五、系统调试 (14)1.首页进入学籍管理系统主菜单 (14)2录入学生信息缺课界面: (15)3.显示学生信息缺课界面 (16)4.查找学生信息界面 (17)5.删除学生信息界面 (18)6.修改学生信息 (18)7.统计学生信息: (19)六、使用说明及心得体会 (20)七、附件 (20)一、需求分析1.系统功能流程图3.输入输出的要求1.输入的要求:通过主函数体调用其他函数应用系统主控界面包括学生信息录入,查找等功能模块。

学生信息录入功能完成学生信息和缺课信息的输入。

记录查询功能可以对数据各分类的记录进行查询。

2.输出的要求:1)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。

2)可以统计全部学生缺课类型,及其缺课次数。

3)如果检索不到相应的信息应提示用户。

二、总体分析系统功能分析能够从屏幕上读取一个学生的信息和缺课信息并将信息存入到数据文件中。

能够将指定的信息从文件中删除。

能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。

可以统计全部学生缺课次数,及其缺课类型。

要求有错误提示功能。

如果检索不到相应的信息应提示用户。

三、详细设计1.类设计:类:Person数据成员学号,姓名,性别,年龄,班级缺课类型,缺课次数,指针域double num; //学号char Name[20]; //姓名char sex;//性别double old;//年龄long double G;//班级int Duty; //缺课类型(1-迟到,2-早退,3-请假,4-旷课)double Salary; //缺课次数Person *next; //指针域、成员函数Person() //基类构造{next=0; //指针域设置为空}virtual ~Person() //基类虚析构{}virtual void Input()=0; //从键盘输入数据virtual void Input(ifstream& ifs)=0; //从文件输入数据virtual void Output()=0; //向屏幕输出数据virtual void Output(ofstream& ofs)=0; //向文件输出数据virtual double Incoming()=0; //计算次数friend class College;类:Teacher(公共继承与Person类)数据成员:int Hours; //第几节课char B;//迟到日期char Z;//课程名称class school 成员函数:Tercher(){}void Input()void Input(ifstream& ifs)void Output(ofstream& ofs) double Incoming()迟到类:class Assistant:virtual public Person 数据成员:protected:int Allowance;int Hours; //第几节课char B;//早退日期char Z;//课程名称成员函数:Assistant()void Input()void Input(ifstream& ifs)void Output()void Output(ofstream& ofs) double Incoming()请假类:class Manager:virtual public Person 数据成员:protected:int Allowance;int Hours; //第几节课char B;//请假日期char Z;//课程名称Manager()void Input()void Input(ifstream& ifs)void Output()void Output(ofstream& ofs)double Incoming()旷课类:class Teacher_Assistant:public Teacher,public Assistant 成员函数:Teacher_Assistant()void Input()void Input(ifstream& ifs)void Output()void Output(ofstream& ofs)double Incoming()学生类:class College数据成员private:Person *PL;void Clear();int College::Cfind(int ID,Person **p1,Person **p2)成员函数:public:College(); //构造~College(); //析构void Add(); //退出void Delete(); //删除void Modify(); //修改void Print(); //输出void Save(); //信息存盘void Load(); //信息装入void Find(); //查找void Build(); //导引void Stat(); //统计四、界面设计与各功能模块的实现1.界面设计1.界面设计程序运行后会出现一个简捷的窗口,便于用户查询数据。

2.功能模块实现设计通过主窗体调用其他窗体。

应用系统主控界面包括学生信息录入,查找等功能模块。

学生信息录入功能完成学生信息和成绩的输入。

记录查询功能可以对数据各分类的记录进行查询。

具体举例如下:1)输入函数:void Input(){cout<<"\n学号:"; cin>>num;cout<<"\n姓名:"; cin>>Name;cout<<"\n性别:"; cin>>sex;cout<<"\n年龄:"; cin>>old;cout<<"\n班级:"; cin>>G;cout<<"\n第几节课:"; cin>>Hours;Salary=Incoming(); } 2)删除函数void school::del(){student *p,*p2;int num;cout<<"请输入编号: ";cin>>num;if( !find(&p,num,"^") ){cout<<"SORRY!找不到你要删除的内容!"<<endl;return;}(p->next)->output();p2=p->next;p->next=p2->next;delete p2;school::setkey(1);}2.类的派生之间的示意图PersonTercher Assitant MannagerTercher_Assitant五、系统调试1.首页进入学生考勤管理系统主菜单2录入学生信息界面:3.显示学生信息界面:4.修改学生信息六、使用说明及心得体会此次c++课程设计,在指导教师的精心教导下,我学会了如何用C++编写一个简单的应用程序。

首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。

程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。

七、附件源文件代码:#include <fstream.h> 文件操作头文件#include <string.h> 字符串流class Person //人员类(抽象类) {protected:double num; //学号char Name[20]; //姓名char sex;//性别double old;//年龄long double G;//班级int Duty; //缺课类型(1-迟到,2-早退,3-请假,4-旷课)double Salary; //缺课次数Person *next; //指针域public:Person() //基类构造{ next=0; //指针域设置为空}virtual ~Person() //基类虚析构{ }virtual void Input()=0; //从键盘输入数据virtual void Input(ifstream& ifs)=0; //从文件输入数据virtual void Output()=0; //向屏幕输出数据virtual void Output(ofstream& ofs)=0; //向文件输出数据virtual double Incoming()=0; //计算次数friend class College; };class Teacher:virtual public Person //迟到类{ protected:int Hours; //第几节课char B;//迟到日期char Z;//课程名称public:{ Duty=1;Salary=800; }void Input() //键盘补充输入其它数据{ cout<<"\n学号:"; cin>>num;cout<<"\n姓名:"; cin>>Name;cout<<"\n性别:"; cin>>sex;cout<<"\n年龄:"; cin>>old;cout<<"\n班级:"; cin>>G;cout<<"\n第几节课:"; cin>>Hours;Salary=Incoming(); }void Input(ifstream& ifs){ ifs>>num>>Name>>sex>>old>>G>>Duty>>Hours>>Salary; }void Output(){ cout<<num<<"\t"<<Name<<"\t"<<sex<<"\t"<<old<<"\t"<<G<<"\t"<<Duty<<"\t"<<Hours<<"\t"<<Salary<<"\t" <<endl; }void Output(ofstream& ofs){ ofs<<num<<"\t"<<Name<<"\t"<<sex<<"\t"<<old<<"\t"<<G<<"\t"<<Duty<<"\t"<<Hours<<"\t"<<Salary<<"\t"< <endl; }double Incoming(){ if(Hours>120)return Salary+(Hours-120)*20;elsereturn Salary; } };class Assistant:virtual public Person //早退{ protected:int Allowance;int Hours; //第几节课char B;//早退日期char Z;//课程名称public:Assistant() {Duty=2;Salary=650;Allowance=150; }void Input(){ cout<<"\n学号:"; cin>>num;cout<<"\n姓名:"; cin>>Name;cout<<"\n性别:"; cin>>sex;cout<<"\n年龄:"; cin>>old;cout<<"\n班级:"; cin>>G;cout<<"\n第几节课:"; cin>>Hours;Salary=Incoming(); }void Input(ifstream& ifs){ ifs>>num>>Name>>sex>>old>>G>>Duty>>Hours>>Salary; }void Output(){ cout<<num<<"\t"<<Name<<"\t"<<sex<<"\t"<<old<<"\t"<<G<<"\t"<<Duty<<"\t"<<Hours<<"\t"<<Salary<<"\t" <<endl; }void Output(ofstream& ofs){ ofs<<num<<"\t"<<Name<<"\t"<<sex<<"\t"<<old<<"\t"<<G<<"\t"<<Duty<<"\t"<<Hours<<"\t"<<Salary<<"\t"< <endl; }double Incoming(){if(Salary>70)return Salary+Allowance+(Hours-70)*20;elsereturn Salary+Allowance; } };class Manager:virtual public Person //请假{ protected:int Allowance;int Hours; //第几节课char B;//请假日期char Z;//课程名称public:Manager() {Duty=3;Allowance=250; }void Input(){ cout<<"\n学号:"; cin>>num;cout<<"\n姓名:"; cin>>Name;cout<<"\n性别:"; cin>>sex;cout<<"\n年龄:"; cin>>old;cout<<"\n班级:"; cin>>G;cout<<"\n第几节课:"; cin>>Hours;Salary=Incoming(); }void Input(ifstream& ifs){ ifs>>num>>Name>>sex>>old>>G>>Duty>>Hours>>Salary; }void Output(){ cout<<num<<"\t"<<Name<<"\t"<<sex<<"\t"<<old<<"\t"<<G<<"\t"<<Duty<<"\t"<<Hours<<"\t"<<Salary<<"\t" <<endl; }class College{private:Person *PL;void Clear();int College::Cfind(int ID,Person **p1,Person **p2);public:College(); //构造~College(); //析构void Add(); //退出void Delete(); //删除void Modify(); //修改void Print(); //输出void Save(); //信息存盘void Load(); //信息装入void Find(); //查找void Build(); //导引void Stat(); //统计};College::College() //构造函数(创建1个头结点的链表){Person *p=new Teacher;PL=p; cout<<"自动装入数据……………………\n";Build();} College::~College() //析构函数(仅保留1个头结点){Person *p=PL;while(p) //逐个删除结点,包括头结点{p=PL;}PL=0;}void College::Add() //增加{char c; do{ cout<<"\n** 增加**\n";//查找尾结点Person *p=PL; Teacher *pt; Assistant *pa; Manager *pm; Teacher_Assistant *pta;switch(ch) {case 1: pt=new Teacher; pt->Input();p->next=pt;break;case 2: pa=new Assistant; pa->Input();p->next=pa;break;case 3: pm=new Manager; pm->Input();p->next=pm;break;case 4: pta=new Teacher_Assistant; pta->Input();p->next=pta;break;default: return;}cout<<"是否进行循环?y/n\n";cin>>c;}while(c=='y'||c=='Y');Save();}/查找void College::Find(){double ID;Person *p1;Person *p2;cout<<"输入你要查询的编号:";cin>>ID;p1=PL->next;p2=PL;while(p1){if(p1->num==ID){p2=p1; //继续查找p1=p1->next;}}if(!p1) {cout<<"找不到你所查询的人!!!\n请确认你所查询的编号是否出错!!!\n";return;} else{ cout<<"\n** 出勤信息表**\n";cout<<"学号姓名性别年龄班级缺课类型缺课次数\n";p1->Output();}}//查找缺课结点(返回1-找到,0-未找到.结点指针由p1返回,p2为前看指针)int College::Cfind(int ID,Person **p1,Person **p2){*p1=PL->next;*p2=PL;while(*p1){if((*p1)->num==ID)break; //找到else{*p2=*p1; //继续查找*p1=(*p1)->next;}return *p1?1:0;}void College::Delete() //删除{cout<<"\n** 删除**\n";int num; Person *p1,*p2;cout<<"编号:"; cin>>num;if(!Cfind(num,&p1,&p2)){cout<<"指定的人员没有找到!\n";}else{p2->next=p1->next; //连接delete p1;cout<<"正确删除!\n";}Save();{cout<<"\n** 修改**\n";int num;Person *p1,*p2;cout<<"编号:"; cin>>num;if(!Cfind(num,&p1,&p2)){cout<<"指定的人员没有找到!\n";}else{p1->Output(); //输出原来的出勤信息(做提示)p1->Input(); //输入新的出勤信息(更新)cout<<"修改完成!\n";}Save(); }void College::Print() //输出出勤信息{cout<<"\n** 出勤信息表**\n";cout<<"学号姓名性别年龄班级缺课类型缺课次数\n"; Person *p=PL->next;if(!p){cout<<"无出勤记录!\n";return;}while(p) //遍历链表,输出出勤信息{p->Output();p=p->next;}}void College::Save() //出勤信息存盘?{ofstream f("Person.dat",ios::out); //打开文件Person *p=PL->next;while(p){p->Output(f);p=p->next;}f.close(); //关闭文件cout<<"职工信息已经保存在Person.dat.\n";{char buf[81]; //临时空间int Duty; //人员类型Person *p2; //新建结点的指针long t; //读写位置Clear();ifstream f("Person.dat",ios::in);Person *p=PL; //尾结点指针while(1){t=f.tellg();f>>buf>>buf>>Duty;if(f){ switch(Duty) {case 1: p2=new Teacher; break;case 2: p2=new Assistant; break;case 3: p2=new Manager; break;case 4: p2=new Teacher_Assistant; break; default: f.close(); return;}p->next=p2;p=p->next;f.seekg(t);p->Input(f);}elsebreak;f.close();}void College::Load() //出勤信息录入{char ah;int c;cout<<"\n** 出勤信息录入**\n";do{cout<<"输入要录入的出勤人员个数:\n"; cin>>c;for(int i=1;i<=c;i++){Person *p=PL;while(p->next)p=p->next;int ch;Teacher *pt;Assistant *pa;Manager *pm;Teacher_Assistant *pta;switch(ch){case 1: pt=new Teacher; pt->Input();p->next=pt;break;case 2: pa=new Assistant; pa->Input();p->next=pa;break;case 3: pm=new Manager; pm->Input();p->next=pm;break;case 4: pta=new Teacher_Assistant; pta->Input();p->next=pta;break;default: return;}}Save();cout<<"是否还要继续录入出勤信息?? y/n\n";cin>>ah;}while(ah=='Y'||ah=='y');}void College::Stat(){Person *p1;Person *p2;double Sa=0;int a,b,i=0;double c,d;cout<<"选择你要统计的类别\n[1-类别;2-次数;3-缺课总次数;]\n"; cin>>a;if(a==1){cout<<"输入你要统计的类别:\n[1-迟到,2-早退,3-请假,4-旷课]\n"; cin>>b;p1=PL->next;p2=PL;while(p1){if(p1->Duty==b)//找到p2=p1; //继续查找p1=p1->next;}else{p2=p1; //继续查找p1=p1->next;}}cout<<b<<"类缺课次数是:"<<i<<endl; } else if(a==2) {cout<<"输入出勤下限:";cin>>c;cout<<"\n输入出勤上限:";cin>>d;p1=PL->next;p2=PL;while(p1){if(p1->Salary>=c&&p1->Salary<=d){p1->Output();//找到p2=p1; //继续查找p1=p1->next;}else{p2=p1; //继续查找p1=p1->next;}else if(a==3){Person *p=PL->next;while(p) //遍历链表{Sa=Sa+(p->Salary);p=p->next;}cout<<"缺课总数是:"<<Sa<<endl;}else if(a==4){ Person *p=PL->next;while(p){i=i+1;cout<<"缺课次数是:"<<i<<endl;cout<<"统计完成!!!\n";}void main(){char ch;College c; //定义大学对象do{cout<<"\n☆☆学生考勤管理系统☆☆\n"; cout<<"1-添加\n";cout<<"2-查询\n";cout<<"3-编辑\n";cout<<"4-删除\n";cout<<"5-统计\n";cout<<"6-读取\n";cout<<"7-退出\n"<<"请选择:\n"; cin>>ch;switch(ch){case '1': c.Load(); break;case '2': c.Find(); break;case '3': c.Modify(); break;case '4': c.Delete(); break;case '5': c.Stat(); break;case '6': c.Print(); break;case '7': c.Add; break;}}while(ch!='7');}。

相关文档
最新文档