第一篇:個體實驗報告4順序圖
《系統分析與設計》實驗報告 實驗四 順序圖
【實驗名稱】順序圖 【實驗目的】
1.理解動態交互模型的建模技術。
2.掌握順序圖的描述方法。
【實驗器材】
1.計算機一臺。
2.Rational Rose 工具軟件。
【實驗內容】
在前面的類圖分析、設計中,我們已經確定了類的屬性,類之間的關系,現在我們要考慮類的方法。尋找類的操作的有效方法之一是繪制交互圖。交互圖體現了如何為對象分配職責。當一個對象接收了某條消息,就表明該對象具有處理該條消息的職責。
針對特定場景中各個系統事件單獨繪制交互圖,用以說明系統接收到該事件后,由哪些對象互相協作、來共同完成對事件的處理,從而抽象出對象以及對象的職責。順序圖用來描述對象間的交互行為。
【實驗結果】
將各自負責的子系統的順序圖復制,有幾個就復制幾個。
姓名
學號
實驗日期
實驗地點
班級
任課教師 王麗穎
第二篇:順序表的操作實驗報告
順序表的基本操作
一、實驗目的
1、復習C++語言程序設計中的知識。
2、熟悉線性表的邏輯結構。
3、熟悉線性表的基本運算在兩種存儲結構上的實現。
4、掌握順序表的存儲結構形式及其描述和基本運算的實現。
5、熟練掌握動態鏈表結構及有關算法的設計
二、實驗內容
實現順序表的建立、取元素、修改元素、插入、刪除等順序表的基本操作。[基本要求](1).依次從鍵盤讀入數據,建立帶頭結點的順序表;(2).輸出順序表中的數據元素
(3).根據指定條件能夠取元素和修改元素;(4).實現在指定位置插入和刪除元素的功能。
三、實驗步驟、調試及輸出結果
(—).數據結構與核心算法的設計描述: #include
/*當前的表長度*/ /*順序表的打印:*/ void PrintList(SeqList *L,int n){int i;printf(“the sqlist isn”);for(i=1;i<=n;i++)printf(“%d ”,L->elem[i]);printf(“n”);}
/*順序表的查找:*/ int LocateList(SeqList *L,int x){int i;i=1;while(((L->elem[i])!=x)&&(i<=10))++i;if((L->elem[i])==x)return(i);else return(0);}
/*順序表的插入:*/ void InsertList(SeqList *L,int x,int i){int j;if(i<1 ||i>L->length+1)printf(“no insert position!n”);else {for(j=L->length;j>=i;j--)L->elem[j+1]=L->elem[j];L->elem[i]=x;L->length++;} } /*順序表的刪除:*/ void DeleteList(SeqList *L,int i){int j;if(i<1 ||i>L->length)printf(“no delete position!n”);else {for(j=i;j<=(L->length)-1;j++)L->elem[j]=L->elem[j+1];L->length--;} } void main(){
SeqList L;int i,x;int n=10;
/*當前順序表的長度*/ L.length=0;CreateList(&L,n);
/*建立順序表*/ PrintList(&L,L.length);
/*輸出順序表*/ printf(“input the research element:”);scanf(“%d”,&x);i=LocateList(&L,x);/*順序表查找*/ printf(“the research position is %dn”,i);printf(“input the position of insert:”);scanf(“%d”,&i);printf(“input the value of insert:”);scanf(“%d”,&x);InsertList(&L,x,i);/*順序表插入*/ PrintList(&L,L.length);
/*輸出順序表*/ printf(“input the position of delete:”);scanf(“%d”,&i);DeleteList(&L,i);/*順序表刪除*/ PrintList(&L,L.length);/*輸出順序表*/ }(二).調試及輸出結果 測試數據:
1、輸入n個數;
2、輸出順序列表;
3、順序表的查找;4.順序表的插入;
5、順序表的刪除;
數據測試如下截圖:
四、實驗討論與總結:
通過這次寫實驗報告,我深切的理解了這門課的本質。剛開始學這門課時,當時還不清楚這門課程的目的,現在,我真正的理解了:數據結構像是身體的骨骼。數據結構是個框架,模型,抽象數據類型中列舉了各種操作,而所用的C++語言,將各種操作描述出來構成算法。
在這次設計的過程中,我知道了順序表是按順序存儲的,用了一維數組來存儲,但是,在執行時出現了問題。后來問同學,指出我的錯誤,不過獲益不少。我又重新整理思路,把順序表的基本操作寫好了。雖然走了很多彎路,但是讓我認識到,一定要創新,大膽,不能按照舊的思路去干新的事情。
單鏈表寫起來簡單多了,這個很快就搞定了。但是細節上出了問題。比如說,有些變量的重復定義,有些變量又沒有定義,在調用函數,就直接復制過來,沒有改參數……通過修改,我深刻理解到:細節決定成敗,在以后,不管做任何事情都要認真,細心。
這次的實驗報告,讓我受益匪淺,不僅有知識方面的,還有生活和精神上的。總之,我會繼續我的興趣編程,相信在編程的過程中,能不斷的提高自己。
第三篇:工圖實驗報告2
西安郵電大學
工程制圖與計算機制圖 報 告 書
院(系)名稱 : 學生姓名 : 專業名稱 : 班
級 :
電子工程學院
衛少東 電子信息工程 電子1601
16年 12 月
8日 至
年
時間 :
12月
9日
概述
本課程的實踐性教學環節主要是要求學生掌握AutoCAD的基本操作、繪圖命令、平面圖形的修改與編輯命令、尺寸標注和工程圖樣的繪制方法,強化學生的圖形設計能力和AutoCAD應用能力。實踐教學共包括六項內容,即AutoCAD的基本操作、基本體的繪制、組合體的繪制、零件圖的繪制,其中零件圖的繪制為綜合型實驗。實驗指導書附實驗考核內容及成績評定,可供實踐環節考核之用。
實驗所需AutoCAD軟件在實驗時提供。學生除完成所要求題目之外,還應對所實驗之結果進行分析與總結。本實驗指導書內容包括:實驗目的與要求、方法與步驟、實驗過程及內容等。學生做完相關實驗后應及時填寫實驗報告。
本實驗指導書與《畫法幾何及工程制圖》(唐克中,朱同鈞編著,高等教育出版社,2009)配套使用。另外,由于實驗時間有限,學生對課程的掌握不同,除安排上機實驗之外應另外自行安排時間學習、解決相關知識及問題。
實驗一 AutoCAD的基本操作
一、實驗目的
1、了解AutoCAD基本概念
2、學習AutoCAD的基本操作
二、實驗內容
I、實驗要求:
1.啟動AutoCAD,熟悉工作界面。2.繪制習題集P86:10-1圖形。II、實驗方法:
1.用下拉菜單“格式”→“單位”或命令行輸入:UNITS↙,查看和設置繪圖單位、精度及角度(建議使用缺省值)。
2.建圖層,設顏色、線型及線寬。
粗實線
白色(或黑色)
實線(CONTINUOUS)
0.7 mm 細實線
白色(或黑色)
實線(CONTINUOUS)
0.30 mm 3.設置圖幅(選A3圖幅)。
4.使用繪圖命令和編輯命令繪圖。
三、實驗結果(附在下方,并手寫出每個圖形使用哪些命令)
實驗二 基本體的繪制
一、實驗目的
學會使用AutoCAD的基本繪圖命令和編輯命令。
二、實驗內容
I、實驗要求:繪制下圖。
II、實驗方法: 1.新增圖層:
點畫線
紅色
點畫線(JIS_8_11)
0.30mm 尺寸
白色(或黑色)
實線(CONTINUOUS)
0.00mm 2.注意畫圖順序:先畫出點畫線,確定圓心位置;其次畫出圓和圓弧,圓弧用畫圓修剪得到;最后標注尺寸。
三、實驗結果(附在下方,并手寫出圖層設置方法,修剪命令與刪除命令的區別是什么及如何操作的。)
實驗三 組合體的繪制
一、實驗目的
學會使用AutoCAD的繪圖命令和編輯命令,標注尺寸。
二、實驗內容
I、實驗要求:
繪制習題集P87:10-3或10-4。II、實驗方法:
1.注意利用“極軸追蹤”、“對象捕捉”和“對象追蹤”,使三視圖“長對正、高平齊、寬相等”。2.新增圖層:
虛線
藍色
虛線(HIDEDN2)
0.30 mm
三、實驗結果(附在下方,并手寫出尺寸樣式設置方法和標注類型)
實驗四 軸類零件的繪制
一、實驗目的
使用AutoCAD的繪圖命令、編輯命令、標注尺寸和圖塊等命令。
二、實驗內容
I、實驗要求:
繪制習題集P87:10-5。II、實驗方法:
三、實驗結果(附在下方,并手寫出文字樣式和尺寸樣式設置方法及標注要領,圖塊的創建及插入)
第四篇:飲料銷售機順序圖
實驗內容及要求:
內容:
在自動飲料銷售機的”買飲料”場景中,假定飲料銷售機有三個部分,前端(front),錢幣記錄儀(register)和分發器(dispenser)。
前端負責:接受顧客的選購和現鈔;從記錄儀接收找回的零錢并返回給顧客;
返回現鈔;從分配器接收一罐飲料并把它交給顧客。
錢幣記錄儀負責:從前端獲取顧客輸入的信息(即選購的飲料的種類和現鈔);
更新現鈔存儲;顯示現鈔情況;如果缺少零錢將不讓系統服務并在前端顯示沒有
零錢;如果零錢充足一切正常,找零錢。
分配器負責:檢查待選購的飲料是否還有貨;分發一罐飲料。
請根據以下情形,參照教材93-94頁,畫出順序圖
理想狀態下買飲料(購買成功)
在理想狀態下,事件流順序如下:
1)顧客放入現鈔(inputMoney());
2)前端接受現鈔并將現鈔傳給錢幣記錄儀accept();
3)錢幣記錄儀對現鈔面額進行判斷getCustomerInput();
4)錢幣記錄儀向前端發送現鈔情況 sendMoneyInfo()
5)前端將現鈔情況顯示給顧客showMoney()
6)錢幣記錄儀根據現鈔面額、飲料價格和零錢情況檢查可購買的飲料
checkForSoda();
7)錢幣記錄儀向分發器發送消息檢查可購買的飲料的存貨情況
checkAvailability()
8)分配器向前端返回可購買且有存貨的飲料信息returnSodaFree
9)前端將可購買且有存貨的飲料信息顯示給顧客displayPrompt();
10)顧客選擇飲料chooseSoda
11)前端將選擇結果給分配器sendChoseToDis
12)前端將選擇結果給錢幣記錄儀 sendChoseToReg
13)錢幣記錄儀檢查找零情況 checkForChange()
14)錢幣記錄儀更新余額 updateChange()
15)分配器向前端釋放飲料 releaseSoda()
16)錢幣記錄儀向前端釋放找零 releaseChange()
17)前端接收飲料并釋放出來給顧客receiveSoda()
18)前端接收找零并返回給顧客 receiveChange()
要求:
寫出分析過程,畫出順序圖,完成實驗報告
分析:
和教材93-94頁圖7-14到圖7-14相比較有何不同,請參照對比來分析。
如果現鈔不夠買飲料,會如何,事件流將有什么變化?
如果零錢不夠,會如何,事件流將有什么變化?
如果無須找零錢呢?
第五篇:數據結構實驗報告二線性表的順序存儲
實驗報告二 線性表的順序存儲
班級: 2010XXX 姓名: HoogLe 學號: 2010XXXX 專業: XXXX
2858505197@qq.com
一、實驗目的:
(1)掌握順序表的基本操作的實現方法。
(2)應用順序表的基本算法實現集合A=AUB算法。
(3)應用順序表的基本算法實現兩有序順序表的歸并算法。
二、實驗內容:
1、線性表順序存儲結構的基本操作算法實現(要求采用類模板實現)
[實現提示](同時可參見教材p5822-p60頁算法、ppt)函數、類名稱等可自定義,部分變量請加上學號后3位。庫函數載和常量定義:(代碼)#include
(1)順序表存儲結構的定義(類的聲明):(代碼)
template
SeqList(datatype a[ ], int n);//有參構造函數 ~SeqList(){};//析構函數為空 int Length();//求線性表的長度
datatype Get(int i);//按位查找,取線性表的第i個元素 int Locate(datatype item);//查找元素item void Insert(int i, datatype item);//在第i個位置插入元素item datatype Delete(int i);//刪除線性表的第i個元素 void display();//遍歷線性表,按序號依次輸出各元素 private: datatype data[MaxSize];//存放數據元素的數組 int length;//線性表的長度 };
(2)初始化順序表算法實現(不帶參數的構造函數)/* *輸 入:無
*前置條件:順序表不存在 *功 能:構建一個順序表 *輸 出:無
*后置條件:表長為0 */ 實現代碼:
template
(3)順序表的建立算法(帶參數的構造函數)
/* *輸 入:順序表信息的數組形式a[],順序表長度n *前置條件:順序表不存在
*功 能:將數組a[]中元素建為長度為n的順序表 *輸 出:無
*后置條件:構建一個順序表 */ 實現代碼:
template
cout<<“數組元素個數不合法”< data[i]=a[i];length=n;}(4)在順序表的第i個位置前插入元素e算法 /* *輸 入:插入元素e,插入位置i *前置條件:順序表存在,i要合法 *功 能:將元素e插入到順序表中位置i處 *輸 出:無 *后置條件:順序表插入新元素,表長加1 */ 實現代碼: template cout<<“溢出”< cout<<“i不合法!”< data[j]=data[j-1];data[i-1]=item;length++;}(5)刪除線性表中第i個元素算法 /* *輸 入:要刪除元素位置i *前置條件:順序表存在,i要合法 *功 能:刪除順序表中位置為i的元素 *輸 出:無 *后置條件: 順序表冊除了一個元素,表長減1 */ 實現代碼: template cout<<“表為空,無法刪除元素!”< cout<<“i不合法!”< for(j=i;j data[j-1]=data[j];//注意數組下標從0記 length--;return item;}(6)遍歷線性表元素算法 /* *輸 入:無 *前置條件:順序表存在 *功 能:順序表遍歷 *輸 出:輸出所有元素 *后置條件:無 */ 實現代碼: template cout<<“表為空,無法輸出!”< cout< (7)獲得線性表長度算法 /* *輸 入:無 *前置條件:順序表存在 *功 能:輸出順序表長度 *輸 出:順序表長度 *后置條件:無 */ 實現代碼: template (8)在順序線性表中查找e值,返回該元素的位序算法 /* *輸 入:查詢元素值e *前置條件:順序表存在 *功 能:按值查找值的元素并輸出位置 *輸 出:查詢元素的位置 *后置條件:無 */ 實現代碼: template //下標為i的元素等于item,返回其序號i+1 return 0;//查找失敗 } (9)獲得順序線性表第i個元素的值 /* *輸 入:查詢元素位置i *前置條件:順序表存在,i要合法 *功 能:按位查找位置為i的元素并輸出值 *輸 出:查詢元素的值 *后置條件:無 */ 實現代碼: template cout<<“i不合法!”< (10)判表空算法 /* *輸 入:無 *前置條件:無 *功 能:判表是否為空 *輸 出:為空返回1,不為空返回0 *后置條件:無 */ 實現代碼: template return 1;} else { return 0;} } (11)求直接前驅結點算法 /* *輸 入:要查找的元素e,待存放前驅結點值e1 *前置條件:無 *功 能:查找該元素的所在位置,獲得其前驅所在位置。*輸 出:返回其前驅結點的位序。*后置條件:e1值為前驅結點的值 */ 實現代碼: template return k;else { cout<<“無前驅結點!”< return 0;} }(12)求直接后繼結點算法 /* *輸 入:要查找的元素e,待存放后繼結點值e1 *前置條件:無 *功 能:查找該元素的所在位置,獲得其后繼所在位置。*輸 出:返回其后繼結點的位序。*后置條件:e1值為后繼結點的值 */ 實現代碼: template cout<<“無后繼結點!”< return k;} } 上機實現以上基本操作,寫出main()程序: void main(){ SeqList if(Seq.Empty()){ cout<<“線性表為空!”< } Seq.Insert(1,1);Seq.Insert(2,2);Seq.Insert(3,3);Seq.Insert(4,4);Seq.Insert(5,5);//插入元素操作 cout<<“輸出插入的五個元素:”< cout< cout<<“2是第”< cout<<“第五個元素是:”< cout<<“線性表的長度為:”< Seq.Delete(3);//刪除元素 cout<<“刪除第三個元素后的線性表為:”< cout< cout<<“元素2前驅結點的數值為:”< cout<<“元素4后繼結點的位置為:”< cout<<“元素4后繼結點的數值為:”< 要求對每個算法都加以測試,判斷是否正確;并測試不同類型數據的操作。粘貼測試數據及運行結果: 2、用以上基本操作算法,實現A=AUB算法。(利用函數模板實現)/* *輸 入:集合A,集合B *前置條件:無 *功 能:實現A=AUB *輸 出:無 *后置條件:A中添加了B中的元素。*/ 實現代碼: template return *this;else { int k=item.Length(); int num=this->Length(); for(int i=1;i<=k;i++) { for(int j=0;j if(data[j]==item.Get(i)) { break; } else if(num-1==j&&data[num-1]!=item.Get(i)) { this->Insert(++num,item.Get(i)); } } return *this;} } void main(){ SeqList B.Insert(1,2);B.Insert(2,6);B.Insert(3,1);B.Insert(4,8);B.Insert(5,9);//插入集合B中元素 A.Add(B);A.display();cout< 3、對以上順序表類中的基本操作算法適當加以補充,實現向一個有序的(非遞減)的順序表中插入數據元素e算法。/* *輸 入:插入元素e *前置條件:順序表已有序 *功 能:將元素e插入到順序表中適當的位置,使順序表依然有序 *輸 出: 無 *后置條件:有序順序表插入了新元素,且表長加1。*/ 實現代碼: template if((data[i] { for(int k=num;k>i;k--) data[k]=data[k-1]; data[i+1]=item; length++; break; } if(data[i]>item) { for(int k=num;k>i;k--) data[k]=data[k-1]; data[i]=item; length++; break; } } } void main(){ SeqList cout<<“原順序表為:”< cout< cout<<“插入新元素后的順序表為:”< 4、算法實現:La,Lb為非遞減的有序線性表,將其歸并為Lc,該線性表仍有序(未考慮相同時刪除一重復值)(利用函數類板實現)MergeList: /* *輸 入:有序線性表La,有序線性表Lb *前置條件:順序表已有序 *功 能:將兩線性表歸并,不去掉相同元素 *輸 出: 返回一個新的有序線性表Lc *后置條件:無 */ 實現代碼: template Seq1.orderInsert(Seq2.Get(i));} return Seq1;} void main(){ SeqList cout<<“合并后的Lc為:”< cout< 粘貼測試數據及運行結果: 三、心得體會:(含上機中所遇問題的解決辦法,所使用到的編程技巧、創新點及編程的心得)