书城计算机网络综合应用软件设计
8724600000038

第38章 软件工程实例——构件库管理系统(2)

2.时序图

英文描述:AddComponentInformation。

中文描述:这是一个添加一个新的构件及其基本信息的时序图。

英文描述:QueryComponent。

中文描述:这是一个查询功能时序图。

英文描述:DownloadComponent。

中文描述:这是一个下载功能时序图。

英文描述:Class,Superclass,ClassbaseQuery。

中文描述:这是一个对构件中的类及其父类和基类的查询时序图。

英文描述:AddClassInformation。

中文描述:这是一个添加新类及其属性、方法、事件、基本信息的时序图。

英文描述:QueryClassInformation。

中文描述:这是一个查询类信息(包括它的属性、方法、事件、基本信息)的时序图。

3.类图

8.3.3网页结构图

提示:当登录以后,登录界面屏蔽,只出现管理员权限界面。

8.4项目实现

8.4.1主要技术攻关

技术1:TreeView

①建立三张视图。view_Function录入数据ComponentName,ComponentFuctionName,CompoentIntroduction;view_Version录入数据ComponentName,ComponentVersion,VersionID;view_Class录入数据ComponentName,ClassName,ComponentVersion。

②count=”selectCount(ComponentFunctionID)fromtb_ComponentFunction”语句计算第一层循环的跳出条件数,把表中读取的第一条记录赋给item.text,进入第二层循环,用count=”selectCount(ComponentName)fromview_FunctionwherecomponentFunctionName=’”+item.Text+”’”语句计算该层的跳出条件数,把表中读取的第一条记录赋给item1.text,进入第三层循环,用count=”selectCount(Componentversion)fromview_VersionwhereComponentName=’”+item1.Text+”’”语句计算第三层的跳出条件数,把表中读取的第一条记录赋给item2.text,进入第四层循环,用count=”selectCount(ClassName)fromview_ClasswhereVersionID=’”+versionID+”’”语句计算第四层的跳出条件数,把表中读取的第一条记录赋给item3.text。

③对每一个功能、构件、版本叶子节点的添加,应在其各自内循环跳出后,用item(n).nodes.add(item(n+1))语句添加节点。

④用item.text添加功能、构件、版本及类这些节点时,要加入item.NavigateUrl语句,指定该节点所连接的网页,并在另一个frame里显示。

技术2:构件查询

①在HTML语言里加入如下语句NavigateUrl=’<;%#”CategoryOfComponent.aspx?CategoryName=”+DataBinder.Eval(Container.DataItem,”CategoryName”).tostring%>;’Target=”qmain”>;这样就可以在HTML里传参数了。

②针对TextBox失去焦点问题。

方案一:在HTML语言中,在HYPERLINK控件的声明中编写一个ONCLICK事件。

方案二:将关键字查询放在下面那个FRAME中(即将关键字查询功能放在每一个出现在下面FRAME中的网页中),然后将HYPERLINK换成LINKBUTTON,因为LINKBUTTON有ONCLICK事件,但是没有TARGET这个属性,也就是不能用LINKBUTTON来指定调用的FRAME位置,它只能在其出现的FRAME中自身调用网页,所以只能将关键字查询功能放在下面的FRAME中。

8.4.2网页截图

8.4.3主要源代码

1.添加基本信息页面

说明:以下代码为添加作者信息的vb代码,产品类型(wfrmProType.aspx),操作系统(wfrmOS.aspx),构件功能(wfrmFun.aspx),构件类别(wfrmCate.aspx)和相关项目(wfrmProject.aspx)的页面代码与之相仿。

Imports System.Data

Imports System.Data.SqlClient

Public Class wfrmAuthor

Inherits System.Web.UI.Page

Protected WithEvents Label2 As System.Web.UI.WebControls.Label

Protected WithEvents lblMessage As System.Web.UI.WebControls.Label

Protected WithEvents Label1 As System.Web.UI.WebControls.Label

Protected WithEvents lblError As System.Web.UI.WebControls.Label

Protected WithEvents Label6 As System.Web.UI.WebControls.Label

Protected WithEvents btnAdd As System.Web.UI.WebControls.Button

Protected WithEvents btnEdit As System.Web.UI.WebControls.Button

Protected WithEvents btnSave As System.Web.UI.WebControls.Button

Protected WithEvents btnCancel As System.Web.UI.WebControls.Button

Protected WithEvents lblSave As System.Web.UI.WebControls.Label

Protected WithEvents lblAuthID As System.Web.UI.WebControls.Label

Protected WithEvents txtAuthName As System.Web.UI.WebControls.TextBox

Protected WithEvents txtAuthDes As System.Web.UI.WebControls.TextBox

Protected WithEvents Mydatagrid As System.Web.UI.WebControls.DataGrid

#Region”Web窗体设计器生成的代码”

’该调用是Web窗体设计器所必需的。

Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object,ByVal e As System.EventArgs)

Handles MyBase.Init

’CODEGEN:此方法调用是Web 窗体设计器所必需的

’不要使用代码编辑器修改它。

InitializeComponent()

End Sub

#End Region

Private startIndex As Integer

Private Sub MYbind()

Dim MyConnection As SqlConnection

Dim MyCommand As SqlDataAdapter

MyConnection=New SqlConnection(”server=(local);database=ComponentSystem;

Trusted_Connection=yes”)

MyCommand=New SqlDataAdapter(”select AuthorID,AuthorName from tb_Author”,My—Connection)

Dim ds As DataSet

ds=New DataSet()

MyCommand.Fill(ds,”tb_Author”)

Mydatagrid.DataSource=ds.Tables(”tb_Author”).DefaultView

Mydatagrid.DataBind()

End Sub

Private Sub save()

If(Page.IsValid)Then

Dim myConn As New SqlConnection(”server=(local);database=componentSystem;Trusted_Connection=yes”)

myConn.Open()

Dim StrSQL As String

StrSQL=”Select AuthorName From tb_Author Where AuthorName=’”+Trim(txtAuthName.

Text)+”’”

Dim myCommand As SqlCommand=New SqlCommand(StrSQL,myConn)

Dim reader As SqlDataReader

reader=myCommand.ExecuteReader()

If reader.Read()Then

lblError.Text=”*该作者已存在!”

reader.Close()

Exit Sub

Else

reader.Close()

StrSQL=”INSERT INTO tb_Author(AuthorID,AuthorName,AuthorInstruction)VALUES(’”+lblAuthID.Text+”’,’”+txtAuthName.Text+”’,’”+txtAuthDes.Text+”’)”

myCommand=New SqlCommand(StrSQL,myConn)

myCommand.ExecuteNonQuery()

lblError.Text=””

lblSave.Visible=True

lblSave.Text=”*注册成功!”

MYbind()

txtBox_init()

btnSave.CommandArgument=””

End If

myConn.Close()

End If

End Sub

Private Sub update()

If(Page.IsValid)Then

Dim myConn As New SqlConnection(”server=(local);database=componentSystem;Trusted_Connection=yes”)

myConn.Open()

Dim StrSQL As String

Dim myCommand As SqlCommand

StrSQL=”update tb_Author set AuthorInstruction=’”+txtAuthDes.Text_+”’where AuthorName=’”+lblAuthID.Text+”’”

myCommand=New SqlCommand(StrSQL,myConn)

myCommand.ExecuteNonQuery()

lblError.Text=””

lblSave.Visible=True

lblSave.Text=”*修改成功!”

txtBox_init()

btnSave.CommandArgument=””

myConn.Close()

MYbind()

End If

End Sub

Private Sub txtBox_init()

txtAuthName.ReadOnly=True

txtAuthDes.ReadOnly=True

btnSave.CommandArgument=”Add”

btnEdit.Enabled=False

btnAdd.Enabled=True

btnSave.Enabled=False

btnCancel.Enabled=False

lblMessage.Visible=True

lblError.Text=””

lblMessage.Text=”*单击添加、新增作者”

End Sub