




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、畢業(yè)設(shè)計(jì)(論文)畢業(yè)設(shè)計(jì)(論文) 題題 目:目: 企業(yè)員工信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)企業(yè)員工信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 系系 部:部: 計(jì)算機(jī)系 專專 業(yè):業(yè): 計(jì)算機(jī)應(yīng)用與維護(hù) 學(xué)學(xué) 號(hào):號(hào): 學(xué)生姓名:學(xué)生姓名: 指導(dǎo)教師:指導(dǎo)教師: 職職 稱:稱: 二二 oo 年年 月月 日日 畢業(yè)論文(設(shè)計(jì))任務(wù)書畢業(yè)論文(設(shè)計(jì))任務(wù)書 課題名稱:課題名稱:_ _ 企業(yè)員工管理系統(tǒng)企業(yè)員工管理系統(tǒng)_ 系系 部:部:_ _ 計(jì)算機(jī)系_ 專專 業(yè):業(yè):_ _ 計(jì)算機(jī)應(yīng)用與維護(hù)_ 姓姓 名:名:_ _ _ 學(xué)學(xué) 號(hào):號(hào):_ _ _ _ 指導(dǎo)教師:指導(dǎo)教師:_ _ _ 二二 oo 六六 年年 六六 月月 一一 日
2、日 一、畢業(yè)論文(設(shè)計(jì))的目的與要求:一、畢業(yè)論文(設(shè)計(jì))的目的與要求: 企業(yè)員工管理系統(tǒng)(pms(personnel-manager-system),它是用來 對企業(yè)工廠等員工進(jìn)行管理的一個(gè)桌面應(yīng)用程序,通過該系統(tǒng)使用者可 以輕松對員工的資料進(jìn)行輸入、查詢、修改,使得員工資料的管理更加 方便。本文旨在闡述如何用 java 語言開發(fā)基于桌面操作系統(tǒng)以及微軟 數(shù)據(jù)庫(microsoft office access)平臺(tái)的小型管理系統(tǒng),其重點(diǎn)是如 何連接數(shù)據(jù)庫以及如何對數(shù)據(jù)庫進(jìn)行操作。 二、畢業(yè)論文(設(shè)計(jì))的內(nèi)容:二、畢業(yè)論文(設(shè)計(jì))的內(nèi)容: 1.企業(yè)員工管理系統(tǒng)的源代碼設(shè)計(jì) 2.企業(yè)員工管理系統(tǒng)
3、調(diào)試 3.企業(yè)員工管理系統(tǒng)的實(shí)現(xiàn) 4.課題實(shí)現(xiàn)環(huán)境 windows xp jdk 1.5.0_1 intellij idea 5.0 三、畢業(yè)論文(設(shè)計(jì))進(jìn)程的安排三、畢業(yè)論文(設(shè)計(jì))進(jìn)程的安排 序序 號(hào)號(hào) 論文(設(shè)計(jì))各階段名稱論文(設(shè)計(jì))各階段名稱日日 期期備備 注注 1 1 課題討論,需求分析(3.1-3.5) 2 2 課題的整體策劃和構(gòu)思(3.63.10) 3 3 課題所需資料的采集(3.113.15) 4 4 課題的實(shí)現(xiàn)與調(diào)試(3.164.30) 5 5 撰寫論文(5.1 6.1) 6 6 論文的答辯(6 月初) 四、任務(wù)執(zhí)行日期:四、任務(wù)執(zhí)行日期: 自自_ _年年_ _ _ _月月
4、_ _ 日起,至日起,至_ _ _ _年年_ _ _ _月月_ _ _ _日止。日止。 學(xué)學(xué) 生(簽字)生(簽字)_ 指導(dǎo)教師(簽字)指導(dǎo)教師(簽字)_ 系系 主主 任(簽字)任(簽字)_ 摘要摘要 企業(yè)員工管理系統(tǒng)(pms(personnel-manager-system),它是用來對企 業(yè)工廠等員工進(jìn)行管理的一個(gè)桌面應(yīng)用程序,通過該系統(tǒng)使用者可以輕松 對員工的資料進(jìn)行輸入、查詢、修改,使得員工資料的管理更加方便。本 文旨在闡述如何用 java 語言開發(fā)基于桌面操作系統(tǒng)以及微軟數(shù)據(jù)庫 (microsoft office access)平臺(tái)的小型管理系統(tǒng),其重點(diǎn)是如何連接數(shù)據(jù) 庫以及如何對數(shù)據(jù)
5、庫進(jìn)行操作。 關(guān)鍵詞:關(guān)鍵詞: java; 面向?qū)ο螅?microsoft office access;jdbc;dbms 目目 錄錄 1 引言.3 1.1java 開發(fā)前奏.3 1.2java 虛擬機(jī)及 java 跨平臺(tái)原理.4 2 系統(tǒng)分析.6 2.1 可行性分析.6 2.2 需求分析.7 3 統(tǒng)設(shè)計(jì).8 3.1 結(jié)構(gòu)設(shè)計(jì).8 3.2 詳細(xì)設(shè)計(jì).12 4 討論.29 4.1 存在的問題及改進(jìn)思想.29 5 結(jié)束語.30 6 致謝.31 7 參考文獻(xiàn).31 8 附錄:程序 api 文檔.33 1 1 引言引言 1.1 java 開發(fā)前奏 sun 公司在 20 世紀(jì) 90 年代初開發(fā)電子消費(fèi)產(chǎn)
6、品時(shí)覺得 c 和 c+有許多 不足,因而著手這一新型的編程語言,并于 1995 年正式推出 java。java 用于 www 后,因其在 www 上支持各種動(dòng)態(tài)和交互效果而迅速聞名。此后, 各種瀏覽器競相支持 java,各種 java 應(yīng)用也逐漸熱門。 java 是一種簡單易用、完全面向?qū)ο?、有平臺(tái)無關(guān)性、安全可靠的、 主要面向 internet 的開發(fā)工具。自從 1995 年正式問世以來,它的快速發(fā) 展已經(jīng)讓整個(gè) web 世界發(fā)生翻天覆地的變化。隨著 java servlet 的推出, java 在電子商務(wù)方面開始嶄露頭角,最新的 java server page(jsp)技術(shù) 的推出,更讓
7、 java 成為基于 web 應(yīng)用程序的首選開發(fā)工具。 java 是第一套允許使用者將應(yīng)用程序通過 internet 從遠(yuǎn)端服務(wù)器傳輸 到本地計(jì)算機(jī)上并執(zhí)行的一種語言,是一種應(yīng)用程序提供者不需要知道使 用者的計(jì)算機(jī)硬件與軟件環(huán)境的語言。比爾蓋茨曾經(jīng)說過:“java 是最 卓越的程序設(shè)計(jì)語言” 。 相比其他語言,java 技術(shù)平臺(tái)具有明顯的優(yōu)越性。從最初建造 java 平臺(tái)開始,就考慮了安全性的問題,即其安全性是建立在 java 平臺(tái)的內(nèi)核 中的。其他的語言只是在軟件開發(fā)時(shí)才由用戶自行處理其安全問題,難免 會(huì)有安全漏洞。其次對于程序員來說,java 比其他人和一門語言都好用, 原因在于:java
8、 有自動(dòng)回收垃圾的功能,java 增加了對象和變量的強(qiáng)制類 型檢查,java 還取消了指針。 目前,java 技術(shù)的架構(gòu)包括以下三個(gè)方面: j2ee(java 2 platform enterprise edition) 企業(yè)版,是以企業(yè) 為環(huán)境而開發(fā)應(yīng)用程序的解決方案。目前已經(jīng)成為開發(fā)商創(chuàng)建電子商務(wù)的 事實(shí)標(biāo)準(zhǔn)。 j2se(java 2 platform standard edition) 標(biāo)準(zhǔn)版,是桌面開發(fā) 和低端商務(wù)應(yīng)用的解決方案。提供 corba 標(biāo)準(zhǔn)的 orb 技術(shù),結(jié)合 java 的 rmi 支持分布式交互操作環(huán)境。 j2me(java 2 platform micro editi
9、on) 小型版,是致力于消費(fèi) 產(chǎn)品和嵌入式設(shè)備的最佳解決方案。提供 http 高級(jí) internet 協(xié)議,使移 動(dòng)電話能以 client/server 方式直接訪問 internet 全部信息,不同的 client 訪問不同的文件,此外還能訪問本地存儲(chǔ)區(qū),提供高效率的無線交 流。 java 技術(shù)又有以下廣泛的內(nèi)涵: 首先,它是一門編程語言,java 能夠創(chuàng)建所有其他傳統(tǒng)語言能編寫 的應(yīng)用程序,java 能夠?qū)應(yīng)毩⒌膽?yīng)用程序,運(yùn)行在裝有 java 虛擬機(jī)的操作 系統(tǒng)上。java 編寫的程序經(jīng)常用在 www 環(huán)境中(比如 applet、servlet 等) , applet 在瀏覽器中執(zhí)行不需要
10、操作系統(tǒng) jvm 的支持。 其次,java 還是一個(gè)開發(fā)環(huán)境,java 技術(shù)包含一系列的工具:編譯 器,解釋器、文檔生成工具、打包工具等。另外由 java 2 sdk 提供的 jre(java runtime environment)還包括一個(gè)完整的 java 類集合,比如 基本語言類、gui 控件類等。 最后,java 也是一個(gè)運(yùn)行環(huán)境,我們可以從 sun 公司提供的 java 2 sdk 中來搭建運(yùn)行環(huán)境,而這一切都是免費(fèi)的。 1.2java 虛擬機(jī)及 java 跨平臺(tái)原理 java 虛擬機(jī)(jvm)是可運(yùn)行 java 字節(jié)碼的假想計(jì)算機(jī),java 的跨平 臺(tái)是相對于其他語言而言的,與其他
11、程序相比,執(zhí)行的中間過程只是多了 一個(gè) java 虛擬機(jī),如下圖 1-2 所示: windows 下的 c 語言編譯過程 java 語言編譯過程 圖 1-2 c 與 java 的編譯過程 由圖 1.2 可見,只要實(shí)現(xiàn)了特種平臺(tái)下的解釋程序,java 字節(jié)碼就能 通過解釋程序在該平臺(tái)下運(yùn)行,這是 java 跨平臺(tái)的根本。當(dāng)前并不是在所 有的平臺(tái)下都有相應(yīng)的 java 解釋器程序,這也是 java 并不是在所有的平 臺(tái)下都能運(yùn)行的原因,它只能在已實(shí)現(xiàn)了 java 解釋器程序的平臺(tái)下運(yùn)行。 java 兼顧解釋性與編譯性語言的特點(diǎn),java 源文件轉(zhuǎn)換成 class 字節(jié) 碼文件的過程是編譯型的, c
12、lass 在 操作系統(tǒng)上運(yùn)行的過程是解釋型的, java 虛擬機(jī)充當(dāng)了解釋器的作用。 c 原程序(擴(kuò)展名為.c) windows 可執(zhí)行文件 (擴(kuò)展名為.exe) c 編譯程序 windows 操作系統(tǒng) 執(zhí)行 java 原程序(擴(kuò)展名為.java) java 編譯程序 java 字節(jié)碼文件(擴(kuò)展名為.class) 執(zhí)行 java 虛擬機(jī) windows 下 的 java 字節(jié) 碼解釋程序 linux 下的 java 字節(jié)碼 解釋程序 能解釋 java 字節(jié) 碼的 cpu 執(zhí)行 linux 系統(tǒng) 執(zhí)行 其他系統(tǒng) 執(zhí)行 windows 系統(tǒng) 2 2 系統(tǒng)分析系統(tǒng)分析 2.1 可行性分析 2.1.1
13、 技術(shù)可行性 從目前市場上的操作系統(tǒng)和管理類的軟件來看,對于比較簡單的小型 管理系統(tǒng),一般使用 microsoft access 數(shù)據(jù)庫就已經(jīng)足夠了,它需要一個(gè) 良好的操作界面,方便、簡單的操作過程是很有必要的。 java 無疑是開發(fā)圖形界面的最佳選擇,豐富的類庫提供了足夠的控件 供開發(fā)人員使用,使得界面設(shè)計(jì)更是靈活多變,能夠設(shè)計(jì)出更多、更好的 用戶界面。 在 java 與數(shù)據(jù)庫連接方面,使用 jdbc 可以很容易的將 sql 語句傳到 任何關(guān)系型數(shù)據(jù)庫中,java 與 jdbc 的結(jié)合,使得程序員可以只寫一次數(shù)據(jù) 庫應(yīng)用軟件后就可以在任何一種數(shù)據(jù)庫系統(tǒng)上運(yùn)行。由于 java 語言具有健 壯性
14、、安全、易使用、易理解和自動(dòng)下載到網(wǎng)絡(luò)等優(yōu)點(diǎn),因此它是數(shù)據(jù)庫 應(yīng)用的一個(gè)極好的基礎(chǔ)語言。jdbc 又實(shí)現(xiàn) java 應(yīng)用程序與各種不同數(shù)據(jù)庫 的對話,擴(kuò)充了 java 應(yīng)用程序的應(yīng)用范圍。 java 訪問數(shù)據(jù)庫有兩種情況,即 applet 和 application,但是他們訪 問數(shù)據(jù)庫的步驟大致相同,以下 java 訪問 access 數(shù)據(jù)庫的工作原理 圖 2-1-1.1 java 訪問數(shù)據(jù)庫的工作原理圖 java application 的最廣泛的用途是應(yīng)用于公司或企業(yè)內(nèi)部網(wǎng)上,所以 數(shù)據(jù)庫 java 應(yīng)用程序 jdbc 應(yīng)用編程接口 jdbc 驅(qū)動(dòng)程序管理器 jdbc-odbc 橋接驅(qū)動(dòng)
15、程序 odbc 可以稱為商業(yè)網(wǎng)的應(yīng)用。這些 applications 可以訪問本地或是任何網(wǎng)絡(luò)上 的共享數(shù)據(jù)庫服務(wù)器,當(dāng)然它也能通過 internet 來訪問數(shù)據(jù)庫,圖 2-2 表 示了 java application 訪問網(wǎng)絡(luò)數(shù)據(jù)庫的情況。 java 應(yīng)用程序 jdbc 驅(qū)動(dòng)程序 (可允許的下載) 本地硬盤資源 或其他資源 客戶端lan 或 internet數(shù)據(jù)庫服務(wù)器 圖 2-1-1.1 application 訪問網(wǎng)絡(luò)數(shù) 據(jù)庫據(jù)庫 2.1.2 經(jīng)濟(jì)可行性 該管理系統(tǒng)比較小,對機(jī)器的配置等要求比較低,界面友好,程序簡 單易用,容易上手,操作者不需要對計(jì)算機(jī)數(shù)據(jù)庫等有很深的了解、認(rèn)識(shí)。 2
16、.2 需求分析 2.2.1 功能要求 從一開始,我的目標(biāo)就是建立一個(gè)企業(yè)人事管理系統(tǒng),功能不是很齊 全,主要實(shí)現(xiàn)以下幾項(xiàng)功能:用戶登錄,添加、修改、刪除注冊用戶信息; 添加新員工信息,員工人事調(diào)動(dòng)信息的錄入,查找、修改員工信息;重新 初始化數(shù)據(jù)庫等。 2.2.2 運(yùn)行要求 本程序的建議運(yùn)行環(huán)境為:windows 9x/2000/xp + jre 5.0 update 6 3 3 系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì) 3.1 結(jié)構(gòu)設(shè)計(jì) 3.1.1 主界面設(shè)計(jì) 良好的用戶界面對一個(gè)應(yīng)用程序有著非常重要的作用,通過它,程序 的用戶可以知道該如何進(jìn)行操作,它直接與用戶打交道,要簡單明了。 主程序界面設(shè)計(jì): 應(yīng)當(dāng)有一個(gè)菜單
17、欄,不同的功能在不同的菜單中,用戶可以隨時(shí)找 到 程序?qū)⑺械墓δ芏技傻绞髽?biāo)右鍵中,用戶可以在不使用菜單的 情況下快速在不同的窗口之間切換 3.1.2 其它窗口設(shè)計(jì) 管理員登陸 數(shù)據(jù)庫的直接管理人員被稱為管理員,能對學(xué)生的資料進(jìn)行修改,只 有管理員登陸正確登陸后用戶才能對數(shù)據(jù)庫進(jìn)行修改。 輸入用戶賬號(hào)、密碼 選擇用戶的類型,這里的類型只有管理 員和普通用戶兩種 圖圖 3-1-1.1 管理用戶部分 管理用戶包括三兩個(gè)方面: 添加新用戶資料,包括用戶的賬號(hào)、密碼以及注冊的用戶的類型。 刪除用戶,刪除已經(jīng)存在的用戶,從賬號(hào)欄選擇要?jiǎng)h除的賬戶。 修改用戶,管理員可以修
18、改登陸用戶的密碼,以及用戶的權(quán)限等。 圖圖 3-1-2-2.13-1-2-2.1 新員工資料輸入部分 企業(yè)中有新員工加入的時(shí)候我們應(yīng)當(dāng)添加員工的資料,程序自動(dòng)根據(jù) 數(shù)據(jù)庫中已有的員工的編號(hào)的自動(dòng)為新員工編號(hào),員工的這個(gè)編號(hào)在數(shù)據(jù) 庫中是唯一的,自始至終都是不可以更改的。 圖圖 3-1-2-1 圖圖 3-1-2-33-1-2-3 人事調(diào)動(dòng)管理部分 當(dāng)員工因?yàn)樯?、調(diào)動(dòng)、退休等原因離開公司的時(shí)候,為了能掌握員 職工所有動(dòng)向以及在以后能及時(shí)查找到該員工,該部分用于記錄員工的動(dòng) 向。 圖圖 3-1-2-43-1-2-4 員工信息查找修改部分 員工加入公司
19、后其個(gè)人資料難免會(huì)發(fā)生改變,面對這種情況我們需要 及時(shí)地對員工的信息進(jìn)行更改,這個(gè)更改工程我們應(yīng)該能對員工的所有資 料能一幕了然,然后再根據(jù)需求進(jìn)行更改;要查找員工的調(diào)動(dòng)信息,要直 觀的列出要查找的員工的每次調(diào)動(dòng)的時(shí)間和最終去向,以方便能夠及時(shí)找 到該員工。 圖圖 3-1-2-53-1-2-5 3.1.3 數(shù)據(jù)庫的組成 數(shù)據(jù)庫是該系統(tǒng)的核心,它是存儲(chǔ)企業(yè)員工信息資料以及企業(yè)部門資 料的地方,本程序的數(shù)據(jù)庫包括以下幾個(gè)方面: 對登陸用戶管理員信息存儲(chǔ)的數(shù)據(jù)庫,這里面應(yīng)當(dāng)包括登陸用戶的 賬號(hào)、密碼以及該用戶對軟件操作的權(quán)限等信息。 對員工信息存儲(chǔ)的數(shù)據(jù)庫,這里面應(yīng)當(dāng)包括員工基本資料、員工的 調(diào)動(dòng)情
20、況等資料。 存放基本部門信息的數(shù)據(jù)庫,這些基本的部門信息在程序啟動(dòng)或窗 口被打開的時(shí)候可能會(huì)用到他們 程序的數(shù)據(jù)庫存放在該程序的當(dāng)前目錄下,該數(shù)據(jù)庫一共包括有六兩 個(gè)程序要用到的表: system 用于存放該程序登陸用戶的詳細(xì)資料 worker 用于存放員工學(xué)生的基本資料 change 用于存放員工人事調(diào)動(dòng)信息 department 用于存儲(chǔ)各個(gè)部門信息 duty 用于存儲(chǔ)所有員工職務(wù)信息 education 用于存儲(chǔ)學(xué)歷信息 當(dāng)程序?yàn)閳?zhí)行的時(shí)候數(shù)據(jù)庫中只有 department、duty、education 這 三個(gè)表,其他三個(gè)表在程序第一次運(yùn)行的時(shí)候會(huì)由程序自動(dòng)創(chuàng)建。 具體數(shù)據(jù)庫圖(如圖
21、3-1-3 所示) 圖 3-1-3 數(shù)據(jù)庫表 3.2 詳細(xì)設(shè)計(jì) 3.2.1 流程圖與功能圖 系統(tǒng)流程圖 程序啟動(dòng) 加載 config.xml 設(shè)置 判斷是否是第一次運(yùn)行 初始化數(shù)據(jù)庫 初始化管理員 用戶登陸 否 是 賬號(hào)是否正確 是 連接數(shù)據(jù)庫 登陸次數(shù)3 否否 程序退出 是 是否管理員開放部分功能 否 開放所有功能 程序主界面,功能選擇 是 用戶管理員工管理 用 戶 退 出 添加 刪除 修改 用戶 資料 是否繼續(xù) 是 否 添加 新員 工 員工 人事 變動(dòng) 資料 查詢 修改 是否繼續(xù) 是 否 是否退出 否是 修改 config.xml 設(shè)置 關(guān)閉數(shù)據(jù)庫 初始化數(shù)據(jù)庫 初始化系統(tǒng)
22、表 設(shè)置默認(rèn) 管理員 程序退出 圖 3-2-1-2 企業(yè)人事管理系統(tǒng)系統(tǒng)流程圖 功能圖 系 統(tǒng) 功 能 管理用戶部分 用戶登陸 管理員工資料 用戶退出 添加新用戶 修改用戶資料 輸入新員工資料 輸入員工人事調(diào)動(dòng)資料 查找修改員工資料 刪除用戶資料 初始化數(shù)據(jù)庫 創(chuàng)建數(shù)據(jù)庫表 初始化數(shù)據(jù)庫信息 圖 3-2-1-2 企業(yè)人事管理系統(tǒng)功能圖 3.2.2 數(shù)據(jù)庫的設(shè)計(jì) 創(chuàng)建管理員工信息資料的應(yīng)用程序,到底怎樣才能有效地管理學(xué) 生的數(shù)據(jù)毫無疑問,數(shù)據(jù)庫在其中扮演著相當(dāng)重要的作用。 創(chuàng)建數(shù)據(jù)庫 在程序的當(dāng)前目錄下創(chuàng)建一個(gè)名為 manager 的 microsoft acce
23、ss 數(shù) 據(jù)庫,并將其的管理員密碼設(shè)置為 123。 創(chuàng)建數(shù)據(jù)庫表 在 microsoft access 數(shù)據(jù)庫中建立以下幾個(gè)數(shù)據(jù)表: 創(chuàng)建用于存儲(chǔ)基本信息的表,表的結(jié)構(gòu)均如下表 3-2-2-2.1 所示: 數(shù)據(jù)元素標(biāo)識(shí)類型 id 文本 des 文本 表 3-2-2-2.1 基本信息表一共有三個(gè),表名分別為: department、duty、education。id 指各個(gè)表中數(shù)據(jù)的編號(hào),des 分別指部 門名稱、職務(wù)名稱、學(xué)歷名稱等,里面的內(nèi)容是預(yù)先設(shè)置好的。 另外系統(tǒng)自動(dòng)創(chuàng)建的三個(gè)表分別如下: 1.員工信息表,表名為 worker,其結(jié)構(gòu)如表 3-2-2-2.2 所示。 數(shù)據(jù)
24、元素標(biāo)識(shí)數(shù)據(jù)元素名稱字段大小類型 idw 員工學(xué)生編號(hào) 50 文本 namew 員工姓名 20 文本 sexw 員工性別 5 文本 birthw 員工生日 30 文本 deptw 員工系部 10 文本 dutyw 員工職務(wù) 10 文本 eduw 員工教育水平 10 文本 professw 員工專業(yè) 15 文本 addrw 員工學(xué)生住址 100 文本 telew 員工電話 25 文本 emailw 員工電子郵件 60 文本 表 3-2-2-2.2 2.員工調(diào)動(dòng)信息表,表名為 change,其結(jié)構(gòu)如表 3-2-2-2.3 所示。 數(shù)據(jù)元素標(biāo)識(shí)數(shù)據(jù)元素名稱字段大小類型 idw 員工學(xué)生編號(hào) 50 文
25、本 namew 員工姓名 20 文本 timew 員工調(diào)動(dòng)時(shí)間 50 文本 containw 員工調(diào)動(dòng)內(nèi)容 50 文本 demow 調(diào)動(dòng)原因描述 100 文本 表 3-2-2-2.3 3.登陸用戶員工調(diào)動(dòng)信息表,表名為 system,其結(jié)構(gòu)如表 3-2-2- 2.432 所示。 數(shù)據(jù)元素標(biāo)識(shí)數(shù)據(jù)元素名稱字段大小類型 username 員工學(xué)生編號(hào) 30 文本 userpasswd 員工姓名 50 文本 usertype 員工調(diào)動(dòng)時(shí)間 1050 文本 表 3-2-2-2.4 3.2.3 使用 jdbc-odbc 橋訪問 access 數(shù)據(jù)庫 使用 jdbc-odbc 橋的方式訪問數(shù)據(jù)庫 jdbc
26、-odbc 將 java 通過 jdbc 發(fā) 出的數(shù)據(jù)庫操作轉(zhuǎn)化為 odbc 操作。首先要?jiǎng)?chuàng)建于數(shù)據(jù)庫的連接,然后再打 開數(shù)據(jù)庫,訪問數(shù)據(jù)庫的各個(gè)需要訪問的表,從表中取出需要的資料或者 更新數(shù)據(jù)庫等,當(dāng)對數(shù)據(jù)庫的操作完成最后再關(guān)閉與數(shù)據(jù)庫的連接。 使用 jdbc 訪問數(shù)據(jù)庫需要包括 connection、recordset、statement、resultsetmetadata 七個(gè)類。 connection 對象是連接數(shù)據(jù)庫的基礎(chǔ),它管理程序與數(shù)據(jù)庫建立連接; statement 對象管理對數(shù)據(jù)庫操作,一切對數(shù)據(jù)庫的查詢、更改等操作都基 于這個(gè)類;recordset 對象是管理數(shù)據(jù)庫記錄的對
27、象,我們可以從這個(gè)對象 中取出我們需要的查詢后得數(shù)據(jù)。 使用以下方法來連接數(shù)據(jù)庫: *在連接數(shù)據(jù)庫前我們首先要得到access 數(shù)據(jù)庫文件的絕對路 徑,我們可以使用file 類來實(shí)現(xiàn): file mdb = new file(students.mdb); mdbpath = mdb.getabsolutepath();/得到 students.mdb 的 絕對路徑 mdbpath=mdbpath.replace(,/); *將數(shù)據(jù)庫的絕對路徑加到數(shù)據(jù)源路徑中: mdburl=jdbc:odbc: driver=microsoft access driver (*.mdb);dbq=+mdbpa
28、th; *加載 jdbc-odbc 橋連接驅(qū)動(dòng): class.forname(sun.jdbc.odbc.jdbcodbcdriver); * 創(chuàng)建與數(shù)據(jù)庫的連接: conn= drivermanager.getconnection(mdburl,); 3.2.4 程序的編寫過程及功能實(shí)現(xiàn) 工欲善其事,必先利其器。本次編寫這個(gè)企業(yè)人事管理系統(tǒng),主要是 使用了 jetbrains s.r.o 公司開發(fā)的 intellij idea 436 這個(gè)工具。 intellij idea 是一個(gè)智能化的開發(fā)工具,在網(wǎng)上被稱為 java 最好的開發(fā) 工具,它在所有 java 開發(fā)工具中對 ja
29、va 源代碼進(jìn)行語法檢查的智能提示 等方面都是最優(yōu)秀的。其運(yùn)行后的界面如下圖 3-2-4 所示: 圖 3-2-4 程序編寫環(huán)境 程序運(yùn)行界面 為了使用戶界面更友好,所以整個(gè)程序使用了大量的 java swing 組件。 如圖 圖 3-2-4-1 程序運(yùn)行界面 連接數(shù)據(jù)庫類的編寫連接數(shù)據(jù)庫類的編寫 數(shù)據(jù)庫的連接方面使用的是 main 類中的 connectdatabase()方法,這 個(gè)類實(shí)現(xiàn)與數(shù)據(jù)庫的連接。 構(gòu)造方法,加載驅(qū)動(dòng)并創(chuàng)建與數(shù)據(jù)庫的連接 public connectiondatabase() file mdb = new file(stud
30、ents.mdb); mdbpath = mdb.getabsolutepath(); mdbpath=mdbpath.replace(,/); mdburl=jdbc:odbc:driver=microsoft access driver (*.mdb); dbq=+mdbpath; try class.forname(sun.jdbc.odbc.jdbcodbcdriver); catch (classnotfoundexception e) e.printstacktrace(); try conn= drivermanager.getconnection(mdburl,); catch
31、 (sqlexception e) e.printstacktrace(); 調(diào)用 initproperties()initproperties()來來加載系統(tǒng)屬性配置文件 config.xml,并根據(jù) 里面的內(nèi)容來確定該方法內(nèi)調(diào)用的 initdatabase()方法的任務(wù)。 try prop.loadfromxml(new fileinputstream(config.xml); system.out.println(成功加載系統(tǒng)屬性文件 config.xml !); catch (ioexception e) e.printstacktrace(); joptionpane.showmes
32、sagedialog(mainframe,找不到系統(tǒng)必須的 config.xml 文件!,找不到文件,joptionpane.error_message); eturn false; 系統(tǒng)配置文件 config.xml programe comment : 0 0 create table worker (idw varchar(50) not null,namew varchar(20), sexw varchar(5),birthw varchar(30),deptw varchar(10), dutyw varchar(10),eduw varchar(10),professw varc
33、har(15), addrw varchar(100),telew varchar(25),emailw varchar(60) create table change (idw varchar(50) not null,namew varchar(20), timew varchar(50),containw varchar(50), demow varchar(100) insert into system(username,userpasswd,usertype) values(admin,21232f297a57a5a743894a0e4a801fc3,管理員 ) create tab
34、le system(username varchar(30) not null, userpasswd varchar(50) not null,usertype varchar(10) not null) 該文件中存儲(chǔ)了三個(gè)程序運(yùn)行時(shí)初始化數(shù)據(jù)庫的時(shí)候使用的 sql 語句,程 序需要初始化數(shù)據(jù)庫的時(shí)候就將從該文件中取出需要語句。另外 first_or_not 是指程序運(yùn)行的次數(shù),initdatabase 指初始數(shù)據(jù)庫的次數(shù), 這兩個(gè)變量的初始值都是 0,程序運(yùn)行時(shí)先判斷這兩個(gè)值,如果都是 0 說明 程序是第一次運(yùn)行,程序會(huì)自行初始化數(shù)據(jù)庫,創(chuàng)建系統(tǒng)必須的表。 管理員登陸,檢測用戶賬號(hào)密碼是否
35、正確 while(rs.next() try name=rs.getstring(username); password=rs.getstring(userpasswd); type=rs.getstring(usertype); if(username.equals(name) break; catch (sqlexception e) e.printstacktrace(); 添加系統(tǒng)管理員,使用 statement 對象對數(shù)據(jù)庫表進(jìn)行操作,該對象實(shí) 現(xiàn)對表記錄的更新、插入、刪除等操作。在添加用戶前要檢查用戶名是否 存在。 源代碼: try if(statetemp!=null) int
36、line = statetemp.executeupdate(insert into system (username,userpasswd,usertype) values ( + info0 +,+ encode.md5(info2) +,+info4+); if(line=1) system.out.println(成功添加賬號(hào)為:+info0+ 新用 戶!); joptionpane.showmessagedialog(managerjinternalframe,成功添加 賬號(hào)為:+info0+ 新用戶!,提示, joptionpane.information_message); ca
37、tch (sqlexception e1) /例外處理 管理登陸用戶的賬號(hào)密碼,包括更新用戶密碼和刪除用戶 * 更新用戶密碼 try if(statetemp!=null) int line = statetemp.executeupdate(update system set userpasswd=+ encode.md5(info2) +,usertype=+ info4 + + where username=+ info0 +); if(line=1) system.out.println(成功更新名為:+info0+ 的信息 !); joptionpane.showmessagedia
38、log(managerjinternalframe,成功更新 名為:+info0+的信息!,提示 ,joptionpane.information_message); catch (sqlexception e1) /例外處理 * 刪除用戶 try if(statetemp!=null) int line=statetemp.executeupdate(delete from system where username=+ info0 +); if(line=1) system.out.println(成功刪除賬號(hào)為:+info0+的用戶! ); joptionpane.showmessage
39、dialog(managerjinternalframe,成功刪除 賬號(hào)為:+info0+的用戶!,提示 ,joptionpane.information_message); catch (sqlexception e1) /例外處理 員工信息管理包括三部分,分別是輸入新員工的基本資料、輸入員工的 調(diào)動(dòng)信息、員工信息的查詢修改。這三個(gè)方面的信息都分別放置在一個(gè) string 類型的數(shù)組中,這個(gè)數(shù)組分別從員工信息管理三部分相應(yīng)的類方法 中取得。 * 輸入新員工的基本資料,并存儲(chǔ)倒數(shù)據(jù)庫中,數(shù)據(jù)庫的更新語句如下: 更新 worker 表: int line = statetemp.executeu
40、pdate(insert into worker (idw,namew,sexw,birthw,deptw,dutyw,eduw,professw,addrw,telew,em ailw) values( + newworker0 + , + + newworker1 + , + + newworker2 + , + + newworker3 + , + + newworker4 + , + + newworker5 + , + + newworker6 + , + + newworker7 + , + + newworker8 + , + + newworker9 + , + + newwo
41、rker10 + ) ); 更新 change 表: line = statetemp.executeupdate(insert into change (idw,namew,timew,containw,demow) values(+ + newworker0 + , + + newworker1 + ,+ + newworker12 + , + + newworker11 +, + ); 這里的 newworker 數(shù)組是由 addnew 類中獲得的,里面記錄了所有新員工的 信息。該類不但要更新 worker 表,還要更新 change 表。 * 輸入員工的調(diào)動(dòng)信息,與上面的輸入新員工的基
42、本資料相似,不同的是 sql 語句 insert 的參數(shù)由 change 類中取得。該類實(shí)現(xiàn)了 caretlistener 接 口,為 idtextfield 添加該事件,當(dāng)里面的內(nèi)容沒改變一次就觸發(fā)一次 caretupdate()方法。當(dāng)輸入的員工編號(hào)存在的時(shí)候,程序?qū)T工的信息取 出并放在相應(yīng)的組件當(dāng)中。 * 員工信息的查詢修改,該方法同輸入員工的調(diào)動(dòng)信息相同,也實(shí)現(xiàn)了 caretlistener 接口,其作用和輸入員工的調(diào)動(dòng)信息相同。該部分使用了 jtable 組件,為了能及時(shí)更新 table 的顯示,自己需要?jiǎng)?chuàng)建 mytablemodel 類,該類繼承了 abstracttablemo
43、del 類,需要實(shí)現(xiàn) abstracttablemodel 類中所有未實(shí)現(xiàn)的方法。 public class mytablemodel extends abstracttablemodel private object p; private string n; public mytablemodel(string contains,string columnname) p = contains; n = columnname; public int getcolumncount() return n.length; public int getrowcount() return p.lengt
44、h; public string getcolumnname(int col) return ncol; public object getvalueat(int row, int col) return prowcol; public class getcolumnclass(int c) return getvalueat(0, c).getclass(); public boolean iscelleditable(int rowindex, int columnindex) return true; /* public void setvalueat(object value, int
45、 row, int col) prowcol = value; firetablecellupdated(row, col); */ 密碼的安全性 程序中注冊的登錄用戶的密碼不能以明文的形式存儲(chǔ),那樣很不安全, 所以數(shù)據(jù)庫中存儲(chǔ)的密碼文件要是加密后的密文,這個(gè)程序里選擇使用 md5 加密用戶密碼。在 encode 類中實(shí)現(xiàn) md5 方法。java 實(shí)現(xiàn) md5 加密的代碼如 下: public class encode public static string md5(string passwd) char hexchars = 0, 1, 2, 3, 4, 5, 6, 7,
46、8, 9, a, b, c, d, e, f; try byte bytes = passwd.getbytes(); messagedigest md = messagedigest.getinstance(md5); md.update(bytes); bytes = md.digest(); int j = bytes.length; char chars = new charj * 2; int k = 0; for (byte b : bytes) charsk+ = hexcharsb 4 charsk+ = hexcharsb return new string(chars);
47、catch (exception e) return null; 3.2. 5 錯(cuò)誤處理 程序運(yùn)行后難免會(huì)有輸入錯(cuò)誤,程序中出錯(cuò)可以幫助我們很快的找到 出錯(cuò)地點(diǎn),程序中數(shù)據(jù)庫方面的異常主要有 classnotfoundexception 和 sqlexception,創(chuàng)建程序主界面方面則有只 exception,使用這些對象的 printstacktrace()方法可以找到程序出錯(cuò)的地方和出錯(cuò)原因。 4 4 討論討論 4.1 存在的問題及改進(jìn)思想 本程序的編寫歷時(shí)一個(gè)多月,在 windows xp jdk 1.5.0_1 平臺(tái)上 測試通過,基本上實(shí)現(xiàn)了預(yù)期的目的,但功能還很不完善。鑒于本人精力
48、 水平有限,時(shí)間倉促,錯(cuò)誤與不足之處在所難免,以待后續(xù)開發(fā)中不斷改 進(jìn)和完善。 在后續(xù)開發(fā)中,準(zhǔn)備從以下幾方面著手: 增加動(dòng)態(tài)信息分布功能,允許員工通過網(wǎng)絡(luò)查詢自己的資料,并且進(jìn) 行確認(rèn)。 增強(qiáng)數(shù)據(jù)查詢功能,在關(guān)鍵字查詢的基礎(chǔ)上增加分類查詢。 總之,本程序編寫不是一個(gè)終點(diǎn),而是一個(gè)起點(diǎn)。java 在不斷發(fā)展,它 的強(qiáng)項(xiàng)并不是使用 j2se 來開發(fā)桌面應(yīng)用程序,而更多的應(yīng)用是使用 j2ee 開發(fā)網(wǎng)絡(luò)應(yīng)用程序,盡管它在開發(fā)桌面程序上占有很多優(yōu)勢。java 博大精 深,現(xiàn)在唯有不斷學(xué)習(xí)和吸收,才能趕上時(shí)代的進(jìn)步。 5 5 結(jié)束語結(jié)束語 做什么事情都要有個(gè)好的開頭,一個(gè)應(yīng)用程序在開發(fā)之前的需求分析 工
49、作影響整個(gè)開發(fā)過程。從需求分析入手,做好各項(xiàng)準(zhǔn)備工作程序各 子功能的確定、數(shù)據(jù)庫的設(shè)計(jì)等,然后選擇開發(fā)環(huán)境、開發(fā)工具,一步一 步,循序漸進(jìn),最終把一個(gè)好的企業(yè)人事管理系統(tǒng)展現(xiàn)在各位用戶的眼前。 6 6 致謝致謝 我的畢業(yè)設(shè)計(jì)工作是在 xxx 老師指導(dǎo)下進(jìn)行的。從選題、設(shè)計(jì)、編程、 調(diào)試、撰寫論文等環(huán)節(jié),都是在 xxx 老師精心指導(dǎo)下完成。苗連強(qiáng)老師工 作認(rèn)真、治學(xué)嚴(yán)謹(jǐn)。在畢業(yè)設(shè)計(jì)期間,不僅使我學(xué)習(xí)到了知識(shí),而且還得 到了綜合鍛煉和提高。同時(shí),也更加懂得了如何做一個(gè)合格的大學(xué)生去面 對未來。在此,我十分感謝 xxx 老師的精心指導(dǎo)! 同時(shí)我也感謝在三年中教過我的所有老師!感謝幫助我的所有同學(xué)!
50、7 7 參考文獻(xiàn) 1. 張孝祥 java 就業(yè)培訓(xùn)教程 清華大學(xué)出版社,2003 2. 侯捷 java 編程思想(第二版) 機(jī)械工業(yè)出版社 2002 3. 王路 j2se 核心 api 參考與實(shí)例 中國水利水電出版社,2002 4. 李東升 jdbc 數(shù)據(jù)庫編程與 j2ee. 電子工業(yè)出版社,2004 5. 竇魏 java 軟件開發(fā)(第二版) 人民郵電出版社,2004 6. 殷兆麟 java 網(wǎng)絡(luò)編程. 國防工業(yè)出版社,2001 7. 林志揚(yáng) 精通 java swing 程序設(shè)計(jì) 中國鐵道出版社 2002 8 8 附錄:程序附錄:程序 apiapi 文檔文檔 1 1、 packagepacka
51、ge dwldwl classclass addnewaddnew java.lang.object dwl.addnewdwl.addnew public class addnewaddnew extends java.lang.object 實(shí)現(xiàn)添加新員工的界面,并且可以獲得員工的信息 構(gòu)造方法摘要構(gòu)造方法摘要 addnewaddnew(java.sql.connection conn) 初始化界面,并從數(shù)據(jù)庫中取出需要的信息 方法摘要方法摘要 java.lang.stringgetinformation getinformation()得到要添加的新員工的信息 javax.swing.j
52、panelgetpanel getpanel()得到包含有組件的面板容器 2 2、 packagepackage dwldwl classclass changechange java.lang.object dwl.changedwl.change public class changechange extends java.lang.object implements javax.swing.event.caretlistener, javax.swing.event.changelistener 該類實(shí)現(xiàn)創(chuàng)建人事變動(dòng)的窗口 構(gòu)造方法摘要構(gòu)造方法摘要 changechange(java.s
53、ql.connection conn) 初始化界面,并從數(shù)據(jù)庫中取出需要的信息 方法摘要方法摘要 void caretupdatecaretupdate(javax.swing.event.caretevent e) 本類實(shí)現(xiàn)了 caretlistener 接口,該方法重寫接口 中為實(shí)現(xiàn)的 caretupdate()方法, 該方法用于查找員工信息 java.lang.stringgetchangeinfo getchangeinfo() 取得人事變更窗口中的所有的信息 javax.swing.jpanelgetpanel getpanel() 得到含有組件的容器 void statechang
54、edstatechanged(javax.swing.event.changeevent e) 本類實(shí)現(xiàn)了 changelistener 接口,該方法重寫接口 中為實(shí)現(xiàn)的 statechanged()方法 3 3、 packagepackage dwldwl classclass connectdbconnectdb java.lang.object dwl.connectdbdwl.connectdb public class connectdbconnectdb extends java.lang.object 該類實(shí)現(xiàn)連接數(shù)據(jù)庫的界面 構(gòu)造方法摘要構(gòu)造方法摘要 connectdbconn
55、ectdb() 方法摘要方法摘要 boolean chackloginchacklogin(java.lang.string useinfo, java.sql.connection conn) 該方法實(shí)現(xiàn)檢查登陸用戶帳號(hào)密碼是否正確 java.lang.stringgetlogininfo getlogininfo() 得到登陸用戶的資料 private java.lang.stringgetname getname() 得到登陸用戶的用戶名 javax.swing.jpanelgetpanel getpanel() 得到該類的窗口中組件的布局界面 private java.lang.str
56、inggetpassword getpassword() 得到登陸用戶的密碼 private java.lang.stringgettype gettype() 用于獲得登陸用戶的類型 4 4、 packagepackage dwldwl classclass getdatagetdata java.lang.object dwl.getdatadwl.getdata public class getdatagetdata extends java.lang.object 該類用于為每個(gè)需要數(shù)據(jù)庫中數(shù)據(jù)的窗口取出數(shù)據(jù) 構(gòu)造方法摘要構(gòu)造方法摘要 getdatagetdata() getdatag
57、etdata(java.sql.connection conn) 方法摘要方法摘要 java.lang.stringgetcolumnname getcolumnname() 得到 change 表的列名 java.lang.string getcontainsgetcontains(java.sql.resultset rschange) 把記錄集中的內(nèi)容轉(zhuǎn)化為二維數(shù)組 intgetid getid() 取得指定要添加的新員工的 id java.util.vector getsystemgetsystem(java.lang.string tablename) 得到指定數(shù)據(jù)庫表的內(nèi)容 jav
58、a.util.vector getsysteminfogetsysteminfo(java.lang.string column) 得到賬號(hào)密碼表指定列的所有內(nèi)容 5 5、 packagepackage dwldwl classclass mainmain java.lang.object dwl.maindwl.main public class mainmain extends java.lang.object implements java.awt.event.actionlistener 主程序,創(chuàng)建程序主界面以及啟動(dòng)程序 構(gòu)造方法摘要構(gòu)造方法摘要 mainmain() 創(chuàng)建程序主窗口
59、 方法摘要方法摘要 private voidabout about() 本程序的說明 void actionperformedactionperformed(java.awt.event.actionevent ae) 在菜單欄上顯示時(shí)間 private voidaddnewworker addnewworker() 添加新員工信息 private voidchangeworker changeworker() 員工的人事變動(dòng) private voidconnectdatabase connectdatabase() 連接并打開數(shù)據(jù)庫 private boolean initdatabasei
60、nitdatabase(int reason) 初始化數(shù)據(jù)庫,reason 為 0 說明程序運(yùn)行時(shí)檢查是否需 要初始化數(shù)據(jù)庫,是否初始化取決于 propertities 中的 count 屬 性 private booleaninitproperties initproperties() 獲得系統(tǒng)屬性,這些系統(tǒng)屬性包括一些常量 private voidjbinit jbinit() 初始化界面,創(chuàng)建菜單、工具欄 private voidlogindatabase logindatabase() 顯示連接數(shù)據(jù)庫窗口,并且建立與數(shù)據(jù)庫的連 接 private voidlogoutdatabase
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度時(shí)尚服飾店門面房買賣協(xié)議
- 二零二五年度演出活動(dòng)主辦方觀眾免責(zé)協(xié)議模板
- 二零二五年度綜合醫(yī)院與專科醫(yī)院雙向轉(zhuǎn)診合作協(xié)議書
- 2025年度航空航天知識(shí)產(chǎn)權(quán)保護(hù)及保密合同
- 二零二五年度退股股權(quán)變更與風(fēng)險(xiǎn)控制協(xié)議
- 2025年度裝修公司拖欠工資無勞動(dòng)合同糾紛解決協(xié)議
- 二零二五年度金融科技內(nèi)部股東股權(quán)轉(zhuǎn)讓合同范本
- 二零二五年度石英石采礦權(quán)轉(zhuǎn)讓合同
- 二零二五年度培訓(xùn)學(xué)校師資培訓(xùn)資料保密及保密期限合同
- 二零二五年度培訓(xùn)機(jī)構(gòu)中途入股投資合作協(xié)議
- 2025四川省資陽市人民政府政務(wù)服務(wù)中心招聘4人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 華東師大版初中科學(xué)八年級(jí)上冊知識(shí)點(diǎn)
- 【MOOC】跨文化思想交流英語-南京理工大學(xué) 中國大學(xué)慕課MOOC答案
- 部編人教版五年級(jí)下冊小學(xué)數(shù)學(xué)全冊教案
- 2024年世界職業(yè)院校技能大賽高職組“聲樂、器樂表演組”賽項(xiàng)參考試題庫(含答案)
- 2024年共青團(tuán)入團(tuán)考試題庫及答案
- 2024年共青團(tuán)入團(tuán)考試測試題庫及答案
- 2024解析:第十二章機(jī)械效率-講核心(原卷版)
- 四川省德陽市(2024年-2025年小學(xué)五年級(jí)語文)人教版小升初真題(上學(xué)期)試卷及答案
- 2023年國家公務(wù)員錄用考試《申論》真題(副省卷)及答案解析
- 2023年海南省公務(wù)員錄用考試《行測》真題卷及答案解析
評論
0/150
提交評論