搭建asp会议签到系统

第一章 账密登录
第二章 生成会议签到二维码
第三章 会议签到
第四章 会议统计


第三章 会议签到

  • 搭建asp会议签到系统
  • 前言
  • 一、制作checkin前端页面
  • 二、读取并展示历史会议签到信息
    • 二.1 获取历史会议签到信息
    • 二.2 校验时间以控制会议签到
  • 三、签到信息存储
  • 四 效果图

前言

前文已说如何登录以及如何生成会议二维码,本篇将继续说明如何进行签到。
原理很简单:手机(微信、支付宝等)通过扫一扫,识别并进入会议签到url。


提示:以下是本篇文章正文内容,下面案例可供参考

一、制作checkin前端页面

员工通过扫一扫进入到此页面,获取会议相关信息(如会议开始时间、会议主题等),以便让员工再次确认。

<asp:TextBox ID="REASON" runat="server" class="form-control"></asp:TextBox><script>//JS前端实现palacehold,注意:MainContent的用法,这里不多作介绍。jQuery(document).ready(function () {$("#MainContent_REASON").attr('placeholder', '如缺席,请不要写类似:有事/请假等含糊理由。');});</script>

布置3个按钮:签到、请假、出差
(因实际情况,我本来设计是2个,签到和缺席,但后来公司管理需要把缺席拆为请假、出差)

 <asp:Button ID="CIN"  type="button" class="btn btn-success"  runat="server" Text="签到" OnClick="Button1_Click"/><asp:Button ID="CLEA"  type="button" class="btn btn-warning"  runat="server" Text="请假" OnClick="Button1_Click"/><asp:Button ID="COUT" type="button" class="btn btn-info"  runat="server" Text="出差" OnClick="Button1_Click"/>

虽然有3个按钮,但点击事件是同一个,以ID区分

        protected void Button1_Click(object sender, EventArgs e){var flag = ((Button)sender).ID;CHECKID.Text = flag;Checkin();}

二、读取并展示历史会议签到信息

获取会议二维码的参数ID并同时展示该会议的历史签到信息。

//页面加载首先执行几个事件,下面具体方法会讲到protected void Page_Load(object sender, EventArgs e){meetid.Text = Request.QueryString["meetid"];GetQRMeet();//获取历史会议签到信息TimeCheck();//校验时间以控制会议签到}

二.1 获取历史会议签到信息

private void GetQRMeet(){//获取当前页面的会议IDvar meeid = meetid.Text;//获取当前页面的登录IDvar USERID = Context.User.Identity.Name;string DC6;DC6 = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["DC6"].ToString();using (SqlConnection conn = new SqlConnection(DC6)){conn.Open();//这里隐去了几个获取项,按需从数据库取出即可SqlCommand L4 = new SqlCommand("SELECT StartTime FROM VW_HYXX where MeeID = '" + meeid + "'", conn);//meetcheck 这个表用于存放会议签到信息,下面会详细讲到SqlCommand L5 = new SqlCommand("SELECT CASE WHEN STU='1' THEN '正常签到' WHEN STU='2' THEN '迟到' WHEN STU='3' THEN '请假' WHEN STU='5' THEN '出差' ELSE '暂无您的签到信息' END checkinfo,CHECKDT,REASON  FROM meetcheck  WHERE MEETID = '" + meeid + "' AND USERID= '" + USERID + "' ", conn);object obj4 = L4.ExecuteScalar();SqlDataReader sread = L5.ExecuteReader();if (obj4 != null){meetime.Text = obj4.ToString();cksta.Text = "暂无您的签到信息";cktime.Text = "";if (sread.Read())//如果该会议ID和员工ID已存在会议签到信息了,则代表员工已处理过签到,就把历史签到信息拉出来并存入相应前端控件{REASON.Text= sread["REASON"].ToString();cksta.Text = sread["checkinfo"].ToString();cktime.Text = sread["CHECKDT"].ToString();}}conn.Close();}}

二.2 校验时间以控制会议签到

   protected void TimeCheck(){var MEETBDT = meetime.Text;var MEETTOP = meetsub.Text;var CHECKDT = DateTime.Now.ToString();DateTime startTime = Convert.ToDateTime(MEETBDT);DateTime endTime = Convert.ToDateTime(CHECKDT);TimeSpan ts = endTime - startTime;if ((ts.TotalMinutes >= 5 & ts.TotalMinutes <= 30) || ts.TotalHours <= -0.5){//如果当前签到时间 超出会议开始时间5分钟或早于会议开始时间半小时,签到按钮关闭,只允许请假和出差,以防提前签到和无限补签CIN.Visible = false;return;}if (ts.TotalMinutes > 30){//如果当前签到时间 超出会议开始时间30分钟所有按钮关闭CHECKINFO.Visible = true;CHECKINFO.Text = "签到已结束,请联系会议组织者!";CLEA.Visible = false;COUT.Visible = false;CIN.Visible = false;}}

三、签到信息存储

首先要去建一张表meetcheck ,

CREATE TABLE [dbo].[meetcheck]([MEETID] [nvarchar](20) NOT NULL,//会议ID[ROOMID] [nvarchar](20) NULL,//参会的会议室ID[USERID] [nvarchar](20) NOT NULL,//员工ID[MEETBDT] [datetime] NULL,//会议开始时间[CHECKDT] [datetime] NULL,//签到时间[DELFLAG] [int] NULL,//有效标志[IP] [nvarchar](20) NULL,//手机端或PC端的IP,如果能再记录GPS就更好了[HOSTNAME] [nvarchar](20) NULL,//主机名[STU] [int] NULL,//签到状态,1代表正常签到,2迟到,3请假,5出差(为什么没有4……)[REASON] [nvarchar](50) NULL,//理由CONSTRAINT [PK_meetcheck] PRIMARY KEY CLUSTERED
([MEETID] ASC,[USERID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

有了存储表后,下面就无非就是insert和update了

   protected void Checkin(){var ctext = CHECKID.Text;var MEETBDT = meetime.Text;var MEETTOP = meetsub.Text;var reason = REASON.Text;var CHECKDT = DateTime.Now.ToString();DateTime startTime = Convert.ToDateTime(MEETBDT);DateTime endTime = Convert.ToDateTime(CHECKDT);TimeSpan ts = endTime - startTime;var stu = '1';if (ctext== "CIN" & ts.TotalMinutes >= 1){stu = '2';//签到时间晚于开始时间1分钟后,就算按了签到,也算迟到}if (ctext == "CLEA"){stu = '3';}if (ctext == "COUT"){stu = '5';}if((stu == '3' || stu == '5') & reason == ""){//请假和出差的理由必填Response.Write("<script>alert('请填写出差或请假事由!')</script>");return;}else{var meeid = meetid.Text;var ROOMID = ROOMIndex.Text;var USERID = Context.User.Identity.Name;//获取移动端和PC端的IPvar CIP = Page.Request.UserHostAddress;//获取移动端和PC端的主机名var CNAME = Page.Request.UserHostName;string DC6;DC6 = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["DC6"].ToString();using (SqlConnection conn = new SqlConnection(DC6)){conn.Open();SqlCommand L2 = new SqlCommand("select CHECKDT from meetcheck where meetid = '" + meeid + "' AND USERID= '" + USERID + "' ", conn);object obj2 = L2.ExecuteScalar();if (obj2 != null){//如果签到信息里有相关信息,则做更新//有时候会出现先请假然后取消再出席的情况SqlCommand U2 = new SqlCommand("UPDATE meetcheck SET CHECKDT='" + CHECKDT + "' ,ROOMID='" + ROOMID + "',STU='" + stu + "',IP='" + CIP + "',HOSTNAME='" + CNAME + "',REASON='" + reason + "'  where meetid = '" + meeid + "' AND USERID= '" + USERID + "' ", conn);object obj3 = U2.ExecuteScalar();Response.Write("<script>alert('成功更新签到信息!')</script>");}else{//如果签到信息里没有相关信息,则做插入SqlCommand I2 = new SqlCommand("INSERT INTO meetcheck (MEETID,ROOMID,USERID,MEETBDT,CHECKDT,DELFLAG,IP,HOSTNAME,STU,REASON)  VALUES ('" + meeid + "' ,'" + ROOMID + "','" + USERID + "','" + MEETBDT + "' ,'" + CHECKDT + "' ,'0' ,'" + CIP + "' ,'" + CNAME + "' ,'" + stu + "' ,'" + reason + "') ", conn);object obj3 = I2.ExecuteScalar();Response.Write("<script>alert('成功记录会议签到信息!')</script>");//刷新当前页面Response.Redirect(Request.Url.ToString());}conn.Close();}}}

四 效果图

搭建asp会议签到系统 第三章 会议签到相关推荐

  1. 搭建asp会议签到系统 第四章 会议统计

    搭建asp会议签到系统 第一章 账密登录 第二章 生成会议签到二维码 第三章 会议签到 第四章 会议统计 第四章 会议统计 搭建asp会议签到系统 前言 一.前端list view展示 二.后端帆软报 ...

  2. 搭建asp会议签到系统:第一章 账密登录

    搭建asp会议签到系统 第一章 账密登录 第二章 生成会议签到二维码 第三章 会议签到 第四章 会议统计 第一章 账密登录 搭建asp会议签到系统 前言 一.设置跳板 二.创建login.aspx页面 ...

  3. 优惠券系统-第三章-活动中心

    优惠券系统-第三章介绍 本文主要设计一个基于送券,送积分等的活动中心. 活动中心设计 活动中心主要是有各种活动,比如双十一活动,可能参加一个活动会送多个优惠券,某一个活动送大礼包还可能包含了积分(类似 ...

  4. php 会议签到系统_人脸识别会议签到系统有哪些优点?

    随着人工智能的不断发展,人识别在各大场所的应用也是熠熠生辉,它打破了传统签到模式带来的弊端,尤其在会议签到领域,提升有效提升了工作效率,带给参会者以及用户更好的体验. 人脸识别签到系统是怎么工作的? ...

  5. 在Java中构建响应式微服务系统——第三章 构建响应式微服务

    第三章 构建响应式微服务 在本章中,我们将使用Vert.x构建我们的第一个微服务.由于大多数微服务系统使用HTTP进行交互,因此我们将以HTTP微服务作为开始.但是由于系统包含多个相互通讯的微服务,因 ...

  6. 计算机毕业设计-基于微信小程序高校学生课堂扫码考勤签到系统-校园考勤打卡签到小程序

    注意:该项目只展示部分功能,如需了解,评论区咨询即可. 本文目录 1.开发环境 2.系统的设计背景 3 各角色功能模块 3.1 用户 3.2 管理员 4 系统页面展示 4.1 学生端功能模块展示 4. ...

  7. python 微信小程序签到系统_微信小程序签到功能

    本文实例为大家分享了简易微信小程序签到功能的具体代码,供大家参考,具体内容如下 一.效果图 点击签到后 二.数据库 用一张数据表存用户签到的信息,每次用户签到都会往表中添加一条记录了用户id和签到日期 ...

  8. 信号与系统第三章复习

    3.1 信号正交分解的原理 变换域分析 信号f(t)用完备的正交函数集来展开,其展开系数就是信号的变换表示.不同的变换域的区别就在于选取不同的正交完备集. 一.正交信号空间 3.2 傅里叶级数--周期 ...

  9. ASP.NET Web程序设计 第三章 高级控件

    一.母版页与内容页(重点) 1.母版页(主控页)是以".master"为后缀名的特殊页面,用于实现页面统一布局. 2.母版页与普通页面的区别: 1)母版页不能直接访问,而普通页可以 ...

最新文章

  1. 我又发现了7个让人心动的宝藏软件,很少有人知道
  2. php消费rabbitmq消息QoS,简介Rabbitmq的几种消费模式
  3. 大道至简第7,8章读后感
  4. 纽约州立大学石溪分校将理论物理研究所命名为“杨振宁理论物理研究所”
  5. 基于 XGBoost 对 Santander 银行用户购买行为进行预测
  6. PNG和PVR之间互相转换的脚本
  7. uniapp使用网易易盾
  8. 分布式网络爬虫功能模块组成
  9. 遥感学习笔记:遥感数据源免费数据获取途径
  10. 计算机表格快捷键,EXCEL表格所有的快捷键《excel一键到底 快捷键》
  11. 戴尔dell poweredge r730服务器系统安装以及raid配置详解教程
  12. 林彪-怎样当好一名师长
  13. 山石岩读丨一文读懂区块链安全:区块链会带来哪些冲击?
  14. 资料分享:送你一本《C#区块链编程》电子书!
  15. 嵌入式linux下sqlite应用
  16. 开源的价值观与文化的传递
  17. win10 系统更新后,插入移动硬盘忽然不认盘了
  18. 蒂森调试软件Tcm manager ,mc1-mc2系统,电脑端,可以调试蒂森电梯程序
  19. 客服新人有哪些建议(职场老油条的几个实用性技巧)
  20. 神经网络可以解决一切问题吗:一场知乎辩论的整理

热门文章

  1. 怎样进行电路的抗干扰设计
  2. 写java时候,可能会经常遇到异常,如果对异常有个清晰的认识,异常并不可怕
  3. 用ado把excel数据写入oracle,如何将excel表格数据导入到oracle数据库对应的表中?!oracle导出excel文件...
  4. iOS如何让APP删除后不接受APNS推送消息
  5. 计算机硬件故障注入,容错箭载计算机的硬件故障注入方法研究.pdf
  6. VideoSolo Blu ray Player for Mac(mac蓝光播放器)
  7. 引入第三方sdk错误提示
  8. 字符串,列表,元组,及综合训练
  9. 第28集丨马斯洛的“需求层次论”在讲什么?
  10. 喜茶入股7家茶饮,从“打工仔”做起了“金主爸爸”?