软件体系结构实验报告_第1页
软件体系结构实验报告_第2页
软件体系结构实验报告_第3页
软件体系结构实验报告_第4页
软件体系结构实验报告_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学 生 实 验 报 告(理工类)课程名称: 软件体系结构 专业班级: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.Itemscount - 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.SubItems1.Text; phoneno.Text = item.SubItems2.Text; location.Text = item.SubItems3.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(drid); item.SubItems.Add(Convert.ToString(drname); item.SubItems.Add(Convert.ToString(drphoneno); item.SubItems.Add(Convert.ToString(drlocation); 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.AppSettingsConnectionString; SqlCommand cmd = new SqlCommand(); cmd.CommandText = Select * from contact ; cmd.Connection = conn; conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); int temp = new int2; temp0 = 0; while (reader.Read() temp1 = reader.GetInt32(0); if (temp0 temp1) temp0 = temp1; int cID = temp0 + 1; reader.Close(); conn.Close(); conn = new SqlConnection(); conn.ConnectionString = ConfigurationManager.AppSettingsConnectionString; cmd = new SqlCommand(); cmd.CommandText = insert into contact(ID,cName,cAddress,cPhone,cEmail) ; cmd.CommandText += values( + cID + ,; cmd.CommandText += friend.CName + ,; cmd.CommandText += friend.CAddress + ,; cmd.CommandText += friend.CPhone + ,; cmd.CommandText += friend.CEmail + ); cmd.Connection = conn; conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); 调用Bean中的属性:调用配置文件中的信息:.“修改联系人信息”功能:“修改”功能的代码:public void UpdateFriendByID(ContactEntry friend) SqlConnection conn = new SqlConnection(); conn.ConnectionString = ConfigurationManager.AppSettingsConnectionString; SqlCommand cmd = new SqlCommand(); cmd.CommandText = update contact set cName = + friend.CName; cmd.CommandText += , cAddress = + friend.CAddress; cmd.CommandText += , cEmail = + friend.CEmail; cmd.CommandText += , cPhone = + friend.CPhone + ; cmd.CommandText += where ID = + friend.ID; cmd.Connection = conn; conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); “删除”联系人功能:“删除”功能的代码:public void DeleteFriendByID(int id) SqlConnection conn = new SqlConnection(); conn.ConnectionString = ConfigurationManager.AppSettingsConnectionString; SqlCommand cmd = new SqlCommand(); cmd.CommandText = delete from contact where ID = + id; cmd.Connection = conn; conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); .“搜索”联系人功能:“搜索”功能的代码:public SqlDataReader GetFriendKey(string key) SqlConnection conn = new SqlConnection(); conn.ConnectionString = ConfigurationManager.AppSettingsConnectionString; SqlCommand cmd = new SqlCommand(); cmd.CommandText = select ID,cName,cAddress,cPhone,cEmail from contact; cmd.CommandText += where cName like % + key + % ; cmd.CommandText += or cAddress like % + key + % ; cmd.CommandText += or cPhone like % + key + % ; cmd.CommandText += or cEmail like % + key + % ; cmd.Connection = conn; conn.Open(); SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); return reader; 二层B/S结构个人通讯录.二层B/S结构界面设计和逻辑代码未分离p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论