編程模擬多進(jìn)程共享臨界資源_第1頁
編程模擬多進(jìn)程共享臨界資源_第2頁
編程模擬多進(jìn)程共享臨界資源_第3頁
編程模擬多進(jìn)程共享臨界資源_第4頁
編程模擬多進(jìn)程共享臨界資源_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計(jì)名稱:編程模擬多進(jìn)程共享臨界資源專業(yè)班級(jí):_學(xué)生姓名:_學(xué)號(hào):_指導(dǎo)教師:_課程設(shè)計(jì)時(shí)間:軟件工程專業(yè)課程設(shè)計(jì)任務(wù)書學(xué)生姓名專業(yè)班級(jí)學(xué)號(hào)題目編程模擬多進(jìn)程共享臨界資源課題性質(zhì)其它課題來源自擬課題指導(dǎo)教師劉於勛同組姓名主要內(nèi)容要求產(chǎn)生3個(gè)進(jìn)程:1兩個(gè)進(jìn)程模擬需要進(jìn)入臨界區(qū)的用戶進(jìn)程,當(dāng)需要進(jìn)入臨界區(qū)時(shí),顯示:進(jìn)程X請(qǐng)求進(jìn)入臨界區(qū),同時(shí)向管理進(jìn)程提出申請(qǐng);申請(qǐng)返回,表示進(jìn)入了臨界區(qū)。在臨界區(qū)中等待一段隨機(jī)時(shí)間,并顯示:進(jìn)程x正在臨界區(qū);當(dāng)時(shí)間結(jié)束,顯示:進(jìn)程X退出臨界區(qū)同時(shí)向管理進(jìn)程提出退出申請(qǐng);當(dāng)申請(qǐng)返回,顯示:進(jìn)程X已退出臨界區(qū)。2、一個(gè)進(jìn)程作為原語的管理進(jìn)程,接受其他進(jìn)程的臨界區(qū)進(jìn)入

2、請(qǐng)求:如果允許進(jìn)入,則設(shè)置相應(yīng)變量,然后返回;如果不允許進(jìn)入,則進(jìn)入循環(huán)等待,直到允許為止;3、對(duì)臨界區(qū)的訪問應(yīng)遵循空閑讓進(jìn)、忙則等待、有限等待、讓權(quán)等待的準(zhǔn)則。4、進(jìn)程間通信可以采用信號(hào)、消息傳遞、管道或網(wǎng)絡(luò)通信方式。任務(wù)要求理解多進(jìn)程共享臨界資源的原理,并編程實(shí)現(xiàn)參考文獻(xiàn)任滿杰等操作系統(tǒng)原理實(shí)用教程電子工業(yè)出版社湯子瀛計(jì)算機(jī)操作系統(tǒng)(修訂版)西安電子科技大學(xué)出版社張堯?qū)W史美林計(jì)算機(jī)操作系統(tǒng)教程實(shí)驗(yàn)指導(dǎo)清華大學(xué)出版社羅宇等操作系統(tǒng)課程設(shè)計(jì)機(jī)械工業(yè)出版社2005審查意見指導(dǎo)教師簽字:教研室主任簽字:年7月6日信息科學(xué)與工程課程名稱:操作系統(tǒng)原理設(shè)計(jì)題目:編程模擬多進(jìn)程共享臨界資源專業(yè):軟件工程

3、班級(jí):姓名:學(xué)號(hào):序號(hào)評(píng)審項(xiàng)目分?jǐn)?shù)滿分標(biāo)準(zhǔn)說明1內(nèi)容思路清晰,語言表達(dá)準(zhǔn)確,概念清楚,論點(diǎn)正確;設(shè)計(jì)方法科學(xué),分析歸納合理;結(jié)論嚴(yán)謹(jǐn),設(shè)計(jì)有應(yīng)用價(jià)值。任務(wù)飽滿,工作量適中2創(chuàng)新內(nèi)容新穎,設(shè)計(jì)能反映新技術(shù),對(duì)前人工作有改進(jìn)或突破,或有獨(dú)特見解3完整性、實(shí)用性整體構(gòu)思后合理,理論依據(jù)充分,設(shè)計(jì)完整,實(shí)用性強(qiáng)4數(shù)據(jù)準(zhǔn)確、可靠數(shù)據(jù)準(zhǔn)確,算法設(shè)計(jì)合理5規(guī)范性設(shè)計(jì)格式、繪圖、實(shí)驗(yàn)數(shù)據(jù)、標(biāo)準(zhǔn)的運(yùn)用等符合有關(guān)標(biāo)準(zhǔn)和規(guī)定6紀(jì)律性遵守課程設(shè)計(jì)紀(jì)律,聽從指導(dǎo)教師安排,設(shè)計(jì)過程態(tài)度認(rèn)真7答辯準(zhǔn)備充分,思路清晰、論點(diǎn)正確、對(duì)設(shè)計(jì)方案理解深入,問題回答有理有據(jù),簡明正確總分綜合意見指導(dǎo)教師2015年7月12日 # 1要求

4、產(chǎn)生3個(gè)進(jìn)程:1、兩個(gè)進(jìn)程模擬需要進(jìn)入臨界區(qū)的用戶進(jìn)程,當(dāng)需要進(jìn)入臨界區(qū)時(shí),顯示:“進(jìn)程請(qǐng)求進(jìn)入臨界區(qū)”,同時(shí)向管理進(jìn)程提出申請(qǐng);申請(qǐng)返回,表示進(jìn)入了臨界區(qū)。在臨界區(qū)中等待一段隨機(jī)時(shí)間,并顯示:“進(jìn)程正在臨界區(qū)”;當(dāng)時(shí)間結(jié)束,顯示:“進(jìn)程退出臨界區(qū)”,同時(shí)向管理進(jìn)程提出退出申請(qǐng);當(dāng)申請(qǐng)返回,顯示:“進(jìn)程已退出臨界區(qū)?!?、一個(gè)進(jìn)程作為原語的管理進(jìn)程,接受其他進(jìn)程的臨界區(qū)進(jìn)入請(qǐng)求:如果允許進(jìn)入,則設(shè)置相應(yīng)變量,然后返回;如果不允許進(jìn)入,則進(jìn)入循環(huán)等待,直到允許為止;退3、對(duì)臨界區(qū)的訪問應(yīng)遵循空閑讓進(jìn)、忙則等待、有限等待、讓權(quán)等待的準(zhǔn)則。退4、進(jìn)程間通信可以采用信號(hào)、消息傳遞、管道或網(wǎng)絡(luò)通信方式。

5、退 2流程圖:資源是否為空1足是足結(jié)束進(jìn)程進(jìn)入臨界區(qū),等待一段隨機(jī)時(shí)間,顯示“正在等待進(jìn)入臨界區(qū)和等待時(shí)間結(jié)束釋放資源,向管理進(jìn)程由請(qǐng)返回,顯示“正在退出臨界區(qū)逍程獲得資源,向管理逍程申請(qǐng)逍入臨界區(qū),顯示正在等待進(jìn)入臨界區(qū)作輸入兩個(gè)用戶進(jìn)程和一個(gè)管理進(jìn)程4進(jìn)程申請(qǐng)資源,并顯示正在請(qǐng)求資源-3幻顯示“等待臨界區(qū)資源顯示已退出臨界區(qū)4幵始*繼續(xù)等待圖1 3運(yùn)行環(huán)境運(yùn)行環(huán)境:4開發(fā)工具和編程語言開發(fā)工具:,編程語言:5詳細(xì)設(shè)計(jì)5.1程序界面importjava.awt.*;importjava.awt.event.*;importjava.util.*;importjavax.swing.*;imp

6、ortjavax.swing.border.LineBorder;publicclassMainFrameextendsJFrameimplementsFocusListenerJTextAreajta=newJTextArea();多行文本框staticJTextFieldjtf=newJTextField2;/單行文本框staticJButtonjb=newJButton2;按鈕ThreadShowts=newThreadShow();/界面設(shè)計(jì)publicMainFrame()super(“模擬多進(jìn)程共享臨界資源”);題目命名JLabeljl=newJLabel2;for(inti=0;

7、ijtf.length;i+)jtfi=newJTextField(12);jtfi.addFocusListener(this);jl0=newJLabel(第一進(jìn)程的名稱:”);設(shè)置標(biāo)簽名稱,顯示進(jìn)程jll=newJLabel(第二進(jìn)程的名稱:);jb0=newJButton(”模擬開始”);/設(shè)置按鈕名稱,控制程序的開始和結(jié)束jb1=newJButton(”模擬結(jié)束);JMenuBarmb=newJMenuBar();Containercont=this.getContentPane();初始化一個(gè)容器cont.setLayout(newBorderLayout();設(shè)置布局管理器JPa

8、neljp1=newJPanel();JPaneljp2=newJPanel();jp1.setLayout(newGridLayout(0,1);for(inti=0;ijtf.length;i+)/添加文本區(qū)JPaneltemp=newJPanel();temp.add(jli);temp.add(jtfi);jp1.add(temp);for(inti=0;ijb.length;i+)添加按鈕jp2.add(jbi);jp1.add(jp2);jp1.setBorder(newLineBorder(newColor(0,0,0),10);jp1.setBorder(newLineBord

9、er(newColor(238,238,238),10);cont.setLayout(newBorderLayout();cont.add(jp1,BorderLayout.NORTH);jta.setEnabled(true);JScrollPanejs=newJScrollPane(jta,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);jta.setBorder(newLineBorder(newColor(34,57,12),1);js.

10、setBorder(newLineBorder(newColor(238,238,238),10);cont.add(js,BorderLayout.CENTER);this.setSize(335,435);/定義界面大小this.setDefaultCloseOperation(3);/設(shè)置當(dāng)前界面顯示時(shí)相對(duì)屏幕的位置this.setLocation(Toolkit.getDefaultToolkit().getScreenSize().width/2-175,Toolkit.getDefaultToolkit().getScreenSize().height/2-200);this.se

11、tResizable(false);/窗口大小不可變this.setVisible(true);/顯示當(dāng)前窗口jb1.addActionListener(newActionListener()/jb1添加監(jiān)聽器publicvoidactionPerformed(ActionEventarg0)if(ts.tu1!=null&ts.tu1.isAlive()errupt();if(ts.tu2!=null&ts.tu2.isAlive()errupt();System.exit(0););jb0.addActionListener(newActionLis

12、tener()/jb0添加監(jiān)聽器publicvoidactionPerformed(ActionEventarg0)for(inti=0;ijtf.length;i+)jtfi.setEditable(false);MainFrame.jb0.setEnabled(false);jta.setText();ts.run(jtf0.getText().trim(),jtf1.getText().trim(),jta););publicstaticvoidmain(Stringares)newMainFrame();publicvoidfocusGained(FocusEventarg0)/當(dāng)用戶

13、點(diǎn)擊文本框時(shí),文本框就把當(dāng)前內(nèi)容清空J(rèn)TextFieldjtf=(JTextField)arg0.getSource();jtf.setText();publicvoidfocusLost(FocusEventarg0)5.2classThreadManagerimplementsRunnable/指向要管理得臨界資源ThingSomeobj;/記錄obj是否已有使用者booleanjud=false;Vectorvec=newVector();Stringname;publicThreadManager(ThingSomets)obj=ts;publicvoidrun()while(vec.

14、size()!=0)for(inti=0;ivec.size();i+)if(!(Thread)vec.get(i).isAlive()/如果進(jìn)程執(zhí)行結(jié)束(Thread)vec.get(i).interrupt();/*使被阻塞的進(jìn)程拋出一個(gè)中斷異常,從而使進(jìn)程提前結(jié)束阻塞狀態(tài),退出堵塞代碼。*/vec.remove(i);tryThread.currentThread().sleep(100);catch(InterruptedExceptione)e.printStackTrace();JOptionPane.showMessageDialog(null,模擬結(jié)束,信息,/結(jié)束窗口JOpt

15、ionPane.INFORMATION_MESSAGE);for(inti=0;iMainFrame.jtf.length;i+)MainFrame.jtfi.setText();MainFrame.jtfi.setEditable(true);MainFrame.jb0.setEnabled(true);publicvoidaddThreadUser(ThreadUseruser)vec.add(user);publicvoidtake(Threaduser)/進(jìn)程控制塊System.out.println(”進(jìn)程+user.getName()+請(qǐng)求資源);obj.jta.append(”進(jìn)

16、程+user.getName()+請(qǐng)求資源n);如果jud為true,表示有進(jìn)程正在使用資源,jud為false,表示資源沒有被使用while(jud)trySystem.out.println(進(jìn)程+user.getName()+等待資源);obj.jta.append(進(jìn)程+user.getName()+等待資源n);synchronized(obj)/進(jìn)入資源的等待池中,等待被喚醒obj.wait();catch(InterruptedExceptione)System.out.println(進(jìn)程+user.getName()+進(jìn)入臨界區(qū));obj.jta.append(進(jìn)程+user

17、.getName()+進(jìn)入臨界區(qū)n);jud=true;/使用資源obj.useing(user);jud=false;System.out.println(進(jìn)程+user.getName()+已退出臨界區(qū));obj.jta.append(進(jìn)程+user.getName()+已退出臨界區(qū)n);synchronized(obj)/把資源等待池中的進(jìn)程喚醒obj.notifyAll();5.3臨界資源設(shè)計(jì)代碼classThingSomestaticJTextAreajta=newJTextArea();publicThingSome()publicThingSome(JTextAreajta)th

18、is.jta=jta;publicvoiduseing(Threaduser)System.out.println(”進(jìn)程+user.getName()+正在臨界區(qū)”);jta.append(”進(jìn)程+user.getName()+正在臨界區(qū)n);try/模擬使用者使用了該資源一段時(shí)間Thread.currentThread().sleep(500);catch(InterruptedExceptione)e.printStackTrace();System.out.println(進(jìn)程+user.getName()+退出臨界區(qū));jta.append(進(jìn)程+user.getName()+退出臨

19、界區(qū)n);5.4管理進(jìn)程代碼設(shè)計(jì)classThreadUserextendsThread/管理進(jìn)程,接受其他進(jìn)程的臨界區(qū)進(jìn)入請(qǐng)求并處理ThreadManagertm=null;/供構(gòu)造函數(shù)publicThreadUser(ThreadManagertm)this.tm=tm;publicvoidrun()for(inti=0;i30;i+)/進(jìn)程請(qǐng)求使用資源tm.take(this);ThingSome.jta.append(進(jìn)程+this.getName()+完成工作n);5.5通信模塊設(shè)計(jì)classThreadShowThreadUsertu1;ThreadUsertu2;publicvo

20、idrun(Stringname1,Stringname2,JTextAreajta)ThingSomets=newThingSome(jta);ThreadManagertm=newThreadManager(ts);Threadth=newThread(tm);tu1=newThreadUser(tm);tu1.setName(name1); 圖 tu2=newThreadUser(tm);tu2.setName(name2);tu1.start();tu2.start();tm.addThreadUser(tu1);tm.addThreadUser(tu2);ThreadmanagerT

21、hread=newThread(tm);managerThread.start();6測試數(shù)據(jù):第一個(gè)進(jìn)程:第二個(gè)進(jìn)程:6.程1序運(yùn)行界面:圖輸2入進(jìn)程名稱:圖3點(diǎn)擊模擬開始,顯示程序運(yùn)行過程:輸4出程序結(jié)果:圖 # ,3148067任滿杰,操作系統(tǒng)原理實(shí)用教程電子工業(yè)出版社,63湯子瀛,計(jì)算機(jī)操作系統(tǒng)(第三版),西安電子科技大學(xué)出版社TOC o 1-5 h z張堯?qū)W,計(jì)算機(jī)操作系統(tǒng)教程實(shí)驗(yàn)指導(dǎo),清華大學(xué)出版社,羅宇等,操作系統(tǒng)課程設(shè)計(jì),機(jī)械工業(yè)出版社,94劉繼承,程序設(shè)計(jì)及實(shí)驗(yàn),清華大學(xué)出版社,198 #通過這次課程設(shè)計(jì),我們更進(jìn)一步的熟悉計(jì)算機(jī)操作系統(tǒng)的內(nèi)涵,同時(shí)也對(duì)語法和語言的面向?qū)ο筇?/p>

22、性有了一定的理解。我也更加深刻地理解面向?qū)ο蟮幕靖拍詈兔嫦驅(qū)ο蟪绦蛟O(shè)計(jì)的基本原理。這次課程設(shè)計(jì)也提高了我們的編程能力,培養(yǎng)了我們利用面向?qū)ο蟮拈_發(fā)方法進(jìn)行系統(tǒng)開發(fā)的技巧和良好的程序設(shè)計(jì)風(fēng)格;使我們進(jìn)一步學(xué)習(xí)和利用軟件工程思想進(jìn)行軟件開發(fā)和軟件文檔的編制。操作系統(tǒng)是用戶和計(jì)算機(jī)硬件之間的橋梁,用戶通過軟件向操作系統(tǒng)提交作業(yè),每個(gè)作業(yè)有一個(gè)或多個(gè)進(jìn)程組成。所以本設(shè)計(jì)的主要功能是實(shí)現(xiàn)計(jì)算機(jī)的模擬進(jìn)程調(diào)度與共享臨界資源。本模擬操作系統(tǒng)由三個(gè)系統(tǒng)進(jìn)程組成,由原語管理所有的子進(jìn)程和總的內(nèi)存和資源分配,兩個(gè)進(jìn)程對(duì)臨界區(qū)進(jìn)行申請(qǐng)資源和占有。而管理進(jìn)程(原語)和子進(jìn)程都是一個(gè)類的對(duì)象,不同的是系統(tǒng)進(jìn)程由程序自

23、動(dòng)初始化和運(yùn)行,而子進(jìn)程須由模擬用戶提交。在這次編制中,我學(xué)會(huì)了很多東西,也找出了自己的一些不足。通過這次課程設(shè)計(jì)我又加深了對(duì)這些知識(shí)的記憶;其次是各個(gè)功能的算法,以前還是很模糊,現(xiàn)在總算有領(lǐng)悟啦;再次是整個(gè)工程的全局把握還不夠,有時(shí)遺漏忘點(diǎn),不過最后在不斷地修改中完成了這次課程設(shè)計(jì)。 # 源程序importjava.awt.*;importjava.awt.event.*;importjava.util.*;importjavax.swing.*;importjavax.swing.border.LineBorder;publicclassMainFrameextendsJFrameimpl

24、ementsFocusListenerJTextAreajta=newJTextArea();多行文本框staticJTextFieldjtf=newJTextField2;/單行文本框staticJButtonjb=newJButton2;按鈕ThreadShowts=newThreadShow();/界面設(shè)計(jì)publicMainFrame()super(“模擬多進(jìn)程共享臨界資源”);題目命名JLabeljl=newJLabel2;for(inti=0;ijtf.length;i+)jtfi=newJTextField(12);jtfi.addFocusListener(this);jl0=

25、newJLabel(第一進(jìn)程的名稱:”);設(shè)置標(biāo)簽名稱,顯示線程jll=newJLabel(第二進(jìn)程的名稱:);jb0=newJButton(”模擬開始”);/設(shè)置按鈕名稱,控制程序的開始和結(jié)束jb1=newJButton(”模擬結(jié)束);JMenuBarmb=newJMenuBar();Containercont=this.getContentPane();初始化一個(gè)容器cont.setLayout(newBorderLayout();設(shè)置布局管理器JPaneljp1=newJPanel();JPaneljp2=newJPanel();jp1.setLayout(newGridLayout(0

26、,1);for(inti=0;ijtf.length;i+)/添加文本區(qū)JPaneltemp=newJPanel();temp.add(jli);temp.add(jtfi);jp1.add(temp);for(inti=0;ijb.length;i+)添加按鈕jp2.add(jbi);jp1.add(jp2);l4l4jp1.setBorder(newLineBorder(newColor(0,0,0),10);jp1.setBorder(newLineBorder(newColor(238,238,238),10);cont.setLayout(newBorderLayout();cont

27、.add(jp1,BorderLayout.NORTH);jta.setEnabled(true);JScrollPanejs=newJScrollPane(jta,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);jta.setBorder(newLineBorder(newColor(34,57,12),1);js.setBorder(newLineBorder(newColor(238,238,238),10);cont.add(js,Bord

28、erLayout.CENTER);this.setSize(335,435);/定義界面大小this.setDefaultCloseOperation(3);/設(shè)置當(dāng)前界面顯示時(shí)相對(duì)屏幕的位置this.setLocation(Toolkit.getDefaultToolkit().getScreenSize().width/2-175,Toolkit.getDefaultToolkit().getScreenSize().height/2-200);this.setResizable(false);/窗口大小不可變this.setVisible(true);/顯示當(dāng)前窗口jbl.addActi

29、onListener(newActionListener()/jb1添加監(jiān)聽器publicvoidactionPerformed(ActionEventarg0)if(ts.tul!=null&ts.tul.isAlive()errupt();if(ts.tu2!=null&ts.tu2.isAlive()errupt();System.exit(0););jb0.addActionListener(newActionListener()/jb0添加監(jiān)聽器publicvoidactionPerformed(ActionEventarg0)for(inti

30、=0;ijtf.length;i+)jtfi.setEditable(false);MainFrame.jb0.setEnabled(false);jta.setText();ts.run(jtf0.getText().trim(),jtfl.getText().trim(),jta););publicstaticvoidmain(Stringares)newMainFrame(); publicvoidfocusGained(FocusEventarg0)/*當(dāng)用戶點(diǎn)擊文本框時(shí),文本框就把當(dāng)前內(nèi)容清空*/JTextFieldjtf=(JTextField)arg0.getSource();j

31、tf.setText();publicvoidfocusLost(FocusEventarg0)/臨界區(qū)classThreadManagerimplementsRunnable/指向要管理得臨界資源ThingSomeobj;/記錄obj是否已有使用者booleanjud=false;Vectorvec=newVector();Stringname;publicThreadManager(ThingSomets)obj=ts;publicvoidrun()while(vec.size()!=0)for(inti=0;ivec.size();i+)if(!(Thread)vec.get(i).is

32、Alive()/如果進(jìn)程執(zhí)行結(jié)束(Thread)vec.get(i).interrupt();/*使被阻塞的進(jìn)程拋出一個(gè)中斷異常,從而使進(jìn)程提前結(jié)束阻塞狀態(tài),退出堵塞代碼。*/vec.remove(i);tryThread.currentThread().sleep(100);catch(InterruptedExceptione)e.printStackTrace();JOptionPane.showMessageDialog(null,模擬結(jié)束,信息,/結(jié)束窗口JOptionPane.INFORMATION_MESSAGE);for(inti=0;iMainFrame.jtf.length

33、;i+)MainFrame.jtfi.setText();MainFrame.jtfi.setEditable(true);MainFrame.jb0.setEnabled(true);publicvoidaddThreadUser(ThreadUseruser)vec.add(user);publicvoidtake(Threaduser)/進(jìn)程控制塊System.out.println(”進(jìn)程+user.getName()+請(qǐng)求資源);obj.jta.append(”進(jìn)程+user.getName()+請(qǐng)求資源n);如果jud為true,表示有進(jìn)程正在使用資源,jud為false,表示資源

34、沒有被使用while(jud)trySystem.out.println(進(jìn)程+user.getName()+等待資源);obj.jta.append(進(jìn)程+user.getName()+等待資源n);synchronized(obj)/進(jìn)入資源的等待池中,等待被喚醒obj.wait();catch(InterruptedExceptione)System.out.println(進(jìn)程+user.getName()+進(jìn)入臨界區(qū));obj.jta.append(進(jìn)程+user.getName()+進(jìn)入臨界區(qū)n);jud=true;/使用資源obj.useing(user);jud=false;System.out.print

溫馨提示

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

評(píng)論

0/150

提交評(píng)論