asp.net_sql2008公司人事管理系统

news2025/1/11 14:16:29

登录模块

  1. 流程图:
    在这里插入图片描述

◆ 职工输入用户名、密码并选择登录身份,根据选择的身份做不同的操作
◎ 若选择的是“职工”,系统将查询数据库中的用户表Users的记录,用户名密码核对正确后加载职工主界面;
◎ 若选择的是“管理员”,系统将查询数据库中的管理员表Adms的记录,用户名密码核对正确后加载管理员主界面;
◎ 若选择的是“超级管理员”,系统将查询数据库中的用户表SuperAdms的记录,用户名密码核对正确后加载超级管理员主界面;
◎ 三种身份,若用户名、密码核对不正确,弹出提示消息框:“用户名或密码错误!”。

  1. 界面设计及代码如下:
    在这里插入图片描述

◎ 用到的控件字段名、方法及变量有:
※ 控件:
用户名文本框名称:Login_UserNametxt
密码文本框名称:Login_UserPWtxt
身份下拉列表名称:Login_Rolecom
登录标签名称:Login_Enterlab
退出标签名称:Login_Esclab
※ 变量:
UserChange uc = new UserChange(); //处理登录业务类的实例
※ 调用方法:
uc.GetUser(user); //核对一般职工的用户名、密码;
uc.GetAdm(adm); //核对管理员的用户名、密码;
uc.GetSupAdm(supadm); //核对超级管理员的用户名、密码。

◎ “登录”标签的单击事件:

private void Login_Enterlab_Click(object sender, EventArgs e)
        {
            usertype = Login_Rolecom.Text;
            try
            {
                if (usertype == "职工")
                {
                    User user = new User();
                    user.StaffID = Login_UserNametxt.Text.Trim();
                    user.UserPW = Login_UserPWtxt.Text.Trim();
                    count = uc.GetUser(user);
                }
                else if (usertype == "管理员")
                {
                    Adm adm = new Adm();
                    adm.AdmName = Login_UserNametxt.Text.Trim();
                    adm.AdmPW = Login_UserPWtxt.Text.Trim();
                    count = uc.GetAdm(adm);
                }
                else if (usertype == "超级管理员")
                {
                    SuperAdm supadm = new SuperAdm();
                    supadm.SuperAdmName = Login_UserNametxt.Text.Trim();
                    supadm.SuperAdmPW = Login_UserPWtxt.Text.Trim();
                    count = uc.GetSupAdm(supadm);
                }
                if (count > 0)
                {
                    this.DialogResult = DialogResult.OK;
                    username = Login_UserNametxt.Text;
                    this.Close();
                }
                else
                {
                    MessageBox.Show("用户或密码错误!");
                }
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message);
            }
        }

◎ “退出”标签的单击事件:

private void Login_Esclab_Click(object sender, EventArgs e)
        {
            this.Close();
        }

4.2 职工考勤模块

  1. 流程图:
    在这里插入图片描述

◆ 成功登录系统后
◎ 所有的职工都可以进行上下班打卡操作,每个职工每天只允许打一次上班卡和一次下班卡;上班打卡时间为每天的am 6:00 – 12:00,12点整截止,下班打卡时间为每天的pm12:00-22:00,22点整截止。
◎ “超级管理员”登录,系统会在每天中午12点和每天晚上22点查询数据库中的职工表Staffs的记录,对未打卡的员工分别在上下班打卡记录表中标记为未打卡;必须保证每天这两个时间段超级管理员处于登录状态才能完成上下班考勤记录。
2. 打卡界面设计及代码如下:
在这里插入图片描述

◎ 用到的控件字段名、方法及变量有:
※ 控件:
上班打卡按钮名称:Login_UserNametxt
下班打卡按钮名称:Login_UserPWtxt
※ 变量:
staffed //登录员工的职工ID
DateTime time;//记录当前时间
ClickCardOpt Copt = new ClickCardOpt();//处理打卡业务类的实例
※ 调用方法:
Copt.AddClockRecord(“StartClockRecords”, srecord) ; //添加上班打卡记录
Copt.AddClockRecord(“EndClockRecords”, erecord) ; //添加下班打卡记录
GetWorkingTime(“上班”); //获取上班时间表WorkingTimes的上班时间
GetWorkingTime(“下班”); //获取上班时间表WorkingTimes的下班时间
◎ “上班打卡”按钮的单击事件:

private void Clock_SDKbtn_Click(object sender, EventArgs e)
        {
            int hour = Convert.ToInt32(time.Hour);
            if (hour < 6 || hour >= 12) //6-12点打上班卡时间
            {
                MessageBox.Show("抱歉,现在不是打卡时间!");
            }
            else
            {
                string workingtime = GetWorkingTime("上班");
                string[] worktimes = workingtime.Split(':');
                int workhour = Convert.ToInt32(worktimes[0]);
                int workminute = Convert.ToInt32(worktimes[1]);
                StartClockRecord srecord = new StartClockRecord();
                srecord.SClockTime = time;
                if (time.Hour > workhour || time.Hour == workhour && time.Minute > workminute)
                {
                    srecord.SClockstatusID = 2;
                }
                else
                {
                    srecord.SClockstatusID = 1;
                }
                    srecord.StaffID = staffid;
                }
                if (Copt.AddClockRecord("StartClockRecords", srecord))
                {
                    MessageBox.Show(staffid + "打卡成功!");
                }
                else
                {
                    MessageBox.Show(staffid +"你已经打过上班卡了!");
                }
            }
        }

◎ “下班打卡”按钮的单击事件:

private void Clock_EDKBtn_Click(object sender, EventArgs e)
        {
            int hour = Convert.ToInt32(time.Hour);
            if (hour <= 11 || hour >= 22) //12-22点打下班卡时间
            {
                MessageBox.Show("抱歉,现在不是打卡时间!");
            }
            else
            {
                string workingtime = GetWorkingTime("下班");
                string[] worktimes = workingtime.Split(':');
                int workhour = Convert.ToInt32(worktimes[0]);
                int workminute = Convert.ToInt32(worktimes[1]);
                EndClockRecord erecord = new EndClockRecord();
                erecord.EClockTime = time;
                if (time.Hour < workhour || time.Hour == workhour && time.Minute < workminute)
                {
                    erecord.EClockstatusID = 3;
                }
                else
                {
                    erecord.EClockstatusID = 1;
                }
                erecord.StaffID = staffid;              
                if (Copt.AddClockRecord("EndClockRecords", erecord))
                {
                    MessageBox.Show(staffid + "打卡成功!");
                }
                else
                {
                    MessageBox.Show(staffid + "你已经打过下班卡了!");
                }
            }
        }
  1. 超级管理员登录后主窗体处理未打卡职工的后台代码:
    ◎ 用到的控件字段名、方法及变量有:
    ※ 控件:
    计时器名称:Index_timer
    ※ 变量:
    DateTime time;//记录当前时间
    ClickCardOpt Copt = new ClickCardOpt();//处理打卡业务类的实例
    ※ 调用方法:
    Copt.PerfectSClockRecords(); //插入未打卡职工的上班打卡标记
    Copt.PerfectEClockRecords(); //插入未打卡职工的下班打卡记录
    ◎ 主窗体的Load事件
private void index_Load(object sender, EventArgs e)
{
if (usertype == "超级管理员")
    {
       this.Index_timer.Interval = 60000;
this.Index_timer.Tick += new System.EventHandler(this.Index_timer_Tick);
        }
}
◎	计时器的Tick事件
private void Index_timer_Tick(object sender, EventArgs e)
        {
            time = DateTime.Now;
            //每天中午12点整完成上班打卡记录表的录入
            if (time.Hour == 12 && time.Minute == 0)
            {
                Copt.PerfectSClockRecords();
            }
            //每天晚上22点整完成下班打卡记录表的录入
            if (time.Hour == 22 && time.Minute == 0)
            {
                Copt.PerfectEClockRecords();
            }
        }

链接:https://pan.baidu.com/s/1Xwd0U_KktL0hRFPaggIOGQ?pwd=6688
提取码:6688

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1282143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Find My扩展坞|苹果Find My技术与扩展坞结合,智能防丢,全球定位

扩展坞又称端口复制器&#xff0c;是专为笔记本电脑设计的一种外置设备。通过复制甚至扩展笔记型计算机的端口&#xff0c;可使笔记本电脑与多个配件或外置设备&#xff08;如电源适配器、网线、鼠标、外置键盘、打印机及外置显示器&#xff09;方便的一站式连接。随着全球经济…

Perplexity发布两款LLM模型:pplx-7b-online和pplx-70b-online 可利用实时互联网数据查询

Perplexity AI&#xff0c;一家创新的人工智能初创公司&#xff0c;近日推出了一项能够改变信息检索系统的解决方案。该公司推出了两款新的大语言模型&#xff08;LLMs&#xff09;&#xff0c;分别是pplx-7b-online和pplx-70b-online&#xff0c;标志着首次通过API公开访问在线…

C# OpenVINO 模型信息查看工具

目录 效果 支持模型 项目 代码 下载 C# OpenVINO 模型信息查看工具 效果 支持模型 ONNX format (*.onnx) PDPD (*.pdmodel) TF (*.pb) TFLite (*.tflite) 项目 代码 using Sdcb.OpenVINO; using System; using System.Collections.Generic; using System.Text; using…

docker部署typecho博客

文章目录 1.安装git2.安装compose3.拉取仓库4.创建目录5.配置文件修改6.启动容器7.修改MYSQL数据库8.安装成功9.参考GitHub文档 1.安装git 安装git yum -y install git2.安装compose &#xff08;docker安装参考&#xff1a;docker基本知识&#xff09; 确保已经安装了 Doc…

数组中第k个最大元素(优先队列)

class Solution { public:int findKthLargest(vector<int>& s, int k) {priority_queue<int> pq;for(int i 0; i < s.size(); i){pq.push(s[i]);}for(int i 1; i < k; i){pq.pop();}return pq.top();} }; priority_queue<int> pq为优先队列 s.s…

傅里叶变换及其在机器学习中的应用

​​​​​​​一、介绍 傅立叶变换是一种数学技术&#xff0c;在各个科学和工程领域发挥着关键作用&#xff0c;其应用范围从信号处理到量子力学。近年来&#xff0c;它在机器学习领域发现了新的意义。本文探讨了傅里叶变换的基础知识及其在机器学习应用中日益增长的重要性。 …

万界星空科技注塑mes

塑料制品产业虽然有一定的规模和基础&#xff0c;但存在自主创新能力低、“散小乱”、品牌效应不明显、行业创新能力与庞大的产业不匹配或支撑不足等问题&#xff0c;塑料加工行业还处在质量型产业的初期&#xff0c;抗风险能力低。注塑行业6大痛点&#xff1a; 1.生产效率低 注…

堆排序(C语言)

前言 在上一篇内容&#xff1a;大小堆的实现&#xff08;C语言&#xff09;&#xff0c;我们实现了关于创建大小堆的各函数与实现。但是如果突然要使用一个堆排序但是此时并没有一个现成的堆&#xff0c;这就需要花费时间去新建实现堆的插入删除这些操作从而实现一个堆&#xf…

如何有效进行主数据治理

在企业信息化建设不断推进、逐渐进行数字化转型的今天&#xff0c;几乎所有的企业都卷入到数据及其处理&#xff08;数据收集、存储、检索、传输、分析和表示&#xff09;的浪潮中&#xff0c;数据已成为重要生产要素和无形资产&#xff0c;针对主数据的全生命周期管理迫在眉睫…

老司机带你一课学透,核心分布式事务框架之Alibaba Seata框架经验总结

在现代分布式系统中&#xff0c;保证数据的一致性和可靠性是一项重要的挑战。Alibaba Seata是一款开源的分布式事务解决方案&#xff0c;它提供了强大的支持&#xff0c;帮助开发者处理分布式事务。本文将向您介绍Alibaba Seata框架&#xff0c;并分享一些使用该框架的经验总结…

Java零基础——SpringSecurity篇

1.认证授权的基础概念 1.1 什么是认证&#xff08;登录&#xff09; 进入移动互联网时代&#xff0c;大家每天都在刷手机&#xff0c;常用的软件有微信、支付宝、头条等&#xff0c;下边拿微信来举例子说明认证相关的基本概念&#xff0c;在初次使用微信前需要注册成为微信用户…

31名!美创科技再次入选《中国网络安全企业100强》

12月1日&#xff0c;安全牛联合中国计算机学会抗恶劣环境计算机专业委员会、信息产业信息安全测评中心正式发布第十一版《中国网络安全企业100强》&#xff08;以下简称“100强”&#xff09;。 美创科技再次入选“中国网络安全企业100强”&#xff0c;位列31名&#xff08;数据…

07、基于LunarLander登陆器的强化学习案例(含PYTHON工程)

07、基于LunarLander登陆器的强化学习&#xff08;含PYTHON工程&#xff09; 开始学习机器学习啦&#xff0c;已经把吴恩达的课全部刷完了&#xff0c;现在开始熟悉一下复现代码。全部工程可从最上方链接下载。 基于TENSORFLOW2.10 0、实践背景 gym的LunarLander是一个用于…

无需服务器,无需魔法,拥有一个微信机器人就是这么简单

前情提要 还没看过的朋友可以看一下上一篇文章《拥有一个微信机器人总共需要几步&#xff1f;》在这篇文章里&#xff0c;我们提到&#xff0c;创建微信机器人需要一个大前提--你得有一台服务器。现在&#xff0c;不再需要了&#xff01;没错&#xff0c;上一篇提到的Serverles…

Python爬虫:使用Scrapy框架进行高效爬取

Python爬虫可使用的架构有很多&#xff0c;对于我而言&#xff0c;经常使用Scrapy异步处理框架Twisted&#xff0c;其实意思很明确&#xff0c;Scrapy可以实现多并发处理任务&#xff0c;同一时间将可以处理多个请求并且大大提高工作效率。 Scrapy是一个强大且高效的Python爬虫…

文章阅读——Scaffolding protein functional sites using deep learning

1.最终幻想: 无中生有的蛋白质从头设计 零.导读 近几年&#xff0c;蛋白质结构预测领域连续取得重大突破。首先是【AlphaFold】&#xff0c;在可以充分利用共进化信息结合深度神经网络生成空间约束条件并降低相空间的搜索&#xff0c;极大地帮助了蛋白质的结构建模&#xff0…

扁平按钮样式

上图 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>扁平按钮</title><style>body {margin: 0;padding: 0;height: 100vh;display: flex;justify-content: center;ali…

改造python3中的http.server为简单的文件上传下载服务

改造 修改python3中的http.server.SimpleHTTPRequestHandler&#xff0c;实现简单的文件上传下载服务 simple_http_file_server.py&#xff1a; # !/usr/bin/env python3import datetime import email import html import http.server import io import mimetypes import os …

OpenCV-python:图像像素类型转换与归一化

目录 1.图像像素类型转换 2. 图像像素转换适用情形 3.图像归一化 4.归一化方法支持 5.归一化函数 6.知识笔记 1.图像像素类型转换 图像像素类型转换是指将图像的像素值从一种类型转换为另一种类型。常见的像素类型包括无符号整数类型&#xff08;如8位无符号整数、16位无符…

树_左叶子之和

//给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 // // // // 示例 1&#xff1a; // // // // //输入: root [3,9,20,null,null,15,7] //输出: 24 //解释: 在这个二叉树中&#xff0c;有两个左叶子&#xff0c;分别是 9 和 15&#xff0c;所以返回 24 //…