課程設計圖書館書籍管理系統_第1頁
課程設計圖書館書籍管理系統_第2頁
課程設計圖書館書籍管理系統_第3頁
課程設計圖書館書籍管理系統_第4頁
課程設計圖書館書籍管理系統_第5頁
已閱讀5頁,還剩25頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、湖南工業大學課 程 設 計資 料 袋計算機與通信學院 學院(系、部)20122013學年第一學期 課程名稱 大型數據庫應用指導教師 曾敏 職稱高級講師學生姓名黃慶清專業班級 計算機091班 學號09408100103題 目圖書館書籍管理系統成 績起止日期2012年11月27日2012年12月22日目 錄 清 單序號材 料 名 稱資料數量備 注1課程設計任務書2課程設計說明書3張456湖南工業大學課程設計任務書2012 2013 學年第 一 學期計算機與通信學院(系、部)計算機科學與技術專業091班級課程名稱:大型數據庫應用設計題目:圖書館書籍管理系統完成期限:自 2012 年 11 月 27

2、日至 2012年 12 月22日共一周內容及任務一、 設計的主要技術參數Oracle數據庫,JSP,JavaScript,Struts2,Servlet,JDBC,Java二、 設計任務實現對圖書館中圖書的添加,刪除,修改,查詢;以及通過觸發器,存儲過程等,對圖書狀態表中的信息進行查詢,添加,修改,和刪除;圖書信息表中的書籍編號字段,通過索引和觸發器,讓其以自動增長的方式進行生成,方便圖書的添加;三、設計工作量數據的建模;數據庫中表的設計;觸發器和存儲過程的設計;JDBC連接Oracle數據庫前臺數據邏輯的設計;前臺界面的設計;進度安排起止日期工作內容2012-11-272012-11-28系

3、統的規劃2012-11-292012-12-01數據庫的設計和建模2012-12-022012-12-12系統的概要設計以及系統前臺的設計,編碼與測試2012-12-132012-12-22系統文檔的整理主要參考資料Oracle數據庫應用 電子出版社出版Oracle11g從入門到精通錢慎一 (編者), 張素智 (編者)Oracle Database 9i/10g/11g編程藝術:深入數據庫體系結構(第2版) 凱特(Thomas Kyte) (作者), 蘇金國(譯者), 王小振 (譯者), 等 (譯者)指導教師(簽字):年 月 日系(教研室)主任(簽字):年 月 日大型數據庫應用課程設計課程設計

4、說明書圖書館書籍管理系統起止日期: 2012年11月27日 至 2012年12月25日學生姓名黃慶清班級計算機091班學號09408100103成績指導教師(簽字)計算機與通信學院2012年12月 25 日圖書館書籍管理系統一、 課題的介紹和課題的任務圖書館書籍管理系統主要對圖書館中書籍進行管理,包括對書籍的添加,刪除,修改,各種方式的查詢等操作,用于管理員對圖書館書籍庫的管理;采用Oracle作為數據庫,應用了Java,Jsp,JavaScript,SQL等編程語言以及 Struts2,JDBC等等技術,另外系統采用B/S結構,MVC的設計模式進行設計,在數據庫方面,多處應用了存儲過程和觸發

5、器;二、課程設計的要求1、書籍的添加:通過觸發器和索引,使圖書的編號按照自動增長的方式進行添加,其他字段還有:書籍名稱,作者,出版社,頁數,藏書地址等;并且通過定義觸發器,使每增加一條圖書信息,在圖書狀態表中給其增加對應的圖書狀態信息;2、書籍的刪除:通過存儲過程來實現,如果該書的狀態為已借出,就不能刪除書籍,并發出提示信息;書籍的刪除,通過定義before觸發器,假如該書籍能夠刪除,就在其刪除之前,刪掉該書籍的狀態信息;3、書籍的修改:修改除了書籍主鍵外的其他信息;4、書籍的查詢:可根據圖書的索引號進行精確查詢,可以根據圖書的書名,作者,出版社,藏書地址等進行模糊查詢,基于系統的需求,還提供

6、系統中以所有字段作為關鍵字的模糊查詢;5、用戶身份驗證,管理員通過用戶登錄,輸入驗證信息,若經過系統驗證后,若正確,則進入圖書管理主頁,若出現錯誤,則跳到登錄界面,并返回相應的友好的錯誤提示信息;三、系統的分析和系統中數據庫的分析(ER圖等)1、系統設計11.系統概要設計-流程圖系統總體設計如圖1.1所示圖1-1實現用戶的登錄,管理員登錄后對圖書進行書籍的添加,書籍各種方式的查詢,書籍的修改,書籍的刪除;12.系統的詳細設計.用戶的登錄 圖書管理員通過輸入管理員和密碼進行驗證,若驗證正確,則進入系統。圖1.2.書籍的添加書籍的添加,用戶在表單中輸入書籍的信息,點擊錄入,數據通過Struts2

7、的過濾器,自動提交數據,在Struts的Action類中進行獲取數據,然后進行檢測,如果檢測輸入信息有誤,則跳轉到添加頁面,并返回相應的錯誤提示;如果信息正確,則調用添加數據存儲過程進行數據的持久化;具體流程如圖1-3所示;圖1.3.書籍的修改書籍的修改,首先查詢出需要修改的書籍,點擊修改,跳轉到書籍修改頁面,順便通過session對象,將原有的書籍對象帶過去;在書籍修改頁面表單中修改相應屬性,提交到Struts2 的Action類中,首先進行數據的校驗,校驗失敗,跳轉到修改頁面,返回相應的出錯信息,校驗成功,則進行書籍的更新處理;具體流程如圖1.4所示; 圖1.4書籍的刪除書籍的刪除,首先查

8、詢出需要修改的書籍,點擊刪除,提交到Struts2中的Action類,順便傳入書籍編號這個值(主鍵,唯一),首先訪問書籍庫進行查詢該書籍的狀態是否是“在館”,是則返回true,進入書籍的刪除環節;調用數據庫中的存儲過程和觸發器,進行書籍的刪除,確保系統數據的一致性;具體流程如圖1.5所示 圖1.5書籍的查詢書籍的查詢,本系統中書籍的查詢設定了多種方式,包括按索書號查詢,按書名查詢,按書籍作者查詢,按出版社查詢,還有按所有字段進行查詢;先選擇查詢的方式,輸入關鍵字,然后進行數據的提交,經數據過濾校驗后,進入控制層,通過判斷其查詢類型,進行數據的查詢,將符合條件的數據查詢出來,裝入集合框架Arra

9、yList中,傳入顯示層進行數據的顯示,具體流程如圖1.6所示; 圖1.62數據庫的設計 2.1數據庫建模E-R圖.1圖書信息建模系統中書籍信息建模如E-R圖2.1所示: 圖2.1.2用戶信息的建模用戶信息的建模如圖2.2所示: 圖2.23系統前臺的設計3.1、系統的結構 本系統使用MVC模式作為系統的設計結構,以JSP作為視圖層;采用struts2框架,以其Acation類作為其控制層,以各種JavaBean,FormBean作為模型層;3.2、界面的設計和布局登錄界面如圖3.1所示 圖3.1圖書管理界面圖書管理主頁中提供了集書籍添加,書籍修改,書籍刪除,書籍詳情查詢 及多功能的圖書檢索功能

10、,使用方便,操作簡單,并設有完善友好的錯誤提示功能,具體展示如圖3.2所示; 圖3.2圖書修改界面書籍修改界面如圖3.3所示; 圖3.3.圖書詳情界面由于數據量比較大,在查詢主頁中不便顯示,通過圖書詳情界面,將對應圖書信息進行顯示;其界面及運行結果如圖3.4所示; 圖3.4四、系統的數據庫實現1.1.書籍信息表和書籍狀態表的設計書籍信息表中包括書籍編號,書籍名稱,作者,出版社,頁數,藏書地址等字段,書籍編號通過觸發器的方式,以自動增長的方式進行添加;頁數為Number類型,其他的都為字符串行;圖書館中書籍的各個字段的設計如圖4.1所示分為圖書表(book)和圖書狀態表(bookstate);

11、圖4.1 表4-1 book表的設計bnumNumberNot null,自動生成,主鍵bnameCharacter(256)Not nullwriterCharacter(256)Not nullpublishCharacter(256)Not nullpageNumberNot nullplaceCharacter(256)Not null 表4-2 bookstate表的設計bnumNumberNot null 外鍵,主鍵stateCharacter(256)Not null default waitcardidCharacter(256)nullborrowDatenull1.2.管理

12、員驗證信息的設計如圖4.2所示Create table Manager(Username varchar2(20),Pwd varchar2(20); 圖4.2 表4-3 manage表的設計usernameCharacter(256)Not null 主鍵pwdCharacter(256)Not null1.3. 觸發器,存儲過程的設計1.3.1.圖書信息添加觸發器的設計先創建一個索引,計算出前一個字段的最大值,然后創建before觸發器,每增加一項書籍記錄,給書籍編號這一字段賦值;圖書的管理-創建圖書表:Create table book(bnum number(11),bname var

13、char2(20),writer varchar2(20),publish varchar2(50),page number(11),place varchar2(20),);-創建序列:create sequence book_seqincrement by 1 start with 1maxvalue 1.0E28minvalue 1 nocache -創建觸發器create or replace trigger tr_bookbefore insert bookfor each rowbeginselect book_seq.nextval into :new.bnum from dua

14、l;end tr_book;-測試,插入數據Insertintobook(bname,writer,publish,page,place) values('compute','liusi','China',342,'一樓庫'); insert into book(bname,writer,publish,page,place) values('computerr','liusi','湖工大',842,'二樓庫');1.3.2.添加書籍狀態信息觸發器trigger_st

15、ate每創建一項書籍記錄后,自動在圖書狀態信息表中,添加一條對應的圖書狀態信息;創初始觸發器create or replace trigger_stateafter insert bookfor each rowbegin -如何用到bnum的值-> insert into bookstate(bnum) values( )end ;1.3.3.刪除存儲過程的創建pro_del先判斷圖書狀態State是否為”已借出”,如果是,則不能進行刪除操作,與此同時,發出提示信息;如果不是,則先刪除bookstate表中對應的那條記錄,再將相應的圖書信息記錄刪除。-刪除,過程Create or re

16、place procedure pro_del( bnumber IN number(11) , say out varchar2(20)as Num1 number sta varchar2 date1=dateBegin select state into sta from bookstate where bnum=bnumber;if sta='wait' then delete from bookstate where bnum=bnumber; delete from book where bnum=bnumber; say='yes'else say

17、='no'end if; end;更新書籍存儲過程的創建pro_update-更新書籍存儲過程Create or replace procedure pro_update( bnum1 IN number(11) , bname1 IN varchar2(20), writer1 IN varchar2(20), publish1 IN varchar2(50), page1 IN number(11), place1 IN varchar2(20),)asBegin update book set bname=bname1,writer=writer1,publish=pub

18、lish1,page=page1,place=place1 where bnum=bnum1; end;用戶登錄存儲過程的創建pro_login-登錄Create or replace procedure pro_login( mname IN varchar2(20), mpwd IN varchar2(20), say out varchar2(20) as count number=0;Begin select count(*) into count from Manage where username=mname && pwd=mpwd;if sta=0 then sa

19、y='yes'else say='no'end if; end;五、系統的實現及調試 1.實現數據庫的連接public DBoracle()try Class.forName("oracle.jdbc.driver.OracleDriver");/oracle名稱還需填寫ct=DriverManager.getConnection("jdbc:oracle:thin:.248:1521:orcl","orcl","orcl"); catch (ClassNotFoundExcepti

20、on e) / TODO Auto-generated catch blocke.printStackTrace(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); 2.系統功能的實現2.1通過在前臺JSP頁面中書籍信息,由Struts2的過濾器,將其數據自動封裝成對應的JavaBean,在對應的Action中進行處理;<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts P

21、UBLIC "-/Apache Software Foundation/DTD Struts Configuration 2.0/EN" "/dtds/struts-2.0.dtd"><struts><package name="user" extends="struts-default"> <action name="userlogin" class="lib.action.UserLoginActio

22、n" method="execute"> <result name="success">main.jsp</result> <result name="failure">main.jsp</result> </action> <action name="addbook" class="lib.action.AddBookAction" method="execute"> <resul

23、t name="success">BookManage.jsp</result> <result name="failure">BookManage.jsp</result> </action> <action name="updatebook" class="lib.action.UpdateBookAction" method="execute"> <result name="success">

24、BookManage.jsp</result> <result name="failure">updatebook.jsp</result> </action> <action name="deletebook" class="lib.action.DeleteBookAction" method="execute"> <result name="success">BookManage.jsp</result>

25、<result name="failure">BookManage.jsp</result> </action> <action name="cbookselect" class="lib.action.ChangeBookSelectAction" method="execute"> <result name="success">BookManage.jsp</result> <result name="f

26、ailure">BookManage.jsp</result> </action> </package><package name="sel" extends="struts-default"> <action name="select" class="lib.action.SelectAction" method="execute"> <result name="success">mai

27、n.jsp</result> <result name="error">main.jsp</result> </action></package></struts> 2.2.圖書的添加 在圖書管理主界面中,錄入各項圖書信息,通過Struts2過濾器,在Action中進行數據的校驗,若出現數據格式等方面的錯誤,將錯誤信息寫入一個HashMap集合中,并將所有出錯信息的集合返回到圖書管理主界面;如果數據符合要求,則向數據庫圖書表中增加一條記錄,同時往圖書狀態表中也寫入相應的記錄;public boolean

28、 addBook(Book b). 2.3.圖書的修改先通過查詢,找到要修改的記錄,點擊進入圖書信息修改界面,完成后,輸入新的值,進行數據的修改;publicboolean updateBook(Book b) try CallableStatement cstmt = null;String procedure = "call pro_update(?,?,?,?,?,?)"cstmt.setString(1,b.getBname();cstmt.setString(2,b.getWriter();cstmt.setString(3,b.getPublish();cstm

29、t.setInt(4,b.getPage();cstmt.setString(5, b.getPlace();cstmt.setInt(6, b.getBnum();cstmt = ct.prepareCall(procedure); cstmt.executeUpdate();returntrue; catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();returnfalse;2.4圖書的刪除publicboolean deleteBook(Book b) try /pstmt=ct.prepa

30、reStatement("delete from bookstate where bnum=? ");pstmt=ct.prepareCall(" call pro_del(?) ");pstmt.setInt(1,b.getBnum();/pstmt.executeUpdate();/pstmt=ct.prepareStatement("delete from book where bnum=?");/pstmt.setInt(1,b.getBnum();pstmt.execute();returntrue; catch (SQLE

31、xception e) / TODO Auto-generated catch blocke.printStackTrace();returnfalse;2.5.圖書的查詢系統中提供了圖書索引號,圖書名稱,作者,出版社,等多種方式的查詢,并且為了方便起見,還設立通過所有字段進行模糊查詢的功能;public ArrayList getLibBooks(Book b, int choice) ArrayList al=new ArrayList();String sql="select * from book where "String str=null;try / 按照各種查

32、詢if (choice = 1) sql="select * from book where bnum=?"pstmt = ct.prepareStatement(sql);pstmt.setInt(1, b.getBnum(); elseif (choice = 2) sql="select * from book where bname like ?"pstmt=ct.prepareStatement(sql);pstmt.setString(1, "%"+b.getBname()+"%"); elseif (

33、choice = 3) sql="select * from book where writer=?"pstmt=ct.prepareStatement(sql);pstmt.setString(1, b.getWriter(); elseif (choice = 4) sql="select * from book where publish like ?" pstmt=ct.prepareStatement(sql); pstmt.setString(1, "%"+b.getPublish()+"%"); el

34、se sql="select * from book where bname like ? OR writer like ? OR publish like ?"pstmt=ct.prepareStatement(sql);pstmt.setString(1, "%"+b.getPublish()+"%"); /將所有信息寫入publish這一欄中pstmt.setString(2, "%"+b.getPublish()+"%"); /將所有信息寫入publish這一欄中pstmt.setStr

35、ing(3, "%"+b.getPublish()+"%"); /將所有信息寫入publish這一欄中ResultSet rs=pstmt.executeQuery();while(rs.next()Book bk=new Book();bk.setBnum(rs.getInt(1);bk.setBname(rs.getString(2);bk.setWriter(rs.getString(3);bk.setPublish(rs.getString(4);bk.setPage(rs.getInt(5);bk.setPlace(rs.getString(6

36、);al.add(bk);return al; catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();returnnull;2.6管理員地登錄 管理員必須通過身份驗證才能進入書籍管理頁面,對書籍的管理;publicboolean managerLogin(String workid,String password)try /pstmt=ct.prepareStatement("select * from manager where workid=? ");CallableSta

37、tement cstmt = null;cstmt=ct.prepareCall(" call pro_login(?,?,?) ");cstmt.setString(1, workid);cstmt.setString(2, password);(CallableStatement) cstmt).registerOutParameter(3, oracle.jdbc.OracleTypes.CURSOR);cstmt.execute();/從輸出參數中獲取值ResultSet rs = (ResultSet) cstmt.getObject(3);/第3個?所代表的參數

38、ResultSetMetaData rmd =rs.getMetaData(); String str=null;while(rs.next()for(int i=0;i<rmd.getColumnCount();i+) str=rs.getString(i+1)+"" if(str.trim().equals("yes")returntrue;elsereturnfalse; catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();returnfals

39、e;六、系統的使用說明 圖書館管理員登錄進入系統,即可到圖書管理界面,在圖書管理界面上按要求進行書籍添加,若輸入不正確,系統自動顯示出提示信息,修改后進行繼續添加;按照管理員的意愿選擇適當的查詢方式(所有字段,索引號,書名,出版社等),點擊需要更新的記錄,進行相應操作,若選擇刪除,操作后會有相應的信息提示,若選擇修改,則跳入修改界面,進行相應圖書信息的修改;七、課程設計總結與心得 每一次課程設計都是一次不可重現的學習與實踐的機會,這一次Oracle大型數據庫應用的應用系統的開發也不例外。通過這一次課程設計,我們得以將我們所學的數據庫原理、Oracle數據庫特性、面向對象編程語言及其編程技術、軟

40、件開發技術、軟件工程思想、軟件體系結構乃至項目管理應用到實踐中去,同時也是這些理論的再一次學習與深化,也是一次工程思想的飛躍。在這一次基于Oracle應用的軟件項目開發活動中,我們再一次體會到“計算機科學與技術是看不懂的,只有做才真正有所收獲”的告誡。 Oracle被稱之為大型的、專業數據庫,廣泛應用在各種大型項目中。然而,在我們的理論學習中絲毫沒有領會到這一點。更可惜的是我們的課程設計無法開發大型項目,沒能夠感受到Oracle大型數據庫區別于其他中小型數據庫的特性。不過,有一點可以感受到,那就是Oracle占用的計算機資源較多,這是大型數據庫不可避免的。附1:完成該系統的所有成員名單及其工作

41、人數:4人負責人:劉思工作:負責整個系統的設計與整合,查詢,更新模塊成員:趙倩倩工作:負責書籍刪除模塊,以及前臺的部分工作成員:唐睿(考研)工作:負責用戶的驗證;成員:黃慶清(考研)負責:書籍的添加模塊備注:考研的同學,由于要全心去準備考研,故完成的工作量比較少,請老師諒解;附2:系統的主要程序代碼(部分主要的代碼如下:)publicclass DBoracle implements DBinterface Connection ct;PreparedStatement pstmt;/實例化驅動類,創建數據庫連接對象public DBoracle()try Class.forName(&quo

42、t;oracle.jdbc.driver.OracleDriver");/oracle名稱還需填寫ct=DriverManager.getConnection("jdbc:oracle:thin:.248:1521:orcl","orcl","orcl"); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (SQLException e) / TODO Auto-generated cat

43、ch blocke.printStackTrace(); publicboolean addBook(Book b) try pstmt=ct.prepareStatement("insert into book(bname,writer,publish,page,place)values(?,?,?,?,?)");pstmt.setString(1,b.getBname() );pstmt.setString(2, b.getWriter();pstmt.setString(3, b.getPublish();pstmt.setInt(4, b.getPage();pst

44、mt.setString(5,b.getPlace();pstmt.executeUpdate();pstmt=ct.prepareStatement("insert into bookstate(bnum,state) values(select Max(bnum)from book),'wait') ");/這里要定義觸發器來解決pstmt.executeUpdate(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();returntrue;publ

45、icboolean deleteBook(Book b) try /pstmt=ct.prepareStatement("delete from bookstate where bnum=? ");pstmt=ct.prepareCall(" call pro_del(?) ");pstmt.setInt(1,b.getBnum();/pstmt.executeUpdate();/pstmt=ct.prepareStatement("delete from book where bnum=?");/pstmt.setInt(1,b.g

46、etBnum();pstmt.execute();returntrue; catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();returnfalse;public ArrayList getLibBooks(Book b, int choice) ArrayList al=new ArrayList();String sql="select * from book where "String str=null;try / 按照各種查詢if (choice = 1) sql=&

47、quot;select * from book where bnum=?"pstmt = ct.prepareStatement(sql);pstmt.setInt(1, b.getBnum(); elseif (choice = 2) sql="select * from book where bname like ?"pstmt=ct.prepareStatement(sql);pstmt.setString(1, "%"+b.getBname()+"%"); elseif (choice = 3) sql="

48、select * from book where writer=?"pstmt=ct.prepareStatement(sql);pstmt.setString(1, b.getWriter(); elseif (choice = 4) sql="select * from book where publish like ?" pstmt=ct.prepareStatement(sql); pstmt.setString(1, "%"+b.getPublish()+"%"); else sql="select *

49、from book where bname like ? OR writer like ? OR publish like ?"pstmt=ct.prepareStatement(sql);pstmt.setString(1, "%"+b.getPublish()+"%"); /將所有信息寫入publish這一欄中pstmt.setString(2, "%"+b.getPublish()+"%"); /將所有信息寫入publish這一欄中pstmt.setString(3, "%"+b

50、.getPublish()+"%"); /將所有信息寫入publish這一欄中ResultSet rs=pstmt.executeQuery();while(rs.next()Book bk=new Book();bk.setBnum(rs.getInt(1);bk.setBname(rs.getString(2);bk.setWriter(rs.getString(3);bk.setPublish(rs.getString(4);bk.setPage(rs.getInt(5);bk.setPlace(rs.getString(6);al.add(bk);return al

51、; catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();returnnull;publicboolean updateBook(Book b) try CallableStatement cstmt = null;String procedure = "call pro_update(?,?,?,?,?,?)"cstmt.setString(1,b.getBname();cstmt.setString(2,b.getWriter();cstmt.setString(3,b.g

52、etPublish();cstmt.setInt(4,b.getPage();cstmt.setString(5, b.getPlace();cstmt.setInt(6, b.getBnum();cstmt = ct.prepareCall(procedure); cstmt.executeUpdate();returntrue; catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();returnfalse;Action類(部分)publicclass AddBookAction extends

53、 ActionSupport BookForm bf;public BookForm getBf() return bf;publicvoid setBf(BookForm bf) this.bf = bf;Overridepublic String execute() throws Exception BookForm bkf=new BookForm();bkf.setBname(bf.getBname();bkf.setPage(bf.getPage();bkf.setPlace(bf.getPlace();bkf.setPublish(bf.getPublish();bkf.setWr

54、iter(bf.getWriter();boolean flag=true;String message=""Book b=new Book();int pages=0;Map addmap=new HashMap();/定義一個集合來存儲出錯信息if(bkf.getBname()=null|bkf.getBname().trim().equals("")flag=false;addmap.put(1,"書籍名不能為空!");if(bkf.getPage()=null | bkf.getPage().trim().equals("")flag=false;addmap.put(2,"頁數不能為空!");elsetry pages=Integer.parseInt(bkf.getPage().trim(); catch (Exception e) flag=false;addmap.put(3, "頁數輸入格式不對!");e.printStackTrace();/測試用if(bkf.getPlace()=null | bkf.getPlace().trim().equals("")flag=false;a

溫馨提示

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

評論

0/150

提交評論