欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      軟件工程試驗(yàn)報(bào)告

      時(shí)間:2019-05-15 09:50:31下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《軟件工程試驗(yàn)報(bào)告》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《軟件工程試驗(yàn)報(bào)告》。

      第一篇:軟件工程試驗(yàn)報(bào)告

      實(shí)驗(yàn)項(xiàng)目名稱(chēng):需求分析

      (所屬課程:軟件工程概論)

      1.實(shí)驗(yàn)?zāi)康?/p>

      1.選擇要設(shè)計(jì)的系統(tǒng),使用UML進(jìn)行需求分析,了解所要完成系統(tǒng)的功能需求,性能需求,接口需求等。

      2.學(xué)習(xí)實(shí)使用Rational Rose 或其它軟件工程工具繪制用例圖、活動(dòng)圖。2.實(shí)驗(yàn)內(nèi)容

      使用Rose 繪制系統(tǒng)的用例圖。1.Rational Rose介紹

      Rational Rose是基于UML而產(chǎn)生的,是軟件開(kāi)發(fā)過(guò)程中的不可或缺的一個(gè)建模工具。

      (1)Rational Rose的特點(diǎn):

      ? 支持多種語(yǔ)言,如Ada、CORBA、Visual Basic、Java等; ? 支持模型的Internet發(fā)布;

      ? 可以生成簡(jiǎn)單、清晰且定制靈活的文檔; ? 雙向工程保證了模型和代碼高度一致; ? 支持逆向工程,建立代碼框架; ? 支持多種關(guān)系型數(shù)據(jù)庫(kù)的建模;

      ? 從需求分析到測(cè)試,在整個(gè)軟件生命周期中,都為團(tuán)隊(duì)開(kāi)發(fā)提供強(qiáng)有力的支持。

      (2)Rational Rose的作用

      ? 整個(gè)開(kāi)發(fā)團(tuán)隊(duì)可以使用用例圖,來(lái)獲得一個(gè)系統(tǒng)高層次的視圖,并且可以協(xié)商項(xiàng)目的范疇;

      ? 項(xiàng)目經(jīng)理可以使用用例圖和文檔,把項(xiàng)目分解成便于管理的多個(gè)模塊; ? 系統(tǒng)分析員和客戶(hù)在看到用例規(guī)格描述文檔的時(shí)候,就可以明白系統(tǒng)將會(huì)提供什么樣的功能;

      ? 技術(shù)編寫(xiě)者在看到用例規(guī)格描述文檔時(shí),就可以著手編寫(xiě)用戶(hù)手冊(cè)和培訓(xùn)計(jì)劃; ? 系統(tǒng)分析員和軟件開(kāi)發(fā)者在看到時(shí)序圖和協(xié)作圖時(shí),就可以明白整個(gè)系統(tǒng)的邏輯流程、對(duì)象以及對(duì)象之間的消息 2.安裝Rational Rose ①雙擊Rational Rose 2007的安裝程序,進(jìn)入安裝界面;按照系統(tǒng)提示一步一步完成系統(tǒng)的安裝。其中在選擇安裝產(chǎn)品時(shí),選擇“Rational Rose Enterprise Edition”;并且在設(shè)置創(chuàng)建程序位置時(shí),選擇創(chuàng)建一個(gè)本地的應(yīng)用程序而非網(wǎng)絡(luò)的,即選擇“Desktop installation from CD”。

      ②安裝成功,進(jìn)入Rational Rose界面,如圖1-1所示。

      圖1-1 Rational Rose打開(kāi)界面

      3.Rational Rose界面介紹

      圖1-2 Rational Rose窗口

      (1)Browser窗口: 瀏覽器窗口,用于快速啟動(dòng)模型;

      (2)Documentation窗口:文檔窗口,用于快速訪(fǎng)問(wèn)通用命令;(3)Diagram窗口:編輯區(qū),用于顯示和編輯多個(gè)UML圖;(4)日志窗口:用于觀看錯(cuò)誤和各種各樣命令的結(jié)果報(bào)告;(5)工具欄窗口:顯示有關(guān)工具圖標(biāo)。

      其中繪制用例圖時(shí)的工具欄圖標(biāo)如圖1-3所示。

      圖1-3 工具欄

      (1)selection tool 選擇工具(2)text box 文本框(3)note 注釋

      (4)anchor note to item 用錨把項(xiàng)目與注釋鏈接在一起(5)package 包(6)use case 用例(7)actor 角色

      (8)unidirectional association 單項(xiàng)鏈接(9)dependency or instantiates 依賴(lài)或?qū)嵗?10)generalization 泛化 4.Rose創(chuàng)建模型

      Rose創(chuàng)建的模型文件后綴名為.mdl,模型的創(chuàng)建的一般步驟:(1)創(chuàng)建模型

      點(diǎn)擊菜單欄中【File】項(xiàng),選擇【New】選項(xiàng),或者直接點(diǎn)擊標(biāo)準(zhǔn)菜單欄中的【Create New Model or File】按鈕;彈出如圖1-4所示的對(duì)話(huà)框,選擇要用到的框架,單擊【OK】按鈕,或者【Cancel】按鈕。

      圖1-4 框架選擇對(duì)話(huà)框

      (2)保存模型

      保存模型是創(chuàng)建模型的逆過(guò)程,點(diǎn)擊菜單欄中【File】項(xiàng),選擇【Save】選項(xiàng),或者直接點(diǎn)擊標(biāo)準(zhǔn)菜單欄中的【Save Model,File,or Script】按鈕;(3)發(fā)布模型

      點(diǎn)擊菜單欄中的【Tools】項(xiàng),選擇【W(wǎng)eb Publisher...】項(xiàng),跳出如圖1-5所示對(duì)話(huà)框;

      在圖1-5中,選擇要發(fā)布到web頁(yè)面上的內(nèi)容和HTML頁(yè)面要保存的位置,單擊【Publish】按鈕,Rose模型就發(fā)布到web頁(yè)面上,打開(kāi)所保存的.html文件,就可以看到Rose模型。

      圖1-5 rose web publish 5.使用Rational Rose繪制用例圖 創(chuàng)建用例圖

      (1)選定瀏覽器窗口中的【Use Case View】;(2)單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【New】;(3)在菜單【New】產(chǎn)生的下級(jí)菜單中選擇要新建的圖——【Use Case Diagram】。

      6.創(chuàng)建參與者、用例

      參與者、用例、以及兩者的關(guān)系,是用例圖的主要組成元素。下面有兩種方式創(chuàng)建用例圖所需的元素:

      (1)單擊編輯區(qū)工具欄的圖標(biāo),然后在編輯區(qū)單擊鼠標(biāo)左鍵;

      (2)在瀏覽器窗口中創(chuàng)建所需要的元素,將瀏覽器中的元素拖動(dòng)編輯區(qū)。7.建立用例規(guī)約(Use Case Specification)在選擇要設(shè)計(jì)用例規(guī)約的用例單擊鼠標(biāo)右鍵,選擇菜單【Open Specification...】,從而打開(kāi)如圖1-6所示對(duì)話(huà)框。用戶(hù)可以在用例屬性設(shè)置標(biāo)簽中對(duì)一些屬性進(jìn)行設(shè)置。

      Name(名稱(chēng)):設(shè)置用例的名稱(chēng); Stereotype(類(lèi)型):用例的類(lèi)型; Rank(級(jí)別):對(duì)用例進(jìn)行層次劃分; 在圖1-6所示的用例屬性設(shè)置窗口中,我們通常將用例規(guī)約寫(xiě)在【Documentation】對(duì)象窗口中。

      圖1-6 用例屬性設(shè)置

      3.實(shí)驗(yàn)要求及代碼

      圖1 圖書(shū)管理系統(tǒng)的用例圖

      圖2 借書(shū)過(guò)程的活動(dòng)圖

      圖3 還書(shū)過(guò)程的活動(dòng)圖

      4.實(shí)驗(yàn)總結(jié)

      (1)經(jīng)過(guò)這次實(shí)驗(yàn),我了解了Rational Rose的安裝和模型的創(chuàng)建。(2)使用UML進(jìn)行需求分析,及所要完成系統(tǒng)的功能需求,性能需求,接口需求等。

      (3)學(xué)會(huì)了使用Rational Rose 或其它軟件工程工具繪制用例圖和活動(dòng)圖等。

      第二篇:電子商務(wù)試驗(yàn)報(bào)告

      四、實(shí)驗(yàn)思考

      1、請(qǐng)描述你在該小組實(shí)驗(yàn)中都完成了哪些任務(wù)?

      答:查看商城用戶(hù)訂單詳細(xì)信息,生成已確認(rèn)付款訂單,生成已確認(rèn)缺貨采購(gòu)單,生成已確認(rèn)預(yù)警商品采購(gòu)單,生成已確認(rèn)正常商品采購(gòu)單,銀行進(jìn)出帳管理(存),銀行進(jìn)出帳管理(取),銷(xiāo)售收入報(bào)表查詢(xún),采購(gòu)支付報(bào)表查詢(xún),銀行進(jìn)出報(bào)表查詢(xún)。

      2、說(shuō)說(shuō)你對(duì)B to C電子商務(wù)運(yùn)作流程的認(rèn)識(shí)。

      答:B to C模式是一種電子化零售,主要采取在線(xiàn)銷(xiāo)售形式,以網(wǎng)絡(luò)手段實(shí)現(xiàn)公眾消費(fèi)或向公眾提供服務(wù),并保證與其相關(guān)的付款方式的電子化。其主要的流程有:A.初始信息設(shè)置

      商城管理員(添加商城信息、添加商品種類(lèi)、添加商品信息、開(kāi)通物流公司)物流用戶(hù)(物流公司申報(bào))

      B.購(gòu)買(mǎi)流程

      商城用戶(hù)(注冊(cè)、登錄、采購(gòu))———銷(xiāo)售部———財(cái)務(wù)部(受理訂單、進(jìn)EDI填開(kāi)發(fā)票)———銷(xiāo)售部(確認(rèn)單據(jù)、生成發(fā)貨單)———儲(chǔ)運(yùn)部(發(fā)貨)———物流業(yè)務(wù)部(配送)———商城用戶(hù)(收貨)

      2.退貨流程

      商城用戶(hù)(登錄、查看訂單、退貨)———銷(xiāo)售部(同意/不同意退貨)———商城用戶(hù)(查看訂單處理情況)

      3.正常采購(gòu)

      采購(gòu)部(提交正常采購(gòu)單)———財(cái)務(wù)部(審核)———采購(gòu)部(確認(rèn)采購(gòu)單)———物流業(yè)務(wù)部(配送)———儲(chǔ)運(yùn)部(產(chǎn)品入庫(kù))

      4.預(yù)警采購(gòu)

      采購(gòu)部(提交預(yù)警采購(gòu)單)———財(cái)務(wù)部(審核)———采購(gòu)部(確認(rèn)采購(gòu))———物流業(yè)務(wù)部(配送)———儲(chǔ)運(yùn)部(產(chǎn)品入庫(kù))

      5.缺貨采購(gòu)

      商城用戶(hù)(注冊(cè)、登錄、采購(gòu))———銷(xiāo)售部(受理生成缺貨單)———采購(gòu)部(生成缺貨采購(gòu)單)———財(cái)務(wù)部(通過(guò)缺貨采購(gòu)單)———采購(gòu)部(確認(rèn)缺貨采購(gòu))———物流部(缺貨商品配送)———儲(chǔ)運(yùn)部(缺貨單入庫(kù))———銷(xiāo)售部(生成財(cái)務(wù)單)———財(cái)務(wù)部(確認(rèn)付款單)———銷(xiāo)售部(生成出運(yùn)單)———儲(chǔ)運(yùn)部(配送產(chǎn)品)———商城用戶(hù)(收貨)

      第三篇:機(jī)械設(shè)計(jì)試驗(yàn)報(bào)告

      請(qǐng)分別用三張實(shí)驗(yàn)報(bào)告紙抄寫(xiě)!第10周周五交到各班學(xué)習(xí)委員,過(guò)期不侯!另將軸系結(jié)構(gòu)圖一并交上,每人一份,圖

      上要標(biāo)明尺寸!

      請(qǐng)學(xué)習(xí)委員將實(shí)驗(yàn)報(bào)告按學(xué)號(hào)排好交給我!

      實(shí)驗(yàn)一機(jī)械零件認(rèn)識(shí)實(shí)驗(yàn)

      一、實(shí)驗(yàn)?zāi)康?.初步了解《機(jī)械設(shè)計(jì)》課程所研究的各種常用零件的結(jié)構(gòu)、類(lèi)型、特點(diǎn)及應(yīng)用。

      2.了解各種標(biāo)準(zhǔn)零件的結(jié)構(gòu)形式及相關(guān)的國(guó)家標(biāo)準(zhǔn)。

      3.了解各種傳動(dòng)的特點(diǎn)及應(yīng)用。

      4.了解各種常用的潤(rùn)滑劑及相關(guān)的國(guó)家標(biāo)準(zhǔn)。

      5.增強(qiáng)對(duì)各種零部的結(jié)構(gòu)及機(jī)器的感性認(rèn)識(shí)。

      二、實(shí)驗(yàn)方法

      通過(guò)對(duì)實(shí)驗(yàn)指導(dǎo)書(shū)的學(xué)習(xí)及機(jī)械零件模型的展示,實(shí)驗(yàn)教學(xué)人員的介紹,答疑及同學(xué)的觀察去認(rèn)識(shí)機(jī)器常用的基本零件,使理論與實(shí)際對(duì)應(yīng)起來(lái),從而增強(qiáng)同學(xué)對(duì)機(jī)械零件的感性認(rèn)識(shí)。并通過(guò)展示的機(jī)械設(shè)備、機(jī)器模型等,使學(xué)生們清楚知道機(jī)器的基本組成要素—機(jī)械零件。

      三、實(shí)驗(yàn)內(nèi)容

      (一)螺紋聯(lián)接

      螺紋聯(lián)接是利用螺紋零件工作的,主要用作緊固零件?;疽笫潜WC聯(lián)接強(qiáng)度及聯(lián)接可靠性,同學(xué)們應(yīng)了解如下內(nèi)容:

      1.螺紋的種類(lèi); 2.螺紋聯(lián)接的基本類(lèi)型;

      3.螺紋聯(lián)接的防松;4.提高螺紋聯(lián)接強(qiáng)度的措施。

      在掌握上述內(nèi)容,通過(guò)參觀螺紋聯(lián)接模型,同學(xué)應(yīng)區(qū)分出:①什么是普通螺紋、管螺紋、梯形螺紋和鋸齒螺紋;②能認(rèn)識(shí)什么是普通螺紋、雙頭螺紋、螺釘及緊定螺釘聯(lián)接;③能認(rèn)識(shí)摩擦防松與機(jī)械防松的零件;④了解聯(lián)接螺栓的光桿部分做得比較細(xì)的原因是什么等問(wèn)題。

      (二)標(biāo)準(zhǔn)聯(lián)接零件

      標(biāo)準(zhǔn)聯(lián)接零件一般是由專(zhuān)業(yè)企業(yè)按國(guó)標(biāo)(GB)成批生產(chǎn),供應(yīng)市場(chǎng)的零件。這類(lèi)零件的結(jié)構(gòu)形式和尺寸都已標(biāo)準(zhǔn)化,設(shè)計(jì)時(shí)可根據(jù)有關(guān)標(biāo)準(zhǔn)選用。通過(guò)實(shí)驗(yàn)學(xué)生們要能區(qū)分螺栓與螺釘;能了解各種標(biāo)準(zhǔn)化零件的結(jié)構(gòu)特點(diǎn),使用情況;了解各類(lèi)零件有那些標(biāo)準(zhǔn)代號(hào),以提高學(xué)生們對(duì)標(biāo)準(zhǔn)化意識(shí)。

      1.螺栓; 2.螺釘;3.螺母;4.墊圈;5.擋圈。

      (三)鍵、花鍵及銷(xiāo)聯(lián)接

      1.鍵聯(lián)接;2.花鍵聯(lián)接;3.銷(xiāo)聯(lián)接

      以上幾種聯(lián)接,通過(guò)展柜的參觀同學(xué)們要仔細(xì)觀察其結(jié)構(gòu),使用場(chǎng)合,并能

      分清和認(rèn)識(shí)以上各類(lèi)零件。

      (四)機(jī)械傳動(dòng)

      機(jī)械傳動(dòng)有螺旋傳動(dòng)、帶傳動(dòng)、鏈傳動(dòng)、齒傳動(dòng)及蝸桿傳動(dòng)等。各種傳動(dòng)都有不同的特點(diǎn)和使用范圍,這些傳動(dòng)知識(shí)同學(xué)們?cè)趯W(xué)習(xí)“機(jī)械設(shè)計(jì)”課程中都有要詳細(xì)講授。在這里主要通過(guò)實(shí)物觀察,增加同學(xué)們對(duì)各種機(jī)械傳動(dòng)知識(shí)的感性認(rèn)識(shí),為今后理論學(xué)習(xí)及課程設(shè)計(jì)打下良好基礎(chǔ)。

      1.螺旋傳動(dòng);2.帶傳動(dòng); 3.鏈傳動(dòng); 4.齒輪傳動(dòng); 5.蝸桿傳動(dòng)。

      (五)軸系零、部件

      1.軸承;2.軸

      (六)彈簧

      (七)潤(rùn)滑劑及密封

      實(shí)驗(yàn)二軸系結(jié)構(gòu)分析

      一、實(shí)驗(yàn)?zāi)康?.熟悉并掌握軸與軸上零件的結(jié)構(gòu)形狀及功用、工藝要求和裝配關(guān)系;

      2.熟悉并掌握軸及軸上零件的定位與固定方法;

      3.了解軸承的類(lèi)型、布置、安裝及調(diào)整方法,以及潤(rùn)滑和密封方式。

      二、實(shí)驗(yàn)設(shè)備及工具

      1. 組合式軸系結(jié)構(gòu)設(shè)計(jì)分析實(shí)驗(yàn)箱

      該實(shí)驗(yàn)箱按照組合設(shè)計(jì)法,采用較少的零件,可以組合出盡可能多的軸系部件,以滿(mǎn)足實(shí)驗(yàn)的要求。實(shí)驗(yàn)箱內(nèi)有齒輪類(lèi)、軸類(lèi)、套筒類(lèi)、端蓋類(lèi)、支座類(lèi)、軸承類(lèi)及聯(lián)接件類(lèi)等8類(lèi)50多種零件,提供了可組成圓柱齒輪軸系、小圓錐齒輪軸系和蝸桿軸系三類(lèi)軸系結(jié)構(gòu)模型的成套零件。

      2. 測(cè)量及繪圖工具

      300mm鋼板尺、游標(biāo)卡尺、鉛筆、三角板等。

      三、實(shí)驗(yàn)內(nèi)容及要求

      1.依據(jù)指導(dǎo)教師給每組指定實(shí)驗(yàn)內(nèi)容(圓柱齒輪軸系、小圓錐齒輪軸系或蝸桿軸系)觀察組裝后的軸系結(jié)構(gòu),繪制軸系部件的裝配草圖。

      2.測(cè)量軸系的主要裝配尺寸,分析并測(cè)繪軸系零件,繪制主要零件的結(jié)構(gòu)草圖。

      四、實(shí)驗(yàn)步驟

      1.提前預(yù)習(xí),明確實(shí)驗(yàn)內(nèi)容,復(fù)習(xí)軸的結(jié)構(gòu)設(shè)計(jì)及軸承組合設(shè)計(jì)等與實(shí)驗(yàn)相關(guān)的教學(xué)內(nèi)容;

      2.觀察與分析軸系結(jié)構(gòu)的特點(diǎn),繪制軸系裝配示意圖或結(jié)構(gòu)草圖;

      3. 測(cè)量軸系主要裝配尺寸(如支承跨距);

      4. 對(duì)軸系部件進(jìn)行拆解,觀察和分析軸系各零件的結(jié)構(gòu),對(duì)其主要的結(jié)構(gòu)尺寸進(jìn)行測(cè)量(支座不用測(cè)量)。

      5. 根據(jù)裝配草圖和測(cè)量數(shù)據(jù),繪制軸系部件裝配圖。

      6.裝配軸系部件使其恢復(fù)原狀。

      實(shí)驗(yàn)三軸系結(jié)構(gòu)設(shè)計(jì)

      一、實(shí)驗(yàn)?zāi)康氖煜げ⒄莆蛰S系結(jié)構(gòu)設(shè)計(jì)中有關(guān)軸的結(jié)構(gòu)設(shè)計(jì)、滾動(dòng)軸承組合設(shè)計(jì)的基本方法。

      二、實(shí)驗(yàn)設(shè)備及工具

      1. 組合式軸系結(jié)構(gòu)設(shè)計(jì)分析實(shí)驗(yàn)箱

      實(shí)驗(yàn)箱提供了可組成減速器圓柱齒輪軸系、小圓錐齒輪軸系和蝸桿軸系三類(lèi)軸系結(jié)構(gòu)模型的成套零件(詳見(jiàn)實(shí)驗(yàn)中的設(shè)備介紹)。

      2.測(cè)量及繪圖工具

      300mm鋼板尺、游標(biāo)卡尺、鉛筆、三角板等。

      三、實(shí)驗(yàn)內(nèi)容及要求

      1、進(jìn)行軸的結(jié)構(gòu)設(shè)計(jì)與滾動(dòng)軸承組合設(shè)計(jì)

      每組學(xué)生進(jìn)行軸系結(jié)構(gòu)設(shè)計(jì),解決軸承類(lèi)型選擇,軸上零件定位、固定,軸承安裝與調(diào)節(jié)、潤(rùn)滑及密封等問(wèn)題。

      2.繪制軸系結(jié)構(gòu)裝配圖。

      3.每人編寫(xiě)實(shí)驗(yàn)報(bào)告一份。

      四、實(shí)驗(yàn)步驟

      1.明確實(shí)驗(yàn)內(nèi)容,理解設(shè)計(jì)要求;

      2.復(fù)習(xí)有關(guān)軸的結(jié)構(gòu)設(shè)計(jì)與軸承組合設(shè)計(jì)的內(nèi)容與方法;

      3.構(gòu)思軸系結(jié)構(gòu)方案

      1)根據(jù)齒輪類(lèi)型選擇滾動(dòng)軸承型號(hào);

      2)確定支承軸向固定方式(兩端固定:一端固定、一端游動(dòng));

      3)根據(jù)齒輪圓周速度(高、中、低)確定軸承潤(rùn)滑方式(脂潤(rùn)滑、油潤(rùn)滑);

      4)選擇端蓋形式(凸緣式、嵌入式)并考慮透蓋處密封方式(氈圈、皮碗、油溝);

      5)考慮軸上零件的定位與固定,軸承間隙調(diào)整等問(wèn)題;

      6)繪制軸系結(jié)構(gòu)方案示意圖

      4.組裝軸系部件

      根據(jù)軸系結(jié)構(gòu)方案,從實(shí)驗(yàn)箱中選取合適零件并組裝成軸系部件,檢查所設(shè)計(jì)組裝的軸系結(jié)構(gòu)是否正確。

      5.繪制軸系結(jié)構(gòu)草圖。

      6.測(cè)量零件結(jié)構(gòu)尺寸(支座不用測(cè)量),并作好記錄。

      7.將所有零件放人實(shí)驗(yàn)箱內(nèi)的規(guī)定位置,交還所借工具

      8.根據(jù)結(jié)構(gòu)草圖及測(cè)量數(shù)據(jù),在3號(hào)圖紙上用1:l比例繪制軸系結(jié)構(gòu)裝配圖,要求裝配關(guān)系表達(dá)正確,注明必要尺寸(如支承跨距、齒輪直徑與寬度、主要配合尺寸),填寫(xiě)標(biāo)題欄和明細(xì)表。

      9.寫(xiě)出實(shí)驗(yàn)報(bào)告。

      第四篇:數(shù)據(jù)結(jié)構(gòu)試驗(yàn)報(bào)告

      實(shí)驗(yàn)一:ADT的類(lèi)C描述向C程序的轉(zhuǎn)換實(shí)驗(yàn)(2學(xué)時(shí))

      實(shí)驗(yàn)?zāi)康模?/p>

      (1)復(fù)習(xí)C語(yǔ)言的基本用法;

      (2)學(xué)會(huì)用類(lèi)C的語(yǔ)言對(duì)算法進(jìn)行描述的方法,將類(lèi)C算法轉(zhuǎn)換成C源程序的方法和過(guò)程;

      (3)抽象數(shù)據(jù)類(lèi)型的定義和表示、實(shí)現(xiàn);

      (4)加深對(duì)數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)之間關(guān)系的理解;(5)初步建立起時(shí)間復(fù)雜度和空間復(fù)雜度的概念。實(shí)驗(yàn)內(nèi)容:(類(lèi)C算法的程序?qū)崿F(xiàn))(1)輸入一組數(shù)據(jù)存入數(shù)組中,并將數(shù)據(jù)元素的個(gè)數(shù)動(dòng)態(tài)地由輸入函數(shù)完成。求輸入數(shù)據(jù)的最大值、最小值,并通過(guò)函數(shù)參數(shù)返回所求結(jié)果; 實(shí)驗(yàn)準(zhǔn)備:

      1)計(jì)算機(jī)設(shè)備;2)程序調(diào)試環(huán)境的準(zhǔn)備,如TC環(huán)境;3)實(shí)驗(yàn)內(nèi)容的算法分析與代碼設(shè)計(jì)與分析準(zhǔn)備。實(shí)驗(yàn)步驟:

      1.安裝TC并設(shè)置好環(huán)境,如果已安裝好,可以跳過(guò)此步; 2.錄入程序代碼并進(jìn)行調(diào)試和算法分析;

      對(duì)實(shí)驗(yàn)內(nèi)容(1)的操作步驟:1)用類(lèi)C語(yǔ)言描述算法過(guò)程;2)用C語(yǔ)言環(huán)境實(shí)現(xiàn)該算法。

      對(duì)實(shí)驗(yàn)內(nèi)容(2)的操作步驟:1)完成算法的C實(shí)現(xiàn);2)分析其時(shí)間復(fù)雜度和空間復(fù)雜度。

      3.編寫(xiě)實(shí)驗(yàn)報(bào)告。

      實(shí)驗(yàn)結(jié)果:// 動(dòng)態(tài)分配數(shù)組空間 #include #include

      int size,i;int *pArray;int *p;void malloc_size(){ pArray=(int *)malloc(size*(sizeof(int)));}

      int input_size(){ printf(“please input the size:n”);printf(“size= ”);scanf(“%d”,&size);return 0;}

      int input_data(){ printf(“please input the value:n”);for(i=0;i

      printf(“pArray[%d]= ”,i);

      scanf(“%d”,&pArray[i]);} return *pArray;}

      int Compare(){ int x,y,i;x=y=p[0];for(i=0;i

      if(x>=p[i])x=p[i];

      if(y<=p[i])y=p[i];} printf(“min= %dt

      max=%dn”,x,y);return 0;}

      int Output_data(){ p=pArray;printf(“before ofpaixu :n”);for(i=0;i

      printf(“%dt”,*pArray);

      pArray++;} printf(“n”);return *pArray;}

      void paixu(){ int x=0;int i,j;printf(“l(fā)ater of paixu:n”);for(i=0;i

      for(j=i+1;j

      {

      if(p[i]>=p[j])

      {

      x=p[i];p[i]=p[j];p[j]=x;

      }

      }

      printf(“%dt”,p[i]);} printf(“n”);}

      void main(){ clrscr();input_size();malloc_size();input_data();Output_data();Compare();paixu();}

      實(shí)驗(yàn)結(jié)果:

      實(shí)驗(yàn)二

      線(xiàn)性表及其基本操作實(shí)驗(yàn)(2學(xué)時(shí))實(shí)驗(yàn)?zāi)康模?/p>

      (1)熟練掌握線(xiàn)性表ADT和相關(guān)算法描述、基本程序?qū)崿F(xiàn)結(jié)構(gòu);(2)以線(xiàn)性表的基本操作為基礎(chǔ)實(shí)現(xiàn)相應(yīng)的程序;

      (3)掌握線(xiàn)性表的順序存儲(chǔ)結(jié)構(gòu)和動(dòng)態(tài)存儲(chǔ)結(jié)構(gòu)之區(qū)分。

      實(shí)驗(yàn)內(nèi)容:(類(lèi)C算法的程序?qū)崿F(xiàn),任選其一。具體要求參見(jiàn)教學(xué)實(shí)驗(yàn)大綱)(1)一元多項(xiàng)式運(yùn)算的C語(yǔ)言程序?qū)崿F(xiàn)(加法必做,其它選做);(2)有序表的合并;(3)集合的并、交、補(bǔ)運(yùn)算; 實(shí)驗(yàn)準(zhǔn)備:

      1)計(jì)算機(jī)設(shè)備;2)程序調(diào)試環(huán)境的準(zhǔn)備,如TC環(huán)境;3)實(shí)驗(yàn)內(nèi)容的算法分析與代碼設(shè)計(jì)與分析準(zhǔn)備。實(shí)驗(yàn)步驟:

      1.錄入程序代碼并進(jìn)行調(diào)試和算法分析; 2.編寫(xiě)實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)結(jié)果://線(xiàn)性鏈表

      #include #include #define M 6

      typedef struct node { int data;struct node *next;}*Sqlist;

      void Initlialize(Sqlist &L){ L=(Sqlist)malloc(sizeof(Sqlist));L->next =NULL;}

      int Getlength(Sqlist L){ int i=0;Sqlist p=L->next;while(p!=NULL){

      i++;

      p=p->next;}

      return i;}

      int Getelem(Sqlist L,int i){

      int j=1,e;Sqlist p=L->next;while(j

      p=p->next;

      j++;}

      e=p->data;printf(“第 %d 個(gè)元素是:%dn”,i,e);return 1;}

      int Locatelem(Sqlist L,int x){

      int i=0;Sqlist p=L->next;while(p!=NULL&&p->data!=x){

      p=p->next;

      i++;} if(p==NULL)

      return 0;else

      {

      printf(“%d 是第 %d 個(gè)元素n”,x,i);return i;} }

      void CreatlistF(Sqlist &L,int a[ ],int n){ Sqlist s;int i;L=(Sqlist)malloc(sizeof(Sqlist));L->next =NULL;for(i=0;i

      s=(Sqlist)malloc(sizeof(Sqlist));

      } }

      void CreatlistR(Sqlist &L,int a[],int n){

      Sqlist s,r;int i;L=(Sqlist)malloc(sizeof(Sqlist));L->next =NULL;r=L;for(i=0;i

      s=(Sqlist)malloc(sizeof(Sqlist));

      s->data =a[i];

      s->next=NULL;

      r->next =s;r =s;} }

      int Inselem(Sqlist &L,int i,int x){ int j=1;Sqlist s,p=L->next;s=(Sqlist)malloc(sizeof(Sqlist));s->data =x;s->next =NULL;if(i<1||i>Getlength(L))

      return 0;while(j

      p=p->next;j++;} printf(“在第 %d 個(gè)位置插入數(shù)據(jù):%dn”,i,x);s->next =p->next;

      p->next =s;return 1;}

      int Delelem(Sqlist &L,int i){

      int j=1;

      Sqlist p,q;

      p=L;

      if(i<1||i>Getlength(L))

      return 0;s->data =a[i];

      s->next =L->next;L->next =s;

      while(j

      {

      p=p->next;

      j++;

      }

      q=p->next;

      p->next =q->next;

      free(q);

      return 1;}

      void Displist(Sqlist L){ Sqlist p=L->next;

      while(p!=NULL)

      {

      printf(“%dt”,p->data);

      p=p->next;

      }

      printf(“n”);}

      void input(int *pArray,int n){

      printf(“請(qǐng)輸入數(shù)組數(shù)據(jù)(共含 %d 個(gè)元):n”,n);

      for(int i=0;i

      Scanf(“%d”,&pArray[i]);

      }

      int main(int argc, char* argv[]){ Sqlist L;

      int Array[M],Select;initlialize(L);do{

      printf(“請(qǐng)輸入選擇方法(1表示頭插法,2表示尾插法,0表示結(jié)束):n”);

      scanf(“%d”,&Select);

      switch(Select)

      {

      case 1: printf(“按頭插法建立線(xiàn)性表:n”);

      input(Array,M);

      creatlistF(L,Array,M);

      break;case 2: printf(“按尾插法建立線(xiàn)性表:n”);

      input(Array,M);

      creatlistR(L,Array,M);

      break;

      }

      printf(“原線(xiàn)性表數(shù)據(jù)為:n”);Displist(L);

      Getelem(L,3);

      Locatelem(L,2);

      Inselem(L,5,5);

      printf(“修改后的線(xiàn)性表數(shù)據(jù)為:n”);

      Delelem(L,4);

      Displist(L);}while(Select!=0);return 0;} 運(yùn)行結(jié)果:

      實(shí)驗(yàn)三

      棧和隊(duì)列實(shí)驗(yàn)(6學(xué)時(shí))實(shí)驗(yàn)?zāi)康模?/p>

      (1)熟練掌握棧和隊(duì)列的抽象數(shù)據(jù)類(lèi)型及其結(jié)構(gòu)特點(diǎn);(2)實(shí)現(xiàn)基本的棧和隊(duì)列的基本操作算法程序。實(shí)驗(yàn)內(nèi)容:(類(lèi)C算法的程序?qū)崿F(xiàn),任選其一)(1)設(shè)計(jì)與實(shí)現(xiàn)基本的堆棧和隊(duì)列結(jié)構(gòu)下的各種操作(如堆棧的PUSH、POP等操作)(必做);

      (2)以表達(dá)式計(jì)算為例,完成一個(gè)可以進(jìn)行算術(shù)表達(dá)式計(jì)算功能的算法設(shè)計(jì)與實(shí)現(xiàn)(選做); 實(shí)驗(yàn)準(zhǔn)備:

      1)計(jì)算機(jī)設(shè)備;2)程序調(diào)試環(huán)境的準(zhǔn)備,如TC環(huán)境;3)實(shí)驗(yàn)內(nèi)容的算法分析與代碼設(shè)計(jì)與分析準(zhǔn)備。實(shí)驗(yàn)步驟:

      1.錄入程序代碼并進(jìn)行調(diào)試和算法分析; 2.編寫(xiě)實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)結(jié)果://隊(duì)列存儲(chǔ) #include #define QueueSize 10 typedef int status;

      typedef struct sqqueue { char data[QueueSize];int front,rear;}SqQueue;

      void InitQueue(SqQueue &qu){ qu.front =qu.rear =0;}

      status EnQueue(SqQueue &qu,char x){

      if((qu.rear +1)%QueueSize==qu.front)

      return 0;qu.rear =(qu.rear+1)%QueueSize;qu.data[qu.rear]=x;return 1;}

      status DeQueue(SqQueue &qu,char &x){ if(qu.rear==qu.front)

      return 0;qu.front =(qu.front +1)%QueueSize;x=qu.data[qu.front];return 1;}

      status GetHead(SqQueue qu,char &x){ if(qu.rear ==qu.front)

      return 0;x=qu.data[(qu.front+1)%QueueSize];return 1;}

      status QueueEmpty(SqQueue qu){ if(qu.rear==qu.front)

      return 1;else

      return 0;}

      void main(){ SqQueue qu;char e;InitQueue(qu);printf(“Queue %sn”,(QueueEmpty(qu)==1?“Empty”:“Not Empty”));

      printf(“inser an”);

      EnQueue(qu,'a');

      printf(“inser bn”);

      EnQueue(qu,'b');

      printf(“inser cn”);

      EnQueue(qu,'c');

      printf(“inser dn”);

      EnQueue(qu,'d');

      printf(“Queue %sn”,(QueueEmpty(qu)==1?“Empty”:“Not Empty”));

      GetHead(qu,e);

      printf(“Queue of top elem is: %cn”,e);

      printf(“show of Queue:n”);

      while(!QueueEmpty(qu)){

      DeQueue(qu,e);

      printf(“%ct”,e);}

      printf(“n”);} 實(shí)驗(yàn)結(jié)果:

      (2)//用棧實(shí)現(xiàn)對(duì)表達(dá)式的求值運(yùn)算

      #include #include #include

      #define TRUE 1 #define FALSE 0 #define OK #define ERROR 0 #define INFEASIBLE-1 #define OVERFLOW-2 #define STACK_INIT_SIZE

      #define STACKINCREMENT 10

      typedef int Status;typedef char ElemType;

      typedef ElemType OperandType;

      typedef char OperatorType;

      typedef struct {

      ElemType *base;

      ElemType *top;

      int stacksize;}SqStack;

      Status InitStack(SqStack &S){

      S.base =(ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));

      if(!S.base)exit(OVERFLOW);

      S.top = S.base;

      S.stacksize = STACK_INIT_SIZE;

      return OK;}

      Status GetTop(SqStack S){

      ElemType e;

      if(S.top == S.base)return ERROR;

      e = *(S.top-1);

      return e;}

      Status Push(SqStack &S,ElemType e)

      {

      if(S.top1 < n){

      merge(r, r1, i, i+length-1, i + 2*length1 < n-1)

      merge(r, r1, i, i+length-1, n-1);

      else

      for(j = i;j < n;j++)r1[j] = r[j];}

      void MergeSort(SortObject * pvector){

      RecordNode record[MAXNUM];

      int length = 1;

      while(length < pvector->n){

      mergePass(pvector->record, record, pvector->n, length);

      length *= 2;

      mergePass(record, pvector->record, pvector->n, length);

      length *= 2;

      } }

      SortObject vector = {8, 49,38,65,97,76,13,27,49};

      int main(){

      int i;printf(“排序前序列為:”);

      for(i = 0;i < 8;i++)

      printf(“%d ”, vector.record[i]);printf(“n”);

      MergeSort(&vector);printf(“采用歸并排序?yàn)椋骸?;

      for(i = 0;i < 8;i++)

      printf(“%d ”, vector.record[i]);

      getchar();

      return 0;}

      實(shí)驗(yàn)結(jié)果:

      實(shí)驗(yàn)十

      查找實(shí)驗(yàn)(2學(xué)時(shí))* 實(shí)驗(yàn)?zāi)康模?/p>

      (1)熟練掌握各種靜態(tài)查找表方法(順序查找、折半查找、索引順序表等);(2)熟練掌握二叉排序樹(shù)的構(gòu)造方法和查找算法;

      (3)了解和掌握其它查找方法。

      實(shí)驗(yàn)內(nèi)容:(類(lèi)C算法的程序?qū)崿F(xiàn),除順序查找算法之外,任選一個(gè))(1)順序查找算法的實(shí)現(xiàn)(必做);(2)折半查找算法的實(shí)現(xiàn)(選做); 實(shí)驗(yàn)結(jié)果://查找實(shí)驗(yàn)

      1、順序查找:

      #include #define LENGTH 20

      void SequenceSearch(int *fp,int Length){

      int data;

      printf(“開(kāi)始使用順序查詢(xún).請(qǐng)輸入你想要查找的數(shù)據(jù): ”);

      scanf(“%d”,&data);

      for(int i=0;i

      if(fp[i]==data)

      {

      printf(“數(shù)據(jù)%d 是第 %d 個(gè)數(shù)據(jù)n”,data,i+1);

      return;

      }

      printf(“未能查找到數(shù)據(jù)%d.n”,i,data);}

      void main(){

      int count;

      int arr[LENGTH];

      printf(“請(qǐng)輸入你的數(shù)據(jù)的個(gè)數(shù):”);

      scanf(“%d”,&count);

      printf(“請(qǐng)輸入 %d 個(gè)數(shù)據(jù):”,count);

      for(int i=0;i

      scanf(“%d”,&arr[i]);

      SequenceSearch(arr,count);}

      實(shí)驗(yàn)結(jié)果:

      2、折半查找:

      #include #include #define M 10

      typedef struct { char *elem;

      int length;

      }SStable;

      void Create(char **t)

      { int i;static char a[M+1];*t=a;for(i=1;i<=M;i++){

      printf(“A[%d] is:”,i);

      scanf(“%c”,&a[i]);

      if(a[i]!= 'n')getchar();} }

      int Searth(char *t,char k){ int i;for(i=M;i>=0 && t[i]!=k;i--);

      Return i;}

      void output(char *t){ int i;for(i=1;i<=M;i++)

      printf(“n

      A[%d] is %c”,i,t[i]);}

      void px(char *t)

      { char s;int i,j;for(i=1;i<=M;i++)

      for(j=i+1;j<=M;j++)

      {

      if(t[i]>t[j]){s=t[i];t[i]=t[j];t[j]=s;}

      } }

      int Search_bin(char *t,char k){ int low=1,high=M,mid;while(low<=high){

      mid=(low+high)/2;

      if(k==t[mid])return mid;

      else if(k

      else low=mid+1;} return 0;}

      void main(){ char *t,k;int s;Create(&t);output(t);printf(“nplease input you search char:”);k=getchar();s=Searth(t,k);if(s>=0)printf(“1: use search find is A[%d]n”,s);else printf(“1:can not find itn”);px(t);output(t);s=Search_bin(t,k);if(s==0)printf(“n1:can not find it n”);else printf(“n2:use Search_bin find is A[%d]n”,s);getchar();}

      實(shí)驗(yàn)結(jié)果:

      第五篇:操作系統(tǒng)試驗(yàn)報(bào)告

      操作系統(tǒng)課外實(shí)踐報(bào)告

      項(xiàng) 目 名 稱(chēng): 磁盤(pán)調(diào)度模擬系統(tǒng) 所 在 班 級(jí): 軟件工程一班 小 組 成 員:;劉清元,學(xué)號(hào):120904012 指 導(dǎo) 教 師: 王蕾 起 止 時(shí) 間: 2014.6.1—2014.6.20

      磁盤(pán)調(diào)度模擬系統(tǒng)實(shí)驗(yàn)報(bào)告

      一:實(shí)驗(yàn)?zāi)繕?biāo):

      通過(guò)設(shè)計(jì)一個(gè)磁盤(pán)調(diào)度模擬系統(tǒng),從而使磁盤(pán)調(diào)度算法更加形象化,容易使人理解,使磁盤(pán)調(diào)度的特點(diǎn)更簡(jiǎn)單明了,能使使用者加深對(duì)先來(lái)先服務(wù)算法、最短尋道時(shí)間優(yōu)先算法、掃描算法以及循環(huán)掃描算法等磁盤(pán)調(diào)度算法的理解。

      二:實(shí)驗(yàn)要求:

      系統(tǒng)主界面可以靈活選擇某種算法,算法包括:先來(lái)先服務(wù)算法(FCFS)、最短尋道時(shí)間優(yōu)先算法(SSTF)、掃描算法(SCAN)、循環(huán)掃描算法(CSCAN)。

      三:實(shí)現(xiàn)原理

      設(shè)備的動(dòng)態(tài)分配算法與進(jìn)程調(diào)度相似,也是基于一定的分配策略的。常用的分配策略有先請(qǐng)求先分配、優(yōu)先級(jí)高者先分配等策略。在多道程序系統(tǒng)中,低效率通常是由于磁盤(pán)類(lèi)旋轉(zhuǎn)設(shè)備使用不當(dāng)造成的。操作系統(tǒng)中,對(duì)磁盤(pán)的訪(fǎng)問(wèn)要求來(lái)自多方面,常常需要排隊(duì)。這時(shí),對(duì)眾多的訪(fǎng)問(wèn)要求按一定的次序響應(yīng),會(huì)直接影響磁盤(pán)的工作效率,進(jìn)而影響系統(tǒng)的性能。訪(fǎng)問(wèn)磁盤(pán)的時(shí)間因子由3部分構(gòu)成,它們是查找(查找磁道)時(shí)間、等待(旋轉(zhuǎn)等待扇區(qū))時(shí)間和數(shù)據(jù)傳輸時(shí)間,其中查找時(shí)間是決定因素。因此,磁盤(pán)調(diào)度算法先考慮優(yōu)化查找策略,需要時(shí)再優(yōu)化旋轉(zhuǎn)等待策略。

      平均尋道長(zhǎng)度(L)為所有磁道所需移動(dòng)距離之和除以總的所需訪(fǎng)問(wèn)的磁道數(shù)(N),即:

      L=(M1+M2+??+Mi+??+MN)/N

      其中Mi為所需訪(fǎng)問(wèn)的磁道號(hào)所需移動(dòng)的磁道數(shù)。

      啟動(dòng)磁盤(pán)執(zhí)行輸入輸出操作時(shí),要把移動(dòng)臂移動(dòng)到指定的柱面,再等待指定扇區(qū)的旋轉(zhuǎn)到磁頭位置下,然后讓指定的磁頭進(jìn)行讀寫(xiě),完成信息傳送。因此,執(zhí)行一次輸入輸出所花的時(shí)間有:

      尋找時(shí)間——磁頭在移動(dòng)臂帶動(dòng)下移動(dòng)到指定柱面所花的時(shí)間。

      延遲時(shí)間——指定扇區(qū)旋轉(zhuǎn)到磁頭下所需的時(shí)間。

      傳送時(shí)間——由磁頭進(jìn)程讀寫(xiě)完成信息傳送的時(shí)間。

      其中傳送信息所花的時(shí)間,是在硬件設(shè)計(jì)就固定的。而尋找時(shí)間和延遲時(shí)間是與信息在磁盤(pán)上的位置有關(guān)。

      為了減少移動(dòng)臂進(jìn)行移動(dòng)花費(fèi)的時(shí)間,每個(gè)文件的信息不是按盤(pán)面上的磁道順序存放滿(mǎn)一個(gè)盤(pán)面后,再放到下一個(gè)盤(pán)面上。而是按柱面存放,同一柱面上的各磁道被放滿(mǎn)信息后,再放到下一個(gè)柱面上。所以各磁盤(pán)的編號(hào)按柱面順序(從0號(hào)柱面開(kāi)始),每個(gè)柱面按磁道順序,每個(gè)磁道又按扇區(qū)順序進(jìn)行排序。

      四:算法實(shí)現(xiàn)

      1.先來(lái)先服務(wù)算法(FCFS)

      先來(lái)先服務(wù)(FCFS)調(diào)度:按先來(lái)后到次序服務(wù),未作優(yōu)化。最簡(jiǎn)單的移臂調(diào)度算法是“先來(lái)先服務(wù)”調(diào)度算法,這個(gè)算法實(shí)際上不考慮訪(fǎng)問(wèn)者要求訪(fǎng)問(wèn)的物理位置,而只是考慮訪(fǎng)問(wèn)者提出訪(fǎng)問(wèn)請(qǐng)求的先后次序。例如,如果現(xiàn)在讀寫(xiě)磁頭正在50號(hào)柱面上執(zhí)行輸出操作,而等待訪(fǎng)問(wèn)者依次要訪(fǎng)問(wèn)的柱面為130、199、32、159、15、148、61、99,那么,當(dāng)50號(hào)柱面上的操作結(jié)束后,移動(dòng)臂將按請(qǐng)求的先后次序先移到130號(hào)柱面,最后到達(dá)99號(hào)柱面。采用先來(lái)先服務(wù)算法決定等待訪(fǎng)問(wèn)者執(zhí)行輸入輸出操作的次序時(shí),移動(dòng)臂來(lái)回地移動(dòng)。先來(lái)先服務(wù)算法花費(fèi)的尋找時(shí)間較長(zhǎng),所以執(zhí)行輸入輸出操作的總時(shí)間也很長(zhǎng)。

      2.短尋道時(shí)間優(yōu)先算法(SSTF)

      最短尋找時(shí)間優(yōu)先調(diào)度算法總是從等待訪(fǎng)問(wèn)者中挑選尋找時(shí)間最短的那個(gè)請(qǐng)求先執(zhí)行的,而不管訪(fǎng)問(wèn)者到來(lái)的先后次序?,F(xiàn)在仍利用同一個(gè)例子來(lái)討論,現(xiàn)在當(dāng)50號(hào)柱面的操作結(jié)束后,應(yīng)該先處理61號(hào)柱面的請(qǐng)求,然后到達(dá)32號(hào)柱面執(zhí)行操作,隨后處理15號(hào)柱面請(qǐng)求,后繼操作的次序應(yīng)該是99、130、148、159、199。

      采用最短尋找時(shí)間優(yōu)先算法決定等待訪(fǎng)問(wèn)者執(zhí)行操作的次序時(shí),讀寫(xiě)磁頭總共移動(dòng)了200多個(gè)柱面的距離,與先來(lái)先服務(wù)、算法比較,大幅度地減少了尋找時(shí)間,因而縮短了為各訪(fǎng)問(wèn)者請(qǐng)求服務(wù)的平均時(shí)間,也就提高了系統(tǒng)效率。但最短查找時(shí)間優(yōu)先(SSTF)調(diào)度,F(xiàn)CFS會(huì)引起讀寫(xiě)頭在盤(pán)面上的大范圍移動(dòng),SSTF查找距離磁頭最短(也就是查找時(shí)間最短)的請(qǐng)求作為下一次服務(wù)的對(duì)象。SSTF查找模式有高度局部化的傾向,會(huì)推遲一些請(qǐng)求的服務(wù),甚至引起無(wú)限拖延(又稱(chēng)饑餓)。

      3.掃描算法(SCAN)

      SCAN 算法又稱(chēng)電梯調(diào)度算法。SCAN算法是磁頭前進(jìn)方向上的最短查找時(shí)間優(yōu)先算法,它排除了磁頭在盤(pán)面局部位置上的往復(fù)移動(dòng),SCAN算法在很大程度上消除了SSTF算法的不公平性,但仍有利于對(duì)中間磁道的請(qǐng)求。

      “電梯調(diào)度”算法是從移動(dòng)臂當(dāng)前位置開(kāi)始沿著臂的移動(dòng)方向去選擇離當(dāng)前移動(dòng)臂最近的那個(gè)柱訪(fǎng)問(wèn)者,如果沿臂的移動(dòng)方向無(wú)請(qǐng)求訪(fǎng)問(wèn)時(shí),就改變臂的移動(dòng)方向再選擇。這好比乘電梯,如果電梯已向上運(yùn)動(dòng)到4層時(shí),依次有3位乘客陳生、伍生、張生在等候乘電梯。他們的要求是:陳生在2層等待去10層;伍生在5層等待去底層;張生在8層等待15層。由于電梯目前運(yùn)動(dòng)方向是向上,所以電梯的形成是先把乘客張生從8層帶到15層,然后電梯換成下行方向,把乘客伍生從5層帶到底層,電梯最后再調(diào)換方向,把乘客陳生從2層送到10層。

      我們?nèi)杂们笆龅耐焕觼?lái)討論采用“電梯調(diào)度”算法的情況。由于磁盤(pán)移動(dòng)臂的初始方向有兩個(gè),而該算法是與移動(dòng)臂方向有關(guān),所以分成兩種情況來(lái)討論。

      〈1〉.移動(dòng)臂由里向外移動(dòng)

      開(kāi)始時(shí),在50號(hào)柱面執(zhí)行操作的讀寫(xiě)磁頭的移動(dòng)臂方向是由里向外,趨向32號(hào)柱面的位置,因此,當(dāng)訪(fǎng)問(wèn)50號(hào)柱面的操作結(jié)束后,沿臂移動(dòng)方向最近的柱面是32號(hào)柱面。所以應(yīng)先為32號(hào)柱面的訪(fǎng)問(wèn)者服務(wù),然后是為15號(hào)柱面的訪(fǎng)問(wèn)者服務(wù)。之后,由于在向外移方向已無(wú)訪(fǎng)問(wèn)等待者,故改變移動(dòng)臂的方向,由外向里依次為各訪(fǎng)問(wèn)者服務(wù)。在這種情況下為等待訪(fǎng)問(wèn)者服務(wù)的次序是61、99、130、148、159、199。

      〈2〉.移動(dòng)臂由外向里移動(dòng)

      開(kāi)始時(shí),正在50號(hào)柱面執(zhí)行操作的讀寫(xiě)磁頭的移動(dòng)臂是由外向里(即向柱面號(hào)增大的內(nèi)圈方向)趨向61號(hào)柱面的位置,因此,當(dāng)訪(fǎng)問(wèn)50號(hào)柱面的操作結(jié)束后,沿臂移動(dòng)方向最近的柱面是61號(hào)柱面。所以,應(yīng)先為61號(hào)柱面服務(wù),然后按移動(dòng)臂由外向里移動(dòng)的方向,依次為99、130、148、159、199柱面的訪(fǎng)問(wèn)者服務(wù)。當(dāng)201號(hào)柱面的操作結(jié)束后,向里移動(dòng)的方向已經(jīng)無(wú)訪(fǎng)問(wèn)等待者,所以改變移動(dòng)臂的前進(jìn)方向,由里向外依次為32、15柱面的訪(fǎng)問(wèn)者服務(wù)。

      “電梯調(diào)度”與“最短尋找時(shí)間優(yōu)先”都是要盡量減少移動(dòng)臂時(shí)所花的時(shí)間。所不同的是:“最短尋找時(shí)間優(yōu)先”不考慮臂的移動(dòng)方向,總是選擇離當(dāng)前讀寫(xiě)磁頭最近的那個(gè)柱面,這種選擇可能導(dǎo)致移動(dòng)臂來(lái)回改變移動(dòng)方向;“電梯調(diào)度”是沿著臂的移動(dòng)方向去選擇離當(dāng)前讀寫(xiě)詞頭最近的哪個(gè)柱面的訪(fǎng)問(wèn)者,僅當(dāng)沿移動(dòng)臂的前進(jìn)移動(dòng)方向無(wú)訪(fǎng)問(wèn)等待者時(shí),才改變移動(dòng)臂的前進(jìn)方向。由于移動(dòng)臂改變方向是機(jī)械動(dòng)作,速度相對(duì)較慢,所以,電梯調(diào)度算法是一種簡(jiǎn)單、使用且高效的調(diào)度算法。

      但是,“電梯調(diào)度”算法在實(shí)現(xiàn)時(shí),不僅要記住讀寫(xiě)磁頭的當(dāng)前位置,還必須記住移動(dòng)臂的當(dāng)前前進(jìn)方向。

      4.循環(huán)掃描算法(CSCAN)

      單項(xiàng)掃描調(diào)度算法的基本思想是,不考慮訪(fǎng)問(wèn)者等待的先后次序,總是從0號(hào)柱面開(kāi)始向里道掃描,按照各自所要訪(fǎng)問(wèn)的柱面位置的次序去選擇訪(fǎng)問(wèn)者。在移動(dòng)臂到達(dá)最后一個(gè)柱面后,立即快速返回到0號(hào)柱面,返回時(shí)不為任何的訪(fǎng)問(wèn)者等待服務(wù)。在返回到0號(hào)柱面后,再次進(jìn)行掃描。

      由于該例中已假定讀寫(xiě)的當(dāng)前位置在50號(hào)柱面,所以,指示了從50號(hào)柱面繼續(xù)向里掃描,依次為61、99、130、148、159、199各柱面的訪(fǎng)問(wèn)者服務(wù),此時(shí)移動(dòng)臂已經(jīng)是最內(nèi)的柱面,于是立即返回到0號(hào)柱面,重新掃描,依次為15、32號(hào)柱面的訪(fǎng)問(wèn)者服務(wù)。

      除了“先來(lái)先服務(wù)”調(diào)度算法外,其余三種調(diào)度算法都是根據(jù)欲訪(fǎng)問(wèn)的柱面位置來(lái)繼續(xù)調(diào)度的。在調(diào)度過(guò)程中可能有新的請(qǐng)求訪(fǎng)問(wèn)者加入。在這些新的請(qǐng)求訪(fǎng)問(wèn)者加入時(shí),如果讀寫(xiě)已經(jīng)超過(guò)了它們所要訪(fǎng)問(wèn)的柱面位置,則只能在以后的調(diào)度中被選擇執(zhí)行。在多道程序設(shè)計(jì)系統(tǒng)中,在等待訪(fǎng)問(wèn)磁盤(pán)的若干訪(fǎng)問(wèn)者請(qǐng)求中,可能要求訪(fǎng)問(wèn)的柱面號(hào)相同,但在同一柱面上的不同磁道,或訪(fǎng)問(wèn)同一柱面中同一磁道上的不同扇區(qū)。所以,在進(jìn)行移動(dòng)調(diào)度時(shí),在按照某種短法把移動(dòng)臂定位到某個(gè)柱面后,應(yīng)該在等待訪(fǎng)問(wèn)這個(gè)柱面的各個(gè)訪(fǎng)問(wèn)者的輸入輸出操作都完成之后,再改變移動(dòng)臂的位置。

      五:實(shí)現(xiàn)代碼

      #include #include void FCFS(int b[],int n,int init)//先來(lái)先服務(wù) { int i,s,sum;int a[20];for(i=0;i

      printf(“第%d次訪(fǎng)問(wèn)的磁道:%dn”,i+1,a[i]);

      sum+=abs(s-a[i]);

      s=a[i];} printf(“平均尋道長(zhǎng)度:%fn”,sum*1.0/n);} void SSTF(int b[],int n,int k)//最短尋道法 { int i,j,s,sum=0,p;int a[20];for(i=0;i=0;i--){

      s=a[0];

      p=0;

      for(j=0;j<=i;j++)

      if(abs(a[j]-k)

      {

      s=a[j];

      p=j;

      }

      a[p]=a[i];

      printf(“第%d次訪(fǎng)問(wèn)的磁道:%dn”,n-i,s);

      sum+=abs(s-k);

      k=s;} printf(“平均尋道長(zhǎng)度:%fn”,sum*1.0/n);}

      void SCAN1(int b[],int n,int k)//掃描算法 { int i,j,s,sum=0,p,biaoji;int a[20];for(i=0;i=0;i--){

      biaoji=0;

      for(j=0;j<=i;j++)

      if(a[j]-k<0)

      {

      biaoji=1;

      p=j;

      break;

      }

      if(biaoji==1)

      {

      s=a[p];

      for(j=0;j<=i;j++)

      if(a[j]

      {

      s=a[j];

      p=j;

      }

      a[p]=a[i];

      printf(“第%d次訪(fǎng)問(wèn)的磁道:%dn”,n-i,s);

      sum+=k-s;

      k=s;

      }

      else

      {

      s=a[0];

      for(j=0;j<=i;j++)

      if(a[j]-k<=s-k)

      {

      s=a[j];

      p=j;

      }

      a[p]=a[i];

      printf(“第%d次訪(fǎng)問(wèn)的磁道:%dn”,n-i,s);

      sum+=abs(k-s);

      k=s;

      } } printf(“平均尋道長(zhǎng)度:%fn”,sum*1.0/n);}

      void SCAN2(int b[],int n,int k)//循環(huán)算法 { int i,j,s,sum=0,p,biaoji;int a[20];for(i=0;i=0;i--){

      biaoji=0;

      for(j=0;j<=i;j++)

      if(a[j]-k>0)

      {

      biaoji=1;

      p=j;

      break;

      }

      if(biaoji==1)

      {

      s=a[p];

      for(j=0;j<=i;j++)

      if(a[j]>k&&a[j]-k

      {

      s=a[j];

      p=j;

      }

      a[p]=a[i];

      printf(“第%d次訪(fǎng)問(wèn)的磁道:%dn”,n-i,s);

      sum+=s-k;

      k=s;

      }

      else

      {

      s=a[0];

      for(j=0;j<=i;j++)

      if(k-a[j]<=k-s)

      {

      s=a[j];

      p=j;

      }

      a[p]=a[i];

      printf(“第%d次訪(fǎng)問(wèn)的磁道:%dn”,n-i,s);

      sum+=abs(k-s);

      k=s;

      } } printf(“平均尋道長(zhǎng)度:%fn”,sum*1.0/n);}

      void C_SCAN(int b[],int n,int k)//循環(huán)算法 { int i,j,s,sum=0,p,biaoji;int a[20];for(i=0;i=0;i--){

      biaoji=0;

      for(j=0;j<=i;j++)

      if(a[j]-k>0)

      {

      biaoji=1;

      p=j;

      break;

      }

      if(biaoji==1)

      } { s=a[p];for(j=0;j<=i;j++)if(a[j]>k&&a[j]-k

      for(;i>=0;i--){ s=a[0];for(j=0;j<=i;j++)if(a[j]-k

      {

      s=a[j];

      p=j;

      } a[p]=a[i];printf(“第%d次訪(fǎng)問(wèn)的磁道:%dn”,n-i,s);sum+=s-k;k=s;} printf(“平均尋道長(zhǎng)度:%fn”,sum*1.0/n);

      void main(){ int a[20];int i,n,k,k1,init;printf(“請(qǐng)輸入需要訪(fǎng)問(wèn)的磁道總數(shù):”);scanf(“%d”,&n);for(i=0;i

      printf(“需要訪(fǎng)問(wèn)的磁道%d:”,i+1);

      scanf(“%d”,&a[i]);} printf(“請(qǐng)輸入指針?biāo)诖诺?”);scanf(“%d”,&init);k=1;while(k){

      printf(“**********************************n”);

      printf(“$$$$$$$$$$劉清元——磁盤(pán)調(diào)度$$$$$$$$$n”);

      printf(“** 1.先來(lái)先服務(wù)(FCFS)**n”);

      printf(“** 2.最短尋道時(shí)間優(yōu)先(SSTF)**n”);

      printf(“** 3.掃描算法(SCAN)**n”);

      printf(“** 4.循環(huán)算法(C-SCAN)**n”);

      printf(“** 0.退出 **n”);

      printf(“**********************************n”);

      printf(“&&&&&&&&&&&&謝謝使用&&&&&&&&&&&&&&n”);

      printf(“請(qǐng)?jiān)谙旅孑斎肽倪x擇:”);

      scanf(“%d”,&k);

      switch(k)

      {

      case 1:FCFS(a,n,init);break;

      case 2:SSTF(a,n,init);break;

      case 3:k1=1;

      while(k1)

      {

      printf(“*********************************n”);

      printf(“

      #劉清元——磁盤(pán)調(diào)度

      ###n”);

      printf(“**** 1.移動(dòng)臂由里向外 **n”);

      printf(“**** 2.移動(dòng)臂由外向里 **n”);

      printf(“**** 0.返回上一層 **n”);

      printf(“*********************************n”);

      printf(“

      ######謝謝使用

      #####n”);

      printf(“請(qǐng)?jiān)谙旅孑斎肽倪x擇:”);

      }

      }

      } scanf(“%d”,&k1);switch(k1){ case 1:SCAN1(a,n,init);break;case 2:SCAN2(a,n,init);break;} } break;case 4:C_SCAN(a,n,init);break;六:運(yùn)行結(jié)果

      1.輸入數(shù)據(jù),選擇調(diào)度方法

      2.先來(lái)先服務(wù)

      3最短尋道時(shí)間優(yōu)先

      4循環(huán)算法

      5.循環(huán)算法

      (1)磁頭由里向外移動(dòng)

      (2)磁頭由外向里移動(dòng)

      七:心得體會(huì)

      通過(guò)此次課程設(shè)計(jì),我明白了實(shí)踐的意義,要把書(shū)本上的知識(shí)轉(zhuǎn)換為現(xiàn)實(shí)中的成果,創(chuàng)新與不懈的努力也是成功的重要因素。如果沒(méi)有一定的耐心,這次的課程設(shè)計(jì)也不能成功。

      “磁盤(pán)調(diào)度”是我本學(xué)期操作系統(tǒng)課程設(shè)計(jì)的題目。在設(shè)計(jì)此程序的過(guò)程中,我遇到過(guò)許多問(wèn)題,也學(xué)到了很多東西。

      本程序的設(shè)計(jì)實(shí)現(xiàn)主要是用C++語(yǔ)言實(shí)現(xiàn),通過(guò)對(duì)程序算法的設(shè)計(jì)優(yōu)化、輸出顯示的格式設(shè)計(jì)、輸入過(guò)程中的異常處理等一些設(shè)計(jì)過(guò)程中的問(wèn)題的考慮解決,在C++學(xué)習(xí)上也有了很大的進(jìn)步。

      在程序設(shè)計(jì)中先后參考了很多網(wǎng)絡(luò)資料,也參考了一些別人寫(xiě)的的程序,綜合這些算法思想和自己的思路對(duì)程序做了很好的設(shè)計(jì)方式,對(duì)一些算法的優(yōu)越性等也作了一些考慮。此外考慮最多的就是異常錯(cuò)誤處理的設(shè)計(jì)。在設(shè)置程序的顯示優(yōu)化時(shí),發(fā)現(xiàn)暫停函數(shù)在不同的情況下執(zhí)行順序不同,如此等等

      下載軟件工程試驗(yàn)報(bào)告word格式文檔
      下載軟件工程試驗(yàn)報(bào)告.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        電子政務(wù)試驗(yàn)報(bào)告

        電子政務(wù)試驗(yàn)報(bào)告 一.試驗(yàn)時(shí)間:第十周 二.試驗(yàn)地點(diǎn):05612 三.試驗(yàn)?zāi)康暮鸵螅?1、本次模擬實(shí)習(xí)選擇的電子政務(wù)實(shí)踐平臺(tái)是奧派電子政務(wù)實(shí)踐平臺(tái),通過(guò)在這個(gè)相對(duì)完整的電子政務(wù)系統(tǒng)上......

        工藝試驗(yàn)報(bào)告

        湘潭大學(xué) 材料與光電物理學(xué)院 IC 工 藝 實(shí) 驗(yàn) 報(bào) 告 學(xué)生姓名: 學(xué)生學(xué)號(hào): 專(zhuān)業(yè)年級(jí): 實(shí)習(xí)單位: 實(shí)習(xí)時(shí)間:輔導(dǎo)老師: 2014年8月28日 本次實(shí)習(xí)在長(zhǎng)沙韶光半導(dǎo)體公司開(kāi)展,長(zhǎng)沙韶光半......

        電子商務(wù)B2C試驗(yàn)報(bào)告

        電子商務(wù)B2C 實(shí)驗(yàn)報(bào)告 姓名: 龔 超 凡 班級(jí): 0301007班 學(xué)號(hào): 2010211415 時(shí)間:2011年12月4日一、實(shí)驗(yàn)?zāi)康模?B2C是在企業(yè)與消費(fèi)者之間通過(guò)Internet網(wǎng)進(jìn)行商務(wù)活動(dòng)的電子商務(wù)模式,......

        聯(lián)合排水試驗(yàn)報(bào)告

        納雍縣中井煤礦 聯(lián)合排水試驗(yàn)報(bào)告 2013年 3 月 5 日 納雍縣中井煤礦聯(lián)合排水試驗(yàn)報(bào)告 根據(jù)《煤礦安全規(guī)程》規(guī)定,在煤礦的采掘過(guò)程中,都會(huì)有涌水滲出。為保證煤礦的安全生產(chǎn),......

        綜合保護(hù)裝置試驗(yàn)報(bào)告

        綜合保護(hù)裝置試驗(yàn)報(bào)告濕度:溫度: 工程名稱(chēng):?jiǎn)卧Q(chēng):1.銘牌:2.上電檢查:2.1/自啟動(dòng)試驗(yàn):2.2/CRC碼檢驗(yàn):2.3/定值輸入/固化/頁(yè)號(hào)變化檢查:3/模擬量輸入檢查:3.1/零源檢查:3.2/電流/電壓......

        西蘭花密度試驗(yàn)報(bào)告

        西蘭花密度試驗(yàn)報(bào)告 西蘭花又叫青菜花,在我市栽培較少。隨著人民生活水平的提高和消費(fèi)習(xí)慣的改變,其栽培面積有逐年擴(kuò)大的趨勢(shì)。今年我們?cè)跊鲋輩^(qū)中路鄉(xiāng)進(jìn)行了西蘭花密度試驗(yàn),......

        鹽堿地改良試驗(yàn)報(bào)告

        禾康鹽堿清除劑效果試驗(yàn)報(bào)告 土壤鹽堿化是制約農(nóng)作物產(chǎn)量增加的重要因素。長(zhǎng)期以來(lái),改良鹽堿地大多是以挖排水渠、泡田洗鹽等常規(guī)農(nóng)業(yè)措施清除土壤鹽堿,但常常出現(xiàn)改良周期......

        電子商務(wù)B2C試驗(yàn)報(bào)告

        電子商務(wù)B2C實(shí)驗(yàn)報(bào)告 新科學(xué)院經(jīng)管系 國(guó)貿(mào)096 李冰洋 2009050710 實(shí)驗(yàn)報(bào)告的名稱(chēng):電子商務(wù)B2C 實(shí)驗(yàn)報(bào)告的時(shí)間:2012,03,7 實(shí)驗(yàn)報(bào)告的目的:充分了解電子商務(wù)的實(shí)際運(yùn)用和操作,親自......