版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、.操作系統(tǒng)課程設計報告院 系:計算機與信息工程學院 題 目:模擬銀行家算法實現(xiàn)死鎖避免 學生姓名: 學生學號: 專業(yè)班級: 指導教師: 完成時間:2012年9月6日 評分表:課題名稱指導教師評 語成績評定姓 名成 績學 號日期年 月 日目錄題 目:模擬銀行家算法實現(xiàn)死鎖避免1評分表:2一 課程設計目的3二 課程設計內(nèi)容3三 課程設計環(huán)境4四 課程設計步驟441.需求分析44.1.1 問題的提出44.1.2 銀行家算法原理44.1.3銀行家算法詳細解析54.1.4 銀行安全性算法目的64.2概要設計64.2.1 功能模塊設計如下:64.2.2 功能模塊描述74.3詳細設計74.3.1基本數(shù)據(jù)結(jié)構(gòu)
2、的設計74.3.2算法的設計8五 課程設計結(jié)果95.1運行結(jié)果95.2測試分析12六 課程設計心得與體會12總結(jié)12七 參考文獻13八 程序清單148.1 操作主界面代碼:148.2 功能實現(xiàn)代碼:17一 課程設計目的在熟練掌握死鎖發(fā)生原理和解決死鎖問題的基礎上,利用一種程序設計語言模擬實現(xiàn)利用銀行家算法實現(xiàn)死鎖避免,一方面加深對原理的理解,另一方面提高學生通過編程根據(jù)已有原理解決實際問題的能力,為學生將來進行系統(tǒng)軟件開發(fā)和針對實際問題提出高效的軟件解決方案打下基礎。二 課程設計內(nèi)容模擬實現(xiàn)銀行家算法對系統(tǒng)資源進行分配,以防止死鎖的出現(xiàn)。本課題肯定不可能實現(xiàn)對實際操作系統(tǒng)的資源管理,而是通過對
3、模擬資源數(shù)據(jù)的處理,檢測銀行家算法在防止死鎖出現(xiàn)的作用。銀行家算法描述:第一部分:銀行家算法(掃描)1如果request=need,則轉(zhuǎn)向2;否則,出錯2如果request=available,則轉(zhuǎn)向3,否則等待3系統(tǒng)試探分配請求的資源給進程4系統(tǒng)執(zhí)行安全性算法第二部分:安全性算法1.設置兩個向量(1).工作向量:work=available(表示系統(tǒng)可提供給進程繼續(xù)運行所需要的各類資源數(shù)目)(2).finish:表示系統(tǒng)是否有足夠資源分配給進程(true:有;false:沒有).初始化為false2.若finishi=false&need=work,則執(zhí)行3;否則執(zhí)行4(i為資源類別)3.進
4、程p獲得第i類資源,則順利執(zhí)行直至完成,并釋放資源:work=work+allocation;finishi=true;轉(zhuǎn)2請充分理解以上銀行家算法描述的核心思想。(詳細銀行家算法描述見p95) 三 課程設計環(huán)境windows操作系統(tǒng) java語言 eclipse編程工具四 課程設計步驟41.需求分析4.1.1 問題的提出銀行家算法是一種最有代表性的避免死鎖的算法。在避免死鎖方法中允許進程動態(tài)地申請資源,但系銀行家算法統(tǒng)在進行資源分配之前,應先計算此次分配資源的安全性,若分配不會導致系統(tǒng)進入不安全狀態(tài),則分配,否則等待。為實現(xiàn)銀行家算法,系統(tǒng)必須設置若干數(shù)據(jù)結(jié)構(gòu)。要解釋銀行家算法,必須先解釋操
5、作系統(tǒng)安全狀態(tài)和不安全狀態(tài)。 4.1.2 銀行家算法原理我們可以把操作系統(tǒng)看作是銀行家,操作系統(tǒng)管理的資源相當于銀行家管理的資金,進程向操作系統(tǒng)請求分配資源相當于用戶向銀行家貸款。 為保證資金的安全,銀行家規(guī)定: (1) 當一個顧客對資金的最大需求量不超過銀行家現(xiàn)有的資金時就可接納該顧客; (2) 顧客可以分期貸款,但貸款的總數(shù)不能超過最大需求量; (3) 當銀行家現(xiàn)有的資金不能滿足顧客尚需的貸款數(shù)額時,對顧客的貸款可推遲支付,但總能使顧客在有限的時間里得到貸款; (4) 當顧客得到所需的全部資金后,一定能在有限的時間里歸還所有的資金. 操作系統(tǒng)按照銀行家制定的規(guī)則為進程分配資源,當進程首次申
6、請資源時,要測試該進程對資源的最大需求量,如果系統(tǒng)現(xiàn)存的資源可以滿足它的最大需求量則按當前的申請量分配資源,否則就推遲分配。當進程在執(zhí)行中繼續(xù)申請資源時,先測試該進程本次申請的資源數(shù)是否超過了該資源所剩余的總量。若超過則拒絕分配資源,若能滿足則按當前的申請量分配資源,否則也要推遲分配。4.1.3銀行家算法詳細解析1、安全性算法:確定計算機系統(tǒng)是否處于安全狀態(tài)的算法分為如下幾步:(1)設置兩個工作向量work=available;finish (2)從進程集合中找到一個滿足下述條件的進程, finish=false; need=work; 如找到,執(zhí)行(3);否則,執(zhí)行(4)(3)設進程獲得資源
7、,可順利執(zhí)行,直至完成,從而釋放資源。 work+=allocation; finish=true; goto 2 (4)如所有的進程finish= true,則表示安全;否則系統(tǒng)不安全。2、資源請求算法:設進程k提出請求requesti,則銀行家算法按如下規(guī)則進行判斷。 (1)如果request k i= needki,則轉(zhuǎn)(2);否則,出錯。 (2)如果request ki= avaliableki,則轉(zhuǎn)(3);否則,出錯。 (3)系統(tǒng)試探分配資源,修改相關數(shù)據(jù): avaliable i-= request ki; avaliable ki+= request ki; needki-= r
8、equest ki; (4)系統(tǒng)執(zhí)行安全性檢查,如安全,則分配成立;否則試探險性分配作廢,系統(tǒng)恢復原狀,進程等待。 4.1.4 銀行安全性算法目的 銀行家算法是一種最有代表性的避免死鎖的算法。在避免死鎖方法中允許進程動態(tài)地申請資源,但系統(tǒng)在進行資源分配之前,應先計算此次分配資源的安全性,若分配不會導致系統(tǒng)進入不安全狀態(tài),則分配,否則等待。4.2概要設計操作主界面輸入系統(tǒng)進程數(shù)4.2.1 功能模塊設計如下:輸入資源類型數(shù)進入操作界面輸入allocation輸入系統(tǒng)總資源數(shù)輸入max(最大資源數(shù))資源請求檢測安全性檢測圖4.2.1:程序功能模塊設計圖4.2.2 功能模塊描述第一部分:銀行家算法1如
9、果request=need,則轉(zhuǎn)向2;否則,出錯2如果request=available,則轉(zhuǎn)向3,否則等待3系統(tǒng)試探分配請求的資源給進程4系統(tǒng)執(zhí)行安全性算法第二部分:安全性算法1.設置兩個向量(1).工作向量:work=available(表示系統(tǒng)可提供給進程繼續(xù)運行所需要的各類資源數(shù)目)(2).finish:表示系統(tǒng)是否有足夠資源分配給進程(true:有;false:沒有).初始化為false2.若finishi=false&need=work,則執(zhí)行3;否則執(zhí)行4(i為資源類別)3.進程p獲得第i類資源,則順利執(zhí)行直至完成,并釋放資源:work=work+allocation;finis
10、hi=true;轉(zhuǎn)24.3詳細設計4.3.1基本數(shù)據(jù)結(jié)構(gòu)的設計static int tatoaln; /總資源數(shù) static int avaliable;/可利用資源數(shù)static int allocation;/已用資源數(shù) static int max;/最大資源需求static int need;/還需的各種資源數(shù)static int request;/請求資源數(shù)4.3.2算法的設計銀行家安全性算法思路:對各進程、資源初始化開始進程pi申請資源是否滿足申請條件no系統(tǒng)安全性檢測正式分配資源yes安全不安全圖4.3.2:銀行家安全性算法流程圖五 課程設計結(jié)果5.1運行結(jié)果(1)主界面 圖5
11、.1-1:操作主界面 (2)輸入系統(tǒng)進程數(shù)為5、系統(tǒng)資源類型數(shù)為3銀行家算法算法演示結(jié)果如下: 圖5.1-2:實現(xiàn)主要功能界面 圖5.1-3:輸入系統(tǒng)總資源數(shù)的表格 圖5.1-4:輸入已用資源數(shù)的表格 圖5.1-4:輸入最多資源輸表格 圖5.1-5:輸入請求資源數(shù)表格 圖5.1-6:系統(tǒng)安全狀態(tài)檢測 圖5.1-7:資源請求安全檢測5.2測試分析經(jīng)過幾次測試下來,發(fā)現(xiàn)對于一些基本的操作已經(jīng)沒什么問題,但如果牽涉的復雜的問題,里面就出現(xiàn)了很多缺點和不足了。從測試用的數(shù)據(jù)來看,基本上可以選擇隨意輸入系統(tǒng)的進程數(shù)和系統(tǒng)的資源類型數(shù)以及系統(tǒng)每種資源的最大數(shù)量了,但由于測試的數(shù)據(jù)有限而且牽涉面也不是很廣,
12、很多問題可能沒有測試出來,存在的一些技術問題還需要進一步改善。六 課程設計心得與體會總結(jié) 操作系統(tǒng)課程設計下來,感覺自己有很大的進步,特別是在對操作系統(tǒng)相關知識的理解方面,許多在以前一直沒有弄明白的地方,現(xiàn)在通過自己編寫程序,一步步下來,一步步掌握了更多的知識。這次課程設計下來,我的體會和感覺主要體現(xiàn)在這幾方面:1.感覺這一次課程設計是花了許多心血,翻看課本,查找資料,把許多遺忘了的東西都重拾腦海,每天在宿舍,自己給自己安排好了計劃,一步步執(zhí)行下來,所以課程設計的一個星期,感覺過得很充實,心情也很不錯,在這樣累積下來,自己親自完全實現(xiàn)功能出來,感覺很興奮。2. 在編程實現(xiàn)的過程中,自己也發(fā)現(xiàn)了
13、不少的問題,自己感覺很容易的東西卻總是出錯,而且都是比較低級的錯誤,感覺很多東西看起來很簡單,但在實際編程實現(xiàn)的時候卻需要注意各種細節(jié),需要耐心細致,實際編程中遇到一些細節(jié)上的小問題確實需要仔細考慮才行。3. 因為銀行家算法牽涉的很多要輸入的數(shù),所以定義了很多個數(shù)組來存放,結(jié)果是因為數(shù)據(jù)太多,時常發(fā)生混淆,出了不少的錯誤,而且不容易找出來,感覺很頭疼。4. 為了實現(xiàn)銀行家算法,我把課本上的知識進行了全面的復習,在理解的基礎上,再在網(wǎng)上搜索資料,進一步掌握了相關知識之后,才開始著手編寫程序,通過銀行家算法的安全性算法和資源請求算法的實現(xiàn),對死鎖也有更深一層的了解。使我對操作系統(tǒng)特別是死鎖避免這一
14、部分的認識有了很大的加深。5.課程設計下來,我對操作系統(tǒng)理解更為全面了,并感覺里面有太多的知識需要去掌握,也深深體會的操作系統(tǒng)方面知識的重要性,進而感覺的自己這方面知識的嚴重不足。 6. 最后總體感覺這一次課程設計,時間比較充足,并且也是由自己自由發(fā)揮,自己的擴展空間也更大了,有了這樣一次課程設計機會,給我?guī)砹撕芏嘁庀氩坏降氖斋@。七 參考文獻1. 【美國】peter baer galvin等編著 鄭扣根 【譯】 操作系統(tǒng)概念.第七版 北京:高等教育出版社.2010.2. 張堯?qū)W編著. 計算機操作系統(tǒng)教程習題解答與實驗指導. 北京: 清華大學出版社.2000.3.葉核亞編著 陳道蓄主審. ja
15、va程序設計實用教程. 第三版 北京:電子工業(yè)出版社八 程序清單8.1 操作主界面代碼:import java.awt.color;public class operatingframe extends jframe implements actionlistener,caretlistener/*銀行家算法 * param args */public static string data=0,0;public jbutton but=new jbutton(確定),new jbutton(退出);public jtextfield textfield=new jtextfield (5,10
16、),new jtextfield (3,10);public operatingframe()super(銀行家算法);this.setlayout(null);this.setbounds(530, 340, 405, 295);this.setdefaultcloseoperation(3);this.seticonimage(gettoolkit().getimage(images/wbto20110516223525.jpg);.url url=this.getclass().getclassloader().getresource(images/egs.jpg);for(int i=
17、0;itextfield.length;i+)textfieldi.setforeground(color.blue);textfieldi.setfont(new font(華文楷體,1,25);textfieldi.setbounds(40+160,100+55*i, 50, 20);textfieldi.addcaretlistener(this);this.add(textfieldi);jlabel lab=new jlabel(系統(tǒng)進程數(shù):),new jlabel(資源類型數(shù):),new jlabel(請輸入信息);for(int i=0;ilab.length;i+)labi.s
18、ethorizontalalignment(jlabel.right);labi.setforeground(color.blue);labi.setfont(new font(華文楷體,1,25);labi.setbounds(40,100+55*i, 150, 20);this.add(labi);for(int i=0;ibut.length;i+)buti.sethorizontalalignment(jlabel.right);buti.setforeground(color.blue);buti.setfont(new font(華文楷體,1,10);buti.setbounds(
19、170+i*100,220, 60, 20);buti.addactionlistener(this);this.add(buti);lab2.setbounds(100,20, 150, 30);jlabel label=new jlabel();label.seticon(new imageicon(url);label.setbounds(0,0,400,270);this.add(label);this.setvisible(true);public static void main(string args)new operatingframe();public void action
20、performed(actionevent e)if (e.getsource()=but0)new operatingstep1();this.dispose();if (e.getsource()=but1)this.dispose();public void caretupdate(caretevent e) data0=textfield0.gettext();data1=textfield1.gettext();8.2 功能實現(xiàn)代碼:import java.awt.color;import java.awt.font;import java.awt.event.actionevent
21、;import java.awt.event.actionlistener;import javax.swing.imageicon;import javax.swing.jbutton;import javax.swing.jframe;import javax.swing.jlabel;import javax.swing.joptionpane;import javax.swing.jscrollpane;import javax.swing.jtable;import javax.swing.event.tablemodellistener;import javax.swing.tab
22、le.tablemodel;public class operatingstep1 extends jframe implements actionlistener/*銀行家 算法 * param args */public static int m=integer.parseint(operatingframe.data0);/系統(tǒng)進程 輸public static int n=integer.parseint(operatingframe.data1);/系統(tǒng)資源類型public static int tatoal=new int n;/總資源數(shù)public static int aval
23、iable=new int n;/可利用資源數(shù)public static int allocation=new int mn;/已用資源數(shù)public static int max=new int mn;/最大資源需求public static int need=new int mn;/還需的各種資源數(shù)public static int needi=new int n;/安全性計算用public static int request=new int mn;/請求資源數(shù)public static int requests=new int n;public static int work=new
24、intn;/安全性計算用public static boolean filished=new booleanm;/安全性計算用;public object data1=new object1n+1;/表格里面數(shù)據(jù)public object data2=new object40n+1;public object data3=new object40n+1;public object data4=new object40n+1;public jbutton but=new jbutton(后退),new jbutton(確定),new jbutton(安檢),new jbutton(request
25、),new jbutton(退出);/按鈕聲明/private object title1=index,allocation,max,work,filshed;/private object title2=班次,姓名,性別,單位,身份證,艙類別;public static jtable table1,table2,table3,table4;/表格聲明public operatingstep1()super(銀行家算法);this.setlayout(null);this.setbounds(530, 340, 605, 295);this.setdefaultcloseoperation(3
26、);this.seticonimage(gettoolkit().getimage(images/egs.jpg);/設置背景.url url=this.getclass().getclassloader().getresource(images/dabe.jpg);/system.out.println(m);/system.out.println(n);for(int i=0;i=0;i+)/表格 數(shù)據(jù)初始化for(int j=1;j=n;j+)data1ij=10;for(int i=0;im;i+)for(int j=1;j=n;j+)data2ij=0;for(int i=0;im;
27、i+)for(int j=1;j=n;j+)data3ij=5;for(int i=0;im;i+)for(int j=1;j=n;j+)data4ij=0;/四個表格string title1=new string n+1;/表格一title10=index;for(int i=1;i=n;i+)title1i=s+i+:;table1=new jtable(data1,title1);/table2.getcolumnmodel().getcolumn(4).setpreferredwidth(100 );table1.gettableheader().setreorderingallow
28、ed(false); /不可整列移動 table1.gettableheader().setresizingallowed(false); /不可拉動表格object obj1=tatoal:;table1.setvalueat(obj1,0,0);table1.setrowheight(15);table1.setbackground(color.orange);table1.setforeground(color.black);table1.seteditingcolumn(1);/table2.setenabled(true);table1.setfont(new font(華文楷體,1
29、,12);jscrollpane js1=new jscrollpane(table1);js1.setbounds(220, 10, 300, 35);this.add(js1);string title2=new string n+1;/表格二title20=index;for(int i=1;i=n;i+)title2i=s+i+:;table2=new jtable(data2,title2);/table2.getcolumnmodel().getcolumn(4).setpreferredwidth(100 );table2.gettableheader().setreorderi
30、ngallowed(false); /不可整列移動 table2.gettableheader().setresizingallowed(false); /不可拉動表格object obj2=new object m;for(int i=0;im;i+)obj2i=p+i+:;table2.setvalueat(obj2i,i,0);table2.setrowheight(15);table2.setbackground(color.orange);table2.setforeground(color.black);table2.seteditingcolumn(1);/table2.sete
31、nabled(true);table2.setfont(new font(華文楷體,1,12);jscrollpane js2=new jscrollpane(table2);js2.setbounds(35, 100, 150, 100);this.add(js2);string title3=new string n+1;/表格三title30=index;for(int i=1;i=n;i+)title3i=s+i+:;/for(int i=0;ititle3.length;i+)/system.out.print(title3i+ );table3=new jtable(data3,t
32、itle3);/table1.getcolumnmodel().getcolumn(4).setpreferredwidth(100 );table3.gettableheader().setreorderingallowed(false); /不可整列移動 table3.gettableheader().setresizingallowed(false); /不可拉動表格object obj3=new object m;for(int i=0;im;i+)obj3i=p+i+:;table3.setvalueat(obj3i,i,0);table3.setrowheight(15);tabl
33、e3.setbackground(color.orange);table3.setforeground(color.black);table3.seteditingcolumn(1);/table1.setenabled(true);table3.setfont(new font(華文楷體,1,12);jscrollpane js3=new jscrollpane(table3);js3.setbounds(220, 100, 150, 100);this.add(js3);string title4=new string n+1;/表格四title40=index;for(int i=1;i
34、=n;i+)title4i=s+i+:;/for(int i=0;ititle4.length;i+)/system.out.print(title4i+ );table4=new jtable(data4,title4);/table1.getcolumnmodel().getcolumn(4).setpreferredwidth(100 );table4.gettableheader().setreorderingallowed(false); /不可整列移動 table4.gettableheader().setresizingallowed(false); /不可拉動表格object
35、obj4=new object m;for(int i=0;im;i+)obj4i=p+i+:;table4.setvalueat(obj4i,i,0);table4.setrowheight(15);table4.setbackground(color.orange);table4.setforeground(color.black);table4.seteditingcolumn(1);/table1.setenabled(true);table4.setfont(new font(華文楷體,1,12);jscrollpane js4=new jscrollpane(table4);js4
36、.setbounds(400, 100, 150, 100);this.add(js4);jlabel lab=new jlabel(allocation:),new jlabel(max:),new jlabel(request:),new jlabel(tatoal:);for(int i=0;ilab.length;i+)/四個標簽labi.sethorizontalalignment(jlabel.right);labi.setforeground(color.blue);labi.setfont(new font(華文楷體,1,25);labi.setbounds(30+i*150,
37、70,150, 20);this.add(labi);lab3.setbounds(50, 20, 150, 30);for(int i=0;ibut.length;i+)/四個按鈕buti.setforeground(color.blue);buti.setfont(new font(華文楷體,1,10);buti.setbounds(80+i*100,230, 75, 20);buti.addactionlistener(this);this.add(buti);/* * 獲取初始化后表格里面的各個數(shù)據(jù),并轉(zhuǎn)化為int型 */for(int i=1;i=n;i+)tatoali-1=int
38、eger.parseint(string)table1.getvalueat(0, i);for(int i=0;im;i+)for(int j=1;j=n;j+)allocationij-1=integer.parseint(string)table2.getvalueat(i, j);for(int i=0;im;i+)for(int j=1;j=n;j+)maxij-1=integer.parseint(string)table3.getvalueat(i, j);for(int i=0;im;i+)for(int j=1;j=n;j+)requestij-1=integer.parse
39、int(string)table4.getvalueat(i, j);jlabel label=new jlabel();/圖片背景標簽label.seticon(new imageicon(url);label.setbounds(0,0,600,270);this.add(label); /table1.iscelleditable(0, 0);this.setvisible(true);public static void main(string args)new operatingstep1();public boolean iscelleditable(int rowindex, i
40、nt columnindex) /重寫iscelleditable方法if(columnindex!=1)return false;else return true;public void actionperformed(actionevent e) if (e.getsource()=but0)/后退按鈕new operatingframe();if (e.getsource()=but1)/數(shù)據(jù)保存按鈕/* * 獲取表格里面的各個數(shù)據(jù),并轉(zhuǎn)化為int */for(int i=1;i=n;i+)tatoali-1=integer.parseint(string)table1.getvalue
41、at(0, i);for(int i=0;im;i+)for(int j=1;j=n;j+)allocationij-1=integer.parseint(string)table2.getvalueat(i, j);for(int i=0;im;i+)for(int j=1;j=n;j+)maxij-1=integer.parseint(string)table3.getvalueat(i, j);for(int i=0;im;i+)for(int j=1;j=n;j+)requestij-1=integer.parseint(string)table4.getvalueat(i, j);i
42、nt allocations=new intn;for(int i=0;in;i+)allocationsi=0;for(int i=0;in;i+)for(int j=0;jm;j+)allocationsi+=allocationji;/獲取每種資源被使用的總和for(int i=0;in;i+)avaliablei=tatoali-allocationsi;/avaliable賦初值/worki=avaliablei+allocation0i;/work賦初值for(int i=0;in;i+)requestsi=0;for(int i=0;in;i+)for(int j=0;jm;j+
43、)requestsi+=requestji;/獲取每種資源被請求的總和for(int i=0;im;i+)for(int j=0;jn;j+)needij=maxij-allocationij;/求得所需資源數(shù)for(int i=0;i1;i+)for(int j=0;jn;j+)workj=avaliablej;joptionpane.showmessagedialog(this, 保存成功!請繼續(xù)操作!);if (e.getsource()=but2)/安全檢測按鈕int count=m;for(int i=0;im;i+)filishedi=false;for(int i=0;ifili
44、shed.length;i+)for(int j=0;jn;j+)needij=needij;/system.out.print( needi: +needij);/system.out.print( work: +workj);if(filishedi=false&equals(needi,work)/for(int j=0;jneedi.length;j+)/system.out.print(needi: +needij+ worki+workj);system.out.print( p+i);addwork(work,i);filishedi=true;if(i=filished.length-1)if(count=1)break;i=-1;count-;for(int i=0;ifilished.length;i+)if(filishedi!=true)joptionpane.showmessagedialog(this, 系統(tǒng)處于不安全狀態(tài),將產(chǎn)生死鎖);break;elseif(i=filished.length-1)joptionpane.showmessagedialog(this, 系統(tǒng)處于安全狀態(tài));if (e.getsource()=but3)/請求按鈕if(equalsrequest()/system.out.print
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鄉(xiāng)村振興經(jīng)濟本地化研究-洞察分析
- 《膝部運動學》課件
- 《企業(yè)利潤分配管理》課件
- 再審租賃合同(2篇)
- 《泰康養(yǎng)老社區(qū)》課件
- 2025年人教新課標五年級英語上冊月考試卷
- 2025年浙教版高三地理下冊階段測試試卷
- 體育館改造合作協(xié)議
- 特殊病種護理增援
- 醫(yī)療環(huán)保企業(yè)醫(yī)務人員聘用合同
- 2021年安全工程師《建筑施工安全》真題及答案解析
- 2024時事政治考試題庫附參考答案(黃金題型)
- 2024年新“國九條”及配套政策要點解讀分析報告
- 2024-2029年中國大健康行業(yè)市場發(fā)展現(xiàn)狀分析及發(fā)展趨勢與投資戰(zhàn)略規(guī)劃報告
- 超星爾雅學習通《藝術哲學美是如何誕生的(同濟大學)》2024章節(jié)測試答案
- 全國醫(yī)院數(shù)量統(tǒng)計
- (2024年)長歌行漢樂府古詩PPT語文課件
- GB/T 43674-2024加氫站通用要求
- 倉庫班長年終總結(jié)及工作計劃
- 部編人教版二年級勞動教育上冊期末試卷(帶答案)
- 肛門手術的鎮(zhèn)痛研課件
評論
0/150
提交評論