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

本文介绍了考勤管理系统的关键功能,如删除和查询员工考勤记录、设定公司策略,以及使用SQL操作数据库创建和管理考勤表格。还展示了如何通过可视化界面进行操作,以提升管理员效率和考勤管理的规范性。
该文章已生成可运行项目,

系统具有以下功能:

员工考勤记录的删除和查询:管理员可以通过系统删除和查询员工的考勤记录。删除功能可以根据员工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 = pyodbc.connect('Driver={SQL Server};Server=LAPTOP-G76L8H0V;Database=attendance_management;Trusted_Connection=yes;')

class AttendanceManagementWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle('考勤管理系统')
        self.resize(400, 300)

        self.delete_record_button = QPushButton('删除员工考勤记录', self)
        self.delete_record_button(self.delete_record)

        self.query_record_button = QPushButton('查询员工考勤记录', self)
        self.query_record_button.clicked.connect(self.query_record)

        self.set_policy_button = QPushButton('公司策略设定', self)
        self.set_policy_button.clicked.connect(self.set_policy)

        self.show_absences_button = QPushButton('显示当日迟到、缺勤明细', self)
        self.show_absences_button.clicked.connect(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)
        if dialog.exec_():
            employee_id = dialog.employee_id_line_edit.text()

            # 执行数据库删除操作
            cursor = conn.cur()
            cursor.execute(f"DELETE FROM 考勤记录表 WHERE 员工ID = '{employee_id}'")
            conn.commit()

            QMessageBox.information(self, '删除成功', '已成功删除员工考勤记录。')

    def query_record(self):
        dialog = QueryRecordDialog(self)
        if dialog.exec_():
            employee_id = dialog.employee_id_line_edit.text()

            # 执行数据库查询操作
            cursor = conn.cursor()
            cursor.execute(f"SELECT * FROM 考勤记录表 WHERE 员工ID = '{employee_id}'")
            records = cursor.fet()

            if records:
                QMessage.information(self, '查询结果', f'员工 {employee_id} 的考勤记录如下:\n\n' +
                                        '\n'.join([str(record) for record in records]))
            else:
                QMessageBox.warning(self, '查询结果', '未找到该员工的考勤记录。')

    def set_policy(self):
        dialog = SetPolicyDialog(self)
        if dialog.exec_():
            start_time = dialog.start_time_line_edit.text()
            end_time = dialog.end_time_line_edit.text()

            # 执行数据库更新操作,更新公司策略
            cursor = conn.cursor()
            cursor.execute("UPDATE 公司策略表 SET 上班时间 = ?, 下班时间 = ?", (start_time, end_time))
            conn.commit()

            QMessageBox.information(self, '策略设定成功', '公司策略已成功设定。')

    def show_absences(self):
        dialog = DateRangeDialog(self)
        if dialog.exec_():
            start_date = dialog.start_date_line_edit.text()
            end_date =end_date_line_edit.text()

            # 执行数据库查询操作,获取当日迟到、缺勤明细
            cursor = conn.cursor()
            cursor.execute(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('当日迟到、缺勤明细')
                table.resize(400, 300)
                table.show()
            else:
                QMessageBox.information(self, '无迟到、缺勤记录', '在指定日期范围内没有迟到或缺勤记录。')


class DeleteRecordDialog(QDialog):
    def __init__(self, parent=None):
        super().__init__(parent)

        self.setWindowTitle('删除员工考勤记录')
        self.resize(300, 100)

        self.employee_id_label = QLabel('员工ID:', self)
        self.employee_id_line = QLineEdit(self)

        self.delete_button = QPushButton('删除', self)
        self.delete_button.clicked.connect(self.accept)

        layout = QVBoxLayout()
        layout.addWidget(self.employee_id_label)
        layout.addWidget(self.employee_id_line_edit)
        layout.addWidget(self.delete_button)

        self.setLayout(layout)


class QueryRecordDialog(QDialog):
    def __init__(self, parent=None):
        super().__init__(parent)

        self.setWindow('查询员工考勤记录')
        self.resize(300, 100)

        self.employee_id_label = QLabel('员工ID:', self)
        self.employee_id_line_edit = QLineEdit(self)

        self.query_button = QPushButton('查询', self)
        self.query_button.clicked.connect(self.accept)

        layout = QVBoxLayout()
        layout.addWidget(self.employee_id_label)
        layout.addWidget(self.employee_id_line_edit)
        layout.addWidget(self.query_button)

        self.setLayout(layout)


class SetPolicyDialog(QDialog):
    def __init__(self, parent=None):
        super().__init__(parent)

        self.setWindowTitle('公司策略设定')
        self.resize(300, 150)

        self.start_time_label = QLabel('上班时间:', self)
        self.start_time_line_edit = QLineEdit(self)

        self.end_time_label = QLabel('下班时间:', self)
        self.end_time_line_edit = QLineEdit(self)

        self.set_policy_button = QPushButton('设定', self)
        self.set_policy_button.clicked.connect(self.accept)

        layout = QVBoxLayout()
        layout.addWidget(self.start_time_label)
        layout.addWidget(self.start_time_line_edit)
        layout.addWidget(self.end_time_label)
        layout.addWidget(self.end_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('设定查询范围')
        self.resize(300, 150)

        self.start_date_label = QLabel('起始日期:', self)
        self.start_date_line_edit = QLineEdit(self)

        self.end_date_label = QLabel('结束日期:', self)
        self.end_date_line_edit = QLineEdit(self)

        self.set_date_range_button = QPushButton('设定', self)
        self.set_date_range_button.clicked.connect(self.accept)

        layout = QVBoxLayout()
        layout.addWidget(self.start_date_label)
        layout.addWidget(self.start_date_line_edit)
        layout.addWidget(self.end_date_label)
        layout.addWidget(self.end_date_line_edit)
        layout.addWidget(self.set_date_range_button)

        self.setLayout(layout)


if __name__ == '__main__':
    app = QApplication([])
    main_window = AttendanceManagementWindow()
    main_window.show()
app.exec_()

 

本文章已经生成可运行项目
企业考勤管理系统是一种计算机软件或硬件设备,用于记录、管理、统计和分析员工的上下班情况。随着企业规模的扩大和管理的复杂化,传统的手工考勤方式已经无法满足现代企业的需求。因此,基于计算机技术和通信技术的考勤管理系统应运而生,旨在提高企业管理效率和公正性。 企业考勤管理系统的主要功能包括记录员工的出勤情况、生成考勤报表、统计缺勤和加班时间、支持各种打卡方式、与薪资系统集成等。该系统可以通过考勤打卡机、刷卡机、人脸识别仪等设备采集员工的出勤信息,并通过对数据的处理和分析,为企业管理提供数据支持。 企业考勤管理系统的用途主要体现在以下几个方面: 提高管理效率:通过自动化记录和统计员工的出勤情况,减少了手工考勤的时间和人力成本,提高了管理效率。 保证公正性:考勤管理系统可以客观地记录员工的出勤情况,避免了手工记录容易出现的主观误差,保证了考勤的公正性。 方便查询和统计:系统可以快速查询和统计员工的出勤情况,方便企业管理者了解员工的出勤情况,为人力资源管理和决策提供数据支持。 与薪资系统集成:考勤管理系统可以与薪资系统集成,根据员工的出勤情况自动计算工资,减少了手工计算的错误和繁琐性。 总之,企业考勤管理系统是现代企业管理中不可或缺的一部分,可以帮助企业提高管理效率和公正性,方便查询和统计员工出勤情况,与薪资系统集成,使企业管理更加科学化和规范化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

哭哭啼啼的小天

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

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

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

打赏作者

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

抵扣说明:

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

余额充值