实验09《训练功能的流程控制编程》实验指导书
文/尚小卫
【工作目标】
1 完成期限:4小时。
2 工作成果:实现业务流程的管理和控制
完善业务功能
根据原始版完成全部界面功能。
本次实验成果是使用训练控制类Practice编辑和操作训练流程控制数据。包括:
实现训练流程类的数据编辑界面。
实现训练流程类的数据显示界面。
使用训练控制类用来控制业务流程。
掌握标准组件训练控制类Practice。
-标准BT组件 btSHFUnitPractice、 btSHFUnitPractices
3 验收要求:接口规范,程序运行稳定,信息入库。
验收功能:根据原始版验收更新版的业务流程:
验收内容:全部业务流程。
验收要求:实现到业务功能。
1 把UI组装到应用程序中。
2 将未实现的部分使用土黄色显示,已实现的功能用新颜色标识出来。
3 对照原始版可以逐项运行对应的功能和功能点。
编程实现:完成训练控制类的编辑和显示界面模块。
验收内容:
实现一个训练控制类Practice的编辑窗口--编辑自己小组
实现一个训练控制类Practice的显示窗口--显示自己小组
使用训练控制类用来控制业务流程。
在实验窗体中添加训练控制类编辑和显示的实验业务流程。
验收要求:
1 使用训练控制类Practice的编辑窗口向数据库添加自己业务流程控制数据(时间、分值、次数)。
2 显示和选择流程控制项目。
3 演示选定的流程控制数据运行和控制自己项目的运行流程。
编辑--选择--训练--结束数据
4 会引用--普通;会自编--技术骨干。
程序列表:V07-2.09版,添加业务流程编辑、显示界面和业务流程控制实验功能。
工作日志:与模板一致,Word文档实现。
1 日志内容:工作项目名称、开始时间、结束时间。完成那些具体工作。
2 验收要求:Word 文档,格式与模板相同。
实验报告:
1 报告内容:图示纪录实际操作步骤,重点是编程实验部分的各个步骤。
2 验收要求:其他同学可以按照提交的实验报告重复实现相同的实验。
项目验收:开始结题验收--自报(申请结题和作业指导)、顺序验收。
1 已经完成全部原始版和升级版业务流程。
2 已经完成8的个实验全部通过审核。
3 顺序验收:L100初级任务。
4 作业指导:申请作业指导的同学请到小谢安排时间,针对技术主管解决不了的问题。
【实验目的】
本实验为处理流程实践:
首先,学生需要掌握如何管理一个局部处理流程边界条件;
其次,学生需要掌握如何使用这些边界条件控制处理流程的运行。
【实验环境与工具】
Microsoft Visual Studio .NET 2008
C#编程语言
《尚府教学》实验工具
-标准BT组件 btSHFUnitPractice、 btSHFUnitPractices
训练类btSHFUnitPractice说明
public btSHFUnitPractice();
public btSHFUnitPractice(int id);
public btSHFUnitPractice(int id, string unm, string ucd, int lnm);
public btSHFUnitPractice(string unm, string ucd, int lnm, int lTm, int lSc, int lv, string evl);
public btSHFUnitPractice(int pid, int uid, int id, string nm, string unm, string ucd, string uct, int lnm, int lTm, int lSc, int lv, string evl);
public int DifLevel { get; set; }
public string Evaluation { get; set; }
public int LimitNumber { get; set; }
public int LimitScore { get; set; }
public int LimitTime { get; set; }
public int ProgramID { get; set; }
public int UnitID { get; set; }
public string UnitPracticeCode { get; set; }
public string UnitPracticeContent { get; set; }
public int UnitPracticeID { get; set; }
public string UnitPracticeName { get; set; }
public string UnitPracticeNumber { get; set; }
public void CopyToMe(btSHFUnitPractice up);
public override string ToString();
训练管理类btSHFUnitPractices说明
public btSHFUnitPractices();
public btSHFUnitPractices(string callStr);
public int AddOne(btSHFUnitPractice myItem);
public int DeleteOne(int itemId);
public ArrayList GetAll();
public btSHFUnitPractice GetOne(int upId);
public void ReadOne(int itemId);
public string ToSqlSelectString();
public int UpdateOne(btSHFUnitPractice myItem);
【实验过程与步骤】
准备工作:存档、升级、创建第8版作业文件夹。
编程实验
完善全部业务流程到业务环节:
UI项目
补齐功能:按照原始版或用户需求列表检查各个窗体上的各个功能是否具备,补齐所有不足的功能(本节课要求实现补齐的功能)。
调整形式:调整界面功能的表现形式与原始版一致。
演示功能:完善演示程序,演示原始版业务流程和业务功能。
组装应用:按照原始版业务功能,组装应用程序的V07-2.09版应用程序。
注:
1 如果业务功能已经实现,可以跳过演示部分直接运行已经完成的业务功能。
2 未实现的功能背景设置为土黄色,实现演示功能的功能背景设置为橙色,已经完成的业务功能背景设置为蓝色,通过审核的业务功能背景设置为绿色。
实验程序项目
在实验窗体上完善各个业务流程,用规定色彩标识各个业务环节的启动按钮。
UI项目添加业务模块
实现训练流程类的数据编辑窗体:显示标准训练流程类(btSHFUnitPractice)各项说明信息,实现编辑功能。
实现训练流程类的数据显示窗体:显示标准训练流程类(btSHFUnitPractice)各项说明信息和数据内容。
BT/UI项目完善处理流程控制
初始化功能
初始化功能是在创建对象时候需要完成的处理工作,一般用来设置工作环境。键盘训练例:
/// <summary>初始化单元训练
///
/// </summary>
private void InitializePractice()
{
// 单元成绩对象方法:用单元练习要求初始化单元成绩对象。
//myUnitScore = InitialByPractice(appleUnitPract);
this.myUnitScore.ProgramID = callMeLog.LoginProgramID;
this.myUnitScore.StudentID = callMeLog.UserID;
this.myUnitScore.UnitPracticeID = callMeLog.LoginUnitID;
this.myUnitScore.ClearCouts();
// 用初始化的单元成绩初始化窗体。
//UnitScoreToWindow(appleUnitScore);
// 单项成绩对象方法:用单元练习要求初始化测验题目对象。
//appleQuestion.QuestionDiff = callMePractice.DifLevel;
//appleQuestion.QuestionNumber = callMePractice.UnitPracticeNumber;
//appleQuestion.QuestionCode = callMePractice.UnitPracticeCode;
//appleQuestion.QuestionScore = 100 / callMePractice.LimitNumber;
// 用空问题初始化窗体问题区。
//labelNumber01.Text = "0";
//labelNumber02.Text = "0";
//labelOperator.Text = "+";
//textBoxAnswer.Text = "";
// 初始化单元成绩,设置训练进入时刻(不是练习开始时刻)。
this.myUnitScore.StartDateTime = DateTime.Now;
this.myUnitScore.PracticeTime = 0;
boolStartFlag = false;
/// 设置单元练习要求
/// 设置出题要求(难度、类型等)
/// 单元成绩清空
/// 单项成绩清空
/// 窗体清空
/// 等待开始命令 空格键或点击开始
}//Initialize
启动功能
启动功能一般是用来设置每个业务循环的工作边界,在本例中完成设置控制次数,启动计时,清理计数器等工作。键盘训练例:
/// <summary>启动新单元练习
///
/// </summary>
private void StartUnitPractice()
{
///单元成绩清零
this.myUnitScore.ProgramID = callMeLog.LoginProgramID;
this.myUnitScore.StudentID = callMeLog.UserID;
this.myUnitScore.UnitPracticeID = callMeLog.LoginUnitID;
this.myUnitScore.ConfigID = callMeLog.UserLoginID;
//this.myUnitScore.TotalNumber = callMePractice.LimitNumber;
this.myUnitScore.ClearCouts();
///登记单元开始时间
this.myUnitScore.StartDateTime = DateTime.Now;
this.myUnitScore.PracticeTime = 0;
///启动单元计时
this.boolStartFlag = true;
this.timer计时.Enabled = true;
///启动新题流程
//this.StartNewQuestion();
}//StartUnitPractice
查验功能
查验是处理流程内部的监测点,检查处理流程是否到达控制边界,以确定是继续处理流程还是终止处理流程。
键盘训练为例:
// 按键控制的按键监测
switch (e.KeyValue)
{
case 20: strC = " "; break;
case 27: intIndex--; EndPractice(); this.Hide(); break;
case 13: intIndex--; EndPractice(); this.Hide(); break;
... ...
default: strC = "Null"; boolSkip = true; break;
}//Switch
// 计时器中的时间监测
if (myUnitScore.PracticeTime >= callMePractice.LimitTime)
{
this.timer计时.Enabled = false;
this.EndPractice();
//this.PracticeControl();
}
// 计数器中的次数监测
if (intIndex > intKeysTotall)
{
intIndex--;
EndPractice();
this.Close();
}
结束功能
结束处理功能是处理流程到达控制边界后需要完成的业务处理。
/// <summary>结束单元练习
///
/// </summary>
private void EndPractice()
{
//停止计时
timer计时.Enabled = false;
//计算时间
TimeSpan ts = DateTime.Now.Subtract(myUnitScore.StartDateTime);
myUnitScore.PracticeTime = (int)ts.TotalMilliseconds;
// 登记成绩
myUnitScore.TotalNumber = this.intKeysTotall;
myUnitScore.CompleteNumber = this.intIndex;
myUnitScore.RightNumber = this.intRightNumber; ;
myUnitScore.ErrorNumber = intKeysTotall - intRightNumber;
myUnitScore.CorrectRate = (int)(Convert.ToDouble(intRightNumber) / intKeysTotall * 100);
//myUnitScore.Speed = (int)(allch / (Convert.ToInt32(usedtime.Substring(0, 2)) + Convert.ToInt32(usedtime.Substring(3, 2)) / 60.0));
// 评价成绩
myUnitScore.DoEvaluation();
// 保存成绩
btSHFUnitScores us = new btSHFUnitScores();
us.AddOne(myUnitScore);
// 停止处理流程;
boolStartFlag = false;
// 启动下一业务环节--进入成绩窗口
uiTyping02_Score fr = new uiTyping02_Score(callMeForm, callMeLog, callMeKeyString, myUnitScore, intKeysTotall, intRightNumber, this.label计时.Text);
fr.Show();
this.Hide();
}//EndPractice
实验项目编程
添加训练流程类的实验流程:编辑-显示-选择-训练-进度显示。
冒烟试验
启动应用程序--对照原始版和用户需求,检查到业务功能实现程度,在需求列表中用色彩标识出来。
启动作业程序--选择实验程序,检查训练流程数据编辑、显示窗体,检查训练流程类的实验流程。
编写技术文档
程序列表:
修改日期和版本编号;V07-2.09
根据升级版实验窗体新增核心业务流程及实验功能后实现的V07-2.09版程序完善程序列表:
UI和BT项目--训练流程类的数据编辑窗体和显示窗体。
教学实验项目--SHFXXX_TestV062新增的训练流程类的实验流程。
完成工作文件
工作日志:1 实际工作日日期:开始时间、结束时间、工作项目名称和内容。
实验报告:1 报告内容:图示纪录实际操作步骤,重点是编程实验部分的各个步骤。
准备提交作业
程序代码1项:选定解决方案-右键-清理解决方案-关闭VS2008
技术文档3项:将项目需求列表、程序列表、数据字典添加到源程序文件夹。
工作文档2项:将工作日志、实验报告添加到源程序文件夹。
小组提交1项:选定源程序文件夹-右键-压缩打包-完成V07-2.08版源程序-保存-提交组长审核。
邮件提交2项:技术文档、工作文档发送到作业邮箱,分别独立发送,要求作业发送格式正确。
截至时间:2010年06月02日 23:50