• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于C#的源代碼類型作業(yè)檢查軟件設(shè)計(jì)

      2018-05-08 13:20李從宏
      電子技術(shù)與軟件工程 2018年22期
      關(guān)鍵詞:源代碼作業(yè)功能

      摘要 在軟件設(shè)計(jì)相關(guān)的課程教學(xué)中,學(xué)生一般是以源代碼且壓縮文件的方式提交作業(yè),若是教師逐個(gè)解壓、閱讀文件,則是一件很繁重的工作。本文根據(jù)這一需求,使用C#編程語(yǔ)言實(shí)現(xiàn)該軟件功能,采用遞歸調(diào)用技術(shù)實(shí)現(xiàn)學(xué)生提交作業(yè)情況查詢功能,使用.NET下開(kāi)源的壓縮文件操作組件SharpCompress實(shí)現(xiàn)解壓文件功能,使用StreamReader類的相關(guān)方法實(shí)現(xiàn)查閱源文件功能。

      【關(guān)鍵詞】軟件設(shè)計(jì) SharpCompress 作業(yè)查詢 C#語(yǔ)言 StreamReader 遞歸調(diào)用

      在如C語(yǔ)言程序設(shè)計(jì)、單片機(jī)與嵌入式應(yīng)用等與軟件設(shè)計(jì)相關(guān)的課程教學(xué)中,由于實(shí)現(xiàn)每個(gè)項(xiàng)目的代碼量比較大,學(xué)生一般是以源代碼且壓縮包的形式提交作業(yè),若教師將所有學(xué)生的壓縮包文件解壓并查閱具體內(nèi)容,這是一件非常工作量很大的工作。

      C#是一種簡(jiǎn)單、先進(jìn)、面向?qū)ο蠛皖愋桶踩木幊陶Z(yǔ)言,在NET平臺(tái)下的一種重要的編程語(yǔ)言,在每多方面都有著廣泛的應(yīng)用,本文從項(xiàng)目需求出發(fā),使用C#編程語(yǔ)言設(shè)計(jì)一個(gè)作業(yè)檢查軟件實(shí)現(xiàn)相關(guān)功能。

      1 功能實(shí)現(xiàn)原理

      本軟件需要實(shí)現(xiàn)的主要功能有:

      (1)統(tǒng)計(jì)學(xué)生提交作業(yè)的情況;

      (2)可以在一個(gè)目錄及所有子目錄中解壓所有壓縮文件。

      (3)查看指定的源代碼文件。

      1.1 統(tǒng)計(jì)學(xué)生提交作業(yè)情況

      實(shí)現(xiàn)該功能的原理是:使用StreamReader類的ReadLine0方法將指定的學(xué)生名單文本中的學(xué)生姓名提取出來(lái),使用Directory類的GetFiles0的方法列出指定目錄下的所有壓縮文件,按姓名順序在文件列表中逐個(gè)查找文件名中是否包含該學(xué)生的姓名,若存在,則統(tǒng)計(jì)提交作業(yè)次數(shù),否則顯示沒(méi)有提交作業(yè)。

      統(tǒng)計(jì)學(xué)生提交作業(yè)情況的軟件流程圖如圖1所示。

      1.2 解壓解壓包文件

      目前用得比較多的壓縮格式有rar、zip和7z,對(duì)于不同的格式壓縮包有不同的解壓方法。

      (1)對(duì)于針對(duì)rar格式的壓縮包文件,當(dāng)計(jì)算機(jī)上安裝了wmrar后,程序中可以在C#程序中調(diào)用rar.的命令行程序?qū)崿F(xiàn)解壓縮功能,因?yàn)閣mrar軟件提供基于命令行的解壓縮方式。

      (2) zip是一種免費(fèi)開(kāi)源的壓縮格式,可以使用C#庫(kù)SharpZipLib解壓縮zip、gzip和tar格式的文件。在使用這種方法時(shí),先下載SharpZipLib包解壓后,在項(xiàng)目中引用ICSharpCode. SharpZLib.dll程序集并調(diào)用相關(guān)方法即可實(shí)現(xiàn)zip和7z格式的文件解壓功能。

      (3)使用一個(gè)名為SharpCompress的c#框架集在的相關(guān)類,實(shí)現(xiàn)文件壓縮解壓功能,SharpCompress支持有:rar, 7zip,zip,tar,tzip和bzip2格式的壓縮和解壓。

      本文使用SharpCompress中在相關(guān)類實(shí)現(xiàn)解壓文件功能。

      2 軟件具體實(shí)現(xiàn)

      2.1 統(tǒng)計(jì)學(xué)生提交作業(yè)情況

      使用Directory類的靜態(tài)方法GetFiles0得到指定目錄下的所有文件,使用StreamReader類的實(shí)例方法ReadLine0從學(xué)生名單文本文件中讀取學(xué)生姓名,并在壓縮包文件數(shù)組中逐個(gè)查找該學(xué)生的名字是否存在,若存在,則累計(jì)提交次數(shù),所有文件對(duì)比結(jié)束后,再統(tǒng)計(jì)下一個(gè)學(xué)生,以此類推,直到最后一個(gè)學(xué)生,具體代碼如下:

      Private void CheckHomeWork(stringstuFile,filesPath){

      string studentName, str;

      string[] files - Directory.GetFiles(filesPath);

      StreamReader sr - new StreamReader(_stuFile,System.Text

      Encoding.Default);studentName -sr.ReadLine0;

      while (studentName !_null){int count -O:

      foreach (string file in files){

      if (file.lndexOf(studentName)!=-1){str+=file+”YrYn”;count++;))}

      str - studentName+”提 交了:+count+次作業(yè)\r\n+ str;

      txtContent.AppendText(str+”\r\n\r\n”);

      studentName - sr.ReadLineO;str -…;}sr.Close0;}

      若作業(yè)提交在多個(gè)目錄或多個(gè)子目錄中,則使用遞歸調(diào)用技術(shù)遍歷指定目錄及所有子目錄下的文件。具體源代碼如下:

      void CheckAIIFiles(string stuFile, stringfilesPath){

      CheckHomeWork(stLlFile,filesPafh);

      string[]subDi r s=Dire cto ryGetDirectories(fi1esPatll);

      fo reach(string str ln subDir s){CheckA11Files(stLlFile,str);})

      2.2 解壓文件

      SharpCompress是NET下開(kāi)源的壓縮文件操作組件,可以支持的格式如RAR,ZIP,Tar,Zip等等,通過(guò)不同的類對(duì)不同類型的壓縮文件進(jìn)行解壓操作。

      2.2.1 對(duì)RAR類型的壓縮包進(jìn)行解壓操作

      SharpCompress組件使用ArchiveFactory類的靜態(tài)方法Open()得到一個(gè)RAR壓縮包里的所有資源,再使用IArchive類型的實(shí)例對(duì)象的WmeToDircctory()進(jìn)行解壓。

      2.2.2 對(duì)ZIP類型的壓縮包進(jìn)行解壓操作

      SharpCompress組件使用ReaderFactory

      類的靜態(tài)方法Open0打開(kāi)壓縮包里的資源,并使用IReader類型的實(shí)例的WriteEntryToDirectory0對(duì)壓縮文件進(jìn)行解壓。

      2.2.3 對(duì)7z類型的壓縮包進(jìn)行解壓操作

      SharpCompress組件使用SevenZipArchive類open0方法獲取壓縮包中的資源,并使用SevenZipArchiveEntry類的實(shí)例方法WriteToDirectory0方法對(duì)壓縮文件進(jìn)行解壓。

      解壓文件的程序流程圖如圖2所示。

      2.3 閱讀源代碼文件

      在與軟件設(shè)計(jì)相關(guān)的課程教學(xué)中,主要的文件格式有由.c文件、h文件、java、.cpp、.cs文件等,這些文件屬于文本文件的范疇,C#語(yǔ)言使用StreamReader類的實(shí)例方法ReadLine0或ReadToEnd0方法讀取內(nèi)容,將內(nèi)容放在文本框中進(jìn)行顯示。具體源碼如下:

      Private void ReadSourceFileContent(void){

      ofdOpenFile.Filter -ava filesl*j ava”;

      if (ofdOpenFile.ShowDialog()==DialogResult. OK){

      string fileName - ofdOpenFile.FileName;

      StreamReader sr - newStreamReader(filename,System.Text

      Encoding.Default);

      txtContent.Text-sr.ReadToEnd();sr.Close0;}}

      3 測(cè)試與總結(jié)

      將文件拷貝到測(cè)試目錄下,分別做統(tǒng)計(jì)學(xué)生交作業(yè)情況、解壓文件及閱讀源代碼文件這三個(gè)方面的測(cè)試。

      3.1 統(tǒng)計(jì)學(xué)生提交作業(yè)情況測(cè)試

      統(tǒng)計(jì)學(xué)生提交作業(yè)情況測(cè)試模塊主要是根據(jù)壓縮包文件名中是否包含學(xué)生姓名,軟件運(yùn)行結(jié)果如圖3所示。

      3.2 解壓文件功能測(cè)試

      解壓文件功能測(cè)試模塊主要使用SharpCompress壓縮文件操作組件中的相關(guān)類對(duì)不同類型文件進(jìn)行解壓操作,可以實(shí)現(xiàn)單個(gè)文件解壓、多個(gè)文件解壓及全部文件解壓三種操作,測(cè)試結(jié)果如圖4所示。

      3.3 閱讀源代碼文件功能測(cè)試

      閱讀源代碼文件功能測(cè)試模塊使用StreamReader類的相關(guān)方法讀文件中的內(nèi)容,本模塊可以查看.c文件、h文件、j ava、cpp、.cs文件等與文本文件相關(guān)的源代碼文件,測(cè)試結(jié)果如圖5所示。

      從整體測(cè)試結(jié)果來(lái)看,本軟件可以將教師從繁重的作業(yè)批閱工作中解脫出來(lái),提高了辦公效率。

      參考文獻(xiàn)

      [1]譚浩強(qiáng).C程序設(shè)計(jì)第五版[M].清華大學(xué)出版社,2017 (08).

      [2] SharpCompres s-a fully na tiveC# library for RAR, 72ip, Zip,Tar, GZip, B2ip2.

      Avaliableat https: //archive. codeplex.com/?p-sharpcompres s.

      [3]李從宏.C#程序設(shè)計(jì)及應(yīng)用教程[M].北京:機(jī)械工業(yè)出版社,2017.

      [4]龐燕芳,基于C#.NET的學(xué)校車輛門禁系統(tǒng)的設(shè)計(jì)[J].電子技術(shù)與軟件工程,2008 (33):125-126.

      [5]楊利娟,朱杉杉,基于C#的高校排課系統(tǒng)[J].電子技術(shù)與軟件工程,電腦編程技術(shù)與維,2018,10: 23-27.

      [6]郭博,舒娟,史曉鳳等,基于C#的學(xué)生成績(jī)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].隴東學(xué)院學(xué)報(bào),2018,29(05);13-15.

      猜你喜歡
      源代碼作業(yè)功能
      人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
      基于TXL的源代碼插樁技術(shù)研究
      軟件源代碼非公知性司法鑒定方法探析
      關(guān)于非首都功能疏解的幾點(diǎn)思考
      揭秘龍湖產(chǎn)品“源代碼”
      中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
      辨證施護(hù)在輕度認(rèn)知功能損害中的應(yīng)用
      我想要自由
      三十六計(jì)第七計(jì):無(wú)中生有
      临夏县| 苏尼特左旗| 达州市| 佛坪县| 阿图什市| 桑植县| 汨罗市| 深圳市| 杨浦区| 梅河口市| 浦北县| 惠水县| 蓬安县| 大悟县| 洞口县| 靖安县| 安吉县| 新巴尔虎右旗| 郑州市| 深泽县| 河津市| 西畴县| 石渠县| 虞城县| 光山县| 仁布县| 北京市| 卫辉市| 岚皋县| 长乐市| 盘锦市| 巴楚县| 田阳县| 南昌县| 长白| 九江市| 土默特右旗| 襄汾县| 徐水县| 乌拉特后旗| 丰县|