刷卡信息上传到服务端,记录统计信息分析设计与实现。
1.简单需求分析以及概要设计
模拟刷卡信息实现客户端刷卡并上传到服务端,服务端记录和统计显示信息。
一:用户资料信息
- 用户基本信息表:客户ID、卡号、姓名、性别、职称、身份证号、刷卡时间、所属学校等信息
- 刷卡记录表: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