学生实验报告(理工类)课程名称:软件体系结构专业班级:13软件工程2班学生学号:1305104069学生姓名:管东升所属院部:软件工程学院指导教师:陈圣国2015——2016学年第1学期金陵科技学院教务处制实验报告书写要求实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。实验报告书写说明实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。填写注意事项(1)细致观察,及时、准确、如实记录。(2)准确说明,层次清晰。(3)尽量采用专用术语来说明事物。(4)外文、符号、公式要准确,应使用统一规定的名词和符号。(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。实验报告批改说明实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。实验报告装订要求实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。实验项目名称:经典软件体系结构风格实验学时:4学时同组学生姓名:实验地点:1216实验日期:2015.10.27-2015.11.3实验成绩:批改教师:批改时间:一、实验目的和要求(1)理解管道-过滤器软件体系结构、面向对象软件体系结构的原理(2)掌握管道-过滤器软件体系结构、面向对象软件体系结构特点(3)面向对象软件体系结构的编程实现二、实验仪器和设备奔腾以上计算机,Windows10、VisualStudio2013、MySQL三、实验过程(1)在dos下体会管道过滤器的体系结构。使用dir|more命令了解管道-过滤器风格的程序。(2)数据抽象和面向对象软件体系结构设计实现。设计一个应用程序,在该程序定义平面图形的抽象类和其派生类圆、矩形、三角形,椭圆。该程序的功能包括:输入相应的图形参数,如矩形的长和宽,单击相应按钮,能根据输入参数创建图形类并输出该对象的面积。使用c#、c++或Java或语言进行面向对象的程序设计:(1)首先考虑数据封装性,(2)考虑继承性,(3)考虑抽象类。应用程序代码:Graphic.cs:namespaceWindowsFormsApplication1{publicabstractclassGraphic{publicabstractdoubleArea();}}Rectangle.cs:namespaceWindowsFormsApplication1{publicclassRectangle:Graphic{doublelen;doublewid;publicRectangle(doublelength,doublewidth){len=length;wid=width;}publicoverridedoubleArea(){returnlen*wid;}}}Triangle.cs:namespaceWindowsFormsApplication1{publicclassTriangle:Graphic{doublebtm;doublehgt;publicTriangle(doublebottom,doubleheight){btm=bottom;hgt=height;}publicoverridedoubleArea(){returnbtm*hgt/2;}}}Circle.cs:namespaceWindowsFormsApplication1{publicclassCircle:Graphic{doubleradius;publicCircle(doubler){radius=r;}publicoverridedoubleArea(){returnradius*radius*3.14;}}}Ellipse.cs:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceWindowsFormsApplication1{publicclassEllipse:Graphic{doublela;doublelb;publicEllipse(doublea,doubleb){la=a;lb=b;}publicoverridedoubleArea(){returnla*lb*3.14;}}}From1.cs:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespaceWindowsFormsApplication1{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){if(comboBox1.SelectedItem==圆){doubler=Convert.ToDouble(textBox1.Text);Circlecircle=newCircle(r);textBox4.Text=Convert.ToString(circle.Area());}elseif(comboBox1.SelectedItem==矩形){doublelen=Convert.ToDouble(textBox1.Text);doublewid=Convert.ToDouble(textBox2.Text);Rectanglerec=newRectangle(len,wid);textBox4.Text=Convert.ToString(rec.Area());}elseif(comboBox1.SelectedItem==三角形){doublebtm=Convert.ToDouble(textBox1.Text);doublehgt=Convert.ToDouble(textBox3.Text);Triangletri=newTriangle(btm,hgt);textBox4.Text=Convert.ToString(tri.Area());}elseif(comboBox1.SelectedItem==椭圆){doublea=Convert.ToDouble(textBox1.Text);doubleb=Convert.ToDouble(textBox2.Text);Ellipseelp=newEllipse(a,b);textBox4.Text=Convert.ToString(elp.Area());}}privatevoidcomboBox1_SelectedIndexChanged(objectsender,EventArgse){if(comboBox1.SelectedItem==圆){label1.Text=半径;label2.Visible=false;label3.Visible=false;textBox2.Visible=false;textBox3.Visible=false;}elseif(comboBox1.SelectedItem==矩形){label1.Text=长;label2.Visible=true;textBox2.Visible=true;label3.Visible=false;textBox3.Visible=false;}elseif(comboBox1.SelectedItem==三角形){label1.Text=底;label3.Visible=true;textBox3.Visible=true;label2.Visible=false;textBox2.Visible=false;}elseif(comboBox1.SelectedItem==椭圆){label1.Text=半长轴;label2.Text=半短轴;label2.Visible=true;textBox2.Visible=true;label3.Visible=false;textBox3.Visible=false;}}}}四、实验结果与分析程序初始界面:如选择椭圆,输入半长轴和半短轴,点击计算,输出结果:如选择三角形,输入底和高,点击计算,输出结果:五、思考题(1)管道-过滤器软件体系结构与批处理软件体系结构的区别和联系是什么?答:管道/过滤器结构通常导致进程成为批处理的结构,因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须将每一个过滤器看成一个完整的从输入到输出的转换。.限定过滤器的数据存储容量,就可以得到有界管道/过滤器。过滤器将所有输入数据作为单个实体进行处理,这就是批处理系统(2)面向对象软件体系结构与主程序-子程序软件体系结构的区别和联系是什么?答:主程序-子程序体系结构在设计上使用层次化的划分方法,通常采用自顶向下的功能化设计方法,面向对象体系结构在设计上使用面向对象的设计方法,可以隐藏对象的内部状态并且要求所有对象间的交互都通过该方法,即进行了数据封装,这也是面向对象编程的基本原则六、实验心得与体会在管道/过滤器风格的软件体系结构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常通过对输入流的变换及增量计算来完成,所以在输入被完全消费之前,输出便产生了。因此,这里的构件被称为过滤器,这种风格的连接件就象是数据流传输的管道,将一个过滤器的输出传到另一过滤器的输入。通过实验,我对这种软件体系结构有了进一步了解。实验项目名称:多层C/S结构应用设计实验学时:4学时同组学生姓名:实验地点:1216实验日期:2015.11.10-2015.11.24实验成绩:批改教师:批改时间:一、实验目的和要求设计并实现一个基于多层C/S结构的数据库应用,熟悉多层C/S体系结构及其基本处理流程,了解多层结构表现层、业务逻辑层(功能层)、数据访问层所完成的功能,掌握多层C/S结构的数据库应用设计方法,对这三层进行明确分割,并在逻辑上使其独立。学生通过本实验的训练能够熟练掌握对小型数据库应用系统三层结构层次划分方法及系统实现技术。二、实验仪器和设备奔腾以上计算机,Windows10、VisualStudio2013、MySQL三、实验过程分别采用二层C/S结构和多层C/S结构实现个人通讯录系统。该系统的设计目标是能够轻松地管理个人的联系人信息,包括添加、修改和删除操作。联系人信息包括姓名、住址、电话。整个系统的功能图如下图所示:应用程序代码:usingSystem;usingSystem.Windows.Forms;usingMySql.Data.MySqlClient;namespaceWindowsFormsApplication2{publicpartialclassForm1:Form{publicintaction=0;//0:添加;1:修改publicForm1(){InitializeComponent();}privatevoidgroupBox3_Enter(objectsender,EventArgse){}privatevoidbutton3_Click(objectsender,EventArgse){frm1.Enabled=true;frm2.Enabled=false;action=0;}privatevoidadd(){longid=0;intcount=list1.Items.Count;if(count==0