软件体系结构实验报告.doc
《软件体系结构实验报告.doc》由会员分享,可在线阅读,更多相关《软件体系结构实验报告.doc(27页珍藏版)》请在咨信网上搜索。
学 生 实 验 报 告 (理工类) 课程名称: 软件体系结构 专业班级:13软件工程2班 学生学号: 1305104069 学生姓名: 管东升 所属院部: 软件工程学院 指导教师: 陈圣国 20 15 ——20 16 学年 第 1 学期 金陵科技学院教务处制 实验报告书写要求 实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。 实验报告书写说明 实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。 填写注意事项 (1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。 (3)尽量采用专用术语来说明事物。 (4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。 实验报告批改说明 实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。 实验报告装订要求 实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。 实验项目名称:经典软件体系结构风格 实验学时: 4学时 同组学生姓名: 实验地点: 1216 实验日期: 2015.10.27-2015.11.3 实验成绩: 批改教师: 批改时间: 一、 实验目的和要求 (1)理解管道-过滤器软件体系结构、面向对象软件体系结构的原理 (2)掌握管道-过滤器软件体系结构、面向对象软件体系结构特点 (3)面向对象软件体系结构的编程实现 二、 实验仪器和设备 奔腾以上计算机,Windows 10 、Visual Studio 2013、MySQL 三、 实验过程 (1)在dos下体会管道过滤器的体系结构。 使用 dir | more 命令了解管道-过滤器风格的程序。 (2)数据抽象和面向对象软件体系结构设计实现。设计一个应用程序,在该程序定义平面图形的抽象类和其派生类圆、矩形、三角形,椭圆。该程序的功能包括:输入相应的图形参数,如矩形的长和宽,单击相应按钮,能根据输入参数创建图形类并输出该对象的面积。使用c#、c++或Java或语言进行面向对象的程序设计:(1)首先考虑数据封装性,(2)考虑继承性,(3)考虑抽象类。 应用程序代码: Graphic.cs: namespace WindowsFormsApplication1 { public abstract class Graphic { public abstract double Area(); } } Rectangle.cs: namespace WindowsFormsApplication1 { public class Rectangle : Graphic { double len; double wid; public Rectangle(double length,double width) { len = length; wid = width; } public override double Area() { return len * wid; } } } Triangle.cs: namespace WindowsFormsApplication1 { public class Triangle : Graphic { double btm; double hgt; public Triangle(double bottom, double height) { btm=bottom; hgt=height; } public override double Area() { return btm * hgt/2; } } } Circle.cs: namespace WindowsFormsApplication1 { public class Circle:Graphic { double radius; public Circle(double r) { radius = r; } public override double Area() { return radius * radius * 3.14; } } } Ellipse.cs: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WindowsFormsApplication1 { public class Ellipse : Graphic { double la; double lb; public Ellipse(double a, double b) { la = a; lb = b; } public override double Area() { return la * lb*3.14; } } } From1.cs: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { if (comboBox1.SelectedItem == "圆") { double r=Convert.ToDouble(textBox1.Text); Circle circle=new Circle(r); textBox4.Text = Convert.ToString(circle.Area()); } else if (comboBox1.SelectedItem == "矩形") { double len = Convert.ToDouble(textBox1.Text); double wid = Convert.ToDouble(textBox2.Text); Rectangle rec = new Rectangle(len, wid); textBox4.Text = Convert.ToString(rec.Area()); } else if (comboBox1.SelectedItem == "三角形") { double btm = Convert.ToDouble(textBox1.Text); double hgt = Convert.ToDouble(textBox3.Text); Triangle tri = new Triangle(btm, hgt); textBox4.Text = Convert.ToString(tri.Area()); } else if (comboBox1.SelectedItem == "椭圆") { double a = Convert.ToDouble(textBox1.Text); double b = Convert.ToDouble(textBox2.Text); Ellipse elp = new Ellipse(a, b); textBox4.Text = Convert.ToString(elp.Area()); } } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { if (comboBox1.SelectedItem == "圆") { label1.Text = "半径"; label2.Visible = false; label3.Visible = false; textBox2.Visible = false; textBox3.Visible = false; } else if (comboBox1.SelectedItem == "矩形") { label1.Text = "长"; label2.Visible = true; textBox2.Visible = true; label3.Visible = false; textBox3.Visible = false; } else if (comboBox1.SelectedItem == "三角形") { label1.Text = "底"; label3.Visible = true; textBox3.Visible = true; label2.Visible = false; textBox2.Visible = false; } else if (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结构的数据库应用设计方法,对这三层进行明确分割,并在逻辑上使其独立。学生通过本实验的训练能够熟练掌握对小型数据库应用系统三层结构层次划分方法及系统实现技术。 二、 实验仪器和设备 奔腾以上计算机,Windows 10 、Visual Studio 2013、MySQL 三、 实验过程 分别采用二层C/S结构和多层C/S结构实现个人通讯录系统。该系统的设计目标是能够轻松地管理个人的联系人信息,包括添加、修改和删除操作。联系人信息包括姓名、住址、电话。整个系统的功能图如下图所示: 应用程序代码: using System; using System.Windows.Forms; using MySql.Data.MySqlClient; namespace WindowsFormsApplication2 { public partial class Form1 : Form { public int action = 0;//0:添加;1:修改 public Form1() { InitializeComponent(); } private void groupBox3_Enter(object sender, EventArgs e) { } private void button3_Click(object sender, EventArgs e) { frm1.Enabled = true; frm2.Enabled = false; action = 0; } private void add() { long id=0; int count=list1.Items.Count; if (count == 0) { id = 1001; } else { id = long.Parse(list1.Items[count - 1].Text)+1; } Dbcon connector = new Dbcon(); MySqlConnection con = connector.dbcon(); con.Open(); MySqlCommand cmd = new MySqlCommand("insert into person (id,name,phoneno,location) values(@id,@name,@phoneno,@location)", con); cmd.Parameters.AddWithValue("@name", name.Text); cmd.Parameters.AddWithValue("@phoneno", phoneno.Text); cmd.Parameters.AddWithValue("@location", location.Text); cmd.Parameters.AddWithValue("@id", Convert.ToString(id)); cmd.ExecuteNonQuery(); con.Close(); build(); } private void modify() { foreach (ListViewItem item in list1.SelectedItems) { Dbcon connector = new Dbcon(); MySqlConnection con = connector.dbcon(); con.Open(); MySqlCommand cmd = con.CreateCommand(); cmd.CommandText="update person set name=@name,phoneno=@phoneno,location=@location where id=@id"; cmd.Parameters.AddWithValue("@name", name.Text); cmd.Parameters.AddWithValue("@phoneno", phoneno.Text); cmd.Parameters.AddWithValue("@location", location.Text); cmd.Parameters.AddWithValue("@id", item.Text); cmd.ExecuteNonQuery(); con.Close(); } build(); } private void button1_Click(object sender, EventArgs e) { if (action == 0) { add(); } else if (action == 1) { modify(); } name.Clear(); phoneno.Clear(); location.Clear(); frm2.Enabled = true; frm1.Enabled = false; } private void button4_Click(object sender, EventArgs e) { foreach (ListViewItem item in list1.SelectedItems) { frm1.Enabled = true; frm2.Enabled = false; name.Text = item.SubItems[1].Text; phoneno.Text = item.SubItems[2].Text; location.Text = item.SubItems[3].Text; action = 1; } } private void Form1_Load(object sender, EventArgs e) { build(); } public void build() { list1.BeginUpdate(); list1.Items.Clear(); Dbcon connector = new Dbcon(); MySqlConnection con = connector.dbcon(); con.Open(); MySqlCommand cmd = new MySqlCommand("select * from person", con); MySqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { ListViewItem item = new ListViewItem(); item.Text = Convert.ToString(dr["id"]); item.SubItems.Add(Convert.ToString(dr["name"])); item.SubItems.Add(Convert.ToString(dr["phoneno"])); item.SubItems.Add(Convert.ToString(dr["location"])); list1.Items.Add(item); } dr.Close(); con.Close(); list1.EndUpdate(); } private void button5_Click(object sender, EventArgs e) { foreach (ListViewItem item in list1.SelectedItems) { Dbcon connector = new Dbcon(); MySqlConnection con = connector.dbcon(); con.Open(); MySqlCommand cmd = new MySqlCommand("delete from person where id="+item.Text, con); cmd.ExecuteNonQuery(); } build(); } private void button2_Click(object sender, EventArgs e) { frm2.Enabled = true; frm1.Enabled = false; name.Clear(); phoneno.Clear(); location.Clear(); } private void textBox2_TextChanged(object sender, EventArgs e) { } private void list1_SelectedIndexChanged(object sender, EventArgs e) { //MessageBox.Show(); } private void button6_Click(object sender, EventArgs e) { MessageBox.Show("developed by altair"); } } public class Dbcon { public MySqlConnection dbcon() { String constr = "server=localhost;User Id=root;password=root;Database=contact"; MySqlConnection con = new MySqlConnection(constr); return con; } } } 四、 实验结果与分析 程序主界面: 点击“添加联系人信息”: 点击“确定”: 选中列表上的某项内容,点击“修改联系人信息”: 修改信息并点击“确定”: 五、思考题 与二层C/S体系结构比较,三层(多层)体系结构有什么优点?采用三层体系结构在系统设计时应该注意哪些问题? 答:三层体系结构的优点: ①允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性 ②允许更灵活有效地选用相应的平台和硬件系统 ③三层C/S结构中,应用的各层可以并行开发,各层也可以选择各自最合适的开发语言。 ④允许充分利用功能层有效地隔离层表示层与数据层。 ⑤三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能。 在设计三层结构时,首先要考虑的问题在于数据层和业务层的连接是否畅通,数据的吞吐量是否过大。在用户对于程序相应速度要求一般或者数据吞吐量较小的情况下,可以采用三层结构进行设计 六、实验心得与体会 实验涉及到c#技术对于JDBC的操作,遇到一定困难,但都完美解决了。收获了很多经验和知识。同时我对多层c/s结构也有了更加深刻的认知和了解,掌握了这种软件体系结构想必十分有用。 实验项目名称:B/S结构应用设计 实验学时: 4学时 同组学生姓名: 实验地点: 1216 实验日期:2015.12.01-2015.12.15 实验成绩: 批改教师: 批改时间: 一、 实验目的和要求 设计并实现一个基于B/S结构的数据库应用,熟悉B/S体系结构及其基本处理流程,了解B/S结构系统各部分所完成的功能,掌握B/S结构的数据库应用设计方法。学生通过本实验的训练能够熟练掌握对小型数据库应用系统B/S结构设计及系统实现技术。 二、 实验仪器和设备 奔腾以上计算机,Windows 10、MyEclipse2014、Sencha CMD、MySQL 三、 实验过程 采用B/S结构实现个人通讯录系统。该系统的设计目标是能够轻松地管理个人的联系人信息,包括添加、修改和删除操作。联系人信息包括姓名、住址、电话。整个系统的功能图如下图所示: 2.三层B/S结构的个人通讯录 .项目结构截图 public void AddFriend(ContactEntry friend) { SqlConnection conn = new SqlConnection(); conn.ConnectionString = ConfigurationManager.AppSettings["ConnectionString"]; SqlCommand cmd = new SqlCommand(); cmd.CommandText = "Select * from contact "; cmd.Connection = conn; conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); int[] temp = new int[2]; temp[0] = 0; while (reader.Read()) { temp[1] = reader.GetInt32(0); if (temp[0] < temp[1]) { temp[0] = temp[1]; } } int cID = temp[0] + 1; reader.Close(); conn.Close(); conn = new SqlConnection(); conn.ConnectionString = ConfigurationManager.AppSettings["ConnectionString"]; cmd = new SqlCommand(); cmd.CommandText = "insert into contact(ID- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 体系结构 实验 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文