1、实验五Windows应用程序设计DOC大理学院课程教案(实验教学)课程名称: C#面向对象程序设计 课程类型:( 1 )1、必修;2、选修;3、其它授课对象: 计算机科学与技术 专业(本、专科) 2013 级 1、2班授课时间: 2014 至 2015 学年第 3 学期 计划学时: 36 学时(其中:理论 36 ,实验: 36 )任课教师: 杜英国 所属学院: 数学与计算机学院 课程管理部门(教研室): 软件教研室 大理学院教务处 制课程名称:C#面向对象程序设计教 材:C#程序设计实用教程 黄兴荣 李昌领 李继良编著 清华大学出版社授课人1:杜英国 专业技术职务:讲师学 历:研究生 学 位:
2、硕士授课人2: 专业技术职务:学 历: 学 位:实验题目:Windows应用程序设计 计划学时:3实验类型:( 4 )1、演示性 2、验证性 3、综合性 4、设计性每组实验的学生人数: 1 人教学目的和要求:熟悉C#集成开发环境;了解各功能的菜单命令;显示所有的可见窗口和所有工具栏(箱),随后再将上述的窗口和工具栏(箱)进行隐藏;了解工具栏(箱)中有哪些主要控件;了解控件的属性及事件;掌握控制台应用程序的输入输出方法的使用。实验方法(包括实验中需要注意的问题等):1. 在VS下,创建一个窗体应用程序。2. 在解决方案资源管理其中创建子窗体。3. 在窗体上搭建相关控件。4. 编写代码。5. 注意
3、个窗体之间的数据回传。实验重点(主要解决的问题和达到的目的):1. 窗体、控件的使用。2. 理解窗体间数据回传。3. 掌握分级信息的处理。实验难点(预计实验过程中会遇到的问题和解决方案):1. 窗体间数据回传。2. 分级信息的处理。教学方法(实验前的教学和实验过程中的指导方法): 实验前教师先讲解完9章内容,学生认真复习9章内容;在实验过程中结合实验环境教师可先提示性讲解实验内容,再由学生自己完成实验。如果实验完成情况较差,教师统一辅导。实验仪器和材料:计算机,Windows XP, VS2008实验报告要求和思考题:教师现场检查评价本次实验。参考资料:C#程序设计项目教程实验指导与课程设计
4、黄兴荣 编著 清华大学出版社实验5 Windows应用程序设计完成具有如下层次结构节点信息的添加与显示。例如:大学楚雄师范院大理学院 文学院数学与计算机学院计算机科学与技术专业 2010级计算机科学与技术专业2班2010级计算机科学与技术专业1班 序号学号姓名性别12009162201涂桂江男22010162102何芹芹女32010162130张康男42010162131章雕女信息与计算科学专业通信专业根节点使用Root类来表示,参考代码如下:using System;using System.Collections.Generic;using System.Text;namespace Wi
5、ndowsApplication1 class Root string rootName; public string RootName set rootName = value; get return rootName; public List universityList = new List();/存储root节点的子节点,这里是university节点 主界面设计如下:树图控件(TreeView)、列表视图控件(ListView)、上下文菜单(ContextMenuStrip),同学还可以自己添加主菜单来实现上下文菜单功能。主要功能:通过上下文菜单实现节点信息的添加,每一类信息的添加都
6、在一个单独的界面下完成。之后,把所添加的信息回传给Form1窗体。窗体之间的数据回传(通信)通过事件机制实现。树图控件(TreeView)显示所有节点的层次信息。列表视图控件(ListView)显示当前节点的子节点的详细信息。部分程序参考代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace WindowsApp
7、lication1 public delegate void UniversityDelegate(object sender,UniversityEventArgs e);/学校回传数据事件使用的代理 public delegate void InstituteDelegate(object sender, InstituteEventArgs e);/学院回传数据事件使用的代理 public partial class Form1 : Form TreeNode node; Root root;/根节点 ListViewItem item ; / / 初始化Form1窗体,初始化树视图 /
8、 public Form1() InitializeComponent(); root = new Root(); root.RootName = 大学; node = new TreeNode(root.RootName); treeView1.Nodes.Add(node); / / 学校事件回调函数 / / University窗体 / UniversityEventArgs实例 public void ReceiveUniversityData(object sender, UniversityEventArgs e) if (treeView1.SelectedNode = null
9、) MessageBox.Show(请选择一个节点, 提示信息, MessageBoxButtons.OK, MessageBoxIcon.Information); return; else node = new TreeNode(e.XiaoMing); treeView1.SelectedNode.Nodes.Add(node); e.FuJieDian = Root; root.universityList.Add(e);/同学注意这条语句的作用, /由于在选中根节点的时候要在列表视图里面 /显示根节点的所有子节点即大学节点信息 /所以要记录所有大学的信息 treeView1.Sele
10、ctedNode = node; public void ReceiveInstitute(object sender,InstituteEventArgs e) if (treeView1.SelectedNode = null) MessageBox.Show(请选择一个节点, 提示信息, MessageBoxButtons.OK, MessageBoxIcon.Information); return; else node = new TreeNode(e.XueYuanMing); treeView1.SelectedNode.Nodes.Add(node); treeView1.Ex
11、pandAll(); e.FuJieDian = treeView1.SelectedNode.Text;/设置新创建节点的父节点 foreach (UniversityEventArgs uea in root.universityList) /设置选中节点的子节点 if (uea.XiaoMing = treeView1.SelectedNode.Text) uea.ziJieDianJiHe.Add(e); treeView1.SelectedNode = node; / / 上下文菜单事件回调函数 / / 事件源 / 事件相关信息描述 private void 学校ToolStripM
12、enuItem_Click(object sender, EventArgs e) University university = new University(); university.UniversityData += new UniversityDelegate(ReceiveUniversityData);/绑定事件 university.ShowDialog(); university.UniversityData -= new UniversityDelegate(ReceiveUniversityData);/不再使用该事件,撤销它 private void 学院ToolStr
13、ipMenuItem_Click(object sender, EventArgs e) Institute institute = new Institute(); institute.InstituteData += new InstituteDelegate(ReceiveInstitute); institute.ShowDialog(); institute.InstituteData += new InstituteDelegate(ReceiveInstitute); / / 选中树图节点后触发事件的回调函数,动态添加表头,加载信息 / / / private void tree
14、View1_AfterSelect(object sender, TreeViewEventArgs e) listView1.Items.Clear();/清空listView1内容 listView1.Columns.Clear();/清除listView1表头 if (treeView1.SelectedNode.Text = 大学)/选中是根节点则加载所有大学节点 listView1.Columns.Add(校名, 150, HorizontalAlignment.Center); listView1.Columns.Add(地址, 200, HorizontalAlignment.C
15、enter); listView1.Columns.Add(主管部门, 150, HorizontalAlignment.Center); listView1.Columns.Add(学校性质, 100, HorizontalAlignment.Center); foreach (UniversityEventArgs uea in root.universityList) item = new ListViewItem(uea.XiaoMing); item.SubItems.Add(uea.DiZhi); item.SubItems.Add(uea.ZhuGuanBuMen); item.
16、SubItems.Add(uea.XueXiaoXingZhi); listView1.Items.Add(item); else foreach (UniversityEventArgs uea in root.universityList)/选中是大学节点则加载该大学下的所有学院 if (uea.XiaoMing = treeView1.SelectedNode.Text) listView1.Columns.Add(学院名, 150, HorizontalAlignment.Center); listView1.Columns.Add(地址, 200, HorizontalAlignme
17、nt.Center); listView1.Columns.Add(主管部门, 150, HorizontalAlignment.Center); listView1.Columns.Add(学院概况, 100, HorizontalAlignment.Center); foreach (InstituteEventArgs inst in uea.ziJieDianJiHe) item = new ListViewItem(inst.XueYuanMing); item.SubItems.Add(inst.DiZhi); item.SubItems.Add(inst.ZhuGuanBuMen
18、); item.SubItems.Add(inst.XueYuanGaiKuang); listView1.Items.Add(item); private void Form1_Load(object sender, EventArgs e) listView1.FullRowSelect = true; listView1.View = View.Details; listView1.Scrollable = true; listView1.MultiSelect = false; 大学窗体界面设计如下:代码:using System;using System.Collections.Ge
19、neric;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace WindowsApplication1 public partial class University : Form public event UniversityDelegate UniversityData; public University() InitializeComponent(); private void button1_C
20、lick(object sender, EventArgs e) if(UniversityData!=null) UniversityEventArgs ue = new UniversityEventArgs(); ue.XiaoMing = textBox1.Text; ue.DiZhi = textBox2.Text; ue.ZhuGuanBuMen = textBox3.Text; ue.XueXiaoXingZhi = textBox4.Text; UniversityData(this,ue); this.Close(); private void button2_Click(o
21、bject sender, EventArgs e) this.Close(); using System;using System.Collections.Generic;using System.Text;namespace WindowsApplication1 / / 描述学校信息 / public class UniversityEventArgs:EventArgs string xiaoMing; public string XiaoMing set xiaoMing = value; get return xiaoMing; string diZhi; public strin
22、g DiZhi set diZhi = value; get return diZhi; string zhuGuanBuMen; public string ZhuGuanBuMen set zhuGuanBuMen = value; get return zhuGuanBuMen; string xueXiaoXingZhi; public string XueXiaoXingZhi set xueXiaoXingZhi = value; get return xueXiaoXingZhi; string fuJieDian; public string FuJieDian set fuJ
23、ieDian = value; get return fuJieDian; public List ziJieDianJiHe = new List();/存储学校下属学院的节点集合 学院窗体设计如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace WindowsApplication1 public part
24、ial class Institute : Form public event InstituteDelegate InstituteData; public Institute() InitializeComponent(); private void button1_Click(object sender, EventArgs e) if(InstituteData!=null) InstituteEventArgs iea = new InstituteEventArgs(); iea.XueYuanMing = textBox1.Text; iea.DiZhi = textBox2.T
25、ext; iea.ZhuGuanBuMen = textBox3.Text; iea.XueYuanGaiKuang = textBox4.Text; InstituteData(this,iea); this.Close(); private void button2_Click(object sender, EventArgs e) this.Close(); using System;using System.Collections.Generic;using System.Text;namespace WindowsApplication1 / / 描述学院信息 / public cl
26、ass InstituteEventArgs:EventArgs string xueYuanMing; public string XueYuanMing set xueYuanMing = value; get return xueYuanMing; string diZhi; public string DiZhi set diZhi = value; get return diZhi; string zhuGuanBuMen; public string ZhuGuanBuMen set zhuGuanBuMen = value; get return zhuGuanBuMen; st
27、ring xueYuanGaiKuang; public string XueYuanGaiKuang set xueYuanGaiKuang = value; get return xueYuanGaiKuang; string fuJieDian; public string FuJieDian set fuJieDian = value; get return fuJieDian; /用List定义子节点集合 运行效果图:实验要求:1.先搭建上述程序界面,并进行调试。2.参考上述程序完成,班级、专业、学生信息的添加。(以本班学生为例)3.增加节点类型信息,在上下文菜单中添加修改子菜单,实现节点信息的修改。4.完成删除功能。5.每位同学提交本次实验电子文档。 说明:在程序中,没有对程序进行异常处理,同学自己添加异常处理的代码。另外,对树的加载是通过层次判断实现的,如果层次较多,显然行不通。而应采用递归遍
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2