标题：基于C/S架构的软件项目实训
基本信息
作者： 亓晓静   
丛书名： 高等职业院校国家技能型紧缺人才培养培训工程规划教材·计算机应用与软件技术专业
出版社：电子工业出版社
ISBN：7121008718
出版日期：2005 年2月
开本：16开
页码：253
内容简介
本书从构建MDI应用系统的框架入手，通过一系列连贯的例子来引导读者循序渐进地学习数据库应用系统中最重要的元素——数据窗体所具备的基本功能，并以此为基点拓展和完善数据库应用系统中的其他功能，同时把VB&nbsp;NET中基于.NET平台的完全面向对象的编程技术融入到每个实例中，逐步建立起自己的类库，充分体验面向对象的设计思想给程序员带来的效率和质量。 
本书还讲解如何用ADO &nbsp; &nbsp;NET访问数据库的方法，从借助可视化工具来配置属性开始，到最终完全用代码来控制，并建立起数据类。同时也介绍SQL Server数据库中的存储过程、视图和触发器，让读者了解这些服务器端的程序在C/S架构中的重要作用和使用方法。 
本书既可作为高等职业院校的实训教材，也可作为大学本科、专科学生学习VB&nbsp;&nbsp;&nbsp;NET、ADO &nbsp; NET、SQL Server相关课程的教材，同时还可以作为广大用户自学的参考书
目录
实训1 mdi应用系统 
实训目的 
1.1 建立简单的mdi应用系统 
1.1.1 创建mdi窗体 
1.1.2 向mdi窗体添加菜单 
1.1.3 建立mdi子窗体 
1.1.4 打开mdi子窗体 
1.2 限制打开mdi子窗体 
1.3 为mdi应用系统添加工具栏 
1.3.1 在mdimain窗体中添加工具栏控件 
1.3.2 为工具栏添加按钮 
1.3.3 用imagelist控件搜集图片 
1.3.4 把imagelist控件与工具栏控件建立连接 
1.3.5 为工具栏按钮选择图片 
1.4 为mdi应用系统添加状态栏 
1.4.1 在mdimain窗体中添加状态栏控件 
1.4.2 为状态栏添加面板（statusbarpanel），将状态栏分成三个信息区 
1.4.3 让状态栏显示面板 
1.4.4 在time面板中跟踪显示系统时间 
1.4.5 在title面板中显示当前活动的mdi子窗体的标题 
.1.4.6 在help面板中显示菜单项的帮助信息 
1.5 mdi应用系统中的“窗口”菜单 
1.5.1 编辑菜单 
1.5.2 编写排列mdi子窗体的代码 
1.5.3 在菜单中列出已打开的mdi子窗体 
1.6 其他 
1.6.1 合并菜单 
1.6.2 工具栏和状态栏 
1.7 实训小结 
实训2 使用datagrid控件的数据窗体 
实训目的 
2.1 为窗体准备数据 
2.1.1 建立到数据库的连接 
2.1.2 配置数据适配器 
2.1.3 生成数据集 
2.1.4 填充数据集 
2.2 用datagrid控件显示数据 
2.3 用datagrid控件修改数据 
2.3.1 设计方法 
2.3.2 用datagrid控件增加和删除数据 
2.4 数据检查 
2.4.1 对数据表zybiao的数据分析 
2.4.2 合法性验证 
2.4.3 数据合理性检查 
2.4.4 常见错误的纠正 
2.5 关闭窗口前的提示 
2.6 datagrid控件初步 
2.6.1 定义datagrid控件的tablestyles属性 
2.6.2 定义stylezybiao的gridcolumnstyles属性 
2.6.3 确定数据表对象zybiao的显示格式 
2.6.4 datagrid控件中空行的特殊性 
2.7 实训小结 
实训3 一屏一个记录的数据窗体 
实训目的 
3.1 准备数据（sql server专用的<cite class="highlight" highlight="true" style="background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: initial initial; background-repeat: initial initial; ">ado &nbsp;net</cite>对象） 
3.2 简单的数据绑定控件 
3.3 数据导航按钮 
3.3.1 设计导航按钮 
3.3.2 bindingmanagerbase类和bindingcontext类 
3.4 修改数据 
3.4.1 update的工作原理 
3.4.2 改进的存盘按钮 
3.4.3 取消按钮 
3.5 增加和删除数据行 
3.6 检查数据的合法性 
3.6.1 数据集的检查机制 
3.6.2 结束当前编辑 
3.6.3 数据合法性检查的实现 
3.7 数据检查的策略 
3.7.1 分析数据的业务规则 
3.7.2 确定数据检查的策略 
3.8 用masked edit控件限制输入 
3.8.1 用masked edit控件来限制inyear 
3.8.2 用errorprovider类实现提示型字段级的检查策略 
3.9 用numericupdown控件限制数值范围 
3.9.1 numericupdown控件接收数值 
3.9.2 用键盘事件和errorprovider类实现提示型字段级的检查策略 
3.10 记录级的数据检查 
3.11 功能改进 
3.12 实训小结 
实训4 combobox与代码表 
实训目的 
4.1 combobox与代码表 
4.1.1 添加combobox控件 
4.1.2 为combobox控件准备要填充的数据 
4.1.3 代码表技术的实现 
4.1.4 测试 
4.2 手动代码表 
4.2.1 添加combobox控件 
4.2.2 构造代码表 
4.2.3 修改窗体的load事件 
4.2.4 调整窗体 
4.2.5 测试 
4.3 带参数的数据适配器 
4.3.1 重新配置数据适配器adastudent 
4.3.2 填充带参数的数据适配器 
4.3.3 测试 
4.3.4 窗体的状态 
4.3.5 其他调整 
4.4 用委托的方式提示每行的信息 
4.4.1 添加状态栏 
4.4.2 委托与位置变化的事件处理程序 
4.4.3 测试 
4.4.4 合并与调整 
4.5 窗体的完善措施 
4.5.1 统计本次编辑情况 
4.5.2 加载数据前的存盘提示 
4.5.3 关闭窗口前的提示 
4.5.4 当前取消和全部取消 
4.5.5 控制焦点 
4.6 实训小结 
实训5 构造数据窗体的基本框架 
实训目的 
5.1 用mdi框架组织 
5.1.1 mdi窗体的属性 
5.1.2 mdi窗体的状态栏 
5.1.3 mdi窗体的菜单 
5.1.4 打开mdi子窗体 
5.2 数据维护窗体的总结 
5.2.1 为窗体准备数据 
5.2.2 显示和修改数据 
5.2.3 显式地结束当前编辑——endchange函数 
5.2.4 数据检查 
5.2.5 增加与删除 
5.2.6 存盘与取消 
5.2.7 数据导航——moveposition过程 
5.2.8 存盘前的检查 
5.2.9 统计 
5.2.10 控制窗体状态——setenabled过程 
5.2.11 更新状态栏的信息——my_positionchanged过程 
5.3 建立frmxsbiao窗体 
5.3.1 定义数据适配器adastudent 
5.3.2 数据绑定 
5.3.3 填充数据 
5.3.4 改造endchange函数 
5.3.5 数据维护的改造 
5.3.6 数据导航功能 
5.3.7 存盘前的检查 
5.3.8 统计 
5.3.9 控制窗体状态 
5.3.10 控制状态栏的信息 
5.3.11 窗体初始化 
5.3.12 在mdi窗体中用菜单打开窗体frmxsbiao 
5.4 窗体的基本框架 
5.4.1 窗体上的事件处理程序 
5.4.2 窗体上的过程与函数 
5.4.3 窗体上的变量 
5.4.4 在窗体基本框架下新建窗体的步骤 
5.5 实训小结 
实训6 继承窗体 
实训目的 
6.1 数据窗体基类 
6.1.1 建立窗体类 
6.1.2 构造类的属性 
6.1.3 构造可以在派生类中重写的方法 
6.1.4 构造可以在派生类中引用的方法 
6.2 继承窗体 
6.2.1 添加继承窗体 
6.2.2 修改继承窗体frmdataxs上的控件 
6.3 为窗体准备数据 
6.3.1 定义sourcetable变量 
6.3.2 在派生窗体中修改数据适配器 
6.3.3 重新配置数据适配器 
6.3.4 重新生成数据集 
6.3.5 控件绑定 
6.4 按输入的参数加载数据 
6.4.1 年级参数 
6.4.2 专业参数 
6.4.3 用输入的参数加载数据 
6.4.4 控制窗体状态的setenabled方法 
6.5 添加到mdi系统中 
6.5.1 修改mdi窗体的菜单 
6.5.2 为菜单项编写程序 
6.6 数据检查 
6.6.1 数据检查策略 
6.6.2 用下拉列表框来限制用户的输入 
6.6.3 用keypress事件来限制用户输入学号 
6.6.4 用datatimepicker控件输入日期 
6.6.5 提示型字段级的检查 
6.6.6 记录级检查 
6.6.7 key键重复时的提示 
6.7 实训小结 
实训7 数据窗体基类 frmdata的扩展 
实训目的 
7.1 数据窗体基类frmdata 
7.1.1 窗体功能框架 
7.1.2 各种功能的实现 
7.1.3 两种显示方式的比较 
7.2 用继承方法建立窗体frmdatazy 
7.2.1 继承建立窗体frmdatazy 
7.2.2 为窗体准备数据 
7.2.3 添加grid控件 
7.2.4 加载数据 
7.2.5 添加到mdi应用系统中 
7.3 关闭窗口前的检查 
7.3.1 修改数据窗体基类frmdata 
7.3.2 修改窗体frmdatazy 
7.3.3 小结 
7.4 columnchanging事件 
7.5 代码表管理窗口 
7.5.1 用复制的方法建立窗体frmdatadm 
7.5.2 用combobox控件选择要修改的表 
7.5.3 动态地改变grid控件中显示的数据 
7.5.4 添加到mdi应用系统中 
7.5.5 更新状态栏的信息 
7.5.6 动态地修改grid控件的显示格式 
7.5.7 动态配置数据适配器 
7.5.8 数据检查 
7.6 实训小结 
实训8 登记学生成绩 
实训目的 
8.1 建立数据窗体frmdatacj 
8.1.1 继承建立窗体frmdatacj 
8.1.2 为窗体准备数据 
8.1.3 添加grid控件 
8.1.4 加载数据 
8.1.5 添加到mdi应用系统中 
8.2 指定班级和课程参数 
8.2.1 添加三个输入参数的控件 
8.2.2 参数关联 
8.2.3 用datareader对象填充年级参数 
8.2.4 用datatable对象动态填充专业和课程参数 
8.3 按班级和课程加载数据 
8.3.1 修改grid控件列的显示格式 
8.3.2 重新配置数据适配器的selectcommand对象 
8.4 按班级增加学生名单 
8.4.1 管理增加按钮 
8.4.2 用代码向数据集中添加数据 
8.5 按班级删除学生成绩 
8.5.1 修改删除按钮 
8.5.2 建立存储过程批量删除数据 
8.5.3 定义参数 
8.5.4 调用带参数的存储过程 
8.6 数据检查 
8.6.1 检查成绩 
8.6.2 关闭窗口前的检查 
8.7 实训小结 
实训9 成绩查询与统计 
实训目的 
9.1 建立按学号查询的窗体 
9.1.1 设计要求 
9.1.2 建立窗体frmsearchxhao 
9.1.3 建立到数据库的连接 
9.1.4 界面设计 
9.1.5 添加到mdi应用系统中 
9.2 建立查询的存储过程 
9.2.1 查询要求 
9.2.2 建立存储过程xhaocj 
9.2.3 显示查询结果 
9.3 调用存储过程执行查询 
9.3.1 设计要求 
9.3.2 存储过程的各种参数 
9.3.3 数据适配器与command对象 
9.4 按班级查询学生成绩 
9.4.1 设计要求 
9.4.2 存储过程bjcj 
9.4.3 界面设计 
9.4.4 建立连接对象 
9.4.5 动态地管理关联的参数 
9.4.6 调用存储过程执行查询 
9.5 查询统计窗体基类frmsearch 
9.5.1 建立查询窗体基类frmsearch 
9.5.2 定义窗体属性 
9.5.3 创建buildtable方法 
9.5.4 创建buildreader方法 
9.5.5 重载窗体基类frmsearch的buildtable方法 
9.5.6 重载窗体基类frmsearch的buildreader方法 
9.6 用继承方法重建按班级查询窗体 
9.6.1 用继承方法建立新窗体frmsearchbjnew 
9.6.2 改写关联参数的事件 
9.6.3 改写执行查询的代码 
9.7 按班级统计成绩 
9.7.1 设计要求 
9.7.2 修改存储过程bjcj 
9.7.3 界面设计 
9.7.4 共享事件处理程序 
9.8 实训小结 
实训10 类似资源管理器的窗体 
实训目的 
10.1 创建类似资源管理器的窗体 
10.1.1 类似资源管理器窗体的结构 
10.1.2 创建类似资源管理器的窗体 
10.1.3 splitter控件与dock属性 
10.2 建立与读取数据有关的类 
10.2.1 创建连接对象类 
10.2.2 读取数据类 
10.3 用treeview控件显示层次数据 
10.3.1 学生数据的第一层：年级 
10.3.2 学生数据的第二层：专业 
10.4 treeview控件与datagrid控件保持同步 
10.4.1 同步分析 
10.4.2 datagrid控件 
10.4.3 存储过程（外连接查询） 
10.4.4 同步代码 
10.4.5 添加到mdi应用系统中 
10.5 用户自定义控件 
10.5.1 创建新控件datatreeview 
10.5.2 设计要求 
10.5.3 新的结点类datanode 
10.5.4 新的枚举nodetype和getdatatype 
10.6 设计datatreeview控件 
10.6.1 需要添加的新属性 
10.6.2 动态添加子结点的方法addchinode 
10.6.3 使用委托getlevelparams 
10.6.4 创建根结点的方法 
10.7 使用datatreeview控件 
10.7.1 定义属性 
10.7.2 使用视图 
10.7.3 添加根结点 
10.7.4 为每层的结点编写取参数的函数 
10.7.5 展开时动态添加结点 
10.7.6 添加到mdi应用系统中 
10.8 实训小结 
实训11 sql server的程序 
实训目的 
11.1 存储过程 
11.1.1 存储过程介绍 
11.1.2 创建存储过程的语法 
11.2 使用存储过程的工具 
11.2.1 sql server的查询分析器query analyzer 
11.2.2 sql server的企业管理器enterprise manager 
11.2.3 vs   net的集成开发环境（ide） 
11.2.4 在vb  net中执行存储过程 
11.3 视图 
11.3.1 视图及其特点 
11.3.2 使用视图的工具 
11.3.3 在vb  net中执行视图 
11.4 触发器 
11.4.1 什么是触发器 
11.4.2 编辑表的触发器 
11.4.3 使用触发器 
11.5 实训小结 
附录a 成绩管理系统 
a.1 功能清单 
a.2 数据库设计 
a.3 数据库的移动