操作系統(tǒng)課程設(shè)計-進程調(diào)度模擬_第1頁
已閱讀1頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  操作系統(tǒng)課程設(shè)計</b></p><p><b>  ——進程調(diào)度模擬</b></p><p>  班級: 計算機科學(xué)與技術(shù)三班</p><p>  學(xué)號: </p><p><b>  實驗要求</b></p><

2、;p>  編寫一個進程調(diào)度程序,允許多個進程共行的進程調(diào)度程序。  </p><p>  采用最高優(yōu)先級數(shù)優(yōu)先的調(diào)度算法(即把處理機分配給優(yōu)先數(shù)最高的進程)和先來先服務(wù)算法。 </p><p>  每個進程用一個進程控制塊( PCB)表示。進程控制塊可以包含如下信息:進程名、優(yōu)先數(shù)、到達時間、需要運行時間、已用CPU時間、進程狀態(tài)等等。 </p><p&

3、gt;  進程的優(yōu)先數(shù)及需要的運行時間可以事先人為地指定(也可以由隨機數(shù)產(chǎn)生)。進程的到達時間為輸入進程的時間。 </p><p>  進程的運行時間以時間片為單位進行計算。 </p><p>  每個進程的狀態(tài)可以是就緒 W(Wait)、運行R(Run)、或完成F(Finish)三種狀態(tài)之一。 </p><p>  就緒進程獲得 CPU后都只能運行一個時間片。用已

4、占用CPU時間加1來表示。 如果運行一個時間片后,進程的已占用 CPU時間已達到所需要的運行時間,則撤消該進程,如果運行一個時間片后進程的已占用CPU時間還未達所需要的運行時間,也就是進程還需要繼續(xù)運行,此時應(yīng)將進程的優(yōu)先數(shù)減1(即降低一級),然后把它插入就緒隊列等待CPU。 </p><p>  每進行一次調(diào)度程序都打印一次運行進程、就緒隊列、以及各個進程的 PCB,以便進行檢查。    </p>

5、<p>  重復(fù)以上過程,直到所有進程都完成為止。</p><p><b>  設(shè)計思路</b></p><p>  本程序用兩種算法(最高優(yōu)先級數(shù)優(yōu)先的調(diào)度算法和先來先服務(wù)算法)對多個進程進行調(diào)度,每個進程有三個狀態(tài),初始狀態(tài)為就緒狀態(tài)。</p><p>  最高優(yōu)先級數(shù)優(yōu)先的調(diào)度算法中,程序的某進程運行時間以時間片為單位計算。各

6、進程的優(yōu)先數(shù)或輪轉(zhuǎn)時間數(shù)以及進程需運行的時間片數(shù)的初始值均由用戶給定。在優(yōu)先級數(shù)優(yōu)先的調(diào)度算法中,優(yōu)先級數(shù)的值設(shè)計為100與運行時間的差值,即Pro_time-process->needtime。進程每執(zhí)行一次,優(yōu)先數(shù)減3,CPU時間片數(shù)加1,進程還需要的時間片數(shù)減1。對于遇到優(yōu)先數(shù)一致的情況,采用先來先服務(wù)策略解決。</p><p><b>  三、詳細設(shè)計</b></p>

7、;<p>  設(shè)計創(chuàng)建進程的結(jié)構(gòu)類型定義和結(jié)構(gòu)變量說明struct ProcessPcb,定義PCB相關(guān)變量:</p><p>  ProcessPcb(){next=NULL;}</p><p>  char pro_name[20]; //進程的名字</p><p>  int time_submit ; //提交時間,從時間的1開始

8、計時</p><p>  int time_exe ; //進程所需的運行時間 </p><p>  int pro_id ; //進程ID(系統(tǒng)生成)</p><p>  int pro_priority ; //進程優(yōu)先級</p><p>  int time_start ; //開始執(zhí)行的

9、時間</p><p>  int time_end ; //結(jié)束的時間</p><p>  int time_wait ; //等待的時間</p><p>  int pro_state ; //進程的狀態(tài) (就緒,執(zhí)行,完成)</p><p>  int time_left ; //還需多少

10、時間單位,初始化為所需的執(zhí)行時間</p><p>  int time_turn ; //周轉(zhuǎn)時間</p><p>  double time_aver ; //帶權(quán)周轉(zhuǎn)時間</p><p>  創(chuàng)建PCB類class CpuModel,定義程序中使用的各函數(shù):</p><p>  CpuModel(){pcbnum=0;}<

11、;/p><p>  void cpurun(); //cpu模擬運行函數(shù)</p><p>  bool GetPcb(); //進程輸入函數(shù)</p><p>  void ShowPcb(); //將輸入的進程展示出來</p><p>  void PriModel(); //可強占的優(yōu)先

12、進程調(diào)度模式</p><p>  void FcfsModel(); //先到先服務(wù)調(diào)度模式</p><p>  ProcessPcb PcbList[100];//按提交時間排的未就緒進程隊列()</p><p>  主函數(shù)調(diào)用已定義的各函數(shù),完成進程模擬。</p><p><b>  結(jié)構(gòu)框圖:</b>&

13、lt;/p><p>  優(yōu)先級數(shù)調(diào)度 先來先服務(wù)</p><p><b>  退出程序</b></p><p><b>  流程圖:</b></p><p>  1.可強占優(yōu)先調(diào)度算法實現(xiàn)過程流程圖:</p><p>  FCFS

14、算法實現(xiàn)過程流程圖:</p><p><b>  測試結(jié)果及分析</b></p><p>  1.開始運行,顯示:</p><p>  2.輸入進程數(shù),各進程屬性:</p><p>  關(guān)于提交時間執(zhí)行時間等,將檢測輸入是否數(shù)字,不是數(shù)字即退出程序。</p><p>  3.顯示各進程屬性,以及關(guān)

15、于調(diào)度算法的選擇項:</p><p>  此處的優(yōu)先級數(shù),是用100減去執(zhí)行時間。對于優(yōu)先級數(shù)相同,則默認FIFO。</p><p>  4.測試可強占的優(yōu)先進程調(diào)度:</p><p>  一次調(diào)度完成,將計算此次運行中CPU的利用率。</p><p>  可強占的優(yōu)先進程調(diào)度算法結(jié)束,回到算法選擇界面:</p><p&g

16、t;  先到先服務(wù)調(diào)度算法運行情況:</p><p>  選擇3,回車,退出程序。</p><p><b>  設(shè)計心得</b></p><p>  類與結(jié)構(gòu)體的設(shè)計創(chuàng)建遇到盲點,一部分知識很少用到,忘記了,經(jīng)過查閱,復(fù)習(xí)了遺忘的知識點。</p><p>  循環(huán)的嵌套,通過查閱,編程,重新熟悉溫習(xí)了關(guān)于各種循環(huán)的嵌套實

17、現(xiàn)。能較好的運用嵌套。</p><p>  通過使用幾種算法模擬進程的調(diào)度,更好理解了計算機中各進程間的協(xié)調(diào)正常運行,也一定程度上鞏固了操作系統(tǒng)知識,融匯了一些以前不甚理解的操作系統(tǒng)知識。</p><p>  附錄: 程序源代碼以及注釋</p><p>  //進程PCB類

18、和模擬cpu的進程類的聲明</p><p>  #include <iostream.h></p><p>  #include <queue></p><p>  #include <string></p><p>  #include <windows.h> </p><

19、p>  #include <malloc.h></p><p>  using namespace std ;</p><p><b>  //進程的狀態(tài)</b></p><p>  #define UNREADY 0 //未就緒</p><p>  #define READY 1

20、 //就緒</p><p>  #define EXECUTE 2 //執(zhí)行</p><p>  #define END 3 //完成</p><p>  //進程的PCB結(jié)構(gòu)類型定義和結(jié)構(gòu)變量說明</p><p>  struct ProcessPcb</p><p>&

21、lt;b>  {</b></p><p>  ProcessPcb(){next=NULL;}</p><p>  char pro_name[20]; //進程的名字</p><p>  int time_submit ; //提交時間,從時間的1開始計時</p><p>  int time_exe ;

22、 //進程所需的運行時間 </p><p>  int pro_id ; //進程ID(系統(tǒng)生成)</p><p>  int pro_priority ; //進程優(yōu)先級</p><p>  int time_start ; //開始執(zhí)行的時間</p><p>  int time_end ;

23、 //結(jié)束的時間</p><p>  int time_wait ; //等待的時間</p><p>  int pro_state ; //進程的狀態(tài) (就緒,執(zhí)行,完成)</p><p>  int time_left ; //還需多少時間單位,初始化為所需的執(zhí)行時間</p><p>  in

24、t time_turn ; //周轉(zhuǎn)時間</p><p>  double time_aver ; //帶權(quán)周轉(zhuǎn)時間</p><p>  ProcessPcb *next;</p><p><b>  };</b></p><p>  //封裝CPU調(diào)度與分配程序模塊。進程類</p><p

25、>  class CpuModel</p><p><b>  {</b></p><p><b>  public:</b></p><p>  CpuModel(){pcbnum=0;}</p><p>  void cpurun(); //cpu模擬運行函數(shù)</p&

26、gt;<p>  bool GetPcb(); //進程輸入函數(shù)</p><p>  void ShowPcb(); //將輸入的進程展示出來</p><p>  void PriModel(); //可強占的優(yōu)先進程調(diào)度模式</p><p>  void FcfsModel(); //先到先服務(wù)調(diào)度

27、模式</p><p><b>  private:</b></p><p>  ProcessPcb PcbList[100]; //按提交時間排的未就緒進程隊列</p><p>  int pcbnum ; //進程數(shù)量</p><p>  int freetime ;

28、 //cpu空閑時間</p><p>  int allturn ; //總周轉(zhuǎn)時間</p><p>  float allaver ; //總帶權(quán)周轉(zhuǎn)時間</p><p><b>  };</b></p><p>  #include<algor

29、ithm></p><p>  //cpu模擬運行函數(shù)</p><p>  void CpuModel::cpurun()</p><p><b>  {</b></p><p>  if(!GetPcb()) //進程輸入函數(shù)</p><p><b>  

30、return ;</b></p><p>  ShowPcb(); //展示所需執(zhí)行進程信息</p><p>  int choose = 0 ;</p><p><b>  while(1)</b></p><p><b>  {</b></p>

31、;<p>  cout<<"***請選擇需要模擬的CPU調(diào)度算法!***"<<endl ;</p><p>  cout<<"*** 1: 可強占的優(yōu)先進程調(diào)度 ***"<<endl ;</p><p>  cout<<"*** 2: 先到先調(diào)度

32、 ***"<<endl;</p><p>  cout<<"*** 3: 退出系統(tǒng) ***"<<endl ;</p><p>  cout<<"\n*** 請選擇 : " ;</p><p>  cin>>cho

33、ose ;</p><p>  cout<<endl ;</p><p>  switch(choose)</p><p><b>  {</b></p><p>  case 1: </p><p>  PriModel(); //可強占的優(yōu)先進程方式

34、</p><p>  break; </p><p><b>  case 2:</b></p><p>  FcfsModel(); //先到先服務(wù)調(diào)度方式</p><p><b>  break;</b></p><p>  default:ret

35、urn; //結(jié)束程序</p><p><b>  }</b></p><p>  cout<<endl;</p><p><b>  }</b></p><p><b>  }</b></p><p>  //按進程提交時

36、間排序的比較函數(shù)</p><p>  bool cmp(ProcessPcb a,ProcessPcb b)</p><p><b>  {</b></p><p>  if(a.time_submit<b.time_submit)</p><p>  return true;</p><p&g

37、t;  return false;</p><p><b>  }</b></p><p><b>  //判斷是否數(shù)字</b></p><p>  int isnumber(char a[])</p><p><b>  {</b></p><p> 

38、 int len=strlen(a);</p><p>  int i,num=0;</p><p>  if(a[0]>'0'&&a[0]<='9')</p><p>  num=a[0]-'0';</p><p>  else return -1;</p&g

39、t;<p>  for(i=1;i<len;i++)</p><p><b>  {</b></p><p>  if(a[i]>='0'&&a[i]<='9')</p><p>  num=num*10+a[i]-'0';</p>&

40、lt;p>  else return -1;</p><p><b>  }</b></p><p>  return num;</p><p><b>  }</b></p><p><b>  //進程輸入函數(shù)</b></p><p>  bo

41、ol CpuModel::GetPcb()</p><p><b>  {</b></p><p>  char num[10];</p><p>  cout<<" *** 進程調(diào)度模擬程序 ***\n";</p><p>  cout<<"

42、; *** 計算機科學(xué)與技術(shù)三班 ***\n";</p><p>  cout<<" *** 孫清茂 ***\n";</p><p>  cout<<"\n***請輸入你想建立的進程個數(shù): ";</p><p>  cin>

43、>num; //輸入進程個數(shù)</p><p>  pcbnum=isnumber(num);</p><p>  if(pcbnum<=0) {cout<<"***輸入有錯***\n";return 0;} </p><p><b>  int i;</b></p>&l

44、t;p>  for(i=0;i<pcbnum;i++)//輸入進程信息</p><p><b>  {</b></p><p>  cout<<"***請依次輸入第"<<i+1<<"個進程的信息***"<<endl ;</p><p>  cou

45、t<<"*******名字:" ;</p><p>  cin>>PcbList[i].pro_name ;</p><p>  cout<<"***提交時間:";</p><p><b>  cin>>num;</b></p><p&

46、gt;  PcbList[i].time_submit=isnumber(num);</p><p>  if(PcbList[i].time_submit<=0){cout<<"***輸入有錯***\n"; return 0;}</p><p>  cout<<"***執(zhí)行時間:";</p><p&

47、gt;<b>  cin>>num;</b></p><p>  PcbList[i].time_exe=isnumber(num);</p><p>  if(PcbList[i].time_exe<=0) {cout<<"***輸入有錯***\n"; return 0;}</p><p>

48、;  PcbList[i].time_left=PcbList[i].time_exe; //設(shè)置剩余執(zhí)行時間</p><p>  PcbList[i].pro_state=UNREADY; //設(shè)置狀態(tài)為未就緒</p><p>  PcbList[i].pro_priority=100-PcbList[i].time_exe; //設(shè)置優(yōu)先級,&

49、lt;/p><p>  優(yōu)先級=100-執(zhí)行時間</p><p>  cout<<endl ;</p><p><b>  }</b></p><p>  sort(PcbList,PcbList+pcbnum,cmp); //按提交時間排序</p><p>  for(i=

50、0;i<pcbnum;i++)</p><p>  PcbList[i].pro_id=i+1; //設(shè)置Id,根據(jù)提交時間</p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  //展示所需執(zhí)行進程信息

51、</p><p>  void CpuModel::ShowPcb()</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  cout<<"\n***所需執(zhí)行的進程信息如下***\n";</p>&

52、lt;p>  for(i=0;i<pcbnum;i++)</p><p>  cout<<" 進程編號: "<<PcbList[i].pro_id<<" 進程名字: "</p><p>  <<PcbList[i].pro_name<<" 提交時間: "

53、;<<PcbList[i].time_submit</p><p>  <<" 執(zhí)行時間: "<<PcbList[i].time_exe<<" 優(yōu)先級數(shù):"</p><p>  <<PcbList[i].pro_priority<<endl ;</p><

54、;p>  cout<<endl;</p><p><b>  }</b></p><p>  //可強占的優(yōu)先進程調(diào)度模式</p><p>  void CpuModel::PriModel()</p><p><b>  {</b></p><p>  c

55、out<<"********可強占的優(yōu)先進程調(diào)度過程如下********\n";</p><p>  freetime=0; //初始化系統(tǒng)空閑時間為0</p><p>  int time=0; //時間</p><p>  int nextid=0;</p>&l

56、t;p>  int pnum=0; //已就緒進程數(shù)目</p><p>  ProcessPcb *head; //就緒隊列</p><p>  ProcessPcb *pcb,*pcb1,*pcb2;</p><p>  head=(ProcessPcb*)malloc(sizeof(ProcessPcb));&l

57、t;/p><p>  head->next=NULL; //head 指針不用,head->next開始為就緒隊列</p><p>  //模擬cpu開始工作</p><p>  while(head->next!=NULL||pnum<pcbnum)</p><p><b>  {</b

58、></p><p>  Sleep(1000);</p><p>  time++; //時間片為1</p><p>  cout<<"*Time: 第"<<time<<"秒"<<endl; //打印

59、</p><p>  // 進程就緒(查看未就緒的進程中在該時間片是否可以進入就緒隊列)</p><p>  while(pnum<pcbnum && PcbList[pnum].time_submit<=time) </p><p><b>  {</b></p><p>  pcb=(P

60、rocessPcb*)malloc(sizeof(ProcessPcb));</p><p>  *pcb=PcbList[pnum++];</p><p><b>  //進入就緒隊列</b></p><p>  pcb->next=head->next; //插在head之后</p><p

61、>  head->next=pcb;</p><p><b>  } </b></p><p>  //查找在time時間片應(yīng)該運行的進程</p><p>  if(head->next==NULL)</p><p><b>  {</b></p><p>

62、  cout<<" 沒有可運行的進程"<<endl;</p><p>  freetime++;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b>

63、;</p><p>  pcb2=head;</p><p>  pcb=head->next;</p><p>  pcb1=head->next;</p><p>  //查找當前優(yōu)先級最高的就緒進程</p><p>  while(pcb1->next!=NULL)</p><

64、;p><b>  {</b></p><p>  if(pcb->pro_priority<=pcb1->next->pro_priority)</p><p><b>  {</b></p><p>  pcb2=pcb1;</p><p>  pcb=pcb1-&g

65、t;next;</p><p><b>  }</b></p><p>  pcb1=pcb1->next;</p><p><b>  }</b></p><p>  //運行優(yōu)先級最高的進程</p><p>  if(pcb->time_left==pcb-&

66、gt;time_exe) //該進程是否已開始</p><p><b>  {</b></p><p>  pcb->time_start=time; //設(shè)置開始時間</p><p>  pcb->pro_state=EXECUTE; //設(shè)置狀態(tài)為執(zhí)行</p><p&

67、gt;<b>  }</b></p><p>  pcb->pro_priority=pcb->pro_priority-3; //優(yōu)先級數(shù)減3</p><p>  pcb->time_left--; //剩余執(zhí)行時間減去時間片1</p><p><b>  //打印該進程信息</b>

68、;</p><p>  cout<<" 進程編號: "<<pcb->pro_id<<" 進程名字:"</p><p>  <<pcb->pro_name<<" 提交時間: "</p><p>  <<p

69、cb->time_submit<<" 執(zhí)行時間: "<<pcb->time_exe</p><p>  <<"\n開始時間: "<<pcb->time_start</p><p>  <<" 還剩時間: "<<pcb->ti

70、me_left<<" 優(yōu)先級數(shù):"</p><p>  <<pcb->pro_priority<<endl ;</p><p>  //該進程是否執(zhí)行結(jié)束 </p><p>  if(pcb->time_left==0) </p><p><b&

71、gt;  {</b></p><p>  pcb2->next=pcb2->next->next;//將其在就緒隊列中出列</p><p>  pcb->time_end=time; //設(shè)置結(jié)束時間</p><p>  pcb->time_turn=pcb->time_end-pcb-&

72、gt;time_submit+1; </p><p><b>  //計算周轉(zhuǎn)時間</b></p><p>  pcb->time_aver=pcb->time_turn/(double)pcb-></p><p>  time_exe; //計算帶權(quán)周轉(zhuǎn)時間</p><p>  pcb->pr

73、o_state=END;</p><p>  cout<<"\n進程"<<pcb->pro_id<<"運行結(jié)束:"<<"\n進程名字: "</p><p>  <<pcb->pro_name<<" 提交時間: "</p

74、><p>  <<pcb->time_submit<<" 執(zhí)行時間: "</p><p>  <<pcb->time_exe<<" 開始時間: "</p><p>  <<pcb->time_start</p><p>  

75、<<" 結(jié)束時間: "<<pcb->time_end<<"\n周轉(zhuǎn)時間: "</p><p>  <<pcb->time_turn<<" 帶權(quán)周轉(zhuǎn)時間:</p><p>  <<pcb->time_aver<<endl ; &

76、lt;/p><p><b>  }</b></p><p><b>  } </b></p><p>  } //模擬CPU工作結(jié)束</p><p>  cout<<"\n 所有進程運行完畢!"<&l

77、t;endl;</p><p>  double c=(time-freetime)/(double)time*100;</p><p>  cout<<"\n cpu利用率:"<<c<<"%"<<endl;</p><p>  }

78、 //可強占的優(yōu)先進程調(diào)度模式結(jié)束</p><p>  //先到先服務(wù)調(diào)度模式</p><p>  void CpuModel::FcfsModel()</p><p><b>  {</b></p><p>  cout<<"********先到先服務(wù)進程調(diào)度過程如下********\

79、n";</p><p>  freetime=0; //初始化系統(tǒng)空閑時間為0</p><p>  int time=0; //時間</p><p>  int pnum=0; //已就緒進程數(shù)目</p><p>  ProcessPcb que[100];

80、 //就緒隊列</p><p>  int quef=0,quee=0; //就緒隊列的頭指針和尾指針</p><p>  //模擬cpu開始工作</p><p>  while(quef<quee||pnum<pcbnum)</p><p><b>  {</b></p&g

81、t;<p>  Sleep(1000);</p><p>  time++; //時間片為1</p><p>  cout<<"*Time: 第"<<time<<"秒"<<endl; //打印</p><p>  //進程就緒(查看未

82、就緒的進程中在該時間片是否可以進入就緒隊列)</p><p>  while(pnum<pcbnum && PcbList[pnum].time_submit<=time) </p><p>  que[quee++]=PcbList[pnum++];</p><p>  //查找time時間片的運行進程</p><p

83、>  if(quef==quee)</p><p><b>  {</b></p><p>  cout<<" 沒有可運行的進程"<<endl;</p><p>  freetime++;</p><p><b>  }</b><

84、/p><p><b>  else</b></p><p>  { //運行進程</p><p>  if(que[quef].time_left==que[quef].time_exe) //該進程是否已開始</p><p><b>  {</b></p>

85、<p>  que[quef].time_start=time; //設(shè)置開始時間</p><p>  que[quef].pro_state=EXECUTE; //設(shè)置狀態(tài)為執(zhí)行</p><p><b>  }</b></p><p>  que[quef].time_lef

86、t--; //剩余執(zhí)行時間減去時間片1</p><p><b>  //打印進程信息</b></p><p>  cout<<"進程編號: "<<que[quef].pro_id<<" 進程名字: "</p><p>  <<

87、que[quef].pro_name<<" 提交時間: "</p><p>  <<que[quef].time_submit<<" 執(zhí)行時間: "<<que[quef].time_exe</p><p>  <<"\n開始時間: "<<que[quef

88、].time_start<<" 還剩時間: "</p><p>  <<que[quef].time_left<<endl ;</p><p>  //該進程是否執(zhí)行結(jié)束</p><p>  if(que[quef].time_left==0) </p><p&

89、gt;<b>  {</b></p><p>  que[quef].time_end=time;</p><p>  que[quef].time_turn=</p><p>  que[quef].time_end-que[quef].time_submit+1;</p><p>  que[quef].time_a

90、ver=</p><p>  que[quef].time_turn/(double)que[quef].time_exe;</p><p>  que[quef].pro_state=END;</p><p>  cout<<"\n進程"<<que[quef].pro_id<<"運行結(jié)束:"

91、;<<"\n進程名字: "</p><p>  <<que[quef].pro_name<<" 提交時間: "</p><p>  <<que[quef].time_submit<<" 執(zhí)行時間: "</p><p>  <<qu

92、e[quef].time_exe<<" 開始時間: "</p><p>  <<que[quef].time_start<<" 結(jié)束時間: "</p><p>  <<que[quef].time_end<<"\n周轉(zhuǎn)時間: "<<que[quef]

93、.time_turn</p><p>  <<" 帶權(quán)周轉(zhuǎn): "<<que[quef].time_aver<<endl ;</p><p>  quef++; //pcb出隊列 </p><p><b>  }</b></p>&l

94、t;p><b>  }</b></p><p>  } // CPU模擬結(jié)束</p><p>  cout<<"\n所有進程運行完畢!"<<endl;</p><p>  double c=(time-freetim

95、e)/(double)time*100;</p><p>  cout<<"\ncpu利用率:"<<c<<"%"<<endl;</p><p><b>  }</b></p><p>  int main()</p><p><

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論