资源描述
Tarena
[键入文档标题]
[键入文档副标题]
实训成绩
批阅教师
日 期
实 训 报 告
课程名称 SSH三大框架项目实训
专业班级
学 号
学生姓名
指导教师
实训地点
2013 年 12 月 27日
实训成绩
批阅教师
日 期
实 训 报 告
课程名称 Java设计模式实训
专业班级
学 号
学生姓名
指导教师
实训地点
2013 年 10 月 25 日
实训成绩
批阅教师
日 期
实 训 报 告
课程名称 认证实训
专业班级
学 号
学生姓名
指导教师
实训地点
2014 年 1 月 10 日
实训成绩
批阅教师
日 期
实 训 报 告
课程名称 Java EE 项目实训
专业班级
学 号
学生姓名
指导教师
实训地点
2013 年 11 月 24 日
《NetCTOSS电信计费系统》需求说明书
目录
1. 引言 1
1.1. 编写目的 1
2. “资费管理“模块 1
2.1. 用例图 1
2.2资费浏览 2
2.3资费排序 3
2.5 删除资费 4
2.6 资费详细 4
2.7 增加资费 5
3 “帐务账号管理“模块 6
3.1 用例图 6
3.2 帐务账号浏览 7
3.3查询帐务账号 8
3.4 暂停帐务账号 9
4“业务账号管理“模块 9
4.1 用例图 9
4.2 业务账号浏览 10
4.3 查询业务账号 11
4.4 暂停业务账号 11
4.5 开通业务账号 12
5主要功能代码 13
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主要功能代码
15 / 16
/**
* 可以继承ActionSupport,这个类是Struts2默认调用
* 的Action类,它里面提供了一些常用的常量等。
*/
public class CreateValidateCodeAction
extends BaseAction {
// output
private InputStream imageStream;
public String execute() {
// 1.调用工具类,生成验证码及图片
Map<String, BufferedImage> imageMap =
ImageUtil.createImage();
// 2.从imageMap中取到验证码,并放入session
String imageCode =
imageMap.keySet().iterator().next();
session.put("imageCimageCode);// 3.从imageMap中取到图片,转为输入流BufferedImage imageMap.get(imageCode);
try {
imageStream =
ImageUtil.getInputStream(image);
} catch (IOException e) {
e.printStackTrace();
return "error";
}
return "success";
}
public InputStream getImageStream() {
return imageStream;
}
public void setImageStream(InputStream imageStream) {
this.imageStream = imageStream;
package com.tarena.dao.account;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.tarena.dao.DAOException;
import com.tarena.entity.Account;
import com.tarena.util.DBUtil;
public class AccountDAOImpl implements IAccountDAO {
public static void main(String[] args)
throws Exception {
IAccountDAO dao = new AccountDAOImpl();
Account acc =
dao.findByIdcardNo("610121198906041115");
System.out.println(
acc.getId() + " " +
acc.getRealName()
);
}
public List<Account> findByCondition(
String idcardNo,
String realName,
String loginName,
String status,
int page, int pageSize)
throws DAOException {
// 封装查询条件的值List<Object> params =
new ArrayList<Object>();
// 动态拼SQL,主要是处理其条件
StringBuffer sb = buildFindSQL(
idcardNo, realName,
loginName, status,
page, pageSize, params);List<Account> accs =
new ArrayList<Account>();
Connection con = DBUtil.getConnection();
try {
PreparedStatement ps = con.prepareStatement(sb.toString());
for(int i=0;i<params.size();i++){
ps.setObject(i+1, params.get(i));
}
ResultSet rs = ps.executeQuery();
while(rs.next()) {
Account acc = createAccount(rs);accs.add(acc);
}
} catch (SQLException e) {
e.printStackTrace();throw new DAOException(
"查询账务账号失败!", e);
} finally {
DBUtil.closeConnection();
}
return accs;
}
private StringBuffer buildFindSQL(
String idcardNo,
String realName,
String loginName,
String status,
int page, int pageSize,List<Object> params) {
StringBuffer sb = nStringBuffer();
sb.append("select * from (");
sb.append("select a.*,rownum r from account a where 1=1 ");
if(idcardNo != null && idcardNo.length() > 0) {
sb.append("and idcard_no=? ");
params.add(idcardNo);
}
if(realName != null
&& realName.length() > 0) {
sb.append("and real_name=? ");
params.add(realName);
}if(loginName != null
&& loginName.length() > 0) { sb.append("and login_name=? ");params.add(loginName);
}
if(status != null&& !status.equals("-1")) {
// 下拉选当不为空或者不是全部选项时,我们才拼条件
sb.append("and status=? ");
params.add(status);
}
sb.append("and rownum<? ");
int nextMin = page*pageSize+1;params.add(nextMin);sb.append(") where r>? ");
int lastMax = (page-1)*pageSize;
params.add(lastMax);
System.out.println(sb.toString());return sb;}
private Account createAccount(ResultSet rs)
throws SQLException {
Account a = new Account();
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"));
return a;
}
public int findTotalPage(
String idcardNo,
String realName,
String loginName,
String status,
int pageSize)
throws DAOException {
List<Object> params =
new ArrayList<Object>();
// 拼查询总行数的SQLStringBuffer sb = new StringBuffer();sb.append("select count(*) from account where 1=1 ");
if(idcardNo != null&& idcardNo.length() > 0) {
sb.append("and idcard_no=? ");params.add(idcardNo);
} if(realName != null
&& realName.length() > 0) {
sb.append("and real_nam? ");
params.add(realName);}if(loginName != null&& loginName.length() > 0) {
sb.append("and login_name=? ")params.add(loginName);
}if(status != null
&& !status.equals("-1")) {
sb.append("and status=? ");params.add(status);}
Connection DBUtil.getConnection();
try {
PreparedStatement ps =
con.prepareStatement(sb.toString());for(int i=0;i<params.size();i++){ps.setObject(i+1, params.get(i));}
ResultSet rs = ps.executeQuery();
if(rs.next()) {
int rows = rs.getInt(1);
if(rows%pageSize == 0) {return rows/pageSize;} else {
return rows/pageSize+1;}}
} catch (SQLException e) {
e.printStackTrace();
throw new DAOException(
"查询总页数失败!",e);
} finally {
DBUtil.closeConnection();
}return 0;
}
public void startAccount(int id) throws DAOException { String sql = "update account set status='0'," +
"pause_date=null where id=?";Connection conDBUtil.getConnection();
try { con.setAutoCommit(false);
PreparedStatement ps =
con.prepareStatement(sql);
ps.executeUpdate();
mit();
} catch (SQLException e) {
e.printStackTrace();
try {
con.rollback();
}
展开阅读全文