計算機本科畢業論文-企業員工工資管理系統設計與實現_第1頁
計算機本科畢業論文-企業員工工資管理系統設計與實現_第2頁
計算機本科畢業論文-企業員工工資管理系統設計與實現_第3頁
計算機本科畢業論文-企業員工工資管理系統設計與實現_第4頁
計算機本科畢業論文-企業員工工資管理系統設計與實現_第5頁
已閱讀5頁,還剩34頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

摘要通過對企業對于員工工資方面的管理進行了調查和研究,發現企業如果使用傳統的人工文件管理,隨著企業規模的增大,企業員工的增多,耗費的人力和物力越來越大。因此有必要針對這一項進行處理,采取開發人事工資系統的方式去解決企業的工資管理部分的問題。本文闡述了人事工資系統的開發過程,并對所用技術做了說明。本課題使用B/S架構,采用Java語言、js語言、html和jsp等技術實現系統。采用當前主流的SSM框架搭建,整體系統后端的架構選擇了MVC架構搭建,使得項目可維護性和可擴展性比較高。人事工資系統可以使員工工作效率提高,對員工信息的維護和查找等操作提供了非常大的便利,降低紙質文件的使用率,節省企業的時間成本。關鍵詞:企業員工;工資管理;MySQL數據庫;SSM框架;系統設計

引言選題背景及意義勞動薪水是員工最有關的問題,與單位內部人員的穩定有關。為了招募人才來調整公司員工的薪水,這些業務的過程將會有許多細節,并將有許多細節會影響工資的會計和分配,并提高工作效率。例如,迅速找到員工薪水,計算的遺漏和準確的統計等。隨著信息技術的迅速發展,計算機在企業中的應用被用來管理公司的工資。例如大型和中型企業來說,采用計算機輔助的日常勞動管理,非常適用于現代企業制度的要求,促進企業的勞動管理效率,向科學化和標準化過渡。計算機對比傳統的管理一個麻煩、復雜工作量大的人工核算,另一個是非常詳細、準確、快速的計算,工資的支付、分銷、會計工作,一般不允許出錯,如果用人工來算計,發行每月工資表必須填補許多工作人員工資信息表將花費很多時間和精力,而在計算機上,不僅保證了工資支付準確迅速,輸出,還可以用來各自信息進行統計。計算機被用來核算所有與薪酬有關的信息,并向金融部門提供其他會計和財務處理,這些是手工沒有的優勢。例如:恢復速度快、容易獲得、高可靠性、高存儲能力、長壽命和低成本。這些好處可以大大提高工作人員薪酬管理的效率,以及科學管理的正式化以及和全球計算機水平接軌。隨著社會的快速發展,計算機已經是企業必不可少的使用工具。企業的規模越來越大,員工數量的增加加劇了企業在工資管理方面的管理成本。企業之前大多采用人工管理的方式去管理員工的工資信息,這種管理方式存在著很多的缺點,首先企業員工數量的增加代表著需要更多的人手去管理工資信息,造成了資源上的浪費,然后使用人工管理的方式并不安全,可能會造成信息的丟失或泄露。時間長的話會有大量的文件產生,對于后續的查找、更新和維護都會造成非常大的麻煩。作為計算機應用的一部分,人事工資系統的優點非常明顯,檢索迅速、保密性好、查找方便、成本低等優點。它比企業使用人工管理要方便的多,而且基本不會出錯。使用人事工資系統可以大大的提高企業對于工資管理部分的業務的效率。現在的社會是競爭的社會,企業的發展需要不斷地競爭,企業必須將有限的資源用到更需要的地方,提高資源的利用率,人事工資系統非常符合企業的需求,也能幫助企業管理更正軌,更科學化。選題研究內容本課題主要講述了人事工資系統設計與實現的過程。人事工資系統主要服務于企業的財務部門。人事工資系統的用戶一般分為兩種用戶,一類用戶時普通用戶,也就是企業的普通員工,企業的普通員工只能管理本人的信息。另一類用戶是管理員用戶,也就是企業的財務負責人之類的身份。人事工資系統的權限等級分為三種,分別是普通用戶、管理員和超級管理員。普通用戶只能管理個人的各項信息,管理員可以管理普通員工的基本信息和工資信息,超級管理員的作用是用來管理其他管理員的信息。人事工資系統并不是只有管理工資信息的功能,對公司的部門、員工的出勤等情況也要有相應的管理功能。系統開發環境與技術JavaJava是一門當下非常熱門的編程語言,java語言吸收了很多語言的優勢,拋棄了這些語言的劣勢。比如說C++語言,java拋棄了C++里面非常復雜的指針概念,去除掉了C++的多繼承和自動強制類型轉換的特性,最關鍵的是java使用了自動管理內存的機制,java中的內存不需要手動回收,而是由虛擬機自動回收,大大的減輕程序員的壓力,使程序員將精力更多的放在開發上。MySqlMySql是一款廣為人知的數據庫系統,跟Oracle數據庫、DB2數據庫比起來,Mysql數據庫的熱度也絲毫不落下風,MySql數據庫是開源的數據庫,非常適合個人的使用,大大降低了個人的使用成本。MySql是一款關系型數據庫管理系統。MySql配件要求不高,運行速度非常快,所以說MySql數據庫在全世界都是一款非常熱門的數據庫。JavaScriptJavaScript是一門輕量級的編程語言,它常常被用于編寫web頁面的腳本,它可以將網頁變成動態網頁。JavaScript可以響應瀏覽器的事件,達到實時交互的功能。需要注意的一點,JavaScript和Java并不是同一門編程語言,它們只是名字相似,名字相似是因為JavaScript的設計者是收到了Java語言的啟發才開始設計的。SSM框架SSM框架是由Spring、SpringMVC、Mybatis三個框架組成的,因為這三個框架常常放到一起結合起來使用,所以并稱為SSM。這三個框架組合起來是標準的MVC架構模式,MVC模式將整個項目劃分為了四層,分別是controller層、service層、dao層和表現層。我們使用SpringMVC去處理前端頁面提交過來的請求,管理視圖的跳轉。Spring主要用來管理對象的生命周期,MyBatis則作為數據對象的持久化引擎。系統分析可行性分析技術可行性人事工資系統的編寫使用的語言基本上是Java語言,基于win10操作系統環境下運行。Java語言一直是軟件編程的主力語言,適用范圍非常廣泛。數據方面通過使用MySql數據庫完成對數據的存儲功能,MySql數據庫作為開源的數據庫,應用非常廣泛,這兩項技術是每個大學計算機相關專業的學生都會學習的,使用這兩項技術進行開發是完全沒有問題的。本項目是一個小型項目,系統本身體積小,運行環境要求較低,而現如今計算機的硬件和軟件一直在飛速的發展,電腦的硬件和軟件完全可以滿足本系統的需求。系統使用可視化界面進行操作,用戶只需要通過鼠標點擊和鍵盤輸入就可以使用本系統,降低操作的復雜性,極易上手使用。系統的開發在技術上是可行的。經濟可行性系統開發過程中投入的成本主要分為兩種,一種是購買并安裝軟硬件及有關設備的費用,另一種則是系統的開發費用。系統的開發是由一位人員獨自開發完成,開發費用較低。系統的安裝、運行和維護的工作也都由一人完成,成本可以忽略不計,系統的操作采用可視化界面,操作簡單,通過簡單的指導便可投入使用。采用人事工資系統,首先可以給企業節省大量的人力和物力上的開支,降低企業的資源消耗,從經濟上來說,系統的開發是可行的。需求分析本系統從一開始開發的主要目標就是要使企業員工工資的管理實現計算機的智能化管理,這使管理人員可以更方便地管理公司每位員工的不同薪資條件的發布以及公司薪資的統計信息,從而使公司能夠利用日新月異的計算機技術來實現不斷增長的經濟效益。在此基礎上提供對單位財務部門發布的薪資的集中管理。人事工資系統首先要完成的功能是對于企業員工的基礎信息功能。只要是公司的員工,都需要對員工的基本個人信息做好存儲,以便員工本人和管理員的查閱和了解,對員工基本信息管理員和員工自身都有修改的權限,但是權限等級肯定不一樣,如工號、部門等信息只能由管理員進行改動,而員工則沒有權限,員工只能更改個人的電話或住址等信息。人事工資系統的核心功能對企業的員工的工資信息進行管理,管理員要首先確定好工資計算的方式,按照工資種類的不同,對每個員工進行工資項目的分析,保證工資發放的公平、公正性。工資種類可分為基本工資,獎金,獎懲工資,五險一金,應交所得稅等項目,將數據錄入之后通過確定好的計算方式計算出實際工資發放給員工,在數據庫建立員工工資信息表方便數據的添加、修改和查找。數據庫需要將員工的個人信息以及工資信息分類存儲在數據庫中,在數據建立相對應的表和字段存儲數據信息。系統設計系統功能模塊設計本系統設計是在win10環境下進行運行,操作簡單,界面美觀。首先明確本系統的主要核心功能是對企業的工資管理,控制工資的發放,生成員工個人工資單。在此功能基礎上完善這個項目。在用戶登錄時使用用戶名加密碼的安全機制,保證系統的信息安全,系統分為兩類用戶,分別擁有不同的權限,企業的普通員工登錄之后會跳轉到屬于員工的用戶界面,這時員工只能查看到自己的個人信息和工資信息,員工可以對自己的個人信息進行修改,但如工號之類的公司信息不能修改。當企業的管理員登錄之后,管理員可以對所有人的信息進行管理。人事工資系統通過功能大致可分為以下模塊:(1)員工個人信息模塊:存儲著員工的用戶名和電話等個人基本信息。企業員工登錄之后只會顯示自己的個人信息。企業的管理員登錄之后會顯示所有員工的個人信息。(2)部門模塊:部門模塊中存放的是部門信息,添加員工時會根據已有的部門信息為員工分配部門。(3)工資管理模塊:工資管理模塊存儲著員工的工資信息,管理員對員工的工資信息進行輸入,如基本工資、五險一金、請假、遲到等信息,系統通過將管理員輸入的信息匯總起來,以此計算出員工每個月的實發工資。(4)出勤信息管理模塊:這個模塊存放著企業的員工每個月的出勤情況,管理員會根據每個員工每個月的出勤情況進行工資信息的發放。圖4.1系統流程圖圖4.2系統功能模塊圖數據庫設計admin表用于存儲管理員的信息表4.1管理員表字段名稱數據類型長度允許空字段描述Idvarchar64否唯一標識namevarchar20否用戶名passwordvarchar20否密碼phonevarchar20否手機號emailvarchar20否郵箱department表用于存儲部門的信息表4.2部門信息表字段名稱數據類型長度允許空字段描述idvarchar64否唯一標識namevarchar20否部門名稱employ表用于存儲員工的個人信息表4.3員工信息表字段名稱數據類型長度允許空字段描述idvarchar64否唯一標識novarchar64否員工號namevarchar20否用戶名passwordvarchar20否密碼phonevarchar20否手機號emailvarchar20否郵箱birthdayvarchar20是生日sexvarchar10否性別Departmentidvarchar50否部門IDdepartmentvarchar50否部門名稱Positionvarchar50否職位Professionvarchar20是學歷Addressvarchar100是地址salary表用于存儲員工的工資信息表4.4工資信息表字段名稱數據類型長度允許空字段描述idvarchar64否唯一標識novarchar64否員工號namevarchar20是用戶名departmentvarchar50是部門名稱monthint11是月份standard_salaryint11是標準工資lateint11是遲到次數leavesint11是請假次數overtimeint11是加班次數taxesint11是代扣稅annualint11是獎金real_salaryint11否真實工資pushtimevarchar50否更新時間attendance用于存儲員工的出勤信息表4.5出勤信息表字段名稱數據類型長度允許空字段描述Idvarchar64否唯一標識NoVarchar20否工號nameVarchar20否用戶名latevarchar20是遲到次數leavesvarchar20是請假overtimevarchar20是加班時間monthvarchar20否月份系統實現數據庫連接在項目中使用了MyBatis框架來對數據庫進行操作,想要使用MyBatis框架首先要在項目的pom文件中導入MyBatis框架的依賴。<!--mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.1</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.0</version></dependency><!--c3p0鏈接池--><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version></version></dependency><!--Mysql數據庫驅動--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>6.0.6</version></dependency><dependency><groupId>org.jetbrains</groupId><artifactId>annotations-java5</artifactId><version>RELEASE</version></dependency>創建MySQL.properties配置文件,在配置文件中添加數據庫的驅動以及數據庫密碼和連接IPjdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/salary?characterEncoding=utf8&useSSL=falsejdbc.username=rootjdbc.password=root然后創建MyBatis的配置文件mybatis-cfg.xml,因為使用了Spring框架,所以將mybatis的大部分配置使用SpringIOC進行,配置在spring的配置文件中,在mybatis的配置文件中填寫類的別名的配置。<typeAliases><packagename="com.an.po"/></typeAliases>在Spring的配置文件中配置數據庫連接池。<!--加載數據庫配置文件--><context:property-placeholderlocation="classpath:perties"/><!--配置數據源c3p0l連接池--><beanid="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource"><propertyname="driverClass"value="${jdbc.driver}"/><propertyname="jdbcUrl"value="${jdbc.url}"/><propertyname="user"value="${jdbc.username}"/><propertyname="password"value="${jdbc.password}"/></bean><!--配置SqlSessionFactory--><beanid="sessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"><!--加載mybatis配置文件--><propertyname="configLocation"value="classpath:mybatis/mybatis.cfg.xml"/><!--數據源--><propertyname="dataSource"ref="dataSource"/></bean>在IDEA中maven默認編譯的時候只搬運src/main/java里面的java文件到target,其他文件會被忽略。這時,我們Mybatis的Mapper.xml文件就不能被加載進去,也就是不能映射成功。<resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><resource><directory>${basedir}/src/main/resources</directory></resource></resources>創建一個mapper映射文件,綁定對應的mapper文件,直接在mapper.xml下使用例如select標簽下直接編寫SQL語句。<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-////DTDMapper3.0//EN""/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.an.mapper.AdminMapper"><\mapper>用戶登錄在前端的登錄頁面輸入賬號和密碼后,在controller里面對應的方法會獲取到前端頁面提交過來的值,后端首先會將獲取到的數據在數據庫做一個查詢操作,如果查詢到用戶,代表登錄成功,會直接跳轉到主界面,反之則登錄失敗,前端頁面給出不成功原因。@RequestMapping("/loginSubmit")publicModelAndViewloginSubmit(Stringname,Stringpassword,HttpServletRequestrequest)throwsException{HttpSessionsession=request.getSession();ModelAndViewmodelAndView=newModelAndView();Adminlist=adminService.queryByOne(name,password);if(list==null){request.setAttribute("msg","對不起,用戶不存在,請重試!");modelAndView.setViewName("common/adminLogin");returnmodelAndView;}else{Adminadmin=list;session.setAttribute("id",admin.getId());session.setAttribute("name",name);session.setAttribute("password",password);modelAndView.setViewName("index2");returnmodelAndView;}}圖5.1登陸失敗案例員工信息員工信息模塊有兩個界面,當用戶類型為管理員時,會將所有員工的信息打包放到list集合里面去,然后通過model.addAttribute()方法,將信息傳遞給前端頁面,前端將數據獲取到并在頁面上的表格順序存放。當用戶類型為用戶時,會執行另一個獲取員工信息的方法,這個方法是通過員工登陸時輸入的賬號和密碼獲取到數據庫中對應的信息,然后將數據封裝,發送給前端讓前端獲取。在管理員查看員工個人信息時,為了避免員工數量過多導致查詢上的不便,所以加入了兩個搜索按鈕,分別可以對用戶名和部門兩方面進行查詢,輸入對應的篩選條件點擊搜索,便可以篩選出想要的信息。圖5.2員工個人信息管理圖5.3管理員管理員工信息員工信息添加、修改和刪除員工的信息只能由管理員進行添加,如果員工可以自己注冊的話那么可能不能保證全是本公司的員工,所以員工沒有注冊的功能。管理員打開添加員工信息的頁面,管理員設置好基本信息后,然后點擊提交,后端的controller會判斷工號是否重復,因為員工的工號是唯一的,不能重復。如果不重復并且輸入的個人信息格式上沒有問題的話會彈出添加成功的模態框。圖5.4員工添加頁面如果員工的個人信息有錯誤的話管理員或者員工都可以點擊個人信息最后的修改按鈕,跳轉到修改頁面每個輸入框會首先獲取到員工的個人信息,然后管理員和員工都可以對其中的個人基本信息進行修改,但是工號的話員工不能進行修改。@RequestMapping("/employEditSubmit")publicStringemployEditSubmit(Employemploy,HttpServletRequestrequest){Departmentd=departmentService.queryById(employ.getDepartmentid());employ.setDepartment(d.getName());if(employService.update(employ)>0){request.setAttribute("msg","修改成功!");return"employ/edit";}else{request.setAttribute("msg","修改失敗!");return"employ/edit";}}圖5.5員工信息修改頁面刪除員工信息,只需要點擊員工個人基本信息欄的最后一個刪除按鈕,當點擊刪除會詢問是否要刪除,點擊確定之后,前端會將要刪除的信息的id返回給后端,后端controller會通過信息的id來確定到底刪除哪一條數據,當刪除成功后會重新返回并加載員工個人信息界面,此時已經發現信息已經被刪除。functiondel(obj,id){layer.confirm('確認要刪除嗎?',function(index){varsuperid=id;$.ajax({type:"post",url:"<%=path%>/employ/employDel/"+superid,contentType:"application/json;charset=utf-8",success:function(data){$(obj).parents("tr").remove();layer.msg('已刪除!',{icon:1,time:1000});location.reload();},error:function(data){console.log(data.msg);},});}@RequestMapping("/employDel/{id}")publicModelAndViewemployDel(@PathVariable("id")Stringid,HttpServletRequestreuqest,Modelmodel){ModelAndViewmv=newModelAndView();employService.deleteById(id);mv.setViewName("employ/index");returnmv;}圖5.6刪除提示彈窗工資信息查看、添加、修改和刪除管理員點擊工資管理模塊時,后臺會將所有員工的工資信息放到list集合中返回給前端頁面,前端會將所有的信息展示,管理員可以根據工號、部門和用戶名去進行具體信息的查看,也可以根據月份去查詢某一個時間范圍內的所有工資信息,當使用搜索按鈕時后端會根據管理員輸入的篩選條件對數據庫的所有工資信息進行篩選,將符合條件的信息返回。@RequestMapping("/salaryIndex")publicStringsalaryIndex(HttpServletRequestrequest,Modelmodel){HttpSessionsession=request.getSession();if(session.getAttribute("name")==null||session.getAttribute("password")==null){session.setAttribute("msg","對不起,請登錄!");return"common/adminLogin";}Stringname=session.getAttribute("name").toString();Stringpassword=session.getAttribute("password").toString();List<Salary>salaryList=salaryService.queryByAll();inttotal=salaryList.size();model.addAttribute("salaryList",salaryList);model.addAttribute("total",total);model.addAttribute("name",name);model.addAttribute("password",password);return"salary/index";}圖5.7工資信息頁面員工點擊工資管理模塊時首先前端提交請求時會將員工的工號發送給后臺,后端會獲取員工的工號,然后通過員工的工號查詢數據庫中屬于該員工的工資信息,通過將數據打包放進list集合的方式讓前端獲取并展示。員工對工資信息只有查看的功能,并不能對工資信息進行修改。員工可以通過輸入起始月和結束月來查找某一時間范圍內的工資數據。@RequestMapping("/salaryIndex1")publicStringsalaryIndex1(HttpServletRequestrequest,Modelmodel)throwsException{HttpSessionsession=request.getSession();if(session.getAttribute("name")==null||session.getAttribute("password")==null){session.setAttribute("msg","對不起,請登錄!");return"common/adminLogin";}Stringname=session.getAttribute("name").toString();Stringpassword=session.getAttribute("password").toString();Stringno=session.getAttribute("no").toString();List<Salary>salaryList=salaryService.queryByNo(no);inttotal=salaryList.size();model.addAttribute("salaryList",salaryList);model.addAttribute("total",total);model.addAttribute("name",name);model.addAttribute("password",password);return"salary/index1";}圖5.8員工個人工資信息頁面管理員點擊添加按鈕跳轉到添加頁面,管理員要選擇添加哪一個部門的哪一個員工,輸入各項的工資條目,系統會在后端根據確定好的計算公式計算出該員工這個月的實際工資。然后存入數據庫中。@RequestMapping("/salaryAddSub")publicStringsalaryAddSub(Salarysalary,HttpServletRequestrequest){HttpSessionsession=request.getSession();if(session.getAttribute("name")==null||session.getAttribute("id")==null){session.setAttribute("msg","對不起,請登錄!");return"common/adminLogin";}if(salaryService.selectByMonth(salary.getNo(),String.valueOf(salary.getMonth()),salary.getPushtime())!=null){request.setAttribute("msg","該月工資信息已存在");return"salary/edit";}Employe=employService.queryByNo(salary.getNo());salary.setName(e.getName());inta=salary.getLate();intb=salary.getLeaves();intc=salary.getOvertime();intreal=salary.getStandardSalary()+a+b+c;salary.setRealSalary(real);if(salaryService.addSelect(salary)>0){request.setAttribute("msg","添加成功!");return"salary/add";}else{request.setAttribute("msg","添加失敗!");return"salary/add";}}圖5.9工資信息添加頁面管理員點擊工資條最后的修改按鈕,會向后端提交工資條的id,后端根據id將工資條的各項信息返回給修改頁面,修改頁面首先會顯示原信息的所有數據,然后管理員可以對這些數據做出更改,點擊提交之后就可以更新數據庫的內容。@RequestMapping("/salaryEdit/{id}")publicModelAndViewsalaryEdit(@PathVariable("id")Stringid,Modelmodel)throwsException{ModelAndViewmv=newModelAndView();Salarysalary=salaryService.queryById(id);List<Department>departmentList=departmentService.queryByAll();List<Employ>employList=employService.queryByAll();List<Salary>monthList=newArrayList<Salary>();for(inti=1;i<13;i++){Salarysalary1=newSalary();salary1.setMonth(i);monthList.add(salary1);}model.addAttribute("employList",employList);model.addAttribute("monthList",monthList);model.addAttribute("departmentList",departmentList);model.addAttribute("salary",salary);mv.setViewName("salary/edit");returnmv;}圖5.10工資信息修改頁面管理員點擊工資信息條的最后的刪除按鈕時,會彈出一個彈窗詢問是否要刪除,點擊確定之后,前端會將要刪除的信息的id返回給后端,后端controller會通過信息的id來確定到底刪除哪一條數據,當刪除成功后會重新返回并重新加載員工工資信息界面,之前選擇刪除的數據已經刪除。functiondel(obj,id){layer.confirm('確認要刪除嗎?',function(index){varsuperid=id;$.ajax({type:"post",url:"<%=path%>/salary/salaryDel/"+superid,contentType:"application/json;charset=utf-8",success:function(data){$(obj).parents("tr").remove();layer.msg('已刪除!',{icon:1,time:1000});location.reload();},error:function(data){console.log(data.msg);},});});圖5.11工資信息刪除提示@RequestMapping("/salaryDel/{id}")publicModelAndViewsalaryDel(@PathVariable("id")Stringid,HttpServletRequestreuqest,Modelmodel)throwsException{ModelAndViewmv=newModelAndView();salaryService.deleteById(id);mv.setViewName("salary/index");returnmv;}部門查看、修改、添加和刪除當管理員在主界面點擊部門信息后端會將所有的部門信息用List集合封裝起來,使用Model將其傳輸到前端頁面,前端獲取之后展示。部分代碼:@RequestMapping("/departmentIndex")publicStringdepartmentIndex(HttpServletRequestrequest,Modelmodel)throwsException{HttpSessionsession=request.getSession();if(session.getAttribute("name")==null||session.getAttribute("password")==null){session.setAttribute("msg","對不起,請登錄!");return"common/adminLogin";}Stringname=session.getAttribute("name").toString();Stringpassword=session.getAttribute("password").toString();List<Department>departmentList=departmentService.queryByAll();inttotal=departmentList.size();model.addAttribute("departmentList",departmentList);model.addAttribute("total",total);model.addAttribute("name",name);model.addAttribute("password",password);return"department/index";}<c:forEachitems="${departmentList}"var="c"varStatus="status"><trclass="text-c"><td><inputtype="checkbox"value="1"name=""></td><td>${}</td><tdclass="td-manage"><astyle="text-decoration:none"class="ml-5"onClick="edit('編輯',${c.id})"href="javascript:;"title="編輯"><iclass="Hui-iconfont"></i></a><atitle="刪除"href="javascript:;"onclick="del(this,${c.id})"class="ml-5"style="text-decoration:none"><iclass="Hui-iconfont"></i></a></td></tr></c:forEach>圖5.12部門信息頁面管理員點擊部門名稱后的操作的修改按鈕,后端會將要修改的部門的id發送到后端,后端接收到部門的ID之后會通過ID查詢數據庫中的信息,將信息獲取回來后會一并打包發送給前端頁面,然后視圖會跳轉到修改頁面,在修改頁面管理員可以直接對部門信息進行修改,當后端成功執行更新數據庫的操作之后,會返回給前端一個提示,此時代表后端已對對數據庫的數據進行更新,在前端頁面也會馬上看到修改后的信息。部分代碼:@RequestMapping("/departmentEdit/{id}")publicModelAndViewdepartmentEdit(@PathVariable("id")Stringid,Modelmodel)throwsException{ModelAndViewmv=newModelAndView();Departmentdepartment=departmentService.queryById(id);model.addAttribute("department",department);mv.setViewName("department/edit");returnmv;}@RequestMapping("/departmentEditSubmit")publicStringdepartmentEditSubmit(Departmentdepartment,HttpServletRequestrequest){if(departmentService.selectByName(department.getName())!=null){request.setAttribute("msg","部門名重復,請更改!");return"department/edit";}if(departmentService.update(department)>0){request.setAttribute("msg","修改成功!");return"department/edit";}else{request.setAttribute("msg","修改失敗!");return"department/edit";}}圖5.13部門添加頁面管理員在添加頁面輸入部門信息點擊提交后,后臺根據提交的信息判斷是否在數據庫中有相同的數據,判斷無誤后將信息添加到數據庫中,返回給前端成功的提示,隨之前端頁面刷新。部分代碼:@RequestMapping("/departmentAddSub")publicStringdepartmentAddSub(Departmentdepartment,HttpServletRequestrequest){HttpSessionsession=request.getSession();if(departmentService.selectByName(department.getName())!=null){request.setAttribute("msg","部門名重復,請更改!");return"department/add";}if(session.getAttribute("name")==null||session.getAttribute("id")==null){session.setAttribute("msg","對不起,請登錄!");return"common/adminLogin";}if(departmentService.addSelect(department)>0){request.setAttribute("msg","添加成功!");return"department/add";}else{request.setAttribute("msg","添加失敗!");return"department/add";}}圖5.14添加成功提示管理員點擊部門信息的最后的刪除按鈕時,會彈出一個彈窗詢問是否要刪除,點擊確定之后,前端會將要刪除的信息的id返回給后端,后端controller會通過信息的id來確定到底刪除哪一條數據,當刪除成功后會重新返回并重新加載部門信息界面,之前選擇刪除的數據已經刪除。@RequestMapping("/departmentDel/{id}")publicModelAndViewdepartmentDel(@PathVariable("id")Stringid,HttpServletRequestreuqest,Modelmodel)throwsException{ModelAndViewmv=newModelAndView();departmentService.deleteById(id);mv.setViewName("department/index");returnmv;}圖5.15刪除彈窗頁面管理員列表點擊管理員列表按鈕,會展示當前存在的所有的管理員的賬號信息,但是管理員只能對自己的信息進行修改,對其他管理員的信息則沒有修改的權限。@RequestMapping("/adminIndex")publicStringadminIndex(HttpServletRequestrequest,Modelmodel)throwsException{HttpSessionsession=request.getSession();if(session.getAttribute("name")==null||session.getAttribute("password")==null){session.setAttribute("msg","對不起,請登錄!");return"common/adminLogin";}Stringname=session.getAttribute("name").toString();Stringpassword=session.getAttribute("password").toString();List<Admin>adminList=adminService.queryByAll();inttotal=adminList.size();model.addAttribute("adminList",adminList);model.addAttribute("total",total);model.addAttribute("name",name);model.addAttribute("password",password);return"admin/index";}圖5.16管理員列表圖管理員可以自由添加其他管理員,但是刪除的操作只能由超級管理員admin來操作,admin擁有最高的權限。在添加新的管理員的時候,后臺會校驗輸入的管理員用戶名,如果數據庫有相同的數據,那么添加就會失敗,并返回給前端提示。反之則會返回成功的提示。圖5.17管理員添加提示圖在項目規劃中,管理員信息的修改功能只能針對自己的信息進行修改,在前端利用<c:if>標簽去實現這個功能5,當管理員點擊管理員列表時,前端展示管理員數據的時候會對管理員信息去做一個判斷,判斷當前是哪一位管理員查看,將其他管理員信息的修改選項隱藏起來,只在本人的信息后顯示編輯按鈕,以此實現預想的功能。<c:iftest="${==name}"><astyle="text-decoration:none"class="ml-5"onClick="edit('編輯',${c.id})"href="javascript:;"title="編輯"><iclass="Hui-iconfont">編輯</i></a></c:if><c:iftest="${name=='admin'}"><c:iftest="${!='admin'}">//admin為超級管理員<astyle="text-decoration:none"class="ml-5"onClick="del('刪除',${c.id})"href="javascript:;"title="刪除"><iclass="Hui-iconfont">刪除</i></a></c:if></c:if>圖5.18管理員展示修改按鈕出勤信息列表出勤信息列表展示的是員工每個月的出勤情況,員工每個月的出勤情況由管理員輸入,員工只有查看的權限。員工出勤的信息決定了員工每個月的工資。圖5.19出勤信息列表圖在頁面上可以輸入篩選條件對數據進行篩選,查找想要的數據,后臺提供了兩種搜索方式,分別通過工號搜索和時間搜索。在信息添加方面,當信息輸入完成點擊提交后,后臺首先會獲取提交信息中的員工號和月份,后臺根據這兩項信息在數據庫中進行查找,如果查找不到數據說明該月該名員工的出勤信息還沒有被記錄,那么添加操作就會被執行,執行成功后返回前端成功的提示。如果在數據庫中查找到了數據,則會向前端發送提示說明數據已存在。圖5.20出勤信息添加失敗圖if(attendanceService.selectByNM(attendance.getNo(),attendance.getMonth())!=null){request.setAttribute("msg","本月數據已存在");return"attendance/add";}if(attendanceService.insert(attendance)>0){request.setAttribute("msg","添加成功");return"attendance/add";}else{request.setAttribute("msg","添加失敗");return"attendance/add";}點擊編輯也就是修改按鈕后,前臺會將數據的id一并發送給后臺,后臺獲取到數據庫中對應的數據,并將數據打包放至list集合中,將list集合放到model中,跳轉到修改頁面,修改頁面會獲取到后臺傳輸過來的數據并展示,管理員可以直接對其修改。圖5.21出勤信息修改頁面系統測試要測試系統的登錄功能,請首先輸入正確的常規用戶名和密碼以正常登錄。成功之后測試輸入錯誤的用戶名和密碼,則后端將提示前端用戶名或密碼不正確。表6.1登錄測試測試用例1測試模塊登錄模塊測試數據admin123123admin123321預期結果登錄成功彈出登錄失敗提示實際結果登錄成功登錄失敗結論登錄功能正常登錄功能正常對員工的個人信息部分進行測試,查看當管理員登錄之后能完整的顯示出員工的所有信息,查看數據庫對比沒有遺漏,管理員能對信息進行修改,修改后經過查看數據庫,發現對應的數據已經將修改。管理員進入添加頁面之后,輸入完信息,點擊提交,添加的信息如果符合要求,后臺執行完方法將會把數據添加到數據庫中,并返回提示。管理員點擊提交時,比較主要的信息都要求輸入信息,如工號、姓名和密碼等,如果不輸入值會在輸入框的后半部分提示請輸入。如果工號輸入的值是已經注冊過的工號,后臺會返回一個工號重復,請修改的彈窗。當普通員工登錄后能獲取到自己的個人信息,并且可以對個人信息進行修改,提交后數據庫的數據也會隨之更新,員工不能修改自己的工號。表6.2添加測試測試用例2測試模塊員工信息添加模塊測試數據工號:123123(已注冊)工號:111333(未注冊)預期結果提示工號已注冊提示添加成功實際結果提示工號已注冊提示添加成功結論添加功能正常添加功能正常表6.3修改模塊測試測試用例3測試模塊員工信息修改模塊測試數據admin預期結果修改成功實際結果修改成功結論修改模塊功能正常部門信息部分,當管理員點擊部門管理按鈕,能正確顯示出部門信息頁面。當添加新的部門信息時,如果部門名稱是已經存在的部門則會提示部門名稱重復,請重新輸入。點擊修改時能獲取到現有的信息,對信息進行修改,點擊提交后數據庫信息隨之更新,頁面重新刷新。表6.4部門添加和修改測試表測試用例4測試模塊部門信息添加模塊部門信息修改模塊測試數據保安部研發部改為開發部預期結果提示添加成功提示修改成功實際結果提示添加成功提示修改成功結論部門添加功能正常部門修改功能正常工資管理部分功能,在工資信息模塊的添加頁面上輸入數據,當輸入數據無誤后點擊提交會彈出添加成功的提示。如果輸入的信息經過后臺校驗發現是重復數據則會彈出數據重復的提示。表6.5工資信息添加測試測試用例5測試模塊工資信息添加模塊測試數據部門:研發部員工姓名:admin月份:1月份基本工資:3000遲到扣款:100請假扣款:0加班費:900代扣稅:300獎金:0預期結果添加成功實際結果添加成功結論添加功能正常表6.6工資信息修改測試測試用例6測試模塊工資信息修改模塊測試數據部門:研發部員工姓名:admin月份:1月份基本工資:6000遲到扣款:100請假扣款:0加班費:2000代扣稅:600獎金:0預期結果修改成功實際結果修改成

溫馨提示

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

評論

0/150

提交評論