实验五Windows应用程序设计DOC.docx
《实验五Windows应用程序设计DOC.docx》由会员分享,可在线阅读,更多相关《实验五Windows应用程序设计DOC.docx(24页珍藏版)》请在冰点文库上搜索。
![实验五Windows应用程序设计DOC.docx](https://file1.bingdoc.com/fileroot1/2023-6/27/e031c727-c41e-489b-bde9-42dbdeb69be6/e031c727-c41e-489b-bde9-42dbdeb69be61.gif)
实验五Windows应用程序设计DOC
大理学院课程教案
(实验教学)
课程名称:
C#面向对象程序设计
课程类型:
(1)1、必修;2、选修;3、其它
授课对象:
计算机科学与技术专业(本、专科)2013级1、2班
授课时间:
2014至2015学年第3学期
计划学时:
36学时(其中:
理论36,实验:
36)
任课教师:
杜英国
所属学院:
数学与计算机学院
课程管理部门(教研室):
软件教研室
大理学院教务处制
课程名称:
C#面向对象程序设计
教材:
C#程序设计实用教程黄兴荣李昌领李继良编著清华大学出版社
授课人1:
杜英国专业技术职务:
讲师
学历:
研究生学位:
硕士
授课人2:
专业技术职务:
学历:
学位:
实验题目:
Windows应用程序设计计划学时:
3
实验类型:
(4)1、演示性2、验证性3、综合性4、设计性
每组实验的学生人数:
1人
教学目的和要求:
熟悉C#集成开发环境;了解各功能的菜单命令;显示所有的可见窗口和所有工具栏(箱),随后再将上述的窗口和工具栏(箱)进行隐藏;了解工具栏(箱)中有哪些主要控件;了解控件的属性及事件;掌握控制台应用程序的输入输出方法的使用。
实验方法(包括实验中需要注意的问题等):
1.在VS下,创建一个窗体应用程序。
2.在解决方案资源管理其中创建子窗体。
3.在窗体上搭建相关控件。
4.编写代码。
5.注意个窗体之间的数据回传。
实验重点(主要解决的问题和达到的目的):
1.窗体、控件的使用。
2.理解窗体间数据回传。
3.掌握分级信息的处理。
实验难点(预计实验过程中会遇到的问题和解决方案):
1.窗体间数据回传。
2.分级信息的处理。
教学方法(实验前的教学和实验过程中的指导方法):
实验前教师先讲解完9章内容,学生认真复习9章内容;在实验过程中结合实验环境教师可先提示性讲解实验内容,再由学生自己完成实验。
如果实验完成情况较差,教师统一辅导。
实验仪器和材料:
计算机,WindowsXP,VS2008
实验报告要求和思考题:
教师现场检查评价本次实验。
参考资料:
《C#程序设计项目教程—实验指导与课程设计》黄兴荣编著清华大学出版社
实验5Windows应用程序设计
完成具有如下层次结构节点信息的添加与显示。
例如:
大学
—>楚雄师范院
—>大理学院
—>文学院
—>数学与计算机学院
—>计算机科学与技术专业
2010级计算机科学与技术专业2班
2010级计算机科学与技术专业1班
序号
学号
姓名
性别
1
2009162201
涂桂江
男
2
2010162102
何芹芹
女
3
2010162130
张康
男
4
2010162131
章雕
女
—>信息与计算科学专业
—>通信专业
根节点使用Root类来表示,参考代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceWindowsApplication1
{
classRoot
{
stringrootName;
publicstringRootName
{
set
{
rootName=value;
}
get
{
returnrootName;
}
}
publicListuniversityList=newList();//存储root节点的子节点,这里是university节点
}
}
主界面设计如下:
树图控件(TreeView)、列表视图控件(ListView)、上下文菜单(ContextMenuStrip),同学还可以自己添加主菜单来实现上下文菜单功能。
主要功能:
通过上下文菜单实现节点信息的添加,每一类信息的添加都在一个单独的界面下完成。
之后,把所添加的信息回传给Form1窗体。
窗体之间的数据回传(通信)通过事件机制实现。
树图控件(TreeView)显示所有节点的层次信息。
列表视图控件(ListView)显示当前节点的子节点的详细信息。
部分程序参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceWindowsApplication1
{
publicdelegatevoidUniversityDelegate(objectsender,UniversityEventArgse);//学校回传数据事件使用的代理
publicdelegatevoidInstituteDelegate(objectsender,InstituteEventArgse);//学院回传数据事件使用的代理
publicpartialclassForm1:
Form
{
TreeNodenode;
Rootroot;//根节点
ListViewItemitem;
///
///初始化Form1窗体,初始化树视图
///
publicForm1()
{
InitializeComponent();
root=newRoot();
root.RootName="大学";
node=newTreeNode(root.RootName);
treeView1.Nodes.Add(node);
}
///
///学校事件回调函数
///
///University窗体
///UniversityEventArgs实例
publicvoidReceiveUniversityData(objectsender,UniversityEventArgse)
{
if(treeView1.SelectedNode==null)
{
MessageBox.Show("请选择一个节点","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
else
{
node=newTreeNode(e.XiaoMing);
treeView1.SelectedNode.Nodes.Add(node);
e.FuJieDian="Root";
root.universityList.Add(e);//同学注意这条语句的作用,
//由于在选中根节点的时候要在列表视图里面
//显示根节点的所有子节点即大学节点信息
//所以要记录所有大学的信息
treeView1.SelectedNode=node;
}
}
publicvoidReceiveInstitute(objectsender,InstituteEventArgse)
{
if(treeView1.SelectedNode==null)
{
MessageBox.Show("请选择一个节点","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
else
{
node=newTreeNode(e.XueYuanMing);
treeView1.SelectedNode.Nodes.Add(node);
treeView1.ExpandAll();
e.FuJieDian=treeView1.SelectedNode.Text;//设置新创建节点的父节点
foreach(UniversityEventArgsueainroot.universityList)//设置选中节点的子节点
{
if(uea.XiaoMing==treeView1.SelectedNode.Text)
{
uea.ziJieDianJiHe.Add(e);
}
}
treeView1.SelectedNode=node;
}
}
///
///上下文菜单事件回调函数
///
///事件源
///事件相关信息描述
privatevoid学校ToolStripMenuItem_Click(objectsender,EventArgse)
{
Universityuniversity=newUniversity();
university.UniversityData+=newUniversityDelegate(ReceiveUniversityData);//绑定事件
university.ShowDialog();
university.UniversityData-=newUniversityDelegate(ReceiveUniversityData);//不再使用该事件,撤销它
}
privatevoid学院ToolStripMenuItem_Click(objectsender,EventArgse)
{
Instituteinstitute=newInstitute();
institute.InstituteData+=newInstituteDelegate(ReceiveInstitute);
institute.ShowDialog();
institute.InstituteData+=newInstituteDelegate(ReceiveInstitute);
}
///
///选中树图节点后触发事件的回调函数,动态添加表头,加载信息
///
///
///
privatevoidtreeView1_AfterSelect(objectsender,TreeViewEventArgse)
{
listView1.Items.Clear();//清空listView1内容
listView1.Columns.Clear();//清除listView1表头
if(treeView1.SelectedNode.Text=="大学")//选中是根节点则加载所有大学节点
{
listView1.Columns.Add("校名",150,HorizontalAlignment.Center);
listView1.Columns.Add("地址",200,HorizontalAlignment.Center);
listView1.Columns.Add("主管部门",150,HorizontalAlignment.Center);
listView1.Columns.Add("学校性质",100,HorizontalAlignment.Center);
foreach(UniversityEventArgsueainroot.universityList)
{
item=newListViewItem(uea.XiaoMing);
item.SubItems.Add(uea.DiZhi);
item.SubItems.Add(uea.ZhuGuanBuMen);
item.SubItems.Add(uea.XueXiaoXingZhi);
listView1.Items.Add(item);
}
}
else
{
foreach(UniversityEventArgsueainroot.universityList)//选中是大学节点则加载该大学下的所有学院
{
if(uea.XiaoMing==treeView1.SelectedNode.Text)
{
listView1.Columns.Add("学院名",150,HorizontalAlignment.Center);
listView1.Columns.Add("地址",200,HorizontalAlignment.Center);
listView1.Columns.Add("主管部门",150,HorizontalAlignment.Center);
listView1.Columns.Add("学院概况",100,HorizontalAlignment.Center);
foreach(InstituteEventArgsinstinuea.ziJieDianJiHe)
{
item=newListViewItem(inst.XueYuanMing);
item.SubItems.Add(inst.DiZhi);
item.SubItems.Add(inst.ZhuGuanBuMen);
item.SubItems.Add(inst.XueYuanGaiKuang);
listView1.Items.Add(item);
}
}
}
}
}
privatevoidForm1_Load(objectsender,EventArgse)
{
listView1.FullRowSelect=true;
listView1.View=View.Details;
listView1.Scrollable=true;
listView1.MultiSelect=false;
}
}
}
大学窗体界面设计如下:
代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceWindowsApplication1
{
publicpartialclassUniversity:
Form
{
publiceventUniversityDelegateUniversityData;
publicUniversity()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(UniversityData!
=null)
{
UniversityEventArgsue=newUniversityEventArgs();
ue.XiaoMing=textBox1.Text;
ue.DiZhi=textBox2.Text;
ue.ZhuGuanBuMen=textBox3.Text;
ue.XueXiaoXingZhi=textBox4.Text;
UniversityData(this,ue);
this.Close();
}
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
this.Close();
}
}
}
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceWindowsApplication1
{
///
///描述学校信息
///
publicclassUniversityEventArgs:
EventArgs
{
stringxiaoMing;
publicstringXiaoMing
{
set
{
xiaoMing=value;
}
get
{
returnxiaoMing;
}
}
stringdiZhi;
publicstringDiZhi
{
set
{
diZhi=value;
}
get
{
returndiZhi;
}
}
stringzhuGuanBuMen;
publicstringZhuGuanBuMen
{
set
{
zhuGuanBuMen=value;
}
get
{
returnzhuGuanBuMen;
}
}
stringxueXiaoXingZhi;
publicstringXueXiaoXingZhi
{
set
{
xueXiaoXingZhi=value;
}
get
{
returnxueXiaoXingZhi;
}
}
stringfuJieDian;
publicstringFuJieDian
{
set
{
fuJieDian=value;
}
get
{
returnfuJieDian;
}
}
publicListziJieDianJiHe=newList();//存储学校下属学院的节点集合
}
}
学院窗体设计如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceWindowsApplication1
{
publicpartialclassInstitute:
Form
{
publiceventInstituteDelegateInstituteData;
publicInstitute()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(InstituteData!
=null)
{
InstituteEventArgsiea=newInstituteEventArgs();
iea.XueYuanMing=textBox1.Text;
iea.DiZhi=textBox2.Text;
iea.ZhuGuanBuMen=textBox3.Text;
iea.XueYuanGaiKuang=textBox4.Text;
InstituteData(this,iea);
this.Close();
}
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
this.Close();
}
}
}
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceWindowsApplication1
{
///
///描述学院信息
///
publicclassInstituteEventArgs:
EventArgs
{
stringxueYuanMing;
publicstringXueYuanMing
{
set
{
xueYuanMing=value;
}
get
{
returnxueYuanMing;
}
}
stringdiZhi;
publicstringDiZhi
{
set
{
diZhi=value;
}
get
{
returndiZhi;
}
}
stringzhuGuanBuMen;
publicstringZhuGuanBuMen
{
set
{
zhuGuanBuMen=value;
}
get
{
returnzhuGuanBuMen;
}
}
stringxueYuanGaiKuang;
publicstringXueYuanGaiKuang
{
set
{
xueYuanGaiKuang=value;
}
get
{
returnxueYuanGaiKuang;
}
}
stringfuJieDian;
publicstringFuJieDian
{
set
{
fuJieDian=value;
}
get
{
returnfuJieDian;
}
}
//用List<>定义子节点集合
}
}
运行效果图:
实验要求:
1.先搭建上述程序界面,并进行调试。
2.参考上述程序完成,班级、专业、学生信息的添加。
(以本班学生为例)
3.增加节点类型信息,在上下文菜单中添加修改子菜单,实现节点信息的修改。
4.完成删除功能。
5.每位同学提交本次实验电子文档。
说明:
在程序中,没有对程序进行异常处理,同学自己添加异常处理的代码。
另外,对树的加载是通过层次判断实现的,如果层次较多,显然行不通。
而应采用递归遍