1、学 生 实 验 报 告(理工类)课程名称: 软件体系构造 专业班级:13软件工程2班 学生学号: 学生姓名: 管东升 所属院部: 软件工程学院 指引教师: 陈圣国 20 15 20 16 年 第 1 学期 金陵科技学院教务处制实验报告书写规定实验报告原则上规定学生手写,规定书写工整。若因课程特点需打印,要遵循如下字体、字号、间距等详细规定。纸张一律采用A4纸张。实验报告书写阐明实验报告中一至四项内容为必填项,涉及实验目和规定;实验仪器和设备;实验内容与过程;实验成果与分析。各院部可依照学科特点和实验详细规定增长项目。填写注意事项(1)细致观测,及时、精确、如实记录。(2)精确阐明,层次清晰。(
2、3)尽量采用专用术语来阐明事物。(4)外文、符号、公式要精确,应使用统一规定名词和符号。(5)应独立完毕实验报告书写,禁止抄袭、复印,一经发现,以零分论处。实验报告批改阐明实验报告批改要及时、认真、仔细,一律用红色笔批改。实验报告批改成绩采用百分制,详细评分原则由各院部自行制定。实验报告装订规定实验批改完毕后,任课教师将每门课程每个实验项目实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程实验大纲。实验项目名称:典型软件体系构造风格 实验学时: 4学时 同组学生姓名: 实验地点: 1216 实验日期: .10.27-.11.3 实验成绩: 批改教师: 批改时间: 一、 实验目
3、和规定(1)理解管道-过滤器软件体系构造、面向对象软件体系构造原理 (2)掌握管道-过滤器软件体系构造、面向对象软件体系构造特点(3)面向对象软件体系构造编程实现二、 实验仪器和设备奔腾以上计算机,Windows 10 、Visual Studio 、MySQL三、 实验过程(1)在dos下体会管道过滤器体系构造。 使用 dir | more 命令理解管道-过滤器风格程序。(2)数据抽象和面向对象软件体系构造设计实现。设计一种应用程序,在该程序定义平面图形抽象类和其派生类圆、矩形、三角形,椭圆。该程序功能涉及:输入相应图形参数,如矩形长和宽,单击相应按钮,能依照输入参数创立图形类并输出该对象面
4、积。使用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(doubl
5、e 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() r
6、eturn 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;nam
7、espace 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.D
8、rawing;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.Tex
9、t); 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
10、 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
11、 = 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 =
12、 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.Vi
13、sible = 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) 管道-过滤器软件体
14、系构造与批解决软件体系构造区别和联系是什么?答:管道/过滤器构造普通导致进程成为批解决构造,由于虽然过滤器可增量式地解决数据,但它们是独立,因此设计者必要将每一种过滤器当作一种完整从输入到输出转换。.限定过滤器数据存储容量,就可以得到有界管道/过滤器。过滤器将所有输入数据作为单个实体进行解决,这就是批解决系统(2) 面向对象软件体系构造与主程序-子程序软件体系构造区别和联系是什么?答:主程序-子程序体系构造在设计上使用层次化划分办法,普通采用自顶向下功能化设计办法,面向对象体系构造在设计上使用面向对象设计办法,可以隐藏对象内部状态并且规定所有对象间交互都通过该办法,即进行了数据封装,这也是面向
15、对象编程基本原则六、实验心得与体会在管道/过滤器风格软件体系构造中,每个构件均有一组输入和输出,构件读输入数据流,通过内部解决,然后产生输出数据流。这个过程普通通过对输入流变换及增量计算来完毕,因此在输入被完全消费之前,输出便产生了。因而,这里构件被称为过滤器,这种风格连接件就象是数据流传播管道,将一种过滤器输出传到另一过滤器输入。通过实验,我对这种软件体系构造有了进一步理解。实验项目名称:多层C/S构造应用设计 实验学时: 4学时 同组学生姓名: 实验地点: 1216 实验日期: .11.10-.11.24 实验成绩: 批改教师: 批改时间: 一、 实验目和规定设计并实现一种基于多层C/S构
16、造数据库应用,熟悉多层C/S体系构造及其基本解决流程,理解多层构造体现层、业务逻辑层(功能层)、数据访问层所完毕功能,掌握多层C/S构造数据库应用设计办法,对这三层进行明确分割,并在逻辑上使其独立。学生通过本实验训练可以纯熟掌握对小型数据库应用系统三层构造层次划分办法及系统实现技术。二、 实验仪器和设备奔腾以上计算机,Windows 10 、Visual Studio 、MySQL三、 实验过程分别采用二层C/S构造和多层C/S构造实现个人通讯录系统。该系统设计目的是可以轻松地管理个人联系人信息,涉及添加、修改和删除操作。联系人信息涉及姓名、住址、电话。整个系统功能图如下图所示:应用程序代码:
17、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 se
18、nder,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(); MySqlCo
19、mmand 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,Conver
20、t.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=nam
21、e,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 b
22、utton1_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.Enab
23、led = 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 Dbco
24、n(); 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);
25、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(); My
26、SqlConnection 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
27、.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()
28、String constr = server=localhost;User Id=root;password=root;Database=contact; MySqlConnection con = new MySqlConnection(constr); return con; 四、 实验成果与分析程序主界面:点击“添加联系人信息”:点击“拟定”:选中列表上某项内容,点击“修改联系人信息”:修改信息并点击“拟定”:五、思考题与二层C/S体系构造比较,三层(多层)体系构造有什么长处?采用三层体系构造在系统设计时应当注意哪些问题?答:三层体系构造长处:容许合理地划分三层构造功能,使之在逻辑上保持
29、相对独立性容许更灵活有效地选用相应平台和硬件系统三层C/S构造中,应用各层可以并行开发,各层也可以选取各自最适当开发语言。容许充分运用功能层有效地隔离层表达层与数据层。三层C/S构造各层间通信效率若不高,虽然分派给各层硬件能力很强,其作为整体来说也达不到所规定性能。在设计三层构造时,一方面要考虑问题在于数据层和业务层连接与否畅通,数据吞吐量与否过大。在顾客对于程序相应速度规定普通或者数据吞吐量较小状况下,可以采用三层构造进行设计六、实验心得与体会实验涉及到c#技术对于JDBC操作,遇到一定困难,但都完美解决了。收获了诸多经验和知识。同步我对多层c/s构造也有了更加深刻认知和理解,掌握了这种软件
30、体系构造想必十分有用。实验项目名称: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构造实现个人通讯录系统。该系统设计
31、目的是可以轻松地管理个人联系人信息,涉及添加、修改和删除操作。联系人信息涉及姓名、住址、电话。整个系统功能图如下图所示:2.三层B/S构造个人通讯录.项目构造截图public void AddFriend(ContactEntry friend) SqlConnection conn = new SqlConnection(); conn.ConnectionString = ConfigurationManager.AppSettingsConnectionString; SqlCommand cmd = new SqlCommand(); cmd.CommandText = Select
32、* 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 + ,; c