項目 | 內容 |
---|---|
課程班級博客鏈接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
本次作業要求鏈接 | https://www.cnblogs.com/nwnu-daizh/p/12416880.html |
我的課程學習目標 | 可以熟練運用軟件工程所學知識進行軟件開發 |
這個作業在哪些方面幫助我實現學習目標 | 了解軟件開發的一般流程,並運用該方法進行簡單的軟件開發 |
項目Github的倉庫鏈接地址 | https://github.com/18215128518wgw/diseaseManage |
1. 實驗目的與要求
(1)掌握軟件項目個人開發流程
(2)掌握Github發布軟件項目的操作方法
2.實驗內容和步驟
任務一:陳述學生疫情每日上報子系統使用體驗;
已經經過比較久的一段時間體驗學生疫情上報系統,我有很多對於這個系統的印象
- 系統外觀設計比較簡約,操作很簡便。
- 系統在經過后期改進之后,對於高並發情況有較好的反應,可能在硬件軟件等方面都做了優化
- 缺點就是沒有一個比較直觀的,顯示某人某天是否打卡的功能,也不存在補卡之類的操作。提交的信息好像也不會存在核對之類的操作。
- 有記住選項的功能,極大節省了操作時間,減輕服務器壓力,也方便了一般用戶
任務2:總結詳細閱讀《構建之法》第1-2章、結合第2章2.3節所述PSP流程,開發一款你自己心目中的西北師范大學學生疫情每日填報系統。
我選擇了第二類開發要求:
- 系統可采集學生疫情有效信息
- 系統支持用戶在線使用
- 每日只可填報一次,提交后無法修改,每日十點疫情信息填報截止
- 各學院指定負責人登錄系統,可查看本學院學生填報的匯總數據,可點擊查看學生聯系方式、班主任聯系方式,學院負責人核實本院所有學生數據后,將數據提交給學校防控辦
- 學校防控辦指定負責人登錄《西北師范大學疫情防控信息統計》子系統,可瀏覽所有學生填報匯總數據清單,通過【導出】可獲取疫情數據的EXCEL文件
系統在線訪問地址:(因為服務在我自己機器上跑,所以可能有時候服務沒有開啟)
學生疫情上報:http://kpgs.natapp1.cc
后台疫情管理平台:http://kpgs.natapp1.cc/user/login(用戶名:test;密碼:1)
任務3:完成個人項目報告博文作業
-
需求分析
- 目的:為了掌握軟件項目個人開發流程,將知識運用到實踐中
- 學生疫情上報平台:滿足用戶在線定時定量使用,系統穩定可靠,能將有效信息傳遞到數據庫
- 疫情管理平台:滿足數據的顯示(包括關鍵疫情數據統計、已填/未填數據統計、數據的可視化等),導出數據到excel,實時更新顯示數據等操作。
- 使用Github進行代碼托管,用到commit、releases/tag、push、pull、branch等Git操作,在我的項目中,我使用idea通過命令行的方式進行Git的操作。
- 項目使用springBoot進行開發。
-
功能設計
- 基本功能
- 采集學生每天的疫情信息,每人每天只能上傳一次,並且無法修改
- 系統支持多用戶在線使用,當然看到這篇博文的你也可以試着用用,鏈接我放在上邊了
- 每日只可填報一次,提交后無法修改,每日十點疫情信息填報截止,這里我改成了二十點,為了方便測試
- 管理員登陸可查看各學院填報情況,學生匯總數據,關鍵疫情數據統計,並且采用可視化圖表的形式進行,這里由於沒有相應的班級數據,沒有做班級這一塊的信息展示,只做了附加要求
- 管理員進入后台管理系統,可將學生疫情數據導出到excel。這里我只做了導出全部數據,后續可能還會增加導出當天數據,或者導出滿足特定條件的學生數據
- 拓展功能
- 數據提交頁面增加表單驗證功能,為空或者不合格的數據都將提交失敗
- 管理員界面的數據可視化運用echarts4這個javascript庫生成美觀大方的可視化圖表
- 系統支持pc或者移動端的訪問,界面不會因為屏幕變化而出現bug
- 針對可能顯示的數據太多,管理界面增加分頁功能
- 基本功能
-
設計實現
- 學生類,實現信息采集,保存,檢查,查詢等功能
- 用戶類,實現用戶的登錄,檢查狀態,查詢疫情數據,導出到excel,分頁等功能
- 類與類之間完全分離,擁有對數據的增改查等功能,有獲取特定日期的函數等。某些具有判斷功能的函數有比較嚴謹的邏輯,函數之間存在比較固定的調用關系。
-
測試運行
-
代碼運行截圖:
-
功能對應的運行截圖
-
采集學生每天的疫情信息,在線使用
-
每日只可填報一次,提交后無法修改,每日二十點疫情信息填報截止
-
管理員查看填報情況
-
數據導出到excel
-
使用GitHub
-
-
擴展需求的運行截圖
-
表單驗證功能(提交的選項不能有空)
-
數據可視化
-
pc或者移動端的訪問
-
分頁功能
-
-
-
代碼展示
這里粘貼了一個學生類中信息提交的方法,重點是在於注釋的書寫方式,代碼沒什么好講解的,也都比較簡單
/** * 表單提交的目標方法,判斷條件是否允許,為真則向數據庫寫入數據 * @param model * @param student * @param httpServletResponse * @return 打卡視圖 * @throws Exception */ @GetMapping("info") public String StudentInfo(Model model, Student student, HttpServletResponse httpServletResponse) throws Exception{ System.out.println(student); //成功表示當日沒有填寫,並且時間未超過20點 if(studentService.checkStudentByCode(student.getCode(), student.getDate()) && getHour(new Date()) < 20){ //判斷插入到數據表中是否成果 if(studentService.InsertStudentInfo(student)) { httpServletResponse.setContentType("text/html;charset=utf-8"); httpServletResponse.getWriter().write("<script>alert('今日情況已上報成功!');</script>"); httpServletResponse.getWriter().flush(); }else { httpServletResponse.setContentType("text/html;charset=utf-8"); httpServletResponse.getWriter().write( "<script>alert('上報失敗,請重新上報!');</script>"); httpServletResponse.getWriter().flush(); } }else { if(getHour(new Date()) < 20 && !studentService.checkStudentByCode(student.getCode(), student.getDate())) { httpServletResponse.setContentType("text/html;charset=utf-8"); httpServletResponse.getWriter().write( "<script>alert('您今日已打卡!');</script>"); httpServletResponse.getWriter().flush(); } else { httpServletResponse.setContentType("text/html;charset=utf-8"); httpServletResponse.getWriter().write( "<script>alert('打卡時間超過規定時間!');</script>"); httpServletResponse.getWriter().flush(); } } model.addAttribute("today", new Date()); return "student"; }
-
總結:程序如何實現軟件設計的“模塊化”原則
程序運行調用方法時,盡量減少互相干擾。但由於本次時間有限,水平有限,寫出來的只是一般的系統,沒有用到更好的技術實現軟件開發的模塊化方法。如果可以后邊會通過搭建微服務的方式真正實現模塊化
-
展示PSP
PSP 任務內容 計划共完成需要的時間(min) 實際完成需要的時間(min) Planning 計划 30 30 · Estimate 估計這個任務需要多少時間,並規划大致工作步驟 30 30 Development 開發 930 1090 · Analysis 需求分析 (包括學習新技術) 300 240 · Design Spec 生成設計文檔 0 0 · Design Review 設計復審 (和同事審核設計文檔) 0 0 · Coding Standard 代碼規范 (為目前的開發制定合適的規范) 10 10 · Design 具體設計 200 120 · Coding 具體編碼 300 480 · Code Review 代碼復審 60 60 · Test 測試(自我測試,修改代碼,提交修改) 60 120 Reporting 報告 45 50 · Test Report 測試報告 15 15 · Size Measurement 計算工作量 15 20 · Postmortem & Process Improvement Plan 事后總結 ,並提出過程改進計划 15 15
-
計划階段包括思考我所需要的技術,工具,數據等等
-
需求分析包括新技術的學習,環境的准備,必要軟件的安裝
-
由於個人能力原因,代碼時間很長,主要是因為會在某一個問題上耗很長時間
-
代碼測試階段沒想到有什么要干的,但當真正以用戶身份體驗的審核的時候,發現編碼邏輯錯誤,花了一段時間更改
小記
- 這次代碼時間比較短,功能比較少,類似的功能我也只做了某一個
- 登錄那里沒有用太多時間,寫的不是很好
- thymeleaf確實讓人。。。靜態文件搞不明白我就差崩潰了
- echarts非常好用,很強大的前端數據可視化工具
我在后台看見程序運行會有bug,但我自己查不出來哪里出現了bug,大家如果在試用時找到了bug,請聯系我或者評論在下方,十分感謝!!!