版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
#電子設(shè)計(jì)應(yīng)用軟件訓(xùn)練總結(jié)報(bào)告(二)一、題目分析1、問題描述讀入一個(gè)C程序,統(tǒng)計(jì)程序中代碼、注釋和空行的行數(shù)以及函數(shù)的個(gè)數(shù)和平均行數(shù),并利用統(tǒng)計(jì)信息分析評(píng)價(jià)該程序的風(fēng)格。為方便,作以下約定:第一個(gè)字符是'{'的行稱為注釋行(該行不含語句)。除了空行和注釋行外,其余均為代碼行,每個(gè)函數(shù)都是全局的,沒有嵌套函數(shù)。2、基本要求把C程序文件作為TEXT文件讀人源程序;邊讀入程序,邊識(shí)別統(tǒng)計(jì)代碼行、注釋行和空行,還要識(shí)別過程和函數(shù)的開始和結(jié)束,以便統(tǒng)計(jì)其個(gè)數(shù)和平均行數(shù)。評(píng)價(jià)分為代碼、注釋和空行3方面。分為A、B、C和D4個(gè)等級(jí),等級(jí)的劃分標(biāo)準(zhǔn)是:A級(jí)B級(jí)C級(jí)■D級(jí)代碼(過程平均長(zhǎng)度)10?15行8?9行或16?20行5?7行或21?24行<5或>24行注釋(占總行數(shù)比率)10?25%10?14%或26?30%5?9%或31?35%<5%或〉35%空行(占總行數(shù)比率)15?25%10?14%或26?30%5?9%或31?35%<5%或〉35%以下是對(duì)程序文件ProgAnal.C分析的輸出結(jié)果示例:Theresultsofanalysingprogramfile“ProgAnal。C”:Linesofcode:180Iinesofcomments:63Blanklines:52CodeCommentsSpace61%21%18%Theprogramincludes9proceduresand4functions.Theaveragelengthofasectionofcodeis12.9lines.GradeA。EXCellentroutineSizeStyle.GradeA:Excellentcommentingstyle.GradeA:Excellentwhitespacestyle.3、需求分析(1)文本串非空且以C程序文件形式存放,文件由用戶建好并設(shè)立路徑。(2)把C程序文件按字符順序讀入源程序;(3)邊讀入程序,邊識(shí)別統(tǒng)計(jì)代碼行、注釋行和空行,同時(shí)還要識(shí)別函數(shù)的開始和結(jié)束,以便統(tǒng)計(jì)其個(gè)數(shù)和平均行數(shù)。(4)在計(jì)算機(jī)終端輸出的結(jié)果是:函數(shù)的個(gè)數(shù),函數(shù)的總行數(shù),函數(shù)的平均行數(shù),總函數(shù),空行的行數(shù),注釋的行數(shù),函數(shù)的平均長(zhǎng)度的等級(jí),注釋等級(jí),空行等級(jí)。(5)測(cè)試數(shù)據(jù):C文本文件為本次練習(xí)中的l.cpp二、設(shè)計(jì)過程此次課程設(shè)計(jì)頻繁的用到了文件的讀寫操作,牽扯到了關(guān)于緩存的一些細(xì)節(jié)問題,利用函數(shù)定義特性的格式與關(guān)鍵字排除方法相結(jié)合,實(shí)現(xiàn)所要求的功能。1、頭文件引用與宏定義:#include<stdio.h>#include<stdlib.h>#include<string.h>#defineTRUE1#defineFALSE0#defineBOOLint#defineMAXSIZE5000#defineCOUNT20//可以統(tǒng)計(jì)的最大的文件個(gè)數(shù)#defineLEN20//文件名的最大長(zhǎng)度2、程序所用存儲(chǔ)結(jié)構(gòu)//函數(shù)屬性結(jié)構(gòu)typedefstruct{charfilename[20];//每一個(gè)函數(shù)的名字intlength;//每一個(gè)函數(shù)的長(zhǎng)度intpos;//每一個(gè)函數(shù)的位置}Fun;//統(tǒng)計(jì)結(jié)構(gòu)的聲明typedefstruct{intcomments;//純注釋的個(gè)數(shù)intcomment;//混合注釋個(gè)數(shù)intblank;//空行的個(gè)數(shù)Funfun[MAXSIZE];//函數(shù)的屬性intothers;//除去函數(shù)中代碼外其余的代碼個(gè)數(shù)intfuncount;//函數(shù)的個(gè)數(shù)}Analy;3、函數(shù)功能說明BOOLStrEmpty(char*s)//S是不是空intFind(char*sl,char*s2)//查找SI中是否有值為S2的子串voidHaveLine(FILE*fp,char*s)//重文件中獲取一行char*IgnoreB(char*s)//截?cái)嘁恍械目兆址鹖ntIsCom(char*s)//判斷一行是不是注釋BOOLIsBlank(char*s)//判斷一行是不是空格BOOLIsFunB(char*s)//判斷一行是否是函數(shù)的開頭4、詳細(xì)設(shè)計(jì)說明(1)主函數(shù)的設(shè)計(jì)調(diào)用各個(gè)子函數(shù),運(yùn)用while和for循環(huán)語句,實(shí)現(xiàn)程序源代碼的分析。
N1Yi=0Ni<nYi++結(jié)束.printf("\n請(qǐng)輸入第%4個(gè)源文件:",i+l);NN1Yi=0Ni<nYi++結(jié)束.printf("\n請(qǐng)輸入第%4個(gè)源文件:",i+l);N,.!GetIn(&n)lln<=0一printf("請(qǐng)輸入您要分析的源文件個(gè)數(shù):");-c=='Y'llc=='y^^NJyContinuen=0;break;analy(filename,n);Intn,i;開始圖1主函數(shù)流程圖子程序StrEmpty()函數(shù)的設(shè)計(jì)此為串的基本操作檢測(cè)是否為空串,若為空串,返回TRUE,若不是空串,返回FALSE。圖2StrEmpty圖2StrEmpty()函數(shù)流程圖子程序Find()函數(shù)的設(shè)計(jì)查看S1中是否有值為S2的子串,若有則返回第一個(gè)子串的位置,若無則返回-1。該函數(shù)主要是運(yùn)用if語句和while語句,來實(shí)現(xiàn)功能。
圖3Find()函數(shù)流程圖子程序HaveLine()函數(shù)的設(shè)計(jì)該函數(shù)所要實(shí)現(xiàn)的功能是讀取文件中的一行字符。若是一行的結(jié)尾則表示取完了一行,返回主函數(shù)。
圖4HaveLine()函數(shù)流程圖(5)子程序IgnoreB()函數(shù)的設(shè)計(jì)該函數(shù)所要實(shí)現(xiàn)的功能是忽略一行字符開頭的空格和tab,返回截?cái)嗪笊系拇羔?。開始V二?S==''||*s==''「二returns返回圖5IgnoreB()函數(shù)流程圖
(6)子程序IsCom()函數(shù)的設(shè)計(jì)該函數(shù)所要實(shí)現(xiàn)的功能是判斷一行字符是不是注釋。若posc==0則表示圖6IsCom()函數(shù)流程圖(7)子程序IsBlank()函數(shù)的設(shè)計(jì)該函數(shù)所要實(shí)現(xiàn)的功能是判斷一行字符是不是空白。如果是,返回TRUE;如果不是,返回FALSE。
圖7IsBlamk()函數(shù)流程圖(8)子程序printR()函數(shù)的設(shè)計(jì)該函數(shù)所要實(shí)現(xiàn)的功能是按代碼級(jí)別判定標(biāo)準(zhǔn)輸出分析結(jié)果。先根據(jù)課題給定的標(biāo)準(zhǔn)定義A、B、C、D四個(gè)階段,A為最優(yōu)階段,D為最差階段。再分別運(yùn)用if-else語句,判定代碼、注釋、空行的級(jí)別。如此,便實(shí)現(xiàn)了課題的要求。開始IntiYi=0Yi=1Y31YYY4=14=2tYi=aY■(blanks<5)ll(blanks>35N_Y4=0返回Y4=3—N-(aver<=20&&aver>=16)llaver<=9&&aver>=8Y_(blanks<=9&&blanks>=5)llblanks<=35&&blanks>=31"N(aver<5)||(aver>24)-Ncomc<=25&&comc>=154=2'l-Ni(comc<5)||(comc>35)printf("Grade%sroutinecodestyle\n",Grade[i])printf("Grade%sroutinecommentingstyle\n",Grade[i]);printf("Grade%swhitespacestyle\n",Grade[i]);i=0i=0'■■■■■■(blanks<=14&&blanks>=10)llblanks<=30&&blanks>=2^^|Yi=3i=0圖8printR()函數(shù)流程圖三、調(diào)試過程及實(shí)驗(yàn)結(jié)果1、調(diào)試過程:在對(duì)“打印輸出結(jié)果”進(jìn)行編程時(shí),將if(sum==O)誤寫為if(sum=O),程序出現(xiàn)錯(cuò)誤。錯(cuò)誤結(jié)果如下圖9'^^DocumentsandSettings\Admiriistrator\M?\匚hmriqKu\Dmtiijg\匚ppLexe"程序源代碼分析軟件BV沈航電子信息工程學(xué)院一王盼胳輸屍您要分析的源文件的個(gè)數(shù):1a圖9錯(cuò)誤結(jié)果圖:請(qǐng)輸入第1■個(gè)源文件:d:\l.cppPressanykeytocontinue藥"Q\DocumentsandSettings\Adiriini5trator\^面比程序源代碼分析軟件BV沈航電子信息工程學(xué)院一王盼請(qǐng)輸怎您要分析的源文件的個(gè)數(shù);2、正確實(shí)驗(yàn)結(jié)果圖10程序運(yùn)行顯示圖-inlxl釋::注熱熱:豊行碼代注空代行3空3866-inlxl釋::注熱熱:豊行碼代注空代行3空386672x13z15z"C:\DocuinentsandSettings\Administrator\桌面、匚heg咚ADmtiu貞邙口丄,販號(hào)"NNNmCHKKK疋齊旱序彳斤請(qǐng)輸入您要分析的源文件的個(gè)數(shù)二1屛入兼'占諾需結(jié)果如下所示Theprogramincludes14functionsTheaueragelengthofsectionoffunctionis20GradeGo^droutinecodestyleGradeGo^droutinecommentingstyleGradeA:Excellentuhitespacestyle********您需要繼續(xù)使用本軟件嗎?"H***********圖11程序正確結(jié)果圖四、結(jié)論從實(shí)驗(yàn)結(jié)果可以看出,程序很好的實(shí)現(xiàn)了課題所要求的功能。為期兩周的軟件課設(shè)已然接近尾聲,從剛拿到題目時(shí)的傻眼,到如今報(bào)告的完成,我收獲了很多。題目的難易很難論斷,只是覺得,那是個(gè)我很陌生的領(lǐng)域。在查閱了大量的相關(guān)資料及咨詢同學(xué)和老師后,我才了解到課題的深意,逐步完成這項(xiàng)任務(wù)。在程序運(yùn)行時(shí)不可避免會(huì)遇到很多問題,比如函數(shù)不能調(diào)用,功能無法實(shí)現(xiàn),編譯錯(cuò)誤等等,經(jīng)過老師、同學(xué)的幫助,程序終于可以正常運(yùn)行了。我覺得出現(xiàn)錯(cuò)誤并不可拍,重要的是要學(xué)會(huì)改正和排錯(cuò)的過程,在這個(gè)過程中,我鍛煉了自學(xué)的能力并且培養(yǎng)出了百折不撓的信念,同時(shí)也增強(qiáng)了我的分析問題能力和實(shí)際操作能力,而這些恰恰是我日后工作所需要的。這次課程設(shè)計(jì),還讓我對(duì)計(jì)算機(jī)軟件技術(shù)基礎(chǔ)有了更為深入的認(rèn)識(shí),并了解到了軟件技術(shù)即所有計(jì)算機(jī)相關(guān)專業(yè)課的重要性,希望今后能多開設(shè)這樣的課程。最后,向我的指導(dǎo)教師致以深深的謝意,感謝您的耐心指導(dǎo)。五、程序清單#include<stdio.h>#include<stdlib.h>#include<string.h>#defineTRUE1#defineFALSE0#defineBOOLint
#defineMAXSIZE#defineCOUNT#defineMAXSIZE#defineCOUNT#defineLEN20//可以統(tǒng)計(jì)的最大的文件個(gè)數(shù)20//文件名的最大長(zhǎng)度#include<stdio.h>#include<stdlib.h>#include<conio.h>voidcheckfile(char*filename,inti);voidanaly(charfilename[COUNT][LEN],intn);BOOLGetIn(int*n);//函數(shù)屬性結(jié)構(gòu)typedefstruct{charfilename[20];//每一個(gè)函數(shù)的名字intlength;//每一個(gè)函數(shù)的長(zhǎng)度intpos;//每一個(gè)函數(shù)的位置}Fun;//統(tǒng)計(jì)結(jié)構(gòu)的聲明typedefstruct{intcomments;//純注釋的個(gè)數(shù)intcomment;//混合注釋個(gè)數(shù)intblank;//空行的個(gè)數(shù)Funfun[MAXSIZE];//函數(shù)的屬性intothers;//除去函數(shù)中代碼外其余的代碼個(gè)數(shù)intfuncount;//函數(shù)的個(gè)數(shù)}Analy;//串的基本操作ADT//檢測(cè)是否為空串BOOLStrEmpty(char*s){if(s[0]=='\0')returnTRUE;returnFALSE;}//查看S1中是否有值為S2的子串,若有則返回第一個(gè)子串的位置,若無則返回-1;intFind(char*s1,char*s2){inti=0,j=0;if(strlen(s1)<strlen(s2))return-1;while(s1[i]!='\0'){if(s1[i]==s2[j]){i++;j++;if(s2[j]=='\0')returni-j;continue;}i++;j=0;}return-1;}//讀取文件中的一行字符voidHaveLine(FILE*fp,char*s){while(!feof(fp)){*s=fgetc(fp);if(*s=='\n'){//若是一行的結(jié)尾則表示取完了一行*s='\0';return;}s++;}*s='\0';}//忽略一行字符開頭的空格和tab,返回截?cái)嗪笊系拇羔榗har*IgnoreB(char*s){while(*s==''||*s=='')s++;returns;}//判斷一行字符是不是注釋intIsCom(char*s){intposc,pos1,pos2;s=IgnoreB(s);posc=Find(s,"http://");if(posc==0)//此行僅有注釋,無代碼;return1;if(posc==-1)return0;pos1=Find(s,"\"");pos2=Find(&s[pos1+1],"\"");if(posc>pos1&&posc<pos2)return0;return2;}//判斷一行字符是不是空白BOOLIsBlank(char*s){s=IgnoreB(s);if(*s=='\0')returnTRUE;returnFALSE;}intIsFunB(char*s){inti,j,pos,pos2;//有分號(hào),ifwhilefor的不是函數(shù)開頭if(Find(s,";")!=-1||Find(s,"if")!=-1||Find(s,"for")!=-1||Find(s,"while")!=-1||Find(s,"switch")!=-1)returnFALSE;//沒有小括號(hào)的不是函數(shù)開頭if((pos=Find(s,"("))==-1)returnFALSE;s=IgnoreB(s);i=Find(s,"");j=Find(s,"");if(i!=-1&&j!=-1)i=i>j?j:i;elseif(i==-1)i=j;elseif(1==-1&&j==-1)returnFALSE;if(i>pos)returnFALSE;s=&s[i];s=IgnoreB(s);pos2=Find(s,"(");if(*s=='\0'||*s=='('||pos2>pos)returnFALSE;returnTRUE;}voidprintR(intaver,intcomc,intblanks){//按代碼級(jí)別判定標(biāo)準(zhǔn)輸出分析結(jié)果inti;charGrade[4][15]={"A:Excellent","B:Good","C:justSo-So","D:Bad"};//定義四個(gè)級(jí)別段//判定代碼的級(jí)別if(aver<=15&&aver>=10)i=0;elseif((aver<=20&&aver>=16)||aver<=9&&aver>=8)i=1;elseif((aver<=7&&aver>=5)||aver<=24&&aver>=21)i=2;elseif((aver<5)||(aver>24))i=3;printf("Grade%sroutinecodestyle\n",Grade[i]);//判定注釋的級(jí)別if(comc<=25&&comc>=15)i=0;elseif((comc<=14&&comc>=10)||comc<=30&&comc>=26)i=1;elseif((comc<=9&&comc>=5)||comc<=35&&comc>=31)i=2;elseif((comc<5)||(comc>35))i=3;printf("Grade%sroutinecommentingstyle\n",Grade[i]);//判定空行的級(jí)別if(blanks<=25&&blanks>=15)i=0;elseif((blanks<=14&&blanks>=10)||blanks<=30&&blanks>=26)i=1;elseif((blanks<=9&&blanks>=5)||blanks<=35&&blanks>=31)i=2;elseif((blanks<5)||(blanks>35))i=3;printf("Grade%swhitespacestyle\n",Grade[i]);}//打印輸出結(jié)果voidprint(Analy*An){intsum=0,funcode=0;inti,comc,blanks,aver,code;for(i=0;i<An->funcount;i++)//求函數(shù)的代碼總數(shù)funcode+=An->fun[i].length;//求所有的代碼總數(shù)sum+=An->blank;sum+=An->comments;sum+=An->comment;sum+=An->others;sum+=funcode;if(sum==0)//防止除數(shù)sum為0sum=1;if(An->funcount==0)//防止除數(shù)m為0aver=0;elseaver=funcode/An->funcount;comc=(An->comments+An->comment)*100/sum;blanks=((An->blank)*100)/sum;code=100-comc-blanks;//((funcode+An->others)*100)/sum;printf("程序源代碼分析結(jié)果如下所示\n\n");printf("代碼行數(shù):%d\n",sum-An->blank-An->comment-An->comments);printf("注釋行數(shù):%d\n",An->comments+An->comment);printf("空行數(shù):%d\n",An->blank);printf("代碼注釋空行\(zhòng)n〃);printf("*****************\n");printf("*****************\n〃);printf("%d%%%d%%%d%%\n〃,code,comc,blanks);printf("Theprogramincludes%dfunctions\n〃,An->funcount);printf("Theaveragelengthofsectionoffunctionis%d\n〃,aver)printf("\n");//按代碼級(jí)別判定標(biāo)準(zhǔn)輸出分析結(jié)果printR(aver,comc,blanks);}voidcheckfile(char*filename,inti){FILE*fp;while((fp=fopen(filename,"r"))==NULL){printf(“對(duì)不起!文件不存在%s\n",filename);printf("\n請(qǐng)重新輸入第%d個(gè)源文件:",i+l);scanf("%s",filename);}}BOOLGetln(int*n)//規(guī)范輸入的數(shù)據(jù),只能為數(shù)字{charc;*n=0;fflush(stdin);c=getchar();//當(dāng)輸入一串?dāng)?shù)據(jù)并按回車后,getchar()取出緩存隊(duì)列中的第一個(gè)字符while(c!='\n'){if(c=='0'&&n==0)printf("輸入有誤!請(qǐng)重新輸入'n");if(c>='0'&&c<='9')*n=(*n)*10+c-48;else{printf("輸入有誤!請(qǐng)重新輸入'n");fflush(stdin);//清空(刷新)緩存里的內(nèi)容,以防被下次getchar()取用returnFALSE;}c=getchar();}returnTRUE;}voidanaly(charfilename[COUNT][LEN],intn){FILE*fp;//分析源文件指針FILE*fpp;//日志文件指針AnalyAn;//程序統(tǒng)計(jì)結(jié)構(gòu)體chars[200];//存儲(chǔ)每行的文件BOOLbegin=0,start=0;//設(shè)置函數(shù)開始標(biāo)記inti,j=-1,pos=0;//函數(shù)的位置長(zhǎng)度信息//c檢測(cè)函數(shù)內(nèi)大括號(hào)的匹配,comtype是注釋的類型intc=0,comtype;An.blank=0;Aments=0;Ament=0;An.others=0;An.funcount=0;if((fpp=fopen("log.txt","w"))==NULL)//建立日志文件printf("cannotopenthefile%s'n");for(i=0;i<n;i++)//遍歷所有的文件{if((fp=fopen(filename[i],"r"))==NULL){printf("cannotopenthefile%s'n",filename[i]);//輸出filename[i]getchar();exit(0);}pos=0;//函數(shù)在新一個(gè)文件中的位置初始化while(!feof(fp))
HaveLine(fp,s);//從文件中讀取一行數(shù)據(jù)pos++;//每個(gè)函數(shù)在文件中開始的位置//分類統(tǒng)計(jì)文件中的代碼個(gè)數(shù)comtype=IsCom(s);if(comtype==1){Ament++;continue;}if(comtype==2)Aments++;if(IsFunB(s)){fprintf(fpp,"%s\n",s);//提取每個(gè)函數(shù)的名字寫入到文件j++;//j為函數(shù)的個(gè)數(shù)-1;c=0;//大括號(hào)個(gè)數(shù)初始化為0begin=TRUE;件中strcpy(An.fun[j].filename,filename[i]);//記錄函數(shù)在哪個(gè)文件中An.fun[j].pos=pos;An.f
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療合同管理規(guī)范制度
- 第一單元+任務(wù)二《詩歌朗誦》課件-2024-2025學(xué)年統(tǒng)編版語文九年級(jí)上冊(cè)
- 石河子大學(xué)《影像診斷學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 防三無食品安全
- 石河子大學(xué)《包裝容器與紙盒結(jié)構(gòu)》2023-2024學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《數(shù)據(jù)庫系統(tǒng)原理》2022-2023學(xué)年期末試卷
- 沈陽理工大學(xué)《科技文獻(xiàn)檢索與寫作》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《產(chǎn)品形導(dǎo)思維設(shè)計(jì)》2022-2023學(xué)年第一學(xué)期期末試卷
- 規(guī)范人事檔案和勞動(dòng)合同
- 合股開店協(xié)議合同書模板
- 新能源汽車充電技術(shù) 課件 2-3 認(rèn)知新能源汽車直流充電系統(tǒng)
- 小米公司介紹課件
- 2021年公務(wù)員國(guó)考《申論》真題(副省級(jí))及參考答案(兩套答案)
- 全國(guó)半導(dǎo)體行業(yè)職業(yè)技能競(jìng)賽(半導(dǎo)體芯片制造工賽項(xiàng))理論考試題及答案
- 期末 (試題) -2024-2025學(xué)年人教PEP版(2024)英語三年級(jí)上冊(cè)
- 2024 抖音直播知識(shí)考試題庫200題(含答案)
- 護(hù)理案例教學(xué)法
- 2024年電工(高級(jí))證考試題庫及答案
- RB/T 228-2023食品微生物定量檢測(cè)的測(cè)量不確定度評(píng)估指南
- 2024-2030年中國(guó)羽毛球自動(dòng)發(fā)球機(jī)行業(yè)銷售模式與前景需求現(xiàn)狀研究報(bào)告
- 2024年新人教版七年級(jí)上冊(cè)歷史 第14課 絲綢之路的開通與經(jīng)營(yíng)西域 教學(xué)課件
評(píng)論
0/150
提交評(píng)論