本科生毕业设计(论文) (2016届) 工程技术系 题目:摄影公司网站设计与实现 学号: 姓名: 专业班级:计算机科学与技术 指导教师:职称:讲师 2015年11月5日 本科生毕业设计(论文)摄影公司网站的设计与实现 摘要:。 本文详细介绍了完成的步骤,包括需求分析、设计框架、功能确定、实现、等过程。主要实现基本等功能。使用/S架构,并将技术和Sql数据库结合使用,从而达到系统的最终实现。 关键词:;技术;; DesignandImplementationphotographycompanywebsite Abstract:CompaniesarefocusingonthedevelopmentofmodernphotographyontheInternet,alongwiththedevelopmentoftheelectricitysupplier,thephotographicindustryhasbeentransformedintobeatanycommodityindustryfromshootingpeople,inordertogainafootholdinthehigh-speedInternetinformationera.Photographycompanytopromotetheironlineisessential,thenthecompany''sowndedicatedwebsitehasbecomeevenmorenecessary.Nowawebsiteonbehalfofthatthiscompany''simage. Thispaperdescribesthewebsitetocompletethesteps,includingrequirementsanalysis,designframework,thewebsitefeaturesidentifiedsitestoachieve,acomprehensivetestingprocess.Themainachievementofthebasicimagemanagementadministrator,toseethedayorders,operations,usersonlineregistration,add,delete,shoppingcartandotherfunctions.UsingB/Sarchitecture,andtechnicalandmySqlphpdatabaseusedincombinationtoachievetheultimaterealizationofthesystem. KeyWords:photographywebsite;phptechnology;mysqldatabase;html;jquery;ajax 目录 本科生毕业设计(论文) I 本科生毕业设计(论文)诚信承诺书 II 本科生毕业设计(论文)诚信承诺书 Ⅲ 1绪论 1 1.1摄影网站的设计背景 1 1.2摄影网站的设计目的与意义 1 2系统开发基础 2 2.1网站开发语言及后台数据库,服务器概述 2 2.2系统开发环境 3 2.3wamp架构模式概述 3 3系统可行性分析 4 3.1经济可行性分析 4 3.2技术可行性分析 4 4.1需求分析的目标和任务 5 4.2理解用户需求 5 4.3功能需求分析 5 4.4用例图分析 6 5系统概要设计 8 5.1数据库概要设计 8 5.2网站架构设计………………………………………………………………………………...14 6网站详细设计与实现 16 6.1网站登录界面 16 6.2管理员登入系统 18 7前端展示页 35 8结束语 41 参考文献 43 致谢 44 1绪论 1.1设计背景 1.2摄影网站的设计目的与意义 在信息化未普及的年代, 2系统开发 2.1网站开发语言及后台数据库概述 2.1.1Apache服务器简介阿帕奇是阿帕奇软件基金会建立在c语言的基础上开发的网页的脚本语言,在基本上的现有操作系统中大部分都可以运行,在网站类的项目开发中它功能强大,且运行效率高,,所以目前全球的网站开发中,大部分都是用php语言开发的,他可以跨平台,跨软件运行。他快速并且可靠,将Perl/Python等解释器放到服务器中编译。 ApacheHTTP服务器源于NCSAhttpd服务器,它可以运行在几乎所有广泛使用的计算机平台上。在多次改动之后,他已经成为web端最优秀的服务器,Apache源于NCSAhttpd服务器,经过多次改动,成为直接上最流行的软件之一,Apache的特点是方便、稳定性强、速度非常快,并可做代理服务器来使用因为它是自由软件,因为这套软件实在太优秀了并且他是开元软件,代码全部开放。后来人在他原有的基础上进行修改,在linux系统中Apache简直就是绝配,他的优点在linux下全部展示。现如今大部分的程序员都喜欢在linux下使用阿帕奇。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个ApacheWeb站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。Amazon、Yahoo!、W3Consortium、FinancialTimes等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。 2.1.1选用 MySQL是由瑞典公司开发的关系型数据库管理系统,后来被甲骨文收购作为属于旗下公司。MySQL是目前最流行的关系型数据库,在WEB应用方面MySQL是最好的RDBM应用软件之一。MySQL他是一种强大的关联数据库管理系统,因为他将数据放在不同的表中而不是放在一个数据集合中,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策(本词条“授权政策”),它具有社区版和商业版,由于他的其体积很小、速度很快、成本又比较低,尤其他是开放源码这一特点,中小型企业都选择了mysql作为自己的数据库,并且形成wamp环境。 2.2系统开发环境 2..1系统开发环境 硬件环境 CPU:酷睿i3-2310M RAM:4G DISK:500G 软件环境 操作系统:Windows7 后台数据库平台: 2.3wamp架构模式概述 W 3系统可行性分析 3.1经济可行性分析 目前,计算机技术不断更新换代、信息的普及化,让,它对企业利益。因此,如何从传统管理模式中脱离出来,以更好的方式来提高企业的运作效率已成为管理层的迫切需求。而的开发正是基于的这个需求,因此它存在很大的市场空间。所以,从经济的角度考虑,是完全可行的。 3.2技术可行性分析Php的名称放到定义中的写法被称作递归缩写。接下来就讲讲php的历史,PHP是由RasmusLerdorf在1994年创建,那时候是他为了要维护个人网页而写的一个perl语言。后来又用C语言重新编写,在访问数据库中,他也做了很大的。他将这些程序与表单直译器放在一起,称为PHP/FI。PHP/FI链接数据库,由此网页就变成为了动态了。在1995年的时候php对外发表第一个版本,他通过文档,并且发布了PHP1.0!在这的版本中,提供了访客留言本、访客计数器等简单的功能。以后越来越多的网站使用了PHP,并且强烈要求增加一些特性。比如循环语句和数组变量等等;在新的成员加入开发行列之后,RasmusLerdorf在1995年6月8日将PHP/FI公开发布,未来在社交群上来快速的查找错误并加速php的开发。这个发布的版本命名为PHP2。Perl有较多的限制,不过比较简单了、更有方便;。PHP/FI加入了对MySQL的支持,从此在网页开发语言上,php确立了自己的地位。到了1996年底,有15000个网站使用PHP/FI。到2014年世界上40%的网站都是用php写的。 4网站需求分析 在软件工程中,需求分析指的是在建立一个新的或改变一个旧的系统时描写新系统的目的、范围和定义时所要做的所有的工作。需求分析是软件工程中的一个关键过程。在这个过程中,系统分析员和软件工程师确定顾客的需求。只有在确定了这些需求后,他们才能够分析和寻求新系统的解决方案。 在软件工程的历史中,很长一段时间里人们一直认为需求分析是整个软件工程中最简单的一个步骤,但在过去十年中越来越多的人认识到它在整个软件开发与维护过程中的重要地位。它贯穿于软件开发的整个生命周期,是整个过程中最关键的一个过程。假如在需求分析时分析者们未能正确的认识到顾客的需要的话,那么最后的软件实际上不可能达到顾客的需要,或者软件无法在规定的时间里完成[2,3]。 4.1需求分析的目标和任务概括地说,需求分析是开发者对待开发软件项目的“理解、分析与表达”的过程[]。需求分析的目标是深入描述软件的功能和性能,确定软件设计的约束和软件同其它系统元素的接口细节,定义软件的其它有效性需求。 。 4.2理解用户需求 网站用户分类,分别是管理员、用户。 可以。 可以。 。 。 。 运行在Windows各版本的平台下。 有很好的可扩展性。 容易上手,方便使用。 4.3功能需求分析用户类型分析 管理员、普通用户。管理员用户拥有本的最大权力,可以对的所有进行操作,包括对普通注册用户。 功能分析 管理员用户。通过的功能,管理员可以填入编号、名称、。 功能分析 要提供给 盘点功能分析 4.4用例图分析用例图是描述系统功能的静态视图。该图表示了与某假定系统进行交互的“施动者”。根据PaulHarmon和MikeWatson在1998年出版的UnderstandingUML:TheDeveloper’sGuide一书中所阐述的观点,“用例图对系统及其主要处理做了功能描述。它也以图形方式表示了谁将使用该系统和他们期望与系统进行什么样的交互”[HarmonandWatson,1998,第112页][6]。用例图主要的作用有以下点[1]。 获取需求。 指导测试。 对其它工作流起指导作用。 管理员访问用例图 管理员用户访问用例图,如图1所示 图1管理员用户访问用例图 普通注册用户访问用例图 普通注册用户访问用例图,如图2所示 图2普通注册用户访问用例图 用例 用户用例管理,如图3所示图3用户管理用例图 系统概要设计 .1数据库概要设计 .1.1数据库概念设计 这一设计阶段是在需求分析的基础上,设计出能够满足用户需求的各种实体,为后面的数据库逻辑设计打下基础。 本系统中数据库设计的实体有:用户实体、、、实体。各实体的E-R图,分别如图1、2、3、所示。 图1管理员实体 图实体 图envir_class实体 图_image实体图_class实体图_image实体 图_class实体图_image实体图实体图实体.1.2数据库逻辑结构设计结果如表-1、-2、-3、所示。、、ID 自动编号 ID int NoNull Account varchar 20 password varchar 20 name char 10 sort char 10 status char 10 create_time int 10 表-1employee_system信息表结构 account varchar 50 password varchar 100 name varchar 50 gender tinyint 8 s_province varchar 50 s_city varchar 50 s_county varchar 50 s_plance varchar 50 telephone varchar 50 status varchar 20 create_time int 50 表5-2client信息表结构 字段 类型 长度 格式 约束 Id int NoNull title varchar image varchar 50 link varchar sort int status int create_time varchar 20 表-3envir_class信息表结构envir_id int 100 title varchar 30 image varchar 20 num int 20 price decimal 10,2 link varchar 20 sort int 1000 status int 1000 create_time varchar 1000 表5-4envir_image信息表结构 字段 类型 长度 格式 约束 Id int NoNull title varchar image varchar 50 link varchar sort int status int create_time varchar 20 表-5friend_class信息表结构 _id int 100 title varchar 30 image varchar 20 num int 20 price decimal 10,2 link varchar 20 sort int 1000 status int 1000 create_time varchar 1000 表5-6friend_image信息表结构 字段 类型 长度 格式 约束 Id int NoNull title varchar image varchar 50 link varchar sort int status int create_time varchar 20 表-7personal_class信息表结构 _id int 100 title varchar 30 image varchar 20 num int 20 price decimal 10,2 link varchar 20 sort int 1000 status int 1000 create_time varchar 1000 表5-8personal_image信息表结构 字段 类型 长度 格式 约束 Id int NoNull phonenum varchar 50 goodsname varchar 50 goodskinds varchar 50 goodsprice decimal 10,2 people int 表-9car信息表结构 client_id varchar 100 price decimal 10,2 status int 20 Create_time int 20 表5-10order信息表结构 5.2网站架构设计 5.2.1网站概要设计概述 概要设计的任务,一是,二是要。 5.2.2网站功能模块的划分 模块的划分 概要设计的核心问题是确定总体架构和模块划分。系统功能要层层划分,直到每一个模块可以作为一个可以执行的程序单元为止。功能模块划分的结果,是功能结构图。本根据需求分析的结果,将划分为个大的功能模块:。图.11是“”的功能架构图。 图.11系统功能架构图 功能模块与用户类型的关系,如表-11所示。表-11功能模块与用户类型的关系注:打√,表示用户具备该模块的功能;打×,则表示用户不具备次模块的功能。 6网站详细设计与实现 在完整框架的基础上,对不同层次中的各功能进行详细设计,已达到系统实现,以下对整个系统各功能进行详细的演示。 6.1登录界面 进入后,如图.1所示,在该界面上用户可以输入用户名和登录系统,然后点击“”按钮进入进行操作。如若,是无法的并且会弹出“”这个对话框如图.2所示。 图1系统登陆界面 图2系统登录错误弹出界面 程序代码设计:publicfunctionsignup(){ //extract(generatePostParamVars()); extract(generateRequestParamVars()); if(!preg_match(''/^1\d{10}$/'',$account)){ thrownew\Exception("手机号码格式错误"); } $conditions[''account'']=$account; $conditions[''status'']=1; if($result=$this->where($conditions)->find()){ thrownew\Exception(''手机号码已存在''); } $data[''telephone'']=$account; $data[''name'']=$name; $data[''account'']=$account; $data[''password'']=passwordEncode($password); $data[''create_time'']=time(); if(!$result=$this->add($data)){ thrownew\Exception(L(''OPERATION_FAILED'')); } session(''client_id'',$result[''id'']); session(''client_account'',$account); session(''client_telephone'',$result[''telephone'']); } 以上代码主要实现用户功能,让用户通过。如若的,并且会弹出“”这个对话框6.2管理员登入系统 图程序代码设计: publicfunctionadds(){ $this->display(); } publicfunctionedit(){ $conditions[''id'']=I(''get.id''); $result=D(self::$FRIEND_IMAGE_MODEL)->getResultByConditions($conditions); $this->assign(''result'',$result); $this->display(); } publicfunctionadds_do(){ try{ validateUnLoginRedirect(); D(self::$FRIEND_IMAGE_MODEL)->adds(); $ajaxReturnData[''statusCode'']=200; $ajaxReturnData[''message'']=''操作成功''; $ajaxReturnData[''callbackType'']=''closeCurrent''; }catch(\Exception$e){ $ajaxReturnData[''statusCode'']=300; $ajaxReturnData[''message'']=''操作失败''.$e->getMessage(); } $this->ajaxReturn($ajaxReturnData); } publicfunctionedit_do(){ try{ validateUnLoginRedirect(); D(self::$FRIEND_IMAGE_MODEL)->edit(); $ajaxReturnData[''statusCode'']=200; $ajaxReturnData[''message'']=''操作成功''; $ajaxReturnData[''callbackType'']=''closeCurrent''; }catch(\Exception$e){ $ajaxReturnData[''statusCode'']=300; $ajaxReturnData[''message'']=''操作失败''.$e->getMessage(); } $this->ajaxReturn($ajaxReturnData); } publicfunctiondele_do(){ try{ validateUnLoginRedirect(); D(self::$FRIEND_IMAGE_MODEL)->dele(); $ajaxReturnData[''statusCode'']=200; $ajaxReturnData[''message'']=''操作成功''; $ajaxReturnData[''callbackType'']=''''; }catch(\Exception$e){ $ajaxReturnData[''statusCode'']=300; $ajaxReturnData[''message'']=''操作失败''.$e->getMessage(); } $this->ajaxReturn($ajaxReturnData); } 是不能自己注册系统管理员的,原则上我们会预留一个账号让他们自己添加,也就是让这个原有账号登入之后如图6.4所示。 图界面 6-5添加管理员界面 登入的时候,登入失败情况是账号密码不存在如图6-6。 程序代码设计publicfunctionadds(){ extract(generatePostParamVars()); $params=validateAccountExists($account); if($params[''exists'']){ thrownew\Exception(''帐号已存在''); } $conditions=array(); $conditions[''name'']=$name; if($this->field(''id'')->where($conditions)->find()){ thrownew\Exception(''姓名已经存在!''); } // $data[''department_id'']=$department_id; $data[''account'']=$account; $data[''password'']=passwordEncode(''123456''); $data[''name'']=$name; $data[''creator_id'']=session(''employee_system_id''); $data[''sort'']=$sort; $data[''create_time'']=time(); if(!$this->add($data)){ thrownew\Exception(L(''OPERATION_FAILED'')); } } publicfunctionedit(){ extract(generatePostParamVars()); $conditions[''id'']=$id; if(!$result=$this->where($conditions)->find()){ thrownew\Exception(L(''NO_DATA'')); } $params=validateAccountExistsWithoutSelf($account,''system''); if($params[''exists'']){ thrownew\Exception(''账号已存在''); } //检查员工帐号是否已经存在 $conditions=array(); $conditions[''id'']=array(''neq'',$id); $conditions[''account'']=$account; if($this->where($conditions)->find()){ thrownew\Exception(L(''员工帐号已经存在!'')); } //检查员工姓名是否已经存在 $conditions=array(); $conditions[''id'']=array(''neq'',$id); $conditions[''name'']=$name; if($this->where($conditions)->find()){ thrownew\Exception(L(''员工姓名已经存在!'')); } $conditions=array(); $conditions[''id'']=$id; $data[''account'']=$account; $data[''name'']=$name; $data[''sort'']=$sort; if($this->where($conditions)->save($data)===false){ thrownew\Exception(L(''OPERATION_FAILED'')); } } 6.2.1管理系统中客户管理界面设计 功能。具体的界面设计如图.5所示。 图管理界面 程序代码设计: publicfunctionlists(){ extract(generateRequestParamVars()); $conditions=array(); if(isset($account)&&$account){ $conditions[''account'']=array(''like'',''%''.$account.''%''); } $count=$this->where($conditions)->count(); if(!$numPerPage=I(''param.numPerPage'')){ $numPerPage=C(''NUM_PER_PAGE''); } $page=new\Think\Page($count,$numPerPage); $paging=$page->show_jui_paging_panel(); $conditions[''status'']=1; $results=$this->where($conditions)->order(''create_timedesc'')->limit($page->firstRow.'',''.$page->listRows)->select(); returnarray($paging,$results); } 接下来是对初始密码的修改如图6-9,对初始密码的修改可以提高密码的安全性。 图6-7初始密码的修改 程序代码设计: publicfunctionpassword_edit(){ extract(generatePostParamVars()); //validatedata if(!preg_match(''/^.{6,20}$/'',$password_c)){ thrownew\Exception("OPERATION_FAILED"); } if(!preg_match(''/^.{6,20}$/'',$password_n)){ thrownew\Exception("OPERATION_FAILED"); } if($password_n!=$password_repeat){ thrownew\Exception(''两次密码输入不一致''); } $conditions[''id'']=session(''employee_system_id''); $conditions[''password'']=passwordEncode($password_c); if(!$member=$this->where($conditions)->find()){ thrownew\Exception(''当前密码错误''); } $conditions=array(); $conditions[''id'']=session(''employee_system_id''); $data[''password'']=passwordEncode($password_n); if($this->where($conditions)->save($data)===false){ thrownew\Exception(''OPERATION_FAILED''); } } 6.2.2图片管理模块设计 中,准确输入、、、、。具体的界面设计如图.11所示。 图界面 图界面程序代码设计: publicfunctionadds(){ extract(generatePostParamVars()); $conditions[''title'']=$title; if($this->field(''id'')->where($conditions)->find()){ thrownew\Exception(''名称已经存在!''); } try{ if(isset($image)&&$image){ $image=processMoveFilesFromTmpsToStorage($image); } }catch(\Exception$e){ thrownew\Exception(''FILE_PROCESS_FAIL''); } $data[''image'']=$image; $data[''link'']=$link; $data[''title'']=$title; $data[''sort'']=$sort; $data[''status'']=1; $data[''create_time'']=time(); if(!$id=$this->add($data)){ thrownew\Exception(L(''OPERATION_FAILED'')); } } publicfunctionedit(){ extract(generatePostParamVars()); $conditions[''id'']=$id; if(!$result=$this->where($conditions)->find()){ thrownew\Exception(L(''NO_DATA'')); } //检查名称是否已经存在 $conditions=array(); $conditions[''id'']=array(''neq'',$id); $conditions[''title'']=$title; if($this->where($conditions)->find()){ thrownew\Exception(L(''标题已经存在!'')); } try{ if(isset($image)&&$image){ $image=processMoveFilesFromTmpsToStorage($image,$result[''image'']); } }catch(\Exception$e){ thrownew\Exception(''FILE_PROCESS_FAIL''); } $conditions=array(); $conditions[''id'']=$id; $data[''image'']=$image; $data[''link'']=$link; $data[''title'']=$title; $data[''sort'']=$sort; $data[''status'']=1; if($this->where($conditions)->save($data)===false){ thrownew\Exception(L(''OPERATION_FAILED'')); } } publicfunctiondele(){ extract(generateGetParamVars()); if(!$id){ thrownew\Exception(L(''MISSING_PARAMETER''));; } $conditions[''id'']=intval($id); if(!$result=$this->where($conditions)->find()){ thrownew\Exception(L(''NO_DATA'')); } if($this->where($conditions)->delete()===false){ thrownew\Exception(L(''OPERATION_FAILED'')); } } publicfunctionlists(){ extract(generateRequestParamVars()); $count=$this->where($conditions)->count(); if(!$numPerPage=I(''param.numPerPage'')){ $numPerPage=C(''NUM_PER_PAGE''); } $page=new\Think\Page($count,$numPerPage); $paging=$page->show_jui_paging_panel(); $results=$this->where($conditions)->limit($page->firstRow.'',''.$page->listRows)->select(); returnarray($paging,$results); } publicfunctionlists(){ list($paging,$results)=D(self::$ENVIR_CLASS_MODEL)->lists(); $this->assign(''paging'',$paging); $this->assign(''results'',$results); $this->display(); } publicfunctionadds(){ $this->display(); } publicfunctionedit(){ $conditions[''id'']=I(''get.id''); $result=D(self::$ENVIR_CLASS_MODEL)->getResultByConditions($conditions); $this->assign(''result'',$result); $this->display(); } 目前是envir图片管理中,、、、。具体的界面设计如图.13所示。.14。 图界面 图界publicfunctionlists(){ list($paging,$results)=D(self::$ENVIR_IMAGE_MODEL)->lists(); if($results){ foreach($resultsas&$result){ $conditions=array(); $conditions[''id'']=$result[''envir_class_id'']; if($product_class=D(self::$ENVIR_CLASS_MODEL)->getResultByConditions($conditions)){ $result[''envir_class_name'']=$product_class[''title'']; }else{ $result[''envir_class_name'']=''''; } } } $this->assign(''paging'',$paging); $this->assign(''results'',$results); $this->display(); } publicfunctionadds(){ $this->display(); } publicfunctionedit(){ $conditions[''id'']=I(''get.id''); $result=D(self::$ENVIR_IMAGE_MODEL)->getResultByConditions($conditions); $this->assign(''result'',$result); $this->display(); } publicfunctionadds(){ extract(generateRequestParamVars()); $conditions[''title'']=$title; if($this->field(''id'')->where($conditions)->find()){ thrownew\Exception(''名称已经存在!''); } try{ if(isset($image)&&$image){ $image=processMoveFilesFromTmpsToStorage($image); } }catch(\Exception$e){ thrownew\Exception(''FILE_PROCESS_FAIL''); } $data[''friend_id'']=$friend_id; $data[''title'']=$title; $data[''image'']=$image; $data[''price'']=$price; $data[''num'']=$num; $data[''link'']=$link; $data[''sort'']=$sort; $data[''status'']=1; $data[''create_time'']=time(); if(!$id=$this->add($data)){ thrownew\Exception(L(''OPERATION_FAILED'')); } } publicfunctionedit(){ extract(generatePostParamVars()); $conditions[''id'']=$id; if(!$result=$this->where($conditions)->find()){ thrownew\Exception(L(''NO_DATA'')); } //检查名称是否已经存在 $conditions=array(); $conditions[''id'']=array(''neq'',$id); $conditions[''title'']=$title; if($this->where($conditions)->find()){ thrownew\Exception(''{"errors":"名称已经存在!"}''); } try{ if(isset($image)&&$image){ $image=processMoveFilesFromTmpsToStorage($image,$result[''image'']); } }catch(\Exception$e){ thrownew\Exception(''FILE_PROCESS_FAIL''); } $conditions=array(); $conditions[''id'']=$id; $data[''friend_id'']=$friend_id; $data[''title'']=$title; $data[''image'']=$image; $data[''price'']=$price; $data[''num'']=$num; $data[''link'']=$link; $data[''sort'']=$sort; if($this->where($conditions)->save($data)===false){ thrownew\Exception(L(''OPERATION_FAILED'')); } } publicfunctiondele(){ extract(generateGetParamVars()); if(!$id){ thrownew\Exception(L(''MISSING_PARAMETER''));; } $conditions[''id'']=intval($id); if(!$result=$this->where($conditions)->find()){ thrownew\Exception(L(''NO_DATA'')); } if($this->where($conditions)->delete()===false){ thrownew\Exception(L(''OPERATION_FAILED'')); } processDeleFilesForContent($result[''image'']); processDeleFilesForContent($result[''desc'']); } publicfunctionlists(){ extract(generatePostParamVars()); if(isset($title)&&$title){ $conditions[''title'']=array(''like'',''%''.$title.''%''); } if(!$conditions){ $count=$this->count(); }else{ $count=$this->where($conditions)->count(); } if(!$numPerPage=I(''param.numPerPage'')){ $numPerPage=C(''NUM_PER_PAGE''); } $page=new\Think\Page($count,$numPerPage); $paging=$page->show_jui_paging_panel(); if(!$conditions){ $results=$this->order(''create_timedesc'')->limit($page->firstRow.'',''.$page->listRows)->select(); }else{ $results=$this->where($conditions)->order(''create_timedesc'')->limit($page->firstRow.'',''.$page->listRows)->select(); } returnarray($paging,$results); } 6.2.3轮播模块设计 中,、、、。具体的界面设计如图.15所示。.14。 图图程序代码设计: publicfunctionadds(){ extract(generatePostParamVars()); $conditions[''title'']=$title; if($this->field(''id'')->where($conditions)->find()){ } try{ //移动临时文件夹的图片到正式图片存储目录中 $image=processMoveFilesFromTmpsToStorage($image); $content=processMoveFilesFromTmpsToStorageForContent($content); }catch(\Exception$e){ thrownew\Exception(''FILE_PROCESS_FAIL''); } $data[''title'']=$title; $data[''image'']=$image; $data[''link'']=$link; $data[''sort'']=$sort; $data[''create_time'']=time(); if(!$this->add($data)){ thrownew\Exception(L(''OPERATION_FAILED'')); } } publicfunctionedit(){ extract(generatePostParamVars()); $conditions[''id'']=$id; if(!$result=$this->where($conditions)->find()){ thrownew\Exception(L(''NO_DATA'')); } //检查名称是否已经存在 $conditions=array(); $conditions[''id'']=array(''neq'',$id); $conditions[''title'']=$title; if($this->where($conditions)->find()){ thrownew\Exception(L(''标题已经存在!'')); } try{ //移动临时文件夹的图片到正式图片存储目录中 if(isset($image)&&$image){ $image=processMoveFilesFromTmpsToStorage($image,$result[''image'']); $content=processMoveFilesFromTmpsToStorageForContent($content,$result[''content'']); } }catch(\Exception$e){ thrownew\Exception(''FILE_PROCESS_FAIL''); } $conditions=array(); $conditions[''id'']=$id; $data[''title'']=$title; $data[''link'']=$link; $data[''sort'']=$sort; $data[''image'']=$image; $data[''create_time'']=time(); if($this->where($conditions)->save($data)===false){ thrownew\Exception(L(''OPERATION_FAILED'')); } } publicfunctiondele(){ extract(generateGetParamVars()); if(!$id){ thrownew\Exception(L(''MISSING_PARAMETER''));; } $conditions[''id'']=intval($id); if(!$result=$this->where($conditions)->find()){ thrownew\Exception(L(''NO_DATA'')); } if($this->where($conditions)->delete()===false){ thrownew\Exception(L(''OPERATION_FAILED'')); } processDeleFiles($result[''image'']); processDeleFilesForContent($result[''content'']); } publicfunctionlists(){ extract(generatePostParamVars()); if(isset($title)&&$title){ $conditions[''title'']=array(''like'',''%''.$title.''%''); } if(!$conditions){ $count=$this->count(); }else{ $count=$this->where($conditions)->count(); } if(!$numPerPage=I(''param.numPerPage'')){ $numPerPage=C(''NUM_PER_PAGE''); } $page=new\Think\Page($count,$numPerPage); $paging=$page->show_jui_paging_panel(); if(!$conditions){ $results=$this->order(''create_timedesc'')->limit($page->firstRow.'',''.$page->listRows)->select(); }else{ $results=$this->where($conditions)->order(''create_timedesc'')->limit($page->firstRow.'',''.$page->listRows)->select(); } returnarray($paging,$results); } 6.2.4friend大类管理模块设计Friend类的功能基本与envir相似,点击右上方添加按钮准确输入、、、、 Friend详情页的功能基本与envir详情页一致:点击右上方添加按钮选择类型、填写链接、、、。6.2.5personal管理模块设计 准确输入、、、、。 程序代码设计: personal详情页的功能基本与envir详情页一致:点击右上方添加按钮选择类型、填写链接、、、。 6.2.查看预约并修改预约状态 管理员可以查看预约的用户并修改预约状态包括,预约中,已完成这两个状态, 图界面 程序代码设计: publicfunctionindex(){ $this->display(); } publicfunctionlists(){ list($paging,$results)=D(self::$APPOINTMENT_MODEL)->lists(); for($i=0;$i $conditions2[''id'']=$results[$i][''client_id'']; $client=D(self::$CLIENT_MODEL)->getResultByConditions($conditions2); $results[$i][''client_name'']=$client[''name'']; $results[$i][''client_account'']=$client[''account'']; } for($i=0;$i $conditions3[''id'']=$results[$i][''shop_id'']; $client=D(self::$SHOP_MODEL)->getResultByConditions($conditions3); $results[$i][''appointment_address'']=$client[''address'']; $results[$i][''appointment_phone_fixed'']=$client[''phone_fixed'']; } $this->assign(''paging'',$paging); $this->assign(''results'',$results); $this->display(); } publicfunctionlists(){ extract(generatePostParamVars()); if(isset($title)&&$title){ $conditions[''title'']=array(''like'',''%''.$title.''%''); } $conditions[''status_cancel'']=0; if(!$conditions){ $count=$this->count(); }else{ $count=$this->where($conditions)->count(); } if(!$numPerPage=I(''param.numPerPage'')){ $numPerPage=C(''NUM_PER_PAGE''); } $page=new\Think\Page($count,$numPerPage); $paging=$page->show_jui_paging_panel(); if(!$conditions){ $results=$this->order(''create_timedesc'')->limit($page->firstRow.'',''.$page->listRows)->select(); }else{ $results=$this->where($conditions)->order(''create_timedesc'')->limit($page->firstRow.'',''.$page->listRows)->select(); } returnarray($paging,$results); } 7前端展示页 图7-1首页展示页 程序代码设计如下: publicfunctionindex(){ $home_page_sliders_image=D(self::$HOME_PAGE_SLIDERS_IMAGE_MODEL)->order(''sortdesc,create_timedesc'')->limit(''0,4'')->select(); $home_page_sliders_image_foot=D(self::$HOME_PAGE_SLIDERS_IMAGE_FOOT_MODEL)->order(''sortdesc,create_timedesc'')->limit(''0,4'')->select(); $envir_class=D(self::$ENVIR_CLASS_MODEL)->order(''create_timedesc'')->limit(''0,8'')->select(); $friend_class=D(self::$FRIEND_CLASS_MODEL)->order(''create_timedesc'')->limit(''0,8'')->select(); $personal_class=D(self::$PERSONAL_CLASS_MODEL)->order(''create_timedesc'')->limit(''0,8'')->select(); $this->assign(''home_page_sliders_image'',$home_page_sliders_image); $this->assign(''home_page_sliders_image_foot'',$home_page_sliders_image_foot); $this->assign(''envir_class'',$envir_class); $this->assign(''friend_class'',$friend_class); $this->assign(''personal_class'',$personal_class); $this->display(); } 图7-2产品详情页 程序代码设计如下: publicfunctionview2(){ $conditions=array(); $conditions[''id'']=I(''id''); $conditions_iamge[''friend_id'']=I(''id''); $friend_class=D(self::$FRIEND_CLASS_MODEL)->where($conditions)->find(); $friend_image=D(self::$FRIEND_IMAGE_MODEL)->where($conditions_iamge)->select(); $this->assign(''friend_class'',$friend_class); $this->assign(''friend_image'',$friend_image); $this->display(); } 图7-3购物车列表 程序代码设计如下: publicfunctionview(){ $conditions=array(); $conditions[''status_delete'']=0; $conditions[''status_available'']=1; $conditions[''phonenum'']=session(''client_account''); $car=D(self::$CAR_MODEL)->where($conditions)->select(); $this->assign(''car'',$car); $this->display(); } 图7-4客户详情页修改页面 程序代码设计如下: publicfunctioninfo(){ validateClientUnLoginRedirect(); $conditions[''id'']=session(''client_id''); $result=D(self::$CLIENT_MODEL)->getResultByConditions($conditions); $this->assign(''result'',$result); $this->display(); } publicfunctioninfo_do(){ try{ //validateUnLoginRedirect(); D(self::$CLIENT_MODEL)->info(); $ajaxReturnData[''status'']=1; $ajaxReturnData[''message'']=''注册成功''; }catch(\Exception$e){ $ajaxReturnData[''status'']=0; $ajaxReturnData[''message'']=''注册失败''.$e->getMessage(); } $this->ajaxReturn($ajaxReturnData); } publicfunctioninfo(){ extract(generateRequestParamVars()); $conditions=array(); $conditions[''id'']=intval(session(''client_id'')); $data[''name'']=$name; $data[''gender'']=$gender; $data[''s_province'']=strval(trim($s_province)); $data[''s_city'']=strval(trim($s_city)); $data[''s_county'']=strval(trim($s_county)); $data[''s_plance'']=strval(trim($s_plance)); if($this->where($conditions)->save($data)===false){ thrownew\Exception(L(''OPERATION_FAILED'')); } } 亲爱的 $account=session(''client_account''); $first_account=substr($account,0,3); $last_account=substr($account,8,3); echo$first_account.''''.$last_account; ?>,请填写完整的资料,便于我们与您联系哦! 用户名: 真实姓名: > 性别: >男 >女 地址: "> ? > ? ? > "> 保 存 我的订单 程序代码设计如下: publicfunctionindex(){ $this->display(); } publicfunctionCart(){ extract(generateRequestParamVars()); header("Cache-control:no-cache,no-store,must-revalidate"); header("Pragma:no-cache"); header("Expires:0"); $model=newModel(); $model->startTrans(); $flag=false; try{ validateUnLoginRedirect(); D(self::$PRODUCT_MODEL)->is_sale(); D(self::$SHOPING_CART_MODEL)->adds(); $ajaxReturnData[''statusCode'']=1; $ajaxReturnData[''message'']=''添加成功''; $ajaxReturnData[''callbackType'']=''closeCurrent''; $flag=true; }catch(\Exception$e){ $ajaxReturnData[''statusCode'']=0; $ajaxReturnData[''message'']=''添加失败''.$e->getMessage(); $flag=false; } if($flag){ $status=1; $model->commit(); }else{ $status=0; $model->rollback(); } $this->ajaxReturn($ajaxReturnData); } 8结束语通过这次毕业设计,我大致了解了在,(1) (2)在工作中,当遇到不懂的问题时,多与交流,从而提高自己。 (5)在程序编好后,断点便于你了解程序的运行情况,找出bug? 参考文献 .Java语言程序设计(第2版)[M].北京:清华大学出版社,2011. 丁宝康.数据库实用教程[M].北京:清华大学出版社,2001.孟强,曲秀清.软件工程-原理方法和应用[M].北京中国水利水电出版社2005. ?邹天思,孙鹏.?PHP从入门到精通[M].?北京:?清华大学出版社,?2008. (美)DavidCHay著孙学涛赵凯朱卫东译需求分析[M].北京清华大学出版社2004. 孔祥盛.PHP编程基础与实例教程[M].北京:人民邮电出版社,2011. W.JasonGilmore.PHP与MySQL5程序设计[M].人民邮电出版社,2007.4 刘永清肖忠东董安邦基于三层C/S、B/S集成的物流信息系统体系结构的研究[J].湖南科技大学学报(自然科学版)2005:86-89. 陈湘扬,陈国益.PHP5+MySQL网页系统开发设计[M].北京:电子工业出版社,2007. 郭宁杨一平编著软件工程实用教程[M]北京人民邮电出版社2006. [10]Bear?Bibeault,Yehuda?Katz.?jQuery实战[M].?人民邮电出版社,2010年2月. [11]李伟波刘永详王庆春主编.软件工程[M].武昌武汉大学出版社2006. [12]?Aaron.ProfessionalPHPDesignPatternsSaray[M].WROXPR/PEERINFORMATIONINC,2009.8 致谢 本次毕业设计是在崔坤鹏老师的精心指导和帮助下完成的。在这四个月的设计期间,崔坤鹏花费了大量的心血和汗水。我不仅领会到了面向对象软件工程的精髓所在,而且学会了thinkphp框架的运用。从刚开始面对需求分析的无从下手,到现在可以较好的完成这个项目,这期间的一点一滴都离不开崔老师的悉心指导。在此,谨向崔老师表示最深厚的感谢和最诚挚的敬意。 四年来,我所学的许多科学基础知识和专业知识以及实践经验,都离不开计算机专业各位老师对我的关心和帮助。今天,我不仅如期完成了大学学业,而且顺利找到了自己理想的工作,我深深地感谢计算机专业各位老师的支持和鼓励。 向四年来关心、爱护我的各位学校领导和辅导员老师表示感谢。 毕业在即,感谢与我生活了四年的同班同学。这四年来我们在学习和生活中互相帮助、互相关心、共同进步,我将友谊永远铭记于心。 最后,向生我养我的父母说一声,您们辛苦了。 1 30 I II V 浙江农林大学暨阳学院本科生毕业设计(论文) 2