刷卡信息上传到服务端,记录统计信息分析设计与实现。

1.简单需求分析以及概要设计

模拟刷卡信息实现客户端刷卡并上传到服务端,服务端记录和统计显示信息。

一:用户资料信息

  1. 用户基本信息表:客户ID、卡号、姓名、性别、职称、身份证号、刷卡时间、所属学校等信息
  2. 刷卡记录表:ID、卡号、刷卡时间

二:刷卡信息

1.当用户通过卡在终端机上刷卡,产生刷卡记录并记录用户资料信息到数据库中,同时统计刷卡信息资料并统计刷卡的次数,根据刷卡时间段记录刷卡次数。

 2.根据卡号查找用户基本信息表 客户的卡号 姓名 以及刷卡系统时间

 当刷卡的时候就提取用户信息  插入一笔刷卡记录Post到服务端 ,数据信息显示到页面

2.数据库表结构设计

                         人员基本信息表
序号 CustermID Int primarykey(自增)
卡号 CardNO varchar(50)  
姓名 CustermName varchar(100)  
性别 Sex varchar(2) 1.代表男2.代表女
年级班级 ClassName varchar(100)  
身份证号 SIDCard varchar(100)  
所属学校 SchoolName varchar(1000)  
家庭地址 HomeAddress varchar(1000)  
职位 Professional varchar(100)  
       
       
       
       
                         刷卡记录表
序号 RecordID Int primarykey(自增) 
卡号 CardNO varchar(50) 外键约束
刷卡时间 SloteCardTime datetime  

 3.数据库脚本

USE [ICCard]
GO
/****** Object:  StoredProcedure [dbo].[UP_GetRecordByPage]    Script Date: 03/03/2014 13:49:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UP_GetRecordByPage]
@tblName   varchar(255),       -- 表名 多张表是请使用 tA a inner join tB b On a.AID = b.AID 
@PK nvarchar(128)='',    --主键,可以带表头 a.AID  
@fldName varchar(1000) = '*', -- 需要返回的列,默认*
@strOrder varchar(255)='',      -- 排序的字段名,必填。后面跟着排序方式,如UserName Desc ,多个排序字段用逗号分开,
@PageSize   int = 10,          -- 页大小,默认10
@PageIndex int = 1,           -- 开始页码,默认1
@strWhere varchar(1500) = '', -- 查询条件 (注意: 不要加 where)
@TotalCount int=0 output        --返回记录总数
--@bitOrderType bit = 0,                            --排序的类型 (0为升序,1为降序)
--@pkColumn varchar(50) = ''                   --主键名称

AS
DECLARE @strFilter nvarchar(4000)
declare @strSQL   varchar(5000)
declare @totalSql nvarchar(4000)--总记录数
declare @totalPage int--总的页数  

--if @strWhere !=''
--set @strWhere=' where '+@strWhere -- 查询条件

IF @strWhere IS NOT NULL AND @strWhere != ''  
  BEGIN  
   SET @strFilter = ' WHERE ' + @strWhere + ' '  
  END  
ELSE  
  BEGIN  
   SET @strFilter = ''  
  END 
   
if @strOrder = ''  
  set @strOrder = @PK + ' DESC '  
  
IF @PageIndex < 1  
  SET @PageIndex = 1  
  
if @PageIndex = 1 --第一页提高性能  
begin   
  set @strSQL = 'select top ' + str(@PageSize) +' '+@fldName+ '  from ' + @tblName + ' ' + @strFilter + ' ORDER BY  '+ @strOrder  
  print @strSQL  
end   

else  
  begin    
    DECLARE @START_ID varchar(50)   --页开始索引  
    DECLARE @END_ID varchar(50)     --页结束索引  
    
    SET @START_ID = convert(varchar(50),(@PageIndex - 1) * @PageSize + 1)  
    SET @END_ID = convert(varchar(50),@PageIndex * @PageSize)  
      --sql语句
    set @strSQL =  ' SELECT '+@fldName+   
                ' FROM '+  
                ' ('+  
                    ' SELECT ROW_NUMBER() OVER(ORDER BY '+@strOrder+') AS rownum, '+@fldName+   
                    ' FROM '+@tblName+' ' +@strFilter+  
                ' ) AS D'+  
                ' WHERE rownum BETWEEN '+@START_ID+' AND ' +@END_ID +' ORDER BY '+@strOrder  
  END  
  --执行SQL语句
EXEC (@strSQL)  

--总条数  
set @TotalCount=0;  
set @totalSql = N'SELECT  @TotalCount=Count(1) FROM ' + @tblName + @strFilter  
EXEC sp_executesql @totalSql,N'@TotalCount int out',@TotalCount out
GO
/****** Object:  Table [dbo].[ak_SloteCardTimes]    Script Date: 03/03/2014 13:49:40 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[ak_SloteCardTimes](
    [RecordID] [int] IDENTITY(1,1) NOT NULL,
    [CardNO] [varchar](50) NULL,
    [SloteCardTime] [datetime] NULL,
 CONSTRAINT [PK_ak_SloteCardTimes] PRIMARY KEY CLUSTERED 
(
    [RecordID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[ak_Custerms]    Script Date: 03/03/2014 13:49:40 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[ak_Custerms](
    [CustermID] [int] IDENTITY(1,1) NOT NULL,
    [CardNO] [varchar](50) NULL,
    [CustermName] [varchar](100) NULL,
    [Sex] [varchar](2) NULL,
    [ClassName] [varchar](100) NULL,
    [SIDCard] [varchar](100) NULL,
    [SchoolName] [varchar](500) NULL,
    [HomeAddress] [varchar](500) NULL,
    [Professional] [varchar](100) NULL,
 CONSTRAINT [PK_ak_Custerms] PRIMARY KEY CLUSTERED 
(
    [CustermID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
原文地址:https://www.cnblogs.com/Warmsunshine/p/3587419.html