學(xué)習(xí)強(qiáng)國打卡系統(tǒng)

該項目純軟件

目前是一個網(wǎng)站的形式來實現(xiàn)學(xué)習(xí)強(qiáng)國打卡,當(dāng)初設(shè)計是為了提高統(tǒng)計的準(zhǔn)確性迄埃,以及方便每周值日的同學(xué)觀看打卡情況蟀架,產(chǎn)生做這個系統(tǒng)的想法,目前已經(jīng)投入使用

系統(tǒng)架構(gòu)

系統(tǒng)架構(gòu)是基于MVC開發(fā)模式拓展的慧域,包括database數(shù)據(jù)層鲤竹、model模型層、dao數(shù)據(jù)持久層昔榴、service業(yè)務(wù)邏輯層辛藻、controller/servlet控制器碘橘,各層次分工明確,降低層次耦合度吱肌。

顯示層 (View)

本系統(tǒng)采用B/S模式痘拆。多以jsp/html為主要的顯示頁面,為了滿足頁面UI的展示氮墨,AJAX數(shù)據(jù)交換為JSON格式纺蛆。此層與控制層結(jié)合比較緊密,需要二者結(jié)合起來協(xié)同工作规揪。

控制層

Controller層負(fù)責(zé)具體的業(yè)務(wù)模塊流程的控制桥氏,這樣不僅使程序結(jié)構(gòu)變得清晰,也大大減少了代碼量粒褒。

控制層主要用于響應(yīng)客戶端請求识颊,每當(dāng)請求到系統(tǒng)時,控制層就會調(diào)用對應(yīng)的業(yè)務(wù)邏輯奕坟。請求分多種祥款,如AJAX的數(shù)據(jù)請求、頁面請求月杉、文件上傳刃跛、文件下載,控制層便會對應(yīng)地做出相應(yīng)的數(shù)據(jù)返回苛萎、頁面跳轉(zhuǎn)桨昙、流返回行為。

數(shù)據(jù)持久層

DAO層主要是做數(shù)據(jù)持久層的工作腌歉,負(fù)責(zé)與數(shù)據(jù)庫進(jìn)行聯(lián)絡(luò)的一些任務(wù)都封裝在此蛙酪,DAO層的設(shè)計首先是設(shè)計DAO的接口,然后設(shè)計實現(xiàn)類翘盖。

各層聯(lián)系

DAO層桂塞,可以單獨開發(fā),互相的耦合度很低馍驯,完全可以獨立進(jìn)行阁危,這樣的一種模式在開發(fā)大項目的過程中尤其有優(yōu)勢,Controller汰瘫,View層因為耦合度比較高狂打,因而要結(jié)合在一起開發(fā),但是也可以看作一個整體獨立于前兩個層進(jìn)行開發(fā)混弥。這樣趴乡,在層與層之間我們只需要知道接口的定義,調(diào)用接口即可完成所需要的邏輯單元應(yīng)用,一切顯得非常清晰簡單浙宜。

下圖為目前網(wǎng)站功能架構(gòu)

目前網(wǎng)站的架構(gòu)
登錄界面效果圖

碼云下載地址官辽,直接點擊這里蛹磺,這個代碼還是之前有bug時候的代碼粟瞬,看懂里面代碼并作相應(yīng)的修改就會有很大的成長。

這里代碼是使用以下軟件來進(jìn)行開發(fā)的:開發(fā)工具:MyEclipse10萤捆,數(shù)據(jù)庫:MySQL 5.1.32-community裙品,圖形化界面數(shù)據(jù)庫操作:navicat,Java環(huán)境:jdk1.8.0_131(實際可能是jdk6俗或,MyEclipse創(chuàng)建項目時候最高版本)

后來我用eclipse來開發(fā)市怎,在myeclipse里那個jdk6換成高版本,一堆叉叉辛慰,不換高版本jdk圖像處理那里請求的file類那些又沒有(具體沒有哪些類我忘記了区匠,idea沒用過所以沒有用),反正看著就很不爽帅腌〕叟或者兩種jdk存在,導(dǎo)致部分代碼出bug速客;像不執(zhí)行識別代碼什么的戚篙。

上述bug
  • 打卡天數(shù),到達(dá)99天的時候溺职,加到100岔擂,就一直查99天的數(shù)據(jù)進(jìn)行修改
打卡天數(shù)的流程及實現(xiàn)思路
  • 在積分錄入界面,填好分?jǐn)?shù)那些浪耘,或者上傳圖片等待識別乱灵,輸入框有內(nèi)容后,點擊上傳七冲,打卡天數(shù)自增
  • 打卡天數(shù)痛倚,個人設(shè)計是通過時間的比較來進(jìn)行實現(xiàn)的,注冊時候會自動記錄注冊時間癞埠,接著打卡就通過與注冊時間作比較來計算打卡天數(shù)

三種情況:

  1. 注冊當(dāng)天打卡
  2. 注冊當(dāng)天沒打卡
  3. 注冊后打過卡
  • 具體應(yīng)結(jié)合代碼進(jìn)行看

bug出現(xiàn)的原因是當(dāng)時設(shè)計數(shù)據(jù)庫打卡天數(shù)時候状原,數(shù)據(jù)類型是varchar(255),然后大家到99天的時候苗踪,代碼總是判斷99為最大的天數(shù)颠区。我也懶得改數(shù)據(jù)庫那里設(shè)計了,我個人解決這個bug的思路是(判斷里面的最新的打卡編號通铲,因為打卡編號自增且數(shù)據(jù)類型為int)。寫到這里,想到支部打卡天數(shù)的貌似也是varchar類型朋截,這個我有空再改吧


心情
積分錄入界面

部署在服務(wù)器上的bug就精彩多了

  1. 本地入數(shù)據(jù)庫沒問題蛹稍,服務(wù)器上傳中文入數(shù)據(jù)庫就亂碼(db.properties里面加useUnicode=true&characterEncoding=UTF-8,解決問題)問題解決鏈接

  2. tomcat7版本 jdk只有1.7部服,圖像處理的那些算法不能用唆姐,如圖報錯


    出現(xiàn)請求錯誤圖
  3. tomacat8版本終于可以了jdk1.8,結(jié)果錄入的感想全 廓八?奉芦??剧蹂?声功?(亂碼),一查發(fā)現(xiàn)tomcat8直接幫你處理好字符的問題 直接默認(rèn)UTF-8宠叼,而我里面的方法為了tomcat7版本轉(zhuǎn)碼成ISO-8859-1先巴。后面我決定不改代碼,因為懶冒冬,太多代碼要刪刪改改調(diào)試伸蚯,于是決定直接浪費tomcat8的美意,把編碼改成ISO-8859-1窄驹。問題解決鏈接

4.最精彩部分莫過于這個了朝卒。我開發(fā)用windows系統(tǒng),存儲目錄路徑如圖 是正斜杠“\”

存儲目錄路徑

然而實際的服務(wù)器是Linux系統(tǒng)(怪我看在Linux系統(tǒng)占服務(wù)器空間小乐埠,所以選擇了Linux抗斤,否則就不會出現(xiàn)這么精彩的問題了),先看看不改代碼放服務(wù)器的情況(可看下圖) img\學(xué)號\圖片名 (驚喜加意外丈咐,就新建了一個奇奇怪怪的文件夾還不能訪問)瑞眼,接下來來看服務(wù)器實際存儲路徑 如圖 是反斜杠“/”,如此一來存儲就出現(xiàn)問題棵逊,解決方法改成正斜杠改成反斜杠
不改代碼存圖的路徑

服務(wù)器存儲路徑

待提升的地方

積分界面伤疙,關(guān)于打卡天數(shù)可加一個應(yīng)打卡天數(shù)來進(jìn)行與實際打卡天數(shù)作對比。這部分代碼方法其實我個人寫了辆影,但實際寫在前端的時候出現(xiàn)了一點點小問題徒像,現(xiàn)在還不怎么想解決,先涼拌著(不知道咋解決)蛙讥。

積分界面圖

這個網(wǎng)站其實可以轉(zhuǎn)化為微信小程序的形式進(jìn)行打卡锯蛀,有能力的同學(xué)或者想要擁有這能力的同學(xué)可以借鑒我后端寫的數(shù)據(jù)庫結(jié)構(gòu)、代碼啥的次慢,或者直接將后端的方法鏈接微信小程序的界面來實現(xiàn)旁涤。大佬可以忽略翔曲,直接按需開發(fā)

圖像處理我這里實現(xiàn)是使用別人提供的api,圖片數(shù)據(jù)根據(jù)支部的一些圖片還有自己實際手機(jī)的截圖劈愚,識別準(zhǔn)確率我個人覺得其實可以瞳遍,識別速率寫了延遲3s請求,真正體驗有時需要反復(fù)上傳幾次才能識別出來(說實話我還是挺不滿意的菌羽,沒有識別出來會返回上一位識別成功的同學(xué)的數(shù)據(jù)掠械,這是由于我用了個中間變量來存儲數(shù)據(jù),也算個bug待解決算凿。當(dāng)時寫到崩潰份蝴,終于解決識別存數(shù)據(jù)不入庫的方法,后面就有點懶不想寫清空上位識別成功數(shù)據(jù)的代碼

圖像處理這部分氓轰,有能力其實可以自己寫,自己訓(xùn)練識別字庫浸卦,來提升識別率和準(zhǔn)確率(這部分是我目前不具備的能力)署鸡,現(xiàn)在有些用戶用了自己的字體識別不出來,由于是用api限嫌,所以并不能解決這個問題

可以加上會議簽到等功能靴庆,考勤匯總什么的就沒有那么辛苦,本人不是很想一個人完成這些所有功能怒医,實在太累了炉抒,就交給后面的大佬來實現(xiàn)了

最后附上當(dāng)時想做成小程序的供需分析

(我分析了然后,為什么自己不做呢稚叹,是由于焰薄,我還不想花時間去研究get/post請求與小程序界面的鏈接,決定簡化自己操作扒袖,用自己已知大部分的知識縮短開發(fā)時間塞茅,所以就寫了個網(wǎng)站)


微信小程序版

上述書于2020.11.03,若有補充后續(xù)再說


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載季率,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者野瘦。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市飒泻,隨后出現(xiàn)的幾起案子鞭光,更是在濱河造成了極大的恐慌,老刑警劉巖泞遗,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惰许,死亡現(xiàn)場離奇詭異,居然都是意外死亡刹孔,警方通過查閱死者的電腦和手機(jī)啡省,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門娜睛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人卦睹,你說我怎么就攤上這事畦戒。” “怎么了结序?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵障斋,是天一觀的道長。 經(jīng)常有香客問我徐鹤,道長垃环,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任返敬,我火速辦了婚禮遂庄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘劲赠。我一直安慰自己涛目,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布凛澎。 她就那樣靜靜地躺著霹肝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪塑煎。 梳的紋絲不亂的頭發(fā)上沫换,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機(jī)與錄音最铁,去河邊找鬼讯赏。 笑死,一個胖子當(dāng)著我的面吹牛炭晒,可吹牛的內(nèi)容都是我干的待逞。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼网严,長吁一口氣:“原來是場噩夢啊……” “哼识樱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起震束,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤怜庸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后垢村,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體割疾,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年嘉栓,在試婚紗的時候發(fā)現(xiàn)自己被綠了宏榕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拓诸。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖麻昼,靈堂內(nèi)的尸體忽然破棺而出奠支,到底是詐尸還是另有隱情,我是刑警寧澤抚芦,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布倍谜,位于F島的核電站,受9級特大地震影響叉抡,放射性物質(zhì)發(fā)生泄漏尔崔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一褥民、第九天 我趴在偏房一處隱蔽的房頂上張望季春。 院中可真熱鬧,春花似錦轴捎、人聲如沸鹤盒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至驼鞭,卻和暖如春秦驯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挣棕。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工译隘, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人洛心。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓固耘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親词身。 傳聞我的和親對象是個殘疾皇子厅目,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容