基于Qt的企業(yè)人事管理系統(tǒng)課程_第1頁
基于Qt的企業(yè)人事管理系統(tǒng)課程_第2頁
基于Qt的企業(yè)人事管理系統(tǒng)課程_第3頁
基于Qt的企業(yè)人事管理系統(tǒng)課程_第4頁
基于Qt的企業(yè)人事管理系統(tǒng)課程_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于Qt的企業(yè)人事管理系統(tǒng)摘要:根據(jù)實際的企業(yè)人事需求,設(shè)計了基于Qt Creator開發(fā)環(huán)境下的人事管理系統(tǒng)(MIS),前臺采用的是一個跨平臺的VC+圖形界面程序編輯器Qt,后臺使用的是SQLite數(shù)據(jù)庫。本系統(tǒng)能實現(xiàn)管理員對本身密碼的修改,員工入職、離職的辦理,按條件查找員工,顯示、更改所有員工的基本信息、工作信息,新建、更改、刪除考評、培訓(xùn)、獎懲記錄,并能夠?qū)崿F(xiàn)對員工權(quán)限的設(shè)置;實現(xiàn)普通員工用戶對自己相關(guān)信息的查詢及登錄密碼的修改,以及用Setup2GO制作成可安裝文件使本系統(tǒng)具有可移植性。實現(xiàn)人事辦公的智能化,提高企業(yè)的工作效率。關(guān)鍵字: 人事管理系統(tǒng)Qt Creator SQLite

2、數(shù)據(jù)庫 Setup2GOIPersonnel management system of enterprise based On Qt environmentABSTRACT:According to the actual demand, the design of the personnel management system development environment based on Qt Creator (MIS). The front is a cross-platform VC+ graphical interface program edit or Qt. Background

3、 using the SQLite database. The system has realized the administrator password to modify itself, the new employees, old employees management ,conditional search for employee, showing all the basic information of the employees, change of basic information, information staff, new, change, delete evalu

4、ation, training, rewards and punishment records, and set permission for employees; The ordinary users to information relevant to their query and password modification. And the production of documents that can be installed using Setup2GO to make the system has portability. Auto mated personnel office

5、, improve the efficiency of enterprises. Keyword: Personnel management system Qt Creator SQLite Database Setup2GO II 目 錄摘要IABSTRACTII前 言1第一章 開發(fā)工具的選擇2第1節(jié) 開發(fā)工具Qt Creator的介紹2第2節(jié) SQLite數(shù)據(jù)庫的介紹3第3節(jié) Setup2GO的介紹4第二章 系統(tǒng)需求及可行性分析5第1節(jié) 需求分析5第2節(jié) 可行性分析5第三章 數(shù)據(jù)庫設(shè)計7第1節(jié) 數(shù)據(jù)庫的設(shè)計7第四章 系統(tǒng)設(shè)計12第1節(jié) 系統(tǒng)功能結(jié)構(gòu)12第2節(jié) 系統(tǒng)功能的具體設(shè)計及代碼實現(xiàn)1

6、2第五章 制作可安裝文件29結(jié)論34參考文獻(xiàn)35前 言在企業(yè)中,人事管理工作是非常重要的一項工作。它負(fù)責(zé)整個企業(yè)的日常人事安排,人員的人事管理等。以前都是人工在電腦上處理大量的Excel表格信息的初級階段,隨著企業(yè)規(guī)模的擴(kuò)大以及頻繁的人員的流動,人事管理的工作量也大大地加重,而且企業(yè)人事管理工作的好壞對企業(yè)的發(fā)展有較大的影響,企業(yè)對人事管理也較為重視。隨著計算機(jī)應(yīng)用的發(fā)展,人事管理部門急切希望能夠?qū)⑷耸鹿芾磙k公智能化的水平提高,以減輕人的工作壓力并提高工作效率。本論文是經(jīng)過對客戶的需求分析并結(jié)合實際的需要設(shè)計的。本系統(tǒng)采用的是跨平臺的VC+圖形界面編輯器和SQLite數(shù)據(jù)庫,設(shè)計基本滿足了企業(yè)

7、人事管理系統(tǒng)的需求。第一章 開發(fā)工具的選擇第1節(jié) 開發(fā)工具Qt Creator的介紹一、Qt Creator的簡介Qt Creator是Qt被Nokia收購后推出的一款新的輕量級的集成開發(fā)環(huán)境(IDE),這個集成開發(fā)環(huán)境能夠跨平臺運行,支持的系統(tǒng)包括Linux、Mac OS X以及Windows。Qt Creator的設(shè)計目標(biāo)是使開發(fā)人員能夠利用這個框架更加快速且容易的完成相應(yīng)的開發(fā)任務(wù)。Qt集成開發(fā)環(huán)境概圖如圖所示: 圖1-1 Qt集成開發(fā)環(huán)境概圖 Qt Creator包括項目生成向?qū)А⒏呒壍腣C+代碼編輯器、瀏覽文件及類工具、集成了Qt Designer、Qt Assistant、Qt L

8、inguist、圖形化的GDB調(diào)試前端,集成qmake構(gòu)建工具等。二、Qt Creator的功能和優(yōu)勢Qt Creator 主要是為了幫助新Qt用戶更快速的入門并運行項目,可大大提高有經(jīng)驗人員的工作效率。(一)使用VC+代碼編輯器可快速編寫代碼 語法標(biāo)識和代碼完成功能輸入時進(jìn)行靜態(tài)代碼檢驗以及提示樣式上下文相關(guān)的幫助代碼折疊括號匹配和括號選擇模式高級識別功能。這樣使得我們能寫出良好格式的代碼;在預(yù)測我們想要輸入的內(nèi)容時,可以自動完成代碼輸入;又可顯示內(nèi)聯(lián)錯誤和警告錯誤。 (二)使用瀏覽工具管理源代碼 由于集成了包括Git、Perforce和Subversion開放式文件在內(nèi)的領(lǐng)先版本控制軟件,

9、因而不必知道確切的名稱和位置也可搜索類和文件,在不同位置和文件中沿用的符號在頭文件和源文件,或在聲明和定義之間切換。(三)為Qt跨平臺開發(fā)人員的需求而量身定制集成了特定于Qt的功能,如信號與槽圖示調(diào)試器,對Qt類結(jié)構(gòu)可很直觀的看到,對于Qt Designer可視化布局和格式構(gòu)建器只要單擊一下就可生成和運行Qt項目。 第2節(jié) SQLite數(shù)據(jù)庫的介紹一、SQLite的簡介SQLite是D.Richard Hipp用c語言編寫的開源嵌入式數(shù)據(jù)庫引擎。它是完全獨立的,對外部沒有任何依賴,最重要地,它是一個輕量級的數(shù)據(jù)庫,在一些簡單語句的處理上比一些Mysql要快。二、SQLite的功能和特性從功能上

10、看,SQLite支持多數(shù)SQL92標(biāo)準(zhǔn),可以在所有主流的操作系統(tǒng)上跨平臺運行,操作簡單且支持大多數(shù)的計算機(jī)語言直接創(chuàng)建數(shù)據(jù)庫,同時它還支持事務(wù)處理等。從特性上來看,更能體會到SQLite的強(qiáng)大的和實用。它是遵守ACID事務(wù)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)而且其本身只有250K大小卻能支持大至2TB的數(shù)據(jù)庫,而且比一些流行的數(shù)據(jù)庫在大部分普通數(shù)據(jù)庫操作的速度要快,最方便的一點是它是零配置即不需要安裝和管理配置,而且擁有大量簡單輕松的API函數(shù)。SQLite的資源是完全開放的,它的源代碼都有良好的注釋,有高達(dá)90%以上的測試覆蓋率。 第3節(jié) Setup2GO的介紹一、Setup2GO的簡介以及特性Setup

11、2GO是一個很不錯的安裝文件制作工具,使用簡單而且交互性能較強(qiáng),關(guān)鍵是這款制作工具不需要使用者會很多編程知識和編程經(jīng)驗就可以在很短的時間內(nèi)完成制作,且該軟件支持的系統(tǒng)也非常多,例如當(dāng)前所有的32位Windows操作系統(tǒng)的程序。這款軟件還自帶了工程向?qū)椭焖偕砂惭b項目,非常適合初學(xué)者。另外它還具備建立快捷方式、寫入注冊表、文件類型關(guān)聯(lián)、定制對話框和屏幕樣式、使用外部工具、修改INI文件,添加安裝密碼、測試運行等功能,而且它還可制作出支持多國語言的安裝程序。第二章 系統(tǒng)需求及可行性分析第1節(jié) 需求分析一、業(yè)務(wù)需求1. 系統(tǒng)操作簡單,界面友好;錯誤操作予以提醒。2. 規(guī)范、完善的基本信息設(shè)置。3

12、. 支持多人操作,要求有權(quán)限分配功能。4. 為了方便用戶,要求系統(tǒng)支持多條件查詢。5. 支持?jǐn)?shù)據(jù)更新調(diào)整。6. 制作成可安裝文件便于在沒有運行環(huán)境的機(jī)器上安裝使用。二、用戶功能需求 通過與客戶的溝通和需求分析,要求該系統(tǒng)滿足如下功能: 運行該系統(tǒng)時,首先出現(xiàn)登錄界面,根據(jù)輸入的用戶名和密碼判斷用戶的權(quán)限。 若登錄的用戶為管理員,可進(jìn)行個人密碼的修改、可看到員工編號和姓名的列表顯示、為新員工辦理入職、辦理員工離職、按條件查詢員工以及對員工基本信息、工作信息、員工考評信息、培訓(xùn)信息、獎懲信息、以及員工的權(quán)限設(shè)置的更改和查詢。 若登錄的用戶為普通用戶,也可以修改自己的密碼,可查看員工的基本信息、工作

13、信息、員工考評信息、培訓(xùn)信息、獎懲信息以及員工的權(quán)限設(shè)置但不具備修改權(quán)限。 第2節(jié) 可行性分析一、經(jīng)濟(jì)可行性在計算機(jī)應(yīng)用極其廣泛的今天,每個企業(yè)的員工都有自己的辦公電腦。因此,生成的可安裝程序的安裝問題是不用顧慮的,這個系統(tǒng)的花銷除了系統(tǒng)本身的開發(fā)費用是幾乎為零的,而且為公司減少了在人事管理上的工作人員,還大大提高了工作的效率。為企業(yè)帶來的效益是強(qiáng)大且無形的,因此,在經(jīng)濟(jì)上是可行的。二、技術(shù)可行性 從技術(shù)可行性上分析,該系統(tǒng)的開發(fā)主要是對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行操作,考慮到系統(tǒng)的功能需求,在系統(tǒng)的技術(shù)實現(xiàn)上使用Qt Creator和SQLite數(shù)據(jù)庫相結(jié)合進(jìn)行軟件開發(fā)。Qt Creator的組件功能

14、非常強(qiáng)大,封裝了很多API函數(shù),可以實現(xiàn)系統(tǒng)的各項功能的操作以及提高軟件開發(fā)的效率和軟件的安全性。 第三章 數(shù)據(jù)庫設(shè)計第1節(jié) 數(shù)據(jù)庫的設(shè)計一、數(shù)據(jù)庫設(shè)計結(jié)構(gòu)圖本系統(tǒng)使用SQLite數(shù)據(jù)庫設(shè)計的名為RSDAMS的數(shù)據(jù)庫,它包含11個表,這些表存儲了在系統(tǒng)設(shè)計階段所用到所有信息,也保證了系統(tǒng)正常工作。其結(jié)構(gòu)圖如圖所示: 圖 3-1 數(shù)據(jù)庫結(jié)構(gòu)圖bumen表包含2個實體分別為Bid,Bname。Bid為部門名稱的編號,Bname為部門名稱。bumen表的實體E-R圖及數(shù)據(jù)表結(jié)構(gòu)如下圖所示: 圖 3-2 bumen實體E-R圖及表結(jié)構(gòu)圖 minzu表包含2個實體分別為minzu_id,minzu_na

15、me。其中minzu_id依次對應(yīng)著各個民族的名稱,本系統(tǒng)僅列舉8個民族作為說明,調(diào)用民族信息時,只需調(diào)用或關(guān)聯(lián)minzu_id的就可以。minzu表的實體E-R圖及數(shù)據(jù)表結(jié)構(gòu)如下圖: 圖 3-3 minzu實體E-R圖及表結(jié)構(gòu)圖kaop表包含七個實體分別為Kid,Kname,Kinfo,Klv,Kdate,Kbeiz,Knum。Kid為關(guān)聯(lián)的員工編號,由于員工編號的唯一性,所以在Kid為該員工編號時就會對應(yīng)該員工的一切考評信息。kaop數(shù)據(jù)表結(jié)構(gòu)如下圖所示: 圖3-4 kaop表結(jié)構(gòu)圖emplimfo表包含12個實體分別為Eid,Ename,Esex,Esex,Edate,Eminzu,Ep

16、hone,Eaddr,Email,Euni,Exueli,Emajor,Eremark。Eid在這個表中同樣起到關(guān)聯(lián)的作用,Eid存儲著員工編號信息,當(dāng)著一條記錄的員工編號與表中的Eid對應(yīng)了,就可以調(diào)用該員工的員工信息了。emplinfo表結(jié)構(gòu)如圖所示: 圖3-5 emplinfo表結(jié)構(gòu)圖limitinfo表包含2個實體分別為Lid,Linfo。這個表的作用很簡單,在創(chuàng)建表時寫好了數(shù)據(jù)后不用再修改。當(dāng)其Lid為0時,代表一般用戶,Lid為1時,代表管理員用戶。用來判別用戶權(quán)限時使用。表結(jié)構(gòu)如圖所示: 圖3-6 limitinfo表結(jié)構(gòu)圖limit表包含3個實體分別為Lid,Lpw,Llimi

17、t。表中的Lid存儲著員工的編號,Lpw用于存儲員工的密碼,它是與Lid存儲的員工編號信息一一對應(yīng)的,Llimit列的信息代表用戶權(quán)限。其表結(jié)構(gòu)如圖所示: 圖3-7 limit表結(jié)構(gòu)圖Workinfo表包含4個實體分別為Wid,Wbumen,Wzhicheng,Wsalary。Wid用于存儲有部門和工資的員工編號,Wbumen存儲的是部門信息,本系統(tǒng)中列舉5個部門。Wsalary用于存儲工資信息。其表結(jié)構(gòu)如圖所示: 圖3-8 workinfo表結(jié)構(gòu)圖reward表包含7個實體分別為Rid,Rname,Rtime,Rreward,Rreason,Rremark,Rnum。這個表用來存儲員工的獎懲

18、信息,當(dāng)新建一個員工的獎懲記錄,其實質(zhì)就是向這個表里添加一條記錄。其表結(jié)構(gòu)如圖所示: 圖3-9 reward表結(jié)構(gòu)圖select1表只包含一個實體為Sid。Sid的數(shù)據(jù)類型為整形。這個表就是單獨用來存儲員工編號的,以便多表關(guān)聯(lián)使用。trained表包含6個實體分別為Tid,Tname,Ttime,Tcont,Trem,Tnum。這個表是用來存儲員工培訓(xùn)信息的,當(dāng)新建員工培訓(xùn)信息時,就是相當(dāng)于向這個表中插入一條記錄。其表結(jié)構(gòu)如圖所示: 圖3-10 trained表結(jié)構(gòu)圖zhicheng表包含2個實體分別為Zid,Zname。這個表是用來存儲職稱信息的,這個企業(yè)的所有崗位名稱都包含在內(nèi),其表結(jié)構(gòu)如

19、圖所示: 圖3-11 zhicheng表結(jié)構(gòu)圖從名為RSDAMS的數(shù)據(jù)庫的11表中我們不難發(fā)現(xiàn)每個表都相應(yīng)的id,這里的id起到的作用是非常大的。當(dāng)我們需要兩個表關(guān)聯(lián)時,都是利用它們id關(guān)聯(lián)在一起的,在系統(tǒng)設(shè)計中很多情況下需要調(diào)用數(shù)據(jù)中的幾個表,那么如何知道調(diào)用該表中的哪個記錄,就要靠它們的id來識別了,這些id就像我們的學(xué)號是唯一的一樣。數(shù)據(jù)庫中的各個表都建好后,在編寫程序時需要將數(shù)據(jù)庫和我們建的工程聯(lián)系上。因此,在RSDAMS.pro中添加database類,在這個C+類中實現(xiàn)數(shù)據(jù)庫的連接與關(guān)閉功能,具體如下:void Database:open() /數(shù)據(jù)庫連接函數(shù) db = QSqlD

20、atabase:addDatabase("QSQLITE"); /數(shù)據(jù)庫為SQLitedb.setDatabaseName("RSDAMS.db");if (!db.open() /打開并連接數(shù)據(jù)庫以及容錯處理 QMessageBox:critical(0, "Cannot open database", "Unable to establish a database connection.n" "This example needs SQLite support. Please read "

21、"the Qt SQL driver documentation for information how " "to build it.", QMessageBox:Cancel); return; void Database:close() /關(guān)閉數(shù)據(jù)庫db.close(); 第四章 系統(tǒng)設(shè)計 第1節(jié) 系統(tǒng)功能結(jié)構(gòu) 一、系統(tǒng)功能結(jié)構(gòu)圖 圖 4-1 企業(yè)人事管理系統(tǒng)結(jié)構(gòu)圖第2節(jié) 系統(tǒng)功能的具體設(shè)計及代碼實現(xiàn)一、系統(tǒng)預(yù)覽及界面功能實現(xiàn)企業(yè)人事管理系統(tǒng)由多個窗體組成,下面僅列出幾個典型的窗體:1.該圖為點擊圖標(biāo)運行系統(tǒng)的登錄界面,在該界面輸入用戶名和密碼實現(xiàn)

22、登錄功能,由于用戶在輸入用戶名和密碼時需要密碼為圖中小黑點形式以便信息保護(hù)。在本系統(tǒng)中,首先在RSDAMS.pro工程中的添加Login界面文件,同時在工程中會自動添加Login類的源文件和頭文件。在其界面文件上添加用到的工具原件。我通過對Login類構(gòu)造函數(shù)添加初始化語句來實現(xiàn)登錄密碼的保護(hù)顯示:ui -> linePw -> setEchoMode(QLineEdit:Password); 圖 4-2 登錄界面圖2.下圖為用戶登錄后進(jìn)入系統(tǒng)的主界面,若為管理員用戶,所有的功能都可以直接或間接的在該界面上實現(xiàn)。該界面包含了該系統(tǒng)的所有的功能,滿足客戶對本系統(tǒng)的所有要求,而且在細(xì)節(jié)

23、上也做到了很多人性化的方面。 圖 4-3 管理員登錄的主界面圖首先,從個人賬戶這groupBox看起,其中修改密碼這個Button按鈕,無論用戶擁有怎樣的用戶權(quán)限,都應(yīng)該是只能修改本身的密碼;而且我們確保不要出現(xiàn)操作上的失誤,我們在修改密碼時,會彈出一個對話框,需要填寫舊密碼、新密碼以及確認(rèn)新密碼。當(dāng)舊密碼為該用戶現(xiàn)有密碼,新密碼和確認(rèn)新密碼一致時才可以實現(xiàn)修改。否則會通過如下代碼實現(xiàn)提示錯誤如圖所示:if(oldpw = query.value(1).toString() && newpw1 = newpw2) query.clear(); query.exec("

24、update limits set Lpw = '" + newpw1 + "' where Lid = " + m_id); QMessageBox:information(0,"","密碼修改成功!",QMessageBox:Ok); this->close(); else QMessageBox:critical(0,"錯誤!","密碼修改失敗!",QMessageBox:Cancel);在這部分最大的難點是做到只能修改自己的密碼,因此我們做了和主界面的關(guān)聯(lián)

25、,通過一個函數(shù)傳遞一個參數(shù)。這個參數(shù)為每個員工所特有的,即每個員工的員工編號。void modpw:getID(QString id) m_id = id; void Widget:on_btnPW_clicked() modpw *mopdw1 = new modpw; mopdw1->getID(m_loginid);mopdw1->exec();delete mopdw1; 圖 4-4 修改密碼運行圖在這個groupBox里還有一個退出登錄的按鈕,這個按鈕的實現(xiàn)就想對簡單些,通過如下代碼實現(xiàn)返回登錄頁面:void Widget:on_btnLogag_clicked() Lo

26、gin *l = new Login; m_loginid = "" this->hide(); l->exec(); this->SetLimit(l->LoginIDReturn();this->show();delete l;其次是員工列表這個groupBox的設(shè)計實現(xiàn)。在這里可以顯示所有員工的員工編號和姓名;具體實現(xiàn)代碼如下所示: void Widget:on_btnInsert_clicked() NewUser *nusr = new NewUser;nusr->exec();this->setAllModel(Mode

27、l1,Model2); this->display(); delete nusr;在這一部分還包括員工入職的辦理,設(shè)計的目標(biāo)是在通過員工入職按鈕的槽函數(shù)彈出如圖所示的對話框,在這個對話框填寫新員工的信息,這些信息作為記錄插入到數(shù)據(jù)庫中實現(xiàn)員工入職的辦理。 圖 4-5 新員工入職運行圖添加功能通過如下代碼實現(xiàn): query.exec("select Eid from emplinfo where Eid = "+ id); query.next(); if(query.value(0).toString() = NULL)query.clear(); query.exe

28、c("insert into emplinfo values(" + id + ",'"+ name + "','"+ sex +"','"+ date +"','"+ minzu +"',"+ phone +",'"+ addr +"','"+ email +"','"+ univ +"',&#

29、39;"+ xueli +"','"+ major +"','"+ remark +"')"); query.exec("insert into workinfo values(" + id + ",'" + bumen + "','" + zhicheng + "'," + salary + ")"); query.exec("insert i

30、nto limits values("+ id +","+ id +",'" + limit + "')");this->close(); else QMessageBox:critical(0,"錯誤!","該員工編號已存在!",QMessageBox:Cancel); 管理員還可以實現(xiàn)員工離職的辦理,即通過員工離職按鈕的槽函數(shù)實現(xiàn),首先需要選中一個操作對象,若沒有選中操作對象會彈出提示對話框,然后再單擊員工離職按鈕,便會彈出如下圖所示的對話框,當(dāng)用戶單擊Yes

31、這個Button時,數(shù)據(jù)庫RSDAMS中便執(zhí)行delete操作。依次從emplinfo表中刪除Eid為所選操作對象的id的記錄,從select表中刪除Sid為id的記錄,從limits表中刪除Lid為id的記錄,從kaop表中刪除Kid為id的記錄,從reward表中刪除Rid為id的記錄,從workinfo表中刪除Wid為id的記錄,從trained表中刪除Tid為id的記錄。具體操作由如下代碼實現(xiàn):void Widget:on_btnDelete_clicked() QAbstractItemModel *itModel = ui->MsgTable2->model();/ i

32、nt row = ui->MsgTable2->currentIndex().row(); if(-1 = row) itModel = ui->MsgTable1->model(); row = ui->MsgTable1->currentIndex().row(); if(-1 = row) QMessageBox:critical(0,"錯誤!","請選擇一個操作對象",QMessageBox:Cancel); return; QVariant data1 = itModel->index(row,0).d

33、ata();/獲取選中行第0列的值員工編號 QString id = data1.toString();if(QMessageBox:Yes = QMessageBox:question(0,"","離職會刪除該員工所有信息,是否繼續(xù)?",QMessageBox:Yes|QMessageBox:No) QSqlQuery* query = new QSqlQuery; query->exec("delete from emplinfo where Eid = " + id ); query->exec("dele

34、te from select where Sid = " + id ); query->exec("delete from limits where Lid = " + id ); query->exec("delete from kaop where Kid = " + id ); query->exec("delete from reward where Rid = " + id ); query->exec("delete from workinfo where Wid = "

35、; + id ); query->exec("delete from trained where Tid = " + id ); delete query;this->setAllModel(Model1,Model2); this->display(); 圖 4-6 員工離職演示圖任何用戶都可以進(jìn)行的顯示全部的操作,即通過槽函數(shù)實現(xiàn),便可將數(shù)據(jù)庫中表的信息全部顯示在右側(cè)列表中。void Widget:on_btnAll_clicked()QSqlQuery *query = new QSqlQuery;query->exec("delet

36、e from select1");query->exec("Insert into select1 select Eid " "from emplinfo"); Model1->clear(); Model1->setQuery("select Eid,Ename " "from select1,emplinfo " "where select1.Sid = emplinfo.Eid order by Sid ASC");count = Model1->rowC

37、ount(); QString showcount; showcount.setNum(count); ui->labelcount->setText("當(dāng)前共顯示" + showcount + "條數(shù)據(jù)");/ 更新行數(shù) Model1->setHeaderData(0,Qt:Horizontal,"員工編號"); Model1->setHeaderData(1,Qt:Horizontal,"姓名");this->on_tabWidget_currentChanged(ui->t

38、abWidget->currentIndex();在這部分里最突出的作用是新建查找功能,是一種模糊查找的方式,可以按不同的條件查找,便于企業(yè)對某些方面信息的統(tǒng)計。首先,當(dāng)emplinfo表中的Eid與workinfo表中的Wid一致時,向select表中添加一條記錄,這條記錄是用戶要模糊查找的條件時,執(zhí)行sql語句與表中的信息相比較,與查詢條件相一致的顯示出來,最后再用delete語句把添加到表中的查找條件記錄刪除,因為它不屬于表中的員工記錄。具體的舉例實現(xiàn)如圖4-7所示。如按部門的查找: 圖 4-7 新建查找演示圖最后是人事管理這個groupBox的設(shè)計,這一部分的功能比較細(xì)碎,完成的

39、工作比較多,對于管理員來說,在這部分可以進(jìn)行基本信息的修改,這個操作需要先選定一個操作對象,然后點擊修改信息,便會彈出一個窗口,該窗口如圖所示,這個功能主要依靠在槽函數(shù)中更新數(shù)據(jù)庫中各個表中的數(shù)據(jù)。 圖 4-8 基本信息修改演示圖這里最人性化的地方就是視圖顯示這個按鈕實現(xiàn)的功能,當(dāng)想查看一個人的所有信息,我的設(shè)計是讓其信息都在一個視圖中顯示,而且這個視圖中的任何一項都設(shè)置為在當(dāng)前界面不可更改的。圖 4-9 視圖顯示除了修改密碼外的所有修改操作都是對管理員有用的。在工作信息這欄里包括職位調(diào)動和薪資調(diào)動,在選擇好一個操作對象后,再點擊調(diào)動/調(diào)薪按鈕,便可彈出一個窗口進(jìn)行相應(yīng)的信息更改。這個功能的設(shè)

40、計主要通過sql語句中的update函數(shù)實現(xiàn),當(dāng)用戶所選操作對象的id和數(shù)據(jù)庫的workinfo表的Wid一致時,更新表中原來的數(shù)據(jù)為新的數(shù)據(jù),便實現(xiàn)了該功能。具體的實現(xiàn)可參考如下代碼:void workinfo:on_pushButton_clicked() QSqlQuery query; QString newbumen; QString newzhicheng; QString newsalary;newbumen = ui->comboNewBumen->currentText(); newzhicheng = ui->comboNewZhicheng->cu

41、rrentText(); newsalary = ui->lineNewSalary->text(); if(!pare("") newsalary = "0" query.exec("update workinfo set Wbumen = '"+ newbumen +"',Wzhicheng = '"+newzhicheng +"',Wsalary = "+ newsalary +" where Wid = "+ m_id);Q

42、MessageBox:information(0,"","修改成功!",QMessageBox:Cancel); this->close();在人事管理這個groupBox里的員工考評、培訓(xùn)信息、獎懲信息這三功能都分別包含三個子功能即添加記錄,修改記錄、刪除記錄,實現(xiàn)的方式都是一致的,這里只對其中一個進(jìn)行介紹。就以培訓(xùn)信息作為例子:刪除記錄的操作同前面的刪除操作一致,便是從trained表中刪除該員工的所有信息。添加記錄、修改記錄的對話框如圖4-10所示 圖 4-10 添加修改培訓(xùn)記錄演示圖添加記錄時需要填寫員工編號、日期、培訓(xùn)內(nèi)容及相應(yīng)的備注。在

43、單擊確定按鈕時,若輸入的員工編號不存在會提示報錯;若有該員工,便向trained表中insert一條記錄。修改記錄時同樣也會彈出圖4-10所示的圖形界面,將需要修改的項目填寫后,單擊確定按鈕,即更新了trained表中的數(shù)據(jù)。具體的實現(xiàn)如下代碼做了詳盡介紹:void trained:on_pushButton_clicked() QSqlQuery query; QString id; QString name; QString date; QString cont; QString remark;id = ui->lineID->text(); query.exec("

44、select * from emplinfo where Eid = " + id); /判斷輸入的員工編號是否存在 query.next(); if(query.value(0).toString() = NULL) QMessageBox:critical(0,"錯誤!","不存在這個員工!",QMessageBox:Cancel); else name = query.value(1).toString(); cont = ui->textCont->toPlainText(); if(!pare("")

45、cont = "-" date = ui->dateEdit->text();remark = ui->textRemark->toPlainText(); if(!pare("") remark = "-" if(0 = mode) /mode為0時,執(zhí)行的是添加記錄的操作 query.clear(); query.exec("insert into trained(Tid,Tname,Ttime,Tcont,Trem) values("+ id +",'"+

46、name +"','"+ date +"','"+ cont +"','"+ remark +"')" ); else if(1 = mode) /mode為1時,執(zhí)行的是修改操作 query.clear(); query.exec("update trained set Tid = "+ id +",Tname = '"+ name +"',Ttime = '"+ date

47、+"',Tcont = '"+ cont +"',Trem = '"+ remark +"' where Tnum = " + m_num); this->close(); 人事管理這個groupBox的最后一個內(nèi)容就是權(quán)限設(shè)置,這部分是對管理員有效的。在管理員添加一個新的用戶時,要設(shè)新用戶的權(quán)限;也可以更改原有用戶的權(quán)限。這里只設(shè)置管理員用戶權(quán)限和普通用戶權(quán)限。而且實現(xiàn)起來也特別簡單,在程序中關(guān)鍵的一句為:query->exec("update limits set Ll

48、imit = '管理員' where Lid = " + id); 普通用戶和管理用戶的差別在于管理員可以更改任何員工的信息,而普通用戶除了本身的密碼可以修改,對其余的信息只有查看功能。以上是該系統(tǒng)中管理員各項功能的實現(xiàn),普通用戶的功能只需將和修改有關(guān)的功能設(shè)置為false,相應(yīng)的按鈕就會變成灰色不可使用的。若為普通用戶登錄,其界面如圖4-11 : 圖 4-11 普通用戶登錄的主界面圖 管理員和普通用戶區(qū)別的具體實現(xiàn)代碼如下: if(query->value(2).toString() = "管理員") /管理員用戶的按鈕可用性都設(shè)為true

49、; ui->btnDBM->setEnabled(true); ui->btnNormal->setEnabled(true);ui->btnDelKaoping->setEnabled(true); ui->btnDelReward->setEnabled(true); ui->btnDelTrained->setEnabled(true); ui->btnModKaoping->setEnabled(true); ui->btnModReward->setEnabled(true); ui->btnM

50、odTrained->setEnabled(true); ui->btnKaoping->setEnabled(true); ui->btnReward->setEnabled(true); ui->btnTrained->setEnabled(true); ui->btnInsert->setEnabled(true); ui->btnDelete->setEnabled(true); ui->btnModify->setEnabled(true); ui->btnWorkinfo->setEnable

51、d(true); else if(query->value(2).toString() = "一般") /一般用戶的按鈕可用性設(shè)置為false; ui->btnDBM->setEnabled(false); ui->btnNormal->setEnabled(false);ui->btnDelKaoping->setEnabled(false); ui->btnDelReward->setEnabled(false); ui->btnDelTrained->setEnabled(false); ui->btnModKaoping->setEnabled(false); ui->btnModReward->setEnabled(false); ui->btnModTrained->setEnabled(false); ui->btnKaoping->setEnabled(false); ui->btnReward->setEnabled(false); ui->btnTrained->setEnabled(false);ui->btnInsert->setEnabled(false); ui->btnDel

溫馨提示

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

評論

0/150

提交評論