• 1.47 MB
  • 2022-05-14 15:45:07 发布

《客户管理系统》毕业设计论文

  • 38页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
客户管理系统学院专业班级学号姓名指导教师教师职称年月日–33– 摘要【摘要】本文介绍了如何使用JSP开发一个客户关系管理系统,目的在于让大家共同学习和运用这一语言的体会和收获。本系统是Intranet环境下面的电子商务的客户关系管理,通过企业管理技术、电子商务和信息技术的高度集成,帮助企业在全球经济一体化的激烈市场竞争环境中,建立以市场、客户为中心的管理体系,有效管理企业与客户之间的关系,提高客户忠诚度,实现客户价值的最大化。从而提高企业的核心竞争力。企业要想生存发展,就必须与与之息息相关的客户建立起良好的关系,不断发展新客户,以企业高质量的产品、优质的服务、良好的资信吸引新客户;经常维系与老客户的关系,以规范的客户管理方式、温馨的客户关怀、高效的客户服务来提升老客户的忠诚度。由此,客户管理系统应运而生。【关键词】Struts框架、Struts框架的工作原理、样式层、持久层、服务层、控制层。–33– 目录摘要10引言11系统分析21.1需求分析21.2可行性分析22总体设计22.1项目规划22.2系统功能结构图33系统设计33.1设计目标33.2开发及运行环境43.3数据库设计44网站总体架构51系统架构设计53.6.2文件架构63.6.3网站首页的运行结果93.6.4类的分布125基础信息维护模块设计135.1工具层的实现135.2样式层的实现175.3持久层的实现185.4服务层的实现2010小结27附录一参考文献28附录二数据表31附录三文件架构图33–33– 0引言客户资源决定企业的核心竞争力。任何一家企业,有钱就可以买到最好的设备、尖端的技术,但却买不到强大的客户资源。面对着竞争对手不断截留我们的客户,各企业商家所关心的不再局限于自身的产品质量、生产设备、员工的素质,更多的是关心自己的销售群体(客户群),关心他们的想法、需求、购买目的,并与客户建立好良好的、长期的客户关系,强化与客户的沟通,帮助企业留住老客户的同时,更好地拓展新客户,提升客户价值,从而全面提升企业竞争能力和盈利能力,为企业的发展壮大保驾护航。–33– 1系统分析1.1需求分析通过调查研究,要求系统满足以下功能:q由于操作人员的计算机知识水平有限,要求有良好的人机界面,可以很简单方便的管理各种客户信息。q方便的数据查询功能。q管理客户的详细信息:包括客户的基本信息、联系人信息、业务来往信息等。q为更多地了解客户的需求,应设置客户服务模块,用以记录客户的反馈信息及投诉信息,并对反馈信息及投诉信息进行图表分析。q与客户联系人之间通过邮件(E-mail)进行联系,对联系人邮箱地址进行管理。q提供各种信息列表的打印功能,并可实现客户信封打印。q在相应的权限下,可以删除或修改数据。1.2可行性分析目前,大多数企业内部的客户管理还处于手工管理阶段,工作起来效率很低,不能及时了解各类客户的实际情况,也无法快速地进行客户信息的查询等操作;不便于动态及时地了解客户的需求及反馈信息,致使企业不能更好地适应当前经济形势发展的需要。手工管理还存在着许多弊端,由于不可避免的人为因素,经常造成数据的遗漏、误报。计算机信息化管理有着储存信息量大、速度快等许多优点,提供给用户的处理信息及时、准确、快捷,同时也能提高企业员工的自身素质。2总体设计2.1项目规划客户管理系统是一个典型的数据库开发应用程序,由基础信息维护、客户信息维护、客户服务、信息查询、客户管理、辅助工具、系统管理7部分组成。q基础信息维护该模块主要是对客户的企业类型、企业性质、客户银行、企业资信、客户级别、客户满意程度、区域信息等一些基础信息进行设置。q客户信息维护该模块主要是对客户信息、联系人信息、业务来往等一些客户信息进行添加及维护操作的功能。q客户服务该模块主要是对客户反馈信息及客户投诉信息进行添加、删除等操作,同时对反馈及投拆的数据以图表的形式加以分析。q信息查询该模块主要实现对客户信息、联系人信息等各种信息的查询,同时可对国内的各大城市的区号及邮编进行查询。–33– q数据管理该模块主要实现各种数据的打印操作,主要包括:客户信封打印、客户信息打印、联系人信息打印及全国各省份的邮编信息的打印。q系统管理访模块主要实现对操作员、操作员权限进行设置及修改的操作,主要包括操作员设置、密码修改、权限设置、退出4个部分。q辅助工具该模块主要为用户提供一些辅助的工具,包括调用Word、调用Excel、发送邮件、计算器及工作业务备忘录。2.2系统功能结构图图1客户管理系统功能结构图–33– 3系统设计3.1设计目标本系统是针对中小型企业客户管理现状,通过网络实现对客户的管理,主要实现如下目标:q对客户信息(客户基本信息、联系人信息、业务来往信息)进行全面管理。q及时查看库存信息,并通过网站对入库、出库信息进行管理。q强大的客户信息、联系人信息报表打印功能及客户信封打印功能。q及时了解客户的反馈信息及投诉信息,并以图表形式对数据进行分析。q实现各种信息查询功能。q实现了直接通过网络拨打用户电话及发送E-mail。q对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。q操作员可以随时修改自己的口令。q数据保密性强,为每个用户设置相应的权限级别。q提供辅助工具,方便用户操作及使用。q系统运行稳定、安全可靠。3.2开发及运行环境硬件平台:qCPU:P41.8GHz;q内存:256MB以上。软件平台:q操作系统:Windows2000;q数据库:SQLServer2000;q开发工具包:JDKVersion1.4.2;qJSP服务器:Tomcat;q浏览器:IE5.0,推荐使用IE6.0;q分辨率:最佳效果1024×768。3.3数据库设计本系统数据库采用SQLServer2000数据库,系统数据库名称为db_Client。数据库db_Client中包含18张表。关于数据库中的数据表请参见附录B4网站总体架构1系统架构设计在编写代码之前,可以先把网站中可能用到的文件夹创建出来(例如:创建一个名为image的文件夹,用于保存网站中需要的图片),这样可以方便以后的开发工作,也可以规范网站的整体架构,我在开发客户管理系统时,首先设计了如图3所示的文件夹架构图。在开发时只需要将文件保存在相应的文件夹中就可以了,非常方便。–33– 2网站首页的运行结果当管理员在进入客户管理系统后,首先进入客户管理系统的大厅,也就是客户管理系统的首页。客户管理系统首页包含基础信息维护、客户信息维护、客户服务、信息查询、数据管理、辅助工具以及系统管理的超链接。客户管理系统网站首页的运行结果如图4所示。231图4网站首页运行结果网站框架说明如表1所示:表1网站首页页面说明区域名称说明对应文件1网站导航主要展示网站的旗帜广告和站内导航条top.jsp2功能模块主要用于显示导航模块中的功能information.jsp3内容显示主要用于显示功能模块中的内容right.jsp整个网站利用到jsp中的一个框架,框架由名称分别为top、left和main的3个jsp页面组成的,然后利用html代码在index.jsp(和WEB-INF同级目录中)页面中组合起来。代码如下:/***********************************index.jsp***************************************/–33– 客户管理系统主页面<body></body>区域top所对应的jsp页面(top.jsp,在jsp文件夹)的代码如下:/***********************************top.jsp***************************************/客户管理系统

基础信息维护 客户信息维护 客户服务 信息查询 数据管理 辅助工具 

区域left所对应的jsp页面(information.jsp,在jsp/information/information.jsp文件夹)的代码如下:/***********************************information.jsp*********************************/企业类型设置企业性质设置–33– 客户银行设置企业资信设置客户级别设置    客户满意程度设置区域信息设置 
区域main所对应的jsp页面(right.jsp,在jsp文件夹)的代码如下:/***********************************right.jsp***************************************/<%@pagecontentType="text/html;charset=gb2312"%>右页面

 

 

 

 

–33–  3类的分布整个网站的实现功能利用到的框架Struts,基本上是以“类”的形式实现的。所以我设计一个类的分布图如下:图5类的分布图各个类所实现的功能如表2所示。表2类的功能名称功能持久层(dao文件夹)各种方法的实现样式层(domain文件夹)所存放的类是Actionform类,在类中必须要继承ActionForm(也就是entendsActionForm)服务层(server文件夹)存放的dao层功能的业务的类控制层(webtier文件夹)存放在jsp页面中存在的方法实现的类工具层(tool文件夹)类名为JDBConnection.java(连接数据库的功能)、类名为Chinese.java(字符级转换的类)、文件名为sqlSQLCode、Properties(主要存放sql语句)、SQLCode.java(主要是解析sqlSQLCode.Properties中的sql语句中的?)5基础信息维护模块设计基础信息维护主要功能块分为:区域信息设置、企业性质设置、企业类型设置、企业资信设置、客户级别设置、客户满意程度设置和客户银行设置。在这里单击任何一个功能模块都是一个查询功能。这些功能块的实现方法基本相同,下面以“企业类型设置”功能模块为例,详细介绍其通过MVC框架所实现的功能。单击“企业类型设置”–33– 超链接,即可进入到企业类型设置页。在该页中可以看到企业类型的各种详细功能,包括对数据的添加、修改、删除功能。下面就分层介绍各种功能的实现。5.1工具层的实现在工具层(tool文件夹)中主要存放的是常用的基本类,在这里不管任何一项功能都要调用相对应的类的方法。1.Chinese.java类(字符级转换的类)/*******************************Chinese.java*************************************/packagecom.tool;importjava.io.UnsupportedEncodingException;publicclassChinese{//将从form表单中去出的数据转换为汉字publicstaticStringstr(Stringa){try{returnnewString(a.getBytes("ISO-8859-1"));}catch(UnsupportedEncodingExceptione){e.printStackTrace();}returnnull;}}2.sqlCode.properties文件(sql语句的存放位置)/*******************************sqlCode.properties**********************************/#--基础信息维护--##--对区域信息表的操作(tb_Client_qyxx)--##--查询的操作—sql.qyxx.select=select*fromtb_Client_qyxx#--插入的操作—sql.qyxx.insert=insertintotb_Client_qyxxvalues("?","?","?","?","?","?")3.SQLCode.java类(通过这个类解析properties文件中的sql语句)/********************************SQLCode.java***********************************/packagecom.tool;publicfinalclassSQLCode{privatestaticSQLCodesqlCode=null;privatestaticjava.util.PropertiessqlCodeProperties=newjava.util.Properties();static{sqlCode=newSQLCode();}privateSQLCode(){_load();}publicstaticStringgetSQLCode(StringsqlKey){Stringsql="";if(sqlCodeProperties.containsKey(sqlKey)){sql=sqlCodeProperties.getProperty(sqlKey);}–33– returnsql;}publicstaticSQLCodegetInstance(){returnsqlCode;}//指向sqlcode.properties的位置publicvoid_load(){StringfileName="/com/tool/sqlCode.properties";//通过指定路径找到资源文件存放在fileName中sqlCodeProperties.clear();//SqlCodeProperties清空try{java.io.InputStreamin=null;//定义输出流的变量try{in=getClass().getResourceAsStream(fileName);//把fileName中存放值放入in字符流中sqlCodeProperties.load(in);}finally{in.close();}}catch(java.io.IOExceptione){System.out.println(e.getMessage());}}}4.JDBConnction.java(这是个JDBC的类,用于加载数据库)/*******************************JDBConnection.java********************************/packagecom.tool;importjava.sql.DriverManager;importjava.sql.Connection;importjava.sql.SQLException;importjava.sql.ResultSet;importjava.sql.Statement;//这是一个工具类实现与数据库的连接publicclassJDBConnection{Stringsd="sun.jdbc.odbc.JdbcOdbcDriver";Stringsc="jdbc:odbc:db_Client";ResultSetrs=null;Connectionconect=null;publicJDBConnection(){try{Class.forName(sd);//通过构造方法加载对象}catch(java.lang.ClassNotFoundExceptione){System.err.println(e.getMessage());}}//只能执行查询的sql语句,并且通过Resulit类型的对象,把所读取的内容返回。publicResultSetexecuteQuery(Stringsql){–33– try{conect=DriverManager.getConnection(sc);Statementstmt=conect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);rs=stmt.executeQuery(sql);}catch(SQLExceptionex){System.err.println(ex.getMessage());}returnrs;}publicintexecuteUpdate(Stringsql){//能够执行修改。删除和插入的sql语句。intresult=0;try{conect=DriverManager.getConnection(sc);Statementstmt=conect.createStatement();result=stmt.executeUpdate(sql);}catch(SQLExceptioner){System.err.println(er.getMessage());}returnresult;}publicvoidclose(){//数据库连接关闭的方法try{if(conect!=null){conect.close();}}catch(Exceptione){System.out.println(e);}}publicvoidsetAutoCommit(booleanflag){//设置自动提交的方法try{conect.setAutoCommit(flag);}catch(Exceptionexception){System.out.println("ExceptioninsetautoCommit:"+exception.getMessage());}}publicvoidcommit(){try{conect.commit();}catch(Exceptionexception){System.out.println("Exceptionincommit:"+exception.getMessage());}}–33– publicvoidrollback(){//执行事物的回滚try{conect.rollback();}catch(Exceptionexception){System.out.println("Exceptioninrollback:"+exception.getMessage());}}//将sql语句中的?号转为相应的参数,其中参数为字符串型publicStringeditSqlCode(Stringsql,Stringstr){try{//截取从0到第一个问号的字符串加参数str,然后在加上第一问号以后的字符串sql=sql.substring(0,sql.indexOf("?"))+str+sql.substring(sql.indexOf("?")+1);}catch(Exceptione){System.out.println(e.getMessage());}returnsql;}publicStringeditSqlCode(Stringsql,Integerstr){//提取SQL语句,并把(intstr)传出来的值来代替?try{sql=sql.substring(0,sql.indexOf("?"))+str+sql.substring(sql.indexOf("?")+1);}catch(Exceptione){System.out.println(e.getMessage());}returnsql;}publicStringeditSqlCode(Stringsql,intstr){//提取SQL语句,并把(intstr)传出来的值来代替?try{sql=sql.substring(0,sql.indexOf("?"))+str+sql.substring(sql.indexOf("?")+1);}catch(Exceptione){System.out.println(e.getMessage());}returnsql;}}5.2样式层的实现在样式层(在domain文件夹)中的类是一个继承了ActionForm(也就是extendsActionForm)的类。对于每个请求参数通过其名称来对应到bean的一个属性上,并调用相对应的setter方法来设置属性值。这个方法类似于标准jsp中标记。同样调用相应的getter方法来取得属性值,更新后的ActionFormBean被传递给Action类的perform方法,以便使这些值能被系统状态和业务逻辑bean来使用。企业类型设置模块对应的ActionForm类CqylxForm.java的代码如下:–33– /***********************************CqylxForm.java******************************/packagecom.domain;//对企业生产类型表的操作(tb_client_qylx)publicclassCqylxFormextendsActionForm{//使用Struts需要继承ActionFormprivateStringqylx_bz="";//备注信息privateStringqylx_id="";//企业生产类型编号privateStringqylx_lxmc="";//企业生产类型名称publicCqylxForm(){}publicStringgetQylx_bz(){returnqylx_bz;}publicvoidsetQylx_bz(Stringqylx_bz){this.qylx_bz=qylx_bz;}publicStringgetQylx_id(){returnqylx_id;}publicvoidsetQylx_id(Stringqylx_id){this.qylx_id=qylx_id;}publicStringgetQylx_lxmc(){returnqylx_lxmc;}publicvoidsetQylx_lxmc(Stringqylx_lxmc){this.qylx_lxmc=qylx_lxmc;}}5.3持久层的实现在持久层(dao层文件夹)中,主要有两种类,一个是接口(interface)类,类名以Dao结尾,另一个是接口的实现类,类名以DaoImpl结尾,其中企业类型设置模块的代码如下:1.接口类(以Dao为结尾的类名)/***********************************CqylxDao.java********************************/packagecom.dao;importjava.util.List;importcom.domain.CqylxForm;publicinterfaceCqylxDao{publicListqylxSelect();publicvoidqylxDelete(CqylxFormqylx);publicvoidqylxupdate(CqylxFormqylx);publicCqylxFormqylxSelectOne(CqylxFormqylx);publicvoidqylxInsert(CqylxFormqylx);publicintqulxCount();}2.实现接口类(以DaoImpl为结尾的类名)/******************************CqylxDaoImpl.java**********************************/–33– packagecom.dao;importjava.util.List;importjava.util.ArrayList;importcom.tool.JDBConnection;importcom.tool.SQLCode;importjava.sql.ResultSet;importjava.sql.*;importcom.domain.CqylxForm;//加载类//对表tb_Client_qylx的操作publicclassCqylxDaoImplimplementsCqylxDao{publicListqylxSelect(){//查询的操作JDBConnectionconnection=newJDBConnection();CqylxFormform=null;Listlist=newArrayList();//ArrayList类实现了List接口Stringsql=SQLCode.getSQLCode("sql.qylx.select");try{ResultSetrs=connection.executeQuery(sql);while(rs.next()){form=newCqylxForm();form.setQylx_id(rs.getString(1));form.setQylx_lxmc(rs.getString(2));form.setQylx_bz(rs.getString(3));list.add(form);}}catch(SQLExceptionex){}connection.close();returnlist;}//删除操作publicvoidqylxDelete(CqylxFormqylx){JDBConnectionconnection=newJDBConnection();Stringsql=SQLCode.getSQLCode("sql.qylx.delete");sql=connection.editSqlCode(sql,qylx.getQylx_id());connection.executeUpdate(sql);connection.close();}//修改操作publicvoidqylxupdate(CqylxFormqylx){JDBConnectionconnection=newJDBConnection();//利用对象connection调用JDBConnection类中方法Stringsql=SQLCode.getSQLCode("sql.qylx.update");sql=connection.editSqlCode(sql,qylx.getQylx_lxmc());sql=connection.editSqlCode(sql,qylx.getQylx_bz());sql=connection.editSqlCode(sql,qylx.getQylx_id());connection.executeUpdate(sql);connection.close();}//以企业类型的编号进行查找publicCqylxFormqylxSelectOne(CqylxFormqylx){–33– JDBConnectionconnection=newJDBConnection();CqylxFormform=null;Stringsql=SQLCode.getSQLCode("sql.qylx.selectOne");sql=connection.editSqlCode(sql,qylx.getQylx_id());try{ResultSetrs=connection.executeQuery(sql);while(rs.next()){form=newCqylxForm();form.setQylx_id(rs.getString(1));form.setQylx_lxmc(rs.getString(2));form.setQylx_bz(rs.getString(3));}}catch(SQLExceptionex){}connection.close();returnform;}//添加操作publicvoidqylxInsert(CqylxFormqylx){JDBConnectionconnection=newJDBConnection();Stringsql=SQLCode.getSQLCode("sql.qylx.insert");sql=connection.editSqlCode(sql,qylx.getQylx_id());sql=connection.editSqlCode(sql,qylx.getQylx_lxmc());sql=connection.editSqlCode(sql,qylx.getQylx_bz());connection.executeUpdate(sql);connection.close();}//在数据库中查找最大的流水号,然后返回加1,此数据用于企业类型编号存储,表现了编号的唯一性publicintqulxCount(){intiCount=0;JDBConnectionconnection=null;connection=newJDBConnection();Stringsql=SQLCode.getSQLCode("sql.qylx.count");ResultSetrs=null;try{rs=connection.executeQuery(sql);while(rs.next()){CqylxFormform=newCqylxForm();iCount=rs.getInt("t");}}catch(SQLExceptionex){}connection.close();returniCount+1;}}5.4服务层的实现–33– 通过服务层(server文件夹)的方法,可以使持久层(dao)的功能能够具体实现。在服务层中(在server文件夹)类和持久层中类存在方式是一样的。但是,接口类是以Façade为结尾的类名,实现接口类是以FacadeImpl为结尾的类名。1.接口类(以Facade为结尾的类名)/**********************************CqylxFacade.java*******************************/packagecom.service;importjava.util.List;importcom.domain.CqylxForm;publicinterfaceCqylxFacade{publicListqylxSelect();…………………………..//这段代码和dao层中的接口类是一样的publicintqulxCount();}2.实现接口类(以FacadeImpl为结尾的类名)/********************************CqylxFacadeImpl.java******************************/packagecom.service;importjava.util.List;importcom.dao.CqylxDao;importcom.dao.CqylxDaoImpl;importcom.domain.CqylxForm;publicclassCqylxFacadeImplimplementsCqylxFacade{privateCqylxDaoqylx=null;publicCqylxFacadeImpl(){this.qylx=newCqylxDaoImpl();}publicListqylxSelect(){returnthis.qylx.qylxSelect();}publicvoidqylxDelete(CqylxFormqylx){this.qylx.qylxDelete(qylx);}publicvoidqylxupdate(CqylxFormqylx){this.qylx.qylxupdate(qylx);}publicCqylxFormqylxSelectOne(CqylxFormqylx){returnthis.qylx.qylxSelectOne(qylx);}publicvoidqylxInsert(CqylxFormqylx){this.qylx.qylxInsert(qylx);}publicintqulxCount(){returnthis.qylx.qulxCount();}}–33– 5.5企业类型设置控制层的实现在控制层中(在webtier文件夹),类的实现是在jsp页面中进行调用,下面结合jsp页中的代码,说明通过类实现的过程。1.添加操作添加企业类型信息分为两个步骤:(1)添加数据之前首先查询企业类型信息数据表中的最大流水号,然后加1作为新的企业类型编号,并在添加页面中以隐藏域表示。(2)执行添加功能。查询最大流水号类的代码如下:/********************************CqylxCountID.java*******************************/packagecom.webtier.clientQylxAction;publicclassCqylxCountIDextendsAction{privateCqylxFacadeqylx=null;publicCqylxCountID(){this.qylx=newCqylxFacadeImpl();//实现服务层的方法}publicActionForwardperform(ActionMappingactionMapping,ActionFormactionForm,HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse){StringchangeType=String.valueOf(this.qylx.qulxCount());httpServletRequest.setAttribute("changeType",changeType);//将查出的数据转换为String类型returnactionMapping.findForward("cqylxCountID");}}执行后的jsp的代码如下:/******************************CqylxCountID.java********************************/企业编号 ">LX-<%=request.getAttribute("changeType")%>添加企业类型页面的运行效果如图6所示。–33– 图6添中企业类型页面运行结果添加类的代码如下:/*********************************CqylxInsert.java*******************************/packagecom.webtier.clientQylxAction;//插入操作publicclassCqylxInsertextendsAction{privateCqylxFacadeqylx=null;publicCqylxInsert(){this.qylx=newCqylxFacadeImpl();}publicActionForwardperform(ActionMappingactionMapping,ActionFormactionForm,HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse){Chinesechinese=newChinese();CqylxFormcqylxForm=(CqylxForm)actionForm;cqylxForm.setQylx_id(chinese.str(httpServletRequest.getParameter("id")));取jsp页面的编号cqylxForm.setQylx_lxmc(Chinese.str(httpServletRequest.getParameter("lxmc")));取jsp页面的企业名称cqylxForm.setQylx_bz(chinese.str(httpServletRequest.getParameter("bz")));取jsp页面的企业备注信息this.qylx.qylxInsert(cqylxForm);//执行添加的方法returnactionMapping.findForward("cqylxInsert");}}2.修改操作修改操作分为两步,修改数据之前首先要查找需要修改的数据,然后再执行修改操作。通过单击企业类型设置页面中企业类型信息后的“修改”超链接,即可对该信息进行修改。企业类型信息修改的jsp页面的代码如下:/***********************************selectQylx.jsp********************************/">修改“Struts-config.xml”的“.do”的代码配置方法和上面说的一样,只是名称有所变化,这里不再赘述,具体请参见光盘。企业类型设置的单独查询类的说明:/*********************************CqylxSelectOne.jsp*****************************/packagecom.webtier.clientQylxAction;//单独查询publicclassCqylxSelectOneextendsAction{privateCqylxFacadeqylx=null;publicCqylxInsert(){this.qylx=newCqylxFacadeImpl();}publicActionForwardperform(ActionMappingactionMapping,ActionFormactionForm,–33– HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse){CqylxFormcqylxForm=(CqylxForm)actionForm;cqylxForm.setQylx_id(httpServletRequest.getParameter("id"));CqylxFormform=this.qylx.qylxSelectOne(cqylxForm);//执行单独查询的功能,然后赋给新的对象httpServletRequest.setAttribute("form",form);returnactionMapping.findForward("cqylxSelectOne");}}执行后的jsp的代码如下:/***********************************updateQylx.jsp********************************/<%@pagecontentType="text/html;charset=gb2312"%>functionRgTest(){if(document.form.lxmc.value==""){window.alert("请输入企业类型名称");document.form.lxmc.focus();returnfalse;}returntrue;}<%CqylxFormform=(CqylxForm)request.getAttribute("form");%>企业类型名称">企业类型信息修改页面的运行结果如图7所示。图7企业类型信息修改页面运行结果通过updateQylx.jsp的form表单即可看到执行的修改动作,修改类的代码如下:/*********************************CqylxUpdate.java********************************/packagecom.webtier.clientQylxAction;publicclassCqylxUpdateextendsAction{privateCqylxFacadeqylx=null;publicCqylxInsert(){this.qylx=newCqylxFacadeImpl();–33– }publicActionForwardperform(ActionMappingactionMapping,ActionFormactionForm,HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse){cqylxForm.setQylx_id(httpServletRequest.getParameter("id"));//从jsp页中取得值。cqylxForm.setQylx_lxmc(chinese.str(httpServletRequest.getParameter("lxmc")));cqylxForm.setQylx_bz(chinese.str(httpServletRequest.getParameter("bz")));this.qylx.qylxupdate(cqylxForm);//执行修改的方法returnactionMapping.findForward("cqylxUpdate");}}3.删除操作通过单击页面中企业类型信息后的“删除”超链接,即可将当前的企业类型信息删除。删除企业类型信息的jsp页面中的代码如下:/**********************************selectQylx.jsp********************************/functionprojectDelete(date){if(confirm("是否删除编号为["+date+"]这一组数据吗?"))window.location="cqylxDelete.do?id="+date;}")">删除执行效果如图8所示:图8删除企业类型信息“Struts-config.xml”的“.do”的方法代码如下:/*********************************Struts-config.xml********************************/企业类型设置的删除类代码如下:/********************************CqylxDelete.java********************************/packagecom.webtier.clientQylxAction;…………………………………………………..//省略加载的类//删除的操作publicclassCqylxDeleteextendsAction{privateCqylxFacadeqylx=null;publicCqylxDelete(){this.qylx=newCqylxFacadeImpl();}publicActionForwardperform(ActionMappingactionMapping,ActionFormactionForm,HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse){Chinesechinese=newChinese();CqylxFormcqylxForm=(CqylxForm)actionForm;cqylxForm.setQylx_id(chinese.str(httpServletRequest.getParameter("id")));this.qylx.qylxDelete(cqylxForm);returnactionMapping.findForward("cqylxDelete");}}4.查询操作通过单击“企业类型设置”超链接,即可进入到企业类型设置页面,其实现的代码如下(具体的代码请参照光盘,这里只介绍主要的jsp代码):/***********************************information.jsp********************************/………企业类型设置
………..“Struts-config.xml”的“.do”的方法代码如下:/******************************Struts-config.xml********************************/企业类型设置的查询类代码如下:/*********************************例程3-1CqylxSelect.java********************************/packagecom.webtier.clientQylxAction;importorg.apache.struts.action.*;importjavax.servlet.http.*;–33– importcom.service.CqylxFacadeImpl;importcom.service.CqylxFacade;//查询的操作publicclassCqylxSelectextendsAction{privateCqylxFacadeqylx=null;publicCqylxSelect(){this.qylx=newCqylxFacadeImpl();}publicActionForwardperform(ActionMappingactionMapping,ActionFormactionForm,HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse){httpServletRequest.setAttribute("qylxlist",this.qylx.qylxSelect());returnactionMapping.findForward("cqylxSelect");//在struts-config.xml中的forward中的name必须一致}}查询jsp页面的代码如下:/**********************************selectQylx.jsp********************************/<%@pagecontentType="text/html;charset=gb2312"%><%@pageimport="java.sql.*"%><%@pageimport="java.util.List"%><%@pageimport="com.domain.CqylxForm"%><%Listlist=(List)request.getAttribute("qylxlist");%>

企业类型的设置

<%for(inti=0;i<%=qylx.getQylx_id()%><%=qylx.getQylx_lxmc()%><%=qylx.getQylx_bz()%>">修改   ")">删除<%}%>执行cqylxSelect方法后的企业类型查询界面如图9所示。–33– 图9企业类型查询界面10小结本实例是利用Struts框架实现的,它的特点是提供了通用的、简洁明了的Web应用实现方法,可以发现在Struts支持的Web应用中。没有固定写死的文件名称、Action类、控制器类名称,基本上所有可以扩展修改的部分都是通过配置文件管理的,所有网页内的文字都可以放在properties文件中。这样建立Web应用时,编写的程序更加便于管理、易于移植。应用国际化也更容易实现。本实例利用Struts框架进行初步的实现,读者可以通过Struts网站提供的范例程序和在互联网上搜索已有的基于Struts的Web程序来了解关于Struts的更多使用方法和应用窍门。附录A参考文献1.JSP数据库系统开发完全手册人民邮电出版社2006年3月–33– 2.Delphi数据库系统开发完全手册人民邮电出版社2006年3月3.VisualBasic数据库系统开发完全手册人民邮电出版社2006年3月4.VisualC++数据库系统开发完全手册人民邮电出版社2006年3月5.JSP信息系统开发实例精选机械工业出版社王国辉、牛强、李南南等2005年7月6.VisualBasic信息系统开发实例精选机械工业出版社宋坤、赵智勇、刘强等2005年7月7.SQLServer数据库开发实例解析机械工业出版社宋昆、李严等2006年1月8.Access数据库开发实例解析机械工业出版社李俊民、高春燕等2006年1月9.VisualBasic精彩编程200例机械工业出版社赛奎春、高春艳等2003年1月10.ASP数据库开发实例解析机械工业出版社李严、于亚芳、王国辉2004年12月11.Delphi工程应用与项目实践机械工业出版社宋坤、赵智勇等2005年1月12.VisualBasic工程应用与项目实践机械工业出版社高春艳、李俊民等2005年1月13.VisualC++工程应用与项目实践机械工业出版社张雨、阮伟良等5005年1月14.JSP工程应用与项目实践机械工业出版社陈威、白伟明、李楠2005年2月15.ASP工程应用与项目实践机械工业出版社王国辉、牛强、李南南2005年4月16.VisualBasic信息系统开发实例精选机械工业出版社高春艳、李俊民、张耀庭等2005年7月17.ASP信息系统开发实例精选机械工业出版社王国辉、牛强、李南南等2005年7月18.Delphi信息系统开发实例精选机械工业出版社宋坤、赵智勇、刘强等2005年7月19.Visualfoxpro数据库开发关键技术与实例应用人民邮电出版社周桓、张雨、王国辉2004年5月20.PoweBuilder数据库开发关键技术与实例应用人民邮电出版社刘志铭张振坤冯文萃2004年5月21.Delphi数据库开发关键技术与实例应用人民邮电出版社赛奎春陈紫鸿宋昆2004年5月22.Visualbasic数据库开发关键技术与实例应用人民邮电出版社高春艳、李艳2004年5月23.VisualC++管理信息系统完整项目实例剖析人民邮电出版社明日科技2005年7月24.VisualBasic管理信息系统完整项目实例剖析人民邮电出版社明日科技2005年7月25.PowerBuilder管理信息系统完整项目实例剖析人民邮电出版社明日科技2005年7月26.VisualFoxPro管理信息系统完整项目实例剖析人民邮电出版社明日科技2005年7月27.Delphi数据库开发实例解析机械工业出版社赛奎春、郑骁鹏等2004年2月28.VisualBasic数据库开发实例解析机械工业出版社刘志铭、高春艳等2003年8月29.VisualFoxPro数据库开发实例解析机械工业出版社王晶莹、王国辉等2003年9月30.PowerBuilder数据库开发实例解析机械工业出版社华传铭、张振坤等2003年9月31.PowerBuilder精彩编程200例机械工业出版社张振坤、李文立等2004年9月32.VisualFoxPro精彩编程200例机械工业出版社王国辉、董韶华等2004年9月–33– 附录B数据表(1)tb_Client_qyxx(区域表)区域表主要用来保存所设置的区域信息。表tb_Client_qyxx的结构如表B.1所示。表B.1表tb_Client_qyxx的结构字段名数据类型长度是否主键描述qyxx_idvarchar30区域编号qyxx_qymcvarchar50区域名称qyxx_qyjbvarchar50区域级别qyxx_zscdvarchar50区域重视程度qyxx_qygmlvarchar50区域购买力描述qyxx_bzvarchar50备注信息idint4数据库流水号(2)tb_Client_qyxz(企业性质信息表)企业性质信息表用来保存用户所设置的企业性质信息。表tb_Client_qyxz的结构如表B.2所示。表B.2表tb_Client_qyxz的结构字段名数据类型长度是否主键描述qyxz_idchar30企业性质编号qyxz_xzmcchar50性质名称qyxz_bztext16备注信息idint4数据库流水号(3)tb_Client_qylx(企业类型信息表)企业类型信息表用来保存用户所设置的客户企业类型信息。表tb_Client_qylx的结构如表B.3所示。表B.3表tb_Client_qylx的结构字段名数据类型长度是否主键描述qylx_idvarchar30企业类型编号qylx_lxmcvarchar50类型名称qylx_bztext16备注信息idint4数据库流水号(4)tb_Client_qyzx(企业资信信息表)企业资信信息表主要用来保存客户的企业资信信息。表tb_Client_qyzx的结构如表B.4所示。表B.4表tb_Client_qyzx的结构字段名数据类型长度是否主键描述–33– qyzx_idvarchar30企业资信编号qyzx_zxjbvarchar50资信级别qyzx_bztext16备注信息idvarchar50数据库流水号(5)tb_Client_Khjb(客户级别表)客户级别表主要用来保存客户的级别信息。表tb_Client_Khjb的结构如表B.5所示。表B.5表tb_Client_Khjb的结构字段名数据类型长度是否主键描述khjb_idvarchar30客户级别编号khjb_jbmcvarchar50级别名称khjb_zdywlnumeric9该级别每月的最低业务量khjb_bztext16备注信息idint4数据库流水号(6)tb_Client_khmyd(客户满意程度表)客户满意程度表用来保存客户的满意程度信息。表tb_Client_khmyd的结构如表B.6所示。表B.6表tb_Client_khmyd的结构字段名数据类型长度是否主键描述khmyd_idvarchar30客户满意度编号khmyd_mydvarchar50客户满意度khmyd_bztext16备注信息idint4数据库流水号(7)tb_Client_bank(客户银行信息表)客户银行信息表主要用来保存客户的银行名称信息。表tb_Client_bank的结构如表B.7所示。表B.7表tb_Client_bank的结构字段名数据类型长度是否主键描述bank_idvarchar50客户银行编号bank_namevarchar50银行名称bank_bzvarchar50备注信息idint4数据库流水号(8)tb_khxx(客户信息表)客户信息表用来保存客户的详细信息。表tb_khxx的结构如表B.8所示。表B.8表tb_khxx的结构字段名数据类型长度是否主键描述–33– khxx_idvarchar50客户编号khxx_mcvarchar50客户名称khxx_qyxzvarchar30企业性质khxx_qylxvarchar30企业类型khxx_qyzxvarchar30企业资信khxx_qydzvarchar50企业地址khxx_szsfvarchar30所属省份khxx_szcsvarchar30所属城市khxx_gsybvarchar6公司邮编khxx_frdbvarchar20法人代表khxx_khyhvarchar50开户银行khxx_yhzhvarchar50银行帐号khxx_nshvarchar50纳税号khxx_ICcardvarchar50客户IC卡号khxx_gswzvarchar50公司网址khxx_gsdhvarchar20公司电话khxx_gsczvarchar20公司传真khxx_lxrvarchar30主要联系人khxx_lxrdhvarchar20联系人电话khxx_khjbvarchar20客户级别khxx_bztext16备注信息idint4数据库流水号(9)tb_Client_khfk(客户反馈信息表)客户反馈信息表用来保存客户的反馈信息。表tb_Client_khfk的结构如表B.9所示。表B.9表tb_Client_khfk的结构字段名数据类型长度是否主键描述khfk_idvarchar30客户反馈编号khfk_fkbtvarchar50反馈标题khfk_khmcchar50客户名称khfk_fknrtext50反馈内容khfk_fkrqvarchar30反馈日期khfk_fkslrchar30反馈意见受理人khfk_khmydvarchar50客户满意程度khfk_bztext16备注信息–33– idint4数据库流水号(10)tb_Client_csxx(国内城市区号邮编表)国内城市区号邮编表用来保存国内各城市的区号及邮编信息。表tb_Client_csxx的结构如表B.10所示。表B.10表tb_Client_csxx的结构字段名数据类型长度是否主键描述csxx_csjcvarchar6省份简称csxx_sfmcvarchar23省份名称csxx_csmcvarchar25城市名称csxx_ybvarchar10邮编csxx_dhqhvarchar10电话区号idint4数据库流水号(11)tb_bdwxx(本单位信息表)本单位信息表用来保存本单位的相关信息。表tb_bdwxx的结构如表B.11所示。表B.11表tb_bdwxx的结构字段名数据类型长度是否主键描述bdwxx_mcnvarchar50单位名称bdwxx_lxdznvarchar50联系地址bdwxx_ybnvarchar50邮政编码bdwxx_cznvarchar50传真bdwxx_frdbnvarchar50法人代表bdwxx_lxdhnvarchar50联系电话bdwxx_khyhnvarchar50开户银行bdwxx_yhzhnvarchar50银行账号bdwxx_wznvarchar50网址bdwxx_nshnvarchar50纳税号(12)tb_Client_cpxs(产品销售表)产品销售表用来保存产品销售信息。表tb_Client_cpxs的结构如表B.12所示。表B.12表tb_Client_cpxs的结构字段名数据类型长度是否主键描述cpxs_idvarchar30产品销售编号cpxs_mcvarchar50销售产品名称cpxs_cpdjvarchar30产品单价cpxs_khIdvarchar50客户编号–33– cpxs_xsrqvarchar50产品销售日期cpxs_bzvarchar50备注信息idint4数据库流水号(13)tb_Client_gzbw(工作备忘表)工作备忘表用来保存工作备忘的相关信息。表tb_Client_gzbw的结构如表B.13所示。表B.13表tb_Client_gzbw的结构字段名数据类型长度是否主键是否描述gzbw_idvarchar50工作备忘编号gzbw_btvarchar50记事标题gzbw_nrvarchar50记事内容gzbw_jsrqvarchar50记事日期gzbw_bzvarchar16备注信息gzbw_managervarchar50管理理员名称idint4数据库流水号(14)tb_Client_khts(客户投诉表)客户投诉表用来保存客户投诉信息。表tb_Client_khts的结构如表B.14所示。表B.14表tb_Client_khts的结构字段名数据类型长度主键否描述khts_idvarchar30客户投诉编号khts_qymcvarchar50企业名称khts_tsrvarchar50投诉人khts_tsztvarchar10投诉主题khts_tsnrvarchar50投诉内容khts_tsrqvarchar30投诉日期khts_clbfvarchar16处理办法khts_khmydvarchar30客户满意程度khts_tsslrvarchar20投诉受理人khts_bzvarchar16备注信息idint4数据库流水号(15)tb_Client_lxrxx(联系人信息表)联系人信息表用来保存联系人相关信息。表tb_Client_lxrxx的结构如表B.15所示。表B.15表tb_Client_lxrxx的结构字段名数据类型长度是否主键描述lxrxx_idvarchar20联系人编号–33– lxrxx_qymcvarchar20企业名称lxrxx_xmvarchar50联系人姓名lxrxx_xbvarchar50联系人性别lxrxx_csnyvarchar50出生年月lxrxx_nlvarchar5联系人年龄lxrxx_zwvarchar30联系人职位lxrxx_bgdhvarchar30联系人办公电话lxrxx_Emailvarchar50联系人电子邮件lxrxx_sjvarchar20联系人手机lxrxx_grjjvarchar16个人简介lxrxx_djrqvarchar50登记日期lxrxx_xxdjrvarchar50信息登记人lxrxx_bsvarchar50联系人标识lxrxx_bzvarchar50联系人备注信息idint4数据库流水号(16)tb_Client_mydtj(满意程度表)满意程度表用来保存满意程度信息。表tb_Client_mydtj的结构如表B.16所示。表B.16表tb_Client_mydtj的结构字段名数据类型长度是否主键描述mydtj_mydvarchar30满意程度名称mydtj_slnvarchar9标识(17)tb_Client_sfzy(省份表)省份表用来保存各省份信息。表tb_Client_sfzy的结构如表B.17所示。表B.17表tb_Client_sfzy的结构字段名数据类型长度是否主键描述sfzy_sfidvarchar30编号sfzy_sfmcvarchar50省份名称sfzy_zymsvarchar16地理位置idint4数据库流水号(18)tb_user(操作用户表)操作用户表用来保存操作员信息。表tb_user的结构如表B.18所示。表B.18表tb_user的结构字段名数据类型长度主键否是否描述idint数据库流水号–33– user_idvarchar20操作员编号user_namevarchar50操作员姓名user_mmvarchar30操作员密码user_bsvarchar50管理员标识menu_jcxxvarchar50基础信息维护标识menu_khxxvarchar50客户信息维护标识menu_khfwvarchar50客户服务标识menu_xxcxvarchar50信息查询标识menu_fzgjvarchar50辅助工具标识menu_xtglvarchar50系统管理标识menu_sjglvarchar50数据管理标识–33– 附录C文件架构图客户管理系统文件架构如图C.1所示。图C.1客户管理系统文件总体架构基础信息维护文件架构图如图C.2所示。图C.2基础信息维护文件架构图客户信息维护文件架构图及客户服务文件架构图如图C.3所示。–33– 图C.3客户服务及客户信息维护文件架构图信息查询文件架构图如图C.4所示。图C.4信息查询文件架构图数据管理文件架构图如图C.5所示。–33– 图C.5数据管理文件架构图系统管理文件架构图及辅助工具文件架构图如图C.6所示。图C.6系统管理及辅助工具文件架构图–33–

您可能关注的文档

相关文档

最近下载