重庆正大软件学院软件系《MVC 框架程序设计》电子教案
重庆正大软件职业技术学院教案(项目类)
授课对象
系
别
软件系
本次课
学时
4 学时
年级
班次
大二
章节题目
第 7 章 项目编码
目的要求(含技能
要求)
理解销售管理模块订货单增删改查功能的业务流程
理解销售管理模块订货单增删改查功能的程序流程
通过练习理解 SSH 的框架组件及运行流程
本节重点
理解 SSH 的框架组件及运行流程
本节难点 理解销售管理模块订货单增删改查功能的业务流程
教学方法
项目教学法
教学用具
机房、屏幕广播
问题引入
通过第六章的详细设计文档,从而引出本次课程。
难点与重点讲解方法
引导、分析、讲解、实作演示
本次课小结
课程小结
教后礼记
重庆正大软件学院软件系《MVC 框架程序设计》课程组
重庆正大软件学院软件系《MVC 框架程序设计》电子教案
讨论、
思考题、
作业
(
含实训作业
)
完成本次课的课堂任务
填写实验报告
任务介绍(5 分钟)
根据需求分析和设计使用 SSH 框架实现销售管理模块订货单增加、修改、查询、删除
功能。
任务解析(50-60 分钟)
1. 订货单表映射文件 Stockorder.hbm.xml 编写
2. 订货单实体映射类 Stockorder 编写
3. 前台订货单增删改查页面编写
4. 后台业务控制器(action 类)StockorderAction 编写
5. 订货单 struts 文件的配置
6. 用 dwr 框架实现订货单编号重复性验证的 dwr.xml 编写
7. 后台业务处理层接口 IStockorderService 编写
8. 后台业务处理层实现类 StockorderService 编写
9. 后台持久化层接口 StockorderDao 编写
10. 后台持久化层实现类 StockorderDao 编写
11. Spirng 配置文件 applicationContext_beans.xml 的配置
详细步骤
1. 订货单表映射文件 Stockorder.hbm.xml 编写
<hibernate-mapping>
<class name="com.zds.slms.domain.Stockorder" table="stockorder">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
重庆正大软件学院软件系《MVC 框架程序设计》课程组
重庆正大软件学院软件系《MVC 框架程序设计》电子教案
</id>
<many-to-one name="employee" class="com.zds.slms.domain.Employee"
fetch="select">
<column name="handleoperatorid" not-null="true">
<comment>员工编号</comment>
</column>
</many-to-one>
<many-to-one name="merchandise"
class="com.zds.slms.domain.Merchandise" fetch="select">
<column name="merchandiseid" not-null="true">
<comment>商品编号</comment>
</column>
</many-to-one>
<many-to-one name="client" class="com.zds.slms.domain.Client"
fetch="select">
<column name="clientid" not-null="true">
<comment>客户编号</comment>
</column>
</many-to-one>
<property name="code" type="string">
<column name="code" length="11" not-null="true">
<comment>订单编号</comment>
</column>
</property>
<property name="merchandisenumber" type="int">
<column name="merchandisenumber" not-null="true">
<comment>订货数量</comment>
</column>
</property>
<property name="orderdate" type="string">
<column name="orderdate" length="10" not-null="true">
<comment>订货日期</comment>
</column>
</property>
</class>
</hibernate-mapping>
2. 订货单实体映射类 Stockorder 编写
public class Stockorder implements java.io.Serializable {
private Integer id;
private Employee employee;
private Merchandise merchandise;
private Client client;
private String code;
private int merchandisenumber;
重庆正大软件学院软件系《MVC 框架程序设计》课程组
重庆正大软件学院软件系《MVC 框架程序设计》电子教案
private String orderdate;
public Stockorder() {
}
public Stockorder(Employee employee,Merchandise merchandise,Client
client,String code,int merchandisenumber,String orderdate){
this.employee = employee;
this.merchandise = merchandise;
this.client = client;
this.code = code;
this.merchandisenumber = merchandisenumber;
this.orderdate = orderdate;
}
//省略成员变量的 get/set 方法
}
3. 前台订货单增删改查页面编写
订货单新增页面 addStockorder.jsp 页面的关键代码如下:
<title>订货单</title>
<link rel="stylesheet" href="css/main.css" type="text/css" />
<script language="javascript" src="script/main.js"></script>
<script type='text/javascript'
src='dwr/interface/stockorderAction.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type="text/javascript">
var textAmount;
var textCode;
var codeChk = false;
function init() {
textCode = document.getElementById("code");
textAmount = document.getElementById("amount");
textCode.focus();
}
function out_code() {
codeChk = false;
if (trimString(textCode.value).length>0 &&
trimString(textCode.value).length<12){
stockorderAction.findStockorderByCode(textCode.value,function(ret){
if (ret > 0) {
show_message("msg_code","0",' 输 入 的 编 号
['+textCode.value+']重复请重新输入!');
codeChk = false;
} else {
show_message("msg_code","1",'输入正确!');
重庆正大软件学院软件系《MVC 框架程序设计》课程组
重庆正大软件学院软件系《MVC 框架程序设计》电子教案
codeChk = true;
}
});
} else {
show_message('msg_code','0',' 编 号 不 能 为 空 且 不 能 超 过 11 位 长
度!');
codeChk = false;
}
}
function out_amount() {
var chk = false;
var exp = /[^\d]/;
if (!exp.test(textAmount.value) && textAmount.value>0 &&
textAmount.value<999){
show_message("msg_amount","1",'输入正确!');
chk = true;
} else {
show_message('msg_amount','0','进货数量必须输入大于零小于 999
的整型数字形式');
}
return chk;
}
function formSubmit() {
var chk = false;
var chkRetAmount = out_amount();
var chkRetDate = out_pickerDate('p_date','msg_date','日期不能为
空!');
var
chkRetMerchandise=out_chkEmpty('merchandise','msg_merchandise','商品不能为
空!');
var chkRetEmployee=out_chkEmpty('employee','msg_employee',' 经
手人不能为空!');
var chkRetClient = out_chkEmpty('client', 'msg_client', ' 供应
商不能为空!');
if (codeChk && chkRetAmount && chkRetEmployee && chkRetClient
&& chkRetDate && chkRetMerchandise){
chk = true;
}
return chk;
}
dojo.event.topic.subscribe("/value", function(textEntered, date,
widget) {
out_pickerDate('p_date', 'msg_date', '日期不能为空!');
});
重庆正大软件学院软件系《MVC 框架程序设计》课程组