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