软件体系结构实验报告Word格式文档下载.docx
- 文档编号:18112175
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:18
- 大小:25.07KB
软件体系结构实验报告Word格式文档下载.docx
《软件体系结构实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《软件体系结构实验报告Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
(4)外文、符号、公式要准确,应使用统一规定的名词和符号。
(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。
实验报告批改说明
实验报告的批改要及时、认真、仔细,一律用红色笔批改。
实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。
实验报告装订要求
实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。
实验项目名称:
经典软件体系结构风格实验学时:
4学时
同组学生姓名:
实验地点:
1216
实验日期:
实验成绩:
批改教师:
批改时间:
一、实验目的和要求
(1)理解管道-过滤器软件体系结构、面向对象软件体系结构的原理
(2)掌握管道-过滤器软件体系结构、面向对象软件体系结构特点
(3)面向对象软件体系结构的编程实现
二、实验仪器和设备
奔腾以上计算机,Windows10、VisualStudio2013、MySQL
三、实验过程
(1)在dos下体会管道过滤器的体系结构。
使用dir|more命令了解管道-过滤器风格的程序。
(2)数据抽象和面向对象软件体系结构设计实现。
设计一个应用程序,在该程序定义平面图形的抽象类和其派生类圆、矩形、三角形,椭圆。
该程序的功能包括:
输入相应的图形参数,如矩形的长和宽,单击相应按钮,能根据输入参数创建图形类并输出该对象的面积。
使用c#、c++或Java或语言进行面向对象的程序设计:
(1)首先考虑数据封装性,
(2)考虑继承性,(3)考虑抽象类。
应用程序代码:
:
namespaceWindowsFormsApplication1
{
publicabstractclassGraphic
{
publicabstractdoubleArea();
}
}
publicclassRectangle:
Graphic
doublelen;
doublewid;
publicRectangle(doublelength,doublewidth)
len=length;
wid=width;
publicoverridedoubleArea()
returnlen*wid;
publicclassTriangle:
doublebtm;
doublehgt;
publicTriangle(doublebottom,doubleheight)
btm=bottom;
hgt=height;
returnbtm*hgt/2;
:
publicclassCircle:
Graphic
doubleradius;
publicCircle(doubler)
radius=r;
returnradius*radius*;
}
usingSystem;
using;
publicclassEllipse:
doublela;
doublelb;
publicEllipse(doublea,doubleb)
la=a;
lb=b;
returnla*lb*;
usingWindowsFormsApplication1
publicpartialclassForm1:
Form
publicForm1()
InitializeComponent();
privatevoidbutton1_Click(objectsender,EventArgse)
if=="
圆"
)
doubler=;
Circlecircle=newCircle(r);
=());
elseif=="
矩形"
doublelen=;
doublewid=;
Rectanglerec=newRectangle(len,wid);
三角形"
doublebtm=;
doublehgt=;
Triangletri=newTriangle(btm,hgt);
椭圆"
doublea=;
doubleb=;
Ellipseelp=newEllipse(a,b);
privatevoidcomboBox1_SelectedIndexChanged(objectsender,EventArgse)
="
半径"
;
=false;
长"
=true;
底"
半长轴"
半短轴"
四、实验结果与分析
程序初始界面:
如选择椭圆,输入半长轴和半短轴,点击计算,输出结果:
如选择三角形,输入底和高,点击计算,输出结果:
五、思考题
(1)管道-过滤器软件体系结构与批处理软件体系结构的区别和联系是什么?
答:
管道/过滤器结构通常导致进程成为批处理的结构,因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须将每一个过滤器看成一个完整的从输入到输出的转换。
.限定过滤器的数据存储容量,就可以得到有界管道/过滤器。
过滤器将所有输入数据作为单个实体进行处理,这就是批处理系统
(2)面向对象软件体系结构与主程序-子程序软件体系结构的区别和联系是什么?
主程序-子程序体系结构在设计上使用层次化的划分方法,通常采用自顶向下的功能化设计方法,面向对象体系结构在设计上使用面向对象的设计方法,可以隐藏对象的内部状态并且要求所有对象间的交互都通过该方法,即进行了数据封装,这也是面向对象编程的基本原则
六、实验心得与体会
在管道/过滤器风格的软件体系结构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。
这个过程通常通过对输入流的变换及增量计算来完成,所以在输入被完全消费之前,输出便产生了。
因此,这里的构件被称为过滤器,这种风格的连接件就象是数据流传输的管道,将一个过滤器的输出传到另一过滤器的输入。
通过实验,我对这种软件体系结构有了进一步了解。
多层C/S结构应用设计实验学时:
实验地点:
设计并实现一个基于多层C/S结构的数据库应用,熟悉多层C/S体系结构及其基本处理流程,了解多层结构表现层、业务逻辑层(功能层)、数据访问层所完成的功能,掌握多层C/S结构的数据库应用设计方法,对这三层进行明确分割,并在逻辑上使其独立。
学生通过本实验的训练能够熟练掌握对小型数据库应用系统三层结构层次划分方法及系统实现技术。
分别采用二层C/S结构和多层C/S结构实现个人通讯录系统。
该系统的设计目标是能够轻松地管理个人的联系人信息,包括添加、修改和删除操作。
联系人信息包括姓名、住址、电话。
整个系统的功能图如下图所示:
usingWindowsFormsApplication2
publicintaction=0;
ext)+1;
Dbconconnector=newDbcon();
MySqlConnectioncon=();
();
MySqlCommandcmd=newMySqlCommand("
insertintoperson(id,name,phoneno,location)values(@id,@name,@phoneno,@location)"
con);
"
@name"
;
@phoneno"
@location"
@id"
(id));
build();
privatevoidmodify()
foreach(ListViewItemitemin
MySqlCommandcmd=();
="
updatepersonsetname=@name,phoneno=@phoneno,location=@locationwhereid=@id"
if(action==0)
add();
elseif(action==1)
modify();
privatevoidbutton4_Click(objectsender,EventArgse)
=[1].Text;
=[2].Text;
=[3].Text;
action=1;
privatevoidForm1_Load(objectsender,EventArgse)
publicvoidbuild()
select*fromperson"
MySqlDataReaderdr=();
while())
ListViewItemitem=newListViewItem();
=(dr["
id"
]);
name"
]));
phoneno"
location"
privatevoidbutton5_Click(objectsender,EventArgse)
deletefrompersonwhereid="
+,con);
privatevoidbutton2_Click(objectsender,EventArgse)
privatevoidtextBox2_TextChanged(objectsender,EventArgse)
privatevoidlist1_SelectedIndexChanged(objectsender,EventArgse)
层B/S结构的个人通讯录
.项目结构截图
publicvoidAddFriend(ContactEntryfriend)
SqlConnectionconn=newSqlConnection();
=["
ConnectionString"
];
SqlCommandcmd=newSqlCommand();
Select*fromcontact"
=conn;
SqlDataReaderreader=();
int[]temp=newint[2];
temp[0]=0;
temp[1]=(0);
if(temp[0]<
temp[1])
temp[0]=temp[1];
intcID=temp[0]+1;
conn=newSqlConnection();
cmd=newSqlCommand();
insertintocontact(ID,cName,cAddress,cPhone,cEmail)"
+="
values("
+cID+"
'
"
+=+"
'
)"
调用Bean中的属性:
调用配置文件中的信息:
.“修改联系人信息”功能:
“修改”功能的代码:
publicvoidUpdateFriendByID(ContactEntryfriend)
updatecontactsetcName='
+;
cAddress='
cEmail='
cPhone='
++"
whereID="
“删除”联系人功能:
“删除”功能的代码:
publicvoidDeleteFriendByID(intid)
deletefromcontactwhereID="
+id;
.“搜索”联系人功能:
“搜索”功能的代码:
publicSqlDataReaderGetFriendKey(stringkey)
selectID,cName,cAddress,cPhone,cEmailfromcontact"
wherecNamelike'
%"
+key+"
%'
orcAddresslike'
orcPhonelike'
orcEmaillike'
SqlDataReaderreader=;
returnreader;
二层B/S结构个人通讯录
.二层B/S结构界面设计和逻辑代码未分离
protectedvoidButton1_Click(objectsender,EventArgse)
if
Insertintocontact(ID,cName,cAddress,cPhone,cEmail)"
cID++;
("
);
四、实验结果与分析
结果分析:
三层B/S结构实现了界面设计和逻辑代码的分离,更加规范化,使后期的修改代码和维护更加便利。
在制作的时候也遇到了一些麻烦,比如由于不小心输入sql代码字段没有添加空格,导致运行的时候没有报任何错误,却使得系统一直卡在那里,只好用任务管理器将他终结,才使得系统退出运行,后来用断点调试,发现运行到执行sql语句下一句的时候,给出的参数值有问题,于是才发现问题所在!
所以在编写程序的时候需要我们小心输入,有时候一个字符的写错,可能会引起很大的麻烦,还有就是要分步
四、思考题
与C/S体系结构比较,B/S体系结构有什么优点?
采用B/S与C/S混合体系结构在系统设计时应该注意哪些问题?
基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。
用户在使用系统时,仅需要一个浏览器就可以运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。
B/S体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开发性基础。
用B/S和C/S混合结构设计时应考虑B/S、C/S的具体使用环境。
比如B/S适用于外部远程访问,C/S适用于内部局域网访问,服务端也能对客户端加以识别,避免远程主机使用C/S的权限进行非法访问
本次实验最终使用java进行开发而不是C#的原因在于对于的不了解。
实验中设计并实现了一个基于B/S结构的数据库应用,熟悉了B/S体系结构及其基本处理流程,了解了B/S结构系统各部分所完成的功能,掌握了B/S结构的数据库应用设计方法。
通过本实验的训练熟练掌握了对小型数据库应用系统B/S结构设计及系统实现技术。
。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 体系结构 实验 报告