




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 【摘要】 隨著經(jīng)濟和科技的高速發(fā)展,人們的生活水平也迅速的提高,伴隨著是人們的生活方式也在潛移默化的改變著,人們的生活節(jié)奏在不斷的加快,越來越多的時間花在工作和人際上,而相對的自己娛樂時間越來越少。對于這種改變,在線視頻點播系統(tǒng)悄然而生,并且迅速被人們所接受和喜愛。 本課題主要采用的設(shè)計語言是java,所設(shè)計的在線視頻點播系統(tǒng)最終達(dá)成包括用戶模塊、視頻文件上傳、注冊、登錄等功能和管理員模塊、視頻審核,發(fā)布、用戶管理等功能?!娟P(guān)鍵詞】 視頻點播;java;html;SQL server 2005;1緒論1.1 背景及意義伴隨著中國經(jīng)濟的快速發(fā)展,人們的生活節(jié)奏加快,生
2、活方式簡單快速化,人們的娛樂休閑時間越來越少,在傳統(tǒng)的電視節(jié)目中,人們完全是被動的,節(jié)目提供者在什么時間段播放什么樣的節(jié)目,人們就得按照節(jié)目提供者給得時間段去看相應(yīng)的節(jié)目。這已經(jīng)滿足不了人們的需求,對于現(xiàn)在的生活節(jié)奏,人們已經(jīng)不可能為了看一個節(jié)目而預(yù)先安排自己的時間。人們都希望能夠隨時的看自己想要看的節(jié)目。在線視頻點播系統(tǒng)就是為了滿足現(xiàn)在人們的需求。這種信息服務(wù)方式符合現(xiàn)在人們對信息資源的更深層次的要求。2相關(guān)技術(shù)和開發(fā)環(huán)境2.1 系統(tǒng)架構(gòu)本系統(tǒng)主要采用MVC架構(gòu)的設(shè)計模式。這種模式主要是把一個應(yīng)用分成三部分設(shè)計的方式,使用這種模式會讓程序設(shè)計更加的簡單,也讓耦合程度減至最小。視圖(v)在本系
3、統(tǒng)中也就是頁面,用于展示數(shù)據(jù)和傳遞數(shù)據(jù),沒有處理在這里發(fā)生作為視圖來講。模型(M)表示企業(yè)提供的一些處理數(shù)據(jù)的邏輯。模型主要用來處理用戶從界面?zhèn)鱽淼臄?shù)據(jù),它能夠處理多個視圖提供過的數(shù)據(jù),并且能夠被重復(fù)使用,提高了性能,減少了代碼的重復(fù)性,有利于后期的維護。控制器(C)可看作第三方,主要是調(diào)用視圖和模型的作用。它在這個過程中擔(dān)任的只是指路的作用,看是要選擇哪個視圖和模型。2.2關(guān)鍵技術(shù)2.2.1 JDBC JDBC是為訪問數(shù)據(jù)庫而出現(xiàn)的一種JAVA技術(shù),不同的數(shù)據(jù)庫都有其對應(yīng)的JDBC,不過他們的原理大都是一致的。它的作用就是為了讓程序員更容易的去訪問數(shù)據(jù)庫和對數(shù)據(jù)進行增刪改查的操作。它包含兩部
4、分:第一部分是提供給程序員使用的API,大部分API位于Java.sql包中,擴展的部分API位于Javax.sql包中。程序員只要熟悉JDBC API,就可以編寫程序訪問數(shù)據(jù)庫、操作數(shù)據(jù)庫的記錄,而且操作不同的數(shù)據(jù)庫代碼幾乎相同。當(dāng)然對于不同的數(shù)據(jù)庫我們需要用的不同數(shù)據(jù)庫驅(qū)動包來完成對數(shù)據(jù)庫的連接。2.2.2 Jquery Jquery是對JavaScript的封裝,它簡化了JavaScript語法具有很好的平臺兼容性,因此極大的方便了開發(fā)人員操作DOM、更多的制作網(wǎng)頁動畫的函數(shù)、使用Ajax無刷新技術(shù)使得網(wǎng)頁制作更加的簡單功能效果更加的強大。
5、 Jquery具有的優(yōu)勢:輕量級、強大的選擇器、出色的DOM操作的封裝、可靠的事件處理機制、完善的Ajax、出色的瀏覽器兼容性、開源等。12.2.3 HTML5 video標(biāo)簽 在html5中,增加了video標(biāo)簽用于在網(wǎng)頁中嵌入視頻播放功能。通過<video>標(biāo)簽定義在HTML中嵌入的視頻的相關(guān)屬性設(shè)置。video 元素支持三種視頻格式如圖2.2.3: 圖2.2.3視頻格式2<video> 標(biāo)簽的屬性如圖2.2.3(1) 圖2.2.3(1)標(biāo)簽屬性22.3開發(fā)環(huán)境及平臺2.3.1 Eclipse Eclipse是一種免費的開發(fā)平臺(IDE),現(xiàn)在主要用于開發(fā)JAVA
6、程序的工具,當(dāng)然它也可以用于開發(fā)其他語言程序如C/C+、COBOL等,Eclipse之所以可以做到這樣歸功于它是開源的并具有眾多的插件。Eclipse已經(jīng)超越了開發(fā)環(huán)境的概念,它的目標(biāo)是做成一個通用的平臺,讓盡量多的軟件做為插件集成在上面,成為未來的集成的桌面環(huán)境。3Eclipse 環(huán)境搭建:JDK的安裝在系統(tǒng)變量中添加以下環(huán)境變量: a. JAVA_HOME值為:安裝JDK的目錄; b.CLASSPATH值為:.;%JAVA_HOME%lib; c.PATH值為:%JAVA_HOME%bin;%JAVA_HOME%jrebin2.3.2 MyEclipseMyEclipse是EclipseI
7、DE的擴展,利用它我們能極大的提高工作效率在數(shù)據(jù)庫和JavaEE的開發(fā)、發(fā)布以及應(yīng)用程序服務(wù)器的整合方面。它通常是用于開發(fā)JAVA的工作平臺是一種企業(yè)級應(yīng)用。MyEclipse是功能豐富的JavaEE集成開發(fā)環(huán)境,包括了完備的編碼,調(diào)試、測試和發(fā)布功能,完整支持HTML,Struts,jsp,css,JavaScript,Spring,SQL,Hibernate。4 在本課題設(shè)計中,將使用MyEclipse進行開發(fā)。2.3.3 Tomcat服務(wù)器Web服務(wù)器也有很多種,在本系統(tǒng)中只是簡單的Web應(yīng)用,所以選用Tomcat作為服務(wù)平臺。它占用資源少,穩(wěn)定且免費并且是獨立運行的,有很好的擴展性和安
8、全性,但它對J2EE的EJB程序無法運行,如果你要運行J2EE的EJB程序可使用Weblogic,WebSphere服務(wù)器。只要你把做好的項目布置到上面,就能夠通過瀏覽器訪問你想要訪問的地址網(wǎng)頁。2.3.4 SQL Server 2005 開發(fā)的一種軟件,它的出現(xiàn)極大的方便了那些需要對大數(shù)據(jù)量的進行操作的用戶。SQL Server 2005數(shù)據(jù)庫引擎為關(guān)系型數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù)提供了更安全可靠的存儲功能,使您可以構(gòu)建和管理用于業(yè)務(wù)的高可用和高性能的數(shù)據(jù)應(yīng)用程序。5 。3在線視頻點播系統(tǒng)分析與設(shè)計3.1需求分析3.1.1系統(tǒng)目標(biāo) 開發(fā)出一個功
9、能實用,優(yōu)秀的網(wǎng)站,為用戶提供各種視頻信息及交互平臺,使用戶能夠在快節(jié)奏的生活環(huán)境中,在有條件的情況下能夠隨時的觀看自己想要觀看的視頻,并且也能夠成為視頻的提供者,分享自己覺得好的視頻。3.1.2可行性分析 隨著人們生活節(jié)奏的加快,快餐式的文化越來越突出,人們不能夠隨心的安排自己的時間觀看自己想要的視頻信息,在線視頻點播系統(tǒng),為人們提供了自主選擇的功能,讓用戶能夠隨時的觀看自己想要的視頻,在線視頻點播系統(tǒng),也越來越受人們的喜愛。它符合現(xiàn)在人們快餐式的生活方式。隨著視頻網(wǎng)站的不斷完善,功能的不斷增加,用戶數(shù)也不斷的增加,所以在線視頻點播系統(tǒng)將有很好的發(fā)展空間。3.2在線視頻點播系統(tǒng)概要設(shè)計系統(tǒng)的
10、概要設(shè)計主要對系統(tǒng)的總體功能設(shè)計,模塊的劃分,系統(tǒng)數(shù)據(jù)庫如何設(shè)計進行研究。3.2.1模塊劃分本系統(tǒng)主要分為兩部分:1. 視頻點播前端(用戶)前端主要功能:1.用戶選擇視頻。2.觀看視頻。3.上傳視頻。2. 視頻點播后端(管理員)后端主要功能:1.用戶管理。2.視頻管理。3.2.2 功能模塊的設(shè)計 用戶權(quán)限和管理員權(quán)限,具體包括:1.用戶:注冊,登錄,修改個人資料,上傳視頻,播放,評論,評分,搜索2.管理員:登錄,用戶管理,視頻管理。3.2.3系統(tǒng)功能層次模塊圖 圖3.2.3系統(tǒng)功能層次模塊圖3.3用戶模塊描述3.3.1用戶注冊模塊設(shè)計校驗功能有:1.驗證必填項是否有輸入。2.輸入的格式是否正確
11、。3.兩次密碼是否一樣,用戶名是否可用。注冊成功的條件:1.所有必填項都有填。2.相應(yīng)信息的輸入格式符合條件。3.兩次密碼一樣。3.3.2用戶登錄模塊校驗功能有:1.驗證必填項是否有輸入。登錄成功的條件:1.用戶名已經(jīng)注冊。2.用戶名和密碼正確。3.輸入的驗證碼與隨機產(chǎn)生的驗證碼一致。 圖3.3.1用戶注冊模塊流程圖 圖3.3.2用戶登錄模塊流程圖3.3.3個人中心校驗功能有:1.驗證必填項是否有輸入。信息修改成功的條件:1.用戶名無法修改。2. 相應(yīng)信息的輸入格式符合條件3. 所有必填項都有填。 3.3.4視頻上傳校驗功能有:1.驗證必填項是否有輸入。2.輸入的格式是否正確。視頻上傳成功的條
12、件:1.視頻的格式是.MP4 。2.圖片格式是.Jpg。 3.視頻的大小是否符合上傳的大小。 圖3.3.3個人中心流程圖 圖3.3.4視頻上傳流程圖3.3.5視頻點播 用戶登錄完后,跳轉(zhuǎn)到首頁,可進行視頻的選擇和點播。用戶選擇視頻后如果視頻需要積分,則用戶需扣掉相應(yīng)的積分,方能觀看,如果積分不夠則不能觀看,用戶需要購買積分后再點播方能觀看。 圖3.3.5視頻點播流程圖3.3.6評論模塊 用戶在觀看視頻的時候可以對該視頻進行評論,發(fā)表對視頻的看法,評論時用戶必須是登錄狀態(tài),評論字?jǐn)?shù)不能大于500字符。圖3.3.6視頻評論流程圖3.3.7視頻評分模塊 用戶可對當(dāng)前觀看的視頻進行評分,用戶評分是需是
13、登錄狀態(tài),否則無法進行評分,最高分5分,最低分0分。3.3.8搜索模塊 該模塊的功能:1.快速搜索定位影片。3.3.9找回密碼模塊 該模塊的作用是:幫助用戶找回忘記的密碼。 圖3.3.7視頻評分流程圖 圖3.3.8搜索模塊流程圖 圖3.3.9找回密碼模塊流程圖3.4管理員功能模塊描述3.4.1登錄模塊校驗功能有:1.驗證必填項是否有輸入。登錄成功的條件:1.用戶名和密碼正確。2.輸入的驗證碼與隨機產(chǎn)生的驗證碼一致。圖3.4.1管理員登錄模塊流程圖3.4.2用戶管理模塊 用戶管理模塊作用:1.對用戶進行刪除。2.查看用戶的評論。3.查看用戶上傳的視頻。 圖3.4.2用戶管理模塊流程圖3.4.3視
14、頻管理模塊 該模塊管理員看查看審核通過的視頻和未審核的視頻并且管理員需對用戶上傳的視頻進行審核,看是否有不良的信息,審核通過后方能發(fā)布視頻,前端才能觀看到該視頻,否則管理員不給以發(fā)布且刪除視頻。4數(shù)據(jù)庫設(shè)計4.1系統(tǒng)邏輯結(jié)構(gòu)設(shè)計用戶表:用戶編號,用戶名,密碼,昵稱,性別,手機號,用戶積分,頭像地址,真實姓名,身份證,郵箱,密保問題,密保答案,狀態(tài),權(quán)限,備注視頻表:視頻編號,用戶編號,板塊編號,視頻標(biāo)題,昵稱,視頻地址,視頻封面,視頻簡介,視頻積分,上傳時間,播放次數(shù),評分,視頻狀態(tài),備注評論表:評論編號,視頻編號,用戶編號,評論內(nèi)容,昵稱,評論時間播放列表:播放編號,視頻編號,用戶編號,播放
15、時間板塊表:板塊編號,板塊名,所屬主題,備注4.2表設(shè)計4.2.1表名的解釋Users用戶表Video視頻表Comment評論表Playlist播放列表Board板塊表4.2.2用戶表解析4.2.3視頻表解析4.2.4評論表解析4.3.5播放列表解析4.2.6板塊表解析5界面設(shè)計5.1前臺界面設(shè)計5.1.1主界面設(shè)計5.1.2前臺登錄界面設(shè)計5.1.3個人中心界面設(shè)計5.1.4用戶注冊界面設(shè)計5.1.5視頻上傳界面設(shè)計5.1.6視頻播放界面設(shè)計5.1.7視頻評論界面設(shè)計5.2后臺界面設(shè)計5.2.1登錄界面設(shè)計5.2.2管理員界面設(shè)計6關(guān)鍵代碼6.1視頻上傳代碼public class Vide
16、oUploadingServlet extends HttpServlet private static final long serialVersionUID = 1L;private ServletConfig config;public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException request.setCharacterEncoding("utf-8");response.setCharacterEnc
17、oding("utf-8");response.setContentType("text/html");PrintWriter out = response.getWriter();HttpSession session = request.getSession();User user = (User) session.getAttribute("user");int vScore = 0;java.util.Date date = new java.util.Date();SimpleDateFormat dateFormat =
18、new SimpleDateFormat("yyyy-MM-dd");String path = this.getServletContext().getRealPath("");/ 得到path=D:apache-tomcat-6.0.29webappsVideoOnlinepath = path + "upload/" / 生成文件夾File f = new File(path);f.mkdirs(); / 生成文件夾uploadString relativePath = "upload/" / 沒有文件名的相
19、對路徑,上傳時用SmartUpload su = new SmartUpload();su.initialize(getServletConfig(), request, response);try su.upload();/ 加載上傳的文件 catch (Exception e1) out.println("<script>alert('你傳的視頻太大了,重新上傳!');location.replace('./uploadVideo.jsp')</script>");try String vCover = "
20、;", vURL = ""String vTitle = su.getRequest().getParameter("vTitle");String vPresentation = su.getRequest().getParameter("vPresentation");String bTheme = su.getRequest().getParameter("bTheme");String bName = su.getRequest().getParameter("bName");
21、String txtvScore = su.getRequest().getParameter("vScore");if (txtvScore != null && !txtvScore.equals("") try vScore = Integer.parseInt(txtvScore); catch (Exception e) out.println("<script>alert('只允許輸入整數(shù),系統(tǒng)將進行int強轉(zhuǎn)')</script>");try vScore = (i
22、nt) Double.parseDouble(txtvScore); catch (Exception e1) out.println("<script>alert('Sorry!轉(zhuǎn)換失敗,請正確輸入!');location.replace('./uploadVideo.jsp')</script>");return;if (vScore < 0) out.println("<script>alert('Sorry!請輸入一個大于零的整數(shù)!');location.replac
23、e('./uploadVideo.jsp')</script>");return;String SQL = "select * from Board where bTheme='" + bTheme+ "' and bName='" + bName + "'"List<Board> listbID = BoardDao.selectBoardBySQL(SQL);if (listbID.size() <= 0) out.println("
24、<script>alert('未填寫模塊主題!');location.replace('./uploadVideo.jsp')</script>"); return;int bID = listbID.get(0).getbID();for (int i = 0; i < su.getFiles().getCount(); i+) / 循環(huán)輸出加載文件com.jspsmart.upload.File file = su.getFiles().getFile(i);if (file.getFieldName().equals
25、("vURL") / 判斷文件是哪個文本框傳過來的if (!file.getFileExt().equals("mp4") / 判斷文件格式out.println("<script>alert('只允許添加mp4格式的視頻!');location.replace('./uploadVideo.jsp')</script>");return;String ext = file.getFileExt();/ 獲取文件格式 String saveVurlUrl = "&quo
26、t;/ 保存地址 Stringfilename=String.valueOf(Calendar.getInstance().getTimeInMillis();/ 獲取當(dāng)前毫秒數(shù)saveVurlUrl = relativePath + filename + bID + "." + ext; / 保存路徑String sql = "select * from Video where vURL='upload/"+ saveVurlUrl + "'"/ System.out.println("sql="
27、 + sql);List<Video> list = VideoDao.selectVideoBySQL(sql);/ System.out.println("list=" + list.size();if (list.size() > 0) out.println("<script>alert('您上傳的視頻已存在,請重新上傳!');location.replace('./uploadVideo.jsp')</script>");return;/ System.out.print
28、ln("saveVurlUrl="+saveVurlUrl);file.saveAs(saveVurlUrl, su.SAVE_VIRTUAL); / 文件另存為vURL = saveVurlUrl;/ 有文件名的相對路徑,播放時用,要保存到VIDEO表中的VURL字段 else if (file.getFieldName().equals("vCover") if (!file.getFileExt().equals("jpg") out.println("<script>alert('只允許添加jpg
29、格式的圖片!');location.replace('./uploadVideo.jsp')</script>");return;String ext = file.getFileExt();/ 獲取文件格式String savevCoverUrl = ""/ 保存地址Stringfilename=String.valueOf(Calendar.getInstance().getTimeInMillis();/ 獲取當(dāng)前毫秒數(shù)savevCoverUrl = relativePath + filename + bID + &quo
30、t;." + ext; / 保存路徑 file.saveAs(savevCoverUrl, su.SAVE_VIRTUAL); / 圖片另存為vCover = savevCoverUrl;/ 有文件名的相對路徑,播放時用,要保存到VIDEO表中的VURL字段 System.out.println("vScore=" + vScore);Video video = new Video(user.getuID(), bID, vTitle, user.getNickname(), vURL, vCover, vPresentation, vScore, Date.va
31、lueOf(dateFormat.format(date), 0, 0, 1, null);if (VideoDao.addVideo(video) out.println("<script>alert('視頻上傳成功!!');location.replace('./index.jsp')</script>"); else out.println("<script>alert('視頻上傳失敗!!');location.replace('./uploadVideo.jsp
32、39;)</script>"); catch (SmartUploadException e) e.printStackTrace();public final ServletConfig getServletConfig() return config;public final void init(ServletConfig servletconfig) config = servletconfig;6.2視頻點播代碼public class VideoVODServlet extends HttpServlet public void doPost(HttpServl
33、etRequest request, HttpServletResponse response)throws ServletException, IOException request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8");response.setContentType("text/html");PrintWriter out = response.getWriter();String uID= request.getParamete
34、r("uID").trim();String vID= request.getParameter("vID").trim();String vScore= request.getParameter("vScore").trim();Video video= VideoDao.selectVideoByID(Integer.parseInt(vID); if(!uID.equals("")&&uID!=null&&!vScore.equals("")&&am
35、p;vScore!=null&&!vID.equals("")&&vID!=null) User user=UserDao.selectUserByID(Integer.parseInt(uID); if(user=null) out.print("非法用戶"); return; if(Integer.parseInt(uID)=video.getuID() out.print("您是視頻上傳者,可以免費觀看!"); return; int uscore= user.getuScore();String
36、 sql="select * from Playlist where vID="+Integer.parseInt(vID)+" and uID="+Integer.parseInt(uID); List<Playlist> list= PlaylistDao.selectPlaylistBySQL(sql); if( list.size()>0) video.setpCount(video.getpCount()+1); VideoDao.updateVideo(video);Playlist playlist=new Playlis
37、t(Integer.parseInt(vID), Integer.parseInt(uID),Date.valueOf(new SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date(); PlaylistDao.addPlaylist(playlist); out.print("您播放過此影片,可免費觀看!"); return; if(uscore>=Integer.parseInt(vScore) user.setuScore(uscore-Integer.parseInt(vScore
38、);/扣除觀看視頻用戶積分 UserDao.updateUser(user); /添加視頻觀看歷史記錄Playlist playlist=new Playlist(Integer.parseInt(vID), Integer.parseInt(uID),Date.valueOf(new SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date();/給視頻上傳者加積分(只加視頻積分的一半,另一半給網(wǎng)站管理員) User videoUser=UserDao.selectUserByID(video.getuID();in
39、t videoUserScore= (int)(Integer.parseInt(vScore)/2);/視頻上傳者獲得的積分int videoAdminScore=Integer.parseInt(vScore)-videoUserScore;/網(wǎng)站管理員獲得的積分 videoUser.setuScore(videoUser.getuScore()+videoUserScore); UserDao.updateUser(videoUser); /給網(wǎng)站管理員加積分 List<User> adminUserList=UserDao.selectUserBySQL("select * from Users where permission=2"); if(adminUserList.size()>0) for (User u:adminUserList) u.setuScor
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度酒店客房預(yù)訂與商務(wù)洽談與住宿套餐合同
- 二零二五年度婚姻介紹所涉外婚姻服務(wù)合同
- 二零二五餐飲業(yè)商鋪租賃合同附贈會員管理系統(tǒng)合作
- 2025年宜賓貨運從業(yè)資格考題
- 《物流系統(tǒng)分析》課件 項目七任務(wù)一 認(rèn)識物流系統(tǒng)控制
- 村支部書記發(fā)言稿
- 殘聯(lián)疫情發(fā)言稿
- 高中家長會:高二下學(xué)期期末家長會課件
- 吉安市房屋租賃合同
- 小紅書平臺獨家代理運營合同
- 雅思海外閱讀8套真題(含答案解析)
- GB/T 26060-2010鈦及鈦合金鑄錠
- 一般的演出演藝報價單
- 高考專題復(fù)習(xí):小說專題訓(xùn)練歷史小說的特點
- 應(yīng)急監(jiān)測培訓(xùn)課件
- 人教部編版六年級下冊道德與法治第二課-《學(xué)會寬容-第一課時-寬容讓生活更美好》教學(xué)課件
- 高二語文(人教統(tǒng)編版)《包身工(第二課時)》【教案匹配版】最新國家級中小學(xué)課程課件
- 自制龍門架承載力計算說明
- -抗腫瘤藥物的心臟毒性及防治新版課件
- 對核武器和核事故的防護
- 中國古代經(jīng)濟史講稿
評論
0/150
提交評論