亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

組件對象開發Web應用的實例分析

2019-11-18 22:44:03
字體:
來源:轉載
供稿:網友
(轉載計算機世界)
夏長虹 童亮 陳文博
一. 應用實例的分析與開發

---- 我們以學籍管理系統為背景,基于Windows DNA的思想,開發了一套應用系統。在該系統中,有關教務學籍的事務邏輯都是由定制COM組件來處理的,動態Web頁面通過asp腳本調用這些組件。系統在開發速度和軟件質量等方面都優于不用COM組件而僅用ASP腳本的方案。為說明問題,我們通過一個定制組件和ASP腳本的主要代碼簡單介紹局部功能的實現過程。

---- 在displayscore.asp頁面中接受、辨別用戶的查詢請求,做出不同的查詢處理。當客戶的身份為教師或教務時,可以查詢所有學生的成績;當客戶的身份為學生時,只能查詢該生本人的成績。

---- 定制COM組件Score.dll進行查詢處理。首先設計該組件的接口,為組件設置四個屬性: Subj(課程)、Term(課程所屬學期)、Class(查詢的班級)和Stu_No(查詢學生的學號);定義兩個方法:RequeryScores和RequeryAllScores,分別對教師、教務部門和學生的請求做出相應的處理,并將查詢結果集返回給用戶。

---- 以下是實現該組件Score.dll的部分關鍵代碼。從中我們可以看到組件的接口是如何實現的:

Option Explicit
PRivate m_StuNo As Variant
Private m_Subj As String
Private m_Term As String
Private m_Class As String
  ' 設置屬性為可寫入的
Public Property Let StuNo(ByVal vNewValue As Variant)
m_StuNo = vNewValue
End Property
Public Property Let Subj(ByVal vNewValue As Variant)
m_Subj = vNewValue
End Property
......            
' 學生查詢成績請求處理
Public Function RequeryScores() As Object
Dim objContext As MTxAS.ObjectContext
Set objContext = GetObjectContext()
             ' 建立事務性組件
Dim ObjConn As ADODB.Connection
            ' 利用ADO訪問數據庫
Dim ObjRecordset As ADODB.Recordset
Set ObjConn = New ADODB.Connection
ObjConn.Open "xia", "sa", ""
Set ObjRecordset = New ADODB.Recordset
Dim query As String
' 根據查詢要求(查詢所有課程、查詢特定學期的所有課程、
  查詢指定課程、查詢特定學期的某一課程)進行不同的查詢操作
If (m_Subj = "all" And m_Term <> "all") Then
  query="select   Client_Name,Client.Client_No,Courses.subject,
         stu_score.score,stu_score.term,sub_type"
  query = query & " from client,stu_score,courses"
  query=query&"where client.client_no=stu_score.client_no
  and stu_score.subject=courses.subject
  and courses.term=stu_score.term
  and courses.term='" & m_Term & "'
  and Client.Client_no='" & m_StuNo & "'"
End If
......
ObjRecordset.Open query, ObjConn
         ' 進行數據庫查詢
ObjContext.SetComplte
             ' 若事務成功完成,則提交該事務
RequeryScoresExit:
Set RequeryScores = ObjRecordset
          ' 返回查詢結果集
Exit Function
RequeryScoresErr:
Set RequeryScores=Nothing
           ' 事務失敗處理
End Function
' 教師、教務查詢成績請求處理
Public Function RequeryAllScores() As Object
......
End Function
---- 在ASP頁面displayscore.asp中引用組件,ASP代碼如下(其中加粗的部分便是對該組件的調用):
< %@ LANGUAGE="VBSCRipT" % >
< HTML >
< HEAD >
< META NAME="GENERATOR" Content="Microsoft
Visual InterDev 1.0" >
< META HTTP-EQUIV="Content-Type"
content="text/html; charset=gb_2312-80" >
< TITLE >Show To Teacher< /TITLE >
< /HEAD >
< BODY background="images/bk.GIF" >
< %
  dim objResult
  set objResult=Server.CreateObject("Display.Score")
  dim Term,Subject
  Term=Cstr(Request.Form("Term"))
  Subject=Cstr(Request.Form("Subject"))
  objResult.term=Request.Form("term")
  objResult.Subj=RequestForm("Subject")
  objresult.class=Request.Form("Class")
  dim Scores
  set Scores=objResult.RequeryAllScores
  % >
' 以下代碼為顯示處理的結果
< div align="center" >< center >
......
< table border="0" cellpadding="0"
cellspacing="1" width="100" >< tr >
< %For I = 0 To Scores.Fields.Count - 1% >
< td bgcolor="#004080" >
< strong >< font color="#FFFFFF" > < small >&nbsp;&nbsp;
< %=scores(I).Name% >< /font > < /strong >&nbsp;< /td >
< %NEXT
  Do While (Not Scores.EOF)% >
   < /tr >< tr >
     < % For I = 0 To Scores.Fields.Count - 1% >
        < td bgcolor="#ACE8F9" >< p align="center" >
        &nbsp;&nbsp;< %= Scores(I).Value% >< /td >
        < %Next
        Scores.MoveNext% >< /tr >
  < %Loop% >
< %Scores.close
       ' 關閉數據庫連接
set Scores=Nothing
set objResult=Nothing % >
      ' 釋放對象
< /table >< /center >< /div >
< /BODY >
< /HTML >
---- 可以想象,如果僅使用ASP腳本進行業務處理就會使ASP頁面中代碼十分臃腫、晦澀。而使用組件的方案也較單純的ASP腳本執行速度速度快。并且可以將整個查詢處理作為一個事務,保證數據庫信息的安全、完整。將該組件在MTS中注冊,又可避免多用戶訪問該主頁時可能造成的網絡擁塞。實際應用中,學生和教師的使用權限是不同的。在學生查詢成績的頁面中,可重用該組件,只是調用其不同的接口而已。僅使用ASP腳本進行業務處理,則需重新編寫與displayscore.asp類似的、同樣煩瑣的代碼。在開發過程中,不同的開發人員可各盡所能,同時進行組件和ASP頁面的設計,縮短了軟件開發周期。
---- 以下兩圖顯示的是教師(教務)查詢成績和顯示查詢結果的頁面:

二. 開發過程中輔助工具的使用

---- 傳統的軟件工程進行的需求分析、數據庫設計等都是人們“純手工”完成的,缺乏嚴謹性和規范性。而在以組件為中心的系統分析和軟件開發過程中,應力爭使用有效的計算機輔助工具,以適應快速建模和組件方法新形勢的需要,提高分析的質量及精度。

---- 有很多輔助工具可以利用。由于以組件為中心的系統分析過程仍保留著傳統軟件工程方法的脈絡痕跡,北大青鳥的CASE工具對傳統的軟件工程方法比較有效,我們采用了這一工具。在數據庫建模方面,我們選用了SYBASE 公司的S-Designer,可將數據庫概念模型自動轉化為物理模型。

---- 1. 利用青鳥CASE工具編寫需求分析文檔

---- 長久以來,人們已習慣于“純手工”地進行需求分析。開發人員對現有系統和用戶要求進行調查后,需要設計系統的數據流圖(DFD圖),編寫小說明,設計系統的結構圖(SC圖)。但這種分析方法是不嚴謹的,由于種種原因,可能會發生加工、數據流、文件的語法定義錯誤;數據流圖上下各層不一致;數據流圖分解后的數據不平衡,或文件等重名及文檔不完備等各種問題,影響了我們對用戶需求的分析和理解,防礙了今后的工作。尤其是對組件的分析失當,后果不堪設想。

---- 青鳥CASE工具提供的即是一套支持軟件工程中采用傳統的結構化方法進行需求分析、軟件設計的工具。由工具生成的每個文件即一個項目,每個項目均包括數據流圖和模塊結構圖兩部分:

數據流圖部分輔助系統分析員完成對軟件系統的需求分析、建立目標系統的需求模型、生成一份正確、完整的關于目標系統的說明文檔;同時,提供對需求文檔的查詢、列表、分片、影響范圍等分析功能,輔助軟件設計人員對需求分析的結果文檔進行深入、細致的分析和理解,以利于軟件設計工作。

模塊結構圖部分輔助程序設計人員在需求分析階段完成后對軟件系統進行設計,支持模塊的逐層細化,建立系統的軟件體系結構,最后得到一份正確、完整的軟件設計文檔。同時,提供對設計文檔進行查詢、列表、分片、影響范圍等分析功能,完成對設計的結果文檔進行深入、細致的分析理解,以利于軟件開發及維護工作。在SC圖中組件的規劃方案已見端倪,繼續細化將得出每個組件的概要設計方案。
---- 在教務系統的實例中,利用青鳥CASE工具生成的DFD圖和SC圖如下圖所示:
---- 系統1層DFD圖 系統0層SC圖

---- 2. 利用S-Designer進行數據庫設計

---- 當完成系統的詳細設計后,接下來便是數據庫設計。數據庫設計在整個軟件工程中占有舉足輕重的地位。數據庫設計不合理,數據得不到合理、有效的存儲,數據存在潛在的不一致性、不完整性或有大量冗余,都會降低系統性能,甚至使系統崩潰。

---- 手工的數據庫設計完全依賴于設計者的設計水平。設計者首先必須根據實際需要建立若干個邏輯上存在的數據庫表,并使其滿足第三范式;而后根據它們之間的聯系建立特定數據庫表將其聯系起來。這是一件相當煩瑣的事。數據庫設計者既要進行數據庫的邏輯設計,又要將邏輯模型轉成物理模型,而且設計出的數據庫不一定能滿足第三范式。合理的庫表結構決定了訪庫組件接口的設計質量,所以原先數據庫設計方式不適用于以組件對象為中心的軟工設計。

---- 在教務系統的實例中,S-Designer使數據庫設計變得輕松、簡單起來。設計者只須根據現實需要,設計出數據庫的E-R圖,S-Designer會將邏輯模型轉化為物理模型,為數據庫表間的聯系建立新表,指明表的主碼、外碼,并自動對數據庫表進行一致性、冗余性、完整性檢查,使數據庫表滿足第三范式。

---- 例:可首先設計出數據庫表課程(Courses)和學生(Client)的邏輯模型:

---- 接下來,為表Courses和Client間建立聯系。由S-Designer自動生成的物理模型,如下圖所示,它們為訪庫組件的接口設計提供了準確的依據。

---- 可以相信,隨著軟件工程學的進一步成熟,將出現更多的計算機輔助工具,幫助軟件開發人員構建出更完善的應用系統。許多輔助軟件工具可以完成相似的工作,到底選用何種輔助工具取決于這些工具的性能以及使用者的習慣。

---- 以組件對象為中心的動態Web方法和DNA思想并不高深莫測,開發技術也愈加規范化。應當說,這套方法更適合客觀信息結構的現實,也更接近于人們的思維方式,其技術有如行云流水般自然,很適合在中小型企業環境中推廣和普及。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品电影观看| 青青草国产精品一区二区| 亚洲中国色老太| 日本乱人伦a精品| 狠狠色狠狠色综合日日五| 精品福利樱桃av导航| 欧美激情a在线| 18一19gay欧美视频网站| 久久久视频免费观看| 成人高清视频观看www| 日韩久久午夜影院| 夜夜嗨av一区二区三区四区| 91精品中国老女人| 在线观看日韩视频| 国产91精品最新在线播放| 国产在线观看一区二区三区| 国产日韩欧美中文在线播放| 国产一区二区三区网站| 亚洲国产高清自拍| 91精品国产综合久久香蕉922| 国产精品色视频| 国产精品羞羞答答| 国产精品一区av| 亚洲日本欧美中文幕| 欧美激情精品久久久久久黑人| 俺去亚洲欧洲欧美日韩| 欧美日韩第一页| 日韩精品中文字幕在线| 久久精品久久久久电影| 亚洲一区二区三区久久| 日韩在线视频线视频免费网站| 亚洲精品成人久久电影| 国产精品18久久久久久首页狼| 国产成人精品亚洲精品| 这里只有精品久久| 久久久久国色av免费观看性色| 亚洲一区二区三区乱码aⅴ| 国产成人拍精品视频午夜网站| 成人在线播放av| 91沈先生在线观看| 国产精品96久久久久久| 亚洲娇小xxxx欧美娇小| 97色在线观看免费视频| 亚洲三级免费看| 久久久久久久激情视频| 欧美国产日韩中文字幕在线| 92看片淫黄大片看国产片| 欧美国产乱视频| 午夜精品一区二区三区视频免费看| 欧美肥老太性生活视频| 91精品国产自产在线观看永久| 中文字幕日韩欧美| 亚洲国产精品久久| 久久97精品久久久久久久不卡| 久久久精品亚洲| 色妞一区二区三区| 91免费欧美精品| 日韩在线播放av| 国产欧美中文字幕| 日韩av电影手机在线观看| 97国产一区二区精品久久呦| 国产97免费视| 在线日韩第一页| 国产精品电影观看| 国产成人在线亚洲欧美| 日本在线观看天堂男亚洲| 色噜噜狠狠狠综合曰曰曰88av| 高清欧美一区二区三区| 欧美特黄级在线| 亚洲jizzjizz日本少妇| 久久影院在线观看| 97在线日本国产| 国产香蕉一区二区三区在线视频| 亚洲精品中文字幕女同| 亚洲第一精品夜夜躁人人爽| 国产欧美精品一区二区| 久久久久久久亚洲精品| 国产精品丝袜高跟| 亚洲自拍在线观看| 日本一欧美一欧美一亚洲视频| 在线观看免费高清视频97| 成人综合网网址| 久久九九国产精品怡红院| 美女撒尿一区二区三区| 国产成人黄色av| 亚洲性av网站| xxx成人少妇69| 国产成人精彩在线视频九色| 国产精品91免费在线| 日韩电影免费观看中文字幕| 亚洲欧美激情精品一区二区| 一区二区av在线| www.亚洲男人天堂| 欧美性极品xxxx娇小| 久久久久女教师免费一区| 亚洲欧洲日产国产网站| 亚洲精品福利免费在线观看| 日韩av免费看| 欧美xxxx综合视频| 日本成人在线视频网址| 欧美福利视频在线观看| 久久久999国产| 成人a在线视频| 色婷婷av一区二区三区在线观看| 久久伊人免费视频| 国产精品自产拍在线观看中文| 成人网址在线观看| 亚洲亚裔videos黑人hd| 亚洲国产一区二区三区在线观看| 久久久影视精品| 欧美精品久久久久a| 中文字幕日韩av| 国产视频福利一区| 欧美视频一区二区三区…| 日韩在线观看电影| 国产深夜精品福利| 欧美成人一区二区三区电影| 国产在线视频不卡| 国模私拍视频一区| 亚洲成人网在线观看| 久久影视电视剧凤归四时歌| 国产精品精品视频一区二区三区| 欧美黄色小视频| 成人春色激情网| 日本免费在线精品| 国产一区二区在线免费视频| 麻豆国产va免费精品高清在线| 国内精品久久久久伊人av| 国产精品免费一区二区三区都可以| 久久99久久亚洲国产| 亚洲国产古装精品网站| 国产视频精品va久久久久久| 国产精品高潮呻吟久久av黑人| 国产一区红桃视频| 久久久久久亚洲精品| 国产精品久久久久久影视| 欧美精品午夜视频| 97视频在线观看视频免费视频| 日本欧美一二三区| 久久精品亚洲热| 欧美激情乱人伦一区| 日韩一区二区在线视频| 国内精品视频在线| 欧美裸体男粗大视频在线观看| 国产午夜精品全部视频播放| 97在线免费观看视频| 国产在线不卡精品| 国产精品爽爽爽爽爽爽在线观看| 亚洲午夜国产成人av电影男同| 精品自拍视频在线观看| 亚洲成人久久久| 91久久中文字幕| 日韩免费中文字幕| 国产精品久久久久久久7电影| 国产精品久久77777| 色狠狠久久aa北条麻妃| 国产日韩欧美在线| 在线视频日韩精品| 亚洲色图国产精品| 亚洲最新中文字幕| 懂色aⅴ精品一区二区三区蜜月| 粗暴蹂躏中文一区二区三区| 精品精品国产国产自在线| 欧美专区日韩视频|