某县百姓百事110便民服务管理系统(1)——项目总结
項目總結
我是研二的一名學生,一直學習嵌入式方面的知識,C語言用的最多。以前本人未接觸過web開發,這是第一次進行web開發,也是第一次學習。學習時間也就一個星期,看了《java編程思想》、《Servlet與JSP核心編程》、《http協議詳解》,還未學習設計模式、框架方面的知識,關于js、css,隨用隨查就可以了。
因為我實習的公司是做國產芯片的,這個項目只是個試點項目(當然也是某縣的真實應用系統),為了測試公司剛設計的服務器的性能。而且,經過測試,在應用框架的應用系統中,框架所占時間比例也是比較大的。所以,這個項目,我們采用無框架、從零開始開發的方式進行。但是,項目完成后,得出的結論是,這種方式不符合主流開發模式,其實這里面也是另有原因吧,呵呵。不然我一個學底層的,做這個干嘛,這不是坑我么,還好以前沒學過,做一個月也是能學到點東西,當然再做下去,堅決不能做了。
閑話不多說,總之,既然做了,也學了這么多,就要有所收獲。我先在這里說一下自己的心得,純屬個人觀點,如有冒犯,請多原諒。
對我而言,我覺得作為一名實習的學生,實習期間不必做web開發的事情,還是多做些底層的東西,掌握一些計算機學科的原理比較好,爭取有扎實的技術上的長進。之所以這么說,我發現web開發這方面,真正有難度的還是系統架構的設計和大數據的分析研究,技術上不存在非你不可的問題,現在各種框架、庫、控件及網上的資源實在是太豐富,讀個研為了去做復制粘貼搜索的事情,真的是不值得。而對于經驗尚淺的我們來說,完成系統架構的設計和大數據的分析研究這類工作是絕對不可能的,必須經過多個真實項目的磨練,才能擔此重任。所以,最初,我們工作的時候只能做碼農,經歷漫長的碼農生活后,才能夠有足夠的項目經驗。反正都是碼農,都能接觸到真實的項目,那么是不是做一個有技術含量的碼農比較好呢?所以至少我確定了研究生階段,對我最有利的發展路徑,去做一些底層的開發吧,畢業前不再做web開發。
下面,先總結下整個項目,以后再去寫技術的實現及問題的解決。
第一階段
項目啟動
第一次,與客戶協商后,確立初步功能需求(為了以后描述方便,我們稱其為一次需求,第二次需求的改變稱為二次需求,依次類推...),如下:
- 兩種用戶群:指揮中心,各二級平臺。
- 工作流程:受理(電話錄音;記錄來電人姓名、單位或住址、聯系電話、來電時間和內容;記錄接線員身份;新建任務)——>交辦(將任務分類;交辦任務給相應二級平臺;規定辦理時間限制)——>反饋(二級平臺辦理任務后反饋)。
設計原則:簡單易用,盡量減少頁面的跳轉,盡量讓用戶在一個頁面就能獲取所需信息或者進行所需操作。這就是我們設計頁面數較少的原因,應該說我們用了盡量少的頁面來實現全部功能。
根據需求暫時設計有:3個jsp頁面,1個數據庫hotline(2個表),5個servlet。
詳細的設計就不說了,用處不大。說一下設計時需要注意的問題:
- 明確各部分的作用,jsp用來顯示信息并與用戶交互,數據庫用來保存數據,servlet用來實現處理邏輯。
- jsp的設計要明確,動態部分與靜態部分。
- 數據庫的設計,我們的設計比較簡單,沒有用到太多的復雜知識,我的心得是,按照項目的需要,先直接去建立表,已建表滿足現在的需要后,在整體上對所有的表進行調整,該去掉的去掉,該合并的合并,該修改的修改,當然要在不影響功能的前提下。如果想要更加專業或者更加優化,這時候可以去應用數據庫設計方面的知識。我相信,每個復雜數據庫的設計,也是這么一步一步來的。
- servlet的設計,應該很簡單了,根據邏輯需要去寫就行。
開發環境搭建:
- linux操作系統
- JDK
- Tomcat
- mysql
- JDBC
用到的技術:
- JSP/Servlet
- javascript
- css
- html
- http協議了解
- mysql連接、添刪改查、關閉
- Tomcat應用部署
開發的順序:
- 首先,進行前端設計,用Dreamweaver畫出靜態頁面,同時,建立數據庫
- 然后,將靜態頁面改造為動態頁面,同時,根據邏輯,寫出servlet
遇到的問題:
- mysql中文亂碼問題
- jsp頁面中文亂碼問題
- servlet接收到的中文是亂碼
第一階段用了大約一周時間。我們要給用戶一個階段性的成果,一是為了讓客戶對我們充滿信心,相信我們;二是,及時更正需求,盡量在工程早期修正錯誤。
第二階段
一般情況下,客戶向我們描述功能需求后,我們很難保證,我們接收到的信息與客戶想要傳達的信息100%相同,也很難保證,客戶已將全部100%的信息傳達給我們。
主要使增加了功能需求,主要是搜索功能、數據的備份與恢復和任務分類的選擇,還做了一些頁面上的改動。
增加一個jsp頁面,兩個servlet,一個數據庫表。
遇到的問題:
- java程序進行導入導出數據庫
在這個過程中,我們發現,程序的可維護性,可擴展性使非常重要的。主要是方便我們開發人員,因為應用開發最經常改變的就是需求,我們需要不斷的根據客戶需求去完善項目。
如何提升可維護性呢?
- jsp頁面的設計,重復使用的部分(例如,同一項目中,每個頁面的頂部部分和底部部分),封裝成單獨的jsp,include進使用它的頁面,這樣如果對重復部分進行修改,只需要修改一個地方,而且還防止了遺漏。我想這就是各種開發框架形成的原因跟過程吧。
- servlet的設計,使用頻繁的邏輯功能,可以封裝成單獨的類,例如數據庫的操作。
- 明確并分清數據邏輯與業務邏輯。
第三階段
需求增加知識庫功能、信息縮略、已有任務的刪除及修改,已有任務的打印、任務催辦等功能。
遇到的問題:
- jsp顯示時,該換行的地方沒有換行
在客戶對需求有改變時,我們要盡量滿足客戶的要求,即使我們感覺沒有必要的地方,只要用戶提出來,就要做。另外,還要懂得跟客戶溝通,如果遇到特別麻煩或者不能實現的功能,為客戶找到其他方式的解決方案,或者向其說明情況,當然這是迫不得已的做法,畢竟,不是所有事情都能實現。
第四階段
需求增加高級搜索功能、統計功能。
遇到的問題:
- JDK1.7及其以前版本不支持switch(String)
- Tomcat1.7中,request.setCharacter()不管用,因此顯示有亂碼問題
這里詳細說一下統計功能,非常麻煩。我們最終是得到一張在某時間段內、各單位任務狀態的統計表。能新建,刪除,修改,查看各統計表。
首先,我們先按照客戶給出的評價標準得到一堆數學公式,然后幾個人一起檢查一遍數學公式的正確性,確認數學公式的正確性之后,才開始分工進行實現。我設計了它的實現架構,采用MVC,如下:
邏輯|—————————————————————————————————Map B—————————————————————————|| |V | count.jsp ——————> 點擊新建 ——————> count-form.jsp ——————> 點擊保存 ——————> 將所有記錄放入Map B ——————> saveServlet| ^ | ^| | | |——————————————————————————————————|| | | |V | V | 點擊已存在統計表 | 重新計算 || | | || | | || | | |V | V | existedServlet | recomputeServlet || | | || | | || | | |V | V | 將所有記錄放入Map A | 將所有記錄放入Map C || | | || | | || | | ||—————————————————————————————————| |————————————————————————————————————————數據結構Bean類:統計表中,每條記錄對應一個Bean HashMap:一個統計表對應一個Map接口設計startTime,endTime,countFormName:點擊已存在統計表時,作為參數,count.jsp ——————> existedServlet,existedServlet ——————> count-form.jsp,count-form.jsp ——————> recomputeServlet countMap:existedServlet ——————> count-form.jsp, recomputeServlet ——————> count-form.jsp,count-form.jsp ——————> saveServlet,saveServlet ——————> count-form.jsp Bean中:setXXX(),getXXX() countMap的key為’單位名‘?
轉載于:https://www.cnblogs.com/ISeeIC/p/4254029.html
總結
以上是生活随笔為你收集整理的某县百姓百事110便民服务管理系统(1)——项目总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Microsoft 数据访问组件 (MD
- 下一篇: [整理]zepto的初次使用