簡單的WordCount程式——軟體測試第二次作業

来源:https://www.cnblogs.com/xiao-ge-ge/archive/2018/09/24/9695953.html
-Advertisement-
Play Games

程式源代碼Gitee項目地址:https://gitee.com/xiao_ge_ge/WordCount.git 一:介紹: 這次作業的主要任務: WordCount的需求可以概括為:對程式設計語言源文件統計字元數、單詞數、行數,統計結果以指定格式輸出到預設文件中,以及其他擴展功能,並能夠快速地處 ...


  程式源代碼Gitee項目地址:https://gitee.com/xiao_ge_ge/WordCount.git

  一:介紹:

    這次作業的主要任務:    

      WordCount的需求可以概括為:對程式設計語言源文件統計字元數、單詞數、行數,統計結果以指定格式輸出到預設文件中,以及其他擴展功能,並能夠快速地處理多個文件。

      wc.exe -c file.c     //返迴文件 file.c 的字元數

      wc.exe -w file.c     //返迴文件 file.c 的單詞總數

      wc.exe -l file.c     //返迴文件 file.c 的總行數

      wc.exe -o outputFile.txt     //將結果輸出到指定文件outputFile.txt

    拿到題目的時候,思考使用近期使用比較多,也相對比較熟練的c#來寫。計劃使用兩個類:MainScreen:用來進行控制台界面的輸入輸出,ProcessingDate:用來進行具體的操作。

  二: 具體程式

    1.主界面是最簡單的方式,strcomm用來接收用戶輸入的指令

   

    2.對用戶輸入的指令進行分析。

      對用戶輸入的指令,截取各個部分存入字元串數組,方便後續的使用,在這裡,數組第一個元素始終是字元串wc.exe,最後一個始終是文件名。去空格截取(StringSplitOptions.RemoveEmptyEntries)可以避免許多不必要的麻煩。考慮到指令可以多個一起使用,在這裡使用了for迴圈逐個對指令進行檢查。同時輸出了結果。

    3.ProcessingDate類

      3.1考慮到每一次的處理都會涉及到打開文件,將打開文件寫為一個單獨的方法,在具體的方法中直接調用即可。每一次對文件的操作都需要關閉文件。方法返回讀取到的信息str.

 

    3.2:判斷字元數(空格、換行、製表符)

      只要迴圈到以上三種字元,則計數器加1.結束後將結果按要求寫入result.txt文件,併在控制台輸出結果。

      判斷行數的代碼類似

 

  3.3判斷單詞數。

 

    這個部分寫的時候比較麻煩。考慮到作業要求,發現如果直接使用空格分隔開,那麼如果兩個單詞之間存在多個空格,或者以空格開頭的文件或者行,都會受到影響。想了許久,發現一個特別笨但還算行之有效的方法。

    設置一個布爾變數 bool isblank = true;遍歷字元串,噹噹前字元不為空格(換行)時,置為false,count+1,此時記錄一個單詞,直到當前字元為空格(或者換行)時,置為true,表示這個單詞結束,可以進入下一個單詞。這樣,不論之間又多少空格或者換行,判斷一個單詞都是以一個字元開始,遇到空格(或者換行)時結束。

  3.4將結果輸入指定文件。

三:測試設計過程。

  這裡測試主要針對輸入。

    1.當輸入一個指令時,程式能否正確執行,如果輸入的指令不正確,程式能否處理並報告給用戶。

    2.當輸入多個指令時,程式能否正確執行,如果輸入的指令都不正確、有部分不正確,程式能否處理並正確的報告給用戶哪些指令是錯誤的。

  這兩個方面已經實現。

    3.當輸入的文件名錯誤,程式找不到文件時,程式如果正確處理(不拋異常並且正確報告給用戶)。

  該方面還沒有實現。

四:改博文作為學習的記錄和作業,其中部分內容參考了網路上部分文章及方法。

  關於寫入文件的操作  http://www.cnblogs.com/duanjt/p/5265655.html

  關於字元串的分割  https://blog.csdn.net/tiandijun/article/details/40401655

  主要參考以上兩篇文章。感謝作者。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 隨著微處理機技術的發展,人們只需花幾百美元就能買到一個CPU晶元,這個晶元每秒鐘執行的指令比80年代最大的大型機的處理機每秒鐘所執行的指令還多。如果你願意付出兩倍的價錢,將得到同樣的CPU,但它卻以更高的時鐘速率運行。因此,最節約成本的辦法通常是在一個系統中使用集中在一起的大量的廉價CPU。所以,傾... ...
  • 在我們的應用程式中日誌是不可缺少的部分,在Apache中由一個功能無比強大的日誌組件,它提供了方便的日誌記錄,這個開源的項目就是我們慣用的Log4j,jar包我麽們一顆取Apache官網下載最新版本的。log4j下載地址 一.入門篇 1.打開我們的Eclipse新建一個Java項目並且導入Log4j ...
  • 在開源文件大行其道的今天,基於java種種解決方案和框架紛繪踏至而來,猶如浩瀚如海,看不完也學不盡。在採用這些解決方案和框架進行項目開發時,往往會出現當程式卡殼時,既無異常提示信息亦沒有與之對應的日誌輸出的局面。每每出現這樣的困境時,往往只能通過打斷點來一步一步調試跟蹤來解決。更有甚者,基於某一底層... ...
  • 題目介紹:現在輸入一組數據,寫入學生的考試分數。已知學生數為N,學生編號為1到N,且0<N<=30000,每個學生都有一個分數;操作數為M且0<M<5000。輸入第一行為N M,接下來是1行N列數據代表學生的初試分數,接下來是M行操作數據。已知操作有兩種,分為Q和U。一次操作的格式為 C A B,當 ...
  • 線性表是一種隨機存取的結構,和鏈表不同,鏈表順序存取的結構。但是,線性表是一種順序存儲的結構,而鏈表是鏈式存儲結構。兩者都是線性的,但區別不同。 進入主題: 1.假如有一串數據元素,要求刪除其中的重覆元素。 首先想到的是用兩層迴圈,第一層從第一個元素開始,第二層從第一層元素的下一個元素開始。 就是假 ...
  • 1、指令:<%@ 指令名 屬性名="值"%> 1) page:page指令告訴servlet容器,這是一個Jsp頁面 pageEncoding 指頁面文本的字元集編碼 contentType 告訴Browser 和Servlet端,要使用哪個格式哪個字元集進行解析 獨立的@page指令,可以使用im ...
  • 在分散式系統中,服務發生異常是很正常的現象。為了處理這類“例外”,可以採取不同的應對策略,斷路器模式即是其中一種方法。這個模式的主要特點是其可以阻斷失敗的級聯影響,不會因為一個服務的失敗導致其它關聯服務一併失敗。 在Spring Cloud生態系統中有Hystrix類庫可以提供這個模式的解決方案,而 ...
  • 調用windows的imm32.dll完成窗體接收輸入法功能. 代碼如下 public ImeComponent(Form from) { var handle = from.Handle; hIMC = ImmGetContext(handle); this.handle = handle; } ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...