数据库课程设计:考勤管理系统

阅读: 评论:0

数据库课程设计:考勤管理系统

数据库课程设计:考勤管理系统

系统具有以下功能:

员工考勤记录的删除和查询:管理员可以通过系统删除和查询员工的考勤记录。删除功能可以根据员工ID和日期删除指定的考勤记录,查询功能可以根据员工ID查询员工的考勤记录。

公司策略设定:管理员可以设定公司的上下班时间,即公司的考勤策略。通过系统的界面,管理员可以输入上班时间和下班时间,并进行保存。

当日迟到和缺勤明细的显示:系统可以显示当日的迟到和缺勤明细。管理员可以在系统中选择指定日期范围,系统会根据设定的范围查询当日存在迟到或缺勤情况的员工,并显示其相应的考勤记录。


这些功能主要通过系统的可视化界面来实现,包括考勤管理窗体、考勤设置窗体、当日缺勤明细窗体等。用户可以通过界面上的按钮进行相应的操作,例如删除员工考勤记录、查询员工考勤记录、设定公司的考勤策略等。

通过这些功能,考勤管理系统可以帮助公司管理员工的考勤记录,提高工作效率,规范考勤政策,并为管理者提供数据分析和决策支持。


SQL语句进行表格的创建,和数据的插入:

CREATE TABLE 考勤记录表 (ID INT IDENTITY(1, 1) PRIMARY KEY,员工ID VARCHAR(50) NOT NULL,日期 DATE NOT NULL,迟到 VARCHAR(2) NOT NULL,缺勤 VARCHAR(2) NOT NULL
);CREATE TABLE 公司策略表 (上班时间 TIME NOT NULL,下班时间 TIME NOT NULL
);INSERT INTO 考勤记录表 (员工ID, 日期, 迟到, 缺勤)
VALUES ('1001', '2023-06-17', '是', '否'),('1002', '2023-06-17', '否', '是'),('1003', '2023-06-18', '否', '否');INSERT INTO 公司策略表 (上班时间, 下班时间)
VALUES ('09:00:00', '18:00:00');

import pyodbc
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog, QLabel, QLineEdit, QPushButton, QVBoxLayout, QMessageBox, QTableWidget, QTableWidgetItem,QWidget# 连接到 SQL Server 数据库
conn = t('Driver={SQL Server};Server=LAPTOP-G76L8H0V;Database=attendance_management;Trusted_Connection=yes;')class AttendanceManagementWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle('考勤管理系统')size(400, 300)self.delete_record_button = QPushButton('删除员工考勤记录', self)self.delete_record_button(self.delete_record)self.query_record_button = QPushButton('查询员工考勤记录', self)self.query_record_t(self.query_record)self.set_policy_button = QPushButton('公司策略设定', self)self.set_policy_t(self.set_policy)self.show_absences_button = QPushButton('显示当日迟到、缺勤明细', self)self.show_absences_t(self.show_absences)layout = QVBoxLayout()layout.addWidget(self.delete_record_button)layout.addWidget(self.query_record_button)layout.addWidget(self.set_policy_button)layout.addWidget(self.show_absences_button)central_widget = QWidget(self)central_widget.setLayout(layout)self.setCentralWidget(central_widget)def delete_record(self):dialog = DeleteRecordDialog(self)_():employee_id = ployee_id_()# 执行数据库删除操作cursor = conn.cur()ute(f"DELETE FROM 考勤记录表 WHERE 员工ID = '{employee_id}'")connmit()QMessageBox.information(self, '删除成功', '已成功删除员工考勤记录。')def query_record(self):dialog = QueryRecordDialog(self)_():employee_id = ployee_id_()# 执行数据库查询操作cursor = conn.cursor()ute(f"SELECT * FROM 考勤记录表 WHERE 员工ID = '{employee_id}'")records = cursor.fet()if records:QMessage.information(self, '查询结果', f'员工 {employee_id} 的考勤记录如下:nn' +'n'.join([str(record) for record in records]))else:QMessageBox.warning(self, '查询结果', '未找到该员工的考勤记录。')def set_policy(self):dialog = SetPolicyDialog(self)_():start_time = dialog.start_time_()end_time = d_time_()# 执行数据库更新操作,更新公司策略cursor = conn.cursor()ute("UPDATE 公司策略表 SET 上班时间 = ?, 下班时间 = ?", (start_time, end_time))connmit()QMessageBox.information(self, '策略设定成功', '公司策略已成功设定。')def show_absences(self):dialog = DateRangeDialog(self)_():start_date = dialog.start_date_()end_date =end_date_()# 执行数据库查询操作,获取当日迟到、缺勤明细cursor = conn.cursor()ute(f"SELECT * FROM 考勤记录表 WHERE 日期 BETWEEN '{start_date}' AND '{end_date}' "f"AND (迟到 = '是' OR 缺勤 = '是')")records = cursor.fetchall()if records:table = QTable(len(records), 4)table.setHorizontalHeaderLabels(['日期', '员工ID', '迟到', '缺勤'])for i, record in enumerate(records):for j in range(4):table.setItem(i, j, QTableWidgetItem(str(record[j])))table.setWindowTitle('当日迟到、缺勤明细')size(400, 300)table.show()else:QMessageBox.information(self, '无迟到、缺勤记录', '在指定日期范围内没有迟到或缺勤记录。')class DeleteRecordDialog(QDialog):def __init__(self, parent=None):super().__init__(parent)self.setWindowTitle('删除员工考勤记录')size(300, ployee_id_label = QLabel('员工ID:', ployee_id_line = QLineEdit(self)self.delete_button = QPushButton('删除', self)self.delete_t(self.accept)layout = QVBoxLayout()layout.ployee_id_label)layout.ployee_id_line_edit)layout.addWidget(self.delete_button)self.setLayout(layout)class QueryRecordDialog(QDialog):def __init__(self, parent=None):super().__init__(parent)self.setWindow('查询员工考勤记录')size(300, ployee_id_label = QLabel('员工ID:', ployee_id_line_edit = QLineEdit(self)self.query_button = QPushButton('查询', self)self.query_t(self.accept)layout = QVBoxLayout()layout.ployee_id_label)layout.ployee_id_line_edit)layout.addWidget(self.query_button)self.setLayout(layout)class SetPolicyDialog(QDialog):def __init__(self, parent=None):super().__init__(parent)self.setWindowTitle('公司策略设定')size(300, 150)self.start_time_label = QLabel('上班时间:', self)self.start_time_line_edit = QLineEdit(d_time_label = QLabel('下班时间:', d_time_line_edit = QLineEdit(self)self.set_policy_button = QPushButton('设定', self)self.set_policy_t(self.accept)layout = QVBoxLayout()layout.addWidget(self.start_time_label)layout.addWidget(self.start_time_line_edit)layout.d_time_label)layout.d_time_line_edit)layout.addWidget(self.set_policy_button)self.setLayout(layout)class DateRangeDialog(QDialog):def __init__(self, parent=None):super().__init__(parent)self.setWindowTitle('设定查询范围')size(300, 150)self.start_date_label = QLabel('起始日期:', self)self.start_date_line_edit = QLineEdit(d_date_label = QLabel('结束日期:', d_date_line_edit = QLineEdit(self)self.set_date_range_button = QPushButton('设定', self)self.set_date_range_t(self.accept)layout = QVBoxLayout()layout.addWidget(self.start_date_label)layout.addWidget(self.start_date_line_edit)layout.d_date_label)layout.d_date_line_edit)layout.addWidget(self.set_date_range_button)self.setLayout(layout)if __name__ == '__main__':app = QApplication([])main_window = AttendanceManagementWindow()main_window.show()
_()

 

本文发布于:2024-01-28 21:16:46,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170644781110344.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23