軟件體系結(jié)構(gòu)實驗報告_第1頁
軟件體系結(jié)構(gòu)實驗報告_第2頁
軟件體系結(jié)構(gòu)實驗報告_第3頁
軟件體系結(jié)構(gòu)實驗報告_第4頁
軟件體系結(jié)構(gòu)實驗報告_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、.學(xué) 生 實 驗 報 告(理工類)課程名稱: 軟件體系結(jié)構(gòu) 專業(yè)班級:13軟件工程2班 學(xué)生學(xué)號: 1305104069 學(xué)生姓名: 管東升 所屬院部: 軟件工程學(xué)院 指導(dǎo)教師: 陳圣國 20 15 20 16 學(xué)年 第 1 學(xué)期 金陵科技學(xué)院教務(wù)處制實驗報告書寫要求實驗報告原則上要求學(xué)生手寫,要求書寫工整。若因課程特點需打印的,要遵照以下字體、字號、間距等的具體要求。紙張一律采用A4的紙張。實驗報告書寫說明實驗報告中一至四項內(nèi)容為必填項,包括實驗?zāi)康暮鸵?;實驗儀器和設(shè)備;實驗內(nèi)容與過程;實驗結(jié)果與分析。各院部可根據(jù)學(xué)科特點和實驗具體要求增加項目。填寫注意事項(1)細致觀察,及時、準確、如實

2、記錄。(2)準確說明,層次清晰。(3)盡量采用專用術(shù)語來說明事物。(4)外文、符號、公式要準確,應(yīng)使用統(tǒng)一規(guī)定的名詞和符號。(5)應(yīng)獨立完成實驗報告的書寫,嚴禁抄襲、復(fù)印,一經(jīng)發(fā)現(xiàn),以零分論處。實驗報告批改說明實驗報告的批改要及時、認真、仔細,一律用紅色筆批改。實驗報告的批改成績采用百分制,具體評分標準由各院部自行制定。實驗報告裝訂要求實驗批改完畢后,任課老師將每門課程的每個實驗項目的實驗報告以自然班為單位、按學(xué)號升序排列,裝訂成冊,并附上一份該門課程的實驗大綱。實驗項目名稱:經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 實驗學(xué)時: 4學(xué)時 同組學(xué)生姓名: 實驗地點: 1216 實驗日期: 2015.10.27-20

3、15.11.3 實驗成績: 批改教師: 批改時間: 一、 實驗?zāi)康暮鸵螅?)理解管道-過濾器軟件體系結(jié)構(gòu)、面向?qū)ο筌浖w系結(jié)構(gòu)的原理 (2)掌握管道-過濾器軟件體系結(jié)構(gòu)、面向?qū)ο筌浖w系結(jié)構(gòu)特點(3)面向?qū)ο筌浖w系結(jié)構(gòu)的編程實現(xiàn)二、 實驗儀器和設(shè)備奔騰以上計算機,Windows 10 、Visual Studio 2013、MySQL三、 實驗過程(1)在dos下體會管道過濾器的體系結(jié)構(gòu)。 使用 dir | more 命令了解管道-過濾器風(fēng)格的程序。(2)數(shù)據(jù)抽象和面向?qū)ο筌浖w系結(jié)構(gòu)設(shè)計實現(xiàn)。設(shè)計一個應(yīng)用程序,在該程序定義平面圖形的抽象類和其派生類圓、矩形、三角形,橢圓。該程序的功能包括

4、:輸入相應(yīng)的圖形參數(shù),如矩形的長和寬,單擊相應(yīng)按鈕,能根據(jù)輸入?yún)?shù)創(chuàng)建圖形類并輸出該對象的面積。使用c#、c+或Java或語言進行面向?qū)ο蟮某绦蛟O(shè)計:(1)首先考慮數(shù)據(jù)封裝性,(2)考慮繼承性,(3)考慮抽象類。應(yīng)用程序代碼:Graphic.cs:namespace WindowsFormsApplication1 public abstract class Graphic public abstract double Area(); Rectangle.cs:namespace WindowsFormsApplication1 public class Rectangle : Graphic

5、 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=bo

6、ttom; 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.Collection

7、s.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 Sys

8、tem.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.Sel

9、ectedItem = 圓) 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, w

10、id); 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 = 橢

11、圓) 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.Vi

12、sible = 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 = 底;

13、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; 四、 實驗結(jié)果與分析程序初始界面:如選擇橢圓,輸入半長軸

14、和半短軸,點擊計算,輸出結(jié)果:如選擇三角形,輸入底和高,點擊計算,輸出結(jié)果:五、 思考題(1) 管道-過濾器軟件體系結(jié)構(gòu)與批處理軟件體系結(jié)構(gòu)的區(qū)別和聯(lián)系是什么?答:管道/過濾器結(jié)構(gòu)通常導(dǎo)致進程成為批處理的結(jié)構(gòu),因為雖然過濾器可增量式地處理數(shù)據(jù),但它們是獨立的,所以設(shè)計者必須將每一個過濾器看成一個完整的從輸入到輸出的轉(zhuǎn)換。.限定過濾器的數(shù)據(jù)存儲容量,就可以得到有界管道/過濾器。過濾器將所有輸入數(shù)據(jù)作為單個實體進行處理,這就是批處理系統(tǒng)(2) 面向?qū)ο筌浖w系結(jié)構(gòu)與主程序-子程序軟件體系結(jié)構(gòu)的區(qū)別和聯(lián)系是什么?答:主程序-子程序體系結(jié)構(gòu)在設(shè)計上使用層次化的劃分方法,通常采用自頂向下的功能化設(shè)計方法

15、,面向?qū)ο篌w系結(jié)構(gòu)在設(shè)計上使用面向?qū)ο蟮脑O(shè)計方法,可以隱藏對象的內(nèi)部狀態(tài)并且要求所有對象間的交互都通過該方法,即進行了數(shù)據(jù)封裝,這也是面向?qū)ο缶幊痰幕驹瓌t六、實驗心得與體會在管道/過濾器風(fēng)格的軟件體系結(jié)構(gòu)中,每個構(gòu)件都有一組輸入和輸出,構(gòu)件讀輸入的數(shù)據(jù)流,經(jīng)過內(nèi)部處理,然后產(chǎn)生輸出數(shù)據(jù)流。這個過程通常通過對輸入流的變換及增量計算來完成,所以在輸入被完全消費之前,輸出便產(chǎn)生了。因此,這里的構(gòu)件被稱為過濾器,這種風(fēng)格的連接件就象是數(shù)據(jù)流傳輸?shù)墓艿?,將一個過濾器的輸出傳到另一過濾器的輸入。通過實驗,我對這種軟件體系結(jié)構(gòu)有了進一步了解。實驗項目名稱:多層C/S結(jié)構(gòu)應(yīng)用設(shè)計 實驗學(xué)時: 4學(xué)時 同組學(xué)

16、生姓名: 實驗地點: 1216 實驗日期: 2015.11.10-2015.11.24 實驗成績: 批改教師: 批改時間: 一、 實驗?zāi)康暮鸵笤O(shè)計并實現(xiàn)一個基于多層C/S結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用,熟悉多層C/S體系結(jié)構(gòu)及其基本處理流程,了解多層結(jié)構(gòu)表現(xiàn)層、業(yè)務(wù)邏輯層(功能層)、數(shù)據(jù)訪問層所完成的功能,掌握多層C/S結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用設(shè)計方法,對這三層進行明確分割,并在邏輯上使其獨立。學(xué)生通過本實驗的訓(xùn)練能夠熟練掌握對小型數(shù)據(jù)庫應(yīng)用系統(tǒng)三層結(jié)構(gòu)層次劃分方法及系統(tǒng)實現(xiàn)技術(shù)。二、 實驗儀器和設(shè)備奔騰以上計算機,Windows 10 、Visual Studio 2013、MySQL三、 實驗過程分別采用二層

17、C/S結(jié)構(gòu)和多層C/S結(jié)構(gòu)實現(xiàn)個人通訊錄系統(tǒng)。該系統(tǒng)的設(shè)計目標是能夠輕松地管理個人的聯(lián)系人信息,包括添加、修改和刪除操作。聯(lián)系人信息包括姓名、住址、電話。整個系統(tǒng)的功能圖如下圖所示:應(yīng)用程序代碼: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() InitializeCompon

18、ent(); 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

19、.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, p

20、honeno.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 = connect

21、or.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.

22、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; pri

23、vate 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 sende

24、r, 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() ListVi

25、ewItem 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_Cli

26、ck(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

27、_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_Cl

28、ick(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; 四、 實驗結(jié)果與分析程序主界面:點擊“添加聯(lián)系人信息”:點擊“確定”:選中列表

29、上的某項內(nèi)容,點擊“修改聯(lián)系人信息”:修改信息并點擊“確定”:五、思考題與二層C/S體系結(jié)構(gòu)比較,三層(多層)體系結(jié)構(gòu)有什么優(yōu)點?采用三層體系結(jié)構(gòu)在系統(tǒng)設(shè)計時應(yīng)該注意哪些問題?答:三層體系結(jié)構(gòu)的優(yōu)點:允許合理地劃分三層結(jié)構(gòu)的功能,使之在邏輯上保持相對獨立性允許更靈活有效地選用相應(yīng)的平臺和硬件系統(tǒng)三層C/S結(jié)構(gòu)中,應(yīng)用的各層可以并行開發(fā),各層也可以選擇各自最合適的開發(fā)語言。允許充分利用功能層有效地隔離層表示層與數(shù)據(jù)層。三層C/S結(jié)構(gòu)各層間的通信效率若不高,即使分配給各層的硬件能力很強,其作為整體來說也達不到所要求的性能。在設(shè)計三層結(jié)構(gòu)時,首先要考慮的問題在于數(shù)據(jù)層和業(yè)務(wù)層的連接是否暢通,數(shù)據(jù)的吞

30、吐量是否過大。在用戶對于程序相應(yīng)速度要求一般或者數(shù)據(jù)吞吐量較小的情況下,可以采用三層結(jié)構(gòu)進行設(shè)計六、實驗心得與體會實驗涉及到c#技術(shù)對于JDBC的操作,遇到一定困難,但都完美解決了。收獲了很多經(jīng)驗和知識。同時我對多層c/s結(jié)構(gòu)也有了更加深刻的認知和了解,掌握了這種軟件體系結(jié)構(gòu)想必十分有用。實驗項目名稱:B/S結(jié)構(gòu)應(yīng)用設(shè)計 實驗學(xué)時: 4學(xué)時 同組學(xué)生姓名: 實驗地點: 1216 實驗日期:2015.12.01-2015.12.15 實驗成績: 批改教師: 批改時間: 一、 實驗?zāi)康暮鸵笤O(shè)計并實現(xiàn)一個基于B/S結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用,熟悉B/S體系結(jié)構(gòu)及其基本處理流程,了解B/S結(jié)構(gòu)系統(tǒng)各部分所完成

31、的功能,掌握B/S結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用設(shè)計方法。學(xué)生通過本實驗的訓(xùn)練能夠熟練掌握對小型數(shù)據(jù)庫應(yīng)用系統(tǒng)B/S結(jié)構(gòu)設(shè)計及系統(tǒng)實現(xiàn)技術(shù)。二、 實驗儀器和設(shè)備奔騰以上計算機,Windows 10、MyEclipse2014、Sencha CMD、MySQL三、 實驗過程采用B/S結(jié)構(gòu)實現(xiàn)個人通訊錄系統(tǒng)。該系統(tǒng)的設(shè)計目標是能夠輕松地管理個人的聯(lián)系人信息,包括添加、修改和刪除操作。聯(lián)系人信息包括姓名、住址、電話。整個系統(tǒng)的功能圖如下圖所示:2.三層B/S結(jié)構(gòu)的個人通訊錄.項目結(jié)構(gòu)截圖public void AddFriend(ContactEntry friend) SqlConnection conn =

32、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.Re

33、ad() 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,cP

34、hone,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(); 調(diào)用Bean中的屬性:調(diào)用配置文件中的信息

35、:.“修改聯(lián)系人信息”功能:“修改”功能的代碼: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.CommandTex

36、t += , 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(); “刪除”聯(lián)系人功能:“刪除”功能的代碼:public void DeleteFriendByID(i

37、nt 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(); .“搜索”聯(lián)系人功能:“搜索

38、”功能的代碼: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

39、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結(jié)構(gòu)個人通訊錄.二層B/S結(jié)構(gòu)界面設(shè)計和邏輯代碼未分離pro

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論