《客户管理系统的设计与实现.pdf》由会员分享,可在线阅读,更多相关《客户管理系统的设计与实现.pdf(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、摘要面向管理者对客户管理系统的需求进行分析和设计的。第一步我 分析了现在客户管理系统中的缺点和问题,说明了客户管理系统开发 的必要性以及对客户管理系统的优化方向。通过我们上课学习的知 识、对数据库的理解、以及经常使用的工具等一切因素最终确定了系 统的开发平台。然后吸取自己写的需求分析和总体构思以及实现中遇 见的各种各样的问题,最终对自己做的系统做出了公正的评价,指出 了其中的意义和缺陷。关键词:客户管理;客户管理系统;客户信息系统;s sh框架;mvc集 合目录引言.1第一章需求分析.21.1项目背景.21.2管理项目要求.31.3客户属性分析.3第二章总体设计.42.1系统架构选择.42.2
2、系统使用的技术.52.3系统开发环境.8第三章数据库的设计.93.1数据模块设计.9第四章系统主要界面与主要功能的实现.134.1系统文件结构.134.2系统功能实现.15总结.37致谢.38参考文献.39引言互联网的出世和成长给世界带来了巨大的不一样,从古时候的 信鸽千里传书,到现在发一条信息,一秒都不到,几毫秒的时间就可 以接受到来至远方的信息。科学技术在发展,我们的日常生活在进步,网络已经覆盖我们的生活家园,我想我们离开了网络肯定会寸步难 行。以前的网站使用Php、html等方式,使这个网站里的逻辑部分 全部混乱的存在php、html页面里面,让人们看见页面代码一阵头晕 感,对而后的维护
3、修改造成了很大的障碍,想修改一些小东西,也要 害怕改了之后系统就会被破坏,代码功能从而不能够实现。我做的这个利用ssh框架制作的客户管理系统,让实现功能的 代码拥有层次感,很容易查找到具体功能实现的代码,dao对应服务,服务提交到控制,一层一层的,很有逻辑性,使后面维护更加方便,修改页面展示效果更便利,不会受到代码限制。跟数据库的链接更容 易,分解开来看让管理者使用起来更轻松。1第一章需求分析1.11.1项目背景项目背景而今众多的客户管理系统层出不重,各自有各自的特点优点,也存在一些小缺憾。目前管理者都希望管理系统的简单化、高效化以 及自动化,大多管理系统都比较复杂,不易操作,还有很多的问题,
4、延时,不能实时处理客户信息。我的项目是面于现在无时无刻的数据 化的时代,每天都有数不尽的数据流通,客户信息的多元化、共享化 让许多系统面临数据膨胀的考验。利用ssh框架,消除了许多html 页面的后台代码,让页面代码更加简洁易懂,容易修改,还实现的功 能的代码分别存放在不同的包下面,一个功能对应几个java文件,代码分解开来,使代码不再是乱七八糟的存放在一个文件里,一一对 应,易于理解。面临越来越信息化的世界,ssh带来的优势已经显而 易见,越来越多的管理系统运用到ssh框架,ssh框架的热潮已经势 不可挡,我最终也选择用ssh框架做我的管理系统。21.21.2管理项目要求管理项目要求满足用户
5、和管理者的需求是做一个项目的首要条件,每一个项 目的开始总是围绕者用户的需求开展的,如果做出来的东西无法满足 用户,那将是一个不合格的项目。用户对我做的系统的要求:如下(1)要求实现客户的基本信息显示。(2)要于数据库连接,实现对用户信息的增加、替换、消灭等功能。(3)必须具有安全性,避免客户信息泄露,有数据库验证,不是管理 账户进不去。(4)操作要简单方便,管理合乎情理,容易维护。(5)数据要及时以及自动化。1.31.3客户属性分析客户属性分析登陆账户:登陆系统的账号和密码,验证登陆。管理者:对客户进行管理,拥有对客户操作的权限。客户:本身有特定属性,被管理者管理,查看信息。3第二章总体设计
6、2.12.1系统架构选择系统架构选择我做的系统是用SpringMVC的三层架构制作的,MVC的解释是:M她就是MODEL的缩写,V她是VIEW的缩写,C她是CONTROLLER的缩 写。mvc的作用就是实现网站系统的工作分配,提高系统的效率。这 中间最重要的逻辑想法我是用J AVABEAN来实现;V层用于跟用户的交 流,就是显示页面,给用户观看,我使用J SP制作;C层,也是控制 层,主要是让前面的M和V层连接,让用户通过请求给他对应的页面 看,让用户输入然后提交到控制进行操作。MVC的优点就是不用安装 专门的软件,什么地方都可以操作,没有限制。三层架构图:如下三层架构就是让客户端看见的页面通
7、过服务器验证后把数据从数据 库中取出来,然后返回给客户端的页面。图中客户端对应的是界面层,服务器对应的是逻辑层,数据库对应的就是数据层,三层结合在一起,就构成了系统的数据交互。42.22.2系统使用的技术系统使用的技术我的客户管理系统是在J AVAEE开发平台结合web的ssh框架 和jsp技术以及javascript等完成的。2.2.1 JAVAEE 2.2.1 JAVAEE 介绍介绍J AVAEE就是J AVA平台的企业版。其中所包含的各种组件、服务架构、技术层次,都有规定的准 则,使得所有遵循J AVAEE架构的平台之间存在很好的兼容性,解决 了以前代码与信息的不兼容,内外部无法相互交通
8、的尴尬局面。J AVAEE的延伸性、可维护性、灵活性为了管理系统规范好了很好的 管理制度。J AVAEE对J AVA组件的规则:客户端浏览器以及应用是客户组 件;J Sp和jaVa服务是服务端的weB组件;jaVa bEaN是服务端的作 用组件;各个组件对着不相同的作用,造成了一个高楼式的构层。她 的结构如下:(1)客户层:客户端的应用程序。(2)页面层:客户显示的J Sp页面。(3)逻辑层:J ava bean的逻辑代码。(4)数据层:连接系统的数据库,处理系统的数据信息。562.2.2 SSH 2.2.2 SSH 框架框架SSH是由STRUTS2、HIBERNATE、SPRING三个框架联
9、合在一起的 一种崭新的框架,是如今较优良的框架。(1)STRUTS2STRUTS2就是以前的老版本和WEBWORK凑合在一起,更为优秀 的崭新框架。尽管STRUTS2是在老版本的基础上创造出来的,然而她 们在思想方面上却存在着迥异。STRUTS2是使用WEBWORK做为自己的 核心,运用拦截报错的方式来接受客户的恳请。STRUTS2主要负责页 面展示层,就是用来接受客户在她的页面表单上提交的数据,而后使 用行为对数据处理,再发表到相应的页面上去。(2)HIBERNATEHIBERNATE是一类开放性的相应联系映射框架,她对数据库运 用了小型的包装封存,使得我们能够运用面向对象的想法对数据库进
10、行功能修改实现。她还是GAVIN KING造出来的一款最火热的。RM 框架,给我们展示了 J AVA类与数据库中间的对应关系,极大程度上 消减了对数据库的操作量,还能够在其他地点都可以使用数据库,比 如说客户端和WEB应用里。HIBERNATE对应着常量层,使用于实现数据库的一些基本操作 功能,对着的有P。包里获取的常量对象,是从数据库中对应的表里 所包进去的字段呼应的,最后就是写出数据库的接口,就是在数据库 中对数据操作的命令代码。7SPRINGSPRING是一类多层的框架,以控制反转的思想方法和面对斜 面编程的解决方式为内部核心,使用J AVABEAN取代了以前颓胖、低 效率的EJ B。在
11、开发过程里,使用到了三层架构,分别是页面表现层,逻辑代码思想层、常量层。SPRING作用就是对服务层进行管理,服务就是向行为提供统一 的端口,把数据库的接口包封进去,从而可以使用,对J AVABEAN和事 件处理。2.2.3 AJAX 2.2.3 AJAX 技术技术AJ AX 的核心是 J AVASCRIPTS 的对象 XMLHTTPREQUESTo 使用它,咱们就可以不用重新刷新整个页面就可以更新小部分的页面和服务 器的数据。而且不需要什么插件,只需要允许J AVASCRIPTS在浏览器 运行就可以。2.32.3系统开发环境系统开发环境开发电脑系统:Windows 10专业版服务器:tomc
12、at 8.0开发环境:J DK 1.8开发语音:J AVA语言开发工具:eclipse 4.7.0数据库:MySQL 5.7.178第三章数据库的设计3.13.1数据模块设计数据模块设计我的数据库名字是mj,数据库中创建了四张表,分别是Mj_customerMj_user、Root_customer、Mj_dicto3.1.13.1.1数据模块数据模块E-RE-R图图依据我对数据模块的分析和理解,把数据模块分为三个实体:管理员、客户、操作系统;E-R图如下:3.1.23.1.2数据模块的逻辑设计数据模块的逻辑设计(1)关系模式实体设计大部分是依据上面的E-R图中的属性,其中包含客户 基本信息、
13、管理登陆账号、管理员信息。Mj_customer(cust_id,oust name,cust_user_id,cust_create_id,cust_soure,cust_industry,cust_level,cust_linkman,cust_phone,cust_mobile,cust_zipcode,custaddress,custcreatetime)Root_customer(id,username,jobs,phone)Mj_user(user id,user code,user name,user password,user_stack)还有用于关联查询的关联表:Mj_dic
14、t(dict_id,diettypecode,di ettypename,dict_item_name,dict_item_code,dict_sort,dict_enabled,di ct_memo)3.1.33.1.3数据字典数据字典(1)客户基本信息表(mj_customer)这张表主要记录客户的信息,是整个数据库中最重要的一张表,其表 字段如下:10序号标识属性类型是否主键是否外键备注1表IDCust_idint是否唯一2客户名称Cust_namevarchar否否3用户IDCust_user_idvarchar否是4创建IDCust_create_idvarchar否是5客户来源Cu
15、st_sourcevarchar否否6所属行业Cust_industryvarchar否否7客户级别Cust_levelvarchar否否8联系人Cust_linkmanvarchar否否9固定电话Cust_phonevarchar否否10移动电话Cust_mobilevarchar否否11邮政编码Cust_zipcodevarchar否否12联系地址Cust_addressvarchar否否13创建时间Cust_createtimevarchar否否(2)管理员信息表(Root_customer)此表用来存放管理员的信息,是数据库里挺重要的表。表字段:序号标识属性类型是否主键是否外键备注1表
16、IDidint是否唯一2姓名usernamevarchar否否3职位jobsvarchar否否4电话号码phonevarchar否否U(3)管理登陆账号表(Mj_user)本表储存者系统的登陆账号和密码,也可以在这里面添加账号,用于给其他管理者登陆,验证登陆的一张表,表字段往下看:序号标识属性类型是否主键是否外键备注1表IDUser_idint是否唯一2管理角色User_codevarchar否否3管理账号User_namevarchar否否4管理密码User_passwordvarchar否否5管理状态User_statevarchar否否(4)客户重要信息表(Mj_dict)本表用于联合查
17、询,是代码实现功能最难的一张表,显示客户的来源、级别和行业。表字段在下面:序号标识属性类型是否主键是否外键备注1表IDDict_idint是否唯一2角色类型Dict_type_codevarchar否否3账号类型Dict_type_namevarchar否否4项目名称Dict_item_namevarchar否否5项目代码Dict_item_codevarchar否否6序列号Dict_sortint否否7是否启用Dict_enablevarchar否否8备注Dict_memovarchar否否12 第四章系统主要界面与主要功能的实现整个系统的实现是通过很多步骤,把一个仅仅只是一个纸上谈 兵的模
18、型做成一个完整的系统,其中的辛苦我就不一一细说了。下面 是说明我的系统如何实现其功能的:4.14.1系统文件结构系统文件结构系统文件结构式就是对整个系统中的文件进行解释说明,列取 出所有相关文件,这些文件结构一目了然,彼此之间拥有一定的联络,造成了一个集合性很强的整体,因此促使我完成了我的客户信息管 理系统。文件说明如下:文件名称文件说明Login,jsp系统的登陆贞面Zhuce.jsp系统的注册账号页面Success,jsp注册成功史fflError,jsp注册失败史fflCustomer,jsp系统主贞血Images 包所用到的图片J s包J AVASCRIPTS 代码Css包所用到的样式
19、Lib包系统依赖的架包appli cat ionContext.xmlSpring配置文件13db.properties数据库常量配置文件log4j.propertieslog4j配置文件mybat i s-conf i g.xmlMyBatis的配置文件resource,properties资源配置文件springmvc-conf ig.xmlSpring MVC的配置文件mon,utils分页工具类com.itheima.core,daoDAO接口和MyBatis映射文件com.itheima.core,interceptor自定义拦截器com.itheima.core,po持久化类com
20、.itheima.core,service服务层接口com.itheima.core,service,impl服务层接口实现类com.itheima.core.web.controller控制类项目文件结构图如下:泾 boot-crm corn mon.utik t由 com.itheima.core.dao-t e ccm.itheima.core.interceptor.-f 毋 com.itheima.core.po v-分页工具类DAD接口度MyBatis映射文件自定义七截器持久化类1田 ccm.itheima.core.service 由 com.itheima.core.seice
21、.iiripl._ 由 ccm.itheima.core.web.controller-4 泮 config.x applicationContext.xml-=db.properties-4-邕 Iog4j.properties&css-CSS文件|0 fonts-0 images*-囹片A队jm-j文件b META-INF4 跄 WEB-INFJ 玲 J&P周customer.jsp,一客户列表页面固login.jsp&lib-系统JAR包J B tld_,!commons.tld分页标签文件囱web.xml-0)(i 0)return return success;success;els
22、ereturn elsereturn error;error;注册页面:注册账号4.2.34.2.3查询客户功能查询客户功能查询客户功能主要是对客户信息表进行查询,然后在主页面显 示出来,CustomerDao.xml文件中有进行数据查询的语句:SELECTcust_id,cust_namejcust_user_id.,b.dict_item_name cust_source,c.dict_item_name cust_industry,d.dict_item_name cust_level,cust_linkmaiijcust_phone,cust_mobilejSELECTcust_id,
23、cust_namejcust_user_id.,b.dict_item_name cust_source,c.dict_item_name cust_industry,d.dict_item_name cust_level,cust_linkmaiijcust_phone,cust_mobilej18 cust_ c reat etimeFROM customer aLEFT JOIN(SELECTdieted,dict_ item_ nameFROMbase_ dict WHEREdict_ type_ code=002 )b ON a.cust_ source=b.dict_ idLEFT
24、 JOIN(SELECTdict_ idj dict_ item_ nameFROMbase_ dict WHEREdict_ type_ code=001)c ON a.cust_ industry=c.dict_ idLEFT JOIN(SELECTdict_ idj dict_ item_ nameFROMbase_ dict WHEREdict_ type_ code=006)d ON a.cust_ level=d.dict_ id19 这个语句是本系统最重要的一条语句,用于显示客户信息,其中含有 联合查询等等,相当复杂。然后创建DAO接口,服务接口,然后实现服务接口类,最后控制类调
25、 用。查询客户信息功能的代码如下:RequestMapping(value=/customer/list.action)public String list(RequestParam(defaultValue=l)Integer page,RequestParam(defaultValue=1 0)Integer rowsString custName String custSource,String custlndustry,String custLevel4 Model model)Page customers=customerservice findCustomerListCpagej
26、rows,custNamecustSource,custlndustry,custLevel);model addAttribute(pagecustomers);List fromType=baseDictService findBaseDictByTypeCode(FROM_ TYPE);List industryType=baseDictService.findBaseDictByTypeCode(INDUSTRY_ TYPE);List levelType=baseDictService.findBaseDictByTypeCode(LEVEL_ TYPE);model.addAttr
27、ibute(fromTypej fromType);modeladdAttribute(industryType industryType);model.addAttribute(levelType3 levelType);20modelmodel.addAttribute(.addAttribute(custNamecustName,custName);model.custName);model.addAttaddAttribute(custribute(custSource,Source,custSource);model.custSource);model.addAtt addAtt r
28、ibute(cust ribute(cust Indus try.,Indus try.,cust Industry)cust Industry);modelmodel.addAttribute(.addAttribute(custLevelcustLevel,custLevel);custLevel);return return ncustomerncustomer;页面效果:喜户信息列表编号客户名称客户来源客户所属行业客户级别固定电话手机操作2mJ1074S6203mjj123T2 34lo4444445a1101106张三1&213SIM EH7王五1231238110110110Qqq
29、q7777771 1pp140140124.2.44.2.4添加客户功能添加客户功能添加客户功能主要是往客户信息表进行添加数据,CustomerDao.xml文件中有进行数据添加的语句:insert into customer(cust_name,cust_user_id,cust_cpeate_id,insert into customer(cust_name,cust_user_id,cust_cpeate_id,21cust_ source,cust_ industry,cust_ level_,cust_ linkman,cust_ phone4cust_ mobile_,cust_
30、zipcodejcust_ address,cust_ cneatetime)values(#cust_ name,#cust_ user_ id,#cust_ create_ id#(cust_ source#cust_ industryj#(cust_ levelj#cust_ linkman#cust_ phonej#cust_ mobile,#cust_ zipcodej#cust_ addpess#cust_ createtime)添加客户功能的代码如下:RequestMapping(/customer/create.action)ResponseBodypublic String
31、customerCreate(Customer customerHttpSession session)22User user=(User)session.getAttribute(USER_ SESSION);customer.setCust_ create_ id(user.getUser_ id();Date date=new new Date();Timestamp timestamp=new new Timestamp(date.getTime();customer.setCust_ cneat et ime(t imeSt amp);int int rows=customerser
32、vice.createCustomer(customer);if(rows 0)return return”0K”;elsereturn elsereturn FAIL”;功能展示:23新建客户号息吝户名符吝户名称关闭创建客户4.2.54.2.5修改客户信息功能修改客户信息功能修改客户信息功能主要是在客户信息表进行修改数据,CustomerDao.xml文件中有进行数据修改的语句:update customerupdate customerif cost namef=nuLLMcust_name=#cust_name,cust_name=#cust_name,24cust_ userid=#c
33、ust_ user_ idi,cust_ c neat e_ id=#cust_ c reate_ idjcust_ source=#cust_ source,cust_ industry=#cust_ industryjcust_ level=#cust_ leveljcust_ linkman=#cust_ linkmanjcust_ phone=#cust johoneJjcust_ mobile=#cust_ mobile,cust_ zipcode=#cust_ zipcodejcust_ address=#cust_ addressj25 cust_ createtime=#cus
34、t_ createtime-4where cust_ id=#c ust_ id修改客户信息功能的代码如下:RequestMapping(/customer/update.action)ResponseBodypublic public String customerUpdate(Customer customer)int int rows=customerservice.updateCustomer(customer);if(rows 0)return return”0K”;else(return else(return FAIL;页面展示:26修改客户号息客户名称mj关闭保存修改4.2.6
35、4.2.6删除客户功能删除客户功能删除客户功能主要是在客户信息表进行删除数据,CustomerDao.xml文件中有进行数据删除的语句:delete from customer where cust_id=#iddelete from customer where cust_id=#id删除客户功能的代码如下:27RequestMapping(/customer/delete.action)ResponseBodypublic public String customerDelete(Integer id)int int rows=customerservice.deleteCustomer(
36、id);if(rows 0)(return return”0K”;else(return else(return nFAIL;功能展木:编号客户名称容户来源客户所属行北 客户慢别固定电话手机揉作2mj107491203mjjlocalhost:8080 显示:1231234lo确实要!除该客户药?4444445a1101106张三-1521367王五12312381 1 01101109qqq7777771 1pp1401401 24.2.74.2.7模糊查询客户功能模糊查询客户功能模糊查询客户功能主要是在客户信息表进行模糊查询,CustomerDao.xml文件中有进行模糊查询的语句:cus
37、t_ name like%”#cust_ name%and cust_ source=#cust_ source28 and cust_ industr=#cust_ industryand cust_ level=#cust_ level模糊查询客户功能的代码如下:RequestMapping(/customer/getCustomerByld.action)ResponseBodypublic public Customer getCustomerById(Integer id)Customer customer=customerservice.getCustomerByld(id);re
38、turn return customer;效果展示:客户名称m 客户来海一清迭择一*所属行业一请醇一 客户缓别一请选择一-客户信息哄新建军号客户名称客户来源客户所属行业客户级别冒定电话手机操作2107491203123123首页上-页.下-页尾页4.2.84.2.8分页显示功能分页显示功能分页显示功能实现的代码:public int public int doStartTag()throws throws JspException 29DspWriter writer=pageContext.getOut();HttpServletRequest request=(HttpServletReq
39、uest)pageContext,getRequest();Page page=(Page)request.getAttribute(bean);if if(page(page=null)return null)return SKIP_BWY;SKIP_BWY;url=resolveUrlCurlj pageContext);try try /计算总页数int int pageCount=page.getTotal()/page.getSize();if(page.getTotal()%page.getSize()0)pageCount+;writer.print();String homeU
40、rl=append(url_,page,1);String backUrl=append(urlj pagej pageCount);if(page.getPage()1)String preUrl=append(url,page”,page.getPage()-1);preUrl=append(preUrl,rows,page.getSize();writer.print(,+首页);writer.print(a href=+preUrl+上一页);else else writer.print(+首页);writer.print(+上一页);30 int int indexPage=1;if
41、(page.getPage()-2=0)indexPage=l;else if(pageCount-page.getPage()=2)indexPage=pageCount-4;else(else(indexPage=page.getPage()-2;for(int for(int i=l;i=number&indexPage=pageCount;indexPage+Ji+)if if(indexPage=page.getPage()writer.print(+indexPage+);continue;continue;String pagellrl=append(urlj page,inde
42、xPage);pagellrl=appendCpageUrl rows”,page.getSize();writer.print(lixa href=+pageUrl+indexPage+);if(page.getPage()pageCount)String nextUrl=append(urlj page,page.getPage()+1);nextUrl=append(nextUrlj rows”,page.get Size。);writer.print(a href=+nextUrl+下一页);writer.print(a href=+backUrl+尾页);else else writ
43、er.print(+下一页);writer.print(+尾页);writer.print();catch catch(lOException e)31e.printStackTrace();return return SKIP_BODY;SKIP_BODY;private private String append(String url4 String key,int int value)return return append(urlj key,String.vatueOf(value);private String append(String url String key,String
44、value)if if(url=null null|url.trim().length()=0)0)returnreturnif if(url.indexOf(,?n)=-1)url=url+?n+key+”=”+value;else else if(url.endsWith(n?n)url=url+key+”=”+value;else else url=url+Ramp;+key+=+value;return return url;private private String resolveUrl(String url,javax.servlet.jsp.PageContext pageCo
45、ntext)throws throws JspException Map params=pageContext.getRequest().getParameterMap();for for(Object key:params.keySet()if(page.equals(key)|rows.equals(key)continue;continue;32Object value=params.get(key);if(value=null)continue;continue;if(value.getClass().isArray()url=append(url,key.toString(),(St
46、ring)value)。);else if else if(value instanceof instanceof String)url=append(urlkey.toString(),value.toString();return return url;url;public public String getBean()return return bean;public void public void setBean(String bean)this.bean=bean;public public String getUrl()return return url;url;public v
47、oid public void setUrl(String url)this.url=url;public void public void setNumber(int setNumber(int number)number)this.number=number;33效果图示:客户信息列表编号客户名称客株源客户所属行业客户场固定电话莉操作2呵107491203mjj1231234lo4444445a1101106张三1521367王五123123811011。1109qqq77777711PP1dQ14012首瓦上-页n|2 下一责尾页吝户信息列衰编号 客户名称 客户来源 客户所属行亚13 a
48、aa14 qqq容户级别 囹定电话 手机 操作aaa aaaqq qq首页上一页34|下一页新总结经过无数个日日夜夜的努力,我终于在指导老师杨勇的辛勤教 导下完成了这个比较满意的客户系统。期间遇到了各种各样的问题,我一度想要放弃,但是我还是坚持了下来,改正解决了一系列的问题,让我对mvc的三层架构愈加理解深透,对ssh框架又多了几分认识,对数据库也有了一定的操作熟练度,使我的专业能力又上了一个阶 层。以前上课还迷迷糊糊,似懂非懂的知识,现在已经可以融会贯通 了,这是一个很好的学习机会,也是一个体验我们是否有资格从学校 进入社会的一项测试。35致谢我的客户管理系统能够完成,其中最大的功臣就要数我
49、的指导 老师一一杨勇老师,感谢他为了我的毕业设计出的每一分力,我由衷 的感谢,想想他上课时对我们的严格要求是为了我们好,让我可以完 成这个管理系统,不然我一个功能也做不来,当初还嫌他管得太宽了,如今想想是自己太幼稚了。我还要感谢我们的学校,学校让我们有了 学习的机会和环境,让我不成为对社会没有一丝贡献的蛀虫,让我学 会了如何人际交往,如何通力合作,习得一技之长。最后我想感谢我 自己,感谢自己的努力,让自己面临毕业,不在迷惘,有了一定的目 标,也有信心朝者这个目标前进。36参考文献1 传智博客高教产品研发部.SSH框架整合实战教程.清华大学出版 社,2016.2 张译娜.J avaScripts实战.清华大学出版社,2014.3 高树芳.软件工程(第五版).大连理工大学出版社,20144 明日科技.J AVA从入门到精通(第三版).清华大学出版社.20125 前沿科技 温谦.HTML+CSS网页设计与布局从入门到精通.人民邮 电出版社,20086 邹新裕.PhotsshopCSS案例教程.上海交通大学出版社.201437
限制150内