201771030123-王爽 實驗二 軟件工程我的項目——《西北師範大學學生疫情上報系統》項目報告

項目 內容
課程班級博客連接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE
這個做業要求連接 http://www.javashuo.com/article/p-meyvhbuv-mp.html
個人課程學習目標 (1)掌握軟件項目我的開發流程。
(2)掌握Github發佈軟件項目的操做方法。
這個做業在哪些方面幫助我實現學習目標 按照計劃的PSP熟悉我的軟件項目的流程
項目的Github倉庫連接 https://github.com/JzyWs/wangS.git

任務2:結合PSP流程進行我的項目開發

項目開發背景:

2019年12月末,中國武漢發生新型冠狀病毒(2019-nCoV) 感染的肺炎疫情,爲遏制疫情蔓延,有效切斷病毒傳播途徑,在中央政府指導下,各級政府部分採起了一系列防控措施: 2020年1 月23 日10時起對武漢「封城」,全國 31個省市也相繼實施了嚴格的防控措施;全國各省市向武漢和湖北派遣醫療隊參與救治工做;在全國範圍內調配口罩、防禦服、藥品等急需的醫療資源支援武漢;指導和督促全國範圍內擁有醫療物資生產資質的企業儘快恢復生產能力;定向撥付專項財政資金用於疾病防控;從其餘省份調集物資保障武漢市民平常生活。

   值得一提的是,中國互聯網企業在這次疫情防控中發揮了社會治理方面的重要做用。以騰訊爲例,圍繞應對疫情管控需求開發了十一款產品。其中疫情在線問診功能,對於減小發熱病人之間的相互交叉感染具備重要的做用,患者在家經過互聯網向在線醫生問診,減小了病毒傳播或感染的風險;謠言粉碎對於公衆採起理性態度看待疫情的發展具備重要意義。滴滴出行還在武漢專門組建車隊,服務於醫護人員的通勤,這在實施交通管制的武漢具備重要做用。此外,還有新型肺炎確診患者同行程查詢工具,用戶只須要輸入本身所乘坐交通工具的時間和班次,就能夠確認是否與被確診感染者同行,提早作好自我隔離和就診工做。在疫情防控中,中國互聯網企業不只發展壯大,在承擔社會責任方面也愈來愈成熟。

   爲有效配合防控機構有關疫情信息的採集、統計與排查,我校開發了教職工/學生疫情上報系統,該系統由教職工疫情每日上報、學生疫情每日上報、二級部門疫情每日彙總表、疫情防控填報統計四個子系統組成。實現對我校各種人員基本狀況、所在區域及活動軌跡及健康情況的信息收集。師生經過我校企業微信服務大廳訪問該系統進行遠程信息填報。

項目開發要求:

第一類開發要求:
有一個數據文件,保存了100天 2000 個教職工/學生的全部防疫信息,請設計一個命令行程序, 支持查詢某人在某一天的疫情狀況, 查詢某種數據的周/月的疫情統計狀況,並用柱狀圖顯示統計結果。html

1:需求分析

  • 非功能性需求
    如今因爲新冠狀病毒的疫情,各個城市的學校都一致延遲開始時間,可是雖然延遲時間,但學校也但願你們能早日返校,因此在此以前學校也要求咱們天天都填寫疫情上報表。在全部人都填寫了以後,但願能根據學校的要求清晰的查看學生的狀況,因此如今能夠模擬一個小疫情彙總表,經過100天的2000我的的信息進行操做,獲得按各類要求製做的柱狀圖。
  • 功能性需求
    • 查詢某人在某天的疫情狀況
    • 查詢某種數據的周/月的疫情統計狀況,並用柱狀圖顯示結果

2:功能設計

與項目需求分析所要達到的功能有異,我所作的項目可以實現的功能以下:
- 可以按學號查詢某個學生的100天的疫情狀況,並用柱狀圖表示。
- 可以查詢某天的2000個學生的疫情狀況,並用柱狀圖顯示。java

3:設計實現

  • 兩個文件:test二、test3,兩個文件裏分別有一個主類:Barchart
    - (說明:因爲我在處理讀取到的日期數據無法有障礙,而且嘗試了不少辦法仍是沒能解決,在後續報告中會展現出來問題所在。因此分開兩個文件實現上述功能設計的要求。test2中實現第二個功能,使用文件test.xls。test3中實現第一個功能,使用文件test1.xls)
    • 使用到jxl.jar——用於讀取Excel文件中的數據。git

      • Workbook book = Workbook.getWorkbook(new File("D:\test1.xls"));——在讀取Excel中重要的語句
      • String name =sheet.getCell(x, y).getContents().trim();——用於讀取Excel文件中第y行、第x列的數據
    • 使用到gnujaxp.jar、jcommon.jar、jfreechart.jar——用於製做柱狀圖。github

      • JFreeChart chart = ChartFactory.createBarChart3D();——用於構造柱形圖,填寫柱形圖上的參數內容
      • CategoryPlot plot=chart.getCategoryPlot();——用於獲取圖表區域對象。
3.1:設計具體思路
首先數據準備,須要編寫小程序來隨機產生2000姓名及性別和其餘信息,將數據存於Excel文件中(注意:保存的Excel文件後綴名爲.xls),這樣數據就準備好了。接下來就開始進行實驗,將數據按行讀取,在讀的過程當中就判斷各項內容,如「是否出現疑似症狀狀況」內容爲「是」,設置臨時變量count1自增1。這樣再遍歷完整個文件以後就完成了各項內容的統計,將統計的幾個臨時變量傳給Dateset中做爲數據,接下來就可實現這一天的2000我的的疫情統計柱狀圖。
其次,跟上述思想類似,一開始輸入須要查詢的學生的學號,經過在遍歷文件的過程當中將輸入的變量與讀取的學號列進行匹配,若是相等就輸出信息,而且同時統計各項內容數據,方法同上。這樣就可在命令行窗口看到該學生100天的疫情狀況,也能夠看到這100天內的狀況統計柱狀圖。

4:運行測試

  • 主要類以下:

運行test2中的BarChart可實現統計2000個學生某一天的疫情狀況,測試結果以下:小程序


首先,能夠看到在控制檯窗口能夠看到有各個統計項目的具體數據,其次,用java的圖形用戶界面有由這些數據組成的柱狀圖。微信

運行test3中的BarChart可實現查詢某個學生100天的疫情狀況並繪製柱狀圖,測試結果以下:工具


能夠看到經過命令行的形式輸入學號就可獲得該學生在100天內的疫情狀況及柱狀圖。學習

5:主要代碼

/*
該主要代碼是用於從Excel中邊讀數據邊進行統計獲得柱狀圖所須要的數據的過程
*/
private static CategoryDataset getDataSet() throws ParseException
	{
	int count1=0;
        int count2=0;
        int count3=0;
        int count4=0;
        Scanner sc = new Scanner(System.in);
        try {
			Workbook book = Workbook.getWorkbook(new File("D:\\test1.xls"));
			Sheet sheet =book.getSheet(0);
			int rows =sheet.getRows();
	        int cols =sheet.getColumns();
	        System.out.println("請輸入學號:");
    		String Id = sc.nextLine();
    		for(int i=1;i<rows;i++)
    		{
    			String id = sheet.getCell(0, i).getContents().trim();
    			if(id.equals(Id))
    			{
    				String name =sheet.getCell(1, i).getContents().trim();
		        	String sex =sheet.getCell(2, i).getContents().trim();
		        	String date =sheet.getCell(3, i).getContents().trim();
		        	String a1 =sheet.getCell(4, i).getContents();
		            String a2 =sheet.getCell(5, i).getContents();
		            String a3 =sheet.getCell(6, i).getContents();
		            String a4 =sheet.getCell(7, i).getContents();
		            System.out.println(id+"   "+name+"    "+sex+"  "+date+"    "+a1+"  "+a2+"   "+a3+"   "+a4);
		            if(a1.equals("是"))
		        		count1++;
		        	if(a2.equals("是"))
		        		count2++;
		        	if(a3.equals("是"))
		        		count3++;
		        	if(a4.equals("是"))
		        		count4++;
    			}
    		}
	        
	        
		} catch (BiffException e) {
			// TODO 自動生成的 catch 塊
			e.printStackTrace();
		} catch (IOException e) {
			// TODO 自動生成的 catch 塊
			e.printStackTrace();
		}
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(count1, "是否在武漢", "是否在武漢");
        dataset.addValue(count2, "是否湖北(不含武漢)", "是否湖北(不含武漢)");
        dataset.addValue(count3, "是否有疫情疑似症狀", "是否有疫情疑似症狀");
        dataset.addValue(count4, "是否已確認被感染", "是否已確認被感染");
        return dataset;
	}

6:遇到的問題

在實驗過程當中我我遇到的問題有如下幾個,有的獲得瞭解決,有的還未獲得解決。測試

1:讀取Excel文件

在這裏,你們都知道這是用於讀取Excel文件的,可是我一開始沒有注意到讀取的文件類型應該是test.xls,而咱們經常使用的Excel保存時默認後綴是test.xlsx,因爲我一開始沒有注意,因此致使讀取文件失敗。後面在網上查詢後知道jxl在操做Excel時須要讀取的是.xls文件,這很大一部分也是本身的粗心所形成的,之後會更加註意一些細節問題。編碼

2:數據類型的轉換

這三個問題均是在讀取了Excel文件以後會出現我用來判斷是否相等的變量不匹配,一開始覺得是數據類型不一樣,要同爲String類型才能比較,因此用了強制類型轉換,將兩種類型轉換,不管是哪種向另外一種轉換都行不通,哪怕語法沒有錯誤沒有報錯可是仍是沒有結果。經過在網上查詢、請教同窗以後第一和第二個問題我已經獲得解決,第一個問題是在讀取那一行的數據時須要這樣String id = sheet.getCell(0, i).getContents().trim();後面的.trim()是將這個數據轉換成String類型的,這樣以後id與輸入的Id就可進行比較了;第二個問題是由於我須要判斷的內容「是」,一開始我是將「是」這個char類型轉換成String類型,或者反過來。這樣雖然不會報錯,可是沒有獲得我想要的結果,以後查詢事後知道,判斷這兩個是否相等不能用「==」來判斷,須要用a1.equals("是")這樣的語句來判斷。這兩個問題都已解決,可是第三個問題如今尚未解決,不管類型轉換仍是各類方法都試過了,仍是不能解決,因此致使實驗的功能沒有實現按周/月來繪製柱狀圖。在後續的學習中還須要去完善這個項目而且完善本身的知識體系!

7:實驗總結

在此次實驗中因爲學習了PSP流程,而且運用PSP流程去嚴格執行裏面的流程實現軟件項目,以爲是一次全新的體驗,更加了解到了學習軟件工程這門課的重要性和一個項目開發的計劃和預估有多重要,PSP作好了會讓人更加明確整個項目的流程和具體思路,總之PSP真的讓我學會了更加規範的去進行軟件開發。其次,在此次實驗中還收穫了用java語言讀取Excel文件和繪製柱狀圖的方法!可是遺憾的是,沒能在有限的時間內更加完整的實現項目須要達到的功能。在之後的學習中會更加努力,但願之後會愈來愈好!

8:展現PSP

PSP2.1 任務內容 計劃共完成須要的時間(小時) 實際完成須要的時間(小時)
Planning 計劃 3 4
Estimate 估計這個任務須要多少時間,並規劃大體工做步驟 30 25
Development 開發 50 60
Analysis 需求分析 (包括學習新技術) 3 3
Design Spec 生成設計文檔 2 2
Design Review 設計複審 (和同事審覈設計文檔) 0 0
Coding Standard 代碼規範 (爲目前的開發制定合適的規範) 5 5
Design 具體設計 10 15
Coding 具體編碼 150 150
Code Review 代碼複審 30 27
Test 測試(自我測試,修改代碼,提交修改) 20 30
Reporting 報告 6 6
Size Measurement 計算工做量 5 4
Postmortem & Process Improvement Plan 過後總結 ,並提出過程改進計劃 10 10

9:上傳項目到Github

相關文章
相關標籤/搜索