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

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

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

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

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

      語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)(2009年8月版)(5篇)

      時(shí)間:2019-05-12 05:41:37下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)(2009年8月版)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)(2009年8月版)》。

      第一篇:語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)(2009年8月版)

      匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)

      何立新 編著

      合肥學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)系 體系結(jié)構(gòu)教研室

      2009年8月

      目 錄

      實(shí)驗(yàn)一 熟悉匯編語(yǔ)言程序上機(jī)過(guò)程和調(diào)試匯編程序的方法..............1 實(shí)驗(yàn)二 簡(jiǎn)單程序設(shè)計(jì)..............................................................................3 實(shí)驗(yàn)三 循環(huán)程序設(shè)計(jì)..............................................................................4 實(shí)驗(yàn)四 分支程序設(shè)計(jì)..............................................................................5 實(shí)驗(yàn)五 子程序設(shè)計(jì)..................................................................................6 實(shí)驗(yàn)六 宏匯編程序設(shè)計(jì)..........................................................................7 實(shí)驗(yàn)七 綜合程序設(shè)計(jì)..............................................................................8 附件1 常用的DOS系統(tǒng)功能調(diào)用.......................................................9 附件2 DEBUG的常用命令與使用.....................................................10 附件3 匯編程序出錯(cuò)信息...................................................................17

      合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系

      實(shí)驗(yàn)一 熟悉匯編語(yǔ)言程序上機(jī)過(guò)程和調(diào)試匯編程序的方法

      班級(jí): 姓名: 學(xué)號(hào): 得分: 一.實(shí)驗(yàn)?zāi)康? 1.掌握匯編語(yǔ)言源程序由編輯、匯編、鏈接到調(diào)試的全過(guò)程。2.掌握常用的debug命令,通過(guò)匯編調(diào)試工具加深對(duì)機(jī)器指令執(zhí)行過(guò)程的了解。二.實(shí)驗(yàn)內(nèi)容: 1.輸入給定的程序,完成由編輯、編譯、鏈接到調(diào)試的全過(guò)程。2.用匯編調(diào)試工具軟件DEBUG對(duì).EXE文件進(jìn)行調(diào)試,在調(diào)試過(guò)程中應(yīng)使用單步、斷點(diǎn)等方法調(diào)試,注意觀察寄存器、標(biāo)志位和有關(guān)存儲(chǔ)器內(nèi)容的變化。

      3.利用DEBUG加深對(duì)機(jī)器指令的了解。三.實(shí)驗(yàn)儀器: PC 機(jī) 四.實(shí)驗(yàn)步驟:(1)建立匯編語(yǔ)言的工作環(huán)境

      為了運(yùn)行匯編語(yǔ)言程序至少要在磁盤(pán)上建立以下文件 ? 編輯程序,如EDIT.EXE,記事本,寫(xiě)字板等 ? 匯編程序,如MASM.EXE ? 連接程序,如LINK.EXE ? 調(diào)試程序,如DEBUG.COM

      (2)建立匯編語(yǔ)言源程序

      源程序文件要以ASM為擴(kuò)展名,源程序文件的形成(編輯)可以通過(guò)任何一個(gè)文本編輯器實(shí)現(xiàn)。

      (3)源程序的匯編

      匯編是將源程序翻譯成由機(jī)器代碼組成的目標(biāo)模塊文件的過(guò)程。使用提供的匯編程序是MASM.EXE:如果源程序中沒(méi)有語(yǔ)法錯(cuò)誤,MASM將自動(dòng)生成一個(gè)目標(biāo)模塊文件(test01.obj),否則MASM將給出相應(yīng)的錯(cuò)誤信息。這時(shí)應(yīng)根據(jù)錯(cuò)誤信息,重新編輯修改源程序后,再進(jìn)行匯編。

      (4)目標(biāo)模塊的連接

      連接程序link.exe能把一個(gè)或多個(gè)目標(biāo)文件和庫(kù)文件合成一個(gè)可執(zhí)行程序(.EXE、.COM文件)。如果沒(méi)有嚴(yán)重錯(cuò)誤,LINK將生成一個(gè)可執(zhí)行文件(.exe);否則將提示相應(yīng)的錯(cuò)誤信息。這時(shí)需要根據(jù)錯(cuò)誤信息重新修改源程序后再匯編、鏈接,直到生成可執(zhí)行文件。

      匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)

      (5)程序的運(yùn)行

      經(jīng)匯編、連接生成的可執(zhí)行程序在DOS操作系統(tǒng)下只要輸入文件名就可以運(yùn)行。

      如果出現(xiàn)運(yùn)行錯(cuò)誤,可以從源程序開(kāi)始排錯(cuò),也可以利用DEBUG調(diào)試程序幫助發(fā)現(xiàn)錯(cuò)誤。

      五.實(shí)驗(yàn)結(jié)果與討論 六.心得體會(huì)

      合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系

      實(shí)驗(yàn)二 簡(jiǎn)單程序設(shè)計(jì)

      班級(jí): 姓名: 學(xué)號(hào): 得分: 一.實(shí)驗(yàn)?zāi)康? 1.掌握匯編語(yǔ)言源程序的格式和順序程序設(shè)計(jì)方法。

      2.用所學(xué)的匯編指令和偽指令進(jìn)行簡(jiǎn)單的編程,達(dá)到加深對(duì)所學(xué)指令和偽指令的理解。

      3.學(xué)會(huì)使用dos 系統(tǒng)功能調(diào)用。4.對(duì)DEBUG的使用達(dá)到熟練的程度。二.實(shí)驗(yàn)內(nèi)容: 1. 編程實(shí)現(xiàn):在屏幕上顯示字符串“Beijing,China,2008!”。2. 編程實(shí)現(xiàn):兩個(gè)字節(jié)數(shù)(如12h和34h)相加,并將結(jié)果顯示出來(lái)。三.實(shí)驗(yàn)儀器: PC 機(jī) 四.實(shí)驗(yàn)步驟: 五.實(shí)驗(yàn)結(jié)果與討論 六.心得體會(huì)

      匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)

      實(shí)驗(yàn)三 循環(huán)程序設(shè)計(jì)

      班級(jí): 姓名: 學(xué)號(hào): 得分: 一.實(shí)驗(yàn)?zāi)康? 1.掌握單重循環(huán)程序和多重循環(huán)程序的結(jié)構(gòu)、設(shè)計(jì)方法和調(diào)試方法。2.熟練掌握l(shuí)oop、loope、loopne等指令的使用,并掌握用重復(fù)前綴指令、控制轉(zhuǎn)移指令實(shí)現(xiàn)循環(huán)。二.實(shí)驗(yàn)內(nèi)容: 1.編程實(shí)現(xiàn):從一個(gè)字節(jié)字符串中查找字符‘#’,如果查到則將其偏移地址送到存儲(chǔ)單元addr中,否則將0送到addr中。

      2.編程實(shí)現(xiàn):統(tǒng)計(jì)存儲(chǔ)下列給定字符串的數(shù)據(jù)塊中所有的“0”位的個(gè)數(shù),并

      將統(tǒng)計(jì)的結(jié)果送入COUNT存儲(chǔ)單元。

      “十七大的主要議程是:聽(tīng)取和審議黨的十六屆中央委員會(huì)的報(bào)告,審議中央紀(jì)律檢查委員會(huì)的工作報(bào)告,審議并通過(guò)《中國(guó)共產(chǎn)黨章程(修正案)》,選舉黨的十七屆中央委員會(huì),選舉中央紀(jì)律檢查委員會(huì)?!?三.實(shí)驗(yàn)儀器: PC 機(jī) 四.實(shí)驗(yàn)步驟: 五.實(shí)驗(yàn)結(jié)果與討論 六.心得體會(huì)

      合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系

      實(shí)驗(yàn)四 分支程序設(shè)計(jì)

      班級(jí): 姓名: 學(xué)號(hào): 得分: 一.實(shí)驗(yàn)?zāi)康? 1.掌握分支程序的結(jié)構(gòu),分支程序的設(shè)計(jì)和調(diào)試方法。

      2.掌握利用條件轉(zhuǎn)移指令、跳躍表、邏輯尺等方法實(shí)現(xiàn)程序的分支。二.實(shí)驗(yàn)內(nèi)容: 1.設(shè)有16個(gè)學(xué)生的成績(jī)分別如下:56,78,83,67,39,48,95,76,86,62,100,57,85,82,71,92。試編程分別統(tǒng)計(jì)低于60分,60-69、70-79、80-89、90-99及100分的人數(shù),并存放到S5,S6,S7,S8,S9及S10單元中。2.編程實(shí)現(xiàn):在X、Y和Z單元中分別存放一個(gè)無(wú)符號(hào)的字節(jié)數(shù),編程求出其它們中的最大值,并將最大值存入MAX單元中。(設(shè)X = 68, Y = 196, Z = 98)三.實(shí)驗(yàn)儀器: PC 機(jī) 四.實(shí)驗(yàn)步驟: 五.實(shí)驗(yàn)結(jié)果與討論 六.心得體會(huì)

      匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)

      實(shí)驗(yàn)五 子程序設(shè)計(jì)

      班級(jí): 姓名: 學(xué)號(hào): 得分: 一.實(shí)驗(yàn)?zāi)康? 1.掌握子程序的定義和調(diào)用方法。

      2.掌握子程序設(shè)計(jì)方法,學(xué)會(huì)子程序的功能劃分和正確進(jìn)行子程序的參數(shù)傳遞。

      3.掌握子程序的多種參數(shù)傳遞方法。二.實(shí)驗(yàn)內(nèi)容: 編程實(shí)現(xiàn):十進(jìn)制到十六進(jìn)制的轉(zhuǎn)換。要求如下:

      1.從鍵盤(pán)輸入一個(gè)十進(jìn)制數(shù),然后以十六進(jìn)制在屏幕上顯示; 2.能連續(xù)多次轉(zhuǎn)換輸入的十進(jìn)制數(shù),以回車(chē)鍵作為輸入十進(jìn)制數(shù)的結(jié)束;

      3.若鍵盤(pán)輸入的不是數(shù)字,則在屏幕上提示:“the input is not a number, again , please!” 4.鍵入‘q’鍵則可退出程序。

      三.實(shí)驗(yàn)儀器: PC 機(jī) 四.實(shí)驗(yàn)步驟: 五.實(shí)驗(yàn)結(jié)果與討論 六.心得體會(huì)

      合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系

      實(shí)驗(yàn)六 宏匯編程序設(shè)計(jì)

      班級(jí): 姓名: 學(xué)號(hào): 得分: 一.實(shí)驗(yàn)?zāi)康? 1.掌握宏匯編程序設(shè)計(jì)方法。2. 利用建立的宏庫(kù)文件進(jìn)行文件訪問(wèn)。

      3. 通過(guò)和子程序技術(shù)的比較,加深對(duì)宏匯編技術(shù)的理解,提高編程技巧。

      二.實(shí)驗(yàn)內(nèi)容(任選一題): 1.實(shí)現(xiàn)字符串的傳遞,(mess1? mess3;mess2?mess4),傳遞完畢顯示字符串,每顯示一個(gè)字符串后要回車(chē)換行。要求:建立一個(gè)宏庫(kù)mylib.mac,該宏庫(kù)至少包括如下三個(gè)宏:1 傳遞過(guò)程宏 move;2 顯示字符串宏 disp;3 回車(chē)換行宏 crlf。

      如: mess1: “how beautiful world!”

      Mess2: “we should protect it!”

      三.實(shí)驗(yàn)儀器: PC 機(jī) 四.實(shí)驗(yàn)步驟: 五.實(shí)驗(yàn)結(jié)果與討論 六.心得體會(huì)

      匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)

      實(shí)驗(yàn)七 綜合程序設(shè)計(jì)

      班級(jí): 姓名: 學(xué)號(hào): 得分: 一.實(shí)驗(yàn)?zāi)康? 訓(xùn)練綜合使用本課程中介紹的順序、分支、循環(huán)、子程序和宏匯編等多種方法解決程序設(shè)計(jì)問(wèn)題,進(jìn)一步提高編程能力。

      二.實(shí)驗(yàn)內(nèi)容(任選一題): 1.編寫(xiě)一個(gè)完整的程序:

      主程序MAINPRO允許用戶在鍵盤(pán)上輸入零件數(shù)量和總價(jià)格; 子程序SUBCONV 把從鍵盤(pán)輸入的ASCII 碼轉(zhuǎn)化為二進(jìn)制; 子程序 SUBCALC 計(jì)算出零件的單價(jià);

      子程序 SUBDISP 把二進(jìn)制表示的單價(jià)轉(zhuǎn)化為十進(jìn)制數(shù)并顯示出結(jié)果。

      要求:在程序設(shè)計(jì)時(shí)要求使用順序、分支、循環(huán)、子程序和宏匯編等多種方法解決程序設(shè)計(jì)問(wèn)題,對(duì)于較大的子程序最好使用子程序嵌套,程序中如有多次重復(fù)的代碼最好使用重復(fù)匯編。

      三.實(shí)驗(yàn)儀器: PC 機(jī) 四.實(shí)驗(yàn)步驟: 五.實(shí)驗(yàn)結(jié)果與討論 六.心得體會(huì)

      合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系

      附件1 常用的DOS系統(tǒng)功能調(diào)用

      1.單字符輸入(1號(hào)調(diào)用)格式:MOV AH,1

      INT 21H 功能:從鍵盤(pán)輸入字符的ASCII碼送入寄存器AL中,并送顯示器顯示。

      2.單字符顯示(2號(hào)調(diào)用)

      格式:MOV DL,待顯示字符的ASCII碼

      MOV AH,2

      INT

      21H 功能:將DL寄存器中的字符送顯示器顯示.3.打印輸出(5號(hào)調(diào)用)

      格式:MOV DL,待打印字符的ASCII碼

      MOV AH,5

      INT 21H 功能:將DL寄存器中的字符送打印機(jī)打印。

      4.結(jié)束調(diào)用(4CH號(hào)調(diào)用)格式:MOV AH,4CH

      INT 21H 功能:終止當(dāng)前程序并返回調(diào)用程序。

      5.顯示字符串(9號(hào)調(diào)用)

      格式:LEA DX,待顯示字符串首偏移地址

      MOV AH,9

      INT 21H 功能:將當(dāng)前數(shù)據(jù)區(qū)中以‘$’結(jié)尾的字符串送顯示器顯示。

      6.字符串輸入(10號(hào)調(diào)用)

      格式:LEA DX,緩沖區(qū)首偏移地址

      MOV AH,10

      INT 21H 功能:從鍵盤(pán)上輸入一字符串到用戶定義的輸入緩沖區(qū)中,并送顯示器顯示。

      匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)

      附件2 DEBUG的常用命令與使用

      在編寫(xiě)和運(yùn)行匯編程序的過(guò)程中,會(huì)遇到一些錯(cuò)誤和問(wèn)題,需要對(duì)程序進(jìn)行分析和調(diào)試,調(diào)試程序 DEBUG 就是專為匯編語(yǔ)言設(shè)計(jì)的一種調(diào)試工具。它在調(diào)試匯編語(yǔ)言程序時(shí)有很強(qiáng)的功能,能使程序設(shè)計(jì)者接觸到機(jī)器內(nèi)部,能觀察和修改寄存器和存儲(chǔ)單元內(nèi)容,并能監(jiān)視目標(biāo)程序的執(zhí)行情況,使用戶真正接觸到 CPU 內(nèi)部,與計(jì)算機(jī)產(chǎn)生最緊密的工作聯(lián)系。動(dòng)態(tài)和程序 DEBUG 的主要特點(diǎn) DEBUG 的執(zhí)行 DEBUG 命令格式 主要 DEBUG 命令 DEBUG 的主要特點(diǎn))能夠在最小環(huán)境下運(yùn)行匯編程序

      在 DOS 狀態(tài)下運(yùn)行匯編程序,必須將程序經(jīng)過(guò) MASM 匯編程序,而后還要經(jīng)過(guò) LINK 連接程序產(chǎn)生可執(zhí)行程序,才能最終運(yùn)行,比較麻煩。在 DEBUG 狀態(tài)下,為用戶提供了調(diào)試、控制測(cè)試的環(huán)境,可以在此環(huán)境下進(jìn)行編程、調(diào)試、監(jiān)督、執(zhí)行用戶編寫(xiě)的匯編程序。因此調(diào)試周期短,為用戶提供了極大的方便。2)提供極簡(jiǎn)單的修改手段

      DEBUG 提供了修改命令,可以修改內(nèi)存單元內(nèi)容,修改寄存器的內(nèi)容,為調(diào)試程序、修改程序帶來(lái)了方便。)提供用戶與計(jì)算機(jī)內(nèi)部聯(lián)系的窗口

      DEBUG 具有顯示命令,它既可以使用戶看到某內(nèi)存單元或某一塊單元內(nèi)容,也可以看到 CPU 內(nèi)部各寄存器的內(nèi)容。用單步執(zhí)行命令實(shí)現(xiàn)跟蹤執(zhí)行,每執(zhí)行一步都使用戶看到各寄存器的內(nèi)容的變化,以便分析和調(diào)整程序。4)可裝入、修改或顯示任何文件

      當(dāng)然在 DEBUG 狀態(tài)下運(yùn)行匯編程序也具有一定局限性。在 DEBUG 狀態(tài)下運(yùn)行的程序不能使用宏匯編程序中的宏指令,大部分偽指令也不能使用,因此只能把程序分段調(diào)試。此外,不能調(diào)試太長(zhǎng)的程序,只能分塊進(jìn)行中程序設(shè)計(jì)。在 DEBUG 狀態(tài)下調(diào)試好的程序不能形成可執(zhí)行文件(.EXE),因此調(diào)試好的程序只能記下,到編輯環(huán)境下重新鍵入調(diào)試好的程序,通過(guò)匯編程序(如 MASM),再通過(guò)連接程序(LINK)形成可執(zhí)行文件(.EXE)。

      合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系

      DEBUG 的執(zhí)行

      在操作系統(tǒng)(DOS 或 WIndows)命令行方式下,直接調(diào)入 DEBUG 程序,鍵入命令的格式如下: D>DEBUG [d:][Path][filename[.ext]][Parm1][Parm2] 其中 [] 的內(nèi)容為可選項(xiàng),可以有也可以缺省。

      [d:] 為驅(qū)動(dòng)器號(hào),指要調(diào)入 DEBUG 狀態(tài)的可執(zhí)行文件在哪個(gè)驅(qū)動(dòng)器中,如 A:、B:、C: 等。[Path] 為路徑,指要調(diào)入 DEBUG 狀態(tài)的可執(zhí)行文件是在哪個(gè)目錄下或子目錄下。

      [filename[.ext]],指要調(diào)入 DEBUG 狀態(tài)下的可執(zhí)行文件的文件名,該文件可以是通過(guò)編輯、匯編、連接后產(chǎn)生的可執(zhí)行文件,也可以是在 DEBUG 狀態(tài)下匯編的程序 段,通過(guò)寫(xiě)盤(pán)命令 W 寫(xiě)入磁盤(pán)的文件。

      [Parm1][Parm2] 為任選參數(shù),是給定文件的說(shuō)明參數(shù)。

      在啟動(dòng) DEBUG 時(shí),如果輸入 filename(文件名),則 DEBUG 程序把指定文件裝入內(nèi)存,用戶可以通過(guò) DEBUG 的命令對(duì)指定文件進(jìn)行修改、顯示或執(zhí)行。如果沒(méi)有文件名,則是以當(dāng)前內(nèi)存的內(nèi)容工作,或者用命名命令或裝入命令把需要的文件裝入內(nèi)存,然后再通過(guò) DEBUG 命令進(jìn)行修改、顯示或執(zhí)行。

      當(dāng)啟動(dòng) DEBUG 程序后,屏幕上出現(xiàn)“—”,說(shuō)明系統(tǒng)已進(jìn)入 DEBUG 狀態(tài)。DEBUG 命令格式

      (1)DEBUG 命令都是一個(gè)英文字母,后面跟著一個(gè)或多個(gè)有關(guān)參數(shù)。多個(gè)操作參數(shù)之間用“ , ”或空格隔開(kāi)。

      (2)DEBUG 命令必須接著按 ENTER 鍵,命令才有效。

      (3)參數(shù)中不論是地址還是數(shù)據(jù),均用十六進(jìn)制數(shù)表示,但十六進(jìn)制數(shù)據(jù)后面不要用“ H ”。(4)可以用 Ctrl 和 Break 鍵來(lái)停止一個(gè)命令的執(zhí)行,返回到 DEBUG 的提示符“—”下。(5)用 Ctrl - Num Lock 鍵中止正在上卷的輸出行,再通過(guò)按任意鍵繼續(xù)輸出信息。主要 DEBUG 命令

      (1)匯編命令 A

      格式: a.A [ 段寄存器名 ]:[ 偏移地址 ] b.A [ 段地址 ]:[ 偏移地址 ] 11

      匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)

      c.A [ 偏移地址 ] d.A 功能:用該命令可以將匯編語(yǔ)言程序直接匯編進(jìn)入內(nèi)存。

      當(dāng)鍵入 A 命令后,顯示段地址和偏移地址等待用戶鍵入?yún)R編指令,每鍵入一條匯編指令回車(chē)后,自動(dòng)顯示下一條指令的段地址和偏移地址,再鍵入下一條匯編指令,直到匯編語(yǔ)言程序全部鍵入,又顯示下一地址時(shí)可直接鍵入回車(chē)返回到提示符“-”為止。

      其中 a 的段地址在段地址寄存器中,因此在使用該命令時(shí)必須將段地址寄存器送入段地址,c 的地址在 CS 中,d 的段地址在 CS 中,偏移地址為 100H。(2)顯示內(nèi)存命令 D 格式: a.D [ 地址 ] b.D [ 地址范圍 ] c.D 功能:顯示指定內(nèi)存范圍的內(nèi)容。

      顯示的內(nèi)容為兩種形式:一種為十六進(jìn)制內(nèi)容,一種為與十六進(jìn)制相對(duì)應(yīng)的 ASCII 碼字符,對(duì)不可見(jiàn)字符以“·”代替。

      對(duì)于 a、c 每次顯示 128 個(gè)字節(jié)內(nèi)容,b 顯示的字節(jié)數(shù)由地址范圍來(lái)決定。

      若命令中有地址,則顯示的內(nèi)容從指定地址開(kāi)始,若中中無(wú)地址(如 c)則從上一個(gè) D 命令所顯示的最后一個(gè)單元的下一個(gè)單元開(kāi)始。若以前沒(méi)有使用過(guò) D 命令,則以 DEBUG 初始化的段寄存器的內(nèi)容為起始段地址,起始偏移地址為 100H,即 CS:100。

      對(duì)于 a 中的地址為偏移地址,段地址為 CS 的內(nèi)容,對(duì) b 中的地址范圍,可以指定段地址和起始偏移地址和終止偏移地址。(3)修改存儲(chǔ)單元內(nèi)容命令 E 格式: a · E [ 地址 ] [ 內(nèi)容表 ] b · E [ 地址 ] 功能: a ·用命令所給定的內(nèi)容表去代替指定地址范圍的內(nèi)存單元內(nèi)容。b ·一個(gè)單元一個(gè)單元地連續(xù)修改單元內(nèi)容。

      其中:內(nèi)容表為一個(gè)十六進(jìn)制數(shù),也可以是用單引號(hào)括起的一串字符。

      合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系

      (4)填充內(nèi)存命令 F

      格式: F [ 范圍 ][ 單元內(nèi)容表 ] 功能:將單元內(nèi)容表中的內(nèi)容重復(fù)裝入內(nèi)存的指定范圍內(nèi)。(5)內(nèi)存搬家命令 M

      格式: M [ 源地址范圍 ][ 目標(biāo)起始地址 ] 其中源地址范圍和目的起始地址為偏移地址,段地址為 DS 的內(nèi)容。功能:把源地址范圍的內(nèi)容搬至以目標(biāo)起始地址開(kāi)始的存儲(chǔ)單元中。(6)比較命令 C

      格式: C [ 源地址范圍 ],[ 目標(biāo)地址 ] 其中源地址范圍是由起始地址和終止地址指出的一片連續(xù)的存儲(chǔ)單元,目標(biāo)地址為與源地址所指單元對(duì)比的目標(biāo)地址起始地址。

      功能:從源地址范圍是由起始的地址單元開(kāi)始逐個(gè)與目標(biāo)起始地址往后的單元順序比較每個(gè)單元內(nèi)容,比較到源終止地址為止。比較結(jié)果如果一致則不顯示任何信息,如果不一致,則以 [ 源地址 ][ 源內(nèi)容 ][ 目的內(nèi)容 ][ 目的地址 ] 的形式顯示失敗單元地址及內(nèi)容。(7)搜索指定內(nèi)容命令 S 格式: S [ 地址范圍 ][ 表 ] 功能:在指定地址范圍內(nèi)搜索表中內(nèi)容,搜索到就顯示表中元素所在地址。(8)檢查和修改寄存器內(nèi)容命令 R 格式: a · R b · R [ 寄存器名 ] 功能: a ·顯示 CPU 內(nèi)部所有寄存器的內(nèi)容和全部標(biāo)志位的狀態(tài)。b ·顯示和修改一個(gè)指定寄定器的內(nèi)容和標(biāo)志位的狀態(tài)。

      其中對(duì)狀態(tài)標(biāo)志寄存器 FLAG 以位的形式顯示,顯示時(shí),8 個(gè)狀態(tài)標(biāo)志的顯示次序和符號(hào)如表 B - 1 所示。

      表 B - 1 狀態(tài)標(biāo)志顯示形式

      匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)

      標(biāo) 志 位 溢出標(biāo)志 OF 方向標(biāo)志 DF 中斷標(biāo)志 IF 符號(hào)標(biāo)志 SF 零標(biāo)志 ZF 輔助進(jìn)位 AF 奇偶標(biāo)志 PF 進(jìn)位標(biāo)志 CF

      (9)跟蹤與顯示命令 T

      格式: a · T[ =地址 ] 或 T [ 地址 ]

      狀 態(tài) 有 / 無(wú) 增 / 減 開(kāi) / 關(guān) 負(fù) / 正 零 / 非 有 / 無(wú) 偶 / 奇 有 / 無(wú)

      顯示形式(置位 / 復(fù)位)

      OV/NV DN/UP EI/DI NG/PL ZR/NZ AC/NA PE/PO CY/NC b · T[ =地址 ][ 條數(shù) ] 或 T [ 地址 ][ 條數(shù) ] 功能: a ·執(zhí)行一條指定地址處的指令,停下來(lái),顯示 CPU 所有寄存器內(nèi)容和全部標(biāo)志位的狀態(tài),以及下一條指令的地址和內(nèi)容。

      b ·為多條跟蹤命令,從指定地址開(kāi)始;若命令中用 [ 地址 ] 給定了起始地址,則從起始地址開(kāi)始,若未給定,則從當(dāng)前地址(CS:IP)開(kāi)始,執(zhí)行命令中的 [ 條數(shù) ] 決定一共跟蹤幾條指令后返回 DEBUG 狀態(tài)。(10)反匯編命令 U 格式: a · U [ 地址 ] b · U [ 地址范圍 ] 功能:將指定范圍內(nèi)的代碼以匯編 語(yǔ)言形式顯示,同時(shí)顯示該代碼位于內(nèi)存的地址和機(jī)器。若在命令中沒(méi)有指定地址則以上一個(gè) U 命令的最后一條指令地址的下一個(gè)單元作為起始地址;若沒(méi)有輸入過(guò) U 命令,則以 DEBUG 初始化段寄存器的值作為段地址,以 0100H 作為偏移地址。(11)命名命令 N 格式: N 文件名

      功能:在調(diào)用 DEBUG 時(shí),沒(méi)有文件名,則需要用 N 命令將要調(diào)用的文件名格式化到 CS:5CH 的文件控制塊中,才能用 L 命令把它調(diào)入內(nèi)存進(jìn)行調(diào)試(其它形式參考 DOS 手冊(cè))。(12)讀盤(pán)命令 L

      格式: a · L [ 地址 ][ 驅(qū)動(dòng)器號(hào) ][ 起始扇區(qū)號(hào) ][ 所讀扇區(qū)個(gè)數(shù) ]

      合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系

      b · L [ 地址 ] c · L

      功能: a ·把指定驅(qū)動(dòng)器和指定扇區(qū)范圍的內(nèi)容讀到內(nèi)存的指定區(qū)域中。其中地址是讀入內(nèi)存的起始地址,當(dāng)輸入時(shí)沒(méi)有給定地址,則隱含地址為 CS:100H。起始扇區(qū)號(hào)指邏輯扇區(qū)號(hào)的起始位置。所讀扇區(qū)個(gè)數(shù)是指從起始扇區(qū)號(hào)開(kāi)始讀到內(nèi)存幾個(gè)扇區(qū)的內(nèi)容。驅(qū)動(dòng)器號(hào)為 0 或 1,0 表示 A 盤(pán),1 表示 B 盤(pán)。

      b ·讀入已在 CS:5CH 中格式化的文件控制塊所指定的文件。在使用該命令前用 N 命令命名即可將要讀入的文件名格式化到 CS:5CH 的文件控制塊中,其中地址為內(nèi)存地址。c ·同 b ·地址隱含在 CS : 100H 中。

      當(dāng)讀入的文件有擴(kuò)展名.COM 或.EXE,則始終裝入 CS:100H 中,命令中指定了地址也沒(méi)用。其中 BX 和 CX 中存放所讀文件的字節(jié)數(shù)。(13)寫(xiě)盤(pán)命令 W

      格式: a · W[ 地址 ][ 驅(qū)動(dòng)器號(hào) ][ 起始扇區(qū)號(hào) ][ 所寫(xiě)扇區(qū)個(gè)數(shù) ] b · W[ 地址 ] c · W

      功能: a · 把在 DEBUGU 狀態(tài)下調(diào)試的程序或數(shù)據(jù)寫(xiě)入指定的驅(qū)動(dòng)器中 , 起始扇區(qū)號(hào) , 所寫(xiě)扇區(qū)個(gè)數(shù)為要占盤(pán)中幾個(gè)扇區(qū)。

      寫(xiě)盤(pán)指定扇區(qū)的操作應(yīng)十分小心,如有差錯(cuò)將會(huì)破壞盤(pán)上的原有內(nèi)容。如果在命令行中的地址只包含偏移地址,W 命令認(rèn)為段地址在 CS 中。

      b ·當(dāng)鍵入不帶參數(shù)的寫(xiě)盤(pán)命令時(shí),(或只鍵入地址參數(shù)的寫(xiě)盤(pán)命令),寫(xiě)盤(pán)命令把文件寫(xiě)到軟盤(pán)上。該文件在用 W 命令之前用命名命令 N 將文件格式化在 CS:5CH 的文件控制塊中。c ·只有 W 命令以前而沒(méi)有任何參數(shù)時(shí),與 N 配合使用進(jìn)行寫(xiě)盤(pán)操作。在用 W 命令以前在 BX 和 CX 中應(yīng)寫(xiě)入文件的字節(jié)數(shù)。(15)輸出命令 O

      格式: O[ 端口地址 ] [ 字節(jié)值 ] 功能:向指定端口地址輸出一個(gè)字節(jié)。

      匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)

      (16)運(yùn)行命令 G

      格式: G [ =地址 ][ 地址 [ 地址? ]] 功能:執(zhí)行用戶正在調(diào)試的程序。

      其中地址為執(zhí)行的起始地址,以 CS 中內(nèi)容作為段地址,以等號(hào)后面的地址為偏移地址。再后面的地址為斷點(diǎn)地址。在命令行中只有起始地址,沒(méi)有斷點(diǎn)地址,則程序在執(zhí)行時(shí)不中斷。DEBUG 規(guī)定最多設(shè)置 10 個(gè)斷點(diǎn)地址。設(shè)置多個(gè)斷點(diǎn)用于調(diào)試較大的程序,即程序中有多個(gè)模塊、多個(gè)通路時(shí)用,比較方便,在執(zhí)行時(shí)不論走哪條通路,程序都可以在斷點(diǎn)處停下來(lái),以便調(diào)整程序。斷點(diǎn)地址為程序中斷處的偏移地址,段地址在 CS 中。

      當(dāng)執(zhí)行在 DEBUG 狀態(tài)下匯編的小段程序時(shí),只用 G 命令即可。(17)十六進(jìn)制運(yùn)算命令 H 格式: H 數(shù)據(jù) 1 數(shù)據(jù) 2 其中數(shù)據(jù) 1 和數(shù)據(jù) 2 為十六進(jìn)制數(shù)據(jù)。

      功能:將兩個(gè)十六進(jìn)制數(shù)進(jìn)行相加、減,結(jié)果顯示在屏幕上。(18)結(jié)束 DEBUG 返回到 DOS 命令 Q 格式: Q 功能:程序調(diào)試完退出 DEBUG 狀態(tài),返回到 DOS 狀態(tài)下。

      Q 命令不能把內(nèi)存的文件存盤(pán),要想存盤(pán)必須在退出 DEBUG 之前用 W 命令寫(xiě)盤(pán)。

      合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系

      附件3 匯編程序出錯(cuò)信息

      匯編程序?qū)υ闯绦蜻M(jìn)行匯編遇到或可疑的語(yǔ)法時(shí),計(jì)算機(jī)將會(huì)給出提示信息,以幫助調(diào)試程序。與特定代碼相關(guān)的錯(cuò)誤是編號(hào)的,與整個(gè)源程序相關(guān),而不是某一特定代碼相關(guān)的錯(cuò)誤是不編號(hào)的。

      1.有編號(hào)的錯(cuò)誤信息的顯示格式:源文件(行)代碼 信息

      (1)源文件,是出現(xiàn)錯(cuò)誤的源程序文件名。若錯(cuò)誤出現(xiàn)在內(nèi)含文件的宏指令中,則源文件是引用該寵指令的文件,而不是定義該宏指令的文件。

      (2)行,是出錯(cuò)位置在源程序中的行號(hào)。

      (3)代碼,是所有微軟語(yǔ)言使用的標(biāo)識(shí)代碼,它由“error或“warning”開(kāi)頭,后跟一個(gè)五個(gè)字符代碼。首字符指出程序是哪種語(yǔ)言編寫(xiě)的,匯編源程序用A開(kāi)頭;后四個(gè)是數(shù)字字符,第一個(gè)數(shù)字說(shuō)明警告級(jí)別,致使錯(cuò)誤是2,嚴(yán)重警告是4,勸告性警告是5;接著三個(gè)數(shù)字是錯(cuò)誤號(hào)。

      (4)信息,是錯(cuò)誤的解釋與說(shuō)明。MASM5.0中有編號(hào)的錯(cuò)誤信息提示如下: 0,Block nesting error,塊嵌套錯(cuò)誤。

      1,Extra characters on line,在一行中除存在所定義語(yǔ)句的全部信息外,還有多余的字符,即用戶提供了較多的操作數(shù)。

      2,Internal error-Register already defined symbol,寄存器被定義為符號(hào)的內(nèi)部錯(cuò)誤。

      3,Unkown type Specifier,未知的類型說(shuō)明符。可能是拼錯(cuò)了類型說(shuō)明符。4,Redefinition of symbol,符號(hào)在兩處按不同類型定義。5,Symbol is multidefind,符號(hào)被多次定義。

      6,Phase error between passes,二義性的語(yǔ)句引起偏移地址在遍1和遍2之間改變。7,Already had ELSE clause,條件匯編塊中用了多個(gè)ELSE子句。8,Must be in condition block,無(wú)與ENDIF或ELSE匹配的IF。9,Symbol not defined,符號(hào)無(wú)定義。10,Syntax error,句法錯(cuò)。相應(yīng)語(yǔ)法不正確。11,Type illegal in context,類型說(shuō)明符非法。

      12,Group name must be unique,組名已被定義為其他類型符號(hào)。

      13,Must be declared during pass 1:xymbol,符號(hào)應(yīng)預(yù)先定義,然后再引用。14,Illegal public declaration,在PUBLIC語(yǔ)句中,使用了非法操作數(shù)。如使用寄存器名。

      15,Symbol already different kind :symbol,符號(hào)已經(jīng)被定義為另一種符號(hào)。16,Reserved word used as symbol: name,保留字作符號(hào),這是警告錯(cuò)誤。

      匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)

      17,Forward reference illegal,符號(hào)提前引用錯(cuò)誤。

      如順序的兩語(yǔ)句DB COUNT DUP(?)與COUNT EQU 10將產(chǎn)生錯(cuò)誤。兩語(yǔ)句調(diào)換先后順序,將不會(huì)產(chǎn)生這種錯(cuò)誤。

      18,Operand must be register operand,操作數(shù)是寄存器,但卻是一個(gè)符號(hào)或常量。20, Operand must be segment or group,操作數(shù)應(yīng)當(dāng)是段名或組名。提供的是卻是其他名字或常數(shù)。

      22, Operand must be type specifies,操作數(shù)應(yīng)當(dāng)是類型說(shuō)明符。如NERA或WORD,但給出的是其他操作數(shù)。

      23,Symbol already defined locally,在當(dāng)前模塊中已定義的符號(hào)又說(shuō)明為EXTERN的操作數(shù)。

      24,Segment parameters are changed,同名段操作數(shù)說(shuō)明有矛盾。語(yǔ)句要求應(yīng)相同。25,Improper align/combine type, AEGMENT語(yǔ)句操作數(shù)錯(cuò),檢查定位和組合類型。26,Reference to multidefined symbol,引用多重定義的符號(hào)。27,Operand expected,需要一個(gè)操作數(shù),但接收到的是操作符。28,Operator expected,需要一個(gè)操作符,但給的卻是操作數(shù)。29,Division by o or overflow,表達(dá)式結(jié)果被零除或結(jié)果溢出。

      30,Negative shift count,作為SHL/SHR的操作數(shù)的表達(dá)式計(jì)算成一個(gè)負(fù)的移位次數(shù)。

      31,Operand types must match,操作數(shù)類型應(yīng)當(dāng)匹配。

      如DATA是字節(jié)變量,則語(yǔ)句“MOV AX,DATA”會(huì)產(chǎn)生這個(gè)錯(cuò)誤。為消除該錯(cuò)誤上述語(yǔ)句應(yīng)改為“MOV AX,WORDPTR DATA”。

      32,Illegal use of external,外部變量使用不正確。

      34,Operand must be record or field name,要求操作數(shù)是記錄或域名。

      35,Operand must have size,要求操作數(shù)有指定的尺寸。如語(yǔ)句INC[BX]將產(chǎn)生這個(gè)錯(cuò)誤。

      38,Left operand must have segment,段取代前綴必須是段寄存器、組或段名。39,One operand must be constant,應(yīng)當(dāng)有一個(gè)常數(shù)操作數(shù)。

      40,Operands must be in the same segment,or one must be constant,操作數(shù)應(yīng)在同一段或應(yīng)有一個(gè)常數(shù)。

      42,Constant expected,希望一個(gè)常數(shù)。

      43,Operand must have segment,操作數(shù)應(yīng)當(dāng)有段。

      44,Must be associated with data,要求數(shù)據(jù)相關(guān)項(xiàng)的地方用了與代碼相關(guān)的項(xiàng)。45,Must be associated with code,要求代碼相關(guān)項(xiàng)的地方用了數(shù)據(jù)相關(guān)的項(xiàng)。46,Multiple base registers,操作數(shù)中使用了多個(gè)基址寄存器。如語(yǔ)句“MOV AX,[BX+BP]”非法。

      47,Multiple index registers,操作數(shù)中使用了多個(gè)變址寄存器。如語(yǔ)句“MOV AX,[SI+DI]”非法。

      合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系

      48,must be index or base registers,存儲(chǔ)器操作數(shù)要求是基址或變址寄存器,但給的是其他寄存器。

      49,Illegal use of register,寄存器的使用非法。

      50,Value out ofran9,值超出范圍。如語(yǔ)句“MOV AL,5000”是非法的,因字節(jié)寄存器應(yīng)使用字節(jié)值。

      51,Operand not in current CS ASSLLME segment,操作數(shù)超出ASSUME語(yǔ)句分配的代碼范圍。通常是對(duì)標(biāo)號(hào)的調(diào)用或轉(zhuǎn)移超出當(dāng)前代碼段。

      52,Improper operand type:symbol,非法的操作數(shù)類型。如語(yǔ)句“MOV meml,mem2”非法,原因是兩個(gè)均為存儲(chǔ)器操作數(shù)。

      53,Jump out of range by number bytes,條件轉(zhuǎn)移指令不在要求的范圍之內(nèi)。55,Illegal register value,非法使用寄存器。如語(yǔ)句“MOV AX,BP+4”非法,正確語(yǔ)句為“MOV AX,[BP+4]”。

      56,Immediate mode illegal,立即操作數(shù)非法。如語(yǔ)句“MOV DS,1000H”,立即操作數(shù)非法。

      57,Illegal size for operand,特定語(yǔ)句的操作數(shù)非法。如INC MEM32,MEM32為雙字變量。

      58,Byte register illegal,8位寄存器用在要求l6位寄存器的語(yǔ)句中。如PUSH AL非法。

      59,Illegal use of CS register,非法使用CS。如語(yǔ)句“POP CS”非法。

      60,Must be accumulator register,應(yīng)當(dāng)使用AL、Ax的語(yǔ)句中使用了其他寄存器。61,Improper use of segment register,段寄存器使用非法。如語(yǔ)句INC CS。62,Missing or unreachable code segment,企圖轉(zhuǎn)移到MASM不能識(shí)別為代碼段的標(biāo)號(hào)。通常因?yàn)闊o(wú)ASSUME語(yǔ)句使CS與代碼段相連造成的。

      63,Operand combination illegal,操作數(shù)組合非法。

      64,Near JAMP/CALL to different code segment,近程調(diào)用和跳轉(zhuǎn)語(yǔ)句企圖轉(zhuǎn)移到非當(dāng)前代碼段。

      65,Label cannot have segment override,標(biāo)號(hào)不允許有段前綴,即段取代前綴使用有誤。

      66,Must have instruction after prefix,前綴后應(yīng)當(dāng)有指令。

      67,Cannot override ES for destination,段取代前綴ES不能用在串操作指令的目的操作數(shù)上。

      68,Cannot address with segment register,企圖訪問(wèn)存儲(chǔ)操作數(shù),但沒(méi)有用ASSUME說(shuō)明該操作數(shù)所在的段。請(qǐng)使用段取代或ASSUME標(biāo)示出該操作數(shù)的屬性。

      69,Must be in segment block,應(yīng)在段內(nèi)使用的偽指令用在了段外。

      70,Cannot use EVEN or ALIGN with type,EVEN和ALIGN偽指令用在字節(jié)對(duì)準(zhǔn)的段內(nèi)。

      71,F(xiàn)orward reference needs override or FAR,調(diào)用或轉(zhuǎn)移語(yǔ)句提前引用其他段的

      匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)

      標(biāo)號(hào)需使用PTR操作符予以說(shuō)明。如CALL FAR PTR TASK,引用標(biāo)號(hào)TASK時(shí)還未定義TASK標(biāo)號(hào)。

      72,Illegal value for DUP count,重復(fù)子句的數(shù)值表達(dá)式不為正整數(shù)值。73,Symbol is already external,已定義為外部名字的符號(hào)又被定義為內(nèi)部名字。74,DUP nesting too deep,重復(fù)子句嵌套超過(guò)17層。

      75,Illegal use of undefined operand(?),“?”使用不正確。如“MOVAH,?”和“5 DUP(?+5)”均非法。

      76,Too many values for structure or record initialization,初始化結(jié)構(gòu)或記錄變量時(shí)給出過(guò)多初始值。

      77,Angle brackets required around initialized list,初始化結(jié)構(gòu)變量時(shí),沒(méi)有使用尖括號(hào)括起初始值。

      78,Directive illegal in structure,結(jié)構(gòu)定義中的語(yǔ)句非法。

      79,Override with DUP illegal,初始化結(jié)構(gòu)變量時(shí),使用了重復(fù)子句DUP。80,F(xiàn)ield cannot be overridden,初始化結(jié)構(gòu)變量時(shí),企圖預(yù)置不能被預(yù)置的域。83。Circular chain of EQU alliases,用EQU偽指令定義的符號(hào)名指向自身。如語(yǔ)句“AEQUB”和“B EQUA”非法,將產(chǎn)生該錯(cuò)誤。

      84,Cannot emulate coprocessor opcode,協(xié)處理器指令或操作數(shù)與產(chǎn)生協(xié)處理器仿真程序不支持的操作碼一起使用。

      85,End of file,no END directive,源程序無(wú)END語(yǔ)句。該錯(cuò)誤也可能在段嵌套出錯(cuò)時(shí)產(chǎn)生。

      86,Data emitted with no segment,應(yīng)在段內(nèi)使用的語(yǔ)句在段外使用。產(chǎn)生目標(biāo)代碼的語(yǔ)句必須在段內(nèi),不產(chǎn)生目標(biāo)代碼的語(yǔ)句可在段內(nèi),也可在段外。

      87,F(xiàn)orced error-passl,用.ERRl偽指令強(qiáng)制形成的錯(cuò)誤。88,F(xiàn)orced error-pass2,用.ERR2偽指令強(qiáng)制形成的錯(cuò)誤。89,F(xiàn)orced error,用.ERR偽指令強(qiáng)制形成的錯(cuò)誤。

      90,F(xiàn)orced error-expression true(0),用.ERRZ偽指令強(qiáng)制形成的錯(cuò)誤。91,F(xiàn)orced error-pression false(not 0),用.ERP,Z偽指令強(qiáng)制形成的錯(cuò)誤。92,F(xiàn)orced error-symbol not defined,用.ERRNDEF偽指令強(qiáng)制形成的錯(cuò)誤。93,F(xiàn)orced error-symbol defined,用.ERRDEF偽指令強(qiáng)制形成的錯(cuò)誤。94,F(xiàn)orced error-string blank,用.ERRB偽指令強(qiáng)制形成的錯(cuò)誤。95,F(xiàn)orced error-string not blank,用.ERRNB偽指令強(qiáng)制形成的錯(cuò)誤。

      96,F(xiàn)orced error-strings identical,用.ERRIDN偽指令強(qiáng)制形成的錯(cuò)誤。97,F(xiàn)orced error-strings different,用.ERRDIF偽指令強(qiáng)制形成的錯(cuò)誤。98,Wrong length for override value,結(jié)構(gòu)域的重設(shè)值太大以至不適宜于這個(gè)域。99,Line too long expanding symbol:symbol,使用EQU偽指令定義的等式太長(zhǎng)。101,Missing data;zero assumed,缺少操作數(shù),假定是零。

      103,Align must be power of2,ALIGN偽指令用了不是2的冪的參數(shù)。

      合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系

      104,Jump within short distance,JMP指令的轉(zhuǎn)移范圍在短標(biāo)號(hào)內(nèi),故可在標(biāo)號(hào)前加SHORT操作符,從而使指令代碼減少一個(gè)字節(jié)。

      105,Expected element,少了一個(gè)元素,如標(biāo)點(diǎn)符號(hào)或操作符。

      106,Line too lon9,源行超過(guò)MASM允許的最大長(zhǎng)度。MASM 5.0規(guī)定行長(zhǎng)為128個(gè)字符。

      107,Illegal digit in number,常數(shù)內(nèi)包含當(dāng)前的基不允許的數(shù)字,如l08Q。108,Empty string not allowed,空串不允許出現(xiàn)。如“NULL DB?Ⅲ語(yǔ)句非法。109,Missing Operand,語(yǔ)句缺少一個(gè)必需的操作數(shù)。

      110,Open parenthesis or bracket,語(yǔ)句中缺少一個(gè)圓括號(hào)或方括號(hào)。111,Directivemustbeinmacr0,只在宏定義里面使用的偽指令用在宏定義之外。112,Unexpected end of line,語(yǔ)句行不完整。

      2.無(wú)編號(hào)的錯(cuò)誤信息

      無(wú)編號(hào)錯(cuò)誤信息提示命令行、存儲(chǔ)分配或文件訪問(wèn)出現(xiàn)錯(cuò)誤。(1)命令行錯(cuò)誤

      MASM時(shí),若胃戶給出無(wú)效命令行,將產(chǎn)生如下提示信息之一: Buffer size expected after B option Error defining symbol “name” from command line Extra file name ignored Line invalid.start again Path expected after I option Unkn0Ⅵ-a case option:option Unknown option:option(2)文件訪問(wèn)錯(cuò)誤

      當(dāng)MASM處理文件時(shí),若出現(xiàn)磁盤(pán)空間不夠、錯(cuò)誤文件名或其他文件錯(cuò)誤,則將產(chǎn)生如下提示信息之一:

      End of file encountered on input file Include file filename not found Read error on standard input Unable to access input file:filename Unable to open cref file:filename Unable to open input file:filename Unable to open listing file:filename Unable to open object file:filename Write error on cross.reference file Write error on listing file Write error on object file 21

      匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)

      (3)其他錯(cuò)誤

      表示存儲(chǔ)分配出錯(cuò)或其他一些與特定源行不相關(guān)的匯編出錯(cuò)等提示信息。Internal error,內(nèi)部出錯(cuò),注意錯(cuò)誤發(fā)生時(shí)的情況。

      Internal error.problem with expression analyzer,分析表達(dá)式出現(xiàn)內(nèi)部錯(cuò)誤,說(shuō)明表達(dá)式構(gòu)成有誤。

      Internal unknown error,MASM不能識(shí)別的內(nèi)部表有錯(cuò)。

      Number of Open conditionals:(number),有IF而沒(méi)有ENDIF語(yǔ)句。Open procedures,無(wú)與PROC匹配的ENDP語(yǔ)句。Open segments,無(wú)與SEGMENT匹配的ENDS語(yǔ)句。

      Out of memory,存儲(chǔ)器有效空間用完,可能是源文件太長(zhǎng)或符號(hào)表中定義了太多符號(hào)。

      第二篇:語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)指導(dǎo)書(shū)

      匯編語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)指導(dǎo)書(shū)

      一、課程設(shè)計(jì)的目的

      本課程設(shè)計(jì)是《匯編語(yǔ)言程序設(shè)計(jì)》課程的后繼教學(xué)環(huán)節(jié),其宗旨是使學(xué)生通過(guò)對(duì)一個(gè)較大型的、綜合性的應(yīng)用程序進(jìn)行閱讀、修改、添加功能等工作,對(duì)匯編語(yǔ)言程序設(shè)計(jì)有更進(jìn)一步的認(rèn)識(shí),提高編程技巧和閱讀理解復(fù)雜程序的能力。

      二、課程設(shè)計(jì)的任務(wù)要求

      根據(jù)所給的“Reader.asm”應(yīng)用程序框架,在此基礎(chǔ)上修改和添加功能。1.基本任務(wù): ?

      ? ? ? 認(rèn)真閱讀“Reader.asm”源程序,理解程序每一條指令在程序中的作用; 用→、←鍵在窗口內(nèi)左右移動(dòng)文本;

      用PgDn,PgUp鍵上下快速移動(dòng)文本(每次移半幀); 設(shè)計(jì)專用鍵放大、縮小窗口,改變窗口位置。

      2.擴(kuò)展任務(wù): ? ? 對(duì)文本內(nèi)的Tab字符(ASCII碼09H)進(jìn)行處理:遇到Tab鍵,下一個(gè)字符顯示在下一個(gè)表站開(kāi)始處(每個(gè)6個(gè)字符一個(gè)表站);

      設(shè)置狀態(tài)行,顯示當(dāng)前文件名、文本位置(仿垂直滾動(dòng)條)。

      3.自行設(shè)計(jì)的其它任務(wù):

      三、課程設(shè)計(jì)報(bào)告的內(nèi)容

      1.課程設(shè)計(jì)題目名稱、班級(jí)號(hào)、學(xué)號(hào)、學(xué)生姓名和課程設(shè)計(jì)起止日期(封面);

      2.上海應(yīng)用技術(shù)學(xué)院課程設(shè)計(jì)任務(wù)書(shū)(下發(fā))3.課程設(shè)計(jì)目的和要求;

      4.課程設(shè)計(jì)任務(wù)內(nèi)容; 5.詳細(xì)設(shè)計(jì)說(shuō)明; 6.軟件使用說(shuō)明; 7.課程設(shè)計(jì)總結(jié);

      8.附錄:1 參考文獻(xiàn) 2 程序清單(電子版)。

      四、課程設(shè)計(jì)詳細(xì)設(shè)計(jì)說(shuō)明及其它要求

      1.2.3.4.5.6.分析原“Reader.asm”程序結(jié)構(gòu):每個(gè)模塊說(shuō)明,較大模塊程序流程圖; 對(duì)你已經(jīng)實(shí)現(xiàn)的功能做詳細(xì)的說(shuō)明,并附上流程圖及部分程序清單; 自己對(duì)該“文件閱讀器”的進(jìn)一步設(shè)想;

      對(duì)于有設(shè)想但最終未實(shí)現(xiàn)的功能的大致編程思路的闡述; 論述在設(shè)計(jì)過(guò)程中遇到的并且對(duì)你具有啟發(fā)性的問(wèn)題; 交課程設(shè)計(jì)報(bào)告手寫(xiě)版,源程序交電子版。

      五、評(píng)分標(biāo)準(zhǔn)

      1.根據(jù)平時(shí)出勤情況和設(shè)計(jì)時(shí)的工作情況;

      2.根據(jù)課程設(shè)計(jì)程序的完成情況,必須有可運(yùn)行的軟件。3.根據(jù)課程設(shè)計(jì)報(bào)告的質(zhì)量。課程設(shè)計(jì)報(bào)告不能抄襲,抄襲判為不及格。4.在題目要求之外附加具有實(shí)用性的功能。

      六、課程設(shè)計(jì)工作進(jìn)度計(jì)劃

      星期一:課程設(shè)計(jì)介紹,源程序閱讀理解,功能設(shè)計(jì),程序編寫(xiě)。星期二:功能設(shè)計(jì),程序編寫(xiě)。

      星期三:程序編寫(xiě)與調(diào)試,課程設(shè)計(jì)報(bào)告撰寫(xiě)。星期四:程序編寫(xiě)與調(diào)試,課程設(shè)計(jì)報(bào)告撰寫(xiě)。

      星期五:程序最終修改,課程設(shè)計(jì)報(bào)告撰寫(xiě),提交報(bào)告并答辯。

      七、主要參考資料

      [1]楊文顯.匯編語(yǔ)言程序設(shè)計(jì)簡(jiǎn)明教程.北京:電子工業(yè)出版社,2005

      八、附錄

      《文本閱讀器》匯編語(yǔ)言源程序清單

      ;Title: Assemble Program “Reader.asm”

      ;Read a file from disk, display it?s contents on screen;Move the content on screen by up/down arrow keys;========================== MYDAT SEGMENT MAXLEN DW 1000;最大行數(shù) INDEX DW 1000 DUP(?);行索引 LENCT DW 0;實(shí)際行數(shù) CURLINE DW 0;當(dāng)前頁(yè)第一行行數(shù) CCOUNT DW ?;文件總字符數(shù)

      TOP DB 5;窗口左上角行數(shù) LEFT DB 5;窗口左上角列數(shù) WS DW 60;窗口寬度 HS DW 15;窗口高度 FG DB 17H;文字屬性 FGB DB 1FH;窗口邊框?qū)傩?/p>

      MSG1 DB 'File:$';輸入文件名提示 MSG2 DB 'File open error!$';打開(kāi)文件出錯(cuò)時(shí)提示 MSG3 DB 'File read error!$';讀文件出錯(cuò)時(shí)提示 FILENA DB 80,?,80 DUP(?);輸入文件名緩沖區(qū)

      ;定義功能鍵和相應(yīng)的處理程序

      ;每個(gè)功能定義兩個(gè)數(shù)據(jù):掃描碼,處理程序入口地址;該數(shù)據(jù)由DOSUB子程序使用

      KEYSUB DW 48H, SUB1 , 50H, SUB2, 0

      MYDAT ENDS

      ;==========================

      BUFFER SEGMENT PARA DB 65535 DUP(?);文件緩沖區(qū),文件最大為64K BUFFER ENDS

      ;==========================

      SSEG SEGMENT STACK ?STACK?;堆棧段

      DW 100 DUP(?)SSEG ENDS

      ;==========================

      ;宏定義 DISPINIT: 設(shè)置顯示器顯示方式 DISPINIT MACRO MOV AX,0003H;文本方式 25x80 INT 10H ENDM;----------;宏定義 PROMPT: 顯示字符串 PROMPT MACRO OUTMSG LEA DX, OUTMSG MOV AH, 09H;INT 21H;ENDM;--------;宏定義KRYIN: 從鍵盤(pán)讀入一個(gè)字符 KEYIN MACRO MOV AH,0;讀鍵

      INT 16H;AH中為掃描碼

      ENDM;==========================;代碼段開(kāi)始 CODE SEGMENT

      ASSUME CS: CODE, DS: MYDAT, ES: BUFFER, SS: SSEG

      START: MOV AX, MYDAT;裝載DS,ES MOV DS, AX MOV AX, BUFFER MOV ES, AX

      DISPINIT;顯示方式初始化

      CALL READFILE;讀入文件

      JC DONE

      CALL CLIST;初始化索引行

      CALL CLSCREEN;清屏

      CALL CREWIN;創(chuàng)建窗口

      CALL SHOWCUR;顯示當(dāng)前頁(yè)

      NEXT: KEYIN;進(jìn)入主程序: 讀鍵盤(pán)

      CALL COMMAND;命令分析與處理

      JNC NEXT;非x鍵繼續(xù)循環(huán)

      DONE: CALL CLSCREEN;清屏

      MOV AX, 4C00H INT 21H;退出

      ;-------;子程序READFILE: 提示并讀入文件名,將文件讀入緩沖區(qū) READFILE PROC PROMPT MSG1;CALL SIN;讀入文件名

      MOV AX, 3D00H MOV DX, OFFSET FILENA+2 INT 21H;打開(kāi)文件(讀)JC GETERR1;打開(kāi)文件出錯(cuò)轉(zhuǎn)GETERR1 PUSH DS PUSH ES POP DS;將DS指向文件緩沖區(qū)段

      MOV BX, AX;BX=文件號(hào)

      MOV AH, 3FH;讀文件 MOV CX, 0FFFFH;讀入最多64K-1 MOV DX, 0;DS: DX指向文件緩沖區(qū)

      INT 21H POP DS JC GETERR2;讀入文件出錯(cuò)轉(zhuǎn)GETERR2 MOV CCOUNT, AX;實(shí)際讀入字符數(shù)存入CCOUNT中

      CLC JMP GETFILEXIT

      GETERR1: PROMPT MSG2;讀入文件出錯(cuò)處理

      KEYIN STC JMP GETFILEXIT;

      GETERR2: PROMPT MSG3;打開(kāi)文件出錯(cuò)處理

      KEYIN STC

      GETFILEXIT: RET

      READFILE ENDP;-------;輸入文件名子程序 SIN PROC MOV AH, 0AH MOV DX, OFFSET FILENA INT 21H;輸入文件名

      XOR CH, CH MOV CL, FILENA+1;取文件名長(zhǎng)度

      LEA BX, FILENA+2 ADD BX, CX;計(jì)算字符串結(jié)尾地址

      MOV BYTE PTR [BX], 0;在字符串尾部加0 RET SIN ENDP;-------;索引行初始化子程序 CLIST PROC MOV CX, CCOUNT JCXZ CSTX;文件為空結(jié)束

      MOV SI,0;文件緩沖區(qū)字符指針

      MOV DI,0;索引行指針

      MOV DX,0;行數(shù)計(jì)數(shù)

      MOV INDEX[DI], 0 INC DX;假設(shè)文件至少有一行 CST1: CMP WORD PTR ES:[SI], 0A0DH;判斷是否為回車(chē)換行符

      JNZ CST2;不是行結(jié)束,轉(zhuǎn)CST2 INC DX;行數(shù)加一

      ADD SI, 2;跳過(guò)回車(chē)換行符

      ADD DI, 2;索引行指針加一

      MOV INDEX[DI], SI;指向本行開(kāi)始地址

      CMP DX, MAXLEN JNC CST4;是否超過(guò)最大行,超過(guò)轉(zhuǎn)CST4,結(jié)束

      JMP CST3;CST2: INC SI;文件緩沖區(qū)字符指針指向下一字符 CST3: LOOP CST1;CST4: MOV LENCT, DX;保存行數(shù)到LENCT中 CSTX: RET CLIST ENDP;-------;清屏子程序

      CLSCREEN PROC MOV AX, 0600H;清屏

      MOV CX, 0 MOV DH, 50 MOV DL, 79 MOV BH, 07H INT 10H RET CLSCREEN ENDP;------;顯示當(dāng)前頁(yè)子程序 SHOWCUR PROC MOV DH, 0;窗口最頂行

      MOV SI, CURLINE;取當(dāng)前頁(yè)第一行行數(shù)

      MOV CX, HS;窗口的第一行和最后一行為邊框,SUB CX, 2;所以能夠顯示內(nèi)容的高度為窗口高度減二 SC1:

      CALL SHOWLINE;顯示一行

      INC DH;窗口下一行

      INC SI;文件下一行

      MOV AX, LENCT;CMP SI, AX;文件是否顯示完

      JNC SC2;顯示完則轉(zhuǎn)SC2 LOOP SC1 JMP SC1X SC2: JCXZ SC1X;該頁(yè)顯示滿則結(jié)束

      ;該頁(yè)沒(méi)有顯示滿,則用空行填滿該頁(yè) SC3: PUSH CX PUSH DX CALL SHOWSPLINE;顯示空行

      POP DX POP CX INC DH LOOP SC3 SC1X: RET SHOWCUR ENDP;------;顯示一行子程序

      ;輸入:SI=顯示行行號(hào);DH=窗口中的行號(hào) SHOWLINE PROC PUSH CX PUSH SI PUSH DX PUSH AX

      ADD DH, TOP;INC DH;實(shí)際行數(shù)=窗口左上角行數(shù)+DI+1 MOV DL, LEFT;INC DL;實(shí)際列數(shù)=窗口左上角列數(shù)+1 CALL VADD;

      MOV CX, WS;窗口的第一列和最后一列是邊框,SUB CX, 2;所以能夠顯示內(nèi)容的寬度為窗口寬度減二

      SHL SI, 1;行索引為字類型,所以乘二

      MOV SI, INDEX[SI];取該行第一個(gè)字符在文件緩沖區(qū)的地址

      PUSH DS MOV AX, 0B800H MOV DS, AX;DS指向顯示緩沖區(qū)段地址 SL1: MOV AX, ES:[SI] CMP AX, 0A0DH JZ SL2;如果是回車(chē)換行,則該行結(jié)束

      MOV DS: [DI], AL;顯示一個(gè)字符 ADD DI, 2;INC SI;取下一個(gè)字符

      LOOP SL1;JCXZ SLX;該行正好顯示完,則結(jié)束,否則用空格填滿

      SL2: MOV BYTE PTR DS:[DI], ' ';該行沒(méi)有顯示滿,則用空格填滿

      ADD DI, 2 LOOP SL2

      SLX: POP DS

      POP AX POP DX POP SI POP CX

      RET SHOWLINE ENDP;--------;顯示空行子程序

      ;輸入:DI=窗口中的行號(hào) SHOWSPLINE PROC;

      MOV AX, HS;SUB AX, 2;CMP DH, AL;顯示的空行是否超出最低行

      JNC SSLX;如果是,則轉(zhuǎn)SSLX ADD DH, TOP;INC DH;實(shí)際行數(shù)=窗口左上角行數(shù)+DI+1 MOV DL, LEFT;INC DL;實(shí)際列數(shù)=窗口左上角列數(shù)+1 CALL VADD;

      MOV CX, WS;窗口的第一列和最后一列是邊框,SUB CX, 2;所以能夠顯示內(nèi)容的寬度為窗口寬度減二

      PUSH DS MOV AX, 0B800H MOV DS, AX SSL1: MOV BYTE PTR DS:[DI], ' ' ADD DI, 2 LOOP SSL1 POP DS SSLX: RET SHOWSPLINE ENDP;-------;創(chuàng)建窗口子程序 CREWIN PROC PUSH ES MOV AX, 0B800H;顯示緩沖區(qū)地址為B800:0 MOV ES, AX;

      MOV DH, TOP MOV DL, LEFT;窗口左上角行列數(shù)

      MOV CX, HS;窗口高度(行數(shù))CW1: PUSH DX;CALL VADD;計(jì)算地址

      PUSH CX;MOV CX, WS;窗口寬度(列數(shù))

      MOV AL, FG;取屬性 CW2: MOV BYTE PTR ES:[DI], ' ';送空白字符

      INC DI;MOV BYTE PTR ES:[DI], AL;送屬性

      INC DI;LOOP CW2;

      POP CX POP DX INC DH;行數(shù)加一

      LOOP CW1

      CALL DRAWB;畫(huà)邊框

      POP ES RET CREWIN ENDP;-;畫(huà)邊框子程序 DRAWB PROC PUSH DX PUSH CX PUSH BX PUSH AX MOV BL, FGB MOV DH, TOP MOV DL, LEFT CALL VADD

      ;畫(huà)左上角角框

      MOV BYTE PTR ES:[DI], 0C9H INC DI MOV BYTE PTR ES:[DI], BL INC DI

      ;畫(huà)第一行邊框

      MOV CX, WS SUB CX,2 DB1: MOV BYTE PTR ES:[DI], 0CDH INC DI MOV BYTE PTR ES:[DI], BL INC DI LOOP DB1

      ;畫(huà)右上角角框

      MOV BYTE PTR ES:[DI], 0BBH INC DI MOV BYTE PTR ES:[DI], BL

      ;畫(huà)第二行到倒數(shù)二行左右邊框

      MOV DH, TOP MOV DL, LEFT INC DH MOV CX, HS SUB CX, 2 DB2: PUSH DX CALL VADD MOV BYTE PTR ES:[DI], 0BAH INC DI MOV BYTE PTR ES:[DI], BL DEC DI MOV AX, WS DEC AX SHL AX, 1 ADD DI, AX MOV BYTE PTR ES:[DI], 0BAH INC DI MOV BYTE PTR ES:[DI], BL POP DX INC DH LOOP DB2;取邊框?qū)傩?窗口左上角行列數(shù);計(jì)算地址;角框╔;因?yàn)槿サ袅俗笥医强?,所以寬度減二;上下邊框═;角框╗;從第二行開(kāi)始;第一行和最后一行沒(méi)有左右邊框,;所以高度減二;;計(jì)算左邊框地址;左右邊框║;;;;計(jì)算右邊框地址;;下一行;

      ;畫(huà)左下角角框

      MOV DH, TOP;MOV DL, LEFT;MOV AX, HS;DEC AX;ADD DH, AL;左下角行數(shù)=右上角行數(shù)+窗口高度-1 CALL VADD MOV BYTE PTR ES:[DI], 0C8H;角框╚

      INC DI MOV BYTE PTR ES:[DI], BL INC DI

      ;畫(huà)最低行邊框

      MOV CX, WS;SUB CX, 2;因?yàn)槿サ袅俗笥医强?,所以寬度減二 DB3: MOV BYTE PTR ES:[DI], 0CDH;上下邊框═

      INC DI MOV BYTE PTR ES:[DI], BL INC DI LOOP DB3

      ;畫(huà)右下角角框

      MOV BYTE PTR ES:[DI], 0BCH;角框╝

      INC DI MOV BYTE PTR ES:[DI], BL

      POP AX POP BX POP CX POP DX

      RET DRAWB ENDP;------;計(jì)算窗口內(nèi)某行列位置對(duì)應(yīng)顯存地址;輸入:DH=行 DL=列;輸出:DI為顯存地址 VADD PROC MOV AL, 80;MUL DH;XOR DH, DH;ADD AX, DX;行數(shù)×80+列數(shù)

      SHL AX, 1;乘2,因?yàn)槊總€(gè)字符占兩個(gè)字節(jié)

      MOV DI, AX RET VADD ENDP;--------;命令分析子程序 COMMAND PROC CMP AH, 2DH;2DH為x鍵的掃描碼

      JNZ COM1;不是x鍵,轉(zhuǎn)COM1 STC;值x鍵標(biāo)志

      RET COM1: CALL DOSUB;轉(zhuǎn)命令散轉(zhuǎn)子程序

      CLC RET COMMAND ENDP;--;命令散轉(zhuǎn)子程序 DOSUB PROC MOV AL, AH MOV AH, 0;將鍵掃描碼放入AX中

      MOV BX, OFFSET KEYSUB;BX指向KEYSUB DOSUB1: CMP WORD PTR [BX], 0 JZ DOSUBX;KEYSUB表查完,即沒(méi)有找到轉(zhuǎn)DOSUBX CMP AX, [BX] JZ DOSUB2;找到掃描碼轉(zhuǎn)DOSUB2 ADD BX, 4 JMP DOSUB1;DOSUB2: ADD BX, 2 MOV BX, [BX];取處理程序入口地址

      JMP BX;轉(zhuǎn)處理程序 DOSUBX: RET

      ;SUB1和SUB2均為功能鍵處理程序;處理完后應(yīng)使用JMP DOSSUBX結(jié)束

      ;上箭頭鍵處理程序 SUB1: CMP CURLINE, 0 JZ SUB1X;已到第一行,結(jié)束

      DEC CURLINE;向上一行

      CALL SHOWCUR;顯示當(dāng)前頁(yè) SUB1X: JMP DOSUBX

      ;下箭頭鍵處理程序 SUB2: MOV AX, LENCT DEC AX DEC AX;至少顯示一行

      CMP AX, CURLINE;已到最后一行

      JZ SUB2X INC CURLINE;向下一行

      CALL SHOWCUR;顯示當(dāng)前頁(yè) SUB2X: JMP DOSUBX

      DOSUB ENDP;--------

      CODE ENDS

      ;========================= END START

      第三篇:UML程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)

      《UML程序設(shè)計(jì)》

      實(shí)驗(yàn)指導(dǎo)教程

      適合專業(yè):計(jì)算機(jī)類專業(yè)

      浙江樹(shù)人大學(xué)信息科技學(xué)院 2016.02

      課程與實(shí)驗(yàn)綜述

      第一部分實(shí)驗(yàn)綜述

      一.課程簡(jiǎn)介及實(shí)踐要求:

      《UML程序設(shè)計(jì)》是以介紹面向?qū)ο蟮慕y(tǒng)一建模語(yǔ)言UML為主,使學(xué)生了解面向?qū)ο蠹夹g(shù)的基本概念,掌握UML的分析和設(shè)計(jì)方法,同時(shí)掌握在Enterprise Architect環(huán)境下用UML進(jìn)行分析和設(shè)計(jì)的技術(shù)。本課程在教學(xué)內(nèi)容方面著重基本理論、基本知識(shí)和基本方法,在培養(yǎng)實(shí)踐能力方面著重設(shè)計(jì)構(gòu)思和設(shè)計(jì)技能的基本訓(xùn)練,熟練的上機(jī)操作能力和分析能力。

      實(shí)驗(yàn)實(shí)踐訓(xùn)練是UML程序設(shè)計(jì)教學(xué)的重要技能環(huán)節(jié)。通過(guò)實(shí)驗(yàn),使學(xué)生加深理解、驗(yàn)證、鞏固課堂教學(xué)內(nèi)容,特別是通過(guò)設(shè)計(jì)和綜合實(shí)驗(yàn),發(fā)揮學(xué)生的想象力和創(chuàng)新能力。二.課程實(shí)驗(yàn)?zāi)康囊螅?/p>

      通過(guò)UML的實(shí)驗(yàn),學(xué)生應(yīng)該: 1.學(xué)會(huì)用UML進(jìn)行面向?qū)ο蟮乃枷肴シ治龊驮O(shè)計(jì)相關(guān)系統(tǒng);2.學(xué)會(huì)用Rose建模工具進(jìn)行軟件建模。三.課程實(shí)驗(yàn)參考資料

      1.(美)Joseph Schmuller著.UML基礎(chǔ)、案例與應(yīng)用.人民郵電出版社,2004 2.(美)Hans-Erik Eriksson.UML 2工具箱.電子工業(yè)出版社,2004 3.吳際,金茂忠.UML面向?qū)ο蠓治?北京航空航天大學(xué)出版社,2002 4.趙從軍.UML設(shè)計(jì)及應(yīng)用.機(jī)械工業(yè)出版社,2004 5.Grady Booch,James Rumbaugh,Ivar Jacobson.UML用戶指南.機(jī)械工業(yè)出版社,2001 6.吳建,鄭潮,汪杰.UML基礎(chǔ)與Rose建模案例.人民郵電出版社,2004 第二部分 實(shí)驗(yàn)實(shí)踐指導(dǎo)

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

      構(gòu)建用例圖

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

      1.學(xué)會(huì)分析系統(tǒng)中的參與者和用例 2.掌握用例圖的繪制方法

      二、實(shí)驗(yàn)器材

      1.計(jì)算機(jī)一臺(tái);

      2.Enterprise Architect 工具軟件;

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

      1、分析ATM系統(tǒng)需求,按要求畫(huà)出用例圖;

      2、建立一個(gè)學(xué)生管理信息系統(tǒng)的需求

      3、建立設(shè)計(jì)一個(gè)學(xué)生管理信息系統(tǒng)的完整的用例圖

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

      (一)ATM系統(tǒng)的用例圖

      1.分析

      ATM自動(dòng)取款機(jī):客戶可以取錢(qián),存錢(qián),查詢余額,轉(zhuǎn)帳,修改密碼。通過(guò)分析可找出如下幾個(gè)參與者:(1)ATM(2)客戶

      通過(guò)分析得到如下用例:

      (1)存款

      (2)取款(3)查詢余額

      (4)轉(zhuǎn)帳(5)修改密碼

      (6)打印收據(jù)

      2.繪圖步驟:

      下面介紹在Enterprise Architect中創(chuàng)建用例圖的過(guò)程:

      Enterprise Architect主界面如下圖所示:

      1、建立項(xiàng)目:

      如下圖在文件菜單選擇新建項(xiàng)目:

      如下圖

      選擇文件夾,輸入項(xiàng)目名:

      如圖,選擇所需要的選項(xiàng):

      2、建立用例圖

      在合適的文件平夾下,右鍵

      在UML Behavioral 下選擇Use Case,圖名處輸入用例名如ATM 如下圖,比雙擊ATM

      在編輯界面下右鍵,如下圖

      3、添加用例

      選擇Use Case 依次添加存款、取款、查詢余額、轉(zhuǎn)帳、修改密碼、打印收據(jù),如圖1.4所示。

      4、添加Actor 在編輯界面下右鍵,選擇Actor,5、添加邊界(ATM取款系統(tǒng))

      如下圖

      6、添加參與者和用例間的關(guān)聯(lián)關(guān)系,右鍵客戶,如上圖,選擇小箭頭,添加關(guān)聯(lián),同理添加ATM的關(guān)聯(lián)

      添加Common中的Note,內(nèi)容為***制,如上圖

      7、保存圖

      完成用例圖后,保存該圖。

      8、選擇所有的內(nèi)容,拷貝,粘貼到實(shí)驗(yàn)報(bào)告中,如下圖

      uc ATMATM取款系統(tǒng)存款金智勇制取款查詢余額客戶ATM修改密碼打印收據(jù)轉(zhuǎn)帳

      (二)建立設(shè)計(jì)一個(gè)學(xué)生管理信息系統(tǒng)的需求分析與完整的用例圖

      (1)學(xué)生管理信息系統(tǒng)簡(jiǎn)介

      學(xué)生管理信息系統(tǒng)主要為學(xué)校的學(xué)生處設(shè)計(jì):方便學(xué)校學(xué)生處與學(xué)院學(xué)生口管理員方便管理學(xué)生,學(xué)生成績(jī)由教務(wù)系統(tǒng)提供,教務(wù)系統(tǒng)提供相關(guān)的WEB service供學(xué)生管理信息系統(tǒng)調(diào)用。

      ? 通過(guò)分析可找出如下幾個(gè)參與者:

      學(xué)生處管理員、學(xué)校領(lǐng)導(dǎo)(學(xué)校各種報(bào)表統(tǒng)計(jì)信息)、學(xué)院管理員、班主任(提供學(xué)生操行、查詢等)、學(xué)院領(lǐng)導(dǎo)(學(xué)院各種報(bào)表統(tǒng)計(jì)信息)、學(xué)生、后勤管理人員(衛(wèi)生管理、保衛(wèi)處異常情況處理)、財(cái)務(wù)人員、考勤管理員(由副班長(zhǎng)提供考勤信息)等

      ? 通過(guò)分析得到如下一些大的用例:

      學(xué)生基本信息管理、考勤管理、成績(jī)導(dǎo)入、學(xué)校各種報(bào)表信息(要求細(xì)化)、學(xué)院各種報(bào)表信息(要求細(xì)化)、個(gè)人成才規(guī)劃、新學(xué)期注冊(cè),操行評(píng)定、學(xué)生任職信息系統(tǒng)、學(xué)生獎(jiǎng)懲管理系統(tǒng)(要求細(xì)化,包括評(píng)優(yōu)評(píng)獎(jiǎng)等)、學(xué)生變動(dòng)信息管理(培訓(xùn)內(nèi)容、助學(xué)貸款情況、學(xué)校還款情況、勤工助學(xué)情況,黨員管理),后勤衛(wèi)生管理、保衛(wèi)處的學(xué)生的異常情況處理、其它的具體由學(xué)生自己定。

      2.建立設(shè)計(jì)一個(gè)學(xué)生管理信息系統(tǒng)的需求分析

      分析學(xué)生管理信息系統(tǒng),建立系統(tǒng)需求分析,并要求畫(huà)出系統(tǒng)功能框圖,如學(xué)生管理信息系統(tǒng)的功能模塊圖如下

      系統(tǒng)模塊圖如后勤衛(wèi)生查詢功能子系統(tǒng)模塊圖如下。

      要求分析其它的子系統(tǒng)模塊

      3.建立一個(gè)學(xué)生管理信息系統(tǒng)的完整的用例圖

      完整的要求,就為每一類用戶分配一個(gè)用例模型,如一般學(xué)生查詢功能用例

      要求分析其它參與者的用例模型

      (4)建立用例的文字描述(要求學(xué)生寫(xiě)出兩個(gè))

      1.“基本信息查詢”用例 用例編號(hào):04010101(共有4層用例圖結(jié)構(gòu),每層用2位數(shù)字表示,采用8位編號(hào)。)用例名:

      基本信息查詢

      執(zhí)行者: 學(xué)生自己、學(xué)生的班主任、輔導(dǎo)員及其它的特權(quán)用戶。目的: 查詢學(xué)生的基本信息,包括姓名、學(xué)號(hào)、家庭地址等信息。類

      型: 端點(diǎn)、基本的 級(jí)

      別: 二級(jí) ? 過(guò)程描述:

      (三)上傳ATM系統(tǒng)的用例圖與學(xué)生管理信息系統(tǒng)的完整的用例圖

      五、實(shí)驗(yàn)報(bào)告要求

      1. 整理實(shí)驗(yàn)結(jié)果。

      2. 小結(jié)實(shí)驗(yàn)心得體會(huì)。

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

      構(gòu)建類圖

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

      1.理解類的基本概念 2.理解類間的關(guān)系

      3.掌握類圖的繪制方法

      二、實(shí)驗(yàn)器材

      1.計(jì)算機(jī)一臺(tái);

      2.Enterprise Architect 工具軟件;

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

      (1)分析學(xué)生管理系統(tǒng)中的選課子系統(tǒng)中類及關(guān)系,然后畫(huà)出它們的類圖。(2)分析學(xué)生管理系統(tǒng)的其它子系統(tǒng),并畫(huà)出詳細(xì)的系統(tǒng)類圖

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

      (一).選課子系統(tǒng)

      1、選課子系統(tǒng)分析

      ? 分析學(xué)生管理系統(tǒng)中的選課子系統(tǒng),通過(guò)分析可抽象出如下幾個(gè)類:

      (1)學(xué)生類(student)(2)選課類(SelectCource)(3)課程類(Cource)

      ? 學(xué)生類、選課類和課程類屬性和方法

      課程類的屬性和方法:

      屬性包括

      (1)課程名稱(CourceName)(2)開(kāi)課教室(Room)(3)課程號(hào)(CourceID)(4)授課教師(Teacher)(5)學(xué)年(academic year)(6)學(xué)期(Term)(7)允許選課的學(xué)生人數(shù)(SelectNoUp)方法包括

      (1)設(shè)置課程號(hào)(SetCourceID)(2)設(shè)置課程名稱(SetCourceName)(3)查詢課程號(hào)(SeekCourceID)(4)查詢?cè)试S選課的學(xué)生人數(shù)(SeekSelectNoUp)

      選課類的屬性和方法:

      屬性包括

      (1)ID號(hào)(ID)(2)課程號(hào)(CourceID)(3)學(xué)號(hào)(SNo)(4)成績(jī)(score)方法包括

      1)選課(SelectCoure)2)退選(CancelSelected)3)查詢選課情況(SeekSelected)

      2.繪圖步驟:

      下面介紹在Enterprise Architect中創(chuàng)建類和它們之間關(guān)系的過(guò)程:

      (1)在上圖的合適文件夾下選擇添加類圖,類圖名為選課系統(tǒng)類,如下圖。

      (2)在選課系統(tǒng)類圖中,從工具欄中新建元素,選擇Class并取名Student表明新增一個(gè)類,,同理添加選課類(SelectCource),課程類(Cource),如下圖

      (2)右鍵Studen,選擇功能與屬性---屬性,如下圖

      (7)同樣的方法添加Course類與SelectCource類,(8)創(chuàng)建兩個(gè)類之間的關(guān)系,通過(guò)分析得出:Course類與SelectCource類之間為單向關(guān)聯(lián)。選擇圖標(biāo)欄的“關(guān)聯(lián)”,由Course類指向electCource類。如圖所示。

      (10)分別在Course類與SelectCource類選項(xiàng)卡中鍵入名稱和多重性,圖2.10(11)重復(fù)(2)-(10)中的步驟完成選課系統(tǒng)整個(gè)類圖的創(chuàng)建。(12)如圖2.11轉(zhuǎn)換生成代碼,查看所生成的三個(gè)的代碼。

      選擇對(duì)應(yīng)的類的文件名,生成代碼

      查看代碼

      (二)分析學(xué)生管理系統(tǒng)的其它子系統(tǒng),并畫(huà)出詳細(xì)的系統(tǒng)類圖

      一般情況一個(gè)子系統(tǒng)至少有一個(gè)類,要求建立系統(tǒng)的詳細(xì)類圖,并建立類間的關(guān)聯(lián)

      五、實(shí)驗(yàn)報(bào)告要求

      1. 整理實(shí)驗(yàn)結(jié)果。

      2. 小結(jié)實(shí)驗(yàn)心得體會(huì)。

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

      構(gòu)建活動(dòng)圖

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

      1. 熟悉活動(dòng)圖的基本功能和使用方法。

      2. 掌握如何使用建模工具繪制活動(dòng)圖方法。

      二、實(shí)驗(yàn)器材

      1.計(jì)算機(jī)一臺(tái);

      2.Enterprise Architect 工具軟件;

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

      (1)分析圖書(shū)管理系統(tǒng)中管理員的活動(dòng)狀態(tài),畫(huà)出管理員的活動(dòng)圖。(2)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的活動(dòng)圖,并用活動(dòng)圖細(xì)化用例圖

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

      (一)圖書(shū)管理系統(tǒng)活動(dòng)圖

      1.分析

      ? 在圖書(shū)管理系統(tǒng)中管理員的活動(dòng)如下:

      (1)處理還書(shū)(2)處理借書(shū)(3)處理罰款 ? 讀者的活動(dòng)如下:

      (1)登錄(2)找書(shū)(3)預(yù)約(4)瀏覽

      2.繪圖步驟:

      下面介紹在Enterprise Architect中活動(dòng)圖的過(guò)程:(1)在的合適文件夾下選擇添加活動(dòng)圖(Activity),如下圖,在圖名中輸入在圖書(shū)管理系統(tǒng)管理員活動(dòng)圖如下圖所示

      (2)添加活動(dòng)及其它元素,如下圖

      圖 3.1

      (2)繪制圖書(shū)管理員的活動(dòng)圖,如圖3.2所示:

      圖3.2

      (3)創(chuàng)建讀者的活動(dòng)圖如圖3.3所示:

      圖3.3

      (二)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的活動(dòng)圖,并用活動(dòng)圖細(xì)化用例圖

      (1)學(xué)生基本信息保存的活動(dòng)圖

      錄入基本信息、點(diǎn)擊保存、鏈接數(shù)據(jù)庫(kù)、判定學(xué)號(hào)是否已存在、判定錄入信息是否符合規(guī)范(日期信息、身份證號(hào)、郵編等信息)-保存。(2)學(xué)生基本信息查詢的活動(dòng)圖

      鏈接數(shù)據(jù)庫(kù)、查詢基本信息表、倒出數(shù)據(jù)內(nèi)容、填入各字段信息到信息輸出框、根據(jù)學(xué)院代號(hào)查詢學(xué)院名稱、寫(xiě)入學(xué)院信息到列表框、定位學(xué)院信列表框、根據(jù)班級(jí)代號(hào)查詢班級(jí)名稱、寫(xiě)入班級(jí)信息、寫(xiě)入班級(jí)信息到列表框、定位班級(jí)信列表框、。(3)至少分析建立其它3個(gè)活動(dòng)圖

      (4)根據(jù)活動(dòng)圖重新分析用例圖并細(xì)化用例圖,審核類圖

      五、實(shí)驗(yàn)報(bào)告要求

      1. 整理實(shí)驗(yàn)結(jié)果。

      2. 小結(jié)實(shí)驗(yàn)心得體會(huì)。

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

      構(gòu)建順序圖

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

      學(xué)會(huì)用順序圖實(shí)現(xiàn)用例

      二、實(shí)驗(yàn)器材

      1.計(jì)算機(jī)一臺(tái);

      2.Enterprise Architect 工具軟件;

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

      (1)分析系統(tǒng)需求,畫(huà)出ATM取款的順序圖(2)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的順序圖

      四、實(shí)驗(yàn)步驟(一)ATM取款的場(chǎng)景

      1、ATM取款的場(chǎng)景分析:

      (1)通過(guò)讀卡機(jī),用戶插入ATM卡;

      (2)ATM系統(tǒng)從卡上讀取銀行ID、帳號(hào)、加密密碼、并用主銀行系統(tǒng)驗(yàn)證銀行ID和帳號(hào);

      (3)用戶輸入密碼,ATM系統(tǒng)根據(jù)上面讀出的卡上加密密碼,對(duì)密碼進(jìn)行驗(yàn)證;(4)用戶輸入取款數(shù)量;

      (5)ATM系統(tǒng)通知主銀行系統(tǒng),傳遞儲(chǔ)戶帳號(hào)和取款數(shù)量,并接收返回的確認(rèn)信息;

      (6)ATM系統(tǒng)輸出先進(jìn)、ATM卡和顯示帳戶余額的收據(jù);(7)ATM系統(tǒng)記錄事務(wù)到日志文件。尋找場(chǎng)景中的對(duì)象:ATM、客戶和帳戶。

      2、繪圖步驟:

      下面介紹在Enterprise Architect中創(chuàng)建順序圖的過(guò)程:

      (1)在的合適文件夾下選擇添加活動(dòng)圖(Activity),如下圖,21

      在工具菜單中選擇選項(xiàng)如下圖

      選擇圖—順序,如下圖,選擇“顯示順序編號(hào)”

      (2)在順序圖前,為保證對(duì)象的可行性,可先在類圖中創(chuàng)建Customer、ATM、和Account類。也可新建元素LifeLine。如下圖,分別創(chuàng)建Customer、ATM、和Account.(4)根據(jù)ATM取款的場(chǎng)景,獲得第一條消息為“客戶向ATM機(jī)提交取款需求”,向圖中添加消息。

      在圖中,點(diǎn)擊Customer,選擇小箭頭,指向ATM,在消息特征編輯窗口中,輸入Request。

      圖4.4

      (5)同樣的方法添加其它消息,如圖4.5所示。

      圖4.5

      (二)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的順序圖

      (1)如學(xué)生獎(jiǎng)學(xué)金評(píng)定的順序圖:倒入成績(jī)、操行評(píng)定、計(jì)算綜合評(píng)分、獎(jiǎng)學(xué)金評(píng)定(2)用戶登入的順序圖:

      (3)新學(xué)期注冊(cè)順序圖:學(xué)生交費(fèi)--向?qū)W院報(bào)到--判斷是否交費(fèi)--(是否申請(qǐng)助學(xué)金、是否申請(qǐng)緩交)--注冊(cè)(4)建立黨員管理順序圖

      (5)建立其它的一個(gè)以上順序圖

      五、實(shí)驗(yàn)報(bào)告要求

      1. 整理實(shí)驗(yàn)結(jié)果。

      2. 小結(jié)實(shí)驗(yàn)心得體會(huì)。

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

      構(gòu)建協(xié)作圖

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

      1.學(xué)會(huì)協(xié)作圖的繪制方法

      2.掌握順序圖和協(xié)作圖的相互轉(zhuǎn)換。

      二、實(shí)驗(yàn)器材

      1.計(jì)算機(jī)一臺(tái);

      2.Enterprise Architect 工具軟件;

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

      (1)分析系統(tǒng)需求,畫(huà)出ATM取款的協(xié)作圖。

      (2)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的順序圖

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

      (一).ATM取款的場(chǎng)景

      1、ATM取款的場(chǎng)景分析:

      (1)通過(guò)讀卡機(jī),用戶插入ATM卡;

      (2)ATM系統(tǒng)從卡上讀取銀行ID、帳號(hào)、加密密碼、并用主銀行系統(tǒng)驗(yàn)證銀行ID和帳號(hào);(3)用戶輸入密碼,ATM系統(tǒng)根據(jù)上面讀出的卡上加密密碼,對(duì)密碼進(jìn)行驗(yàn)證;(4)用戶輸入取款數(shù)量;

      (5)ATM系統(tǒng)通知主銀行系統(tǒng),傳遞儲(chǔ)戶帳號(hào)和取款數(shù)量,并接收返回的確認(rèn)信息;(6)ATM系統(tǒng)輸出先進(jìn)、ATM卡和顯示帳戶余額的收據(jù);(7)ATM系統(tǒng)記錄事務(wù)到日志文件。尋找場(chǎng)景中的對(duì)象:ATM、客戶和帳戶。

      2、繪圖步驟:

      下面介紹在Enterprise Architect中創(chuàng)建協(xié)作圖的過(guò)程:

      (1)在“Logical View”中新建“Collaboration Diagram“,雙擊圖標(biāo),出現(xiàn)圖5.1,為編輯順序圖做好準(zhǔn)備。

      圖5.1

      (2)創(chuàng)建類節(jié)點(diǎn)

      創(chuàng)建四個(gè)類節(jié)點(diǎn)分別為ATM,Branch,Consortium,User。

      分別選擇其中的三個(gè)類節(jié)點(diǎn)ATM,Branch,Consortium 把它們拖動(dòng)到CollaborationDiagram圖中,如圖5.2所示。

      4.2

      選擇標(biāo)記為 User 的類節(jié)點(diǎn)。將選定的類拖放到CollaborationDiagram圖編輯器中,使其位于 ATM 生命線元素的上方,如圖5.3所示。

      圖5.3

      (3)添加連接器鏈接(Object Link)

      協(xié)作圖中的每個(gè)元素均可通過(guò)連接器鏈接與其他元素建立連接。您可以標(biāo)識(shí)這些鏈

      接,并在其中添加消息流。

      從建模組件面板的“基本”類別中,選擇 “ Object Link ” 圖標(biāo)。單擊標(biāo)記為 User 的生命線元素,然后單擊 ATM。將在兩個(gè)元素之間繪制一條連接器鏈接。使用相同的步驟繪制以下鏈接:

      從 ATM 至 Consortium 的鏈接

      從 Consortium 至 Branch 的鏈接

      從 ATM 至 Branch 的鏈接

      注意:在創(chuàng)建從 ATM 至 Branch 的鏈接時(shí),請(qǐng)從 ATM 生命線的右側(cè)水平繪制一條鏈接,并在到達(dá) Branch 生命線的正上方時(shí)單擊鼠標(biāo)左鍵。這樣便會(huì)在鏈接線上出現(xiàn)一個(gè)頂點(diǎn),然后在頂點(diǎn)到 Branch 生命線之間垂直繪制一條鏈接。

      此時(shí),該圖應(yīng)當(dāng)圖5.4類似。

      圖5.4

      在圖編輯器中的任意位置單擊鼠標(biāo)右鍵,選擇 “Edit” 的“delete from mode”菜單,可刪除模型,如圖5.5所示。

      圖5.5

      (4)顯示操作流

      操作流將在圖中顯示為與鏈接平行的帶標(biāo)記箭頭。此鏈接用于向目標(biāo)元素傳輸消息或?qū)崿F(xiàn)這種傳輸。在圖編輯器中,選擇 User 和 ATM 之間的連接器鏈接。右鍵單擊距 ATM 生命線最近的連接器鏈接部分。如圖4.6所示,從彈出式菜單中選擇“Open Specification”,彈出”Link Specification For Untile”對(duì)話框,在對(duì)話框中按右鍵,從彈出式菜單中選擇“Insert To: ATM”,在Message Name中輸入public void GetCashOnHand(), 如圖5.6所示。

      圖5.6

      在 ATM 和Consortium 之間的連接器鏈接上,右鍵單擊靠近Consortium生命線的鏈接部分。

      添加消息 “ public void validateAccountInfo()”。Rose顯示 2: public void validateAccountInfo()。

      在 ATM 和 Branch 之間的連接器鏈接上,右鍵單擊靠近Branch 生命線的鏈接部分。

      添加消息 “public char getConnected”。Rose顯示3: public char getConnected()。

      右鍵單擊 Consortium 和 Branch 之間靠近Branch 生命線元素的連接器鏈接。添加消息 “public void verifyCardWithBank(int stringCardSTrip)”。Rose顯示 4: public void verifyCardWithBank(int stringCardSTrip)。

      完成的協(xié)作圖應(yīng)當(dāng)與圖5.7類似。

      圖5.7

      (5)模型檢查并保存

      使用Tools工具的”Check Model”,進(jìn)行模型檢查,查看是否有錯(cuò)。

      如無(wú)誤則在完成協(xié)作圖后,您可以保存該圖。在圖編輯器中,從菜單中選擇“保存”。

      (二)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的協(xié)作圖

      (1)如學(xué)生獎(jiǎng)學(xué)金評(píng)定的協(xié)作圖:倒入成績(jī)、操行評(píng)定、計(jì)算綜合評(píng)分、獎(jiǎng)學(xué)金評(píng)定(2)助學(xué)貸款申請(qǐng)協(xié)作圖:學(xué)生申請(qǐng)—班主任批準(zhǔn)—學(xué)院批準(zhǔn)-學(xué)校領(lǐng)導(dǎo)批準(zhǔn)(3)助學(xué)勤工儉學(xué)申請(qǐng)協(xié)作圖:(4)建立其它的一個(gè)以上協(xié)作圖

      五、實(shí)驗(yàn)報(bào)告要求

      1. 整理實(shí)驗(yàn)結(jié)果。

      2. 小結(jié)實(shí)驗(yàn)心得體會(huì)。

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

      構(gòu)建狀態(tài)圖

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

      1. 熟悉狀態(tài)圖的基本功能和使用方法。2. 掌握如何使用建模工具繪制狀態(tài)圖方法。

      二、實(shí)驗(yàn)器材

      1.計(jì)算機(jī)一臺(tái);

      2.Enterprise Architect 工具軟件;

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

      (1)分析圖書(shū)管理系統(tǒng)中的書(shū)和借書(shū)證的狀態(tài),畫(huà)出它們的狀態(tài)圖;

      (2)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的順序圖

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

      (一)圖書(shū)管理系統(tǒng)

      1、分析

      ? 在圖書(shū)管理系統(tǒng)中,分析書(shū)的狀態(tài)如下:

      (1)可借(2)被借(3)被預(yù)約(4)刪除

      ? 借書(shū)證的狀態(tài)如下:

      (1)可用(2)不可用(3)刪除

      2、繪圖步驟:

      下面介紹在Rose2003中創(chuàng)建類和它們之間關(guān)系的過(guò)程:

      (1)在“Logical View“中的“StateChart Diagram”菜單,雙擊圖標(biāo),出現(xiàn)圖6.1,為編輯狀態(tài)圖做好準(zhǔn)備。

      圖6.1(2)在工具欄中選擇“Start State”圖標(biāo)添加到編輯窗口中,如圖6.2所示。

      圖6.2(3)在工具欄中選擇“State”圖標(biāo),添加一個(gè)元素,命名為“New book”,如圖6.3所示。

      圖6.3(4)同樣的方法添加其它狀態(tài),如圖6.4所示。

      圖6.4 5)書(shū)的各個(gè)狀態(tài)之間添加轉(zhuǎn)移及相應(yīng)的事件,如圖6.5所示。

      32(圖6.5(6)同樣的方法得借書(shū)證的狀態(tài)圖,如圖6.6所示。

      圖6.6

      (二)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的狀態(tài)圖

      (1)建立學(xué)生交款狀態(tài)圖:已交、未交、緩交、部分申請(qǐng)助學(xué)貸款(2)建立學(xué)生懲罰(記過(guò)以上)狀態(tài)圖:

      (3)建立學(xué)生黨員申請(qǐng)狀態(tài)圖:(4)建立其它的一個(gè)以上狀態(tài)圖

      五、實(shí)驗(yàn)報(bào)告要求

      1. 整理實(shí)驗(yàn)結(jié)果。

      2. 小結(jié)實(shí)驗(yàn)心得體會(huì)。

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

      構(gòu)建組件圖和配置圖

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

      1.掌握UML中組件圖和配置圖的建立方法;

      2.掌握使用Enterprise Architect繪制組件圖和配置圖;

      二、實(shí)驗(yàn)器材

      1.計(jì)算機(jī)一臺(tái);

      2.Enterprise Architect 工具軟件;

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

      (1)分析學(xué)校網(wǎng)上選課系統(tǒng)的組件圖,畫(huà)出系統(tǒng)組件圖。(2)分析學(xué)校網(wǎng)上選課系統(tǒng)的配置圖,畫(huà)出系統(tǒng)配置圖。(3)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的組件圖與配置圖

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

      (一)網(wǎng)上選課系統(tǒng)

      1.分析

      設(shè)計(jì)學(xué)校網(wǎng)上選課系統(tǒng)的組件圖和配置圖,需求如下: 某學(xué)校的網(wǎng)上選課系統(tǒng)主要包括如下功能:

      管理員通過(guò)系統(tǒng)管理界面進(jìn)入,建立本學(xué)期要開(kāi)的課程、將課程信息保存在數(shù)據(jù)庫(kù)中并可以對(duì)課程進(jìn)行改動(dòng)和刪除。

      學(xué)生通過(guò)客戶機(jī)瀏覽器根據(jù)學(xué)號(hào)和密碼進(jìn)入選課界面,在這里學(xué)生可以進(jìn)行三種操作:查詢已選課程、選課以及付費(fèi)。

      對(duì)于以上操作,可通過(guò)業(yè)務(wù)層,并將這些操作結(jié)果存入數(shù)據(jù)庫(kù)中。

      2.繪圖步驟:

      (1)繪制組件圖的步驟如下:

      ? 確定組件;(系統(tǒng)管理系統(tǒng), 課程管理系統(tǒng),選課系統(tǒng),查詢系統(tǒng),人員信息管理,注冊(cè)系統(tǒng),業(yè)務(wù)操作,備份系統(tǒng),付費(fèi)系統(tǒng))? 給組件加上必要的構(gòu)造型; ? 確定組件的聯(lián)系; ? 繪制組件圖。

      下面介紹在Rose2003中創(chuàng)建組件圖的過(guò)程:

      (a)在“Component View“中的 “New”的 “Component Diagram”中,出現(xiàn)圖7.1,為編輯組件圖做好準(zhǔn)備,35

      圖7.1(b)創(chuàng)建組件圖(根據(jù)要求創(chuàng)建)。

      (2)繪制配置圖的步驟如下: ? 確定節(jié)點(diǎn);(數(shù)據(jù)庫(kù)服務(wù)器,應(yīng)用服務(wù)器,打印機(jī),客戶端(n個(gè),連接為局域網(wǎng)))

      ? 加上構(gòu)造型;

      ? 確定節(jié)點(diǎn)的聯(lián)系; ? 繪制配置圖。

      下面介紹在Rose2003中創(chuàng)建配置圖的過(guò)程:

      (a)在“Deployment View“中,出現(xiàn)圖7.2,為編輯配置圖做好準(zhǔn)備,圖7.2

      圖7.3 系統(tǒng)配置圖

      (二)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的組件圖與配置圖

      (1)系統(tǒng)組件圖 ? 分析系統(tǒng)接口

      如建立查詢一個(gè)學(xué)生基本信息的接口,返回一個(gè)學(xué)生基本信息的類(類中有姓名、學(xué)號(hào)等屬性)

      ? 搜索系統(tǒng)用戶界面

      搜索系統(tǒng)用戶界面,作為系統(tǒng)一種特殊的接口,用戶與系統(tǒng)的接口,建立單獨(dú)的包Web InterFace保存用戶界面,如學(xué)生基本信息操作的用戶界面定義如下(從View繼承過(guò)來(lái)的一個(gè)類,這里只考慮界面,類只考慮程序,可有部分重復(fù)):

      為用戶界面考慮接口,并關(guān)聯(lián)不同的類

      (2)系統(tǒng)配置圖

      假設(shè)有以下的子系統(tǒng):學(xué)生管理系統(tǒng)用到財(cái)務(wù)子系統(tǒng)、成績(jī)管理子系統(tǒng),并各自有數(shù)據(jù)庫(kù)。

      五、實(shí)驗(yàn)報(bào)告要求

      1. 整理實(shí)驗(yàn)結(jié)果。

      2. 小結(jié)實(shí)驗(yàn)心得體會(huì)。

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

      Enterprise Architect逆向工程

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

      1.掌握Enterprise Architect中逆向工程的建立方法; 2.掌握根據(jù)逆向工程畫(huà)出類圖;

      二、實(shí)驗(yàn)器材

      1.計(jì)算機(jī)一臺(tái);

      2.Enterprise Architect 工具軟件;

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

      (1)分析Java程序,實(shí)現(xiàn)EA逆向工程。(2)根據(jù)逆向工程所得類,畫(huà)出對(duì)應(yīng)類圖。

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

      1.分析

      Enterprise Architect功能十分強(qiáng)大,從項(xiàng)目需求分析、開(kāi)發(fā)、測(cè)試,整個(gè)項(xiàng)目過(guò)程都可使用Enterprise Architect,特別是在做需求分析與項(xiàng)目系統(tǒng)架構(gòu)時(shí)建模的能力巨強(qiáng)。但是每個(gè)人不是在項(xiàng)目一開(kāi)始就能參與到初期當(dāng)中來(lái)的,有時(shí)候整個(gè)項(xiàng)目一期完工了,進(jìn)行二期開(kāi)發(fā)時(shí),這個(gè)時(shí)候參與進(jìn)項(xiàng)目,為了能夠快速了解整個(gè)項(xiàng)目的框架,使用Enterprise Architect的逆向工程的功能極為有用。

      2.繪圖步驟:

      (1)分析J2EE源代碼,了解其結(jié)構(gòu)

      (2)新建一個(gè)Enterprise Architect工程,選擇合適的文件夾,如下圖選擇包---代碼工程—導(dǎo)入---源程序目錄

      選擇根包,原類型為Java

      點(diǎn)擊確定即在對(duì)應(yīng)的包下生成三個(gè)類Env,EnvList和ListS,新建視圖,添加Env,EnvList和ListS到視圖中,具體如圖所示:

      圖8.3

      五、實(shí)驗(yàn)報(bào)告要求

      1. 整理實(shí)驗(yàn)結(jié)果。

      2. 小結(jié)實(shí)驗(yàn)心得體會(huì)。

      第四篇:UML程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)

      《UML程序設(shè)計(jì)》

      實(shí)驗(yàn)指導(dǎo)教程

      適合專業(yè):計(jì)算機(jī)科學(xué)技術(shù)09

      浙江樹(shù)人大學(xué)信息科技學(xué)院 2012.02

      課程與實(shí)驗(yàn)綜述

      第一部分實(shí)驗(yàn)綜述

      一.課程簡(jiǎn)介及實(shí)踐要求:

      《UML程序設(shè)計(jì)》是以介紹面向?qū)ο蟮慕y(tǒng)一建模語(yǔ)言UML為主,使學(xué)生了解面向?qū)ο蠹夹g(shù)的基本概念,掌握UML的分析和設(shè)計(jì)方法,同時(shí)掌握在Rational Rose環(huán)境下用UML進(jìn)行分析和設(shè)計(jì)的技術(shù)。本課程在教學(xué)內(nèi)容方面著重基本理論、基本知識(shí)和基本方法,在培養(yǎng)實(shí)踐能力方面著重設(shè)計(jì)構(gòu)思和設(shè)計(jì)技能的基本訓(xùn)練,熟練的上機(jī)操作能力和分析能力。

      實(shí)驗(yàn)實(shí)踐訓(xùn)練是UML程序設(shè)計(jì)教學(xué)的重要技能環(huán)節(jié)。通過(guò)實(shí)驗(yàn),使學(xué)生加深理解、驗(yàn)證、鞏固課堂教學(xué)內(nèi)容,特別是通過(guò)設(shè)計(jì)和綜合實(shí)驗(yàn),發(fā)揮學(xué)生的想象力和創(chuàng)新能力。二.課程實(shí)驗(yàn)?zāi)康囊螅?/p>

      通過(guò)UML的實(shí)驗(yàn),學(xué)生應(yīng)該: 1.學(xué)會(huì)用UML進(jìn)行面向?qū)ο蟮乃枷肴シ治龊驮O(shè)計(jì)相關(guān)系統(tǒng);2.學(xué)會(huì)用Rose建模工具進(jìn)行軟件建模。三.課程實(shí)驗(yàn)參考資料

      1.(美)Joseph Schmuller著.UML基礎(chǔ)、案例與應(yīng)用.人民郵電出版社,2004 2.(美)Hans-Erik Eriksson.UML 2工具箱.電子工業(yè)出版社,2004 3.吳際,金茂忠.UML面向?qū)ο蠓治?北京航空航天大學(xué)出版社,2002 4.趙從軍.UML設(shè)計(jì)及應(yīng)用.機(jī)械工業(yè)出版社,2004 5.Grady Booch,James Rumbaugh,Ivar Jacobson.UML用戶指南.機(jī)械工業(yè)出版社,2001 6.吳建,鄭潮,汪杰.UML基礎(chǔ)與Rose建模案例.人民郵電出版社,2004 第二部分 實(shí)驗(yàn)實(shí)踐指導(dǎo)

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

      構(gòu)建用例圖

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

      1.學(xué)會(huì)分析系統(tǒng)中的參與者和用例 2.掌握用例圖的繪制方法

      二、實(shí)驗(yàn)器材

      1.計(jì)算機(jī)一臺(tái);

      2.Rational Rose 工具軟件;

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

      1、分析ATM系統(tǒng)需求,按要求畫(huà)出用例圖;

      2、建立一個(gè)學(xué)生管理信息系統(tǒng)的需求

      3、建立設(shè)計(jì)一個(gè)學(xué)生管理信息系統(tǒng)的完整的用例圖

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

      (一)ATM系統(tǒng)的用例圖

      1.分析

      ATM自動(dòng)取款機(jī):客戶可以取錢(qián),存錢(qián),查詢余額,轉(zhuǎn)帳,修改密碼。通過(guò)分析可找出如下幾個(gè)參與者:(1)ATM(2)客戶

      通過(guò)分析得到如下用例:

      (1)存款

      (2)取款(3)查詢余額

      (4)轉(zhuǎn)帳(5)修改密碼

      (6)打印收據(jù)

      2.繪圖步驟:

      下面介紹在Rose2003中創(chuàng)建用例圖的過(guò)程:

      (1)在“Use Case View“中雙擊Main圖,或者右擊“Use Case View“,彈出在快捷菜單中選擇“New”->“UseCase Diagram”,雙擊圖標(biāo),出現(xiàn)圖1.1,為編輯用例圖做好準(zhǔn)備。

      圖1.1 空用例圖

      (2)在用例視圖中,從工具欄中選擇Actor圖標(biāo),在右邊的繪圖區(qū)中添加一個(gè)新元素,并取名客戶表明新增一個(gè)參與者,如圖1.2所示。

      圖1.2(3)同樣的方法添加參與者“ATM”

      (4)在工具欄上選擇用例的圖標(biāo),依次添加存款、取款、查詢余額、轉(zhuǎn)帳、修改密碼、打印收據(jù),如圖1.4所示。

      圖1.4(5)添加參與者和用例間的關(guān)聯(lián)關(guān)系,如圖1.5所示。

      圖1.5(6)保存圖

      完成用例圖后,保存該圖。

      (二)建立設(shè)計(jì)一個(gè)學(xué)生管理信息系統(tǒng)的需求分析與完整的用例圖

      (1)學(xué)生管理信息系統(tǒng)簡(jiǎn)介

      學(xué)生管理信息系統(tǒng)主要為學(xué)校的學(xué)生處設(shè)計(jì):方便學(xué)校學(xué)生處與學(xué)院學(xué)生口管理員方便管理學(xué)生,學(xué)生成績(jī)由教務(wù)系統(tǒng)提供,教務(wù)系統(tǒng)提供相關(guān)的WEB service供學(xué)生管理信息系統(tǒng)調(diào)用。

      ? 通過(guò)分析可找出如下幾個(gè)參與者:

      學(xué)生處管理員、學(xué)校領(lǐng)導(dǎo)(學(xué)校各種報(bào)表統(tǒng)計(jì)信息)、學(xué)院管理員、班主任(提供學(xué)生操行、查詢等)、學(xué)院領(lǐng)導(dǎo)(學(xué)院各種報(bào)表統(tǒng)計(jì)信息)、學(xué)生、后勤管理人員(衛(wèi)生管理、保衛(wèi)處異常情況處理)、財(cái)務(wù)人員、考勤管理員(由副班長(zhǎng)提供考勤信息)等

      ? 通過(guò)分析得到如下一些大的用例:

      學(xué)生基本信息管理、考勤管理、成績(jī)導(dǎo)入、學(xué)校各種報(bào)表信息(要求細(xì)化)、學(xué)院各種報(bào)表信息(要求細(xì)化)、個(gè)人成才規(guī)劃、新學(xué)期注冊(cè),操行評(píng)定、學(xué)生任職信息系統(tǒng)、學(xué)生獎(jiǎng)懲管理系統(tǒng)(要求細(xì)化,包括評(píng)優(yōu)評(píng)獎(jiǎng)等)、學(xué)生變動(dòng)信息管理(培訓(xùn)內(nèi)容、助學(xué)貸款情況、學(xué)校還款情況、勤工助學(xué)情況,黨員管理),后勤衛(wèi)生管理、保衛(wèi)處的學(xué)生的異常情況處理、其它的具體由學(xué)生自己定。

      2.建立設(shè)計(jì)一個(gè)學(xué)生管理信息系統(tǒng)的需求分析

      分析學(xué)生管理信息系統(tǒng),建立系統(tǒng)需求分析,并要求畫(huà)出系統(tǒng)功能框圖,如學(xué)生管理信息系統(tǒng)的功能模塊圖如下

      系統(tǒng)模塊圖如后勤衛(wèi)生查詢功能子系統(tǒng)模塊圖如下。

      要求分析其它的子系統(tǒng)模塊

      3.建立一個(gè)學(xué)生管理信息系統(tǒng)的完整的用例圖

      完整的要求,就為每一類用戶分配一個(gè)用例模型,如一般學(xué)生查詢功能用例

      要求分析其它參與者的用例模型

      (4)建立用例的文字描述(要求學(xué)生寫(xiě)出兩個(gè))

      1.“基本信息查詢”用例 用例編號(hào):04010101(共有4層用例圖結(jié)構(gòu),每層用2位數(shù)字表示,采用8位編號(hào)。)用例名:

      基本信息查詢

      執(zhí)行者: 學(xué)生自己、學(xué)生的班主任、輔導(dǎo)員及其它的特權(quán)用戶。目的: 查詢學(xué)生的基本信息,包括姓名、學(xué)號(hào)、家庭地址等信息。類

      型: 端點(diǎn)、基本的 級(jí)

      別: 二級(jí) ? 過(guò)程描述:

      (三)上傳ATM系統(tǒng)的用例圖與學(xué)生管理信息系統(tǒng)的完整的用例圖

      五、實(shí)驗(yàn)報(bào)告要求

      1. 整理實(shí)驗(yàn)結(jié)果。

      2. 小結(jié)實(shí)驗(yàn)心得體會(huì)。

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

      構(gòu)建類圖

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

      1.理解類的基本概念 2.理解類間的關(guān)系 3.掌握類圖的繪制方法

      二、實(shí)驗(yàn)器材

      1.計(jì)算機(jī)一臺(tái);

      2.Rational Rose 工具軟件;

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

      (1)分析學(xué)生管理系統(tǒng)中的選課子系統(tǒng)中類及關(guān)系,然后畫(huà)出它們的類圖。(2)分析學(xué)生管理系統(tǒng)的其它子系統(tǒng),并畫(huà)出詳細(xì)的系統(tǒng)類圖

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

      (一).選課子系統(tǒng)

      1、選課子系統(tǒng)分析

      ? 分析學(xué)生管理系統(tǒng)中的選課子系統(tǒng),通過(guò)分析可抽象出如下幾個(gè)類:

      (1)學(xué)生類(2)管理員類(3)課程類

      ? 學(xué)生類和管理員類的屬性較容易分析,這里只列出課程類的屬性和方法:

      (1)課程名稱(2)開(kāi)課教室(3)課程號(hào)(4)授課教師(5)選課的學(xué)生(6)開(kāi)課起始時(shí)間

      (7)允許選課的學(xué)生人數(shù)(8)設(shè)置課程號(hào)(9)設(shè)置課程名稱(10)查詢課程號(hào)

      (11)查詢?cè)试S選課的學(xué)生人數(shù)

      2.繪圖步驟:

      下面介紹在Rose2003中創(chuàng)建類和它們之間關(guān)系的過(guò)程:

      (1)在“Logical View“中雙擊Main圖,或者右擊“Logical View“,彈出在快捷菜單中選擇“New”->“Class Diagram”,雙擊圖標(biāo),出現(xiàn)圖2.1,為編輯類圖做好準(zhǔn)備。

      圖2.1(2)在邏輯視圖中,從工具欄中選擇class圖標(biāo),在右邊的繪圖區(qū)中添加一個(gè)新元素,并取名Student表明新增一個(gè)類,如圖2.2所示。

      圖2.2(3)選擇新創(chuàng)建的元素,點(diǎn)擊鼠標(biāo)右鍵,在彈出的菜單中選擇“Open Sepcification”,彈出圖2.3對(duì)話框。

      (4)在對(duì)話框中,可以修改元素的名稱,這里新元素的名稱定為“Student”,如圖2.4所示。

      圖2.3 9

      圖2.4 5)點(diǎn)擊“Attributes”選項(xiàng)卡,添加屬性,如圖2.5所示。

      圖2.5 6)點(diǎn)擊“operations”選項(xiàng)卡,添加方法如圖2.6所示。

      圖2.6(((7)同樣的方法添加Course類,如圖2.7所示。

      圖2.7(8)創(chuàng)建兩個(gè)類之間的關(guān)系,通過(guò)分析得出:學(xué)生類和課程類之間為單向關(guān)聯(lián)。選擇圖標(biāo)欄的“關(guān)聯(lián)”,由學(xué)生類指向課程類。如圖2.8所示。

      圖2.8(9)創(chuàng)建關(guān)聯(lián)名。右擊關(guān)聯(lián),選擇“open specification“,鍵入關(guān)聯(lián)名(select),如圖2.9所示。

      圖2.9 11

      (10)分別在“Role A Detail“和“Role B Detail“選項(xiàng)卡中鍵入名稱和多重性,如圖2.10所示。

      圖2.10(11)重復(fù)(2)-(10)中的步驟完成選課系統(tǒng)整個(gè)類圖的創(chuàng)建。(12)如圖2.11轉(zhuǎn)換生成代碼,查看所生成的三個(gè)的代碼。

      圖2.11

      (二)分析學(xué)生管理系統(tǒng)的其它子系統(tǒng),并畫(huà)出詳細(xì)的系統(tǒng)類圖

      一般情況一個(gè)子系統(tǒng)至少有一個(gè)類,要求建立系統(tǒng)的詳細(xì)類圖,并建立類間的關(guān)聯(lián)

      五、實(shí)驗(yàn)報(bào)告要求

      1. 整理實(shí)驗(yàn)結(jié)果。

      2. 小結(jié)實(shí)驗(yàn)心得體會(huì)。

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

      構(gòu)建活動(dòng)圖

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

      1. 熟悉活動(dòng)圖的基本功能和使用方法。2. 掌握如何使用建模工具繪制活動(dòng)圖方法。

      二、實(shí)驗(yàn)器材

      1.計(jì)算機(jī)一臺(tái);

      2.Rational Rose 工具軟件;

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

      (1)分析圖書(shū)管理系統(tǒng)中管理員的活動(dòng)狀態(tài),畫(huà)出管理員的活動(dòng)圖。(2)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的活動(dòng)圖,并用活動(dòng)圖細(xì)化用例圖

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

      (一)圖書(shū)管理系統(tǒng)活動(dòng)圖

      1.分析

      ? 在圖書(shū)管理系統(tǒng)中管理員的活動(dòng)如下:

      (1)處理還書(shū)(2)處理借書(shū)(3)處理罰款 ? 讀者的活動(dòng)如下:

      (1)登錄(2)找書(shū)(3)預(yù)約(4)瀏覽

      2.繪圖步驟:

      下面介紹在Rose2003中創(chuàng)建類和它們之間關(guān)系的過(guò)程:

      (1)在“Logical View“中選擇“Activity Diagram ”菜單,雙擊圖標(biāo),出現(xiàn)圖3.1,為編輯活動(dòng)圖做好準(zhǔn)備。

      圖 3.1

      (2)在Rose2003中,繪制圖書(shū)管理員的活動(dòng)圖,新建“Activity Diagram”,如圖3.2所示:

      圖3.2

      (3)創(chuàng)建讀者的活動(dòng)圖如圖3.3所示:

      圖3.3

      (二)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的活動(dòng)圖,并用活動(dòng)圖細(xì)化用例圖

      (1)學(xué)生基本信息保存的活動(dòng)圖

      錄入基本信息、點(diǎn)擊保存、鏈接數(shù)據(jù)庫(kù)、判定學(xué)號(hào)是否已存在、判定錄入信息是否符合規(guī)范(日期信息、身份證號(hào)、郵編等信息)-保存。(2)學(xué)生基本信息查詢的活動(dòng)圖

      鏈接數(shù)據(jù)庫(kù)、查詢基本信息表、倒出數(shù)據(jù)內(nèi)容、填入各字段信息到信息輸出框、根據(jù)學(xué)院代號(hào)查詢學(xué)院名稱、寫(xiě)入學(xué)院信息到列表框、定位學(xué)院信列表框、根據(jù)班級(jí)代號(hào)查詢班級(jí)名稱、寫(xiě)入班級(jí)信息、寫(xiě)入班級(jí)信息到列表框、定位班級(jí)信列表框、。(3)至少分析建立其它3個(gè)活動(dòng)圖

      (4)根據(jù)活動(dòng)圖重新分析用例圖并細(xì)化用例圖,審核類圖

      五、實(shí)驗(yàn)報(bào)告要求

      1. 整理實(shí)驗(yàn)結(jié)果。

      2. 小結(jié)實(shí)驗(yàn)心得體會(huì)。

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

      構(gòu)建順序圖

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

      學(xué)會(huì)用順序圖實(shí)現(xiàn)用例

      二、實(shí)驗(yàn)器材

      1.計(jì)算機(jī)一臺(tái);

      2.Rational Rose 工具軟件;

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

      (1)分析系統(tǒng)需求,畫(huà)出ATM取款的順序圖(2)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的順序圖

      四、實(shí)驗(yàn)步驟(一)ATM取款的場(chǎng)景

      1、ATM取款的場(chǎng)景分析:

      (1)通過(guò)讀卡機(jī),用戶插入ATM卡;

      (2)ATM系統(tǒng)從卡上讀取銀行ID、帳號(hào)、加密密碼、并用主銀行系統(tǒng)驗(yàn)證銀行ID和帳號(hào);

      (3)用戶輸入密碼,ATM系統(tǒng)根據(jù)上面讀出的卡上加密密碼,對(duì)密碼進(jìn)行驗(yàn)證;(4)用戶輸入取款數(shù)量;

      (5)ATM系統(tǒng)通知主銀行系統(tǒng),傳遞儲(chǔ)戶帳號(hào)和取款數(shù)量,并接收返回的確認(rèn)信息;

      (6)ATM系統(tǒng)輸出先進(jìn)、ATM卡和顯示帳戶余額的收據(jù);(7)ATM系統(tǒng)記錄事務(wù)到日志文件。尋找場(chǎng)景中的對(duì)象:ATM、客戶和帳戶。

      2、繪圖步驟:

      下面介紹在Rose2003中創(chuàng)建順序圖的過(guò)程:

      (1)在“Logical View”中新建“Sequence Diagram“,雙擊圖標(biāo),出現(xiàn)圖4.1,為編輯順序圖做好準(zhǔn)備。

      圖4.1(2)在順序圖編輯窗口中,從工具欄中選擇Object圖標(biāo),在右邊的繪圖區(qū)中添加一個(gè)新元素,并取名Customer表明新增一個(gè)對(duì)象,如圖4.2所示。

      圖4.2

      (3)同樣的方法,添加ATM對(duì)象和Account對(duì)象,如圖4.3所示。

      圖4.3(4)根據(jù)ATM取款的場(chǎng)景,獲得第一條消息為“客戶向ATM機(jī)提交取款需求”,向圖中添加消息,如圖4.4所示。

      圖4.4

      (5)同樣的方法添加其它消息,如圖4.5所示。

      圖4.5

      (二)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的順序圖

      (1)如學(xué)生獎(jiǎng)學(xué)金評(píng)定的順序圖:倒入成績(jī)、操行評(píng)定、計(jì)算綜合評(píng)分、獎(jiǎng)學(xué)金評(píng)定(2)用戶登入的順序圖:

      (3)新學(xué)期注冊(cè)順序圖:學(xué)生交費(fèi)--向?qū)W院報(bào)到--判斷是否交費(fèi)--(是否申請(qǐng)助學(xué)金、是否申請(qǐng)緩交)--注冊(cè)(4)建立黨員管理順序圖

      (5)建立其它的一個(gè)以上順序圖

      五、實(shí)驗(yàn)報(bào)告要求

      1. 整理實(shí)驗(yàn)結(jié)果。

      2. 小結(jié)實(shí)驗(yàn)心得體會(huì)。

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

      構(gòu)建協(xié)作圖

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

      1.學(xué)會(huì)協(xié)作圖的繪制方法

      2.掌握順序圖和協(xié)作圖的相互轉(zhuǎn)換。

      二、實(shí)驗(yàn)器材

      1.計(jì)算機(jī)一臺(tái);

      2.Rational Rose 工具軟件;

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

      (1)分析系統(tǒng)需求,畫(huà)出ATM取款的協(xié)作圖。

      (2)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的順序圖

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

      (一).ATM取款的場(chǎng)景

      1、ATM取款的場(chǎng)景分析:

      (1)通過(guò)讀卡機(jī),用戶插入ATM卡;

      (2)ATM系統(tǒng)從卡上讀取銀行ID、帳號(hào)、加密密碼、并用主銀行系統(tǒng)驗(yàn)證銀行ID和帳號(hào);(3)用戶輸入密碼,ATM系統(tǒng)根據(jù)上面讀出的卡上加密密碼,對(duì)密碼進(jìn)行驗(yàn)證;(4)用戶輸入取款數(shù)量;

      (5)ATM系統(tǒng)通知主銀行系統(tǒng),傳遞儲(chǔ)戶帳號(hào)和取款數(shù)量,并接收返回的確認(rèn)信息;(6)ATM系統(tǒng)輸出先進(jìn)、ATM卡和顯示帳戶余額的收據(jù);(7)ATM系統(tǒng)記錄事務(wù)到日志文件。尋找場(chǎng)景中的對(duì)象:ATM、客戶和帳戶。

      2、繪圖步驟:

      下面介紹在Rose2003中創(chuàng)建順序圖的過(guò)程:

      (1)在“Logical View”中新建“Collaboration Diagram“,雙擊圖標(biāo),出現(xiàn)圖5.1,為編輯順序圖做好準(zhǔn)備。

      圖5.1

      (2)創(chuàng)建類節(jié)點(diǎn)

      創(chuàng)建四個(gè)類節(jié)點(diǎn)分別為ATM,Branch,Consortium,User。

      分別選擇其中的三個(gè)類節(jié)點(diǎn)ATM,Branch,Consortium 把它們拖動(dòng)到CollaborationDiagram圖中,如圖5.2所示。

      4.2

      選擇標(biāo)記為 User 的類節(jié)點(diǎn)。將選定的類拖放到CollaborationDiagram圖編輯器中,使其位于 ATM 生命線元素的上方,如圖5.3所示。

      圖5.3

      (3)添加連接器鏈接(Object Link)

      協(xié)作圖中的每個(gè)元素均可通過(guò)連接器鏈接與其他元素建立連接。您可以標(biāo)識(shí)這些鏈

      接,并在其中添加消息流。

      從建模組件面板的“基本”類別中,選擇 “ Object Link ” 圖標(biāo)。單擊標(biāo)記為 User 的生命線元素,然后單擊 ATM。將在兩個(gè)元素之間繪制一條連接器鏈接。使用相同的步驟繪制以下鏈接:

      從 ATM 至 Consortium 的鏈接

      從 Consortium 至 Branch 的鏈接

      從 ATM 至 Branch 的鏈接

      注意:在創(chuàng)建從 ATM 至 Branch 的鏈接時(shí),請(qǐng)從 ATM 生命線的右側(cè)水平繪制一條鏈接,并在到達(dá) Branch 生命線的正上方時(shí)單擊鼠標(biāo)左鍵。這樣便會(huì)在鏈接線上出現(xiàn)一個(gè)頂點(diǎn),然后在頂點(diǎn)到 Branch 生命線之間垂直繪制一條鏈接。

      此時(shí),該圖應(yīng)當(dāng)圖5.4類似。

      圖5.4

      在圖編輯器中的任意位置單擊鼠標(biāo)右鍵,選擇 “Edit” 的“delete from mode”菜單,可刪除模型,如圖5.5所示。

      圖5.5

      (4)顯示操作流

      操作流將在圖中顯示為與鏈接平行的帶標(biāo)記箭頭。此鏈接用于向目標(biāo)元素傳輸消息或?qū)崿F(xiàn)這種傳輸。在圖編輯器中,選擇 User 和 ATM 之間的連接器鏈接。右鍵單擊距 ATM 生命線最近的連接器鏈接部分。如圖4.6所示,從彈出式菜單中選擇“Open Specification”,彈出”Link Specification For Untile”對(duì)話框,在對(duì)話框中按右鍵,從彈出式菜單中選擇“Insert To: ATM”,在Message Name中輸入public void GetCashOnHand(), 如圖5.6所示。

      圖5.6

      在 ATM 和Consortium 之間的連接器鏈接上,右鍵單擊靠近Consortium生命線的鏈接部分。

      添加消息 “ public void validateAccountInfo()”。Rose顯示 2: public void validateAccountInfo()。

      在 ATM 和 Branch 之間的連接器鏈接上,右鍵單擊靠近Branch 生命線的鏈接部分。

      添加消息 “public char getConnected”。Rose顯示3: public char getConnected()。

      右鍵單擊 Consortium 和 Branch 之間靠近Branch 生命線元素的連接器鏈接。添加消息 “public void verifyCardWithBank(int stringCardSTrip)”。Rose顯示 4: public void verifyCardWithBank(int stringCardSTrip)。

      完成的協(xié)作圖應(yīng)當(dāng)與圖5.7類似。

      圖5.7

      (5)模型檢查并保存

      使用Tools工具的”Check Model”,進(jìn)行模型檢查,查看是否有錯(cuò)。

      如無(wú)誤則在完成協(xié)作圖后,您可以保存該圖。在圖編輯器中,從菜單中選擇“保存”。

      (二)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的協(xié)作圖

      (1)如學(xué)生獎(jiǎng)學(xué)金評(píng)定的協(xié)作圖:倒入成績(jī)、操行評(píng)定、計(jì)算綜合評(píng)分、獎(jiǎng)學(xué)金評(píng)定(2)助學(xué)貸款申請(qǐng)協(xié)作圖:學(xué)生申請(qǐng)—班主任批準(zhǔn)—學(xué)院批準(zhǔn)-學(xué)校領(lǐng)導(dǎo)批準(zhǔn)(3)助學(xué)勤工儉學(xué)申請(qǐng)協(xié)作圖:(4)建立其它的一個(gè)以上協(xié)作圖

      五、實(shí)驗(yàn)報(bào)告要求

      1. 整理實(shí)驗(yàn)結(jié)果。

      2. 小結(jié)實(shí)驗(yàn)心得體會(huì)。

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

      構(gòu)建狀態(tài)圖

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

      1. 熟悉狀態(tài)圖的基本功能和使用方法。2. 掌握如何使用建模工具繪制狀態(tài)圖方法。

      二、實(shí)驗(yàn)器材

      1.計(jì)算機(jī)一臺(tái);

      2.Rational Rose 工具軟件;

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

      (1)分析圖書(shū)管理系統(tǒng)中的書(shū)和借書(shū)證的狀態(tài),畫(huà)出它們的狀態(tài)圖;

      (2)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的順序圖

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

      (一)圖書(shū)管理系統(tǒng)

      1、分析

      ? 在圖書(shū)管理系統(tǒng)中,分析書(shū)的狀態(tài)如下:

      (1)可借(2)被借(3)被預(yù)約(4)刪除

      ? 借書(shū)證的狀態(tài)如下:

      (1)可用(2)不可用(3)刪除

      2、繪圖步驟:

      下面介紹在Rose2003中創(chuàng)建類和它們之間關(guān)系的過(guò)程:

      (1)在“Logical View“中的“StateChart Diagram”菜單,雙擊圖標(biāo),出現(xiàn)圖6.1,為編輯狀態(tài)圖做好準(zhǔn)備。

      圖6.1(2)在工具欄中選擇“Start State”圖標(biāo)添加到編輯窗口中,如圖6.2所示。

      圖6.2(3)在工具欄中選擇“State”圖標(biāo),添加一個(gè)元素,命名為“New book”,如圖6.3所示。

      圖6.3(4)同樣的方法添加其它狀態(tài),如圖6.4所示。

      圖6.4 5)書(shū)的各個(gè)狀態(tài)之間添加轉(zhuǎn)移及相應(yīng)的事件,如圖6.5所示。(圖6.5(6)同樣的方法得借書(shū)證的狀態(tài)圖,如圖6.6所示。

      圖6.6

      (二)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的狀態(tài)圖

      (1)建立學(xué)生交款狀態(tài)圖:已交、未交、緩交、部分申請(qǐng)助學(xué)貸款(2)建立學(xué)生懲罰(記過(guò)以上)狀態(tài)圖:

      (3)建立學(xué)生黨員申請(qǐng)狀態(tài)圖:(4)建立其它的一個(gè)以上狀態(tài)圖

      五、實(shí)驗(yàn)報(bào)告要求

      1. 整理實(shí)驗(yàn)結(jié)果。

      2. 小結(jié)實(shí)驗(yàn)心得體會(huì)。

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

      構(gòu)建組件圖和配置圖

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

      1.掌握UML中組件圖和配置圖的建立方法; 2.掌握使用Rose繪制組件圖和配置圖;

      二、實(shí)驗(yàn)器材

      1.計(jì)算機(jī)一臺(tái);

      2.Rational Rose 工具軟件;

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

      (1)分析學(xué)校網(wǎng)上選課系統(tǒng)的組件圖,畫(huà)出系統(tǒng)組件圖。(2)分析學(xué)校網(wǎng)上選課系統(tǒng)的配置圖,畫(huà)出系統(tǒng)配置圖。(3)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的組件圖與配置圖

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

      (一)網(wǎng)上選課系統(tǒng)

      1.分析

      設(shè)計(jì)學(xué)校網(wǎng)上選課系統(tǒng)的組件圖和配置圖,需求如下: 某學(xué)校的網(wǎng)上選課系統(tǒng)主要包括如下功能:

      管理員通過(guò)系統(tǒng)管理界面進(jìn)入,建立本學(xué)期要開(kāi)的課程、將課程信息保存在數(shù)據(jù)庫(kù)中并可以對(duì)課程進(jìn)行改動(dòng)和刪除。

      學(xué)生通過(guò)客戶機(jī)瀏覽器根據(jù)學(xué)號(hào)和密碼進(jìn)入選課界面,在這里學(xué)生可以進(jìn)行三種操作:查詢已選課程、選課以及付費(fèi)。

      對(duì)于以上操作,可通過(guò)業(yè)務(wù)層,并將這些操作結(jié)果存入數(shù)據(jù)庫(kù)中。

      2.繪圖步驟:

      (1)繪制組件圖的步驟如下:

      ? 確定組件;(系統(tǒng)管理系統(tǒng), 課程管理系統(tǒng),選課系統(tǒng),查詢系統(tǒng),人員信息管理,注冊(cè)系統(tǒng),業(yè)務(wù)操作,備份系統(tǒng),付費(fèi)系統(tǒng))? 給組件加上必要的構(gòu)造型; ? 確定組件的聯(lián)系; ? 繪制組件圖。

      下面介紹在Rose2003中創(chuàng)建組件圖的過(guò)程:

      (a)在“Component View“中的 “New”的 “Component Diagram”中,出現(xiàn)圖7.1,為編輯組件圖做好準(zhǔn)備,31

      圖7.1(b)創(chuàng)建組件圖(根據(jù)要求創(chuàng)建)。

      (2)繪制配置圖的步驟如下: ? 確定節(jié)點(diǎn);(數(shù)據(jù)庫(kù)服務(wù)器,應(yīng)用服務(wù)器,打印機(jī),客戶端(n個(gè),連接為局域網(wǎng)))

      ? 加上構(gòu)造型; ? 確定節(jié)點(diǎn)的聯(lián)系; ? 繪制配置圖。

      下面介紹在Rose2003中創(chuàng)建配置圖的過(guò)程:

      (a)在“Deployment View“中,出現(xiàn)圖7.2,為編輯配置圖做好準(zhǔn)備,圖7.2

      圖7.3 系統(tǒng)配置圖

      (二)分析學(xué)生管理系統(tǒng),并畫(huà)出詳細(xì)的組件圖與配置圖

      (1)系統(tǒng)組件圖 ? 分析系統(tǒng)接口

      如建立查詢一個(gè)學(xué)生基本信息的接口,返回一個(gè)學(xué)生基本信息的類(類中有姓名、學(xué)號(hào)等屬性)

      ? 搜索系統(tǒng)用戶界面

      搜索系統(tǒng)用戶界面,作為系統(tǒng)一種特殊的接口,用戶與系統(tǒng)的接口,建立單獨(dú)的包Web InterFace保存用戶界面,如學(xué)生基本信息操作的用戶界面定義如下(從View繼承過(guò)來(lái)的一個(gè)類,這里只考慮界面,類只考慮程序,可有部分重復(fù)):

      為用戶界面考慮接口,并關(guān)聯(lián)不同的類

      (2)系統(tǒng)配置圖

      假設(shè)有以下的子系統(tǒng):學(xué)生管理系統(tǒng)用到財(cái)務(wù)子系統(tǒng)、成績(jī)管理子系統(tǒng),并各自有數(shù)據(jù)庫(kù)。

      五、實(shí)驗(yàn)報(bào)告要求

      1. 整理實(shí)驗(yàn)結(jié)果。

      2. 小結(jié)實(shí)驗(yàn)心得體會(huì)。

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

      Rose逆向工程

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

      1.掌握Rose中逆向工程的建立方法; 2.掌握根據(jù)逆向工程畫(huà)出類圖;

      二、實(shí)驗(yàn)器材

      1.計(jì)算機(jī)一臺(tái);

      2.Rational Rose 工具軟件;

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

      (1)分析Java程序,實(shí)現(xiàn)ROSE逆向工程。(2)根據(jù)逆向工程所得類,畫(huà)出對(duì)應(yīng)類圖。

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

      1.分析

      Rose功能十分強(qiáng)大,從項(xiàng)目需求分析、開(kāi)發(fā)、測(cè)試,整個(gè)項(xiàng)目過(guò)程都可使用rose,特別是在做需求分析與項(xiàng)目系統(tǒng)架構(gòu)時(shí)建模的能力巨強(qiáng)。但是每個(gè)人不是在項(xiàng)目一開(kāi)始就能參與到初期當(dāng)中來(lái)的,有時(shí)候整個(gè)項(xiàng)目一期完工了,進(jìn)行二期開(kāi)發(fā)時(shí),這個(gè)時(shí)候參與進(jìn)項(xiàng)目,為了能夠快速了解整個(gè)項(xiàng)目的框架,使用Rose的逆向工程的功能極為有用。

      2.繪圖步驟:

      (1)分析J2EE源代碼,了解其結(jié)構(gòu)

      (2)新建一個(gè)ROSE工程,選擇J2EE模板,.如圖8.1

      圖8.1 3.在出現(xiàn)的界面中,CLASSPATH中加入源代碼的目錄,加入支持的包,點(diǎn)擊'ADD RECURSIVE'點(diǎn) ‘SELECT ALL‘

      點(diǎn)擊REVERSE,完成后沒(méi)任何提示,點(diǎn)'DONE'結(jié)束。選擇ListS.java作為源代碼,如下圖8.2所示。

      圖8.2 點(diǎn)擊Reverse,逆向工程完成。逆向工程以后不會(huì)自動(dòng)生成類圖,但在logical

      view

      和component view 里面按照你的java包結(jié)構(gòu)會(huì)自動(dòng)生成相應(yīng)的包和類,要按照自己的要求建立類圖。下面我們將所選包下的所有類顯示在新建類圖中:

      ROSE里新建CLASS DIAGRAM,然后把類Env,EnvList和ListS包一個(gè)個(gè)拖到右側(cè)圖中,(或點(diǎn)菜單上的'QUERY'下的'ADD CLASS',確定)。如圖8.3所示:

      圖8.3

      五、實(shí)驗(yàn)報(bào)告要求

      1. 整理實(shí)驗(yàn)結(jié)果。

      2. 小結(jié)實(shí)驗(yàn)心得體會(huì)。

      第五篇:C語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)指導(dǎo)書(shū)

      課程設(shè)計(jì)指導(dǎo)書(shū)

      課程名稱: C語(yǔ)言程序設(shè)計(jì)

      班次: 自動(dòng)化2016-01,02,03班

      設(shè)計(jì)任務(wù):

      整個(gè)課程設(shè)計(jì)一共提供了10個(gè)題目,編號(hào)為1~10。按學(xué)號(hào)尾數(shù)進(jìn)行選題設(shè)計(jì)。

      課程設(shè)計(jì)目的

      1、進(jìn)一步掌握利用C語(yǔ)言進(jìn)行程序設(shè)計(jì)的能力;

      2、進(jìn)一步理解和運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法;

      3、初步掌握開(kāi)發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法;

      4、學(xué)會(huì)調(diào)試一個(gè)較長(zhǎng)程序的基本方法;

      5、學(xué)會(huì)利用流程圖表示算法;

      5、學(xué)習(xí)撰寫(xiě)課程設(shè)計(jì)報(bào)告;

      第一部分:課題描述(一共10個(gè)課題)

      課題1:圖書(shū)管理系統(tǒng)

      在磁盤(pán)上創(chuàng)建3個(gè)txt文件,命名book.txt,borrow.txt和reader.txt,分別存儲(chǔ)圖書(shū)、借閱和讀者的信息,每本圖書(shū)的基本信息有編號(hào)、書(shū)名、作者、出版日期、金額、類別、在館數(shù)量等。借閱基本信息有:編號(hào)、書(shū)名、金額、借書(shū)證號(hào)、借書(shū)日期、到期日期、罰款金額等。讀者信息包括借書(shū)證號(hào)、姓名、班級(jí)、學(xué)號(hào)、類別等。創(chuàng)建圖書(shū)管理系統(tǒng),該系統(tǒng)運(yùn)行時(shí)在控制臺(tái)中顯示菜單界面進(jìn)行鍵盤(pán)輸入操作,模擬借閱圖書(shū)的管理過(guò)程。

      系統(tǒng)功能包括以下方面: A、圖書(shū)信息管理

      圖書(shū)按類別進(jìn)行管理,常見(jiàn)類別有書(shū)籍、期刊、報(bào)刊等,在該模塊中又包含添加、刪除、修改、查詢等操作,操作結(jié)果打印在控制臺(tái)中。

      字段包含:書(shū)名,編號(hào),類別,存放地點(diǎn),入庫(kù)時(shí)間

      B、借閱信息管理

      圖書(shū)借閱模擬操作,包括以下功能:借出,歸還和續(xù)借等操作,對(duì)超期圖書(shū)進(jìn)行罰款金額顯示。另外可以設(shè)置罰金數(shù)額和最大借閱數(shù)量和時(shí)間等參數(shù)。

      字段包含:書(shū)名,編號(hào),借閱者,借出時(shí)間,歸還時(shí)間,借閱狀態(tài),超期時(shí)間,最大借閱數(shù)

      C、讀者信息管理

      讀者分為教師和學(xué)生兩大類等級(jí):教師和學(xué)生的最大圖書(shū)借閱數(shù)量和時(shí)間有所不同,并可對(duì)添加、掛失和查詢讀者信息。

      字段包含:讀者姓名,讀者類別,可借閱時(shí)間,可借閱數(shù)量,系統(tǒng)操作過(guò)程中能夠正確讀取和更新文件,并進(jìn)行正常的圖書(shū)、借閱和讀者管理操作。

      課題2:個(gè)人通訊錄管理系統(tǒng)

      在磁盤(pán)上建立1個(gè)communication.txt文件,作為讀取和存儲(chǔ)的通訊錄,該系統(tǒng)運(yùn)行時(shí)在控制臺(tái)中顯示菜單界面進(jìn)行鍵盤(pán)輸入操作,模擬通訊錄的操作過(guò)程。

      系統(tǒng)功能包括以下方面:

      A、通訊錄的每位聯(lián)系人信息有姓名、單位、固定電話、移動(dòng)手機(jī)、分類(如同事、朋友、同學(xué)、家人等)、EMAIL、QQ等。

      B、輸入、查找、刪除、修改聯(lián)系人信息功能。

      C、顯示功能:能夠顯示所有聯(lián)系人信息(大于10條的分屏顯示),或按分類進(jìn)行顯示。D、分類操作:可以按分類信息進(jìn)行同一類的聯(lián)系人操作,比如顯示、刪除和查找操作。E、(選作)可以加載聯(lián)系人頭像并進(jìn)行顯示,可用字符拼圖或讀取已有的黑白圖片文件。系統(tǒng)操作過(guò)程中能夠正確讀取和更新文件,并進(jìn)行正常的通訊錄聯(lián)系人操作。

      課題3:職工工資管理系統(tǒng)

      在計(jì)算機(jī)中建立相應(yīng)的數(shù)據(jù)結(jié)構(gòu),利用程序?qū)崿F(xiàn)工資的輸入、查詢、增、刪、改、統(tǒng)計(jì)、輸出等操作。

      1、設(shè)計(jì)一個(gè)能夠記錄公司員工工資的數(shù)據(jù)結(jié)構(gòu)(比如包括:?jiǎn)T工號(hào),姓名,基本工資,補(bǔ)貼金額,獎(jiǎng)勵(lì)金額,扣除金額、實(shí)發(fā)工資等)、文件(文件作為工資數(shù)據(jù)的保存介質(zhì))。注:,其中實(shí)發(fā)工資=基本工資+補(bǔ)貼金額+獎(jiǎng)勵(lì)金額-扣除金額

      2、應(yīng)用文件保存工資管理數(shù)據(jù)。

      3、新增:能將所有輸入的員工工資數(shù)據(jù)保存到文件中,并可選擇繼續(xù)輸入或退出。

      4、查找:輸入員工的員工號(hào),并在文件中查找

      ? 若找到,則顯示該員工的工資詳情 ? 否則提示未找到。? 無(wú)論查找成功否,應(yīng)還可選擇繼續(xù)查找或退出。

      5、刪除:輸入員工的員工號(hào),并在文件中查找

      ? 若找到,提示是否確定刪除

      ? 若選擇是,則刪除文件中該員工信息 ? 若選擇否,則取消,? 否則提示無(wú)此員工信息

      ? 無(wú)論查找成功否,應(yīng)還可選擇繼續(xù)查找或退出。

      6、修改:輸入員工的員工號(hào),并在文件中查找

      ? 若找到,顯示該員工的所有信息,并可進(jìn)行輸入。完成后將現(xiàn)輸入的內(nèi)容覆蓋原內(nèi)容保存到文件中。

      ? 否則提示無(wú)此員工信息

      ? 無(wú)論查找成功否,應(yīng)還可選擇繼續(xù)查找或退出。

      7、統(tǒng)計(jì):分類匯總并輸出所有員工的基本工資、補(bǔ)貼金額、獎(jiǎng)勵(lì)金額、扣除金額、實(shí)發(fā)工資的總金額和平均金額。如:

      基本工資、補(bǔ)貼金額、獎(jiǎng)勵(lì)金額、扣除金額、實(shí)發(fā)工資

      總和 12000 1300 1400 1500 13200 平均 1200 130 140 150 1320 人數(shù): 10

      8、退出:退出程序

      課題4:自動(dòng)售貨機(jī)系統(tǒng)

      某公司請(qǐng)你為其生產(chǎn)的自動(dòng)售貨機(jī)編寫(xiě)軟件。這種無(wú)人值守自動(dòng)售貨機(jī)販賣(mài)價(jià)值為A、B、C的三種商品,價(jià)格分別為2元,3元和6元。顧客投入10元的紙幣,然后選擇購(gòu)買(mǎi)3種商品之一,自動(dòng)售貨機(jī)吐出商品,并且找給用戶零錢(qián)。如果商品已經(jīng)賣(mài)完,或者無(wú)法找零,則給出用戶一個(gè)提示,商品已售完,并且退還紙幣。

      自然,你的售貨機(jī)用戶希望盡可能地給用戶找零,以免流失顧客。為了調(diào)查用戶的喜好,希望得到三種商品的每日消費(fèi)數(shù)據(jù),由此來(lái)調(diào)整貨柜中三種貨物的存貯量。你的程序?qū)?shí)現(xiàn)以下功能:

      庫(kù)存查詢:檢索當(dāng)前三種商品的儲(chǔ)存量 商品上架:為三種商品增加或者減少儲(chǔ)量

      銷售查詢:分別統(tǒng)計(jì)今天每種商品的銷售量和銷售額 會(huì)計(jì)查詢:打印當(dāng)天的往來(lái)帳目以及剩余零鈔數(shù)目

      結(jié)算功能:取出今天所有的10元紙幣,并且分別設(shè)置零鈔的數(shù)目

      銷售界面:顧客投入紙幣,選擇商品,獲得商品和零錢(qián);或者直接顯示錯(cuò)誤并退還紙幣 【題目要求】

      (1)為各項(xiàng)操作功能設(shè)計(jì)一個(gè)菜單。應(yīng)用程序運(yùn)行后,先顯示這個(gè)菜單,然后操作員通過(guò)菜單項(xiàng)選擇希望進(jìn)行的操作項(xiàng)目;

      (2)你的售貨機(jī)用戶不希望每一位顧客都有權(quán)限執(zhí)行以上功能,因此一旦進(jìn)入銷售界面,就不應(yīng)當(dāng)退回到系統(tǒng)界面,但是應(yīng)允許顧客反復(fù)購(gòu)買(mǎi),前一個(gè)顧客購(gòu)買(mǎi)完畢后應(yīng)停留在銷售界面里允許下一個(gè)顧客操作。直到某位特殊的顧客(超級(jí)顧客)輸入特殊的商品代號(hào)(密碼)方可回到主控界面。

      (3)計(jì)算機(jī)安排的找零算法應(yīng)該合理,不要出現(xiàn)某一種零錢(qián)找光的情況。同時(shí)顧客也不喜歡 明明有5元零鈔,卻被找給5個(gè)一元的零鈔。盡量滿足這兩個(gè)要求。

      (3)、要求以上功能分別用函數(shù)實(shí)現(xiàn)。并要求用C語(yǔ)言的文件操作語(yǔ)句將以上所有結(jié)果保存在文件goods.txt。

      【輸入/輸出要求】

      (1)應(yīng)用程序運(yùn)行后,先顯示一個(gè)菜單,然后用戶根據(jù)需要選擇相應(yīng)的操作項(xiàng)目。進(jìn)入每個(gè)操作后,根據(jù)程序的提示輸入相應(yīng)的信息;

      (2)要求用戶輸入數(shù)據(jù)時(shí),要給出清晰、明確的提示信息,包括輸入的數(shù)據(jù)內(nèi)容、格式及結(jié)束方式等。

      根據(jù)題目要求,運(yùn)用所學(xué)知識(shí),完成設(shè)計(jì)和實(shí)現(xiàn)工作,并按照書(shū)寫(xiě)規(guī)范,撰寫(xiě)課程設(shè)計(jì)報(bào)告。

      課題5:銷售管理系統(tǒng)

      某公司有四個(gè)銷售員(編號(hào):1-4),負(fù)責(zé)銷售五種產(chǎn)品(編號(hào):1-5)。每個(gè)銷售員都將當(dāng)天出售的每種產(chǎn)品各寫(xiě)一張便條交上來(lái)。每張便條包含內(nèi)容:

      1)銷售員的代號(hào)

      2)產(chǎn)品的代號(hào)

      3)這種產(chǎn)品的當(dāng)天的銷售額

      每位銷售員每天可能上繳0-5張便條。假設(shè),收集到了上個(gè)月的所有便條,編寫(xiě)一個(gè)處理系統(tǒng),讀取上個(gè)月的銷售情況(在磁盤(pán)上創(chuàng)建一個(gè)txt文件記錄上個(gè)月的銷售信息),進(jìn)行如下處理。

      1)計(jì)算上個(gè)月每個(gè)人每種產(chǎn)品的銷售額。

      2)按銷售額對(duì)銷售員進(jìn)行排序,輸出排序結(jié)果(銷售員代號(hào))

      3)統(tǒng)計(jì)每種產(chǎn)品的總銷售額,對(duì)這些產(chǎn)品按從高到底的順序,輸出排序結(jié)果(需輸出產(chǎn)品的代號(hào)和銷售額)

      4)輸出統(tǒng)計(jì)報(bào)表

      銷售統(tǒng)計(jì)報(bào)表

      產(chǎn)品代號(hào)

      銷售之和 銷售員號(hào) 1 2 3 4 5 每種產(chǎn)品之和 總和

      5)可以按產(chǎn)品代號(hào)查詢,也可以按銷售員號(hào)查詢。

      課題6: 車(chē)票管理系統(tǒng)一車(chē)站每天有n個(gè)發(fā)車(chē)班次,每個(gè)班次都有一班次號(hào)(1、2、3?n),固定的發(fā)車(chē)時(shí)間,固定的路線(起始站、終點(diǎn)站),大致的行車(chē)時(shí)間,固定的額定載客量。如

      班次 發(fā)車(chē)時(shí)間 起點(diǎn)站 終點(diǎn)站 行車(chē)時(shí)間 額定載量 已定票人數(shù) 1 8:00 郫縣 廣漢 2 45 30 2 6:30 郫縣 成都 0.5 40 40 3 7:00 郫縣 成都 0.5 40 20 4 10:00 郫縣 成都 0.5 40 2 ?

      (一)功能要求:用c語(yǔ)言設(shè)計(jì)一系統(tǒng),能提供下列服務(wù):(1)錄入班次信息(信息用文件保存),可不定時(shí)地增加班次數(shù)據(jù)(2)瀏覽班次信息,可顯示出所有班次當(dāng)前狀總(如果當(dāng)前系統(tǒng)時(shí)間超過(guò)了某班次的發(fā)車(chē)時(shí)間,則顯示“此班已發(fā)出”的提示信息)。

      (3)查詢路線:可按班次號(hào)查詢 ,可按終點(diǎn)站查詢(4)售票和退票功能

      A:當(dāng)查詢出已定票人數(shù)小于額定載量且當(dāng)前系統(tǒng)時(shí)間小于發(fā)車(chē)時(shí)間時(shí)才能售票,自動(dòng)更新已售票人數(shù)

      B:退票時(shí),輸入退票的班次,當(dāng)本班車(chē)未發(fā)出時(shí)才能退票,自動(dòng)更新已售票人數(shù)

      課題

      7、單項(xiàng)選擇題標(biāo)準(zhǔn)化考試系統(tǒng)

      在磁盤(pán)上創(chuàng)建一個(gè)test.txt文件,使用記事本打開(kāi)后先寫(xiě)入40道單選題和相應(yīng)的選項(xiàng)和正確答案。再編寫(xiě)一個(gè)單項(xiàng)選擇題標(biāo)準(zhǔn)化考試系統(tǒng),該系統(tǒng)功能要求: 字段:題干,備選答案,標(biāo)準(zhǔn)答案

      A、用文件保存試題庫(kù)。(每個(gè)試題包括題干、4個(gè)備選答案、標(biāo)準(zhǔn)答案)。B、試題錄入、修改和刪除。

      C、試題抽?。好看螐脑囶}庫(kù)中可以隨機(jī)抽出N道題(N由鍵盤(pán)輸入)。D、考生答題:用戶抽取N道試題進(jìn)行答題,鍵盤(pán)輸入每道題的答案。

      E、自動(dòng)判卷:系統(tǒng)可根據(jù)用戶答案與標(biāo)準(zhǔn)答案的對(duì)比實(shí)現(xiàn)判卷并給出成績(jī)。

      系統(tǒng)操作過(guò)程中能夠正確讀取和更新試題文件,并進(jìn)行正常的試題管理、抽取、答題和判卷操作,該過(guò)程在控制臺(tái)中顯示,人機(jī)交互方便。

      課題8:醫(yī)院門(mén)診候診的隊(duì)列管理程序

      要求采用先來(lái)先就診的排隊(duì)方式(就診順序與掛號(hào)單編號(hào)無(wú)關(guān)),假設(shè)掛號(hào)時(shí)編碼是連續(xù)的,但由于同一個(gè)門(mén)診科目有3個(gè)診室,其中35(含35)歲以上的在第一診室,35歲以下男患者進(jìn)第二診室,其它的進(jìn)第三診室,程序啟動(dòng)后顯示下列菜單:

      字段:掛號(hào)單號(hào),患者姓名,年齡,性別,分診室號(hào),【實(shí)現(xiàn)提示】 1--掛號(hào) 2--叫號(hào) 3--分診室

      4--顯示各診室隊(duì)列信息

      5--統(tǒng)計(jì)當(dāng)天就診的患者情況(要求按性別進(jìn)行統(tǒng)計(jì)和按任意年齡區(qū)段進(jìn)行統(tǒng)計(jì))6--結(jié)束程序

      選1時(shí),提示用戶在一行內(nèi)輸入姓名及掛號(hào)單編號(hào);

      選2時(shí),顯示排在隊(duì)列中第一位患者姓名、掛號(hào)單編號(hào),并將其從掛號(hào)序列中刪除 選3時(shí),進(jìn)行診室分配

      選4時(shí),按隊(duì)列順序顯示個(gè)診室排隊(duì)人的姓名、掛號(hào)單編號(hào)及所在診室 選5時(shí),進(jìn)行兩種統(tǒng)計(jì)方法的選擇,并進(jìn)行必要的統(tǒng)計(jì)計(jì)算 選6時(shí),退出程序的運(yùn)行

      要求1~5中每一個(gè)步驟完成后都能重新顯示此選擇菜單

      課題9:成績(jī)管理系統(tǒng)

      現(xiàn)有學(xué)生成績(jī)信息,內(nèi)容如下

      姓名 學(xué)號(hào) 語(yǔ)文 數(shù)學(xué) 英語(yǔ) 張明明 01 67 78 82 李成友 02 78 91 88 張輝燦 03 68 82 56 王露 04 56 45 77 陳東明 05 67 38 47 ?.......?

      請(qǐng)用C語(yǔ)言編寫(xiě)一系統(tǒng),實(shí)現(xiàn)學(xué)生信息管理,軟件的功能要求如下:(1)信息維護(hù):

      要求:學(xué)生信息數(shù)據(jù)要以文件的形式保存,能實(shí)現(xiàn)學(xué)生信息數(shù)據(jù)的維護(hù)。此模塊包括子模塊有:增加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息(2)信息查詢:

      要求:查詢時(shí)可實(shí)現(xiàn)按姓名查詢、按學(xué)號(hào)查詢(3)成績(jī)統(tǒng)計(jì):

      要求:A輸入任意的一個(gè)課程名(如數(shù)學(xué))和一個(gè)分?jǐn)?shù)段(如60--70),統(tǒng)計(jì)出在此分?jǐn)?shù)段的學(xué)生情況。

      (4)排序:能對(duì)用戶指定的任意課程名,按成績(jī)升序或降序排列學(xué)生數(shù)據(jù)并顯示排序結(jié)果

      課題10:停車(chē)場(chǎng)管理系統(tǒng)設(shè)計(jì)

      1.有一個(gè)兩層的停車(chē)場(chǎng), 每層有6個(gè)車(chē)位, 當(dāng)?shù)谝粚榆?chē)停滿后才允許使用第二層.(停車(chē)場(chǎng)可用一個(gè)二維數(shù)組實(shí)現(xiàn), 每個(gè)數(shù)組元素存放一個(gè)車(chē)牌號(hào))每輛車(chē)的信息包括車(chē)牌號(hào), 層號(hào), 車(chē)位號(hào), 停車(chē)時(shí)間共4項(xiàng).其中停車(chē)時(shí)間按分鐘計(jì)算

      2.假設(shè)停車(chē)場(chǎng)初始狀態(tài)為第一層已經(jīng)停有4輛車(chē), 其車(chē)位號(hào)依次為1—4 , 停車(chē)時(shí)間依次為20, 15, 10 , 5.即先將這四輛車(chē)的信息存入文件”car.dat”中(數(shù)組的對(duì)應(yīng)元素也要進(jìn)行賦值)3.停車(chē)操作: 當(dāng)一輛車(chē)進(jìn)入停車(chē)場(chǎng)時(shí), 先輸入其車(chē)牌號(hào), 再為它分配一個(gè)層號(hào)和一個(gè)車(chē)位號(hào)(分配前先查詢車(chē)位的使用情況, 如果第一層有空則必須停在第一層), 停車(chē)時(shí)間設(shè)為5 , 最后將新停入的汽車(chē)的信息添加文件”car.dat”中, 并將在此之前的所有車(chē)的停車(chē)時(shí)間加5.4.收費(fèi)管理(取車(chē)): 當(dāng)有車(chē)離開(kāi)時(shí), 輸入其車(chē)牌號(hào), 先按其停車(chē)時(shí)間計(jì)算費(fèi)用, 每5分鐘0.2元.(停車(chē)費(fèi)用可設(shè)置一個(gè)變量進(jìn)行保存), 同時(shí)從文件”car.dat”中刪除該車(chē)的信息, 并將該車(chē)對(duì)應(yīng)的車(chē)位設(shè)置為可使用狀態(tài)(即二維數(shù)組對(duì)應(yīng)元素清零).按用戶的選擇來(lái)判斷是否要輸出停車(chē)收費(fèi)的總計(jì).5.輸出停車(chē)場(chǎng)中全部車(chē)輛的信息.6.退出系統(tǒng).字段:車(chē)牌號(hào),樓層號(hào),車(chē)位號(hào),入庫(kù)時(shí)間,出庫(kù)時(shí)間,停車(chē)時(shí)間,停車(chē)費(fèi)用

      第二部分:基礎(chǔ)訓(xùn)練

      若感覺(jué)直接完成所選課題很困難,可以嘗試先完成基礎(chǔ)訓(xùn)練。完成基礎(chǔ)訓(xùn)練,有一定的編程基礎(chǔ)后,在完成所選課題。

      第一步: 定義一個(gè)結(jié)構(gòu)體類型,用來(lái)表示學(xué)生的各種屬性。定義一個(gè)學(xué)生結(jié)構(gòu)體變量,從鍵盤(pán)輸入各個(gè)分量的值,然后從屏幕輸出該結(jié)構(gòu)體變量的各個(gè)分量。學(xué)生結(jié)構(gòu)體類型定義如下:

      typedef struct _CStudent { char szName[20];/* 學(xué)生姓名 */ char nNumber[10] /* 學(xué)號(hào) */ int nAge;/* 年齡 */ char cSex;/* 性別,約定 ?m? 代表女,?f?代表男 */ char szAddress[20];/* 家庭地址 */ double dDataStruct;/* 數(shù)據(jù)結(jié)構(gòu)成績(jī) */ double dMath;/* 數(shù)學(xué)成績(jī) */ double dEnglish;/* 英語(yǔ)成績(jī) */ }CStudent;

      第二步:

      定義一個(gè)結(jié)構(gòu)體類型,用來(lái)表示學(xué)生的各種屬性。定義一個(gè)含3個(gè)元素的學(xué)生結(jié)構(gòu)體變量數(shù)組,從鍵盤(pán)輸入3個(gè)同學(xué)的信息,然后從屏幕輸出該結(jié)構(gòu)體變量數(shù)組各成員的值。

      建議:定義兩個(gè)函數(shù),一個(gè)用于從鍵盤(pán)輸入一個(gè)學(xué)生結(jié)構(gòu)體變量的各個(gè)分量的值,另一個(gè)把一個(gè)學(xué)生結(jié)構(gòu)體變量的值輸出到屏幕。函數(shù)原型可以如下:

      void input(CStudent* p)/* 從鍵盤(pán)輸入 */ void output(CStudent* p)/* 向屏幕輸出 */

      第三步:

      從鍵盤(pán)輸入一個(gè)學(xué)生的信息,然后以文本方式寫(xiě)入文件。定義另一個(gè)學(xué)生結(jié)構(gòu)體變量,用于從文件讀出數(shù)據(jù),然后把數(shù)據(jù)顯示到屏幕。

      第四步:

      定義一個(gè)含3個(gè)元素的學(xué)生結(jié)構(gòu)體數(shù)組,從鍵盤(pán)輸入3個(gè)同學(xué)的信息,以文本方式把這些數(shù)據(jù)寫(xiě)入文件。

      第五步:

      將課題4寫(xiě)入文件的數(shù)據(jù)全部讀出,輸出到屏幕。

      附錄一:

      本設(shè)計(jì)中需要清屏。說(shuō)明如下:

      格式:

      system(“cls”)包含頭文件: stdlib.h

      附錄二:控制臺(tái)程序選擇菜單的完成

      #include #include

      int main(){ int choice1 = 1, choice2;

      do {

      printf(“歡迎使用學(xué)生成績(jī)管理系統(tǒng)n”);

      printf(“請(qǐng)選擇程序功能n”);

      printf(“

      1、數(shù)據(jù)錄入n”);

      printf(“

      2、數(shù)據(jù)查詢n”);

      printf(“

      3、輸出所有同學(xué)信息n”);

      printf(“

      4、退出程序n”);

      scanf(“%d”, &choice1);

      switch(choice1)

      {

      case 1:

      printf(“數(shù)據(jù)錄入n”);

      /*編寫(xiě)數(shù)據(jù)錄入程序*/

      printf(“返回上級(jí)菜單請(qǐng)按n退出程序請(qǐng)按n”);

      scanf(“%d”, &choice1);

      break;

      case 2:

      printf(“

      1、按學(xué)號(hào)查詢n”);

      printf(“

      2、按姓名查詢n”);

      scanf(“%d”, &choice2);

      switch(choice2)

      {

      case 1:

      printf(“按學(xué)號(hào)查詢n”);

      /*編寫(xiě)按學(xué)號(hào)查詢程序*/

      break;

      case 2:

      printf(“按姓名查詢n”);

      /*編寫(xiě)按姓名查詢程序*/

      break;

      }

      printf(“返回上級(jí)菜單請(qǐng)按n退出程序請(qǐng)按n”);

      scanf(“%d”, &choice1);

      break;

      case 3:

      printf(“輸出所有同學(xué)信息n”);

      /*編寫(xiě)輸出所有同學(xué)信息程序*/

      printf(“返回上級(jí)菜單請(qǐng)按n退出程序請(qǐng)按n”);

      scanf(“%d”, &choice1);

      break;

      case 4:

      break;

      }

      system(“cls”);}while(choice1!= 4);

      printf(“程序結(jié)束n”);return 0;}

      附錄三:關(guān)于菜單的處理技術(shù)舉例 #include #include

      int menu_select();/*主菜單函數(shù)*/ /******主函數(shù)開(kāi)始*******/ main(){ int i;Salary sal[M];/*定義結(jié)構(gòu)體數(shù)組*/ int length;/*保存記錄長(zhǎng)度*/ clrscr();/*清屏*/ for(;;)/*無(wú)限循環(huán)*/ { switch(menu_select())/*調(diào)用主菜單函數(shù),返回值整數(shù)作開(kāi)關(guān)語(yǔ)句的條件*/ { case 1:length=enter(sal);break;/*輸入記錄*/ case 2:list(sal);break;/*顯示全部記錄*/ case 3:search(sal,name);break;/*按姓名查找顯示記錄*/ case 4:length=delete(sal);break;/*刪除記錄*/ case 5:length=add(sal);break;/*插入記錄*/ case 6:save(sal);break;/*保存文件*/ case 7:length=load(sal);break;/*讀文件*/ case 8:display(sal);break;/*按序號(hào)查找顯示記錄*/ case 9:sort(sal);break;/*排序成新文件*/ case 10:copy(sal);break;/*數(shù)據(jù)備份*/ case 0:exit(0);/*如返回值為0則程序結(jié)束*/ } } } /*菜單函數(shù),函數(shù)返回值為整數(shù),代表所選的菜單項(xiàng)*/ menu_select(){ char s[80];int c;gotoxy(1,25);/*將光標(biāo)定為在第25行,第1列*/ printf(“press any key enter menu......n”);/*提示按任意鍵進(jìn)入菜單選擇*/ getch();/*讀入任意字符*/ clrscr();/*清屏*/ gotoxy(1,1);printf(“********************MENU*********************nn”);printf(“ 1.Enter a recordn”);printf(“ 2.List the filen”);printf(“ 3.Search record on namen”);printf(“ 4.Delete a recordn”);printf(“ 5.Add record n”);printf(“ 6.Save the filen”);printf(“ 7.Load the filen”);printf(“ 8.Display record on ordern”);printf(“ 9.Sort to a new filen”);printf(“ 10.Copy to a new file n”);printf(“ 0.Quitn”);printf(“***********************************************n”);do{ printf(“n Enter you choice(0~10):”);/*提示輸入選項(xiàng)*/ scanf(“%d”,&c);/*輸入選擇項(xiàng)*/ }while((c>10)||(c<0));/*選擇項(xiàng)不在0~11之間重輸*/ return c;/*返回選擇項(xiàng),主程序根據(jù)該數(shù)調(diào)用相應(yīng)的函數(shù)*/ }

      附錄四:關(guān)于頭文件的使用

      /******頭文件(.h)***********/ #include “stdio.h” /*I/O函數(shù)*/ #include “stdlib.h” /*標(biāo)準(zhǔn)庫(kù)函數(shù)*/ #include “string.h”/*字符串函數(shù)*/ #include “ctype.h” /*字符操作函數(shù)*/ #define M 50 /*定義常數(shù)表示記錄數(shù)*/ typedef struct /*定義數(shù)據(jù)結(jié)構(gòu)*/ { char name[20];/*姓名*/ char no[10];/*員工編號(hào)*/ char units[30];/*部門(mén)*/ char post[10];/*職稱*/ ?? }Salary;/******以下是函數(shù)原型*******/ int enter(SALARY t[]);/*輸入記錄*/ void list(SALARY t[]);/*顯示全部記錄*/ void search(SALARY t[],char name[]);/*按姓名查找顯示記錄*/ int delete(SALARY t[]);/*刪除記錄*/ int add(SALARY t[],int n);/*插入記錄*/ void save(SALARY t[]);/*記錄保存為文件*/ int load(SALARY t[]);/*從文件中讀記錄*/ void display(SALARY t[]);/*按序號(hào)查找顯示記錄*/ void sort(SALARY t[]);/*排序成新文件*/ void copy(SALARY t[]);/*數(shù)據(jù)備份*/ int menu_select();/*主菜單函數(shù)*/

      附錄五:關(guān)于文件的使用

      要將信息永久保存,可采用磁盤(pán)文件的形式來(lái)存儲(chǔ)數(shù)據(jù)。C語(yǔ)言提供了豐富的文件操作函數(shù)。從文件編碼的方式來(lái)看,文件可分為ASCII碼文件和二進(jìn)制碼文件兩種。ASCII文件也稱為文本文件,這種文件在磁盤(pán)中存放時(shí)每個(gè)字符對(duì)應(yīng)一個(gè)字節(jié),用于存放對(duì)應(yīng)的ASCII碼。例如,數(shù)5678的存儲(chǔ)形式為:

      ASC碼:00110101 00110110 00110111 00111000

      十進(jìn)制碼: 5 共占用4個(gè)字節(jié)。ASCII碼文件可在屏幕上按字符顯示,例如源程序文件就是ASCII文件,用DOS命令TYPE可顯示文件的內(nèi)容。由于是按字符顯示,因此能讀懂文件內(nèi)容。

      二進(jìn)制文件是按二進(jìn)制的編碼方式來(lái)存放文件的。例如,數(shù)5678的存儲(chǔ)形式為: 00010110 00101110只占二個(gè)字節(jié)。二進(jìn)制文件雖然也可在屏幕上顯示,但其內(nèi)容無(wú)法讀懂。C系統(tǒng)在處理這些文件時(shí),并不區(qū)分類型,都看成是字符流,按字節(jié)進(jìn)行處理。輸入輸出字符流的開(kāi)始和結(jié)束只由程序控制而不受物理符號(hào)(如回車(chē)符)的控制。因此也把這種文件稱作“流式文件”。在C語(yǔ)言中,文件操作都是由庫(kù)函數(shù)來(lái)完成的。

      文件打開(kāi)函數(shù)fopen fopen函數(shù)用來(lái)打開(kāi)一個(gè)文件,其調(diào)用的一般形式為: 文件指針名=fopen(文件名,使用文件方式)其中,“文件指針名”必須是被說(shuō)明為FILE 類型的指針變量,“文件名”是被打開(kāi)文件的文件名?!笆褂梦募绞健笔侵肝募念愋秃筒僮饕蟆!拔募笔亲址A炕蜃址?dāng)?shù)組。例如: FILE *fp;fp=(“file a”,“r”);其意義是在當(dāng)前目錄下打開(kāi)文件file a,只允許進(jìn)行“讀”操作,并使fp指向該文件。

      又如:FILE *fphzk;fphzk=(“c:hzk16',”rb“)其意義是打開(kāi)C驅(qū)動(dòng)器磁盤(pán)的根目錄下的文件hzk16,這是一個(gè)二進(jìn)制文件,只允許按二進(jìn)制方式進(jìn)行讀操作。兩個(gè)反斜線“ ”中的第一個(gè)表示轉(zhuǎn)義字符,第二個(gè)表示根目錄。使用文件的方式共有12種,下面給出了它們的符號(hào)和意義。

      文件使用方式

      意 義

      “rt”

      只讀打開(kāi)一個(gè)文本文件,只允許讀數(shù)據(jù) “wt”

      只寫(xiě)打開(kāi)或建立一個(gè)文本文件,只允許寫(xiě)數(shù)據(jù) “at”

      追加打開(kāi)一個(gè)文本文件,并在文件末尾寫(xiě)數(shù)據(jù) “rb”

      只讀打開(kāi)一個(gè)二進(jìn)制文件,只允許讀數(shù)據(jù) “wb”

      只寫(xiě)打開(kāi)或建立一個(gè)二進(jìn)制文件,只允許寫(xiě)數(shù)據(jù) “ab”

      追加打開(kāi)一個(gè)二進(jìn)制文件,并在文件末尾寫(xiě)數(shù)據(jù) “rt+”

      讀寫(xiě)打開(kāi)一個(gè)文本文件,允許讀和寫(xiě) “wt+”

      讀寫(xiě)打開(kāi)或建立一個(gè)文本文件,允許讀寫(xiě)

      “at+”

      讀寫(xiě)打開(kāi)一個(gè)文本文件,允許讀,或在文件末追加數(shù)據(jù) “rb+”

      讀寫(xiě)打開(kāi)一個(gè)二進(jìn)制文件,允許讀和寫(xiě) “wb+”

      讀寫(xiě)打開(kāi)或建立一個(gè)二進(jìn)制文件,允許讀和寫(xiě)

      “ab+”

      讀寫(xiě)打開(kāi)一個(gè)二進(jìn)制文件,允許讀,或在文件末追加數(shù)據(jù)

      fclose函數(shù)

      調(diào)用的一般形式是: fclose(文件指針); 例如:fclose(fp);正常完成關(guān)閉文件操作時(shí),fclose函數(shù)返回值為0。如返回非零值則表示有錯(cuò)誤發(fā)生。文件的讀寫(xiě)對(duì)文件的讀和寫(xiě)是最常用的文件操作。

      讀字符串函數(shù)fgets函數(shù)

      fgets函數(shù)的功能是從指定的文件中讀一個(gè)字符串到字符數(shù)組中,函數(shù)調(diào)用的形式為: fgets(字符數(shù)組名,n,文件指針); 其中的n是一個(gè)正整數(shù)。表示從文件中讀出的字符串不超過(guò) n-1個(gè)字符。在讀入的最后一個(gè)字符后加上串結(jié)束標(biāo)志'