基于PHP和Mysql的销售管理系统的设计与实现

2014-09-18 16:59孙号夕胡伟杨中宇
电脑知识与技术 2014年23期

孙号夕+胡伟+杨中宇

摘要:针对传统单机订单管理系统存在的功能简单、数据共享困难、使用不便等问题,提出采用B/S结构、PHP和Mysql技术,设计并实现了一个方便、实用,包含合同管理、客户管理、财务管理、产品管理、入库发货管理、退换货管理、生产执行跟踪管理、系统基础管理等功能的销售管理系统,以满足实际销售管理工作的需要。运行结果表明,系统完整实现了既定功能,并有效提高了数据共享的便捷性。

关键词: PHP; Mysql; Codeigniter; 销售系统; 权限控制

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)23-5393-06

销售活动在企业的经营过程中起着相当大的作用,随着网络技术和信息技术的不断发展,应用软件在销售管理中也得到越来越多的使用。传统的单机订单管理系统仅能进行单机操作,不支持联网操作,且功能不足,影响使用。这类系统在数据共享、功能实用性、用户体验及后期扩展等方面都存在着严重的局限性。因此,建立一个基于网络访问的“销售管理系统”对销售的各个流程及数据进行管理,提高工作效率,是非常必要的。

1 系统设计

1.1 系统设计思路

目前主流的网络应用程序的结构有两种,一种是C/S,一种是B/S。C/S结构即客户端/服务器结构,通过将任务分配到客户端和服务器端来实现软件的使用[1]。这种结构下的软件虽然服务器端负荷较轻,但开发成本和维护成本都很高,软件长期使用的代价较高。B/S结构即浏览器/服务器结构,是一种新兴的程序结构,目前已成为大多数软件系统的选择。该结构将系统核心功能集中到了服务器端,用户只需要通过浏览器就能进行访问、操作,简化了系统的开发、维护和使用。综合考虑销售管理系统的网络访问、数据共享、使用便捷和后期维护等因素,系统采用B/S结构进行开发。

PHP(Hypertext Preprocessor)是一种通用开源脚本语言,具备跨平台运行、敏捷开发、广泛数据库支持、使用免费等特点[2],主要应用在开发动态交互式的WEB系统。Mysql是一个主流的关系型数据库管理系统,它体积小、速度快、功能强大、免费开源,已被广泛应用在中小型网站和各类应用系统中[3]。在实际应用中,PHP与Mysql完美配合,已成为WEB开发的优秀组合[4]。

PHP开发领域中存在着丰富的框架,利用框架的 MVC模式[5]、CURD(封装数据库操作)、输入处理(校验过滤)、类库扩展等功能,可以大量减少代码编写量从而节省开发时间。利用框架,开发者只需要将精力投入到软件的创造性开发上。Zend Framework、Cake PHP、Think PHP、YII Framework等框架都是优秀的PHP框架,也足以支撑销售系统的开发,但在这里,选择Codeigniter作为系统的开发框架。Codeigniter是一个轻量级、简洁、功能强大且适合敏捷开发的PHP开源框架,目前由Ellislab提供技术支持,它使用MVC(Model,View,Controller)模型使表现层和逻辑层分离,且内置丰富的类库,能为系统开发提供极大便利。

基于PHP、Mysql的跨平台特性,系统可以运行在Windows、Linux、Mac OS等平台,但为方便开发工具的使用,系统开发环境采用Windows+Apache+Mysql+PHP的方案[6],开发设计工具主要有Zend studio、Mysql workbench、PHPMyadmin、Dreamweaver和Fireworks。

1.2 功能模块设计

销售管理系统的主要目的是将企业在实际的销售活动中的各项工作根据管理要求纳入系统管理,实现合同“发起、审核、执行、完结”各环节涉及到的产品、客户、物流、财务等数据的规范化、系统化管理。通过对销售管理系统的需求分析,系统按功能模块划分为产品管理、合同管理、生产管理、退换货管理、财务管理、客户管理和系统管理,具体的功能模块如图1所示。

1) 合同管理

合同管理主要提供对合同文本信息的管理功能,包括合同添加、合同修改、合同作废、合同审核、合同变更和按时间、所属部门、销售人员、合同状态等条件的统计查询。添加合同时,由于部分协议不能写入格式条款,还需提供上传附件的功能以满足合同的完整性需求。附件分为“商务附件”和“技术附件”,附件的分类可以方便不同权限的用户查看相应的内容,利于权限控制。

2) 退换货管理

退换货管理包含退货管理和换货管理,退货和换货都需要经过“申请、审批、执行”的流程。不同的是,换货过程不涉及财务处理,只需将通过审批的换货合同对应产品重新入库、发货即可;而退货过程涉及到财务处理,对已开发票的合同,退货后还需要开红字发票(负数发票)抵冲,这个功能在“财务管理”中实现。该功能模块提供产品在发送给客户后需要进行退货或换货的主要功能。

3) 产品管理

产品管理主要提供对产品本身信息的管理,如:产品分类、产品主材、结算公式管理等功能。设置产品结算公式后,用户在添加合同时系统自动生成对应产品的销售单价(建议性单价,用户可自行修改),方便价格管理。

4) 生产管理

生产管理是对已签订合同的产品进行排产、生产进度跟踪、生产信息反馈以及对产成品的入库、退库、发货等操作提供管理功能。生产跟踪包含“待审批合同查阅”和“生效合同跟踪”功能,前者为方便生产部门提前安排产品生产所需的条件和材料,后者还包括合同对应产品生产进度的跟踪及信息反馈。产品生产完成后,根据合同编号进行入库,当销售人员提出发货申请并通过审批后,进行发货操作。如遇到需要延期交货的情况,还可以对已入库的产品做退库处理,产品进入库存。

5) 财务管理

财务管理包括来款管理、应收账款管理和开票管理。来款管理是将客户的来款按类别(如:现款、承兑等)录入系统形成待认领来款记录,销售人员在来款记录中认领属于自己的款项。认领后,对应的来款与客户和销售人员绑定。如果认领出错,可以将已认领的信息解除绑定,来款进入待认领记录库以便重新认领。应收账款管理包含每次发货形成的应收账款明细和按客户名称形成的应收账款汇总统计,所有记录在产品发货开票后自动生成。开票管理是产品在提交产品发货申请的同时形成的开票申请在通过相应的审批后所做的开具发票操作,同时还包括产品退货后形成的红字发票的开具。endprint

6) 客户管理

客户管理提供客户资料的添加、编辑、禁用等功能,客户基础信息包括“客户类型、名称、所在地、联系电话、联系人、营业执照号码、组织机构代码”等。客户信息须与销售部门、销售人员进行关系对应,这种对应关系影响到合同的签订、执行、销售考核、来款管理等方面。

7) 系统管理

系统管理是系统的基础管理,提供系统运行的基础设置,包括部门管理、用户管理、角色管理、权限管理、供方基本信息管理等功能。由于销售管理系统中许多信息都较为敏感,因此各功能模块的操作和信息的查看都需要进行专门的授权,这些管理都在“角色管理和权限管理”中实现。系统采用基于角色的权限设计,对不通的角色授权,将用户划分到某角色后就具备了该角色的所有权限。

1.3 数据库设计

系统所有数据存储在名为hetong的数据库中,该库包含71张表,分别存储产品、合同、客户、产品入库、产品发货、发票、用户、角色等信息,涉及到系统的各个功能。数据库的设计综合考虑了三范式[8]并做了适当的冗余,使用外键,让不同的数据表在协同工作的同时保证数据的一致性和完整性。

由于数据表较多而篇幅有限,此处仅以用户添加合同的E-R图[9](如图2所示)为例作简要说明。系统用户包含登录名、真实姓名、所在部门、角色组等属性,真实姓名是为了将用户在系统中所做的操作进行实名制记录,满足管理需要;合同包含合同编号、客户名称(需方)、产品名称(合同对应产品)、收货地址等属性。系统用户在添加合同时,将对应的信息写入相应的数据表。在系统中,“系统用户”使用users表存储,“合同”使用contract表存储数据,字段包括但不限于图2中两个实体分别列出的属性(属性较多,未完全列出)。

1.4 安全设计

1) 基于用户名、密码的访问

与大多数软件一样,系统也采用了基于用户名、密码的登录访问,用户只能在输入正确的用户名和密码后才能进入系统。用户名和密码的验证过程采用了PHP的SESSION会话机制,SESSION信息经过加密后存储在数据库中,防止浏览器端的信息伪造,提高系统安全性。

2) 异常登录验证码

3) 敏感信息加密存储

数据库是数据的核心,如果数据库被攻破,数据会暴露,甚至被非法利用或破坏。数据库系统的安全是非常重要的,但对数据库管理系统的安全措施,本次不作讨论。系统将部分存储敏感信息的表字段进行了加密存储(如:用户密码、权限资源等),尽量降低系统数据风险。在系统后期升级中,还可以考虑采用可逆加密和不可逆加密的算法将不同敏感程度的信息分别加密后存储,增强安全性。

4) 对用户提交的信息作前后端双重验证

前端即用户浏览器端,通过JS程序对用户的输入进行是否必填、非法字符过滤等验证,防止无效数据直接提交到后端程序。后端即服务器处理端,使用PHP程序对用户提交的表单信息进行无效字符过滤、字符类型、字符长度、非法提交等验证处理,保证最终提交到Mysql数据库的数据是安全、可靠的。用户在提交数据时,如果前端验证未通过,则会直接在页面上进行提示;如果后端验证未通过,则会以错误代码提示用户。通过对程序前端、后端的综合验证,提高了程序自身的安全性。

2 系统实现

Index(index.php)是系统的入口,初始化运行系统所需要的基本资源; URI路由负责检查HTTP请求,确定由哪个控制器(Controller)来处理用户请求;如果缓存文件存在,则将缓存文件直接发送给浏览器;控制器(Controller)负责装载模型(Model)、核心库、辅助函数及所需的其它资源,在控制器(Controller)装载之前,HTTP 请求和任何用户提交的数据都将被安全过滤;控制器(Controller)处理完用户请求后,则将视图(View)发送到用户浏览器,如开启缓存,视图首先被缓存,用于以后的请求。

系统由模型(Model)、控制器(Controller)、视图(View)和其他类库(Library)、插件(Plugins)等组成。其中,模型负责处理系统中的数据逻辑部分,直接与数据库进行数据处理;控制器处理系统中用户交互的部分,用于分派用户的请求并选择相应的视图呈献给用户,同时也负责将用户的输入解释成模型可以执行的操作,是模型和视图之间的桥梁;视图则用于系统前端的处理,提供直观的界面给用户[10]。本系统还采用了部分第三方类库和插件,如:Jquery用于处理前端页面的显示效果和AJAX操作、PHPExcel用于处理系统中excel格式数据的导入、导出等操作[11]。

由于本系统功能模块较多,代码量也较大,不便将所有开发过程及代码一一展示,下面就主要将合同添加功能涉及到的模型、控制器及视图进行列举并说明。

2.1模型实现

此处摘取了contracts模型中的部分代码,__construct()为构造函数,允许contracts具备父类CI_Model的功能。create_contract()函数可将传递过来的参数$data中的值按插入到contract数据表,当控制器调用该函数并有效传值时,则数据存储到表中。get_all()函数的功能是获取所有已经保存到数据表的合同,参数$num和$offset允许设置每页记录数和结果集的偏移,这个在做分页显示的时候需要用到,参数$order允许设置数据库查询返回记录的顺序,默认为desc降序排列。

2.2 控制器实现

add_contract()函数实现合同添加的功能,$val是表单验证函数,为用户的输入提供验证,trim表示空格过滤,xss_clean表示启动防止跨站脚本攻击,required表示该字段为必填项。在用户提交的数据通过验证后,将所有数据组合成$contract_data数组,并将该数组通过contracts模型的create_contract()函数添加到数据库中对应的表字段,完成数据插入工作。

2.3 视图实现

2.4 系统运行示例

3 结束语

经过反复测试与修改,系统实现了销售各个流程及数据的系统化管理,方便了信息的共享,能在生产环境中正常运行。次外,在系统开发过程中对部分数据表的字段做了预留,程序设计也考虑了扩展接口,以便系统的后期升级。系统设计开发过程中用到的技术对类似B/S结构系统的开发也具有一定的参考意义。

参考文献:

[1] 金理清,殷国真,张正做.基于B/S架构办公管理信息系统设计与开发[J].办公自动化,2011,199(2):50-51.

[2] 王石,杨英娜.精通PHP+Mysql应用开发[M].北京:人民邮电出版社,2006:2-6.

[3] Vikram Vaswani.Mysql完全手册[M].北京:电子工业出版社,2008:40-55.

[4] 王娜娜.基于PHP技术的办公自动化系统的设计与实现[J].科技视界,2012,51(36):36-38.

[5] Quentin Zervaas.PHP Web2.0开发实战[M].北京:人民邮电出版社,2008:16-19.

[6] 余肖生,易偲.基于PHP的开发环境搭建与网站设计实现[J].重庆理工大学学报:自然科学版,2011,25(3):74-77.

[7] 杨桂丽,黎敬涛.基于PHP的一个家庭理财系统的设计与实现[J].计算机应用与软件,2013,30(2):259-261.

[8] 于中远,王亚平.应用环境中最优数据库模式的构建[J].河南科技,2011,21(21):54-55.

[9] 吴曼霞.企业订单跟踪管理系统的设计与实现[D].成都:电子科技大学,2012.

[10] 戴一平.MVC设计模式在PHP开发中的应用[J].计算机与现代化,2011,187(3):33-37.

[11] 李谋平.基于PHP的图书设备管理系统研究与开发[D].合肥:安徽大学,2011.endprint

6) 客户管理

客户管理提供客户资料的添加、编辑、禁用等功能,客户基础信息包括“客户类型、名称、所在地、联系电话、联系人、营业执照号码、组织机构代码”等。客户信息须与销售部门、销售人员进行关系对应,这种对应关系影响到合同的签订、执行、销售考核、来款管理等方面。

7) 系统管理

系统管理是系统的基础管理,提供系统运行的基础设置,包括部门管理、用户管理、角色管理、权限管理、供方基本信息管理等功能。由于销售管理系统中许多信息都较为敏感,因此各功能模块的操作和信息的查看都需要进行专门的授权,这些管理都在“角色管理和权限管理”中实现。系统采用基于角色的权限设计,对不通的角色授权,将用户划分到某角色后就具备了该角色的所有权限。

1.3 数据库设计

系统所有数据存储在名为hetong的数据库中,该库包含71张表,分别存储产品、合同、客户、产品入库、产品发货、发票、用户、角色等信息,涉及到系统的各个功能。数据库的设计综合考虑了三范式[8]并做了适当的冗余,使用外键,让不同的数据表在协同工作的同时保证数据的一致性和完整性。

由于数据表较多而篇幅有限,此处仅以用户添加合同的E-R图[9](如图2所示)为例作简要说明。系统用户包含登录名、真实姓名、所在部门、角色组等属性,真实姓名是为了将用户在系统中所做的操作进行实名制记录,满足管理需要;合同包含合同编号、客户名称(需方)、产品名称(合同对应产品)、收货地址等属性。系统用户在添加合同时,将对应的信息写入相应的数据表。在系统中,“系统用户”使用users表存储,“合同”使用contract表存储数据,字段包括但不限于图2中两个实体分别列出的属性(属性较多,未完全列出)。

1.4 安全设计

1) 基于用户名、密码的访问

与大多数软件一样,系统也采用了基于用户名、密码的登录访问,用户只能在输入正确的用户名和密码后才能进入系统。用户名和密码的验证过程采用了PHP的SESSION会话机制,SESSION信息经过加密后存储在数据库中,防止浏览器端的信息伪造,提高系统安全性。

2) 异常登录验证码

3) 敏感信息加密存储

数据库是数据的核心,如果数据库被攻破,数据会暴露,甚至被非法利用或破坏。数据库系统的安全是非常重要的,但对数据库管理系统的安全措施,本次不作讨论。系统将部分存储敏感信息的表字段进行了加密存储(如:用户密码、权限资源等),尽量降低系统数据风险。在系统后期升级中,还可以考虑采用可逆加密和不可逆加密的算法将不同敏感程度的信息分别加密后存储,增强安全性。

4) 对用户提交的信息作前后端双重验证

前端即用户浏览器端,通过JS程序对用户的输入进行是否必填、非法字符过滤等验证,防止无效数据直接提交到后端程序。后端即服务器处理端,使用PHP程序对用户提交的表单信息进行无效字符过滤、字符类型、字符长度、非法提交等验证处理,保证最终提交到Mysql数据库的数据是安全、可靠的。用户在提交数据时,如果前端验证未通过,则会直接在页面上进行提示;如果后端验证未通过,则会以错误代码提示用户。通过对程序前端、后端的综合验证,提高了程序自身的安全性。

2 系统实现

Index(index.php)是系统的入口,初始化运行系统所需要的基本资源; URI路由负责检查HTTP请求,确定由哪个控制器(Controller)来处理用户请求;如果缓存文件存在,则将缓存文件直接发送给浏览器;控制器(Controller)负责装载模型(Model)、核心库、辅助函数及所需的其它资源,在控制器(Controller)装载之前,HTTP 请求和任何用户提交的数据都将被安全过滤;控制器(Controller)处理完用户请求后,则将视图(View)发送到用户浏览器,如开启缓存,视图首先被缓存,用于以后的请求。

系统由模型(Model)、控制器(Controller)、视图(View)和其他类库(Library)、插件(Plugins)等组成。其中,模型负责处理系统中的数据逻辑部分,直接与数据库进行数据处理;控制器处理系统中用户交互的部分,用于分派用户的请求并选择相应的视图呈献给用户,同时也负责将用户的输入解释成模型可以执行的操作,是模型和视图之间的桥梁;视图则用于系统前端的处理,提供直观的界面给用户[10]。本系统还采用了部分第三方类库和插件,如:Jquery用于处理前端页面的显示效果和AJAX操作、PHPExcel用于处理系统中excel格式数据的导入、导出等操作[11]。

由于本系统功能模块较多,代码量也较大,不便将所有开发过程及代码一一展示,下面就主要将合同添加功能涉及到的模型、控制器及视图进行列举并说明。

2.1模型实现

此处摘取了contracts模型中的部分代码,__construct()为构造函数,允许contracts具备父类CI_Model的功能。create_contract()函数可将传递过来的参数$data中的值按插入到contract数据表,当控制器调用该函数并有效传值时,则数据存储到表中。get_all()函数的功能是获取所有已经保存到数据表的合同,参数$num和$offset允许设置每页记录数和结果集的偏移,这个在做分页显示的时候需要用到,参数$order允许设置数据库查询返回记录的顺序,默认为desc降序排列。

2.2 控制器实现

add_contract()函数实现合同添加的功能,$val是表单验证函数,为用户的输入提供验证,trim表示空格过滤,xss_clean表示启动防止跨站脚本攻击,required表示该字段为必填项。在用户提交的数据通过验证后,将所有数据组合成$contract_data数组,并将该数组通过contracts模型的create_contract()函数添加到数据库中对应的表字段,完成数据插入工作。

2.3 视图实现

2.4 系统运行示例

3 结束语

经过反复测试与修改,系统实现了销售各个流程及数据的系统化管理,方便了信息的共享,能在生产环境中正常运行。次外,在系统开发过程中对部分数据表的字段做了预留,程序设计也考虑了扩展接口,以便系统的后期升级。系统设计开发过程中用到的技术对类似B/S结构系统的开发也具有一定的参考意义。

参考文献:

[1] 金理清,殷国真,张正做.基于B/S架构办公管理信息系统设计与开发[J].办公自动化,2011,199(2):50-51.

[2] 王石,杨英娜.精通PHP+Mysql应用开发[M].北京:人民邮电出版社,2006:2-6.

[3] Vikram Vaswani.Mysql完全手册[M].北京:电子工业出版社,2008:40-55.

[4] 王娜娜.基于PHP技术的办公自动化系统的设计与实现[J].科技视界,2012,51(36):36-38.

[5] Quentin Zervaas.PHP Web2.0开发实战[M].北京:人民邮电出版社,2008:16-19.

[6] 余肖生,易偲.基于PHP的开发环境搭建与网站设计实现[J].重庆理工大学学报:自然科学版,2011,25(3):74-77.

[7] 杨桂丽,黎敬涛.基于PHP的一个家庭理财系统的设计与实现[J].计算机应用与软件,2013,30(2):259-261.

[8] 于中远,王亚平.应用环境中最优数据库模式的构建[J].河南科技,2011,21(21):54-55.

[9] 吴曼霞.企业订单跟踪管理系统的设计与实现[D].成都:电子科技大学,2012.

[10] 戴一平.MVC设计模式在PHP开发中的应用[J].计算机与现代化,2011,187(3):33-37.

[11] 李谋平.基于PHP的图书设备管理系统研究与开发[D].合肥:安徽大学,2011.endprint

6) 客户管理

客户管理提供客户资料的添加、编辑、禁用等功能,客户基础信息包括“客户类型、名称、所在地、联系电话、联系人、营业执照号码、组织机构代码”等。客户信息须与销售部门、销售人员进行关系对应,这种对应关系影响到合同的签订、执行、销售考核、来款管理等方面。

7) 系统管理

系统管理是系统的基础管理,提供系统运行的基础设置,包括部门管理、用户管理、角色管理、权限管理、供方基本信息管理等功能。由于销售管理系统中许多信息都较为敏感,因此各功能模块的操作和信息的查看都需要进行专门的授权,这些管理都在“角色管理和权限管理”中实现。系统采用基于角色的权限设计,对不通的角色授权,将用户划分到某角色后就具备了该角色的所有权限。

1.3 数据库设计

系统所有数据存储在名为hetong的数据库中,该库包含71张表,分别存储产品、合同、客户、产品入库、产品发货、发票、用户、角色等信息,涉及到系统的各个功能。数据库的设计综合考虑了三范式[8]并做了适当的冗余,使用外键,让不同的数据表在协同工作的同时保证数据的一致性和完整性。

由于数据表较多而篇幅有限,此处仅以用户添加合同的E-R图[9](如图2所示)为例作简要说明。系统用户包含登录名、真实姓名、所在部门、角色组等属性,真实姓名是为了将用户在系统中所做的操作进行实名制记录,满足管理需要;合同包含合同编号、客户名称(需方)、产品名称(合同对应产品)、收货地址等属性。系统用户在添加合同时,将对应的信息写入相应的数据表。在系统中,“系统用户”使用users表存储,“合同”使用contract表存储数据,字段包括但不限于图2中两个实体分别列出的属性(属性较多,未完全列出)。

1.4 安全设计

1) 基于用户名、密码的访问

与大多数软件一样,系统也采用了基于用户名、密码的登录访问,用户只能在输入正确的用户名和密码后才能进入系统。用户名和密码的验证过程采用了PHP的SESSION会话机制,SESSION信息经过加密后存储在数据库中,防止浏览器端的信息伪造,提高系统安全性。

2) 异常登录验证码

3) 敏感信息加密存储

数据库是数据的核心,如果数据库被攻破,数据会暴露,甚至被非法利用或破坏。数据库系统的安全是非常重要的,但对数据库管理系统的安全措施,本次不作讨论。系统将部分存储敏感信息的表字段进行了加密存储(如:用户密码、权限资源等),尽量降低系统数据风险。在系统后期升级中,还可以考虑采用可逆加密和不可逆加密的算法将不同敏感程度的信息分别加密后存储,增强安全性。

4) 对用户提交的信息作前后端双重验证

前端即用户浏览器端,通过JS程序对用户的输入进行是否必填、非法字符过滤等验证,防止无效数据直接提交到后端程序。后端即服务器处理端,使用PHP程序对用户提交的表单信息进行无效字符过滤、字符类型、字符长度、非法提交等验证处理,保证最终提交到Mysql数据库的数据是安全、可靠的。用户在提交数据时,如果前端验证未通过,则会直接在页面上进行提示;如果后端验证未通过,则会以错误代码提示用户。通过对程序前端、后端的综合验证,提高了程序自身的安全性。

2 系统实现

Index(index.php)是系统的入口,初始化运行系统所需要的基本资源; URI路由负责检查HTTP请求,确定由哪个控制器(Controller)来处理用户请求;如果缓存文件存在,则将缓存文件直接发送给浏览器;控制器(Controller)负责装载模型(Model)、核心库、辅助函数及所需的其它资源,在控制器(Controller)装载之前,HTTP 请求和任何用户提交的数据都将被安全过滤;控制器(Controller)处理完用户请求后,则将视图(View)发送到用户浏览器,如开启缓存,视图首先被缓存,用于以后的请求。

系统由模型(Model)、控制器(Controller)、视图(View)和其他类库(Library)、插件(Plugins)等组成。其中,模型负责处理系统中的数据逻辑部分,直接与数据库进行数据处理;控制器处理系统中用户交互的部分,用于分派用户的请求并选择相应的视图呈献给用户,同时也负责将用户的输入解释成模型可以执行的操作,是模型和视图之间的桥梁;视图则用于系统前端的处理,提供直观的界面给用户[10]。本系统还采用了部分第三方类库和插件,如:Jquery用于处理前端页面的显示效果和AJAX操作、PHPExcel用于处理系统中excel格式数据的导入、导出等操作[11]。

由于本系统功能模块较多,代码量也较大,不便将所有开发过程及代码一一展示,下面就主要将合同添加功能涉及到的模型、控制器及视图进行列举并说明。

2.1模型实现

此处摘取了contracts模型中的部分代码,__construct()为构造函数,允许contracts具备父类CI_Model的功能。create_contract()函数可将传递过来的参数$data中的值按插入到contract数据表,当控制器调用该函数并有效传值时,则数据存储到表中。get_all()函数的功能是获取所有已经保存到数据表的合同,参数$num和$offset允许设置每页记录数和结果集的偏移,这个在做分页显示的时候需要用到,参数$order允许设置数据库查询返回记录的顺序,默认为desc降序排列。

2.2 控制器实现

add_contract()函数实现合同添加的功能,$val是表单验证函数,为用户的输入提供验证,trim表示空格过滤,xss_clean表示启动防止跨站脚本攻击,required表示该字段为必填项。在用户提交的数据通过验证后,将所有数据组合成$contract_data数组,并将该数组通过contracts模型的create_contract()函数添加到数据库中对应的表字段,完成数据插入工作。

2.3 视图实现

2.4 系统运行示例

3 结束语

经过反复测试与修改,系统实现了销售各个流程及数据的系统化管理,方便了信息的共享,能在生产环境中正常运行。次外,在系统开发过程中对部分数据表的字段做了预留,程序设计也考虑了扩展接口,以便系统的后期升级。系统设计开发过程中用到的技术对类似B/S结构系统的开发也具有一定的参考意义。

参考文献:

[1] 金理清,殷国真,张正做.基于B/S架构办公管理信息系统设计与开发[J].办公自动化,2011,199(2):50-51.

[2] 王石,杨英娜.精通PHP+Mysql应用开发[M].北京:人民邮电出版社,2006:2-6.

[3] Vikram Vaswani.Mysql完全手册[M].北京:电子工业出版社,2008:40-55.

[4] 王娜娜.基于PHP技术的办公自动化系统的设计与实现[J].科技视界,2012,51(36):36-38.

[5] Quentin Zervaas.PHP Web2.0开发实战[M].北京:人民邮电出版社,2008:16-19.

[6] 余肖生,易偲.基于PHP的开发环境搭建与网站设计实现[J].重庆理工大学学报:自然科学版,2011,25(3):74-77.

[7] 杨桂丽,黎敬涛.基于PHP的一个家庭理财系统的设计与实现[J].计算机应用与软件,2013,30(2):259-261.

[8] 于中远,王亚平.应用环境中最优数据库模式的构建[J].河南科技,2011,21(21):54-55.

[9] 吴曼霞.企业订单跟踪管理系统的设计与实现[D].成都:电子科技大学,2012.

[10] 戴一平.MVC设计模式在PHP开发中的应用[J].计算机与现代化,2011,187(3):33-37.

[11] 李谋平.基于PHP的图书设备管理系统研究与开发[D].合肥:安徽大学,2011.endprint