springboot工廠考勤管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文_第1頁(yè)
springboot工廠考勤管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文_第2頁(yè)
springboot工廠考勤管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文_第3頁(yè)
springboot工廠考勤管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文_第4頁(yè)
springboot工廠考勤管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

緒論信息管理系統(tǒng)是一種針對(duì)特定領(lǐng)域或行業(yè)的信息化管理工具,旨在提高工作效率、優(yōu)化資源配置和加強(qiáng)決策支持。隨著信息技術(shù)的快速發(fā)展,于是越來(lái)越多的高?;蛘咂髽I(yè)等開始關(guān)注和應(yīng)用信息管理系統(tǒng)。通過集成各種功能模塊和數(shù)據(jù)分析手段,該系統(tǒng)能夠?qū)崿F(xiàn)信息的快速傳遞、業(yè)務(wù)流程的自動(dòng)化以及數(shù)據(jù)的準(zhǔn)確統(tǒng)計(jì)與分析。研究背景包括了國(guó)內(nèi)外相關(guān)領(lǐng)域的研究現(xiàn)狀、市場(chǎng)需求和未來(lái)發(fā)展趨勢(shì)等方面,為設(shè)計(jì)和開發(fā)學(xué)生管理系統(tǒng)提供了理論基礎(chǔ)和實(shí)踐指導(dǎo)。面對(duì)企業(yè)對(duì)于員工出勤狀況精準(zhǔn)監(jiān)測(cè)與科學(xué)化管理的需求,眾多現(xiàn)代公司已廣泛部署了考勤管理系統(tǒng)。在企業(yè)的日常運(yùn)作中,考勤管理的重要性顯而易見,它是保障企業(yè)穩(wěn)定運(yùn)轉(zhuǎn)的關(guān)鍵因素。隨著信息技術(shù)的發(fā)展,傳統(tǒng)的人工或半自動(dòng)化考勤處理方式已逐漸過時(shí),難以適應(yīng)現(xiàn)今復(fù)雜的組織管理要求。因此,開發(fā)能夠滿足企業(yè)需求的考勤系統(tǒng)變得尤為緊迫。根據(jù)企業(yè)的實(shí)際需要,開發(fā)團(tuán)隊(duì)利用現(xiàn)有的計(jì)算資源和技術(shù)平臺(tái),重新審視工作理念與流程,構(gòu)建了一套整合了基礎(chǔ)人事數(shù)據(jù)管理(例如新增、修改及刪除)功能的考勤解決方案。該舉措不但大幅削減了人力資源部門的工作負(fù)擔(dān),同時(shí)提高了數(shù)據(jù)精準(zhǔn)度,契合未來(lái)人力資源管理的發(fā)展走向。[1][2]。在國(guó)際,信息管理系統(tǒng)的研究和應(yīng)用也取得了顯著進(jìn)展。許多國(guó)際知名企業(yè)和科研機(jī)構(gòu)在該領(lǐng)域進(jìn)行了深入研究,并開發(fā)了一系列先進(jìn)的系統(tǒng)解決方案。這些系統(tǒng)不僅具備基本的功能,國(guó)外的研究還注重系統(tǒng)的可擴(kuò)展性和跨平臺(tái)性,通過不斷創(chuàng)新和改進(jìn),使得信息管理系統(tǒng)更加符合全球化的需求,并在全球范圍內(nèi)得到廣泛應(yīng)用。在國(guó)內(nèi),信息管理系統(tǒng)的研究和應(yīng)用已經(jīng)引起了廣泛關(guān)注。許多學(xué)者和研究機(jī)構(gòu)致力于開發(fā)和改進(jìn)這類系統(tǒng),以滿足不同行業(yè)和領(lǐng)域的需求。研究重點(diǎn)主要集中在系統(tǒng)的功能設(shè)計(jì)、性能優(yōu)化、數(shù)據(jù)安全和用戶體驗(yàn)等方面。一些企業(yè)也開始意識(shí)到信息管理系統(tǒng)的重要性,并積極引入和應(yīng)用相關(guān)技術(shù),提高工作效率和管理水平。在國(guó)內(nèi)仍存在一些挑戰(zhàn),如標(biāo)準(zhǔn)化程度有待提高、技術(shù)創(chuàng)新等問題,需要進(jìn)一步加強(qiáng)研究和推廣。企業(yè)內(nèi)部考勤數(shù)據(jù)處理的數(shù)字化轉(zhuǎn)型盡管在中國(guó)起步較遲,不過已經(jīng)歷了超過十年的發(fā)展歷程。在這段歷程中,相關(guān)技術(shù)經(jīng)歷了從條形碼到磁卡、再到觸點(diǎn)IC卡、非接觸式的RFID卡片,以及目前最新的生物特征識(shí)別(如指紋認(rèn)證)的發(fā)展過程,體現(xiàn)了科技進(jìn)步的速度。相比之下,由于起步時(shí)間較早,國(guó)外的考勤解決方案更為完善;而我國(guó)在此領(lǐng)域的進(jìn)步空間依然廣闊。當(dāng)前,世界上眾多領(lǐng)先的公司均已實(shí)施了先進(jìn)的考勤信息管理體系,這些系統(tǒng)顯著提升了工作效率并增強(qiáng)了經(jīng)濟(jì)效益。隨著計(jì)算機(jī)技術(shù)在各個(gè)行業(yè)的廣泛應(yīng)用和深入發(fā)展,企業(yè)對(duì)員工的考核方式也在不斷更新。在企業(yè)中,考核過程已經(jīng)開始實(shí)現(xiàn)信息化,考勤規(guī)則的靈活設(shè)置與各種考勤機(jī)器相連接,從而減少了手動(dòng)記錄的工作量。這款考勤系統(tǒng),依托手機(jī)定位原理、位置服務(wù)(LB)技術(shù)以及云服務(wù)搭建。用戶于手機(jī)安裝專屬考勤軟件后,其位置信息能即刻傳至服務(wù)器,自動(dòng)與事先設(shè)定的考勤地點(diǎn)、考勤時(shí)段進(jìn)行比對(duì),以驗(yàn)證考勤的有效性??记谙到y(tǒng)的優(yōu)勢(shì)在于其靈活性,可以輕松整合巡邏、休假和公司通信等功能。由于手機(jī)考勤不受時(shí)間和地點(diǎn)的限制,它為員工的考勤提供了便利,對(duì)于標(biāo)準(zhǔn)化管理和提高工作效率具有積極的意義和價(jià)值。計(jì)算機(jī)技術(shù)的發(fā)展正在改變企業(yè)對(duì)員工的考核方式??己耸侄?。手機(jī)考勤系統(tǒng)屬于新興的考勤形式,借助手機(jī)定位功能以及云服務(wù)相關(guān)技術(shù),實(shí)現(xiàn)了考勤過程的信息化和自動(dòng)化。這種考勤方式不受時(shí)間和地點(diǎn)限制,為員工提供了更大的靈活性,同時(shí)也提高了管理效率和考勤安全性。第1章為引言,文章起筆就對(duì)該主題的研究背景及意義進(jìn)行了闡述。第2章針對(duì)出勤管理系統(tǒng)所選用的開發(fā)技術(shù)與工具展開探究。第3章屬于系統(tǒng)分析部分,涉及整體系統(tǒng)需求的闡釋,從系統(tǒng)功能需求、非功能需求以及其他方面進(jìn)行分析,以此判定系統(tǒng)的可行性。第4章是系統(tǒng)設(shè)計(jì)部分,作為本文的核心要點(diǎn),詳細(xì)呈現(xiàn)了主要功能模塊的系統(tǒng)架構(gòu)與設(shè)計(jì)說(shuō)明。第5章是系統(tǒng)的具體實(shí)現(xiàn)環(huán)節(jié),對(duì)系統(tǒng)各個(gè)模塊的具體實(shí)現(xiàn)方式進(jìn)行講解與剖析。第6章:一般而言,會(huì)參照前幾章的內(nèi)容對(duì)系統(tǒng)進(jìn)行測(cè)試與運(yùn)行操作。最后,對(duì)系統(tǒng)進(jìn)行了仔細(xì)的總結(jié),以對(duì)未來(lái)有了新的前景。2系統(tǒng)分析該項(xiàng)目采用B/S架構(gòu),運(yùn)用Java與JSP技術(shù)進(jìn)行開發(fā),并借助MySQL數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)與管理。技術(shù)可行性,指的是在限定時(shí)間內(nèi),既定技術(shù)能否實(shí)現(xiàn)預(yù)期功能。開發(fā)設(shè)計(jì)期間,是否會(huì)碰上棘手難題,后續(xù)維護(hù)若存在短板,是否影響項(xiàng)目落地應(yīng)用。經(jīng)對(duì)系統(tǒng)全面評(píng)估,確認(rèn)現(xiàn)有技術(shù)可達(dá)成目標(biāo)。系統(tǒng)運(yùn)用JSP技術(shù)構(gòu)建動(dòng)態(tài)頁(yè)面,引入低依賴設(shè)計(jì)模式,搭配靈活數(shù)據(jù)庫(kù)與穩(wěn)定服務(wù)器,顯著提升系統(tǒng)整體運(yùn)行效率。由此可知,技術(shù)層面可支撐目標(biāo)實(shí)現(xiàn)。在項(xiàng)目執(zhí)行階段,主要依賴于當(dāng)下廣泛使用的開源和免費(fèi)技術(shù)工具,這在項(xiàng)目的初期階段能夠顯著減少成本支出,確保項(xiàng)目啟動(dòng)不會(huì)受到預(yù)算限制的影響。從經(jīng)濟(jì)效率的角度分析,這種策略具有可行性。通過最小化成本投入來(lái)滿足用戶預(yù)期,節(jié)省下來(lái)的資金可以用于員工薪酬支付和購(gòu)置設(shè)備,并持續(xù)推進(jìn)無(wú)紙化辦公和高效運(yùn)營(yíng)的目標(biāo)。在項(xiàng)目執(zhí)行階段,主要依賴于當(dāng)下廣泛使用的開源和免費(fèi)技術(shù)工具,這在項(xiàng)目的初期階段能夠顯著減少成本支出,確保項(xiàng)目啟動(dòng)不會(huì)受到預(yù)算限制的影響。從經(jīng)濟(jì)效率的角度分析,這種策略具有可行性。通過最小化成本投入來(lái)滿足用戶預(yù)期,節(jié)省下來(lái)的資金可以用于員工薪酬支付和購(gòu)置設(shè)備,并持續(xù)推進(jìn)無(wú)紙化辦公和高效運(yùn)營(yíng)的目標(biāo)。2.2功能需求分析在著手系統(tǒng)開發(fā)設(shè)計(jì)前,需對(duì)功能展開初步調(diào)研,明晰管理系統(tǒng)的各個(gè)板塊及其功能,判斷整體設(shè)計(jì)能否契合用戶需求。繼而對(duì)擬定開發(fā)的系統(tǒng)功能深入剖析、提煉要點(diǎn),進(jìn)而設(shè)計(jì)出完整系統(tǒng)并付諸實(shí)踐。用戶與開發(fā)人員通過相互交流分析,得以在理解層面達(dá)成最優(yōu)狀態(tài),實(shí)現(xiàn)系統(tǒng)功能的最優(yōu)化。員工用例圖如圖2.1所示。圖2.1員工用例圖公司領(lǐng)導(dǎo)用例圖如圖2.2所示。圖2.2公司領(lǐng)導(dǎo)用例圖部門領(lǐng)導(dǎo)用例圖如圖2.3所示。圖2.3部門領(lǐng)導(dǎo)用例圖經(jīng)需求分析,整個(gè)系統(tǒng)主要?jiǎng)澐譃轭I(lǐng)導(dǎo)者與員工兩大板塊,且每個(gè)板塊下的分支功能各有不同。3系統(tǒng)設(shè)計(jì)在現(xiàn)有的B/S系統(tǒng)里,用戶借助瀏覽器界面與系統(tǒng)展開交互,系統(tǒng)會(huì)自動(dòng)對(duì)用戶發(fā)送到服務(wù)器的請(qǐng)求進(jìn)行處理。這些請(qǐng)求在系統(tǒng)后臺(tái)被妥善處理后,用戶能在瀏覽器上進(jìn)行各類操作,還可查看服務(wù)器返回的處理結(jié)果??荚嚬芾硐到y(tǒng)一般采用三層架構(gòu)設(shè)計(jì),涵蓋視圖層、模型層和控制層。視圖層主要承擔(dān)向用戶呈現(xiàn)數(shù)據(jù)以及收集用戶操作反饋的任務(wù)。模型層專注于處理業(yè)務(wù)邏輯、完成數(shù)據(jù)集成等核心工作??刂茖幼鳛橹虚g橋梁,協(xié)調(diào)著視圖層與模型層之間的協(xié)同運(yùn)作,確保數(shù)據(jù)正確傳輸。B/S架構(gòu)的系統(tǒng)允許用戶通過瀏覽器進(jìn)行操作,所有用戶請(qǐng)求都在服務(wù)器端進(jìn)行處理。這種架構(gòu)下的考試管理系統(tǒng)分為三個(gè)層次:視圖層承擔(dān)數(shù)據(jù)展示與用戶交互的職責(zé),模型層專注于業(yè)務(wù)邏輯處理和數(shù)據(jù)集成,控制層則負(fù)責(zé)在視圖層和模型層之間協(xié)調(diào)交互、傳輸數(shù)據(jù)。系統(tǒng)架構(gòu)圖如圖3.1所示。圖3.1系統(tǒng)架構(gòu)圖系統(tǒng)設(shè)計(jì)旨在剖析系統(tǒng)所包含的全部功能結(jié)構(gòu),為開發(fā)人員的設(shè)計(jì)與實(shí)施工作做好鋪墊。經(jīng)過前期的調(diào)研、分析與梳理,明確的總體需求主要涉及多個(gè)模塊,即:部門管理,部門領(lǐng)導(dǎo)層管理,員工管理,薪金管理,加班管理,休假管理,商務(wù)旅行管理,卡片管理,卡片管理、考試管理、公告管理以及系統(tǒng)管理等功能。整體而言,該系統(tǒng)劃分為三個(gè)部分:一個(gè)是部門負(fù)責(zé)人,第二個(gè)是員工,最后一個(gè)是領(lǐng)導(dǎo)者。權(quán)限分配十分明晰。員工除了能夠?yàn)g覽信息,還擁有查詢和管理自身賬戶信息的權(quán)限,薪水查詢,加班詢問,課程時(shí)間表查詢,考試時(shí)間查詢,公告詢問,工作詢問,遠(yuǎn)離詢問和商業(yè)詢問等;領(lǐng)導(dǎo)者是擁有的最高權(quán)威。系統(tǒng)功能結(jié)構(gòu)圖如圖3.2所示。圖3.2系統(tǒng)功能結(jié)構(gòu)圖開發(fā)系統(tǒng),E.R圖片能夠使其他人得以更快,更輕松地了解該系統(tǒng)的事務(wù)及其關(guān)系。參照結(jié)合從系統(tǒng)分析階段獲得的結(jié)論,考試管理系統(tǒng)中有許多真實(shí)實(shí)體,即員工,領(lǐng)導(dǎo)者,工資,考試,加班,班級(jí)時(shí)間表,休假和商務(wù)旅行。系統(tǒng)總體ER圖如圖3.3所示。圖3.3系統(tǒng)總體ER圖在構(gòu)建數(shù)據(jù)庫(kù)訪問的邏輯結(jié)構(gòu)時(shí),通常采用E.R圖來(lái)表示實(shí)體和關(guān)系,并通過定義字段名稱和數(shù)據(jù)類型來(lái)描述實(shí)體的外部屬性。這種方法有助于形成數(shù)據(jù)庫(kù)表的基本結(jié)構(gòu),而不僅僅關(guān)注其內(nèi)部邏輯。管理員用戶表此表主要用來(lái)存放管理員用戶的有關(guān)信息。其中,ID作為主鍵,唯一標(biāo)識(shí)每一位管理員用戶;username用于記錄用戶名;pwd存儲(chǔ)密碼;cx代表權(quán)限,用以區(qū)分不同管理員的操作權(quán)限;addtime記錄用戶信息的添加時(shí)間,方便追溯數(shù)據(jù)錄入的時(shí)間點(diǎn)。管理員用戶表結(jié)構(gòu)如表3.1所示。表3.1管理員用戶表序號(hào)字段名稱字段類型大小允許為空最大長(zhǎng)度備注1、IDint4否4主鍵ID2、usernamevarchar20否50用戶名3、pwdvarchar20否50密碼4、cxvarchar20否50權(quán)限5、addtimedatetime8否8添加時(shí)間打卡表此表專注于記錄員工的上班打卡情況。ID是主鍵ID用于唯一確定每條打卡記錄;shangbandaka記錄具體的上班打卡時(shí)間;gonghao和xingming分別記錄工號(hào)和姓名,可與員工信息對(duì)應(yīng);addtime記錄該條打卡信息的添加時(shí)間。打卡表結(jié)構(gòu)如表3.2所示。表3.2打卡表序號(hào)字段名稱字段類型大小允許為空最大長(zhǎng)度備注1、IDint4否8主鍵ID2、shangbandakadatetime8否8上班打卡3、gonghaovarchar50是50工號(hào)4、xingmingvarchar50是50姓名5、addtimedatetime8否8添加時(shí)間下班打卡信息表此表主要作用是保存員工的下班打卡的相關(guān)信息。I作為主鍵,唯一標(biāo)識(shí)每條記錄;xiabandaka字段記錄下班打卡的具體時(shí)間;gonghao和xingming則分別記錄員工的工號(hào)與姓名,便于管理員明確是哪位員工進(jìn)行的下班打卡;addtime記錄添加下班打卡信息的時(shí)間。下班打卡信息表結(jié)構(gòu)如表3.3所示。表3.3下班打卡信息序號(hào)字段名稱字段類型大小允許為空最大長(zhǎng)度備注1、IDint4否8主鍵ID2、xiabandakadatetime8否8下班打卡3、gonghaovarchar50是50工號(hào)4、xingmingvarchar50是50姓名5、addtimedatetime8否8添加時(shí)間考勤信息表用于統(tǒng)計(jì)員工的考勤情況。ID是主鍵ID;gonghao和xingming用于關(guān)聯(lián)員工;bumen記錄所屬部門;nianfen和yuefen用于確定考勤統(tǒng)計(jì)的時(shí)間范圍;zaotui、chidao、queqintianshu分別記錄早退、遲到和缺勤天數(shù);kaoqinjianjie為考勤簡(jiǎn)介;addtime記錄信息添加時(shí)間??记谛畔⒈斫Y(jié)構(gòu)如表3.4所示。表3.4考勤信息表序號(hào)字段名稱字段類型大小允許為空最大長(zhǎng)度備注1、IDint4否8主鍵ID2、gonghaovarchar50否50工號(hào)3、xingmingvarchar50是50姓名4、bumenvarchar50是50部門5、nianfenvarchar50是50年份6、yuefenvarchar50是50月份7、zaotuivarchar50是50早退8、chidaovarchar50是50遲到9、queqintianshufloat10是10缺勤天數(shù)10、kaoqinjianjietext8是8考勤簡(jiǎn)介11、addtimedatetime8否8添加時(shí)間公告信息表用來(lái)管理公告相關(guān)數(shù)據(jù)。ID是主鍵ID;gonggaobianhao為公告編號(hào),便于管理和查找;gonggaobiaoti記錄公告標(biāo)題;gonggaoneirong存儲(chǔ)公告具體內(nèi)容;addtime記錄公告發(fā)布的時(shí)間。公告信息表結(jié)構(gòu)如表3.5所示。表3.5公告信息序號(hào)字段名稱字段類型大小允許為空最大長(zhǎng)度備注1、IDint4否8主鍵ID2、gonggaobianhaovarchar50否50公告編號(hào)3、gonggaobiaotivarchar50否50公告標(biāo)題4、gonggaoneirongtext8是8公告內(nèi)容5、addtimedatetime8否8添加時(shí)間部門信息表用于存儲(chǔ)部門的相關(guān)信息。ID是主鍵ID;bumen記錄部門名稱;bumenlingdao記錄部門領(lǐng)導(dǎo);lianxidianhua記錄聯(lián)系電話;addtime記錄部門信息的添加時(shí)間,方便對(duì)部門信息進(jìn)行管理和追溯。部門信息表結(jié)構(gòu)如表3.6所示。表3.6部門信息序號(hào)字段名稱字段類型大小允許為空最大長(zhǎng)度備注1、IDint4否8主鍵ID2、bumenvarchar50否50部門3、bumenlingdaovarchar50否50部門領(lǐng)導(dǎo)4、lianxidianhuavarchar50是50聯(lián)系電話5、addtimedatetime8否8添加時(shí)間4系統(tǒng)實(shí)現(xiàn)系統(tǒng)的登錄窗口是用戶進(jìn)入系統(tǒng)的入口,用戶需登錄成功后才可進(jìn)行訪問。用戶在登錄時(shí)提交表單,后臺(tái)會(huì)對(duì)其進(jìn)行處理,判斷是否為合法用戶,若合法則進(jìn)行頁(yè)面跳轉(zhuǎn),引導(dǎo)用戶進(jìn)入系統(tǒng)。登錄合法性判斷流程:用戶輸入賬號(hào)和密碼后,系統(tǒng)先確認(rèn)輸入數(shù)據(jù)的合法性,接著在login.jsp頁(yè)面發(fā)送登錄請(qǐng)求,調(diào)用src目錄下mainctrl類的dopost方法來(lái)完成驗(yàn)證。用戶登錄模塊的IPO如下:輸入:用戶名和密碼。處理:1)檢查用戶輸入的賬號(hào)、密碼是否準(zhǔn)確且在數(shù)據(jù)庫(kù)中存在對(duì)應(yīng)記錄。2)從數(shù)據(jù)庫(kù)提取相關(guān)記錄,并存儲(chǔ)在本地session中(默認(rèn)超時(shí)時(shí)間為30分鐘)。3)依據(jù)用戶名,將其顯示在系統(tǒng)首頁(yè)。輸出:登錄是否成功的信息。登錄流程圖如圖4.1所示。圖4.1登錄流程圖系統(tǒng)登錄界面如圖4.2所示。圖4.2系統(tǒng)登錄界面用戶登錄的邏輯代碼如下。:if(ac.equals("adminlogin")){Stringusername=request.getParameter("username");Stringpassword=request.getParameter("pwd");Stringutype=request.getParameter("cx");request.setAttribute("random","");go("/login.jsp",request,response);else{Stringsql1="select*fromalluserswhereusername='"+username+"'andpwd='"+password+"'";List<HashMap>userlist1=dao.select(sql1);if(userlist1.size()==1){request.getSession().setAttribute("username",userlist1.get(0).get("username"));request.getSession().setAttribute("cx",userlist1.get(0).get("cx"));gor("main.jsp",request,response);}else{request.setAttribute("error","");go("/login.jsp",request,response);}}}該系統(tǒng)采用了簡(jiǎn)潔優(yōu)雅的設(shè)計(jì)風(fēng)格,具有直觀的界面和合理的布局,使用戶能夠輕松上手。為了滿足用戶群體的多樣化需求,系統(tǒng)后端需要具備出色的性能。系統(tǒng)首頁(yè)界面如圖4.3所示。圖4.3系統(tǒng)首頁(yè)界面其中載入前臺(tái)頁(yè)面的主要代碼如下。<td><%@includefile=qttop.jsp%></td><td><%@includefile=qtleft.jsp%></td><td><%@includefile=qtdown.jsp%></td>在這個(gè)頁(yè)面上,員工可以進(jìn)行注冊(cè)。注冊(cè)和登錄是使用系統(tǒng)大多數(shù)功能的必要步驟。系統(tǒng)通過JavaScript驗(yàn)證輸入,確保用戶名不重復(fù),并在必要時(shí)彈出相應(yīng)的提示。員工注冊(cè)頁(yè)面規(guī)定,用戶需先完成注冊(cè)并登錄,方可使用系統(tǒng)的多項(xiàng)功能。同時(shí),系統(tǒng)會(huì)防止用戶名重復(fù)。系統(tǒng)采用了JavaScript驗(yàn)證,當(dāng)檢測(cè)到重復(fù)用戶名時(shí),會(huì)彈出提示信息。用戶注冊(cè)流程如圖4.4所示。圖4.4用戶注冊(cè)流程圖用戶注冊(cè)界面如圖4.5所示。圖4.5用戶注冊(cè)界面用戶注冊(cè)關(guān)鍵代碼如下所示。Connectionconn=this.getConn();try{Statementst=conn.createStatement();ResultSetrs=st.executeQuery("select*from"+tablename);ResultSetMetaDatarsmd=rs.getMetaData();inti=rsmd.getColumnCount();for(intj=1;j<=i;j++){if(rsmd.getColumnName(j).equals("id"))continue;if(rsmd.getColumnName(j).equals("ID"))continue;if(rsmd.getColumnName(j).equals("iD"))continue;if(rsmd.getColumnName(j).equals("Id"))continue;typemap.put(rsmd.getColumnName(j)+"...",rsmd.getColumnTypeName(j));collist.add(rsmd.getColumnName(j));sql+=rsmd.getColumnName(j)+",";}sql=sql.substring(0,sql.length().1);sql+=")values(";rs.close();st.close();}catch(SQLExceptione){e.printStackTrace();}員工工資、考勤過程中,首先使用getmap(id,"xinxi"),通過員工ID得到員工數(shù)據(jù),將員工數(shù)據(jù)賦值給員工工資、考勤,調(diào)用CommDAO的insert方法將工資、考勤數(shù)據(jù)插入工資、考勤表中,最后查看個(gè)人歷史員工工資、考勤記錄,可以銷毀歷史工資、考勤數(shù)據(jù)。員工考勤流程圖如圖4.6所示。圖4.6員工考勤流程圖員工考勤界面如圖4.7所示。圖4.7員工考勤界面員工考勤成功界面如圖4.8所示。圖4.8考勤成功界面考勤管理界面如圖4.9所示。圖4.9考勤管理界面員工工資界面如圖4.10所示。圖4.10員工工資界面工資管理界面如圖4.11所示。圖4.11工資管理界面員工考勤關(guān)鍵代碼如下所示。Connectionconn=this.getConn();try{Statementst=conn.createStatement();ResultSetrs=st.executeQuery("select*from"+tablename);ResultSetMetaDatarsmd=rs.getMetaData();inti=rsmd.getColumnCount();for(intj=1;j<=i;j++){if(rsmd.getColumnName(j).equals("id"))continue;if(rsmd.getColumnName(j).equals("ID"))continue;if(rsmd.getColumnName(j).equals("iD"))continue;if(rsmd.getColumnName(j).equals("Id"))continue;typemap.put(rsmd.getColumnName(j)+"...",rsmd.getColumnTypeName(j));collist.add(rsmd.getColumnName(j));sql+=rsmd.getColumnName(j)+",";}sql=sql.substring(0,sql.length().1);sql+=")values(";rs.close();st.close();}catch(SQLExceptione){e.printStackTrace();}員工加班、排班表過程中,首先使用getmap(id,xinxi),通過員工ID得到員工數(shù)據(jù),將員工數(shù)據(jù)賦值給員工加班、排班表,調(diào)用CommDAO的insert方法將加班、排班表數(shù)據(jù)插入加班、排班表表中,最后查看個(gè)人歷史員工加班、排班表記錄,可以銷毀歷史加班、排班表數(shù)據(jù)。員工加班流程圖如圖4.12所示。圖4.12員工加班流程圖員工加班界面如圖4.13所示。圖4.13員工加班界面加班管理界面如圖4.14所示。圖4.14加班管理界面員工排班表界面如圖4.15所示。圖4.15員工排班表界面排班表管理界面如圖4.16所示。圖4.16排班表管理界面員工加班關(guān)鍵代碼如下所示。Connectionconn=this.getConn();try{Statementst=conn.createStatement();ResultSetrs=st.executeQuery("select*from"+tablename);ResultSetMetaDatarsmd=rs.getMetaData();inti=rsmd.getColumnCount();for(intj=1;j<=i;j++){if(rsmd.getColumnName(j).equals("id"))continue;if(rsmd.getColumnName(j).equals("ID"))continue;if(rsmd.getColumnName(j).equals("iD"))continue;if(rsmd.getColumnName(j).equals("Id"))continue;typemap.put(rsmd.getColumnName(j)+"...",rsmd.getColumnTypeName(j));collist.add(rsmd.getColumnName(j));sql+=rsmd.getColumnName(j)+",";}sql=sql.substring(0,sql.length().1);sql+=")values(";rs.close();st.close();}catch(SQLExceptione){e.printStackTrace();}員工提交請(qǐng)假、出差,可以進(jìn)行新增、查看、修改以及刪除等相應(yīng)的請(qǐng)假、出差管理操作。當(dāng)點(diǎn)擊新增請(qǐng)假、出差的按鈕時(shí),在請(qǐng)假、出差添加界面進(jìn)行詳細(xì)信息的添加操作。當(dāng)點(diǎn)擊查看請(qǐng)假、出差超級(jí)鏈接時(shí),會(huì)顯示所選的請(qǐng)假、出差的信息,然后點(diǎn)擊返回再返回到其主頁(yè)面。請(qǐng)假提交界面如圖4.17所示。圖4.17請(qǐng)假提交界面請(qǐng)假管理界面如圖4.18所示。圖4.18請(qǐng)假管理界面出差提交界面如圖4.19所示。圖4.19出差提交界面出差管理界面如圖4.20所示。圖4.20出差管理界面請(qǐng)假添加關(guān)鍵代碼如下所示。Connectionconn=this.getConn();try{Statementst=conn.createStatement();ResultSetrs=st.executeQuery("select*from"+tablename);ResultSetMetaDatarsmd=rs.getMetaData();inti=rsmd.getColumnCount();for(intj=1;j<=i;j++){if(rsmd.getColumnName(j).equals("id"))continue;if(rsmd.getColumnName(j).equals("ID"))continue;if(rsmd.getColumnName(j).equals("iD"))continue;if(rsmd.getColumnName(j).equals("Id"))continue;typemap.put(rsmd.getColumnName(j)+"...",rsmd.getColumnTypeName(j));collist.add(rsmd.getColumnName(j));sql+=rsmd.getColumnName(j)+",";}sql=sql.substring(0,sql.length().1);sql+=")values(";rs.close();st.close();}catch(SQLExceptione){e.printStackTrace();}員工在yhzhgl查看員工信息,先使用sql語(yǔ)句查詢出所有員工表的數(shù)據(jù),然后調(diào)用PageManager.getPages(url,4,sql,request),返回一個(gè)ArrayList的對(duì)象,在for循環(huán)里,使用jsp得到每個(gè)ArrayList對(duì)象的數(shù)據(jù),在jsp頁(yè)面中解析ArrayList對(duì)象,得到其各個(gè)鍵值對(duì)的值。員工管理界面如圖4.21所示。圖4.21員工管理界面系統(tǒng)員工管理關(guān)鍵代碼如下所示。publicList<HashMap>select(Stringsql){System.out.println(sql);List<HashMap>list=newArrayList();try{Statementst=conn.createStatement();ResultSetrs=st.executeQuery(sql);ResultSetMetaDatarsmd=rs.getMetaData();while(rs.next()){HashMapmap=newHashMap();inti=rsmd.getColumnCount();for(intj=1;j<=i;j++){if(!rsmd.getColumnName(j).equals("ID")){Stringstr=rs.getString(j)==null?"":rs.getString(j);if(str.equals("null"))str="";map.put(rsmd.getColumnName(j),str);}elsemap.put("id",rs.getString(j));}list.add(map);}rs.close();st.close();}catch(SQLExceptione){//TODOAuto.generatedcatchblockif(sql.equals("showtables"))list=select("selecttable_namefromINFORMATION_SCHEMA.tables");elsee.printStackTrace();}returnlist;}用戶點(diǎn)擊登錄按鈕,填寫賬號(hào)信息完成登錄后,頁(yè)面內(nèi)容將切換顯示“某某用戶歡迎您”以及歷史訂單,同時(shí)提供注銷鏈接。用戶成功登錄后,個(gè)人信息會(huì)被保存到session作用域中。當(dāng)用戶點(diǎn)擊自己的用戶名,會(huì)跳轉(zhuǎn)至個(gè)人詳細(xì)信息頁(yè)面。后臺(tái)利用Freemarker從session作用域里提取用戶信息進(jìn)行動(dòng)態(tài)展示,像郵箱、電話號(hào)碼、用戶名等信息都會(huì)顯示出來(lái)。頁(yè)面上設(shè)有修改個(gè)人信息和修改密碼的按鈕。用戶可點(diǎn)擊修改密碼按鈕,調(diào)用UserController.java中的updatePassword()方法修改登錄密碼,保障賬號(hào)安全,防止賬號(hào)被盜用。若個(gè)人信息有變動(dòng),用戶還能點(diǎn)擊修改個(gè)人信息按鈕,通過updateUserInfo()方法對(duì)信息進(jìn)行相應(yīng)修改。密碼修改流程圖如圖4.22所示。圖4.22密碼修改流程圖密碼修改關(guān)鍵代碼如下所示。if(ac.equals("uppass")){Stringolduserpass=request.getParameter("ymm");Stringuserpass=request.getParameter("xmm1");Stringcopyuserpass=request.getParameter("xmm2");HashMapm=dao.getmaps("yonghuming",(String)request.getSession().getAttribute("username"),"yonghuzhuce");if(!(((String)m.get("mima")).equals(olduserpass))){request.setAttribute("error","");go("mod2.jsp",request,response);}else{//Stringid=(String)user.get("id");Stringsql="updateyonghuzhucesetmima='"+userpass+"'whereyonghuming='"+(String)request.getSession().getAttribute("username")+"'";mOper(sql);request.setAttribute("suc","");go("mod2.jsp",request,response);}}在添加部門信息時(shí),用戶輸入必填字段后,表現(xiàn)層的BumenController會(huì)接收傳來(lái)的部門信息參數(shù)。隨后,調(diào)用BumenController類的addBumen方法,該方法會(huì)依次經(jīng)過BumenService業(yè)務(wù)層和BumenMapper持久層進(jìn)行處理,從而完成部門信息的添加操作。此addBumen方法與用戶管理里的addUser方法類似,具備添加和修改雙重功能。當(dāng)需要修改部門信息時(shí),先選擇要修改的部門,接著調(diào)用BumenController控制器的editBumen方法。該方法會(huì)獲取該部門原有的信息并展示在頁(yè)面上,供領(lǐng)導(dǎo)對(duì)需修改的部門信息字段進(jìn)行調(diào)整。修改完成后,調(diào)用addBumen方法,再調(diào)用業(yè)務(wù)層的updateByKey方法,以此更新數(shù)據(jù)庫(kù)中部門信息表的數(shù)據(jù)。部門管理流程圖如圖4.23所示。圖4.23部門管理流程圖部門添加界面如圖4.24所示。圖4.24部門添加界面部門查詢界面如圖4.25所示。圖4.25部門查詢界面部門信息添加關(guān)鍵代碼如下所示。Connectionconn=this.getConn();try{Statementst=conn.createStatement();ResultSetrs=st.executeQuery("select*from"+tablename);ResultSetMetaDatarsmd=rs.getMetaData();inti=rsmd.getColumnCount();for(intj=1;j<=i;j++){if(rsmd.getColumnName(j).equals("id"))continue;if(rsmd.getColumnName(j).equals("ID"))continue;if(rsmd.getColumnName(j).equals("iD"))continue;if(rsmd.getColumnName(j).equals("Id"))continue;typemap.put(rsmd.getColumnName(j)+"...",rsmd.getColumnTypeName(j));collist.add(rsmd.getColumnName(j));sql+=rsmd.getColumnName(j)+",";}sql=sql.substring(0,sql.length().1);sql+=")values(";rs.close();st.close();}catch(SQLExceptione){e.printStackTrace();}用戶選擇員工添加打卡記錄,用戶在yuangong_list查看員工,點(diǎn)擊打卡,跳轉(zhuǎn)至daka_add.jsp,添加打卡記錄則將添加的打卡記錄數(shù)據(jù)封裝在HashMap中,然后調(diào)用CommDAO的insert方法將打卡記錄內(nèi)容插入打卡記錄表中。打卡管理流程圖如圖4.26所示。圖4.26打卡管理流程圖打卡添加界面如圖4.27所示。圖4.27打卡添加界面打卡查詢界面如圖4.28所示。圖4.28打卡查詢界面打卡信息添加關(guān)鍵代碼如下所示。Connectionconn=this.getConn();try{Statementst=conn.createStatement();ResultSetrs=st.executeQuery("select*from"+tablename);ResultSetMetaDatarsmd=rs.getMetaData();inti=rsmd.getColumnCount();for(intj=1;j<=i;j++){if(rsmd.getColumnName(j).equals("id"))continue;if(rsmd.getColumnName(j).equals("ID"))continue;if(rsmd.getColumnName(j).equals("iD"))continue;if(rsmd.getColumnName(j).equals("Id"))continue;typemap.put(rsmd.getColumnName(j)+"...",rsmd.getColumnTypeName(j));collist.add(rsmd.getColumnName(j));sql+=rsmd.getColumnName(j)+",";}sql=sql.substring(0,sql.length().1);sql+=")values(";rs.close();st.close();}catch(SQLExceptione){e.printStackTrace();}5系統(tǒng)測(cè)試在完成系統(tǒng)的詳細(xì)設(shè)計(jì)和編碼后,進(jìn)行測(cè)試是必要的步驟。測(cè)試的目的是確保系統(tǒng)在沒有錯(cuò)誤的情況下正常運(yùn)行,并通過重復(fù)測(cè)試和必要的修改,使軟件最終滿足用戶需求并實(shí)現(xiàn)預(yù)期功能。系統(tǒng)開發(fā)完成后,進(jìn)行測(cè)試是至關(guān)重要的。測(cè)試過程需要檢查系統(tǒng)是否能夠無(wú)錯(cuò)誤地運(yùn)行,并通過重復(fù)測(cè)試和必要的調(diào)整,確保軟件最終滿足用戶需求并實(shí)現(xiàn)預(yù)期功能。軟件測(cè)試的核心要點(diǎn)是針對(duì)各個(gè)功能模塊精心設(shè)計(jì)恰當(dāng)?shù)臏y(cè)試用例。這些測(cè)試用例能助力測(cè)試人員迅速判定代碼業(yè)務(wù)邏輯是否正確,進(jìn)而找出潛藏的代碼問題或邏輯漏洞。及時(shí)修復(fù)這些缺陷,能夠提高軟件的整體品質(zhì),保障用戶擁有優(yōu)質(zhì)的使用體驗(yàn)。注冊(cè)測(cè)試用例表此表主要用于測(cè)試系統(tǒng)新用戶注冊(cè)功能。通過設(shè)定不同輸入條件,對(duì)比預(yù)期輸出和實(shí)際情況,能檢測(cè)注冊(cè)功能是否正常及安全,及時(shí)發(fā)現(xiàn)并修復(fù)如信息校驗(yàn)、驗(yàn)證碼接收等方面的問題。

注冊(cè)測(cè)試用例表結(jié)構(gòu)如表5.1所示。表5.1注冊(cè)測(cè)試用例測(cè)試性能新用戶注冊(cè)用例目的測(cè)試系統(tǒng)新用戶個(gè)人信息注冊(cè)功能的功能和安全性前提條件進(jìn)入注冊(cè)頁(yè)面填寫個(gè)人信息輸入條件預(yù)期輸出實(shí)際情況各項(xiàng)基本信息輸入不完整不允許注冊(cè),無(wú)法點(diǎn)擊注冊(cè)按鈕一致填寫已存在的用戶名系統(tǒng)顯示出提示信息,要求重新填寫一致兩次密碼輸入不一致系統(tǒng)顯示出提示信息,要求重新填寫一致填寫的各項(xiàng)信息沒有符合提示的長(zhǎng)度和字符要求系統(tǒng)顯示出提示信息,要求重新填寫一致胡亂填寫電話號(hào)碼收不到驗(yàn)證碼一致填寫驗(yàn)證碼與收到的不一致系統(tǒng)顯示提示信息告知用戶驗(yàn)證碼錯(cuò)誤,不予注冊(cè)一致(2)登錄測(cè)試用例表此表主要用于測(cè)試用戶或操作員登錄系統(tǒng)時(shí)的功能是否正常。通過設(shè)定不同的輸入條件,如不填信息直接點(diǎn)擊登錄、填寫錯(cuò)誤賬號(hào)信息或驗(yàn)證碼等,對(duì)比預(yù)期輸出和實(shí)際情況,能有效檢測(cè)登錄系統(tǒng)在各種情況下的響應(yīng)是否符合設(shè)計(jì)要求,以便及時(shí)發(fā)現(xiàn)并修復(fù)登錄過程中可能出現(xiàn)的問題,保障系統(tǒng)登錄環(huán)節(jié)的可靠性和穩(wěn)定性。

登錄測(cè)試用例表結(jié)構(gòu)如表5.2所示。表5.2登錄測(cè)試用例測(cè)試性能用戶或操作員登錄系統(tǒng)用例目的測(cè)試用戶或操作員登錄系統(tǒng)時(shí)功能是否正常前提條件進(jìn)入用戶登錄頁(yè)面或操作員登錄頁(yè)面輸入條件預(yù)期輸出實(shí)際情況各項(xiàng)信息不予填寫,直接點(diǎn)擊登陸按鈕不允許登錄,提示填寫賬號(hào)相關(guān)信息一致填寫錯(cuò)誤的登錄名或密碼后點(diǎn)擊登錄系統(tǒng)提示用戶名或密碼錯(cuò)誤,要求重新填寫進(jìn)行登錄一致填寫與驗(yàn)證碼信息不一致的信息系統(tǒng)顯示出提示信息,表明驗(yàn)證碼錯(cuò)誤,要求重新填寫一致(3)員工工資、考勤測(cè)試用例表用于測(cè)試系統(tǒng)中員工工資與考勤操作功能的正確性。它設(shè)定了不同的輸入條件,像點(diǎn)擊相關(guān)按鈕、輸入必填項(xiàng)或不完整信息提交等,并明確了對(duì)應(yīng)的預(yù)期輸出。通過對(duì)比實(shí)際情況與預(yù)期結(jié)果,可判斷該功能在各種操作場(chǎng)景下能否正常運(yùn)行,幫助及時(shí)排查和修復(fù)功能漏洞,保障員工工資與考勤管理的準(zhǔn)確性和流暢性。員工工資、考勤測(cè)試用例表結(jié)構(gòu)如表5.3所示。表5.3員工工資、考勤測(cè)試用例測(cè)試性能用戶進(jìn)行員工工資、考勤的操作用例目的測(cè)試用戶進(jìn)行員工工資、考勤操作時(shí),該功能是否正常前提條件用戶進(jìn)入員工詳情頁(yè),該員工能夠被工資、考勤輸入條件預(yù)期輸出實(shí)際情況對(duì)著某員工點(diǎn)擊“工資、考勤”按鈕界面跳轉(zhuǎn)至工資、考勤界面一致在工資、考勤界面,輸入必填項(xiàng),點(diǎn)擊“提交”按鈕提示“工資、考勤成功”,并返回上一級(jí)界面一致當(dāng)處于工資與考勤界面,在填寫工資、考勤表單時(shí)若信息填寫不完整便點(diǎn)擊“提交”按鈕。提示“工資、考勤失敗”一致(4)員工管理測(cè)試用例表主要用于檢驗(yàn)系統(tǒng)中員工相關(guān)信息管理功能是否正常。通過設(shè)置不同的操作輸入條件,如錄入、修改、刪除員工信息等,并對(duì)應(yīng)明確預(yù)期輸出,將實(shí)際情況與之對(duì)比,可精準(zhǔn)判斷員工信息管理各環(huán)節(jié)的功能表現(xiàn),及時(shí)發(fā)現(xiàn)和解決潛在問題,確保員工信息管理功能穩(wěn)定可靠,為企業(yè)的人員信息管理提供有效支持。員工管理測(cè)試用例表結(jié)構(gòu)如表5.4所示。表5.4員工管理測(cè)試用例測(cè)試性能員工相關(guān)信息管理功能用例目的測(cè)試系統(tǒng)操作者對(duì)員工相關(guān)信息進(jìn)行管理的功能是否正常前提條件登錄系統(tǒng)進(jìn)入相關(guān)管理頁(yè)面輸入條件預(yù)期輸出實(shí)際情況進(jìn)入員工管理界面,點(diǎn)擊“錄入”按鈕,填寫所有必填項(xiàng),點(diǎn)擊提交提示“錄入成功”,并返回查詢界面一致進(jìn)入員工管理界面后,點(diǎn)擊“錄入”按鈕,若存在一個(gè)或多個(gè)必填項(xiàng)未填寫時(shí),便點(diǎn)擊“提交”。提示“錄入失敗”,請(qǐng)?zhí)顚懕靥铐?xiàng)一致打開員工管理界面,挑選一條需要修改的數(shù)據(jù),然后點(diǎn)擊這條數(shù)據(jù)后方的“修改”按鈕。節(jié)目跳轉(zhuǎn)至修改界面一致在修改界面,修改可修改項(xiàng)后,點(diǎn)擊“提交”按鈕提示“修改成功”,并返回查詢界面一致進(jìn)入員工管理界面,點(diǎn)擊某條數(shù)據(jù)后面的刪除按鈕系統(tǒng)彈出提示框詢問“是否要?jiǎng)h除該數(shù)據(jù)”,若用戶點(diǎn)擊“確定”按鈕,系統(tǒng)將成功刪除此條數(shù)據(jù),并給出“刪除成功”的提示信息,隨后自動(dòng)返回查詢界面。一致通過對(duì)該系統(tǒng)的測(cè)試可知,其能夠充分滿足用戶的日常使用需求,在功能項(xiàng)目和操作流程等方面,也可讓操作員順利完成對(duì)其他用戶的管理工作。不過,系統(tǒng)仍有諸多功能亟待添加,目前僅能滿足大部分需求。因此,還需進(jìn)一步完善系統(tǒng)功能,使其在使用過程中達(dá)到更理想的狀態(tài)。6總結(jié)與展望參與開發(fā)考勤管理系統(tǒng)不僅讓我有機(jī)會(huì)復(fù)習(xí)并應(yīng)用先前學(xué)到的專業(yè)知識(shí),還在實(shí)踐中深化了對(duì)這些知識(shí)的理解。在項(xiàng)目的規(guī)劃初期,我對(duì)數(shù)據(jù)庫(kù)架構(gòu)的設(shè)計(jì)原則及特性進(jìn)行了深入探討。同時(shí),針對(duì)小規(guī)模網(wǎng)絡(luò)平臺(tái)的需求,我也認(rèn)真分析了適合的服務(wù)器配置選項(xiàng)?;谏鲜鲅芯浚覍?duì)整個(gè)系統(tǒng)進(jìn)行了全面剖析,從而形成了一套切實(shí)可行的設(shè)計(jì)方案。目前,該系統(tǒng)已經(jīng)進(jìn)入了測(cè)試運(yùn)行階段,且收到了用戶積極的評(píng)價(jià),證明系統(tǒng)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論