计算机专业实习报告.docx
《计算机专业实习报告.docx》由会员分享,可在线阅读,更多相关《计算机专业实习报告.docx(39页珍藏版)》请在冰点文库上搜索。
计算机专业实习报告
中南大学实习报告
实习地点:
湖南省软件测评中心
专业班级:
信安1001班
*****
学号:
**********
带队老师:
段桂华、宋虹
一、实习情况概述
1、实习目的
1.1、锻炼自己的动手能力,将学习的理论知识运用于实践当中,反过来检验书本上理论的正确性。
将自己的理论知识与实践融合,进一步巩固、深化已经学过的理论知识,提高综合运用所学过的知识,并且培养自己发现问题、解决问题的能力,
2、实习时间
20013年8月26日—9月15日
3、实习单位
湖南省软件测评中心
4、实习的内容
JavaWeb的开发过程:
1.软件的开发周期
a.可行性分析(可行性分析报告)
b.需求分析(需求规格文档)
c.概要设计(概要设计文档,数据库的设计)
d.详细设计(详细设计文档,一般改到最后)
e.编码(只占很少的一部分)
f.测试
g.试运行
h.部署,运维
2.软件的分层
–视图层(view:
如jsp,html)
–控制层(controller)
–业务逻辑层(service)
–数据访问层(dao)
–数据层(bean)
3.分层的设计模式
modelI:
view/controller(jsp)
model(javaBean/EJB)
modelII:
view(jsp)
controller(servlet)
model(javaBean/EJB)
4常用的框架和技术
1Hibernate:
在基于MVC设计模式的JAVAWEB应用中,Hibernate可以作为模型层/数据访问层。
它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(PersistentObject,持久化对象)映射到数据库中的数据库,然后通过操作PO,对数据表中的数据进行增,删,改,查等操作。
除配置文件,映射文件和持久化类外,Hibernate的核心组件包括以下几部分:
a)Configuration类:
用来读取Hibernate配置文件,并生成SessionFactory对象。
b)SessionFactory接口:
产生Session实例工厂。
c)Session接口:
用来操作PO。
它有get(),load(),save(),update()和delete()等方法用来对PO进行加载,保存,更新及删除等操作。
它是Hibernate的核心接口。
d)Query接口:
用来对PO进行查询操。
它可以从Session的createQuery()方法生成。
e)Transaction接口:
用来管理Hibernate事务,它主要方法有commit()和rollback(),可以从Session的beginTrancation()方法生成。
Hibernate的运行过程
Hibernate的运行过程如下:
A:
应用程序先调用Configration类,该类读取Hibernate的配置文件及映射文件中的信息,并用这些信息生成一个SessionFactpry对象。
B:
然后从SessionFactory对象生成一个Session对象,并用Session对象生成Transaction对象;可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法对PO进行加载,保存,更新,删除等操作;在查询的情况下,可通过Session对象生成一个Query对象,然后利用Query对象执行查询操作;如果没有异常,Transaction对象将提交这些操作结果到数据库中。
Hibernate的运行过程如下图:
2log4j
log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIXSyslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
使用步骤:
a.将log4j.jar文件加入工程
b.编写一个log4j的配置文件(配置文件有两种格式:
properties文件或xml文件),放到类路径的根目录
c.在要记录日志的类,创建日志记录器
示例:
privatestaticfinalLoggerLOGGER=Logger.getLogger(LoginAction.class);
d.LOGGER调用对应的info,error,warn,debug等方法记录日志
A).Logger对象的获得或创建:
Logger被指定为实体,由一个String类的名字识别。
Logger的名字是大小写敏感的,且名字之间具有继承关系,子名用父名作为前缀,用点“.”分隔,例如x.y是x.y.z的父亲。
rootLogger(根Logger)是所有Logger的祖先,它有如下属性:
1.它总是存在的。
2.它不可以通过名字获得。
B)日志级别
每个Logger都被了一个日志级别(loglevel),用来控制日志信息的输出。
日志级别从高到低分为:
A:
off 最高等级,用于关闭所有日志记录。
B:
fatal 指出每个严重的错误事件将会导致应用程序的退出。
C:
error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
D:
warm 表明会出现潜在的错误情形。
E:
info 一般和在粗粒度级别上,强调应用程序的运行全程。
F:
debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
G:
all 最低等级,用于打开所有日志记录。
上面这些级别是定义在org.apache.log4j.Level类中。
Log4j只建议使用4个级别,优先级从高到低分别是error,warn,info和debug。
通过使用日志级别,可以控制应用程序中相应级别日志信息的输出。
例如,如果使用b了info级别,则应用程序中所有低于info级别的日志信息(如debug)将不会被打印出来。
3Struts
Struts是WEB程序MVC分层架构中的C,属于控制层,主要进行处理用户的请求,基于请求驱动。
获取用户的请求地址并将表单中的数据封装到Form对象后交给Action进行处理。
在Action中进行条用业务层处理具体的请求后将结果通过ActionMapping封装跳转地址返回给用户。
struts是对servlet的再次封装,使得更加灵活高效。
1、在新建的web工程中添加以下struts1.x jar包
antlr-2.7.6.jar、commons-beanutils.jar、commons-digester.jar、commons-fileupload.jar、commons-logging-1.0.4.jar、commons-validator.jar、jakarta-oro.jar、struts.jar。
2、web.xml进行如下配置
3、新建登陆页面login.jsp
4、新建登陆成功后的跳转页面loginSucces.jsp
5、新建登陆失败后的跳转页面loginError.jsp
6、新建LoginActionForm.java
7、新建LoginAction.java
8、配置struts-config.xml
4ajax
Ajax,使用它可以构建更为动态和响应更灵敏的Web应用程序。
该方法的关键在于对浏览器端的JavaScript、DHTML和与服务器异步通信的组合。
本文也演示了启用这种方法是多么简单:
利用一个Ajax框架(指DWR)构造一个应用程序,它直接从浏览器与后端服务进行通信。
如果使用得当,这种强大的力量可以使应用程序更加自然和响应灵敏,从而提升用户的浏览体验。
二实习任务
根据客户的要求,完成一个客户关系管理系统,任务分配如下:
编号
系统模块
简述
责任人
1
营销管理
销售机会管理
(查询,新建,编辑,删除,指派)
2
客户管理
客户开发计划
(查询,制定,执行,开发成功,终止开发)
3
客户信息管理
(查询,编辑,删除,管理联系人,管理交往记录)
4
服务管理
服务创建
服务分配
(查询,分配)
服务处理
(查询,处理)
服务反馈
(查询,反馈)
服务归档
(查询)
5
统计报表
客户构成分析
客户服务分析
6
基础数据
数据字典管理
(新增,编辑,删除)
7
系统管理
用户登录
三实验过程
(一)需求分析:
(1)概述
客户是公司最宝贵的资源,为了更好的发掘老客户的价值,并开发更多新客户,XX公司决定实施客户关系管理系统。
希望通过这个系统完成对客户基本信息、联系人信息、交往信息、客户服务信息的充分共享和规范化管理;希望通过对销售机会、客户开发过程的追踪和记录,提高新客户的开发能力;希望在客户将要流失时系统及时预警,以便销售人员及时采取措施,降低损失。
并希望系统提供相关报表,以便公司高层随时了解公司客户情况。
客户服务是一个涉及多个部门,存在一定流程的工作。
客户服务水平的高低决定着公司的核心竞争力。
该客户关系管理系统应提供一个客户服务在线平台,使客户服务处理过程中相关人员可以在线完成服务的处理和记录工作。
(2)功能需求
本系统包括:
营销管理、客户管理、服务管理、统计报表和基础数据五个功能模块。
另包括权限管理模块用于系统的用户、角色和相关权限。
系统功能为本说明书与附件Demo版界面描述中功能的并集。
在上述文件未明确描述的情况下,应能满足合同和相关投标书所描述的功能。
(二)系统说明
(1)概述
客户关系管理系统用于管理与客户相关的信息与活动,但不包括产品信息、库存数据与销售活动。
这三类数据将由XX公司X销售系统进行管理。
但本系统需要提供产品信息查询功能、库存数
据查询功能、历史订单查询功能。
(2)用户与角色
与本系统相关的用户和角色包括:
系统管理员:
管理系统用户、角色与权限,保证系统正常运行。
销售主管:
对客户服务进行分配。
创建销售机会。
对销售机会进行指派。
对特定销售机会制定客户开发计划。
分析客户贡献、客户构成、客户服务构成和客户流失数据,定期提交客户管理报告。
客户经理:
维护负责的客户信息。
接受客户服务请求,在系统中创建客户服务。
处理分派给自己的客户服务。
对处理的服务进行反馈。
创建销售机会。
对特定销售机会制定客户开发计划。
执行客户开发计划。
对负责的流失客户采取“暂缓流失”或“确定流失”的措施。
高管:
审查客户贡献数据、客户构成数据、客户服务构成数据和客户流失数据。
(3)系统功能
系统用例图如图所示:
(三)模块设计
营销管理模块包含销售机会的管理和对客户开发过程的管理,子用例图如图2所示。
营销的过程是开发新客户的过程。
对老客户的销售行为不属于营销管理的范畴。
客户经理有开发新客户的任务,在客户经理发现销售机会时,应在系统中录入该销售机会的信软件需求规格说明书8/53
息。
销售主管也可以在系统中创建销售机会。
所有的销售机会由销售主管进行分配,每个销售机会分配给一个客户经理。
客户经理对分配给自己的销售机会制定客户开发计划,计划好分几步开发,以及每个步骤的时间和具体事项。
制定完客户开发计划后,客户经理按实际执行请跨功能填写计划中每个步骤的执行效果。
在开发计划结束的时候,根据开发的结果不同,设置该销售机会为“开发失败”或“开发成功”。
如果开发客户成功,系统自动创建新的客户记录。
营销管理:
(1)创建销售机会
创建销售机会时需录入以下信息:
输入要素
在销售机会管理的列表页面列出所有状态为“未分配”的销售机会记录,可选择一条进行编辑。
在编辑页面,可以对机会来源、客户名称、成功机率、概要、联系人、联系人电话、机会描述进行编辑。
其他信息不可编辑。
处理流程
在列表页面选择“未分配”的销售机会进行编辑,跳转到编辑页面;在编辑页面填入更新的信息,提交表单,保存新的信息到数据库。
提示“保存成功”,或报告相应错误。
页面必填项未填时不允许提交表单。
状态为“未分配”的销售机会可以删除。
删除时需要判断当前登录用户为该销售机会的创建人,否则不可删除。
(2)客户开发计划
对“已指派”的销售机会制定开发计划,执行开发计划,并记录执行结果。
客户开发成功还将创建新的客户记录。
对“已指派”的销售机会制定开发计划,执行开发计划,并记录执行结果。
客户开发成功还将创建新的客户记录。
在制定开发计划时,应显示出销售机会的详细信息。
客户经理可以通过新建计划项,编辑已经有的计划项,即删除计划项来针对一个销售机会来制定客户开发计划。
每个计划项包括两个输入要素:
日期和计划内容,都是必输项。
日期的输入格式为
“2007-12-13”。
编辑计划项时,日期不可以编辑。
首先选择一“已指派”的销售机会进行指定计划的操作,然后制定计划。
提交并更新当前页面时在计划项列表中显示新建的计划项。
完成客户开发计划的制定后,客户经理开始按照计划内容执行客户开发计划,并按时记录执行结果。
某个客户开发计划执行过程中或执行结束后如果客户同意购买公司产品,已经下订单或者签订销售合同,则标志客户开发成功。
软件需求规格说明书16/53客户开发成功时,需修改销售机会的状态为“开发成功”。
并根据销售机会中相应信息自动创建客户记录。
客户管理:
客户信息是公司资产的构成部分之一,应对其进行妥善保管、充分利用。
软件需求规格说明书17/53每个客户经理有责任维护自己负责的客户信息,随时更新。
在本系统中,客户信息将得到充分的共享,从而发挥最大的价值。
有调查表明,公司的大部分利润来自老客户,开发新的客户成本相对较高而且风险相对较大。
因此我们有必要对超过6个月没有购买公司产品的客户应予以特殊关注,防止现有客户流失。
客户管理的子用例图如图9所示。
如下图所示,有“*”标记的为必输项。
地区、客户等级的候选项由数据字典维护;客户经理候选项为所有状态为“正常”的系统用户。
客户满意度和客户信用度候选项的值都是1~5。
每个客户可以有多个联系人。
新建联系人时要输入姓名、性别、职位和办公电话,必输。
还可输入手机号码和备注信息。
注意:
联系人是属于某个客户的。
编辑联系人时姓名、性别、职位和办公电话为必输项。
系统可以保存每个客户的交往记录。
客户经理完成客户服务后,需记录和客户交往的内容,特别是里程碑事件或有重大影响的事件。
添加一个客户交往记录时需要记录事件发生的日期、地点、概要和详细信息,还可以填写一个备注信息。
客户的历史订单数据是一个客户重要的信息。
本系统中不提供订单管理的功能。
订单数据需要从销售系统中读取。
读取时只读取订单状态为“已发货”或“已回款”的数据(对应订单记录状态为5或6)。
首先选择一个客户,然后查看这个客户的历史订单,再选择一条历史订单查看订单明细。
对每个订单可以查看明细。
在订单明细中需要显示订单的总金额。
显示样式如下图所示。
服务管理:
客户服务是客户管理的重要工作。
通过客户服务我们的销售团队可以及时帮助客户解决问题、打消顾虑,提高客户满意度。
还可以帮助我们随时了解客户的动态,以便采取应对措施。
当客户收到客户服务请求的时候,要创建一条服务单据。
服务单据录入界面如下图所示。
服务编号由系统自动生成;服务类型由数据字典维护,选择输入;创建人为当前登录用户;创建时间为当前系统时间。
服务添加成功后仍返回服务创建页面,显示空表单准备填写下一条服务。
服务添加成功后仍返回服务创建页面,显示空表单准备填写下一条服务。
销售主管对状态为“新创建”的服务单据进行分配,专事专管,分给的对象通过选择输入,候选项包括所有状态为“正常”的系统用户。
选择一条状态为“新创建”的服务单据,分配给专人。
服务分配给专人后,服务单据的状态修改为“已分配”。
需要记录分配时间。
被分配处理服务的客户经理负责对服务请求做出处理,并在系统中录入处理的方法。
首先查询得到状态为“已分配”的服务单据,选择一个进行处理。
填写处理方法后提交。
处理完成的服务单据状态改为“已处理”。
对状态为“已处理”的服务单据主动联系客户进行反馈,填写处理结果。
需要填写处理结果,并选择客户对服务处理的满意度。
客户满意度为1~5的值。
首先查询得到状态为“已处理”的服务单据,选择一个进行反馈。
可以根据客户、概要、服务类型、创建日期进行查询。
对每条服务单据还可以查看明细。
统计报表
对客户下单的总金额进行统计,了解客户对企业的贡献。
可以根据客户名称或年份查询,默认列出全部客户和所有年份订单金额的总和。
显示客户名称和该客户下单的总金额。
根据服务类型对服务进行统计。
可以输入年份,只统计该年的服务数据。
查看已经确认流失的客户流失记录。
可以根据客户名称和客户经理名称进行查询。
列出符合查询条件的已经确认流失的客户流失记录。
基础数据
对系统中需要已选择的方式输入的输入项的候选项,统一通过数据字典来配置。
比如服务类型、客户等级等。
每个数据字典项包括系统自动生成的编号、类别(如:
服务类型)、条目(如:
咨询)和值(如:
软件需求规格说明书45/531)构成。
数据字典项有的能编辑。
有的不可编辑,只能查看
对于可以编辑的数据字典项,可以修改其类别、条目和值。
还可以设为不可编辑。
在数据字典项的列表中,对可编辑的数据字典项显示“编辑”和“删除”的操作按钮。
本系统中没有产品数据,需要从销售系统中获得,可以根据产品的名称、型号、批次进行查询。
列出符合查询条件的产品信息。
为了处理客户服务的需要,本系统需要从销售系统中读取并查询库存数据。
可以根据产品和仓库进行查询。
列出符合查询条件的库存记录。
四非功能性需求
4.1技术需求
4.1.1软硬件环境需求
系统应可运行于Windows平台或Unix平台(数据库服务器运行于Windows平台)。
系统采用B/S架构,可通过浏览器访问,使用IE6.0或更高版本可顺利完成全部系统操作。
系统运行于局域网环境中。
系统采用的JavaSDK版本为6.0(或更高版本)。
系统数据库使用MSSQLServer2000(或更高版本)。
系统需要与X公司销售系统集成,访问其产品、库存和订单数据。
4.1.2性能需求
本系统在正常的网络环境下,应能够保证系统的及时响应:
统计报表模块相应功能响应时间不超过30秒。
其他模块相应功能响应时间不超过15秒。
4.1.3安全保密需求
本系统的系统架构,以及权限机制可以保证系统的安全性。
首先,从系统架构看,本系统采用B\S模型,从而使服务器数据源与客户端分离,保证了数据
的物理独立性;
其次,本系统的用户授权机制通过角色的定义管理实现,通过定义某些角色能进行的操作权限,
和定义用户拥有的角色,限定用户的操作权限,实现对用户的授权。
4.1.4可维护性和可扩展性
本系统的应用平台设计中选择B/S结构,采用基于JAVA技术并且符合JavaEE开发规范的系
统应用平台,并采用三层结构,使系统具有良好的可维护性和可扩展
(五)编码实现
1建立数据库
系统采用了oracle数据库
Oracle数据库的使用步骤
--连接到管理员用户
connectsystem/manager@orcl;
--connectsys/manager@orclassysdba;
--创建表空间
createtablespacecrm_ts
datafile'C:
\oracle\product\10.2.0\oradata\orcl\crm_ts.dbf'
size100m
autoextendon;
--创建临时表空间
createtemporarytablespacecrm_ts_temp
tempfile'C:
\oracle\product\10.2.0\oradata\orcl\crm_ts_temp.dbf'
size100m
autoextendon;
--创建用户
createusertestidentifiedbypwd
defaulttablespacecrm_ts
temporarytablespacecrm_ts_temp;
--授权
grantconnect,resourcetotest;
2.java连接数据库
java直连数据库的步骤
a.配置驱动(示例:
ojdbc5.jar配置好)
b.加载驱动类Class.forName("驱动类的完整包名类名")
c.从数据库获取连接(url,user,password)
d.创建语句集对象
e.用语句集对象发送sql语句到数据库执行(注意:
如执行的是查询语句,有结果集返回)
g.关闭资源
实现方法:
建立一个对象为访问数据库的方法的数据访问基础类
BaseDao()
获取数据库连接publicConnectionopenConn()
创建语句集对象publicStatementcreateStmt()
创建预编译语句集对象
publicPreparedStatementcreatePreStmt(Stringsql)
关闭语句集对象publicvoidcloseStmt()
关闭预编译语句集对象
publicvoidclosePreStmt()
关闭数据库连接
publicvoidcloseConn()
3.建立webproject项目
采用了mvcmodelII的设计模式
–编写bean()
–编写dao()
–编写service()
–编写action()
–编写jsp页面()
Bean层的编写
1.自定义与数据库存储类型相匹配的私有变量
调用工具来建立这些私有变量的set()get()方法
2.利用工具Hibernate去建立bean()
方法:
1.打开DBbrowser窗口,配置一个数据库连接
2.加入hibernate支持
3.将表反向生成bean
这里主要用到了hibernate.cfg.xml这个配置文件设置了连接数
据库的参数和一些连接数据库的方法
利用这个方法我们还可以生成一个对象的类和一个配置它的键值对
使得这个类可以设定了一些方法,来建立hql语句和就接收数据
Dao层编写
dao层主要负责的是为实现系统动能调用数据库的方法
1.建立sql语句:
如果是简单的访问数据库,那么就是
下面的Stringsql="s*fromsal_chance",否则就要用数据
库拼接的方法