《操作系統(tǒng)課程設(shè)計說明書》參考樣版_第1頁
《操作系統(tǒng)課程設(shè)計說明書》參考樣版_第2頁
《操作系統(tǒng)課程設(shè)計說明書》參考樣版_第3頁
《操作系統(tǒng)課程設(shè)計說明書》參考樣版_第4頁
《操作系統(tǒng)課程設(shè)計說明書》參考樣版_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

佛山科學技術(shù)學院課程設(shè)計用紙PAGE課程設(shè)計說明書設(shè)計名稱:操作系統(tǒng)課程設(shè)計題目:操作系統(tǒng)命令接口設(shè)計 學生姓名:老志翔專業(yè):計算機科學與技術(shù)班級:05級學號:305104534044指導教師:任朝暉日期:2010年9月16日

課程設(shè)計任務書計算機科學與技術(shù)專業(yè)05年級班老志翔設(shè)計題目操作系統(tǒng)命令接口設(shè)計主要內(nèi)容利用C語言、DOS中斷中21H與屏幕顯示相關(guān)的中斷調(diào)用完成設(shè)計,具體包括:命令解釋器列目錄命令顯示時間命令顯示日期命令回顯字符串命令創(chuàng)建目錄命令刪除目錄命令更改路徑命令顯示當前工作目錄命令刪除文件命令打印文本命令文件重新命名顯示文本命令顯示版本命令顯示目錄結(jié)構(gòu)命令清除當前顯示內(nèi)容命令上述內(nèi)容中,所有命令通過命令解釋器能夠執(zhí)行,即啟動命令解釋器以后,輸入相應命令,按照輸入指令執(zhí)行相應功能,并在屏幕上顯示相應結(jié)果。具體要求本設(shè)計的目的是通過設(shè)計一些簡單的操作系統(tǒng)的命令接口,使學生掌握操作系統(tǒng)接口的設(shè)計方法。要求學生在熟悉操作系統(tǒng)的命令接口及程序接口的基礎(chǔ)上,利用C語言設(shè)計簡單的命令接口。命令接口基于DOS的命令行接口。

進度安排依照教學計劃,課程設(shè)計時間為:2周。要求講解、資料查找、系統(tǒng)分析,概要設(shè)計(2天)系統(tǒng)詳細設(shè)計、功能設(shè)計(2天)算法實現(xiàn)、編程調(diào)試(5天)功能演示、資料整理、課程設(shè)計說明書編寫。(1天)完成后應上交的材料課程設(shè)計說明書紙質(zhì)文檔總評成績指導教師簽名日期年月日系主任審核日期年月日佛山科學技術(shù)學院課程設(shè)計用紙PAGE15佛山科學技術(shù)學院課程設(shè)計用紙目錄TOC\o"1-3"\h\z一、程序概述 11.1完成的任務 11.2解決的問題 1二、概念原理 12.1基本概念 12.2基本原理 2三、總體設(shè)計 23.1實現(xiàn)方法 23.2技術(shù)路線 2四、詳細設(shè)計 24.1主要函數(shù) 24.2引用函數(shù) 3五、完成情況 3六、使用說明 3七、設(shè)計總結(jié) 47.1系統(tǒng)特色 47.2經(jīng)驗教訓 57.3實踐感受 5參考資料 6附錄 7PAGE1一、程序概述1.1完成的任務本設(shè)計是要求編寫一個簡單的命令解釋器,利用C語言、DOS中斷中21H與屏幕顯示相關(guān)的中斷調(diào)用進行設(shè)計的,主要完成要求中所提到的功能如:可打開提示符,并獲取用戶輸入的指令、可解析指令、可尋找命令文件、可執(zhí)行基本的命令。在本設(shè)計中,設(shè)計了一個dos命令提示行,初步實現(xiàn)了系統(tǒng)登陸、用戶帳戶管理、命令解析、基本命令的實現(xiàn)。1.2解決的問題在設(shè)計過程中主要遇到了兩個難題,一個是有關(guān)文件的操作,另一個是有關(guān)系統(tǒng)調(diào)用問題。由于課題是要模擬命令處理器功能,命令處理器命令中有大部分是文件的操作,有關(guān)文件夾的創(chuàng)建與刪除,文件的操作,當前目錄等一系列問題都是有待解決的;并且由于本身做的就是一個命令處理器那么就不能再使用系統(tǒng)中原有的命令處理器命令,通過與老師討論,可以使用系統(tǒng)調(diào)用解決這一問題。在查閱了庫函數(shù)后基本確定了,可以使用包含在“doc.h”和“dir.h”中的findfirst()、findnext()、dir()、dir()完成以上功能,并且它們會將文件信息保存在一個Structffolk結(jié)構(gòu)體中,定義如下:structffblk{charff_reserved[21];/*DOS保留字*/charff_attrib;/*文件屬性*/intff_ftime;/*文件時間*/intff_fdate;/*文件日期*/longff_fsize;/*文件長度*/charff_name[13];/*文件名*/}二、概念原理2.1基本概念命令接口處理器命令處理器是一個讀入并解釋你輸入的命令的程序,它是介于使用者和操作系統(tǒng)之核心程序(kernel)間的一個接口。它是一個交互性命令解釋器。命令處理器獨立于操作系統(tǒng),這種設(shè)計讓用戶可以靈活選擇適合自己的命令處理器。命令處理器讓你在命令行鍵入命令,經(jīng)過命令處理器解釋后傳送給操作系統(tǒng)(內(nèi)核)執(zhí)行。命令提示符“命令提示符”也就是Windows95/98下的“MS-DOS方式”,雖然隨著計算機產(chǎn)業(yè)的發(fā)展,Windows操作系統(tǒng)的應用越來越廣泛,DOS面臨著被淘汰的命運,但是因為它運行安全、穩(wěn)定,有的用戶還在使用,所以一般Windows的各種版本都與其兼容,用戶可以在Windows系統(tǒng)下運行DOS,中文版WindowsXP中的命令提示符進一步提高了與DOS下操作命令的兼容性,用戶可以在命令提示符直接輸入中文調(diào)用文件。消息循環(huán)通過這個循環(huán)機制應用程序從消息隊列中檢索消息,再把它分派給適當?shù)拇翱?,然后繼續(xù)從消息隊列中檢索下一條消息,再分派給適當?shù)拇翱?,依次進行。系統(tǒng)調(diào)用系統(tǒng)調(diào)用,顧名思義,說的是操作系統(tǒng)提供給用戶程序調(diào)用的一組“特殊”接口。用戶程序可以通過這組“特殊”接口來獲得操作系統(tǒng)內(nèi)核提供的服務,比如用戶可以通過文件系統(tǒng)相關(guān)的調(diào)用請求系統(tǒng)打開文件、關(guān)閉文件或讀寫文件,可以通過時鐘相關(guān)的系統(tǒng)調(diào)用獲得系統(tǒng)時間或設(shè)置定時器等。從邏輯上來說,系統(tǒng)調(diào)用可被看成是一個內(nèi)核與用戶空間程序交互的接口,它好比一個中間人,把用戶進程的請求傳達給內(nèi)核,待內(nèi)核把請求處理完畢后再將處理結(jié)果送回給用戶空間。2.2基本原理首先系統(tǒng)登陸,在這一塊采用文件的形式保存用戶信息。登陸通過后進入提示符界面,同時,此時已進入一個消息循環(huán),不斷地接收消息,根據(jù)輸入的命令進行解析,然后執(zhí)行命令,遇exit命令退出?;玖鞒虉D:開始開始系統(tǒng)登陸合法?獲取命令解析命令處理命令結(jié)束三次?三、總體設(shè)計3.1實現(xiàn)方法程序主要通過文件來存儲帳戶信息。登陸時,根據(jù)用戶名查找?guī)ぬ柮藢γ艽a。進入提示符后,首先初始化。在消息循環(huán)中運用了一個while(1)循環(huán),連續(xù)的獲取用戶輸入,直到用戶輸入exit退出循環(huán),結(jié)束程序。在處理文件或文件夾過程中,沒有使用系統(tǒng)當前文件夾變量,只是在程序中單獨設(shè)定了一個變量作為系統(tǒng)當前目錄,每次獲得的目錄路徑,如果是相對路徑,則自動在前面加上當前目錄路徑。3.2技術(shù)路線整個程序的設(shè)計流程,圍繞著消息循環(huán)這一主線,根據(jù)消息判斷調(diào)用不同的功能函數(shù)來完成相應的功能,主要使用了一些文件操作的函數(shù)。四、詳細設(shè)計4.1主要函數(shù)voidinit()顯示系統(tǒng)信息,版權(quán)信息等,初始化當前目錄等信息。intlogin()顯示登陸界面,以及登陸成功與否的判斷與結(jié)果。正常登陸返回1。intgetcmd()命令獲取函數(shù),在消息循環(huán)中獲取用戶輸入的命令,并將命令通過空格分隔開,分別存放在一個命令數(shù)組中。voiddir() 列出目錄及文件voidcd() 改變當前文件夾voidclear() 清屏voidnewdir() 新建目錄voiddeldir() 刪除目錄voiddel() 刪除文件voidcopy() 復制文件voidcut() 剪切文件voidaccount() 更改用戶信息以上均為一般的實現(xiàn)命令處理器功能的命令函數(shù),可以通過相應的調(diào)用來實現(xiàn)一般的功能,也可以在其后面加入“/?”來獲得幫助。voidhelp()幫助信息,當用戶在提示符下直接輸入“/?”或在一個命令處理器命令后輸入“/?”轉(zhuǎn)至此函數(shù)處,顯示相關(guān)命令的幫助信息。4.2引用函數(shù)intchdir(char*path)使指定的目錄path(如:“C:\\WPS”)變成當前的工作目錄,成功返回Ointfindfirst(char*pathname,structffolk*ffolk,intattrib)查找指定的文件,成功返回0intfindnext(structffolk*ffolk)取匹配finddirst的文件,成功返回0intmkdir(char*pathname)建立一個新的目錄pathname,成功返回Ointrmdir(char*pathname)刪除一個目錄pathname,成功返回0五、完成情況在用戶登陸方面,完成了簡單的,用戶名和用戶密碼的保存更改,核對等操作,對密碼文件采用的是記錄式的讀寫。但是,本程序中并未實現(xiàn)記錄的刪除以及用戶信息的加密。在命令處理機命令方面,基本實現(xiàn)了幾個比較常用的命令,但參數(shù)還不夠非富,并且對參數(shù)的輸入,以及路徑等的解析還不夠智能化,輸入命令時必輸按固定的格式。在當前目錄方面,沒有使用系統(tǒng)調(diào)用中的設(shè)置當前目錄的函數(shù),而是自己定義了一個變量用于存入當前目錄,每次操作文件或文件夾時,都要將相對目錄轉(zhuǎn)化為絕對目錄才能進行操作。另外還有一個問題,就是命令對大小寫敏感,這對于基于“Windows”平臺的命令處理機是一大缺點。因為在命令解析中用了簡單的字符串比較,所以對大小寫敏感。六、使用說明啟動程序,首先會出現(xiàn)下圖所示的登陸界面,在Login后面輸入用戶名,在Password后面輸入密碼,如果用戶名密碼正確,那么進入系統(tǒng),否則返回到登陸界面,如果連續(xù)輸錯三次,那么程序自動退出。進入系統(tǒng)后,首先出現(xiàn)版權(quán)信息等,然后就是出現(xiàn)提示符了如下圖,用戶可以輸入“/?”查看當前系統(tǒng)支持的命令及作用等信息。如果想使用某個命令,那么可以先查看使用幫助,方法為:先在提示符后輸入命令名,加空格后輸入“/?”就會出現(xiàn)如下圖所示的命令幫助提示,它會告訴用戶可以使用哪些參數(shù),各參數(shù)的作用等信息。在命令提示符下輸入exit可以退出系統(tǒng)。七、設(shè)計總結(jié)7.1系統(tǒng)特色在本系統(tǒng)中已初步實現(xiàn)一個完整命令處理器的功能,能夠正常的解析命令并執(zhí)行,在解析命令方面,采用指針加數(shù)組的形式,既可以節(jié)約內(nèi)存資源,又可以自動擴充命令參數(shù)。7.2經(jīng)驗教訓在編程過程中要多使用庫函數(shù)中自帶的內(nèi)容,不必另外再去編寫已有的功能,這樣不僅能節(jié)省時間,也能提高程序的可靠性。要多了解庫函數(shù),可以閱讀相應的幫助文件來獲得有用的信息。遇到問題多與老師同學討論,可以幫助自己跳出思維定勢。7.3實踐感受每次的課程設(shè)計都是對我們所學知識的一個深化,在實踐過程中能遇到許多的問題,遇到問題分析問題解決問題,這樣對知識的理解得到一個升華。實踐過程中學到的都是印象非常深刻的,所以以后要多參加這樣的實踐,認真對待每一次機會。

參考資料1、《計算機操作系統(tǒng)教程》(第2版)張堯?qū)W史美林編著清華大學出版社2、《操作系統(tǒng)實驗指導》任愛華李鵬劉方毅清華大學出版社3、《操作系統(tǒng)實驗教程——核心技術(shù)與編程實例》顧寶根王立松顧喜梅科學出版社4、《C++編程思想》 Bruck著侯捷譯機械工業(yè)出版社5、《C語言程序中清除鍵盤緩沖區(qū)的方法》楊長虹益陽職業(yè)技術(shù)學院學報

附錄#include<string.h>#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<dir.h>#include<dos.h>#include<time.h>/*定義全局變量*/charroot_dir[3];charpre_dir[255];char*cmd_line[255];charcuruser[10];structuserinf{charusername[10];charuserpass[10];};/*函數(shù)申明*/voidinit();intlogin();intgetcmd();voiddir();voidcd();voidclear();voidnewdir();voiddeldir();voiddel();voidcopy();voidcut();voidaccount();voidhelp();main(){init();while(1)/*消息循環(huán)*/{switch(getcmd()){case0:help();break;case1:dir();break;case2:cd();break;case3:newdir();break;case4:deldir();break;case5:del();break;case6:copy();break;case7:cut();break;case8:account();break;}}}voidinit()/*程序初始化*/{if(login()==0){exit(0);}strcpy(pre_dir,"C:\\");/*設(shè)定當前目錄*/clear();/*清屏*/printf("SShell-AboveWindowsXP[Ver1.0]\n");printf("(C)Copyright2007stars_625.\n\n");getchar();/*清空緩沖區(qū)*/}intlogin()/*程序登陸*/{charname[10];charpass[10];intlogintime=3;FILE*fp;structuserinfinf;while(logintime>0)/*登陸錯誤超過三次自動退出*/{printf("Login:");scanf("%s",name);printf("Password:");scanf("%s",pass);if((fp=fopen("inf.dll","r"))==NULL){printf("Can'topeninf.dllfile!\n");printf("Pressanykeytoexit...");getch();exit(0);}while(fread(&inf,sizeof(inf),1,fp)==1&&strcmp(inf.username,name)!=0){}fclose(fp);if(strcmp(inf.username,name)==0){if(strcmp(inf.userpass,pass)==0){strcpy(curuser,inf.username);clear();return1;}else{printf("Loginerror,Pressanykeytorelogin!\n");getch();clear();}}else{printf("Theuserisnotexist,Pressanykeytorelogin!\n");getch();clear();}logintime--;}printf("Loginerrorabovethreetimes,Pressanykeytoexit!");getch();return0;}intgetcmd()/*獲得命令*/{inti=0,j=0,k=0;charbuf[255];printf("%s>",pre_dir);/*打印提示符*/fgets(buf,255,stdin);cmd_line[j]=calloc(255,sizeof(char));while(buf[i]!='\n'&&buf[i]!='\0')/*命令分析*/{if(buf[i]!=''){cmd_line[j][k]=buf[i];++k;}else{cmd_line[j+1]=calloc(255,sizeof(char));k=0;++j;}++i;}cmd_line[j+1]=0;if(strcmp(cmd_line[0],"exit")==0){exit(0);}elseif(strcmp(cmd_line[0],"/?")==0||strcmp(cmd_line[1],"/?")==0){return0;}elseif(strcmp(cmd_line[0],"dir")==0){return1;}elseif(strcmp(cmd_line[0],"cd")==0){return2;}elseif(strcmp(cmd_line[0],"newdir")==0){return3;}elseif(strcmp(cmd_line[0],"deldir")==0){return4;}elseif(strcmp(cmd_line[0],"del")==0){return5;}elseif(strcmp(cmd_line[0],"copy")==0){return6;}elseif(strcmp(cmd_line[0],"cut")==0){return7;}elseif(strcmp(cmd_line[0],"account")==0){return8;}elseif(cmd_line[0][1]==':'){strcpy(pre_dir,cmd_line[0]);strcat(pre_dir,"\\");}elseif(strcmp(cmd_line[0],"clear")==0){clear();}else{printf("Thecommandisnotsupported!\n");}}voiddir()/*列出文件及文件夾*/{structffblkff;charfilepath[255];strcpy(filepath,pre_dir);findfirst(strcat(filepath,"*.*"),&ff,FA_DIREC);if(ff.ff_attrib==16){printf("<DIR>\t");}else{printf("\t");}printf("%s\n",ff.ff_name);while(findnext(&ff)==0){if(ff.ff_attrib==16){printf("<DIR>\t");}else{printf("\t");}printf("%s\n",ff.ff_name);}}voidcd()/*改變當前目錄*/{inti=0;structffblkff;charfilepath[255];strcpy(filepath,pre_dir);if(strcmp(cmd_line[1],"..")==0)/*返回上一層目錄*/{while(filepath[i]!='\0'){i++;}if(filepath[i-2]!=':'){i=i-2;while(filepath[i]!='\\'&&i>=2){i--;}filepath[i+1]='\0';strcpy(pre_dir,filepath);}}elseif(strcmp(cmd_line[1],"\\")==0)/*返回根目錄*/{while(filepath[i]!='\\'){i++;}filepath[i+1]='\0';strcpy(pre_dir,filepath);}else{findfirst(strcat(filepath,"*.*"),&ff,FA_DIREC);while(strcmp(ff.ff_name,cmd_line[1])!=0){if(findnext(&ff)!=0){break;}}if(strcmp(ff.ff_name,cmd_line[1])==0){strcat(pre_dir,cmd_line[1]);strcat(pre_dir,"\\");}else{printf("Can'tfindthefile!\n");}}voidclear(){clrscr();}voidnewdir(){charfilepath[255];strcpy(filepath,pre_dir);if(mkdir(strcat(filepath,cmd_line[1]))==0){printf("Makedir'%s'successfully!\n",cmd_line[1]);}else{printf("Makedirerror!\n");}}voiddeldir(){charfilepath[255];strcpy(filepath,pre_dir);if(rmdir(strcat(filepath,cmd_line[1]))==0){printf("Deletedir'%s'successfully!\n",cmd_line[1]);}else{printf("Deletedirerror!\n");}}voiddel(){charfilepath[255];strcpy(filepath,pre_dir);if(unlink(strcat(filepath,cmd_line[1]))==0){printf("Delete%ssuccessfully!\n",cmd_line[1]);}else{printf("Deleteerror!\n");}}voidcopy(){charfilepath[255];charsourcepath[255];charaimpath[255];FILE*newfp;FILE*oldfp;charch;strcpy(filepath,pre_dir);if(cmd_line[1][1]!=':'){strcpy(sourcepath,filepath);strcat(sourcepath,cmd_line[1]);}else{strcpy(sourcepath,cmd_line[1]);}if(cmd_line[2][1]!=':'){strcpy(aimpath,filepath);strcat(aimpath,cmd_line[2]);}else{strcpy(aimpath,cmd_line[2]);}if((oldfp=fopen(sourcepath,"r"))==NULL){printf("Can'topenoldfile!\n");}if((newfp=fopen(aimpath,"w"))==NULL){printf("Can'tcreatnewfile!\n");}while((ch=fgetc(oldfp))!=EOF){fputc(ch,newfp);}fclose(oldfp);fclose(newfp);printf("Copyfrom%sto%ssuccessfully!\n",sourcepath,aimpath);}voidcut(){charfilepath[255];charsourcepath[255];charaimpath[255];FILE*newfp;FILE*oldfp;charch;strcpy(filepath,pre_dir);if(cmd_line[1][1]!=':'){strcpy(sourcepath,filepath);strcat(sourcepath,cmd_line[1]);}else{strcpy(sourcepath,cmd_line[1]);}if(cmd_line[2][1]!=':'){strcpy(aimpath,filepath);strcat(aimpath,cmd_line[2]);}else{strcpy(aimpath,cmd_line[2]);}if((oldfp=fopen(sourcepath,"r"))==NULL){printf("Can'topenoldfile!\n");}if((newfp=fopen(aimpath,"w"))==NULL){printf("Can'tcreatnewfile!\n");}while((ch=fgetc(oldfp))!=EOF){fputc(ch,newfp);}fclose(oldfp);fclose(newfp);if(unlink(sourcepath)==0){printf("Cutfrom%sto%ssuccessfully!\n",sourcepath,aimpath);}else{printf("Deleteoldfileerror!\n");}}voidaccount(){FILE*fp;structuserinfinf;if(strcmp(cmd_line[1],"/add")==0){if((fp=fopen("inf.dll","r+"))==NULL){printf("Can'topeninf.dllfile!\n");printf("Pressanykeytoexit...");getch();}while(fread(&inf,sizeof(inf),1,fp)==1&&strcmp(inf.username,cmd_line[2])!=0){}if(strcmp(inf.username,cmd_line[2])==0){printf("Createusererror,theuserisexist!\n");}else{strcpy(inf.username,cmd_line[2]);strcpy(inf.userpass,cmd_line[3]);if(fwrite(&inf,sizeof(inf),1,fp)==1){printf("Createuser%ssuccessfully!\n",inf.username);}else{printf("Createusererror!\n");}}fclose(fp);}elseif(strcmp(cmd_line[1],"/edit")==0){if((fp=fopen("inf.dll","r+"))==NULL){printf("Can'topeninf.dllfile!\n");printf("Pressanykeytoexit...");getch();}while(fread(&inf,sizeof(inf),1,fp)==1&&strcmp(inf.username,cmd_line[2])!=0){}if(strcmp(inf.username,cmd_line[2])!=0){printf("Editusererror,theuserisnotexist!\n");}else{strcpy(inf.username,cmd_line[2]);strcpy(inf.userpass,cmd_line[3]);fseek(fp,-20L,1);if(fwrite(&inf,sizeof(inf),1,fp)==1){printf("Edituser%ssuccessfully!\n",inf.username);}else{printf("Editusererror!\n");}}fclose(fp);}else{printf("Pleaseentercorrectparameter,type/?forhelp!\n");}}voidhelp(){if(strcmp(cmd_line[0],"/?")==0){printf("Thelistofcommands.\n\n");printf("dir\t\tListthefilesanddirs.\n");printf("cd\t\tChangethedir.\n");printf("clear\t\tClearthescreen.\n");printf("newdir\tMakeadir.\n");printf("deldir\tDeleteadir.\n");printf("del\t\tDeleteafile.\n");printf("copy\t\tCopyafilefromaplacetoanother.\n");printf("cut\t\tCutafilefromaplacetoanother.\n");printf("account\tAddeditordeleteaaccount.\n\n");printf("Formoreinformationaddtype/?aftercommand.\n\n");printf("Notice:Allthecommandlineiscapitalizationdistinction!\n\n");}else{if(strcmp(cmd_line[0],"dir")==0){printf("Listthefilesanddirs.\n\n");printf("dirpath\n\n");printf("path\t\tThediryouwanttolist.\n");printf("\t\tifpathisNULLthenlistthecurrentdir.\n\n");}elseif(strcmp(cmd_line[0],"cd")==0){printf("Changethedir.\n\n");printf("cd<\\|..|path>\n\n");printf("\\\t\tReturntotherootdir.\n");printf("..\t\tReturntotheparentdir.\n");printf("path\t\tThediryouwantchangeto.\n\n");}els

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論