张东利

我感觉现在大多数人在项目开发之中陷入到数据表与页面显示之间的陷阱之中了,完全抛弃了面向对象的程序设计开发,首先是模块之间,功能之间的封装太松散 并不独立,一处修改处处修改,其次是解决问题的思路就是怎么拿数据怎么存数据,而不是数据怎么转化成我们熟悉的对象,我们怎么利用对象来完成我们要解决的实际问题,以至于我们的开发很累,维护更累。

  • 技术能力:
  • 工作态度:
  • 工作成果:
收藏 立即预约
项目意向
软件工程师 710元 全程集中 北京 工作经验: 擅长技能: C#、HTML
平台工作经历
其他工作经历
公司名称 南方创业科技有限公司
在职时间 2010-03-01 ~ 2011-02-01
职位名称 asp.net程序员
薪水 0/月
项目描述 软件/互联网开发/系统集成
个人职责 洞庭湖水质监察管理平台 ● 开发平台: .NET Framework 2.0 ,SQL Server2005 ● 系统平台: Win2000, IIS6.0 ● 系统架构: B/S结构;3层开发模式 ● 使用技术: C#, Asp.Net, ADO.Net, Html, JavaScript, Output Cache, Ajax , T-SQL, Stored Procedure, XML。 项目概述: 1、本系统采用B/S模式,主要模块有领导决策平台,数据分析发布平台,数据交换平台,工作协同平台,系统管理等。 2、项目架构 本项目架构分为三层: 1、表示层: 由应用程序的所有页面组成。是用C#.NET和ASP.NET作为主要的开发语言来开发的,同时使用了Html,JavaScript,XML 和Ajax。使用了页面缓存技术,数据缓存技术。 2、业务逻辑层: 在这一层,我们定义和封装了主要的业务逻辑规则,使用C# 语言实现。将业务规则集中处理,便于业务扩展和修改,也便于合作开发。 3.数据访问层: 包括数据库本身、存储过程和负责实现业务实体层与数据库之间通讯的接口模块。数据库使用MS-SQL2005,数据库通讯接口模块主要用ADO.NET开发,实现业务实体层和数据库之间的通讯。其中既使用了ADO.NET的非连接工作模式,也使用了ADO.NET的连接工作模式。 4. 权限框架搭建主要由用户表、角色表、权限表、功能表。用户登录网站后,根据在用户表中提供的角色ID获取它所拥有的权限,把经过授权的功能动态绑定到 TreeView 上供此用户使用。功能表中设置的 url 字段可使用户点击功能节点时导航到目标页面,此绑定操作在row绑定中完成(使用 Repeater 或 DateList 时,可以在 item绑定中实现)。拥有角色管理的超级用户可以导航到角色设置页面对所有用户添加删除权限。 5. 对数据库的开销较大的查询使用了 Cache 或者 XML 来缓存。数据库分页时,UI 层的分页控件(第三方控件)设置的记录条数就是用 Cache 缓存的。本人将 Cache 和 XML 缓存功能直接做成了两个属性,方便使用。导出模块类,从磁盘、网络等媒介获取数据源,通过统一接口转换成流 ,输出到 Response,再利用 Response.ContentType 来设置MIME类型,可导出类型限制为 xml、doc、pdf。用户角色管理部分使用窗体验证,生成的会话 ID 存入 Cookie 作为下次请求的票证,注销使用 Cookie 过期。通过单独的统一验证接口,实现单点登录。利用 AJAX 和 Web 服务验证用户是否存在、翻页等。 项目职责: 我在此项目中主要负责项目框架的设计与搭建、数据访问,以及用户管理模块。 项目解决方案: 用户,角色,权限管理我是这样实现的,我在数据库中建立了如上所述的四张表,用户表,角色表,权限表,和功能表,它们之间关系是,用户拥有一个角色,角色拥有多个功能,而权限表则表现了角色与功能的对应关系。 这样在每个用户登录时我们就可以根据他的角色来判断出他所拥有的功能,从而知道了他可以去到的页面了!我们在管理员页面也可以动态的给角色赋功能,也可以给用户赋不同的角色。从而实现以上的管理。 项目中遇到的难点: 权限框架搭建中,根据登录用户的权限在 TreeView 中动态绑定功能时,由于每个功能的层次不同,一个功能下可能还有子功能。为解决此问题,我在功能表中设置了 fatherId 字段。具体思路是: 从根节点开始,通过 fatherId 信息,UI层调用逻辑层的 GetDateByUserId() 获取此用户的功能(这些功能都是同一级的),遍历同层的所有功能添加到同一级的 TreeView,且遍历里使用递归,判断是否存在子节点层,子节点的 fatherId 值 必须等于它父节点的功能 ID 值,这种遍历采用了深度优先遍历的思想。 所属行业: 互联网/电子商务 软件研发部 .net程序员 一 融创管理系统 ●开发平台: .NET Framework 2.0 SQL Server2005, ●系统平台: Win2003, IIS6.0 ●系统架构: B/S结构;3层开发模式 ●使用技术: C#, Asp.Net, ADO.Net, Html, JavaScript, Output Cache, Ajax , T-SQL, Stored Procedure, XML。 项目介绍: 本系统采用B/S模式,主要功能模块分为: 用户管理,客服管理订单(新建订单,修改订单,提交订单),审批订单(部门经理,总监,总经理),渠道执行,财务支付等几个模块。 项目职责: 在此项目中我主要负责,用户管理模块,数据访问编写及登录界面的制作等工作。 项目中遇到的难点: 权限设计我给出的解决方案是: 1.在实现首先为了提高效率我没有采用微软提供的控件,而是用的HTML的标签来实现的 2.其次是用户的增删改查我借鉴了微软的Membership实现了用户与数据库的联系 3.再次我在HTML页面的登录按钮事件里我做了如下步骤: 3.1利用JQuery来取得输入框里的数据,并转化成Json对象 3.2把Json对象利用JQuery的$.Post方法调用我们项目里的一个验证用户的Web服务的方法 3.3在Web服务这个方法里我得到了Json对象也就的到了用户输入的数据 我在Web服务调用一个自己写的方法得到当前的Httpcontext运行环境 我把这些数据做成微软写的程序中的用户对象,并放入Context的User属性中其他非HTML的页面通过Page.User属性就可以拿到这个用户对象了,从而实现一次登录处处通过。 宠物店销售系统 ● 开发平台: .NET Framework 2.0 ● 系统架构: B/S结构;工厂模式 项目概述: 1. 本系统是一套关于宠物出售情况的系统。 2. 本系统主要由宠物类别表(Category)、产品表(Products)、顾客信息表(Customer)、积分等级对照表(SumLevel)、购买信息(BuyLog)。进货、购物均使用大量的存储过程提高查询效率。对于顾客信息表提供积分累加,一旦购买信息表中有新记录,就激活触发器,以使顾客的积分增加。 3. 图片管理模块: 将图片从一种格式转换成另一种,实现对宠物图片的添加、删除、重命名功能。 4.购物车模块: 记录用户的购物情况,让每一个进入网站的ID无需登录都有自己的购物车。 项目职责: 在此项目中我负责数据库表的建立,及所有数据库代码编写,编写数据访问层接口类,还有用户管理模块,购物车模块。 在这个项目中我的个人解决方案: ●用户管理模块: 我还是基于微软的Membership实现了用户的增删改查,这个项目效率不是主要问题所以我没有做纯HTML页面,而是基于微软的模板(.aspx)做的页面, 首先在用户第一次登录时,我通过Membership查看用户是否存在,如果存在我就通过用户名做成微软给的票据,然后加密成串,通过Cookie或Url发到客户端,等用户请求下一个页面时,我在Application的AuthenticateRequest事件里取得票据的加密串,解密成票据,我取得登录用户的名,然后我做一个程序中的用户IPrincipal放入当前请求的上下文中,这样就实现了用户的验证,不用每个页面都验证了。 ●用购物车模块: 购物车的实现我是这样做的,首先在Model里我定义了每条的购物明细的表示类,包含购物的名称,编号,购买数量,物品单价,购物小计(数量*单价)。 然后又在Model里我定义了一个购物车对象,它包含购物明细集合,以及对购物明细的增删改查的实现,还有给这个类提供了一些计算的属性,比如购物价格总计。 其次关于购物车的存取我是借用了微软的个性化数据来实现的,我把每次用户推出系统时购物车的信息序列化成二进制数据保存到了数据库当中,等下次用户登录时我再去数据库当中取得二进制的序列化串再还原成对象,这样就可以把每次用户的购物信息保存下来了, 最后解决匿名用户的购物车问题: 1.允许匿名用户登录并且有自己的购物车,在配置文件中通过标签anonymousIdentification来实现创建匿名用户标识,给每一个没有登录的用户我们系统自己给他创建一个匿名的用户标识。 关于匿名用户的购物车和登录用户的购物车合并的问题,我是在Global文件中写了Profile Module的MigrateAnonynous事件响应体,取得匿名用户的标识,从而取到匿名用户的个性化数据及购物车信息,在取得登录用户的购物车信息,然后把匿名用户的购物车信息加入到登录用户的购物车信息中去,保存一下添加完毕的登录用户的购物车,销毁匿名用户的购物车。
使用技能
教育经历
院校名称 河北政法管理干部学院
毕业时间
所学专业 物业管理
最高学历 大专