1、客户管理系统软件详细设计 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 2 个人收集整理 勿做商业用途 客户信息管理系统详细设计说明书
2、 程序系统的结构 功能模块结构图 Ø 项目结构设计 项目包 说明 文件夹 说明 文件 说明 com.client。pojo 存储项目中要用到的对象 Src 存放Java类 ApplicationContext.xml Spring和Hibernate合并后的配置文件 com.client。dao 存储访问数据库的接口 Webroot 用于存放网页文件(jsp/html) Webroot/WEB—INF/struts-config。xml Struts的配置文件 com.client。daoimpl 存储数据库接口的实现类 Webroot/ht
3、ml 专门存放Jsp页面 com.client.biz 存储业务逻辑接口 com。client.bizimpl 存储业务逻辑接口的实现类 com.client.struts 存储struts的相关文件 com。client.struts。action 存储Struts中的 Action com.client.other 存储项目中要用到的相关类。例:MD5 采用MVC模式 Ø 页面设计 页面 功能 关联 属于模块 备注 /cust/list.jsp 管理客户
4、信息列表 /cust/linkman。jsp /cust/edit.jsp /cust/activities.jsp /cust/orders。jsp 客户信息管理 实现了分页效果 /cust/edit。jsp 修改客户信息 /cust/list。jsp 客户信息管理 —-—— /cust/linkman。jsp 管理客户联系人 /cust/linkman_edit。jsp /cust/linkman_add.jsp /cust/list。jsp 客户信息管理 分页效果 /cust/linkman_edit。jsp 修改联系人 /cust/linkma
5、n.jsp /cust/list。jsp 客户信息管理 -—- /cust/linkman_add.jsp 添加联系人 /cust/linkman。jsp /cust/list.jsp 客户信息管理 --— /cust/orders。jsp 显示历史记录列表 /cust/list.jsp 客户信息管理 分页效果 /cust/orders_detail。jsp 显示历史记录详细信息 /cust/orders。jsp 客户信息管理 --- /cust/activities。jsp 管理公司与客户的交往记录 /cust/list。jsp 客户信息管理
6、分页效果 /cust/activities_edit.jsp 编辑交往记录 /cust/activities。jsp 客户信息管理 --— /cust/activities_add.jsp 添加交往记录 /cust/activities.jsp 客户信息管理 ——— /lost/ list。jsp 管理流失客户信息列表 /lost/relay。jsp /lost/ confirm.jsp 客户流失管理 分页效果 /lost/ confirm.jsp 将流失客户列入“确定流失” /lost/ list.jsp 客户流失管理 …… /lost/relay
7、jsp 将客户列入“暂缓流失" /lost/ list.jsp 客户流失管理 …… …… …… …… …… …… Ø Action设计 Action 功能 关联对象 关联页面 备注 UserAction 对用户的相关操作(登录、验证、新增、修改、删除……) IuserBiz UserBizImpl ISysUserDAO SysUserDAO MD5 Login.jsp Cust/list.jsp Errors。jsp 继承DispathAction CstAction 对客户的相关操作(查询、新增、修改、删除……)
8、IcstBiz CstBizImpl ICstCustomerDAO CstCustomerDAO Cust/list。jsp Errors。jsp Cust/ inkman。jsp 继承DispathAction …… …… …… …… …… Ø 数据库设计 客户信息表(Cst_Customer) 列名 类型 是否为空 主外键 备注 cust_no char Not ok 客户编号 cust_name nvarchar Not 客户公司名称 cust_region nvarchar 地区 cust_manager
9、id int Not 客户经理编号 cust_manager_name nvarchar Not 客户经理名字 cust_level nvarchar 客户等级 cust_level_label nvarchar 等级名称 cust_satisfy int Not 客户满意度 cust_credit int Not 客户信用度 cust_addr nvarchar Not 客户地址 cust_zip nvarchar 邮政编码 cust_tel nvarchar Not 电话 c
10、ust_fax nvarchar 传真 cust_website nvarchar 网址 cust_licence_no int 营业执照注册号 cust_chieftain nvarchar 法人 cust_bankroll Float 注册资金(万元) cust_turnover Float 年营业额 cust_bank nvarchar Not 开户银行 cust_bank_account nvarchar Not 银行帐号 cust_local_tax_no nvarcha
11、r Not 地税登记号 cust_national_tax_no nvarchar 国税登记号 cust_status nvarchar 状态 联系人信息表(cst_linkman) 列名 类型 是否为空 主外键 备注 lkm_id Int Not 主键 联系人编号 lkm_cust_no char Not 外键(CstCustomer。Cust_no) 对应的客户编号 lkm_cust_name nvarchar Not 客户名 lkm_name nvarchar Not 联系人名称 lkm_sex
12、 nvarchar Not 联系人性别 lkm_postion nvarchar 联系人职位 lkm_tel nvarchar Not 联系电话 lkm_mobile nvarchar 手机 lkm_memo nvarchar 备注 交往记录信息表(cst_activity) 列名 类型 是否为空 主外键 备注 atv_id Int Not 主键 交往记录编号 atv_cust_no Char Not 外键(CstCustomer。Cust_no) 对应的客户编号 atv_cust_name n
13、varchar Not 客户名 atv_date nvarchar Not 交往时间 atv_place nvarchar Not 交往地址 atv_title nvarchar Not 交往主题 atv_desc nvarchar 备注 历史记录信息表(cst_lost) 列名 类型 是否为空 主外键 备注 odr_id Int Not 主键 历史记录编号 odr_customer Char Not 外键(CstCustomer。Cust_no) 对应的客户编号 odr_date nvarchar
14、 Not 历史记录时间 odr_addr nvarchar Not 交易时间 odr_status nvarchar Not 交易状态 Ø 各类的详细设计 包名 类 接口 属性 方法 参数 返回类型 备注 com。client.pojo CstCustomer custNo 继承ActionForm custName custRegion custManager_id
15、 custManagerName custLevel custLevelLabel custSatisfy custCredit custAddr custZip custTel custFax custWebsite
16、 custLicenceNo custChieftain custBankroll custTurnover custBank custBankAccount custLocalTaxNo custNationalTaxNo custStatus
17、 CstLinkman lkmId 继承ActionForm lkmCustNo lkmCustName lkmName lkmSex lkmPostion lkmTel lkmMo
18、bile lkmMemo CstLost odr_id 继承ActionForm odr_customer odr_date odr_addr odr_status CstActivity atv_id 继承ActionForm at
19、v_cust_no atv_cust_name atv_date atv_place atv_title atv_desc com.client.biz ICstBiz updateCst CstCustomer(客户类的对象) boolean 更新客
20、户信息 findCstsByCst CstCustomer(客户类的对象) List(CstCustomer) 用于查询客户列表 findCstsByPS pagesize(每页显示的条数) List(CstCustomer) 用于翻页查询 pagenum(第几页) getpagenum pagesize(每页显示的条数) int(页码) 用于判断是否存在的页码,如果没有,就显示第一页或最后一页 pagenum(第几页)
21、 ILinkMan addLink CstLinkman(联系人对象) 新增联系人 delete int linkmanid联系人的ID 根据联系人主见删除联系人 getLinks String custname客户名称 List(CstLinkman) 根据客户名称获得联系人列表 update CstLinkman(联系人对象) 更新联系人信息 ILostBiz
22、 getLostsByCustName String custname客户名称 int size输出条数 int page页码 List(CstLost) 分页查询 update int lostid流失客户ID String 流失说明 String 流失类型 修改流失类型和流失原因 findCount int 查询总的条数 IOrderBiz findCount int 查询总的条数 getOrdersByCust
23、Name String custname客户名称 int size输出条数 int page页码 List(CstOrder) 根据客户名称分页查询 getpagenum int size,int pagenum int 根据条数和页码获得存在的页码 IActiveBiz addActive CstActivity(交往记录) 添加交往记录 delete int id交往记录的ID 根据主键删除交往记录 getActi
24、ves String custname客户名称 根据客户名称查询交往记录列表 update CstActivity(交往记录) 更新交往记录信息 com.client。bizimpl CstBizImpl ICstCustomerDAO updateCst CstCustomer(客户类的对象) boolean 更新客户信息 findCstsByCst CstCustomer(客户类的对象) List(CstCustomer) 用于查询客户列表
25、 findCstsByPS pagesize(每页显示的条数) List(CstCustomer) 用于翻页查询 pagenum(第几页) getpagenum pagesize(每页显示的条数) int(页码) 用于判断是否存在的页码,如果没有,就显示第一页或最后一页 pagenum(第几页) LinkManImpl ICstLinkManDAO addLink CstLinkm
26、an(联系人对象) 新增联系人 delete int linkmanid联系人的ID 根据联系人主见删除联系人 getLinks String custname客户名称 List(CstLinkman) 根据客户名称获得联系人列表 update CstLinkman(联系人对象) 更新联系人信息 LostBizImpl ICstLostDAO getLostsByCustName Str
27、ing custname客户名称 int size输出条数 int page页码 List(CstLost) 分页查询 update int lostid流失客户ID String 流失说明 String 流失类型 修改流失类型和流失原因 findCount int 查询总的条数 OrderBiz IOrderDAO findCount int 查询总的条数 getOrdersByCustName String custn
28、ame客户名称 int size输出条数 int page页码 List(CstOrder) 根据客户名称分页查询 getpagenum int size,int pagenum int 根据条数和页码获得存在的页码 ActiveBiz IActiveDAO addActive CstActivity(交往记录) 添加交往记录 delete int id交往记录的ID 根据主键删除交往记录 getActives Str
29、ing custname客户名称 根据客户名称查询交往记录列表 update CstActivity(交往记录) 更新交往记录信息 com。client.dao ICstCustomerDAO findAll List(CstCustomer) 查询所有客户信息 findCstsByPS pagesize(每页显示的条数) List(CstCustomer) 翻页查询 pagenum(第几页) fi
30、ndCstsByCst CstCustomer(客户类的对象) List(CstCustomer) 模糊查询 ICstLinkManDAO addLink CstLinkman(联系人对象) 新增联系人 delete int linkmanid联系人的ID 根据联系人主见删除联系人 getLinks String custname客户名称 List(CstLinkman) 根据客户名称获得联系人列表
31、 update CstLinkman(联系人对象) 更新联系人信息 ICstLostDAO getLostsByCustName String custname客户名称 int size输出条数 int page页码 List(CstLost) 分页查询 update int lostid流失客户ID String 流失说明 String 流失类型 修改流失类型和流失原因 findCount int 查询总的条数 IOrde
32、rDAO findCount int 查询总的条数 getOrdersByCustName String custname客户名称 int size输出条数 int page页码 List(CstOrder) 根据客户名称分页查询 getpagenum int size,int pagenum int 根据条数和页码获得存在的页码 IActiveDAO addActive CstActivity(交往记录) 添加交往记录
33、 delete int id交往记录的ID 根据主键删除交往记录 getActives String custname客户名称 根据客户名称查询交往记录列表 update CstActivity(交往记录) 更新交往记录信息 com。client.daoimpl CstCustomerDAO findAll List(CstCustomer) 查询所有客户信息 findCstsByPS p
34、agesize(每页显示的条数) List(CstCustomer) 分页查询 pagenum(第几页) findCstsByCst CstCustomer(客户类的对象) List(CstCustomer) 模糊查询 CstLinkManDAO addLink CstLinkman(联系人对象) 新增联系人 delete int l
35、inkmanid联系人的ID 根据联系人主见删除联系人 getLinks String custname客户名称 List(CstLinkman) 根据客户名称获得联系人列表 update CstLinkman(联系人对象) 更新联系人信息 CstLostDAO getLostsByCustName String custname客户名称 int size输出条数 int page页码 List(CstLost) 分页查询
36、 update int lostid流失客户ID String 流失说明 String 流失类型 修改流失类型和流失原因 findCount int 查询总的条数 OrderDAO findCount int 查询总的条数 getOrdersByCustName String custname客户名称 int size输出条数 int page页码 List(CstOrder) 根据客户名称分页查询
37、 getpagenum int size,int pagenum int 根据条数和页码获得存在的页码 ActiveDAO addActive CstActivity(交往记录) 添加交往记录 delete int id交往记录的ID 根据主键删除交往记录 getActives String custname客户名称 根据客户名称查询交往记录列表 com。client。struts。action CstAction ICstBizI
38、mpl topage ActionForward 转发到客户列表 seachCst ActionForward 转发到客户列表 update ActionForward 转发到客户信息 ActiveAction IActiveBiz active 转发到交往记录列表 addActive 转发到交往记录列表 edit 转发到交往记录列表
39、 delete 转发到交往记录列表 LinkAction ILinkMan addLink 转发到联系人列表 ICstBizImpl delete 转发到联系人列表 update 转发到联系人列表 Link 转发到联系人列表 LostAction ILostBiz update 转发到流失客户列表 topage
40、 转发到流失客户列表 seach 转发到流失客户列表 OrderAction IOrderBiz execute 转到历史记录列表
41、 3程序1(标识符)设计说明 3。1程序描述 3.2功能及详细说明 l 客户信息列表 查询客户信息流程图 1。用户通过login。jsp页面进行登陆,然后通过ICstCustomerDAO接口中的FindCstsBy(S,P)的方法来查询第
42、一页要显示的客户信息,ICstCustomerDAO中的实现类CstCustomerDAO来实现查询数据库中的CstCustomer表(Hibernate中是对象),然后再存入Session中,再进行跳转页面,显示客户信息列表。 l 客户信息列表 翻页流程图 2.翻页功能,用户可以通过点击list。jsp上面的翻页(第一页、上一页、下一页、最后一页)来查看客户的信息。 共5条记录 每页 条 第页/共1页 第一页 上一页 下一页 最后一页 转到页GO l 搜索客户信息 用户可以填写要查询的项(客户编号、名称、地区(只选)、客户经理(只选)、客户等级(
43、只选))来查询客户信息,当用户单击查询按钮时,根据提交的路径cst.do转到cstAction 中,通过cstAction中的pathpage属性来设置页面显示客户信息条数的大小(采用依赖注入),CstAction中的IcstBizImpl接口属性来查找客户信息。 伪代码: CstCustomer cst=(CstCustomer)form; List customers=ibi.findCstsByCst(cst); request。getSession().setAttribute(”customers", customers); request.get
44、Session()。setAttribute("pagenum”,1); return mapping.findForward(”go"); 此处还用到了ActionForm自动封装. l 修改客户信息 更新客户信息流程图 1.通过edit.jsp页面来编辑客户信息(其中客户编号不能编辑,地区、客户经理、客户等级、客户满意度、客户信用度是只选的,文本框后面有”*”号的为必填项),然后再进行保存,提示保存成功或失败! l 联系人信息管理 1. 由客户信息列表通过url重写来将客户在客户列表中下标传给联系人的LinkAction,通过客户的信息
45、来查找客户的联系人,修改联系人的流程:linkman.jsp——LinkAction(edit方法)——LinkBiz(update方法)--LinkBizImpl(update方法)——LinkDao(update方法)—-LinkDaoImpl(update方法). 2. 新增联系人,过程基本与修改联系人的相似,只是调用的方法有些不同.例如(update就对应add) l 交往记录信息管理 1。ActiveAction通过从客户列表list。jsp页面传过来的index(客户在客户列表中的下标)来查询与客户相关联的第一页的交往记录(ActiveInfo),如何存入session中(a
46、ctives), 在activelist。jsp页面中,循环显示,并可以分页显示。客户经理可以点击新建按钮来新增交往记录,输入项的设计和javascript的判断。通过保存按钮来进行保存,流程:addactive.jsp—-ActiveAction(add方法)—-ActionForm自动封装到form——ActiveBiz(add方法)—-ActiveBizImpl(add方法)——ActiveDao(add方法)——ActiveDaoImpl(add方法). 2.修改交往记录信息,流程与新增交往记录基本相同,就调用的方法有些不同,例如(add就对应update) l 查看历史记录
47、1.历史记录列表时根据用户点击的客户来查询数据库的,在客户列表list。jsp页面中通过url重写传一个下标给OrderAction,然后根据客户信息来查询与之相关的历史记录。通过设置query的FirstResult和MaxResult来实现分页功能,用户可点击orders.jsp中的历史记录详情来查看此次历史记录的详细信息,流程:orders。jsp——OrderAction(lookup方法)--OrderBiz(getOrder方法)—-OrderBizImpl(getOrder方法)——OrderDao(getOrder方法)—-OrderDaoImpl(getOrder方法)。
48、 3.3性能 3。4输人项 给出对每一个输入项的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、输入的方式.数量和频度、输入媒体、输入数据的来源和安全保密条件等等. 3。5输出项 给出对每一个输出项的特性,包括名称、标识、数据的类型和格式,数据值的有效范围,输出的形式、数量和频度,输出媒体、对输出图形及符号的说明、安全保密条件等等。 3.7流程逻辑 用图表(例如流程图、判定表等)辅以必要的说明来表示本程序的逻辑流程。 3.8接口 用图的形式说明本程序所隶属的上一层模块及隶属于本程序的下一层模块、子程序,说明参数赋值和调用方式,说明与本程序相直接关联的数据结构(数据库、数据文卷)。 3。13测试计划 3.14尚未解决的问题 4程序2(标识符)设计说明 用类似设计程序1的方式,设计第2个程序乃至第N个程序的说明。 。.。.。。 22






