收藏 分销(赏)

软件标准体系结构实验报告.doc

上传人:天**** 文档编号:2949823 上传时间:2024-06-11 格式:DOC 页数:36 大小:501.04KB 下载积分:12 金币
下载 相关 举报
软件标准体系结构实验报告.doc_第1页
第1页 / 共36页
软件标准体系结构实验报告.doc_第2页
第2页 / 共36页


点击查看更多>>
资源描述
学 生 实 验 报 告 (理工类) 课程名称: 软件体系构造 专业班级:13软件工程2班 学生学号: 学生姓名: 管东升 所属院部: 软件工程学院 指引教师: 陈圣国 20 15 ——20 16 年 第 1 学期 金陵科技学院教务处制 实验报告书写规定 实验报告原则上规定学生手写,规定书写工整。若因课程特点需打印,要遵循如下字体、字号、间距等详细规定。纸张一律采用A4纸张。 实验报告书写阐明 实验报告中一至四项内容为必填项,涉及实验目和规定;实验仪器和设备;实验内容与过程;实验成果与分析。各院部可依照学科特点和实验详细规定增长项目。 填写注意事项 (1)细致观测,及时、精确、如实记录。 (2)精确阐明,层次清晰。 (3)尽量采用专用术语来阐明事物。  (4)外文、符号、公式要精确,应使用统一规定名词和符号。 (5)应独立完毕实验报告书写,禁止抄袭、复印,一经发现,以零分论处。 实验报告批改阐明 实验报告批改要及时、认真、仔细,一律用红色笔批改。实验报告批改成绩采用百分制,详细评分原则由各院部自行制定。 实验报告装订规定 实验批改完毕后,任课教师将每门课程每个实验项目实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程实验大纲。 实验项目名称:典型软件体系构造风格 实验学时: 4学时 同组学生姓名: 实验地点: 1216 实验日期: .10.27-.11.3 实验成绩: 批改教师: 批改时间: 一、 实验目和规定 (1)理解管道-过滤器软件体系构造、面向对象软件体系构造原理 (2)掌握管道-过滤器软件体系构造、面向对象软件体系构造特点 (3)面向对象软件体系构造编程实现 二、 实验仪器和设备 奔腾以上计算机,Windows 10 、Visual Studio 、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 实验日期: .11.10-.11.24 实验成绩: 批改教师: 批改时间: 一、 实验目和规定 设计并实现一种基于多层C/S构造数据库应用,熟悉多层C/S体系构造及其基本解决流程,理解多层构造体现层、业务逻辑层(功能层)、数据访问层所完毕功能,掌握多层C/S构造数据库应用设计办法,对这三层进行明确分割,并在逻辑上使其独立。学生通过本实验训练可以纯熟掌握对小型数据库应用系统三层构造层次划分办法及系统实现技术。 二、 实验仪器和设备 奔腾以上计算机,Windows 10 、Visual Studio 、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 实验日期:.12.01-.12.15 实验成绩: 批改教师: 批改时间: 一、 实验目和规定 设计并实现一种基于B/S构造数据库应用,熟悉B/S体系构造及其基本解决流程,理解B/S构造系统各某些所完毕功能,掌握B/S构造数据库应用设计办法。学生通过本实验训练可以纯熟掌握对小型数据库应用系统B/S构造设计及系统实现技术。 二、 实验仪器和设备 奔腾以上计算机,Windows 10、MyEclipse、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,cName,cAddress,cPhone,cEmail) "; cmd.CommandText += "values(" + cID + ",'"; cmd.CommandText += friend.CName + "','"; c
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服