实训Netctoss.docx
《实训Netctoss.docx》由会员分享,可在线阅读,更多相关《实训Netctoss.docx(21页珍藏版)》请在冰豆网上搜索。
实训Netctoss
Tarena
[键入文档标题]
[键入文档副标题]
实训成绩
批阅教师
日期
实训报告
课程名称SSH三大框架项目实训
专业班级
学号
学生姓名
指导教师
实训地点
2013年12月27日
实训成绩
批阅教师
日期
实训报告
课程名称Java设计模式实训
专业班级
学号
学生姓名
指导教师
实训地点
2013年10月25日
实训成绩
批阅教师
日期
实训报告
课程名称认证实训
专业班级
学号
学生姓名
指导教师
实训地点
2014年1月10日
实训成绩
批阅教师
日期
实训报告
课程名称JavaEE项目实训
专业班级
学号
学生姓名
指导教师
实训地点
2013年11月24日
《NetCTOSS电信计费系统》需求说明书
1.引言
1.1.编写目的
本文档的目的是分析NetCTOSS项目的系统需求,确定业务范围和核心功能,定义项目的专业名词,为后续的系统设计人员、开发人员和测试人员提供功能需求和非功能需求的详细定义,为测试人员提供测试用例设计的功能参考。
2.“资费管理“模块
2.1.用例图
NetCTOSS系统中”资费管理”模块的用例图如图-7所示。
2.2资费浏览
2.3资费排序
2.4启用资费
2.5删除资费
2.6资费详细
2.7增加资费
3“帐务账号管理“模块
3.1用例图
NetCTOSS系统中”帐务账号管理”模块的用例图如图所示。
3.2帐务账号浏览
3.3查询帐务账号
3.4暂停帐务账号
4“业务账号管理“模块
4.1用例图
NetCTOSS系统中”业务账号管理”模块的用例图如图所示。
4.2业务账号浏览
4.3查询业务账号
4.4暂停业务账号
4.5开通业务账号
4.6删除业务账号
5主要功能代码
/**
*可以继承ActionSupport,这个类是Struts2默认调用
*的Action类,它里面提供了一些常用的常量等。
*/
publicclassCreateValidateCodeAction
extendsBaseAction{
//output
privateInputStreamimageStream;
publicStringexecute(){
//1.调用工具类,生成验证码及图片
MapimageMap=
ImageUtil.createImage();
//2.从imageMap中取到验证码,并放入session
StringimageCode=
imageMap.keySet().iterator().next();
session.put("imageCimageCode);//3.从imageMap中取到图片,转为输入流BufferedImageimageMap.get(imageCode);
try{
imageStream=
ImageUtil.getInputStream(image);
}catch(IOExceptione){
e.printStackTrace();
return"error";
}
return"success";
}
publicInputStreamgetImageStream(){
returnimageStream;
}
publicvoidsetImageStream(InputStreamimageStream){
this.imageStream=imageStream;
packagecom.tarena.dao.account;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.ArrayList;
importjava.util.List;
importcom.tarena.dao.DAOException;
importcom.tarena.entity.Account;
importcom.tarena.util.DBUtil;
publicclassAccountDAOImplimplementsIAccountDAO{
publicstaticvoidmain(String[]args)
throwsException{
IAccountDAOdao=newAccountDAOImpl();
Accountacc=
dao.findByIdcardNo("610121198906041115");
System.out.println(
acc.getId()+""+
acc.getRealName()
);
}
publicListfindByCondition(
StringidcardNo,
StringrealName,
StringloginName,
Stringstatus,
intpage,intpageSize)
throwsDAOException{
//封装查询条件的值List
newArrayList
//动态拼SQL,主要是处理其条件
StringBuffersb=buildFindSQL(
idcardNo,realName,
loginName,status,
page,pageSize,params);Listaccs=
newArrayList();
Connectioncon=DBUtil.getConnection();
try{
PreparedStatementps=con.prepareStatement(sb.toString());
for(inti=0;ips.setObject(i+1,params.get(i));
}
ResultSetrs=ps.executeQuery();
while(rs.next()){
Accountacc=createAccount(rs);accs.add(acc);
}
}catch(SQLExceptione){
e.printStackTrace();thrownewDAOException(
"查询账务账号失败!
",e);
}finally{
DBUtil.closeConnection();
}
returnaccs;
}
privateStringBufferbuildFindSQL(
StringidcardNo,
StringrealName,
StringloginName,
Stringstatus,
intpage,intpageSize,List
StringBuffersb=nStringBuffer();
sb.append("select*from(");
sb.append("selecta.*,rownumrfromaccountawhere1=1");
if(idcardNo!
=null&&idcardNo.length()>0){
sb.append("andidcard_no=?
");
params.add(idcardNo);
}
if(realName!
=null
&&realName.length()>0){
sb.append("andreal_name=?
");
params.add(realName);
}if(loginName!
=null
&&loginName.length()>0){sb.append("andlogin_name=?
");params.add(loginName);
}
if(status!
=null&&!
status.equals("-1")){
//下拉选当不为空或者不是全部选项时,我们才拼条件
sb.append("andstatus=?
");
params.add(status);
}
sb.append("andrownum
");
intnextMin=page*pageSize+1;params.add(nextMin);sb.append(")wherer>?
");
intlastMax=(page-1)*pageSize;
params.add(lastMax);
System.out.println(sb.toString());returnsb;}
privateAccountcreateAccount(ResultSetrs)
throwsSQLException{
Accounta=newAccount();
a.setId(rs.getInt("ID"));
/*
*查询时,有默认为0的情况。
*若将0带到修改页面再保存,*会传递给修改方法一个推荐人ID为0的值,*由于该字段存在外键约束,找不到为0的那个*外键值,导致报错,因此这里做这样的判断。
**/
a.setRecommenderId(rs.getObject("RECOMMENDER_ID")==null?
null:
rs.getInt("RECOMMENDER_ID"));
a.setLoginName(rs.getString("LOGIN_NAME"));
a.setLoginPassword(rs.getString("LOGIN_PASSWD"));a.setStatus(rs.getString("STATUS"));a.setCreateDate(rs.getDate("CREATE_DATE"));a.setPauseDate(rs.getDate("PAUSE_DATE"));
a.setCloseDate(rs.getDate("CLOSE_DATE"));
DER"));("LAST_LOGIN_IP"));
returna;
}
publicintfindTotalPage(
StringidcardNo,
StringrealName,
StringloginName,
Stringstatus,
intpageSize)
throwsDAOException{
List
newArrayList
//拼查询总行数的SQLStringBuffersb=newStringBuffer();sb.append("selectcount(*)fromaccountwhere1=1");
if(idcardNo!
=null&&idcardNo.length()>0){
sb.append("andidcard_no=?
");params.add(idcardNo);
}if(realName!
=null
&&realName.length()>0){
sb.append("andreal_nam?
");
params.add(realName);}if(loginName!
=null&&loginName.length()>0){
sb.append("andlogin_name=?
")params.add(loginName);
}if(status!
=null
&&!
status.equals("-1")){
sb.append("andstatus=?
");params.add(status);}
ConnectionDBUtil.getConnection();
try{
PreparedStatementps=
con.prepareStatement(sb.toString());for(inti=0;iResultSetrs=ps.executeQuery();
if(rs.next()){
introws=rs.getInt
(1);
if(rows%pageSize==0){returnrows/pageSize;}else{
returnrows/pageSize+1;}}
}catch(SQLExceptione){
e.printStackTrace();
thrownewDAOException(
"查询总页数失败!
",e);
}finally{
DBUtil.closeConnection();
}return0;
}
publicvoidstartAccount(intid)throwsDAOException{Stringsql="updateaccountsetstatus='0',"+
"pause_date=nullwhereid=?
";ConnectionconDBUtil.getConnection();
try{con.setAutoCommit(false);
PreparedStatementps=
con.prepareStatement(sql);
ps.executeUpdate();
mit();
}catch(SQLExceptione){
e.printStackTrace();
try{
con.rollback();
}