軟件工程課程設(shè)計(jì)工資管理系統(tǒng)_第1頁(yè)
軟件工程課程設(shè)計(jì)工資管理系統(tǒng)_第2頁(yè)
軟件工程課程設(shè)計(jì)工資管理系統(tǒng)_第3頁(yè)
軟件工程課程設(shè)計(jì)工資管理系統(tǒng)_第4頁(yè)
軟件工程課程設(shè)計(jì)工資管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(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)介

1、1 前言課程設(shè)計(jì)是對(duì)學(xué)生的一種全面綜合訓(xùn)練,是與課堂聽(tīng)講、自學(xué)和練習(xí)相輔相成的、必不可少的一個(gè)教學(xué)環(huán)節(jié)。通常,課程設(shè)計(jì)中的問(wèn)題比平時(shí)的習(xí)題復(fù)雜得多,也更接近實(shí)際。課程設(shè)計(jì)著眼于原理與應(yīng)用的結(jié)合點(diǎn),使學(xué)生學(xué)會(huì)如何把書上學(xué)到的知識(shí)用于解決實(shí)際問(wèn)題,培養(yǎng)軟件工作所需要的動(dòng)手能力。另一方面,使書上的知識(shí)變活,起到深化理解和靈活應(yīng)用教學(xué)內(nèi)容的目的。平時(shí)的習(xí)題局限于一個(gè)和二個(gè)知識(shí)點(diǎn),而課程設(shè)計(jì)題是軟件設(shè)計(jì)的綜合訓(xùn)練,包括問(wèn)題分析,總體結(jié)構(gòu)設(shè)計(jì),用戶界面設(shè)計(jì)、程序設(shè)計(jì)、基本技能和技巧,以及一整套軟件工作規(guī)范的訓(xùn)練和科學(xué)作風(fēng)的培養(yǎng)。我們這組選的課題是工資管理系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)。從接到任務(wù)書開(kāi)始,我們首先完成了系

2、統(tǒng)的需求分析與概要設(shè)計(jì),在完成這些任務(wù)時(shí),我們深感理論與實(shí)踐的結(jié)合的是需要一個(gè)過(guò)程。從個(gè)人分工到整個(gè)系統(tǒng)分析,從設(shè)計(jì)到測(cè)試之所以能順利完成是和大家的努力分不開(kāi)的。雖然還有一些不足之處,但是我們還是從中獲益不少。下面簡(jiǎn)要介紹一下我們課題組的分工,我們這組的分工其實(shí)借鑒了shari lawrence pfleeger 和joanne m.atlee 合著的 software engineering theory and practice (高等教育出版社第三版影印版)中的一些理論,這些知識(shí)可以參考此書的第25頁(yè)中關(guān)于“開(kāi)發(fā)團(tuán)隊(duì)的角色分工”一節(jié)。根據(jù)分工的細(xì)化和部分重疊原則,我們組的具體分如下: (

3、1)項(xiàng)目管理 : 王培 (2)需求分析 : 鐘耀明、賀純 (3)概要設(shè)計(jì) : 賀純、趙亦嫻 (4)詳細(xì)設(shè)計(jì) : 趙亦嫻、王培、鐘耀明、楊安、陳華、賀純 (5)程序編碼 : 王培、陳華 (6)系統(tǒng)測(cè)試 : 陳華、楊安 我的主要任務(wù)是概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)2需求分析2.1 任務(wù)概述 現(xiàn)代企業(yè)基本上都引進(jìn)了計(jì)算機(jī)軟件對(duì)公司業(yè)務(wù)進(jìn)行管理,這樣做有很多優(yōu)點(diǎn),一是提高了工作的效率,同時(shí)也減少了手工操作的錯(cuò)誤以及人員的開(kāi)支。本課題開(kāi)發(fā)的工資管理系統(tǒng)正是基于這樣的目的實(shí)現(xiàn)的,系統(tǒng)完成的主要功能是對(duì)員工工資的管理,同時(shí)還包括對(duì)員工信息、部門信息以及附屬于員工、部門的職稱和職務(wù)信息的管理。系統(tǒng)主要采用事務(wù)型數(shù)據(jù)庫(kù)設(shè)計(jì)

4、,但對(duì)于員工工資的信息,系統(tǒng)能夠保留其相應(yīng)的歷史記錄,包括員工的請(qǐng)假信息,出差信息以及工資結(jié)算信息等。本系統(tǒng)面向員工和管理人員同時(shí)開(kāi)放,普通用戶可以進(jìn)行查詢以及對(duì)個(gè)人相關(guān)信息的修改等操作,管理賬戶則擁有系統(tǒng)的全部功能。系統(tǒng)不允許非經(jīng)認(rèn)證通過(guò)的用戶使用系統(tǒng)。系統(tǒng)采用java語(yǔ)言開(kāi)發(fā),系統(tǒng)的數(shù)據(jù)使用oracle數(shù)據(jù)庫(kù)進(jìn)行管理。2. 功能需求分析(1)系統(tǒng)能夠維護(hù)員工的基本信息,部門、職務(wù)、職稱以及工資記錄等信息。(2)系統(tǒng)應(yīng)該能記錄員工的每一個(gè)職稱信息,并授予相應(yīng)的職稱,系統(tǒng)在計(jì)算員工工資的時(shí)候選取職稱對(duì)應(yīng)的最高職稱津貼。(3)工資表應(yīng)當(dāng)由系統(tǒng)自動(dòng)生成。系統(tǒng)負(fù)責(zé)員工的工資表以及員工工資的歷史記錄及

5、記錄員工的請(qǐng)假信息和出差信息等意外情況。(4)系統(tǒng)可以給管理員提供權(quán)限增加刪除修改系統(tǒng)用戶以及其它實(shí)體信息,系統(tǒng)的部分權(quán)限不能下放給普通用戶以保證系統(tǒng)的安全性以及數(shù)據(jù)的正確性。2.3 外部接口需求分析系統(tǒng)人機(jī)交互界面為半屏幕大小,采用上下左右居中方式顯示,系統(tǒng)分辯率默認(rèn)設(shè)置為1280*800,實(shí)際的界面大小由具體的屏幕決定。主界面包括標(biāo)題欄,菜單欄,快捷工作區(qū),幫助信息區(qū)(默認(rèn)是隱藏的)。每一個(gè)菜單對(duì)應(yīng)一個(gè)鍵盤快捷鍵區(qū)。2.4 性能需求分析系統(tǒng)在主頻1.5ghz,內(nèi)存512mb,總線頻率667mhz的硬件平臺(tái)上運(yùn)行時(shí),系統(tǒng)的響應(yīng)時(shí)間、更新處理時(shí)間、數(shù)據(jù)轉(zhuǎn)換與傳輸時(shí)間、運(yùn)行時(shí)間均能達(dá)到毫秒級(jí)。系

6、統(tǒng)支持用戶并發(fā)操作,事務(wù)采用可串行化隔離級(jí)別,防止在讀寫過(guò)程中產(chǎn)生的丟失修改、讀臟數(shù)據(jù)、不可重復(fù)讀等一系列由并發(fā)操作帶來(lái)的不一致問(wèn)題。系統(tǒng)的運(yùn)行主存控制在1024kb以內(nèi),響應(yīng)時(shí)間控制在1000ms以內(nèi),系統(tǒng)對(duì)數(shù)據(jù)的存儲(chǔ)空間取決于數(shù)據(jù)庫(kù)系統(tǒng)表空間的約束限制。2.5 軟件屬性需求分析系統(tǒng)必須保證所有操作結(jié)果以及存儲(chǔ)數(shù)據(jù)的正確性,對(duì)于用戶的非法操作,系統(tǒng)必須能夠提出告警信息,對(duì)于用戶的錯(cuò)誤操作,系統(tǒng)能夠提供錯(cuò)誤信息以及錯(cuò)誤源。在數(shù)據(jù)庫(kù)操作上的異常,系統(tǒng)也應(yīng)捕捉到并提供界面化的提示信息,對(duì)于可能會(huì)產(chǎn)生錯(cuò)誤的操作,應(yīng)當(dāng)能夠防范。另外系統(tǒng)必須提供一定的安全保密性,一些保密信息只針對(duì)特定的用戶提供。它人員

7、無(wú)法訪問(wèn)。軟件必須為中文操作界面,并且所有的中文功能菜單項(xiàng)描述須與其實(shí)際對(duì)應(yīng)的功能相一致,不能存在功能不足或者功能不對(duì)的情況,軟件采用面向?qū)ο蠹夹g(shù)架構(gòu),遵循代碼編寫規(guī)范,提供適當(dāng)?shù)拇a注釋,盡可能地采用可復(fù)用技術(shù),提高軟件的可維護(hù)性。概要設(shè)計(jì)3.1 系統(tǒng)設(shè)計(jì)總體思想當(dāng)工資管理系統(tǒng)處理的事務(wù)主要有工資管理,員工信息管理,部門信息管理,職務(wù)信息管理,職稱信息管理。職務(wù)和職稱以及部門信息管理主要服務(wù)于工資管理和員工信息管理,系統(tǒng)接收的輸入項(xiàng)目有員工信息,部門信息,職務(wù)信息,職稱信息,請(qǐng)假信息,出差信息等。系統(tǒng)能夠接受用戶的請(qǐng)求,顯示相應(yīng)的查詢信息,增加、刪除、修改相應(yīng)的合法的信息。圖3.1.1 工資

8、管理系統(tǒng)hipo圖圖3.1.1是工資管理系統(tǒng)的hipo圖,上圖主要說(shuō)明了系統(tǒng)的各個(gè)主要功能以及各功能模塊之間的層次關(guān)系。上圖的基本框架也是整個(gè)系統(tǒng)界面的基要框架。系統(tǒng)的人機(jī)交互采用圖形化用戶界面,考慮到系統(tǒng)的平臺(tái)無(wú)關(guān)性,系統(tǒng)由java語(yǔ)言實(shí)現(xiàn),系統(tǒng)的界面元素也是采用了java的jfc圖形類庫(kù)。系統(tǒng)可以在安裝了java運(yùn)行環(huán)境的平臺(tái)上運(yùn)行。系統(tǒng)從登錄界面開(kāi)始,要求驗(yàn)證用戶信息,用戶通過(guò)驗(yàn)證后,進(jìn)入系統(tǒng)主界面。主界面提供了一個(gè)菜單框架,可以通過(guò)各個(gè)菜單類的一個(gè)實(shí)例來(lái)加載菜單,這一步不是由主界面完成的,而是由所需要被加載的類完成的,但需要主界面類去生成這些菜單英的實(shí)例。系統(tǒng)加載的功能主要包括系統(tǒng)管理

9、,用戶管理,工資管理,部門管理,職務(wù)管理,職稱管理以及適當(dāng)?shù)膸椭畔?。系統(tǒng)管理主要向用戶提供用戶更改密碼的操作以及退出程序的功能。用戶管理允許管理員新建一個(gè)員工信息,比如當(dāng)公司新增加了一個(gè)員工時(shí),系統(tǒng)為該員工生成相應(yīng)的工資關(guān)系,但新建這個(gè)員工的信息則是第一環(huán)節(jié),當(dāng)然如果公司離任了一名員工時(shí),此員工與公司的工資關(guān)系已解除,則沒(méi)有必要保留該員工的信息,系統(tǒng)應(yīng)向管理員提供刪除該員工的功能,同時(shí)刪除與該員工相關(guān)的所有其它信息。公司所在的員工可能有部分具有相應(yīng)的職稱,考慮到職稱的種類繁多,系統(tǒng)只添加本公司員工所擁有的職稱的一個(gè)集合,而不考慮外界的因素,因此系統(tǒng)提供了增加、刪除、修改、查詢等對(duì)職稱的相關(guān)操

10、作。例如,當(dāng)公司一員工拿到高級(jí)職稱后,管理員首選應(yīng)該查看系統(tǒng)是否記錄了相應(yīng)職稱的信息,如果有,則直接將該職稱信息添加到員工信息中去,如果沒(méi)有,則應(yīng)當(dāng)先增加這一職稱信息,再執(zhí)行上述操作。另外在刪除一個(gè)職稱的時(shí)候,系統(tǒng)要求必須沒(méi)有員工擁有此職稱,否則系統(tǒng)不能刪除,如果確實(shí)要?jiǎng)h除,則只能先刪除擁有此職稱的所有員工或者撤銷擁有此職稱的所有員工的此職稱。3.2 系統(tǒng)功能模塊設(shè)計(jì)圖3.2.1 系統(tǒng)功能模塊設(shè)計(jì)3.3 系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì) 通過(guò)對(duì)工資管理系統(tǒng)的數(shù)據(jù)分析并根據(jù)業(yè)務(wù)之間的聯(lián)系,我們可以得出與系統(tǒng)相關(guān)的實(shí)體有:員工、部門、職務(wù)、職稱、請(qǐng)假信息、出差信息、工資。工資管理系統(tǒng)的數(shù)據(jù)據(jù)庫(kù)管理模式用語(yǔ)義描述如下

11、:(1) 每一個(gè)員工只能屬于一個(gè)部門,擔(dān)任一個(gè)職務(wù),但是可以擁有多個(gè)職稱.(2) 每個(gè)部門可以有多名員工,有不同的職務(wù).(3) 每個(gè)職務(wù)可以由多名員工擔(dān)任,可以在相同的部門,也可以在不同的部門.(4) 每個(gè)職稱可以授予不同的員工.(5) 每個(gè)員工每個(gè)月都會(huì)有一份工資記錄,并且會(huì)有一份歷史工資記錄.(6) 員工每個(gè)月可以請(qǐng)假多次或者出差多次.但是要扣除相應(yīng)的工資或者獲得相應(yīng)的補(bǔ)助.每個(gè)員工都有一分歷史請(qǐng)假記錄和歷史出差記錄。綜合上述語(yǔ)義,可以得出系統(tǒng)的er圖如圖3.3.1所示:3.3.1 工資管理系統(tǒng)er圖根據(jù)實(shí)體之間的聯(lián)系,以及分析實(shí)體的屬性,得出了工資管理系統(tǒng)中各個(gè)實(shí)體的屬性,相關(guān)屬性列表見(jiàn)

12、表3.3.1。表3.3.1 工資管理模型的相關(guān)屬性列表實(shí)體或聯(lián)系屬性員工員工編號(hào)、姓名、性別、部門號(hào)、職務(wù)部門部門編號(hào)、名稱、人數(shù)、電話職務(wù)職務(wù)編號(hào)、名稱、基本工資職稱職稱編號(hào)、名稱、職稱津貼出差信息出差編號(hào)、員工編號(hào)、天數(shù)、出差年份、出差月份、出差補(bǔ)助員工職稱信息員工編號(hào)、職稱編號(hào)請(qǐng)假信息請(qǐng)假編號(hào)、員工編號(hào)、天數(shù)、年、月、扣除工資、請(qǐng)假原由工資工資編號(hào)、員工編號(hào)、工資所屬年月、基本工資、扣除工資、出差補(bǔ)助、崗位工資、職稱津貼、工資總額說(shuō)明:加粗部分為主鍵,加底線部分為外鍵 圖3.3.2 實(shí)體及其相關(guān)屬性圖詳細(xì)設(shè)計(jì)4.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)4.1.1 數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)employee員工信息表字段名

13、數(shù)據(jù)類型約束名稱說(shuō)明empnonumber(6)主鍵員工編號(hào)enamevarchar2(20)not null員工姓名sexvarchar2(4)not null性別deptnonumber(6)外鍵department(deptno)部門編號(hào)dutynonumber(6)外鍵duty(dutyno)職務(wù)編號(hào)department-部門信息表字段名數(shù)據(jù)類型約束名稱說(shuō)明deptnonumber(6)主鍵部門編號(hào)deptnamevarchar2(20)not null部門名empnumnumber部門人數(shù)telnumber電話duty-職務(wù)信息表字段名數(shù)據(jù)類型約束名稱說(shuō)明dutynonumber(6

14、)主鍵職務(wù)編號(hào)dutynamevarchar(20)not null職務(wù)名dutypaynumberdefault(0), check(dutypay>=0)職務(wù)基本工資title-職稱信息表字段名數(shù)據(jù)類型約束名稱說(shuō)明titlenonumber(6)主鍵職稱編號(hào)titlenamevarchar2(20)not null職稱名titlepaynumberdefault(0), check(titlepay>=0)職稱津貼titledemployee-員工職稱聯(lián)系表字段名數(shù)據(jù)類型約束名稱說(shuō)明empnonumber(6)組合主鍵, 外鍵employee(empno)員工編號(hào)titleno

15、number(6)職稱編號(hào)yearnumber(4)年記錄職稱授予時(shí)間monthnumberbetween 1 and 12月leave-員工請(qǐng)假信息表字段名數(shù)據(jù)類型約束名稱說(shuō)明leavenonumber(6)主鍵請(qǐng)假編號(hào)empnonumber(6)外鍵employee(empno)請(qǐng)假員工leavedaysnumbernot null請(qǐng)假天數(shù)leaveyearnumber(4)not null請(qǐng)假年份leavemonthnumbernot null請(qǐng)假月份deductionnumbernot null扣除工資reasonvarchar(60)請(qǐng)假原因businesstravel-出差信息表字

16、段名數(shù)據(jù)類型約束名稱說(shuō)明travelnonumber(6)primary key出差編號(hào)empnonumber(6)外鍵employee(empno)員工編號(hào)traveldaysnumbernot null出差天數(shù)travelyearnumber(4)not null出差年份travelmonthnumbernot null出差月份travelpaynumbernot null出差補(bǔ)助reward-獎(jiǎng)勵(lì)信息表字段名數(shù)據(jù)類型約束名稱說(shuō)明rewardnonumber(6)primary key獎(jiǎng)勵(lì)編號(hào)empnonumber(6)外鍵employee(empno)員工編號(hào)rewardyearnumb

17、er(4)not null獎(jiǎng)勵(lì)年份rewardmonthnumbernot null獎(jiǎng)勵(lì)月份rewardpaynumber獎(jiǎng)勵(lì)金額reasonvarchar(60)獎(jiǎng)勵(lì)原由penalty-罰金信息表字段名數(shù)據(jù)類型約束名稱說(shuō)明penaltynonumber(6)primary key罰金編號(hào)empnonumber(6)外鍵employee(empno)員工編號(hào)penaltyyearnumber(4)not null罰金年份penaltmonthnumbernot null罰金月份penaltynumnumber罰金額度reasonvarchar(60)罰金原由salary-職工工資信息表字段名數(shù)

18、據(jù)類型約束名稱說(shuō)明salnonumber(6)primary key工資編號(hào)empnonumber(6)外鍵employee(empno)員工編號(hào)payyearnumber(4)工資年份paymonthnumberbetween 1 and 12工資月份basepaynumber基本工資deductionnumber請(qǐng)假扣除金額travelpaynumber出差補(bǔ)助dutypaynumber職務(wù)工資titlepaynumber職稱津貼rewardpaynumber獎(jiǎng)勵(lì)金額penaltynumnumber罰金totalpaynumber工資總額4.1.2 程序數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)(1)adt depar

19、tmentbean數(shù)據(jù)對(duì)象:d=deptno,deptname,empnum,tel|deptno,empnumt和tel均為整數(shù),deptname為字符串?dāng)?shù)據(jù)關(guān)系:r1=<deptno,deptname,tel>|deptno為部門編號(hào),deptname為部門號(hào),tel為部門電話r2=<deptno,empnum>|deptno為部門編號(hào),empnum為部門人數(shù)基本操作:setdeptno(int no):設(shè)置部門的部門號(hào)為no.getdeptno ():返回部門的部門號(hào)。setdeptname(string name):設(shè)置部門的部門名為name.getdeptna

20、me():返回部門的部門號(hào).setempnum(int num):設(shè)置部門的員工人數(shù)為num.getempnum():返回部門的人數(shù).settel(int telephone):設(shè)置部門的電話號(hào)碼為telephone.gettel():返回部門的電話號(hào)碼。adt departmentbean (2)adt jdbc 數(shù)據(jù)對(duì)象:d=dburl,theuser,thepsw,c,stmt,rs|dburl提供數(shù)據(jù)庫(kù)對(duì)象,theuser,thepsw指定用戶名和密碼,c與數(shù)據(jù)庫(kù)建立一個(gè)連接,stmt聲明一條sql語(yǔ)句,rs保存執(zhí)行sql語(yǔ)句的結(jié)果集. 數(shù)據(jù)關(guān)系:r1<theuser,theps

21、w>:用戶登陸的驗(yàn)證信息用戶名和密碼.r2<stmt,rs>:rs為語(yǔ)句stmt執(zhí)行的結(jié)果集. 基本操作:jdbc():加載數(shù)據(jù)庫(kù)驅(qū)動(dòng),建立數(shù)據(jù)庫(kù)連接.executeupdate(string sql):執(zhí)行sql更新語(yǔ)句,成功返回true,失敗則返回false.executequery(string sql):執(zhí)行sql查詢語(yǔ)句,返回結(jié)果集rs.close():關(guān)閉與數(shù)據(jù)庫(kù)的連接.adt jdbc4.2 模塊功能詳細(xì)設(shè)計(jì)4.2.1 部門信息刪除模塊設(shè)計(jì)(1)類圖設(shè)計(jì)圖4.2.1.1 部門信息刪除模塊類圖以下對(duì)部分類的屬性和方法的說(shuō)明:departmentmenu類:屬性名稱

22、屬性類型屬性說(shuō)明deptmenujmenu頂層菜單項(xiàng)deptinqueryitemjmenuitem部門信息查詢菜單項(xiàng)deptdeleteitemjmenuitem部門信息刪除菜單項(xiàng)deptupdateitemjmenuitem部門信息更新菜單項(xiàng)useruserbean用戶業(yè)務(wù)類說(shuō)明: 當(dāng)點(diǎn)擊各菜單項(xiàng)時(shí),會(huì)彈出相應(yīng)的操作界面。departmentdelete類:方法名稱返回值類型功能說(shuō)明isdeptexist()boolean判斷輸入的部門號(hào)是否存在isdeptempty()boolean判斷輸入的部門號(hào)是否為空executedelete()void執(zhí)行刪除操作showaction 類:該類為

23、內(nèi)部類,是將各功能集成到系統(tǒng)的框架之中.showaction類的構(gòu)造函數(shù)提供了一個(gè)命名菜單項(xiàng)的方法,主要功能引入了departmentdelete這個(gè)類到系統(tǒng)中。通過(guò)監(jiān)聽(tīng)器showaction執(zhí)行actionperformed()方法,系統(tǒng)就應(yīng)該可以產(chǎn)生期望的動(dòng)作。(2)界面設(shè)計(jì)圖4.2.1.2 界面設(shè)計(jì)界面設(shè)計(jì)說(shuō)明:該文本框?yàn)閱涡形谋究颍梢暂斎胍獎(jiǎng)h除的部門號(hào),當(dāng)系統(tǒng)監(jiān)聽(tīng)到文本框中選項(xiàng)被確定,將會(huì)自動(dòng)地將該部門信息從數(shù)據(jù)庫(kù)中刪除。(3)核心代碼public class departmentdeleteprivate static final long serialversionuid = -

24、8537661840347605772l;public departmentdelete() executedelete();private boolean isdeptexist(int deptno)resultset rs; jdbc conn=null;boolean flag = false;try conn = new jdbc();rs = conn.executequery("select deptno from department "); while(rs.next() if( deptno = rs.getint("deptno")

25、 flag = true; break; catch (instantiationexception e1) e1.printstacktrace(); catch (illegalaccessexception e1) e1.printstacktrace(); catch (classnotfoundexception e1) e1.printstacktrace(); catch (sqlexception e1) e1.printstacktrace(); return flag;public boolean isdeptempty(int deptno)resultset rs; j

26、dbc conn=null;boolean flag = false;try conn = new jdbc();rs = conn.executequery("select count(*) from employee where deptno="+deptno); while(rs.next() if( rs.getint(1) = 0) flag = true; break; catch (instantiationexception e1) e1.printstacktrace(); catch (illegalaccessexception e1) e1.prin

27、tstacktrace(); catch (classnotfoundexception e1) e1.printstacktrace(); catch (sqlexception e1) e1.printstacktrace(); return flag;private void executedelete() string deptnostr = joptionpane.showinputdialog(null,"請(qǐng)輸入待刪除部門編號(hào)!"); int deptno=0; boolean flag =true; try deptno = integer.parseint(

28、deptnostr); catch(exception e) flag=false; if( isdeptexist(deptno) = true ) if( isdeptempty(deptno) = false ) joptionpane.showmessagedialog(null,"部門中有員工存在,無(wú)法刪除!"); else jdbc conn = null; int res=0; try conn = new jdbc();preparedstatement pstmt = conn.c.preparestatement("delete from de

29、partment where deptno=?");pstmt.setint(1, deptno);res = pstmt.executeupdate();if( res !=0 ) joptionpane.showmessagedialog(null, "成功刪除部門"+deptno);else joptionpane.showmessagedialog(null, "刪除失敗"); catch (instantiationexception e) e.printstacktrace(); catch (illegalaccessexcept

30、ion e) e.printstacktrace(); catch (classnotfoundexception e) e.printstacktrace(); catch (sqlexception e) e.printstacktrace(); else if(flag) joptionpane.showmessagedialog(null, "您輸入的部門號(hào)不存在!"); /executedelete4.2.2 部門信息增加模塊設(shè)計(jì)(1)類圖設(shè)計(jì)根據(jù)系統(tǒng)的需求,我們需要使得系統(tǒng)能夠通過(guò)圖形化的界面來(lái)增添一個(gè)部門,并將輸入的部門信息長(zhǎng)久得保存在數(shù)據(jù)庫(kù)文件中,為此我們需

31、要一個(gè)從界面類到與數(shù)據(jù)庫(kù)連接的底層類的一系列類的組合來(lái)實(shí)現(xiàn)這樣的需要. 圖4.2.1.2所示的類圖就是一個(gè)增加新員工的實(shí)現(xiàn)過(guò)程,departmentadd類是一個(gè)繼承自javax.swing.jframe類的界面類,它提供了一個(gè)供錄入員工信息的操作界面,所有錄入的信息,則通過(guò)departmentbean類生成一個(gè)實(shí)例對(duì)象來(lái)保存,departmentadd類的構(gòu)造函數(shù)負(fù)責(zé)調(diào)用createaddinterface()私有方法來(lái)構(gòu)造出界面,以及初始化各控件中的數(shù)值,如generatedeptno()是生成部門編號(hào),部編號(hào)并不能由用戶或者管理員確定,而是由系統(tǒng)查詢數(shù)據(jù)庫(kù)后,遵循唯一性原則生成出來(lái)的編號(hào)

32、.這樣做不僅避免用戶管理編號(hào)的繁瑣性,而且也增強(qiáng)了系統(tǒng)的安全性.圖4.2.2.1 部門信息的增加功能模塊類圖以下部分類的屬性和方法的說(shuō)明:departmentmenu類:屬性名稱屬性類型屬性說(shuō)明deptmenujmenu頂層菜單項(xiàng)deptinqueryitemjmenuitem部門信息查詢菜單項(xiàng)deptdeleteitemjmenuitem部門信息刪除菜單項(xiàng)deptupdateitemjmenuitem部門信息更新菜單項(xiàng)useruserbean參數(shù)傳遞說(shuō)明: 當(dāng)點(diǎn)擊各菜單項(xiàng)時(shí),會(huì)彈出相應(yīng)的操作界面。load department方法是用來(lái)加載departmentmenu類 。departmen

33、tadd類:屬性名稱屬性類型屬性說(shuō)明deptnotextjtextfied部門編號(hào)輸入文本框deptnametextjtextfied部門名稱輸入文本框deptteltextjtextfied部門電話輸入文本框confirmbuttonjbutton確定按鈕cancelbuttonjbutton取消按鈕deptdepartmentbean參數(shù)傳遞departmentadd類:方法名稱返回值類型功能說(shuō)明departmentadd()void是departmentadd類的構(gòu)造函數(shù)initdeptinfo()void初始化部門信息genertatedeptno()void產(chǎn)生部門編號(hào)createa

34、ddinterface()void創(chuàng)建增加信息界面storedepartment()void將新的信息保存到數(shù)據(jù)庫(kù)中showaction 類:該類為內(nèi)部類,是將各功能集成到系統(tǒng)的框中.showaction類的構(gòu)造函數(shù)提供了一個(gè)命名菜單項(xiàng)的方法,主要功能是引入departmentdelete這個(gè)類到系統(tǒng)中。通過(guò)監(jiān)聽(tīng)器showactionactionperformed()方法,系統(tǒng)就應(yīng)該可以產(chǎn)生期望的動(dòng)作。監(jiān)聽(tīng)器confirmaction和cancelaction這兩個(gè)監(jiān)聽(tīng)器實(shí)現(xiàn)的均是java.awt.event.actionlistener接口,系統(tǒng)通過(guò)監(jiān)聽(tīng)器響應(yīng)用戶的保存或者取消操作,調(diào)用數(shù)據(jù)

35、庫(kù)類jdbc來(lái)執(zhí)行sql存儲(chǔ)語(yǔ)句實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的連接以及對(duì)數(shù)據(jù)庫(kù)的增加信息操作。(2)界面設(shè)計(jì)圖4.2.2.2 增加部門信息界面界面說(shuō)明:以上文本框都是單行文本框,可以輸入部門編號(hào),部門名稱,部門電話,當(dāng)系統(tǒng)監(jiān)聽(tīng)到文本框中的內(nèi)容被確定,將會(huì)新的部門信息保存到數(shù)據(jù)庫(kù)中。(3)核心代碼 public class departmentadd extends jframe this.settitle("add a new department!"); this.setsize(width,height); this.setlayout(null); this.setresizable

36、(false); v dimension scr=toolkit.getdefaulttoolkit().getscreensize(); dimension frm=this.getsize(); this.setlocation(int)(scr.getwidth()-frm.getwidth()/2, (int)(scr.getheight()-frm.getheight()/2-50); createaddinterface(); generatedeptno(); initdeptinfo();private void initdeptinfo() dept.setdeptname(

37、"某部門"); dept.settel(1000000); dept.setempnum(0);private void generatedeptno() resultset rs; jdbc conn=null;int no = 102001;try conn = new jdbc();rs = conn.executequery("select deptno from department order by deptno"); while(rs.next() if( no = rs.getint("deptno") +no; el

38、se break; dept.setdeptno(no); deptnotext.settext("" + no); catch (instantiationexception e1) e1.printstacktrace(); catch (illegalaccessexception e1) e1.printstacktrace(); catch (classnotfoundexception e1) e1.printstacktrace(); catch (sqlexception e1) e1.printstacktrace(); private void crea

39、teaddinterface()container contentpane = getcontentpane(); jlabel label1 = new jlabel("部門編號(hào):"); jpanel panel1 = new jpanel(); deptnotext = new jtextfield(10); deptnotext.seteditable(false); panel1.add(label1); panel1.add(deptnotext); jlabel label2 = new jlabel("部門名稱"); jpanel pane

40、l2 = new jpanel(); deptnametext = new jtextfield(10); panel2.add(label2); panel2.add(deptnametext); jlabel label3 = new jlabel("部門電話"); jpanel panel3 = new jpanel(); deptteltext = new jtextfield(10); panel3.add(label3); panel3.add(deptteltext); confirmbutton = new jbutton("保存");

41、cancelbutton = new jbutton("重置"); jpanel panel4 = new jpanel(); panel4.add(confirmbutton); panel4.add(cancelbutton); confirmbutton.addactionlistener(new confirmaction(); cancelbutton.addactionlistener(new cancelaction(); panel1.setsize(width,50); panel1.setlocation(0, 0); panel2.setsize(wi

42、dth,50); panel2.setlocation(0,50); panel3.setsize(width,50); panel3.setlocation(0,100); panel4.setsize(width,50); panel4.setlocation(0,150); contentpane.add(panel1); contentpane.add(panel2); contentpane.add(panel3); contentpane.add(panel4); private void storedepartment()int rs; jdbc conn = null; try conn = new jdbc();preparedstatement pstmt = conn.c.preparestatement("insert into department values(?,?,?,?)");pstmt.setint(1, dept.getdeptno();pstmt.setstring(2, dept.getdeptname();pstmt.setint(3, dept.getempnum();pstmt.setint(4, dept.gettel(); rs = ps

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論