項目 | 內容 |
---|---|
課程班級博客連接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
做業要求連接 | http://www.javashuo.com/article/p-meyvhbuv-mp.html |
個人課程學習目標 | (1)掌握軟件項目我的開發流程;<br>(2)掌握Github發佈軟件項目的操做方法。 |
這個做業在哪些方面幫助我實現學習目標 | (1)在程序設計方面提升了本身的編程能力;<br> |
項目Github的倉庫連接地址 | https://github.com/lipeishan82/- |
###實驗內容 ####任務一:陳述學生疫情每日上報子系統使用體驗 (1)以前使用的時候不可以記錄前一天的信息,通過升級後,可以記錄前一天的信息,這給信息不變的人提供了很大的便利; (2)界面比較簡潔,統計的防疫信息也比較全面; (3)填寫時間相對有限,存在當天忘記填寫的狀況,能夠添加提醒的功能,這樣能夠減小當天數據不全的現象。html
####任務二:總結詳細閱讀《構建之法》第1-2章、結合第2章2.3節所述PSP流程,開發一款你本身心目中的西北師範大學學生疫情每日填報系統。 我選擇了第一類開發: 有一個數據文件,保存了100天 2000 個教職工/學生的全部防疫信息,請設計一個命令行程序, 支持查詢某人在某一天的疫情狀況, 查詢某種數據的周/月的疫情統計狀況,並用柱狀圖顯示統計結果。 #####1.需求分析: 2019年12月末,中國武漢發生新型冠狀病毒(2019-nCoV) 感染的肺炎疫情,爲遏制疫情蔓延,有效切斷病毒傳播途徑,在中央政府指導下,各級政府部分採起了一系列防控措施: 2020年1 月23 日10時起對武漢「封城」,全國 31個省市也相繼實施了嚴格的防控措施;全國各省市向武漢和湖北派遣醫療隊參與救治工做;在全國範圍內調配口罩、防禦服、藥品等急需的醫療資源支援武漢;指導和督促全國範圍內擁有醫療物資生產資質的企業儘快恢復生產能力;定向撥付專項財政資金用於疾病防控;從其餘省份調集物資保障武漢市民平常生活。java
值得一提的是,中國互聯網企業在這次疫情防控中發揮了社會治理方面的重要做用。以騰訊爲例,圍繞應對疫情管控需求開發了十一款產品。其中疫情在線問診功能,對於減小發熱病人之間的相互交叉感染具備重要的做用,患者在家經過互聯網向在線醫生問診,減小了病毒傳播或感染的風險;謠言粉碎對於公衆採起理性態度看待疫情的發展具備重要意義。滴滴出行還在武漢專門組建車隊,服務於醫護人員的通勤,這在實施交通管制的武漢具備重要做用。此外,還有新型肺炎確診患者同行程查詢工具,用戶只須要輸入本身所乘坐交通工具的時間和班次,就能夠確認是否與被確診感染者同行,提早作好自我隔離和就診工做。在疫情防控中,中國互聯網企業不只發展壯大,在承擔社會責任方面也愈來愈成熟。git
爲有效配合防控機構有關疫情信息的採集、統計與排查,我校開發了教職工/學生疫情上報系統,該系統由教職工疫情每日上報、學生疫情每日上報、二級部門疫情每日彙總表、疫情防控填報統計四個子系統組成。實現對我校各種人員基本狀況、所在區域及活動軌跡及健康情況的信息收集。師生經過我校企業微信服務大廳訪問該系統進行遠程信息填報。github
#####2.功能設計:sql
####3.設計實現: 個人數據庫設計:我設計了四張表,分別是教師表,學生表,教師防疫表以及學生防疫表,我認爲教師表和學生表是從學校的教務處能夠直接獲取,並且疫情忽然,若是從新組建一張新的表格未免有點浪費時間,故沒有將信息表和防疫表組建爲一張表。 <br>具體設計以下: 教師表(工號,姓名,性別,所在省份,所在城市) 教師防疫表(工號,是否有症狀,是否確診,當日溫度,填寫日期)
學生表(學號,姓名,性別,所在省份,所在城市)
學生防疫表(學號,是否有症狀,是否確診,當日溫度,填寫日期)
數據庫
根據數據庫我建立了以下幾個類: 編程
(1)定義了一個用來進行數據庫鏈接的類。 (2)定義學生類,申明私有變量student_id(學號),stu_sex(性別),stu_pro(學生所在省份),stu_city(學生城市);教師類定義變量內容與教師表的數據庫相對應,還有教師防疫信息表以及學生信息表在這兩個類中除了數據庫對應的兩個表中的屬性外除此以外我還定義了一個統計確診人數的變量checknum,方便產生柱狀圖。 (3)定義了用來進行數據操做的類,分別能夠對教師,學生以及兩者同時進行操做。 (4)定義了用來產生柱狀圖的類,因爲個人柱狀圖的設計是將學生和教師分別產生對應的柱狀圖,故含有兩個不一樣的類。採用JfreeChart技術實現。微信
重要函數: (1)數據庫鏈接,若是這個不存在,那麼鏈接不上數據庫更談何進行數據的查詢以及柱狀圖的生成。 (2)產生數據集的函數,它所產生的數據對於後面產生柱狀圖的結果表起了相當重要的做用。 (3)進行數據庫操做的一系列函數,是輸出精確的第一步。數據庫設計
####4.測試運行: 我將個人項目導出爲jar,能夠直接在命令行下進行運行,因爲數據是我向數據庫中導入了2000條數據,可能與實際的狀況有必定的出入,並且數據量較少,當數據量過大時可能會出現必定時間上的影響 上圖爲在命令行中,執行了關於人員及信息添加的功能<br>
以上兩張圖顯示了關於教師和學生的防疫信息,能夠看出在命令行中添加的數據成功<br> 還能夠進行確診人員信息輸出
ide
根據日期以及ID能夠進行查詢,也能夠只提供id進行所有信息的查詢,以及提供一段時間的全部人員的信息查詢,因爲學生和教師均可以進行故在此僅展現一個
柱狀圖的顯示是根據對於確診人員每日男女人數進行製做的 教師柱狀圖如圖:
學生柱狀圖:
####5.關鍵代碼:
/** * 使用查詢數據庫的數據 * @return 數據集 * @throws Exception */ private static CategoryDataset getDataSet() throws Exception { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); java.util.List<Teacherinfo> list = CheckTeacher(); //裝成JFreeChart須要的數據集 for (Teacherinfo teacherinfo : list) { SimpleDateFormat sdf = new SimpleDateFormat("MM-dd"); String str = sdf.format(teacherinfo.getDate()); dataset.addValue(teacherinfo.getChecknum(), teacherinfo.getSex(), str); } return dataset; } /** * 根據工號查詢信息 * * @param con 鏈接數據庫 * @param teacher_id 針對teacher_id進行查詢 */ public void selectTeacherById(Connection con, int teacher_id) throws SQLException { String sql = "select * from teacher t, teacher_info t1 where t.teacher_id = t1.teacher_id and t.teacher_id=?"; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setInt(1, teacher_id); rs = pstmt.executeQuery(); display(); }
####6.總結 我對於每個對象建立了各一個類,針對不一樣人羣的查詢搜索等操做也進行了不一樣類的建立,以及最後柱狀圖的展現也是進行分類編寫,由此實現了模塊化。剛開始撰寫博客時數據比較少,因此總體的速度比較快,除了柱狀圖的產生輸出可能要用近10s的時間產生,而後我又將數據增長到了2000條,速度稍微慢了一些,再後面數據不斷增長後,我也會不斷進行測試該項目實現功能的耗時狀況。因爲後面數據庫增大截圖很差截,因此,截圖時是在較小的數據庫中進行的。代碼存在了一些冗餘的狀況,我也會不斷進行修正,刪減。 ####7.PSP: PSP2.1|任務內容|計劃共完成須要的時間(min)|實際完成須要的時間(min) -|-|-|- Planning|計劃|8|8 ·Estimate|估計這個任務須要多少時間,並規劃大體工做步驟|8|8 Development|開發|665|710 ·Analysis|需求分析 (包括學習新技術)|60|100 ·Design Spec|生成設計文檔|20|20 ·Design Review|設計複審 (和同事審覈設計文檔)|0|0 ·Coding Standard|代碼規範 (爲目前的開發制定合適的規範)|15|15 ·Design|具體設計|90|120 ·Coding|具體編碼|360|320 ·Code Review|代碼複審|60|45 ·Test|測試(自我測試,修改代碼,提交修改)|60|90 Reporting|報告|65|90 ·Test Report|測試報告|30|60 ·Size Measurement|計算工做量|20|10 · Postmortem & Process Improvement Plan|過後總結,並提出過程改進計劃|15|20
因爲在每次運行過程當中,多多少少會出現一些不可避免的問題,因此在不斷改進,在最後撰寫博客的時候,仍是以爲有些功能有問題,也在不斷修改本身的程序,但願有較好的體驗感。以前撰寫程序的時候其實沒有很注意代碼規範,經過此次查看《碼出高效_阿里巴巴Java開發手冊》學習了代碼規範,對之後的代碼撰寫以及可讀性有了很大的幫助。 ####任務三:完成任務2項目開發,將項目源碼的完整工程文件提交到本人註冊Github帳號的項目倉庫中,完成我的項目報告博文做業。 已將工程提交GitHub 在這裏,期中撰寫README時能夠參考這篇博客喲
已完成博客撰寫
###總結: 經過這次防疫系統的實現,我對PSP的重要性有了深入的瞭解,也對SQL語句的書寫有了必定的回顧,同時也學會了如何利用JFreeChart進行圖形用戶界面的設計,提升了編程能力同時也知道了關於編程規範的具體實施。我也會不斷提高個人系統性能,向着更好的方向努力。