首页 1C#《可视化编程技术》设计性实验报告-动物信息管理系统设计

1C#《可视化编程技术》设计性实验报告-动物信息管理系统设计

举报
开通vip

1C#《可视化编程技术》设计性实验报告-动物信息管理系统设计重庆交通大学上机实验报告班级:软件开发专业2012级2班学号:6312060502**姓名:尚亚*实验项目名称:动物信息管理系统设计实验项目性质:设计性实验所属课程:可视化编程技术实验室(中心):B01407专业机房指导教师:王实验完成时间:2014年5月15日考核内容结果实验报告内容是否齐全、组织是否合理、描述是否逻辑性□符合要求□比较符合要求□基本符合要求□不符合要求源代码是否易于阅读、注释是否明确、变量和类命名是否合理、程序是否能够正确运行以及完成预定的功能□符合要求□比较符合要求□基本符合要求□不符合要求类...

1C#《可视化编程技术》设计性实验报告-动物信息管理系统设计
重庆交通大学上机实验报告班级:软件开发专业2012级2班学号:6312060502**姓名:尚亚*实验项目名称:动物信息管理系统 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 实验项目性质:设计性实验所属课程:可视化编程技术实验室(中心):B01407专业机房指导教师:王实验完成时间:2014年5月15日考核内容结果实验报告内容是否齐全、组织是否合理、描述是否逻辑性□符合要求□比较符合要求□基本符合要求□不符合要求源代码是否易于阅读、注释是否明确、变量和类命名是否合理、程序是否能够正确运行以及完成预定的功能□符合要求□比较符合要求□基本符合要求□不符合要求类的设计是否合理、是否对类之间的关系进行了说明、系统是否能够体现数据层和数据显示层□符合要求□比较符合要求□基本符合要求□不符合要求程序界面设计是否完整包含菜单、工具条、状态条等三部分,界面布局是否合理、操作是否简单□符合要求□比较符合要求□基本符合要求□不符合要求系统是否体现事件驱动编程、是否对事件进行了自定义等□符合要求□比较符合要求□基本符合要求□不符合要求考核成绩备注:1实验目的(1)掌握C#语言的基本要素(2)掌握类的定义以及多态应用(3)掌握面向对象程序设计的基本概念(4)熟悉.NetFramework提供的类和控件(5)掌握事件的自定义和运用(6)掌握C#环境下的程序调试技术(7)掌握C#的数据库编程技术(8)掌握C#中委托类型、事件的声明、事件的预定和事件处理方法的定义;(9)掌握C#中集合类的使用方法;(10)掌握基于事件驱动编程的本质;(11)巩固类以及成员的定义和使用方法、C#的程序结构;(12)掌握常用的控件使用方法、菜单和工具条的设计方法;(13)以及人机界面设计方法;2实验环境实验地点:双福407机房软件环境:VisualStudio.NetC#2008/20103系统功能概要描述(1)能够通过设计的人机界面增加动物的信息;(2)能够删除相应的动物信息;(3)能够输出全部动物的信息;(4)能够将动物的信息按照设计的数据结构在内存中保存;(5)能够根据动物的名字查询相应动物的信息并输出;(6)能够将动物的信息保存到数据库;(7)能够从数据库中读取动物的信息;4系统的界面设计4.1界面的整体设计界面包括各种按钮和listview和TreeView控件等。4.2元素属性的设置5类的设计5.1类的设计1.1.CDataList类类的功能存储各种动物信息以及对动物信息进行处理的方法字段序号名字可访问属性数据类型备注1AnimalListprivateAnimal采用List<T>或LinkedList<T>均可方法序号名字可访问属性返回值类型参数列表备注名称意义1AddAnimalpublicvoidAnimalpobj动物对象增加一个动物的对象,此方法需要提供2个重载的方法AddAnimalpublicvoidstringname动物名字DateTimebirhtday动物的出生日期Doubleheight身高Doubleweight体重AnimalTypetype动物的类型2DeleteAnimalpublicvoidAnimalpobj动物对象删除一个动物对象,需要提供2个重载方法。DeleteAnimalpublicvoidstringname动物名字3AnimalListpublicstring无将集合中的所有动物的信息以字符串的方式输出4CDataListpublic无无构造函数属性序号属性名称数据类型备注1Countint动物的数量,为只读属性事件序号事件名称备注1onAddAnimal增加一个动物时引发2onDeleteAnimal删除一个动物时引发索引定义一个属性,提供以索引的方式访问动物信息1.2.Animal类类的功能表示抽象动物的类,其中包含所有动物共有的属性。此类为抽象类字段序号名字可访问属性数据类型备注1Namepublicstring动物的名字2BirthdaypublicDateTime动物的出生日期3Heightpublicdouble动物的身高4Weightpublicdouble动物的体重方法序号名字可访问属性返回值类型参数列表备注名称意义1Showpublicstring无以字符串的形式返回动物的信息,此方法为抽象方法2Voicepublicstring无以字符串的形式返回动物的叫声,此方法为虚拟方法3Animalpublic无无构造函数,一个带参数,一个不带参数Animalpublicstringname动物名字DateTimebirhtday动物的出生日期Doubleheight身高Doubleweight体重AnimalTypetype动物的类型属性序号属性名称数据类型备注1Ageint动物的年龄,为只读属性。此属性为抽象属性2ATypeAnimalType动物的类型,为可读可写属性。此属性为抽象属性1.3.TwoFeetAnimal类功能表示普通两足动物类,此类为抽象类。字段序号名字可访问属性数据类型备注1CanFlypublicbool动物是否会飞true:会飞false:不会飞方法序号名字可访问属性返回值类型参数列表备注名称意义1TwoFeetAnimalpublic无无构造函数,一个带参数,一个不带参数TwoFeetAnimalpublicstringname动物名字DateTimebirhtday动物的出生日期Doubleheight身高Doubleweight体重AnimalTypetype动物的类型boolfly动物是否会飞2Showpublicstring无以字符串的形式返回动物的信息,此方法重写父类中的Show()方法1.4.FourFeetAnimal类功能表示普通四足动物类,此类为抽象类。字段序号名字可访问属性数据类型备注1CanJumppublicbool动物是否会跳true:会跳false:不会跳方法序号名字可访问属性返回值类型参数列表备注名称意义1FourFeetAnimalpublic无无构造函数,一个带参数,一个不带参数FourFeetAnimalpublicstringname动物名字DateTimebirhtday动物的出生日期Doubleheight身高Doubleweight体重AnimalTypetype动物的类型booljump动物是否会跳2Showpublicstring无以字符串的形式返回动物的信息,此方法重写父类中的Show()方法1.5.Chick类功能表示动物“鸡”类方法序号名字可访问属性返回值类型参数列表备注名称意义1Chickpublic无无构造函数,一个带参数,一个不带参数Chickpublic无stringname动物名字DateTimebirhtday动物的出生日期Doubleheight身高Doubleweight体重AnimalTypetype动物的类型boolfly动物是否会飞2Showpublicstring无以字符串的形式返回动物的信息,此方法重写父类中的Show()方法3Voicepublicstring无以字符串的形式返回动物叫的方式,此方法重写父类中的Voice()方法1.6.Hawk类功能表示动物“鹰”类方法序号名字可访问属性返回值类型参数列表备注名称意义1Hawkpublic无无构造函数,一个带参数,一个不带参数Hawkpublic无stringname动物名字DateTimebirhtday动物的出生日期Doubleheight身高Doubleweight体重AnimalTypetype动物的类型boolfly动物是否会飞2Showpublicstring无以字符串的形式返回动物的信息,此方法重写父类中的Show()方法3Voicepublicstring无以字符串的形式返回动物叫的方式,此方法重写父类中的Voice()方法1.7.Duck类功能表示动物“鸭”类方法序号名字可访问属性返回值类型参数列表备注名称意义1Chickpublic无无构造函数,一个带参数,一个不带参数Chickpublic无stringname动物名字DateTimebirhtday动物的出生日期Doubleheight身高Doubleweight体重AnimalTypetype动物的类型boolfly动物是否会飞2Showpublicstring无以字符串的形式返回动物的信息,此方法重写父类中的Show()方法3Voicepublicstring无以字符串的形式返回动物叫的方式,此方法重写父类中的Voice()方法1.8.Dog类功能表示动物“狗”类方法序号名字可访问属性返回值类型参数列表备注名称意义1Dogpublic无无构造函数,一个带参数,一个不带参数Dogpublic无stringname动物名字DateTimebirhtday动物的出生日期Doubleheight身高Doubleweight体重AnimalTypetype动物的类型booljump动物是否会跳2Showpublicstring无以字符串的形式返回动物的信息,此方法重写父类中的Show()方法3Voicepublicstring无以字符串的形式返回动物叫的方式,此方法重写父类中的Voice()方法1.9.Pig类功能表示动物“猪”类方法序号名字可访问属性返回值类型参数列表备注名称意义1Pigpublic无无构造函数,一个带参数,一个不带参数Pigpublic无stringname动物名字DateTimebirhtday动物的出生日期Doubleheight身高Doubleweight体重AnimalTypetype动物的类型booljump动物是否会跳2Showpublicstring无以字符串的形式返回动物的信息,此方法重写父类中的Show()方法3Voicepublicstring无以字符串的形式返回动物叫的方式,此方法重写父类中的Voice()方法1.10.Horse类功能表示动物“马”类方法序号名字可访问属性返回值类型参数列表备注名称意义1Horsepublic无无构造函数,一个带参数,一个不带参数Horsepublic无stringname动物名字DateTimebirhtday动物的出生日期Doubleheight身高Doubleweight体重AnimalTypetype动物的类型booljump动物是否会跳2Showpublicstring无以字符串的形式返回动物的信息,此方法重写父类中的Show()方法3Voicepublicstring无以字符串的形式返回动物叫的方式,此方法重写父类中的Voice()方法1.11.枚举类型publicenumAnimalType{两足动物,//两条腿动物四足动物,//四条腿动物}5.2类之间的继承关系其中类之间的继承关系如下图所示:6程序代码6.1添加动物信息代码如下:privatevoidadd_Click(objectsender,EventArgse){stringName=name.Text.Trim();doubleHeight,Weight;Animalan=Da[Name];if(an!=null){MessageBox.Show("该动物名字已存在!");return;}if(Name==""){MessageBox.Show("请输入动物的名字!");return;}try{Height=Convert.ToDouble(height.Text.Trim());Weight=Convert.ToDouble(weight.Text.Trim());}catch(FormatException){MessageBox.Show("“身高”或者“体重”输入错误!");return;}if(radiotwofeet.Checked){AnimalTypetype=AnimalType.两足动物;boolcanfly;if(radiochick.Checked){if(radiocanfly.Checked)canfly=true;elsecanfly=false;Da.AddAnimal(newChick(Name,birthday.Value,Height,Weight,type,canfly));}elseif(radioduck.Checked){if(radiocanfly.Checked)canfly=true;elsecanfly=false;Da.AddAnimal(newDuck(Name,birthday.Value,Height,Weight,type,canfly));}else{if(radiocanfly.Checked)canfly=true;elsecanfly=false;Da.AddAnimal(newHawk(Name,birthday.Value,Height,Weight,type,canfly));}}else{AnimalTypetype=AnimalType.四足动物;boolcanjump;if(radiodog.Checked){if(radiocanjump.Checked)canjump=true;elsecanjump=false;Da.AddAnimal(newDog(Name,birthday.Value,Height,Weight,type,canjump));}elseif(radiopig.Checked){if(radiocanjump.Checked)canjump=true;elsecanjump=false;Da.AddAnimal(newPig(Name,birthday.Value,Height,Weight,type,canjump));}else{if(radiocanjump.Checked)canjump=true;elsecanjump=false;Da.AddAnimal(newHorse(Name,birthday.Value,Height,Weight,type,canjump));}}this.Close();}6.2删除动物信息代码如下:publicvoidDeleteAnimal(stringname){Animalobj=this[name];if(obj==null){MessageBox.Show(string.Format("不存在名为\"{0}\"的动物!",name));return;}animals.Remove(obj);EventAnimalArgse=newEventAnimalArgs();e.pObj=obj;if(AnimalDelete!=null)AnimalDelete(this,e);sum--;}6.3在列表中显示动物信息代码如下:privatevoidAddAniamlToList(Animalpobj){ListViewItemitem=newListViewItem();item.Text=pobj.Name;switch(pobj.GetType().Name){case"Chick":item.ImageIndex=2;break;case"Duck":item.ImageIndex=3;break;case"Hawk":item.ImageIndex=4;break;case"Dog":item.ImageIndex=6;break;case"Horse":item.ImageIndex=7;break;case"Pig":item.ImageIndex=8;break;}item.SubItems.Add(pobj.Age.ToString());item.SubItems.Add(pobj.Height.ToString());item.SubItems.Add(pobj.Weight.ToString());stringstr=string.Format("{0:yyyy-MM-dd}",pobj.Birthday);item.SubItems.Add(str);item.SubItems.Add(pobj.AType.ToString());listView.Items.Add(item);}6.4将数据保存到数据库代码如下:privatevoidSavefile_Click(objectsender,EventArgse){Animalan;stringsql="",str1="",str2="";connection=newOleDbConnection(strconnection);connection.Open();command=newOleDbCommand("deletefromAnimalswhere1=1",connection);command.ExecuteNonQuery();for(intn=0;n<da.Count;n++){an=da[n];Typetype=an.GetType();switch(type.Name){case"Chick":str1="鸡";str2="不会飞";break;case"Duck":str1="鸭";str2="不会飞";break;case"Hawk":str1="鹰";str2="会飞";break;case"Dog":str1="狗";str2="会跳";break;case"Horse":str1="马";str2="会跳";break;case"Pig":str1="猪";str2="不会跳";break;}sql="insertinto[Animals]([animal],[name],[height],[weight],[birthday],[animaltype],[flyorjump])values('"+str1+"','"+an.Name+"','"+an.Height.ToString()+"','"+an.Weight.ToString()+"','"+an.Birthday.ToString()+"','"+an.AType.ToString()+"','"+str2+"')";try{command=newOleDbCommand(sql,connection);command.ExecuteNonQuery();}catch(Exceptionex){MessageBox.Show(ex.Message,"操作数据库出错!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);}finally{}}connection.Close();}6.5从数据库读取动物信息:privatevoidRead_Click(objectsender,EventArgse){stringname;DateTimedate;doubleheight=1,weight=2;AnimalTypetype;boolflyorjump;connection=newOleDbConnection(strconnection);stringsql="select*fromAnimals";try{connection.Open();command=newOleDbCommand(sql,connection);dataReader=command.ExecuteReader();while(dataReader.Read()){name=dataReader[2].ToString().Trim();Animalan=da[name];if(an!=null)return;height=double.Parse(dataReader[3].ToString());weight=double.Parse(dataReader[4].ToString());date=DateTime.Parse(dataReader[5].ToString());if(dataReader[6].ToString()=="两足动物")type=AnimalType.两足动物;elsetype=AnimalType.四足动物;if(dataReader[7].ToString()=="会飞"||dataReader[7].ToString()=="会跳")flyorjump=true;elseflyorjump=false;switch(dataReader[1].ToString()){case"鸡":da.AddAnimal(newChick(name,date,height,weight,type,flyorjump));break;case"鹰":da.AddAnimal(newHawk(name,date,height,weight,type,flyorjump));break;case"鸭":da.AddAnimal(newDuck(name,date,height,weight,type,flyorjump));break;case"狗":da.AddAnimal(newDog(name,date,height,weight,type,flyorjump));break;case"猪":da.AddAnimal(newPig(name,date,height,weight,type,flyorjump));break;case"马":da.AddAnimal(newHorse(name,date,height,weight,type,flyorjump));break;}}}catch(Exceptionex){MessageBox.Show(ex.Message,"操作数据库出错!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);}finally{connection.Close();}}6.6其他代码如下:#region添加树节点privatevoidAddTreeNode(Animalan){Animalpobj=an;//获取要增加动物的对象if(pobj==null)return;/***在树中寻找相应的节点*******/TreeNodepNode=null;pNode=FindNodeFromName(pobj.AType.ToString());if(pNode==null)return;/***在找到的节点中插入节点**/TreeNodesubnode=newTreeNode(pobj.Name);Typetype=pobj.GetType();switch(type.Name){case"Chick":subnode.ImageIndex=2;subnode.SelectedImageIndex=2;break;case"Duck":subnode.ImageIndex=3;subnode.SelectedImageIndex=3;break;case"Hawk":subnode.ImageIndex=4;subnode.SelectedImageIndex=4;break;case"Dog":subnode.ImageIndex=6;subnode.SelectedImageIndex=6;break;case"Horse":subnode.ImageIndex=7;subnode.SelectedImageIndex=7;break;case"Pig":subnode.ImageIndex=8;subnode.SelectedImageIndex=8;break;}pNode.Nodes.Add(subnode);pNode.Expand();treeView.SelectedNode=pNode;AddAnimalInList(pNode);}#endregionprivateTreeNodeFindNodeFromName(stringname){Stack<TreeNode>stack=newStack<TreeNode>();//将树中的最高层节点压入堆栈foreach(TreeNodepnodeintreeView.Nodes)stack.Push(pnode);if(stack.Count==0)//树中没有节点returnnull;while(stack.Count!=0){TreeNodepnode=stack.Pop();if(pnode.Text==name)returnpnode;foreach(TreeNodenodeinpnode.Nodes){stack.Push(node);}}returnnull;}privatevoidtreeView_AfterSelect(objectsender,TreeViewEventArgse){listView.Items.Clear();TreeNodepNode=e.Node;//获取当前用户选择的节点AddAnimalInList(pNode);}///<summary>///将一个树节点中的所有叶子在列表中显示///</summary>///<paramname="pNode"></param>privatevoidAddAnimalInList(TreeNodepNode){listView.Items.Clear();if(pNode.Nodes.Count==0)//为叶子节点{AnimalpAnimal=da[pNode.Text];//da.GetAnimalFromName(pNode.Text);if(pAnimal==null)return;AddAniamlToList(pAnimal);}else//否则增加其子树上的叶子节点{Stack<TreeNode>stack=newStack<TreeNode>();foreach(TreeNodenodeinpNode.Nodes){stack.Push(node);}while(stack.Count!=0){TreeNodenode=stack.Pop();if(node.Nodes.Count==0){AnimalpAnimal=da[node.Text];//pObj.GetAnimalFromName(node.Text);if(pAnimal==null)continue;AddAniamlToList(pAnimal);}else{foreach(TreeNodepinnode.Nodes)stack.Push(p);}}}}7运行结果运行结果正确,能完成主要功能。8实验总结分析通过这出实验从中学到了很多知识,包括事件、各种控件使用方法、数据库的操作等。受益匪浅。
本文档为【1C#《可视化编程技术》设计性实验报告-动物信息管理系统设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥40.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
飞哥
暂无简介~
格式:pdf
大小:487KB
软件:PDF阅读器
页数:31
分类:初中语文
上传时间:2018-05-11
浏览量:24