实验07《训练功能的用户界面编程》实验指导书
文/尚小卫
【工作目标】
1 完成期限:4小时。
2 工作成果:实现一个游戏、训练业务流程的用户界面。
编程技术:
1 重点掌握窗体类的设计和实现方法。
2 掌握通过继承实现类似窗体的编程。
实现一个交互业务流程中各个训练和游戏业务环节的界面处理功能。
根据原始版整理完成全部UI界面。
训练和游戏环节的互动界面。
训练和游戏题目的编辑界面(不同题型管理)。
掌握重点功能程序模块:
-标准UI组件 uiQuestionEditSimple, uiSHF_CourseBase。
-标准BT组件 btSHFUnitPractice、btSHFUnitPractices、btSHFUnitScore、btSHFUnitScores。
3 验收要求:接口规范,程序运行稳定,信息入库。
功能实现:至少实现一个互动模块和一个题目管理模块。
模块的设计:模块结构清晰,流程完整:
程序模块--物理结构
模块常数
模块字段
构造函数
扩展属性
方法过程
事件过程
程序模块--处理流程
初始化、启动、互动处理、流程结束、异常处理。
要求完成的程序模块继承标准模块,并在父类的基础上扩展新的功能,而且随着标准模块的升级而升级。
形式和规范:要求能通过教师的题目窗口测试
数值题目
文字题目
图文题目
需求列表:V07-2.07版,完成应用程序部分,包括:原始版核心业务内容和继承标准组件扩展部分功能。
程序列表:V07-2.07版,内容与作业源程序一一对应。
工作日志:与模板一致,Word文档实现。
1 实际工作日日期:工作项目名称、开始时间、结束时间。完成那些具体工作。
实验报告:1 实验步骤:图示纪录实际操作步骤。
【实验的】
本实验为Windows界面编程实验,学生需要掌握对象编程,实现一组互动功能用户界面程序模块。
1 学生通过创建或扩展标准课程界面模块实现游戏和训练界面,进一步建立程序基本结构单位--程序模块的概念;
2 本次实验不再给出可重复的操作步骤,而只给出方法,学生要通过举一反三,逐步过渡到独立编程。
【实验环境与工具】
Microsoft Visual Studio .NET 2008
C#编程语言
《尚府教学》实验工具,标准组件V06-2.03版
-标准UI组件 uiPageEditSimple, uiSHF_CourseBase
-标准BT组件 btSHFUnitPractice、btSHFUnitPractices、btSHFUnitScore、btSHFUnitScores
【实验过程与步骤】
说明:Vnnn是最新版版本号。
准备工作
创建第7版源程序文件夹
存档:选定《任务名称 任务标识》源程序V07-2.06文件夹-右键-压缩-生成V07-2.06版压缩包。
升级:打开作业文件夹-选择第6版源程序文件夹-修改日期-修改版本号为V07-2.07,同时修改需求列表和程序列表文件的日期和版本编号。
注:存档V07-2.06压缩包中包含源程序、需求列表、程序列表,数据字典、日志、实验报告。
编程实验
实现一个完整的业务流程需要一组窗体和业务模块,包括内容选择、标准题目数据访问、交互界面、成绩管理等。具体业务流程的实现千差万别,本次实验不能照猫画虎,需要举一反三,发挥每个人的创新和独立开发能力来完成。现仅以“指法练习”为例,说明实验步骤如下:
业务说明
例1《键盘练习》业务说明
指法练习业务流程是键盘训练程序中键盘练习业务组的一个训练游戏,包括选择键组、指法练习、指法成绩和指法进度4个核心业务环节。
本次编程实验的重点是“指法练习”这一核心业务环节,这一环节的前置条件包括:
训练用户信息--对象SHF_BT.btSHFUserLogin shfUserLogin 描述相关数据和行为。
训练内容和要求信息--对象SHF_BT.btSHFUnitPractice shfUnitPractice 描述相关数据和行为。
这一环节返回结果包括:
训练成绩--对象SHF_BT.btSHFUnitScore shfUnitScore 描述相关数据和行为,成绩数据保存在数据库中。
训练过程记录--对象shfUserLogin 和 shfUnitScore 分别描述相关数据和行为。
关于btSHFUserLogin btSHFUnitPractice btSHFUnitScore 3个类的具体描述见数据字典。
“指法练习”这一业务环节,本身包括一个具体的业务流程,为区别起见叫做交互处理流程,这是一个事件驱动的处理流程,包括:
指法练习初始化
启动事件处理:启动指法练习
键盘交互处理:处理人机交互事件
结束事件处理:启动结束处理
例2《简易加法》业务说明
添加业务环节启动入口
在实验窗体SHFXXX_TestV062的tabControlUI中添加标签tabPage业务流程(本例中是“tabPage键盘练习”),在“tabPage键盘练习”添加各个业务模块的启动按钮。具体包括:
button选择键组、button指法练习、button指法成绩和button指法进度。
为每个入口按钮编程,举例如下:
private void button选择键组_Click(object sender, EventArgs e)
{
//输入:
shfUnitPractice = shfUnitPractices.GetOne(7); // 键盘练习 的 训练ID 是 7;
//处理:
uiTyping02_Option f = new uiTyping02_Option(this, shfUserLogin, shfUnitPractice);
f.Show();
}
private void button指法练习_Click(object sender, EventArgs e)
{
//输入:
//1 登录用户数据--置于 shfUserLogin 之中。
//2 单元训练要求--置于 shfUnitPractice之中。
//处理:
try
{
if (shfUnitPractice.UnitPracticeContent == null) shfUnitPractice.UnitPracticeContent = "abcdefgh";
uiTyping02 f = new uiTyping02(this, shfUserLogin, shfUnitPractice.UnitPracticeContent);
f.Show();
}
catch// Exception ex
{
this.Text = "按键训练异常 异常! ";
}
//输出:1 键盘训练成绩,存于数据库中。
}
private void button指法成绩_Click(object sender, EventArgs e)
{
if (shfUnitPractice.UnitPracticeContent == null) shfUnitPractice .UnitPracticeContent = "abcdefgh";
uiTyping02_Score f = new uiTyping02_Score(this, shfUserLogin, shfUnitPractice .UnitPracticeContent, shfUnitScore, 40, 39, "3:00");
f.Show();
}
private void button指法进度_Click(object sender, EventArgs e)
{
}
注:
1)这部分编程需要根据具体项目,由学生自己完成。
2)这部分根据进度逐步完成,每次添加一个模块。
添加业务环节程序模块
创建标准的业务窗体:在UI项目中,用继承标准课程窗体(SHF_UI.uiSHF_CourseBase)方式添加训练或游戏窗体,本例中创建了3个窗体。
键组选择窗体:uiTyping01_Option.cs,与按键练习使用相同的类。
指法练习窗体:uiTyping02.cs。
指法成绩窗体:uiTyping02_Score.cs。
指法进度窗体:待建中。
模块的设计:模块结构清晰,流程完整:
程序模块--物理结构
模块常数
模块字段
构造函数
扩展属性
方法过程
事件过程
程序模块--处理流程
初始化、启动、互动处理、流程结束、异常处理。
要求完成的程序模块继承标准模块,并在父类的基础上扩展新的功能,而且随着标准模块的升级而升级。
业务窗体中添加扩展控件
打开工具栏,添加所需要的控件。
为每个控件重新命名并调整格式、大小和布局等。
业务窗体中扩展功能方法
添加基本交互功能,包括:
对象信息到窗体的显示功能:把各个对象的信息显示到屏幕对应控件。
窗体信息到对象的输入功能:把窗体控件信息输入到对象相关属性。
添加业务处理环节相应功能,以“指法练习”为例,包括:
指法练习窗体初始化功能--根据训练内容(btSHFUnitPractice )初始化键组,构造随机分布的字符列表,初始化训练行等。
指法练习初始功能--根据用户信息(btSHFUserLogin )和训练要求(btSHFUnitPractice )设置练习环境,如进度,时间控制等。
启动指法练习功能--设置单元练习(btSHFUnitScore ),用户ID,练习ID,起始时间等,同时开启交互功能和计时功能。
键盘事件处理功能--响应和处理键盘输入并对键盘输入及字符正误的次数进行记录。
指法练习结束功能--当处理流程结束所需条件出现时,启动处理功能,包括:停止计时、登记完成时间、记录成绩、保存成绩、启动“指法成绩”业务环节等。
计时器功能--计时和定期更新交互窗口信息,如:剩余时间等。
注:以上部分环节,将在后续开发中移植到业务逻辑层处理。
添加练习内容编辑模块(略)
组装应用程序
将调试通过的业务模块添加到应用程序窗体中。
冒烟试验
启动作业程序--应用程序检查各项功能。
编写技术文档
需求列表:
修改日期和版本编号;V07-2.07
应用程序部分--核心业务部分完成的教学业务流程到产品功能点。
作业程序部分--添加升级版实验窗体新增加的核心业务窗体和功能。
程序列表:
修改日期和版本编号;V07-2.07
根据升级版实验窗体新增核心业务流程及实验功能后实现的V07-2.07版程序完善程序列表:
UI和BT项目--新增的业务模块。
UI项目--uiSHFXXX_AppMain应用程序新增的功能。
教学实验项目--SHFXXX_TestV062新增的核心业务流程,检查每个核心业务环节。
数据字典:
修改日期和版本编号;V07-2.07
增加的数据描述到功能点,如:图片等文件,保存到课程文件夹。
完成工作文件
工作日志:1 实际工作日日期:开始时间、结束时间、工作项目名称和内容。
实验报告:在实验步骤中添加主要步骤的抓图。
准备提交作业
程序代码1项:选定解决方案-右键-清理解决方案-关闭VS2008
技术文档2项:将项目需求列表、程序列表添加到源程序文件夹。
工作文档2项:将工作日志、实验报告添加到源程序文件夹。
小组提交1项:选定源程序文件夹-右键-压缩打包-完成V07-2.07版源程序-保存-提交组长审核。
邮件提交2项:技术文档、工作文档发送到作业邮箱,每个文件独立发送,需要满足作业发送格式要求。
准备提交作业
程序代码1项:选定解决方案-右键-清理解决方案-关闭VS2008
技术文档3项:将项目需求列表、程序列表、数据字典添加到源程序文件夹。
工作文档2项:将工作日志、实验报告添加到源程序文件夹。
小组提交1项:选定源程序文件夹-右键-压缩打包-完成V07-2.06版源程序-保存-提交组长审核。
邮件提交2项:技术文档、工作文档发送到作业邮箱,分别独立发送,要求作业发送格式正确。
截至时间:2010年05月13日 23:50