学生实验报告
(理工类)
课程名称: 软件体系结构 专业班级:13软件工程2班
学生学号: 1305104069 学生姓名: 管东升
所属院部: 软件工程学院 指导教师: 陈圣国
20 15 —— 20 16 学年 第_J—学期
金陵科技学院教务处制 实验报告书写要求 实验报告原则上要求学生手写, 要求书写工整。
若因课程特点需 打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用 A4 的纸张。
实验报告书写说明 实验报告中一至四项内容为必填项, 包括实验目的和要求; 实验 仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科 特点和实验具体要求增加项目。
填写注意事项
(1)细致观察,及时、准确、如实记录。
(2)准确说明,层次清晰。
(3)尽量采用专用术语来说明事物。
(4)外文、符号、公式要准确,应使用统一规定的名词和符号。
(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现, 以零分论处 。
实验报告批改说明 实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验 报告的批改成绩采用百分制,具体评分标准由各院部自行制定。
实验报告装订要求
实验批改完毕后, 任课老师将每门课程的每个实验项目的实验报 告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课 程的实验大纲。
实验项目名称:经典软件体系结构风格 实验学时:
同组学生姓名: 实验地点:
实验日期:2015.10.27-2015.11.3 实验成绩:
4学时1216
4学时
1216
一、 实验目的和要求
(1 )理解管道-过滤器软件体系结构、面向对象软件体系结构的原理
(2 )掌握管道-过滤器软件体系结构、面向对象软件体系结构特点
(3)面向对象软件体系结构的编程实现
二、 实验仪器和设备
奔腾以上计算机, Windows 10、Visual Studio 2013 、MySQL
三、 实验过程
(1 )在dos下体会管道过滤器的体系结构。
使用dir | more 命令了解管道-过滤器风格的程序。
(2)数据抽象和面向对象软件体系结构设计实现。 设计一个应用程序,在该程序定
义平面图形的抽象类和其派生类圆、矩形、三角形,椭圆。该程序的功能包括:输 入相应的图形参数,如矩形的长和宽,单击相应按钮,能根据输入参数创建图形类 并输出该对象的面积。使用 c#、C++或Java或语言进行面向对象的程序设计: (1)
首先考虑数据封装性,(2)考虑继承性,(3)考虑抽象类。
应用程序代码:
Graphic.cs:
n amespace Win dowsFormsApplicati on1
{
public abstract class Graphic |
{
public abstract double Area();
}
}
Recta ngle.cs:
n amespace Win dowsFormsApplicati on1
{
public class Recta ngle : Graphic
{
double len;
double wid;
public Recta ngle(double len gth,double width) {
len = len gth;
wid = width;
}
public override double Area()
{
return len * wid;
}
}
}
Trian gle.cs:
n amespace Win dowsFormsApplicati on1
{
public class Tria ngle : Graphic
{
double btm;
double hgt;
public Tria ngle(double bottom, double height) {
btm=bottom;
hgt=height;
}
public override double Area()
{
return btm * hgt/2;
}
}
}
Circle.cs:
n amespace Win dowsFormsApplicatio n1
{
public class Circle:Graphic
{
double radius;
public Circle(double r)
{
radius = r;
}
public override double Area()
{
retur n radius * radius * 3.14;
}
Ellipse.es:
using System;
using System.Collections.Generie;
using System.L inq; |
using System.Text;
n amespace Win dowsFormsApplicati on1 {
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.Comp onen tModel;
using System.Data;
using System.Draw ing;
using System.L inq; |
using System.Text; |
using System.Wi ndows.Forms;
n amespace Win dowsFormsApplicati on1
{
public partial class Form1 : Form
{
public Form1()
{
In itializeComp onen t();
}
private void butt on 1_Click(object sen der, Eve ntArgs e)
{
if (comboBox1.Selectedltem ==" 圆")
{
double r=Co nvert.ToDouble(textBox1.Text);
Circle circle=new Circle(r); textBox4.Text = Con vert.ToStr in g(circle.Area());
}
else if (comboBox1.Selectedltem =="
{
double len = Con vert.ToDouble(textBox1.Text); double wid = Con vert.ToDouble(textBox2.Text); Recta ngle rec = new Recta ngle(le n, wid); textBox4.Text = Con vert.ToStri ng(rec.Area());
}
else if (comboBox1.Selectedltem =="
{
double btm = Con vert.ToDouble(textBox1.Text); double hgt = Con vert.ToDouble(textBox3.Text); Triangle tri = new Triangle(btm, hgt);
textBox4.Text = Con vert.ToStri ng(tri.Area());
}
else if (comboBox1.Selectedltem =="
{
double a = Con vert.ToDouble(textBox1.Text);
double b = Co nvert.ToDouble(textBox2.Text); Ellipse elp = new Ellipse(a, b);
textBox4.Text = Co nvert.ToStri ng(elp.Area());
}
矩形")
三角形")
椭圆")
private void comboBox1_Selectedl ndexCha nged(object sen der. Eve ntArgs e) |
{
if (comboBox1.SelectedItem ==" 圆")
{
label1.Text =" 半径";
label2.Visible = false;
label3.Visible = false;
textBox2.Visible = false;
textBox3.Visible = false;
}
else if (comboBox1.Selectedltem ==" 矩形")
{
label1.Text =" 长";
label2.Visible = true;
textBox2.Visible = true;
label3.Visible = false;
textBox3.Visible = false;
}
else if (comboBox1.Selectedltem ==" 三角形")
{
label1.Text =" 底";
label3.Visible = true;
textBox3.Visible = true;
label2.Visible = false;
textBox2.Visible = false;
}
else if (comboBox1.Selectedltem ==" 椭圆")
{
label1.Text ="
label2.Text =" label2.Visible = true;
半长轴";
半短轴";
textBox2.Visible = true;
label3.Visible = false;
textBox3.Visible = false;
}
}
}
四、实验结果与分析
程序初始界面:
£ Fornnl — □ X
如选择椭圆,输入半长轴和半短轴,点击计算,输出结果:
呻 ForFYil — □ X
面积
「计篇]
如选择三角形,输入底和高,点击计算,输出结果:
qJ Forirl三角黔
qJ Forirl
三角黔
面识
ns
五、 思考题
(1) 管道-过滤器软件体系结构与批处理软件体系结构的区别和联系是什么?
答:管道/过滤器结构通常导致进程成为批处理的结构,因为虽然过滤器可增量 式地处理数据,但它们是独立的,所以设计者必须将每一个过滤器看成一个完整 的从输入到输出的转换。?限定过滤器的数据存储容量,就可以得到有界管道 /
过滤器。过滤器将所有输入数据作为单个实体进行处理,这就是批处理系统
(2) 面向对象软件体系结构与主程序 -子程序软件体系结构的区别和联系是什么?
答:主程序-子程序体系结构在设计上使用层次化的划分方法, 通常采用自顶向
下的功能化设计方法,面向对象体系结构在设计上使用面向对象的设计方法, 可以隐藏对象的内部状态并且要求所有对象间的交互都通过该方法,即进行了 数据封装,这也是面向对象编程的基本原则
六、 实验心得与体会
在管道/过滤器风格的软件体系结构中,每个构件都有一组输入和输出,构 件读输入的数据流,经过内部处理, 然后产生输出数据流。这个过程通常通过对 输入流的变换及增量计算来完成,所以在输入被完全消费之前,输出便产生了。
因此,这里的构件被称为过滤器,这种风格的连接件就象是数据流传输的管道, 将一个过滤器的输出传到另一过滤器的输入。通过实验,我对这种软件体系结构 有了进一步了解。
实验项目名称:多层 C/S结构应用设计 实验学时: 同组学生姓名: 一-一_ 一一- 实验地点:
实验日期: 2015.11.10-2015.11.24 实验成绩:
4学时1216
4学时
1216
实验目的和要求
设计并实现一个基于多层 C/S结构的数据库应用, 熟悉多层C/S体系结构及其基本 处理流程,了解多层结构表现层、业务逻辑层(功能层)、数据访问层所完成的功能, 掌握多层C/S结构的数据库应用设计方法,对这三层进行明确分割,并在逻辑上使 其独立。学生通过本实验的训练能够熟练掌握对小型数据库应用系统三层结构层次 划分方法及系统实现技术。
实验仪器和设备
奔腾以上计算机, Windows 10、Visual Studio 2013 、MySQL
三、实验过程
分别采用二层C/S结构和多层C/S结构实现个人通讯录系统。
该系统的设计目标是能够
轻松地管理个人的联系人信息,包括添加、修改和删除操作。联系人信息包括姓名、住
址、电话。整个系统的功能图如下图所示:
应用程序代码:
using System;
using System.Wi ndows.Forms; using MySql.Data.MySqlClient;
n amespace Win dowsFormsApplicati on2
{
添加;1:修改
添加;1:修改
public int acti on = 0;//0:
public Form1()
{
In itializeComp onen t();
} private void groupBox3_E nter(object sen der, Eve ntArgs e)
{
}
private void butt on 3_Click(object sen der, Eve ntArgs e)
{
frm1.E nabled = true;
frm2.E nabled = false;
acti on = 0;
}
private void add()
{
long id=0;
int cou nt=list1.ltems.Cou nt;
if (cou nt == 0)
{
id = 1001;
}
else
{
id = Ion g.Parse(list1.ltems[cou nt - 1].Text)+1;
}
Dbcon conn ector = new Dbcon();
MySqlC onn ecti on con = conn ector.dbc on();
con. Ope n();
MySqlComma nd cmd = new MySqlComma nd("i nsert into pers on
(id ,n ame,ph onen o,locati on) values(@id, @n ame,@pho neno, @locati on)", con);
cmd.Parameters.AddWithValue(" @n ame", n ame.Text); cmd.Parameters.AddWithValue("@ph onen o", phoneno .Text); cmd.Parameters.AddWithValue("@locatio n", locatio n. Text); cmd.Parameters.AddWithValue("@id", Con vert.ToStri ng(id)); cmd.ExecuteN on Query();
private void butt on
private void butt on PAGE #_Click(object sen der, Eve ntArgs e)
{
con .Close();
build();
}
private void modify()
{
foreach (ListViewltem item in listl.Selectedltems)
{
Dbcon conn ector = new Dbcon();
MySqlC onn ecti on con = conn ector.dbc on();
con. Ope n();
MySqlComma nd cmd = con .CreateComma nd();
cmd.Comma ndText="update pers on set
n ame=@n ame,pho neno=@ph onen o,locati on=@ locati on where id=@id"; cmd.Parameters.AddWithValue(" @n ame", n ame.Text); cmd.Parameters.AddWithValue("@pho nen o", phoneno .Text); cmd.Parameters.AddWithValue("@locatio n", locatio n.Text); cmd.Parameters.AddWithValue("@id", item.Text);
cmd.ExecuteN on Query();
con .Close();
}
build();
}
private void butt on 1_Click(object sen der, Eve ntArgs e)
{
if (acti on == 0)
{
add();
}
else if (acti on == 1)
{
modify();
}
n ame.Clear(); phoneno .Clear(); locati on .Clear(); frm2.E nabled = true; frm1.E nabled = false;
}
foreach (ListViewltem item in listl.Selectedltems)
foreach (ListViewltem item in listl.Selectedltems)
{
private void butt on
private void butt on PAGE #_Click(object sen der, Eve ntArgs e)
{
frm1.E nabled = true;
frm2.E nabled = false;
n ame.Text = item.Subltems[1].Text;
pho neno .Text = item.Subltems[2].Text;
locati on. Text = item.Subltems[3].Text;
acti on = 1;
}
}
private void Form1_Load(object sen der, Eve ntArgs e)
{
build();
}
public void build() |
{
list1.Begi nUpdate();
list1.Items.Clear();
Dbcon conn ector = new Dbcon();
MySqlC onn ecti on con = conn ector.dbc on();
con. Ope n();
con);MySqlCommand cmd = new MySqlCommand("select * from person",
con);
MySqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
ListViewltem item = new ListViewItem();
item.Text = Co nvert.ToStri ng(dr["id"]);
item.SubItems.Add(Co nvert.ToStri ng(dr[" name"]));
item.SubItems.Add(Co nvert.ToStri ng(dr["pho nen o"]));
item.SubItems.Add(Co nvert.ToStri ng(dr["locatio n"]));
list1.Items.Add(item);
}
dr.Close();
con .Close();
list1.E ndUpdate();
}
foreach (ListViewltem item in listl.Selectedltems)
foreach (ListViewltem item in listl.Selectedltems)
{
Dbcon conn ector = new Dbcon();
MySqlC onn ecti on con = conn ector.dbc on();
con. Ope n();
whereMySqlCommand cmd = new MySqlCommand("delete from person
where
id="+item.Text, con);
cmd.ExecuteN on Query();
}
build();
}
private void butt on 2_Click(object sen der, Eve ntArgs e)
{
frm2.E nabled = true;
frm1.E nabled = false;
n ame.Clear();
phoneno .Clear();
locati on .Clear();
}
private void textBox2_TextCha nged(object sen der, Even tArgs e)
{
}
private void list1_SelectedI ndexCha nged(object sen der, Eve ntArgs e)
{
〃MessageBox.Show();
}
private void butt on 6_Click(object sen der, Eve ntArgs e)
{
MessageBox.Show("developed by altair");
}
}
public class Dbcon
{
public MySqlC onn ecti on dbc on()
二{
| Stri ng con str = "server=localhost;User
ld=root;password=root;Database=c on tact";
MySqlC onn ecti on con = new MySqlC onn ecti on(con str); | return con;
—}
}
}
四、实验结果与分析
程序主界面:
昭个人通讯录 ? □ X
联系人列舉:
漏号 姓名 电话 联系地址
U0001
aaa.a
11H
?Q1Q
WQ02
bbbb
10003
3333
eeee
10004
ddld
4444
rrrr
信意、窗口 :
电话;
电话;
点击“添加联系人信息”
呼个A通讯泉 一 □ X
联系人列表’
姓善:eee e
姓善:
eee e
确是
电话:
5555
取消
地址:tttt
漏号
娃名
电话
联系地址
10001
H11
10002
bbVh
WWWf
10003
CCCC
3333
10004
dddd
4444
rrrr
揍作面板:
点击“确定”:
选中列表上的某项内容,点击“修改联系人信息”
骗舄10COL10C0E
骗舄
10COL
10C0E
10003
10004
1U005
姓名
超舌
联系地址
aLaaa
1111
qqqq
mt
亞EE
WWW
FC PC
3333
啣fif
ldj.d
4444
rrrr
5655
tttt
損作面根;
刪除选中联韦人信蛊土于持件
刪除选中联韦人信蛊
土于持件
修改信息并点击“确定”:
喘个人通讯录 一 口 X
联条人列去;
电话
Et玉地址
=ilmjoi
liii
qgq I
iiMJoa
bbbb
2222
locoa
3333
ce ee
LOUCH.
dddd
4444
i-jri-r
10C06
e ?cc
国&吕日
tttt
佶忠囱口上 操作百板^
阳个人通汛录漏号10001 1000E1000310004姓名勿宜宜宜bhbb
阳个人通汛录
漏号
10001 1000E
10003
10004
姓名
勿宜宜宜
bhbb
CTQ 50
ldd.d
电话
1111
2222
3333
4444
联系地址
qqqq
■wwvvr
rrrr
1D0D65E 1
5555
tttt
信忌誉口 t
損件面糧:
地址
姓茗:
电话:
億改选中联备人信息
刪眸遗中联系人信蛊
关于不软件
五、 思考题
与二层C/S体系结构比较,三层(多层)体系结构有什么优点?采用三层体系结构在系 统设计时应该注意哪些问题?
答:三层体系结构的优点:
①允许合理地划分三层结构的功能, 使之在逻辑上保持相对独立性 ②允许更灵活有效地选
用相应的平台和硬件系统
三层C/S结构中,应用的各层可以并行开发, 各层也可以选择各自最合适的开发语言。
允许充分利用功能层有效地隔离层表示层与数据层。
三层C/S结构各层间的通信效率若不高, 即使分配给各层的硬件能力很强, 其作为整体来
说也达不到所要求的性能。
在设计三层结构时,首先要考虑的问题在于数据层和业务层的连接是否畅通, 数据的吞
吐量是否过大。在用户对于程序相应速度要求一般或者数据吞吐量较小的情况下, 可以采用
三层结构进行设计
六、 实验心得与体会
实验涉及到c#技术对于JDBC的操作,遇到一定困难,但都完美解决了。收获了很多经验和 知识。同时我对多层c/s结构也有了更加深刻的认知和了解, 掌握了这种软件体系结构想必
十分有用。
实验项目名称:B/S结构应用设计 实验学时: 同组学生姓名:- 一 实验地点:
实验日期:2015.12.01-2015.12.15 实验成绩:
4学时1216
4学时
1216
一、 实验目的和要求
设计并实现一个基于 B/S结构的数据库应用,熟悉B/S体系结构及其基本处理流程, 了解B/S结构系统各部分所完成的功能,掌握 B/S结构的数据库应用设计方法。学
生通过本实验的训练能够熟练掌握对小型数据库应用系统 B/S结构设计及系统实现
技术。
二、 实验仪器和设备
奔腾以上计算机, Windows 10、MyEclipse2014、Sencha CMD MySQL
三、 实验过程
采用B/S结构实现个人通讯录系统。该系统的设计目标是能够轻松地管理个人的联
系人信息,包括添加、修改和删除操作。联系人信息包括姓名、住址、电话。整个
系统的功能图如下图所示:
2.三层B/S结构的个人通讯录
.项目结构截图
G ^^'ContactV2'门乍项目)
■ 51 ContartVZ
P A Properties
t> ■-■引用
b images
i> Add.a^px
V 竄1 Default a
4 *3 Delete,
" 竄1 Modify, asps
b 甘 Web.conFg
DataAcce ss
t> A Properties
b 引用
> c** ContactDBxs
l* 工** Cents ctE rrtry.c?
| 搏宰 屁示*St : | 未帀訂匿奪人
ATS
修改
1
唐嘲
1321801^26
534^7205^4;. ccn
別浄
2
盐城
1340T51S311
12S !:-63 心 口口
修jjl
ate
7
老童1 2S96325魂qq= t un
ate
6
老朋友
南京
93T554331
154S3504Q, con
赃
a
舍朋友
152)8016026
3Z1154236SQQ. can
刖除
9
怖好
130c25S^7B8
12E9 腐茲列 qq; can
public void AddFriend( ContactEntry friend)
{
SqlConnection conn = new SqlConnection (); conn.Conn ecti on Stri ng =
Con figurati onMan ager .AppSett in gs[ "Conn ecti on Stri ng" ];
SqlCommanotmd = new SqlCommanQ; cmd.Comma ndText = "Select * from con tact "
cmd.C onn ecti on = conn;
conn. Ope n();
SqlDataReader reader = cmd.ExecuteReader();
int [] temp = new int [2]; temp[0] = 0;
while (reader.Read())
{
temp[1] = reader.Getl nt32(0);
if (temp[0] < temp[1]) {
temp[0] = temp[1];
}
}
int cID = temp[0] + 1;
reader.Close(); conn. Close();
conn = new SqlConnection ();
conn.Conn ecti on Stri ng =
Con figurati onMan ager .AppSett in gs[ "Conn ecti on Stri ng" ]; |
cmd = new SqlCommanQ;
cmd.Comma ndText = "insert into con tact(ID,cName,cAddress,cPho ne,cEmail)"
cmd.CommandText += "values(" + cID + ",'";
cmd.Comma ndText += frie nd.CName + "','" ;[
cmd.Comma ndText += frie nd.CAddress + "','" ;
cmd.Comma ndText += frie nd.CPh one + "','" ;
cmd.Comma ndText += frie nd.CEmail + "')" J
cmd.C onn ecti on = conn;
conn. Ope n(); cmd.ExecuteN on Query(); conn. Close();
} I
调用Bean中的属性:
public void ^ddFriend out act E:it ry friend)
CciiMnandTeKt -+= end. CpuunandT&Kt ■+= cwid+ CoumandText ■+
CciiMnandTeKt -+= end. CpuunandT&Kt ■+= cwid+ CoumandText ■+= cmd* Commandlext 七
friend. CFhone^ 心 J " f ■呂nd| Clmail 十"’:
调用配置文件中的信息:
conn. ConnectionString = 3L:if igir 、:r* AppSettings ["ConnectionString"];
:.^con£igu.ra±ioni-
<add. ie^^ConnectionSt rin呂" valu8=irrSBrver= (local) ;U£er ID= sa: Passwr d= 1234; dat abase=cont act w/>
K/applet tings/
<E/st en( vet)>
Ccojupilatioa debugs^t rue-7 targetFraniewrk=-v4? 5" />
<ht t ijke t argetFrameuork=,v4. 5* />
</ syst e^i_ web>
</confi £uratian>
.“修改联系人信息”功能:
“修改”功能的代码:
public vo d UpdateFriendBylD( ContactEntry friend)
SqlConnection conn = new SqlConnection (); conn.Conn ecti on Stri ng =
Con figurati onMan ager .AppSett in gs[ "Conn ecti on Stri ng" ];
SqlComma ndtmd = cmd.Comma ndText = cmd.Comma ndText += cmd.Comma ndText += cmd.Comma ndText += cmd.Comma ndText += cmd.C onn ecti on = conn;new SqlCommanQ;"update con tact set cName ='""',cAddress = "',cEmail ='" "',cPho ne ='" "where ID ="+
SqlComma ndtmd = cmd.Comma ndText = cmd.Comma ndText += cmd.Comma ndText += cmd.Comma ndText += cmd.Comma ndText += cmd.C onn ecti on = conn;
new SqlCommanQ;
"update con tact set cName ='"
"',cAddress = "',cEmail ='" "',cPho ne ='" "where ID ="
+ frie nd.CName;
+ frie nd.CAddress;
+ frie nd.CEmail;
+ frie nd.CPho ne +
+ frie nd.lD;
conn. Ope n(); cmd.ExecuteN on Query();
conn. Close();
}
“删除”联系人功能:
“删除”功能的代码:
public void DeleteFriendBylD( int id)
{
SqlConnection conn = new SqlConnection (); conn.Conn ecti on Stri ng =
Con figurati onMan ager .AppSett in gs[ "Conn ecti on Stri ng" ];
SqlCommandtmd = new SqlCommanQ; cmd.Comma ndText = "delete from con tact where ID = " + id;
cmd.C onn ecti on = conn;
conn. Ope n();
cmd.ExecuteN on Query();
conn. Close();
}
.“搜索”联系人功能:
“搜索”功能的代码:
public SqlDataReader GetFriendKey( string key)
new SqlConnection ();I
new SqlConnection ();
I
"Co nn ectio nStri ng"];
Con figurati onMan ager .AppSett ings[
SqlComma ndfcmd = cmd.Comma ndText = cmd.Comma ndText += cmd.Comma ndText += cmd.Comma ndText += cmd.Comma ndText += cmd.C onn ecti on = conn;new SqlCommanQ;
SqlComma ndfcmd = cmd.Comma ndText = cmd.Comma ndText += cmd.Comma ndText += cmd.Comma ndText += cmd.Comma ndText += cmd.C onn ecti on = conn;
"select ID,cName,cAddress,cPho ne,cEmail from con tact" "where cName like '%" + key + "%'";
"or cAddress like '%" + key + "%'";
"or cPhone like '%" + key + "%'";
"or cEmail like '%" + key + "%'";
conn. Ope n();
SqlDataReader reader = cmd.ExecuteReader( Comma ndBehaviorCloseC onn ecti on);
retur n reader;
二层B/S结构个人通讯录
Q解决方粟6恥册?(2个项目) d 帚]ContactV2
D A Properties
P?■弓1用
丄霸 CantadiVl
> A Properties
b images
卜■■■引舟
b 拙 Add.aspx
P bin
b Du怙山鮎pc
> Css
D 抑 Deleter
P ■ innages
b 範 Mfldify.^spx
> ri obj
b 匸 W^b.config
丄国| D訳aAcG*?
t> &3 Default.aspx
P A PropertiM
D 羽 Del&te.aspw
D ■■引用
A 41 modify.aspx
P c* ContdrtDB.cs
B Web. config
b t** ContartEntry.tt
.二层B/S结构界面设计和逻辑代码未分离
SqlCommandbmd = new SqlComman();cmd.Comma ndText cmd.Comma ndText + cmd.Comma ndText +
SqlCommandbmd = new SqlComman();
cmd.Comma ndText cmd.Comma ndText + cmd.Comma ndText + cmd.Comma ndText + cmd.Comma ndText + cmd.Comma ndText + clD++;
cmd.C onn ecti on = coi
="In sert into
"values(“ TextBox1.Text + TextBox2.Text + TextBox3.Text + TextBox4.Text +
con tact(ID,cName,cAddress,cPho ne,cEmail)" + cID + ",'";
III III .
protected {
void Butt on 1_Click( object sen der, Eve ntArgs e)
{
{
if (Page.IsValid)
SqlConnection conn = new SqlConnection ();
conn.Conn ecti on Stri ng =
Con figurati onMan ager .AppSett in gs[ "Conn ecti on Stri ng" ];
conn. Ope n(); cmd.ExecuteN on Query();
conn. Close();Resp on se.Redirect(
conn. Close();
Resp on se.Redirect(
"Default.aspx");
四、实验结果与分析
结果分析:
三层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#的原因在于对于ASP.NET的不了解。实
验中设计并实现了一个基于 B/S结构的数据库应用,熟悉了 B/S体系结构及其基本
处理流程,了解了 B/S结构系统各部分所完成的功能,掌握了 B/S结构的数据库应 用设计方法。通过本实验的训练熟练掌握了对小型数据库应用系统 B/S结构设计及
系统实现技术。
推荐访问:实验报告 体系结构 实验 报告 软件体系结构实验报告40085