可視化與面向?qū)ο蟪绦蛟O(shè)計(jì)工資管理系統(tǒng)報(bào)告_第1頁
可視化與面向?qū)ο蟪绦蛟O(shè)計(jì)工資管理系統(tǒng)報(bào)告_第2頁
可視化與面向?qū)ο蟪绦蛟O(shè)計(jì)工資管理系統(tǒng)報(bào)告_第3頁
可視化與面向?qū)ο蟪绦蛟O(shè)計(jì)工資管理系統(tǒng)報(bào)告_第4頁
可視化與面向?qū)ο蟪绦蛟O(shè)計(jì)工資管理系統(tǒng)報(bào)告_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、可視化與面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告 題目 工資管理系統(tǒng)指導(dǎo)老師 學(xué)號 姓名 目 錄一、課題背景及意義2二、需求分析21. 業(yè)務(wù)需求32. 功能需求33. 數(shù)據(jù)需求4三、系統(tǒng)體系結(jié)構(gòu)及功能設(shè)計(jì)51. 系統(tǒng)組成52. 數(shù)據(jù)庫設(shè)計(jì)5(一)概念結(jié)構(gòu)設(shè)計(jì)5(二)邏輯結(jié)構(gòu)設(shè)計(jì)6(三)數(shù)據(jù)庫模式定義6四、數(shù)據(jù)庫詳細(xì)設(shè)計(jì)81. 觸發(fā)器列表82. 存儲(chǔ)過程列表8五、系統(tǒng)實(shí)現(xiàn)91. 模塊簡述92. 模塊設(shè)計(jì)10六、參考文獻(xiàn)26一、 課題背景及意義工資管理既是企業(yè)勞動(dòng)人事管理的重要方面,同時(shí)也是企業(yè)財(cái)務(wù)管理的重要方面,因?yàn)樗呛腿恕①Y都相關(guān)的方面。工資管理需要和員工人事管理連接,同時(shí)連接工時(shí)考勤和加班情況等等,來

2、生成企業(yè)每個(gè)職工的基本工資、津貼、實(shí)際發(fā)放工資等。工資管理是一項(xiàng)瑣碎、復(fù)雜而又十分細(xì)致的工作,一般不允許發(fā)生差錯(cuò)。手工進(jìn)行工資發(fā)放工作,需要反復(fù)地進(jìn)行抄寫、計(jì)算,不僅花費(fèi)財(cái)務(wù)人員大量的時(shí)間,而且往往由于抄寫不慎,出現(xiàn)張冠李戴,或者由于計(jì)算機(jī)的疏忽,出現(xiàn)工資發(fā)放錯(cuò)誤的現(xiàn)象。同時(shí)工資的發(fā)放具有較強(qiáng)的時(shí)間限制,必須嚴(yán)格按照單位規(guī)定的時(shí)間完成計(jì)算和發(fā)放工作。正是工資管理的這種重復(fù)性、規(guī)律性、時(shí)間性,使得工資管理計(jì)算機(jī)化成為可能。計(jì)算機(jī)進(jìn)行工資發(fā)放工作,不僅能夠保證工資核算正確無誤、快速輸出,而且還可以利用工資數(shù)據(jù)庫對有關(guān)工資的各種信息進(jìn)行統(tǒng)計(jì),服務(wù)于財(cái)務(wù)部門其他方面的核算和財(cái)務(wù)處理。不同的企業(yè)有著不同

3、的人事制度、財(cái)務(wù)制度,也就決定了不同的企業(yè)具有不同的工資制度。本系統(tǒng)運(yùn)用了一般公司的工資計(jì)算公式,即根據(jù)員工的職務(wù)工種來確定基本工資,根據(jù)出工情況來扣除缺勤費(fèi),根據(jù)加班情況發(fā)放津貼。由于是一個(gè)人在做系統(tǒng),時(shí)間上也有限制,所以在保險(xiǎn),年終獎(jiǎng)金等方面沒有涉及到。但總體上是按照的工資管理的有關(guān)原理和技術(shù)來做的。二、 需求分析在構(gòu)造系統(tǒng)時(shí),首先從需求出發(fā)構(gòu)造數(shù)據(jù)庫表,然后再由數(shù)據(jù)庫表結(jié)合需求劃分系統(tǒng)功能模塊。這樣,就把一個(gè)大的系統(tǒng)分解成了幾個(gè)小系統(tǒng)。這里把系統(tǒng)的層次劃分為了四個(gè)部分:系統(tǒng)用戶管理,員工信息管理,工資有關(guān)信息設(shè)置,月工資管理。主要能夠?qū)崿F(xiàn)以下功能: 實(shí)現(xiàn)用戶登錄,進(jìn)行系統(tǒng)用戶的管理,判斷

4、; 能夠?qū)崿F(xiàn)對公司員工的基本信息的查詢和編輯管理; 能夠修改工資的標(biāo)準(zhǔn)和員工的工作情況; 能夠?qū)べY實(shí)行查詢,簡單的統(tǒng)計(jì)1. 業(yè)務(wù)需求從系統(tǒng)用戶角度考慮的業(yè)務(wù)流程圖:這里用戶是指包括相關(guān)部門的所有用戶圖2.1 業(yè)務(wù)流程圖2. 功能需求表1 系統(tǒng)功能列表編號功能名稱功能說明1.1登錄用戶輸入用戶名和密碼登錄系統(tǒng)1.2.1增加用戶增加一個(gè)系統(tǒng)用戶1.2.2刪除或修改用戶等級修改用戶的基本等級或刪除用戶1.3修改密碼用戶密碼的修改2.1員工信息添加添加員工記錄2.2員工信息刪改刪除或者修改員工的信息2.3.1按姓名檢索模糊查詢,輸入員工姓名查詢員工信息2.3.2按部門檢索按照部門查詢員工信息3.1工

5、作情況更改更改員工的加班,缺勤記錄3.2增加加班記錄增加一條員工的加班記錄3.3增加缺勤記錄增加一條員工的缺勤記錄4.1更改工資標(biāo)準(zhǔn)更改各職稱相應(yīng)的工資標(biāo)準(zhǔn)4.2增加工資記錄向數(shù)據(jù)庫中增加一條工資記錄4.3生成工資按月查詢工資記錄4.4工資統(tǒng)計(jì)按部門統(tǒng)計(jì)工資情況4.5個(gè)人工資查詢實(shí)現(xiàn)對單個(gè)人的工資查詢3. 數(shù)據(jù)需求系統(tǒng)處理的對象有:系統(tǒng)用戶信息:用戶名,登錄密碼,用戶等級,說明公司員工信息:員工編號,員工姓名,性別,部門編號,職稱編號,參加工作時(shí)間部門信息:部門編號,部門名稱,備注工資標(biāo)準(zhǔn):職稱號,職稱名,職稱基本工資,職稱補(bǔ)貼員工加班信息:員工編號,年月,加班天數(shù),加班補(bǔ)貼員工缺勤信息:員工

6、編號,年月,缺勤天數(shù),缺勤扣除月工資:員工編號,年月,職稱基本工資,職稱補(bǔ)貼,津貼,扣除,實(shí)發(fā)工資數(shù)據(jù)流圖和數(shù)據(jù)字典如下: 頂層數(shù)據(jù)流圖:圖2.2 頂層數(shù)據(jù)流程圖 0層數(shù)據(jù)流圖:圖2.3 0層數(shù)據(jù)流程圖三、 系統(tǒng)體系結(jié)構(gòu)及功能設(shè)計(jì)1. 系統(tǒng)組成系統(tǒng)開發(fā)的總體目標(biāo)是實(shí)現(xiàn)工資管理的系統(tǒng)化和自動(dòng)化,保證工資核算正確無誤、快速輸出。主要任務(wù)是對系統(tǒng)用戶信息、員工信息、工資信息等操作及外理。本系統(tǒng)為c/s結(jié)構(gòu)、運(yùn)行平臺為微軟vc+6.0以上版本。以及sql sever2000以上版本。下圖為系統(tǒng)結(jié)構(gòu)圖:圖3.1 系統(tǒng)結(jié)構(gòu)圖2. 數(shù)據(jù)庫設(shè)計(jì)(一)概念結(jié)構(gòu)設(shè)計(jì) 概念設(shè)計(jì)階段主要是將需求分析階段得到的用戶需求

7、抽象為信息結(jié)構(gòu)(概念模型)的過程。根據(jù)之前的分析,數(shù)據(jù)庫應(yīng)該主要的實(shí)體有員工,職稱(工資標(biāo)準(zhǔn)),月工資以及工作信息,以及系統(tǒng)用戶信息。 最后得到的實(shí)體關(guān)系圖如下: 圖3.2 實(shí)體關(guān)系圖 (二)邏輯結(jié)構(gòu)設(shè)計(jì) 將e-r圖轉(zhuǎn)化為關(guān)系模式:在設(shè)計(jì)時(shí),將一個(gè)1:n聯(lián)系的單方主碼加至多方。一個(gè)實(shí)體單獨(dú)轉(zhuǎn)化成一張表。根據(jù)設(shè)計(jì)原則和以上e-r圖,轉(zhuǎn)化為下面四張表:員工表:employees(employee_id, employee_name, sex, department_id, title_id, work_time)部門表: department(department_id,department_na

8、me,note)(職稱表)工資標(biāo)準(zhǔn)表:standard(title_id,title_name,title_salary,title_allowance)考勤情況表:attendance(employee_id, absent_month, absent_daynumber,losemoney)加班情況表:jiaban(employee_id, jiaban_month, jiaban_daynumber, getmoney)月工資表:salary(employee_id,salary_date, title_salary,title_allowance,jintie ,kouchu ,rea

9、l_salary)(三)數(shù)據(jù)庫模式定義表3.1:員工信息表列名數(shù)據(jù)類型取值約束索引否主鍵/外鍵可否為空說明employee_idchar(6)0001-9999clustered主鍵not null員工編號employee_namechar(10)not null員工姓名sexchar(10)男或女not null員工性別department_idchar(10)外鍵not null所在部門號title_idchar(10)外鍵not null員工職稱號work_timevarchar(50)1990.01 not null參加工作時(shí)間 表3.2:部門信息表列名數(shù)據(jù)類型取值約束索引否主鍵/外鍵

10、可否為空說明department_idchar(10)001-050clustered主鍵not null部門編號department_namechar(10)not null部門名稱notevarchar(50)null說明 表3.3:加班情況表列名數(shù)據(jù)類型取值約束索引否主鍵/外鍵可否為空說明employee_idchar(6)clustered外鍵not null員工編號jiaban_monthvarchar(50)clustered主鍵not null年月jiaban_daynumberint(4)0-7not null加班天數(shù)getmoneymoney(8) not null補(bǔ)貼表3.

11、4:缺勤信息表列名數(shù)據(jù)類型取值約束索引否主鍵/外鍵可否為空說明employee_idchar(6)clustered外鍵not null員工編號absent_monthvarchar(50)clustered主鍵not null年月absent_daynumberint(4)0-20not null缺勤天數(shù)losemoneymoney(8) not null扣除表3.5:工資標(biāo)準(zhǔn)表列名數(shù)據(jù)類型取值約束索引否主鍵/外鍵可否為空說明title_idchar(10)001-020clustered主鍵not null職稱編號title_namechar(10)not null職稱名稱title_sa

12、larymoney(8)not null基本工資title_allowancemoney(8) not null職稱補(bǔ)助表3.6:月工資表列名數(shù)據(jù)類型取值約束索引否主鍵/外鍵可否為空說明employee_idchar(6)0001-9999clustered外鍵not null員工編號salary_datevarchar(50)clustered主鍵not null年月title_salarymoney(8)not null基本工資title_allowancemoney(8) not null職稱補(bǔ)助jintiemoney(8)not null補(bǔ)貼kouchumoney(8)not null

13、扣除real_salarymoney(8) not null實(shí)際工資表3.7:系統(tǒng)用戶表列名數(shù)據(jù)類型取值約束索引否主鍵/外鍵可否為空說明user_namechar(10)clustered外鍵not null用戶名passwordchar(10)not null密碼gradeint(4)1-4not null身份等級notechar(50)nul說明四、 數(shù)據(jù)庫詳細(xì)設(shè)計(jì) 數(shù)據(jù)庫的建立是直接在企業(yè)管理器中建的,數(shù)據(jù)庫中的表清單在之前已經(jīng)列出,觸發(fā)器的具體定義和使用原理以及部分存儲(chǔ)過程的定義會(huì)在詳細(xì)設(shè)計(jì)中做具體的說明,這里給出觸發(fā)器的列表和存儲(chǔ)過程的列表和部分存儲(chǔ)過程的定義。1. 觸發(fā)器列表觸發(fā)器

14、編號表(建立在哪張表上)觸發(fā)器名稱觸發(fā)器的作用t1attendanceinsert_attendance保證attendance中數(shù)據(jù)的準(zhǔn)確性t2jiabaninsert_jiaban保證jiaban中數(shù)據(jù)的準(zhǔn)確性t3salaryinsertsalary保證插入的數(shù)據(jù)與工資標(biāo)準(zhǔn)相符合t4salaryinsertsalary1保證插入的數(shù)據(jù)與工作情況相符合t5salaryinsertsalary2保證插入的數(shù)據(jù)與工作情況相符合t6salarysalaryupdate自動(dòng)更新實(shí)發(fā)工資t7jiabansalaryupdatebutie更改工作情況時(shí)自動(dòng)更新工資表t8attendancesalaryu

15、pdatekouchu更改工作情況時(shí)自動(dòng)更新工資表t9standardstandardupdate更改工資標(biāo)準(zhǔn)時(shí)自動(dòng)更新工資表t10standardstandardupdate1更改工資標(biāo)準(zhǔn)時(shí)自動(dòng)更新工資表2. 存儲(chǔ)過程列表存儲(chǔ)過程編號存儲(chǔ)過程名稱作用p1deleteemployee刪除一個(gè)員工記錄p2absentadd增加一條缺勤記錄p3jiabanadd增加一條加班記錄p4search_by_employeename按員工名模糊查詢p5employeeadd增加一條員工記錄p6salaryadd增加一條工資記錄存儲(chǔ)過程deleteemployee的定義:create proc delete

16、employee(id char(6)asbegindelete from employeeswhere employee_id=idendreturn go存儲(chǔ)過程employeeadd的定義:use salary_databasegocreate procedure employeeadd(employeeid char(6),employee_name char(10),sex char(10),department_id char(10), title_id char(10),work_time varchar(50)as begininsert into employeesvalue

17、s(employeeid,employee_name,sex,department_id,title_id,work_time)endreturngo五、 系統(tǒng)實(shí)現(xiàn)1. 模塊簡述本工資管理系統(tǒng)主要的所有模塊主要是分為系統(tǒng),人事管理,工資設(shè)置,工資管理,連接數(shù)據(jù)庫的類五個(gè)部分,下面為這五個(gè)部分的再分類,共有20個(gè)模塊。下面為系統(tǒng)的模塊表:模塊類別模塊編號模塊名稱公共模塊模塊功能人事管理c1addemp增加一個(gè)員工c2yuangonggengshan更改員工的部門或職稱,刪除一個(gè)員工c3yuangongjiansuo按照部門檢索員工信息c4searchbyemployee按照員工的姓名檢索員工信息

18、c5employee是員工模塊系統(tǒng)c6denglu登錄模塊,判斷用戶具有的權(quán)限c7user_是用戶模塊,含有用戶表中的字段c8yh_shangeng刪除或者更改用戶的權(quán)限c9tianjiayonghu添加一個(gè)用戶c10xiugaimima已登錄的用戶修改密碼工資設(shè)置c11attendanceandjiaban更改員工的加班及考勤情況c12addjiabanjilu增加一條加班記錄c13addqueqinjilu增加一條缺勤記錄工資管理c14standardtiaozheng工資標(biāo)準(zhǔn)調(diào)整c15addsalary增加工資記錄c17gongzishengcheng按月生成工資c18gongzicha

19、xun查詢員工的工資記錄c19tongji按部門統(tǒng)計(jì)某月的工資記錄連接模塊c20adoconn是連接數(shù)據(jù)庫2. 模塊設(shè)計(jì)下面給出模塊的背景,設(shè)計(jì)思路,算法,界面以及關(guān)鍵代碼,比較簡單的模塊就僅給界面設(shè)計(jì)以及算法設(shè)計(jì),比較復(fù)雜的模塊會(huì)給出相應(yīng)的數(shù)據(jù)庫有關(guān)觸發(fā)器,存儲(chǔ)過程和視圖的設(shè)計(jì)。由于模塊太多,功能類似的模塊只用一個(gè)做具體說明。 (一). user_ 用戶模塊 user_模塊是公共模塊,denglu, yh_shangeng,tianjiayonghu,xiugaimima模塊都用到了user_模塊。user_類是為系統(tǒng)用戶表創(chuàng)建的一個(gè)類:要利用ado訪問數(shù)據(jù)庫,類的成員變量對應(yīng)表的列,類的成

20、員函數(shù)對應(yīng)表的操作。但本系統(tǒng)不是為每一個(gè)表都創(chuàng)建了類。 user_類中的成員變量和數(shù)據(jù)庫中user_表中的字段是一致的,成員函數(shù)有如下五個(gè)。函數(shù)名說明void sql_insert(); 插入一個(gè)用戶記錄的函數(shù),主要是在添加用戶的模塊中使用void sql_delete(cstring icno);刪除一個(gè)系統(tǒng)用戶記錄的函數(shù),在用戶更刪中用到void sql_update(cstring icno); 更改系統(tǒng)用戶權(quán)限的函數(shù),在用戶更刪中用到void sql_xiugaimima(cstring icno1,cstring icno2);修改密碼的函數(shù),修改密碼模塊使用int haveyh(c

21、string icno);判斷用戶是否存在函數(shù),在插入用戶記錄模塊中使用由于此模塊為公共模塊,所以具體的算法在一下用到這些函數(shù)的模塊中給出。(二). denglu 用戶登錄模塊登錄模塊的主要目的,就是判斷用戶的身份,在菜單界面上顯示次用戶可以使用的操作。用戶所有的操作都是在已經(jīng)登錄的情況下經(jīng)行的。所以在登錄前,菜單中除了“登錄”為已激活狀,其他所有的操作都是非激活態(tài)。(1). 界面設(shè)計(jì): 圖4.1 登錄界面 圖4.1為登錄界面的設(shè)計(jì)。在用戶輸入用戶名及密碼之后,如果是合法用戶,顯示登錄成功的消息。如果用戶名密碼不匹配或是不存在此用戶顯示核實(shí)用戶名及密碼的消息。登錄成功后,在數(shù)據(jù)庫中的user_

22、表中判斷該用戶的權(quán)限,然后更新菜單。由于存在更新激活菜單的功能,所以在view類中響應(yīng)“確定”消息。在view類中還應(yīng)該有一個(gè)成員變量用于記錄用戶的權(quán)限等級,以便更新界面。(2). 程序流程圖:圖4.2 登錄模塊程序流程圖 (3). 關(guān)鍵代碼:adoconn.oninitadoconn();_bstr_t sql;sql=select grade from user_ where user_name=+dl.m_yhm+ and password=+dl.m_mm+ ;_recordsetptr m_precordset=adoconn.getrecordset(sql);if(m_preco

23、rdset-adoeof=0)yh_dengji=(char *)(_bstr_t)m_precordset-getcollect(grade);messagebox(登錄成功);if(m_precordset-adoeof!=0)messagebox(請核實(shí)用戶名和密碼);(三). yh_shangeng 用戶更刪模塊 本模塊主要是用來更改用戶的權(quán)限,或者是刪除此用戶。采用的是列表控件顯示用戶信息和單選按鈕控件來選擇用戶的身份,單擊一條用戶記錄后刪改用戶的權(quán)限,更新數(shù)據(jù)酷里面的用戶信息。刪改之后重新刷新列表控件,由于代碼比較簡單,這里給出界面的設(shè)計(jì)以及程序流程圖。(1). 界面設(shè)計(jì):圖4.3

24、用戶刪改模塊界面設(shè)計(jì)(2).程序流程圖:圖4.4用戶刪改模塊程序流程圖 (四). tianjiayonghu添加用戶模塊 添加用戶模塊主要是給管理人員想數(shù)據(jù)庫中添加一條用戶記錄。在輸入用戶名和密碼,和新用戶的身份級別后才允許向數(shù)據(jù)庫中添加這條新用戶的記錄。所以在用列表控件的值更新成員變量之后,在插入記錄之前要在程序中要判斷這個(gè)用戶是否已存在,是否已輸入密碼,已輸入權(quán)限。早插入記錄之后,再用haveyh(cstring icno)函數(shù)判斷是否已經(jīng)插入成功。(1). 界面設(shè)計(jì):圖4.5 添加系統(tǒng)用戶的模塊界面(2).程序流程圖: 圖4.6 添加系統(tǒng)用戶模塊程序流程圖 (五). xiugaimima

25、修改密碼修改密碼是提供給用戶的修改原始密碼的功能的模塊。用戶在登錄后可以使用修改密碼 的操作,用戶必須輸入用戶名,原始密碼以及新密碼才能夠修改密碼。在修改前先判斷原始密碼是否與輸入的用戶名相匹配,以及新輸入的新密碼是否兩次相一致,還有各個(gè)需要輸入的信息是否已經(jīng)輸入,在輸入信息達(dá)到要求之后,此模塊調(diào)用denglu公共模塊的void sql_xiugaimima(cstring icno1,cstring icno2)函數(shù),這個(gè)函數(shù)的第一個(gè)參數(shù)是新密碼,第二個(gè)參數(shù)是用戶名,修改數(shù)據(jù)庫的sql語句為:sqltemp=update user_ set password=+icno1+ where us

26、er_name=+icno2+ ;修改完數(shù)據(jù)庫的表后向用戶反饋修改成功的信息。(1). 界面設(shè)計(jì):圖4.7 修改密碼界面設(shè)計(jì) (2).程序流程圖: 圖4.8修改密碼模塊程序流程圖(六). employee,tianjiayonghu(員工模塊,添加用戶模塊)與user_模塊類似的,employee模塊是公共模塊,addemp,yuangonggengshan,yuangongjiansuo,searchbyemployee模塊都用到了employee中的成員函數(shù)以及成員變量。這里只對用戶模塊和添加用戶模塊做詳細(xì)的說明。employee類中的成員變量和數(shù)據(jù)庫中employees表中的字段是一致的

27、,成員函數(shù)有如下五個(gè)。函數(shù)名說明void sql_update(cstring icno);更改員工的部門和職稱,在yuangonggengshan中調(diào)用void sql_delete(cstring icno);刪除一個(gè)員工,在yuangonggengshan中調(diào)用void sql_insert();插入一條員工記錄,在addemp中調(diào)用int haveyg(cstring icno);判斷是否存在這個(gè)員工,在addemp中調(diào)用由于此模塊為公共模塊,所以具體的算法在一下用到這些函數(shù)的模塊中給出。說明:addemp(增加員工記錄)模塊與tianjiayonghu(添加用戶)模塊相基本相類似,但

28、是先要獲得的是用戶選擇的部門或職稱信息,然后在向數(shù)據(jù)庫中選擇出該部門或者職稱所對應(yīng)的id號,插入數(shù)據(jù)庫中的是id號,而不是用戶選擇的部門名和職稱名。yuangonggengshan(員工更刪)模塊和yh_shangeng(用戶更刪)模塊相類似。這里就僅給出插入員工記錄的代碼,其它就不一一列出了。(1).關(guān)鍵代碼:(添加員工記錄模塊) 先從數(shù)據(jù)庫中提取出所有的部門和職稱信息:sql=select distinct department_name from department ;_recordsetptr m_precordset; m_precordset=adoconn.getrecords

29、et(sql);/填充組合框while(m_precordset-adoeof=0)/記錄集沒有移動(dòng)到最后m_cdepartment.addstring(char *)(_bstr_t)m_precordset-getcollect(department_name);/下移一條記錄m_precordset-movenext();sql=select distinct title_name from standard ; m_precordset=adoconn.getrecordset(sql);/填充組合框while(m_precordset-adoeof=0)/記錄集沒有移動(dòng)到最后m_ct

30、itle.addstring(char *)(_bstr_t)m_precordset-getcollect(title_name);/下移一條記錄m_precordset-movenext(); 在用戶點(diǎn)擊選擇組合框之后,從數(shù)據(jù)庫中提取選擇用戶選擇的部門的id號,職稱號與用戶選擇的部門的過程相符合的 sql=select department_id from department where department_name=+depart+ ;_recordsetptr m_precordset; m_precordset=adoconn.getrecordset(sql);departme

31、nt=(char *)(_bstr_t)m_precordset-getcollect(department_id);(2).程序流程圖(添加員工記錄模塊): 圖4.9 添加員工信息程序流程圖(七). yuangongjiansuo按部門檢索員工信息模塊此模塊是按照用戶選擇的部門使用select語句在建立的employeejiansuo視圖中查詢相應(yīng)部門的員工信息.先要初始化控件從數(shù)據(jù)庫中提取部門信息,響應(yīng)的sql語句為:sql=select distinct department_name from department ,按照部門檢索員工信息是在視圖employeejiansuo中查詢的,

32、相應(yīng)的sql語句為:sql=select * from employeejiansuo where department_name=+depart+ 。(1).程序流程圖: 圖4.10部門檢索員工信息程序流程圖(2).視圖employeejiansuo的建立:create view employeejiansuo asselect employee_id,employee_name,department_name,title_name,work_time, datediff(year,left(work_time,4),getdate()-1 as seniority from employe

33、es,standard,departmentwhere employees.title_id=standard.title_id and employees.department_id =department.department_id(3). 界面設(shè)計(jì): 圖4.11按部門檢索員工信息界面設(shè)計(jì) (4).關(guān)鍵代碼:cstring depart;m_cdepart.getlbtext(m_cdepart.getcursel(),depart);adoconn adoconn;adoconn.oninitadoconn();_bstr_t sql;if(m_cdepart.getcursel()=0

34、)m_list.deleteallitems();sql=select * from employeejiansuo;if(m_cdepart.getcursel()0)m_list.deleteallitems();sql=select * from employeejiansuo where department_name=+depart+ ;_recordsetptr m_precordset;m_precordset=adoconn.getrecordset(sql);/根據(jù)記錄集,填充列表框adoconn.exitconnect();(八). searchbyemployee按姓名檢

35、索員工信息模塊 此模塊的實(shí)現(xiàn)是在存儲(chǔ)過程search_by_employeename(name_ char(10)的基礎(chǔ)上實(shí)現(xiàn)的。此存儲(chǔ)過程實(shí)現(xiàn)的是模糊查詢。用戶在編輯框中輸入要查詢的員工的姓名,不詳處用”_”代替,返回所有滿足模糊查詢的結(jié)果集。調(diào)用存儲(chǔ)過程的語句為sql=exec search_by_employeename %+m_name+%。關(guān)鍵代碼與按部門檢索員工信息的代碼類似。這里只給出存儲(chǔ)過程,流程圖,和界面設(shè)計(jì)。(1).存儲(chǔ)過程的定義:/*員工名模糊查詢*/create procedure search_by_employeename(name_ char(10)as begi

36、nselect * from employeejiansuowhere employee_name like %+name_+%end驗(yàn)證:(2).程序流程圖: 圖4.12 按姓名檢索員工信息程序流程圖(3). 界面設(shè)計(jì): 圖4.13按姓名檢索界面設(shè)計(jì)(九). attendanceandjiaban更改員工的考勤情況及加班情況此模塊提供讓用戶修改數(shù)據(jù)庫中員工的考勤及加班信息的功能,用戶登錄后使用此模塊,先從數(shù)據(jù)庫中導(dǎo)出員工工作情況的視圖,顯示在列表控件上,用戶單擊一條記錄后修改加班天數(shù)或缺勤天數(shù)。觸動(dòng)相關(guān)觸發(fā)器操作,之后更新控件。更新數(shù)據(jù)庫的sql語句為: update jiaban set

37、jiaban_daynumber= +jbts+ where employee_id=+m_bh+ and jiaban_month=+m_time+ 以及update attendance set absent_daynumber= +qqts+ where employee_id=+m_bh+ and absent_month=+m_time+ 。注:由于時(shí)間關(guān)系以及用戶編號和年月是連續(xù)的,這里做的組合框的初始化沒有像之前的增加員工或者檢索員工那樣用數(shù)據(jù)庫中提取,然后填充組合框的方法,而是手動(dòng)添加。(1)視圖kongzuoqinkuang的建立:create view kongzuoqin

38、kuang as select attendance.employee_id,employee_name,absent_month,absent_daynumber,jiaban_daynumberfrom attendance,jiaban,employeeswhere attendance.employee_id=jiaban.employee_id and attendance.absent_month= jiaban.jiaban_month and employees.employee_id=jiaban.employee_id(2).程序流程圖: 圖4.14更改工作情況程序流程圖(

39、3).觸發(fā)器的定義:其中,在流程圖中提到了觸發(fā)器,在數(shù)據(jù)庫中一共定義了10個(gè)觸發(fā)器,在此模塊中會(huì)使用到3個(gè)觸發(fā)器,下面給出這三個(gè)觸發(fā)器的定義和說明。觸發(fā)器salaryupdatebutie的定義:此觸發(fā)器的功能是自動(dòng)更新加班表中的加班補(bǔ)貼字段以及工資表中的與加班補(bǔ)貼相對應(yīng)的津貼字段,以保證數(shù)據(jù)庫中數(shù)據(jù)的一致性。create trigger salaryupdatebutieon jiaban for update as beginupdate jiabanset getmoney=100*(select jiaban_daynumber from inserted)where employee

40、_id=(select employee_id from deleted) and jiaban_month=(select jiaban_month from deleted)update salaryset jintie=100*(select jiaban_daynumber from inserted)where salary.employee_id=(select employee_id from deleted)and salary.salary_date=(select jiaban_month from deleted)end觸發(fā)器salaryupdatekouchu的定義:與

41、前一個(gè)觸發(fā)器類似的,salaryupdatekouchu是在更新缺勤天數(shù)時(shí),自動(dòng)更新的是缺勤表中的缺勤扣除字段,同時(shí)也更新月工資表中的響應(yīng)字段。create trigger salaryupdatekouchuon attendance for update asbeginupdate attendanceset losemoney=100*(select absent_daynumber from inserted)where employee_id=(select employee_id from deleted) and absent_month=(select absent_month

42、 from deleted)update salaryset kouchu=100*(select absent_daynumber from inserted)where salary.employee_id=( selecte mployee_id from deleted) andsalary.salary_date=(select absent_month from deleted)end觸發(fā)器salaryupdate的定義:salaryupdate的功能是當(dāng)更新工資表時(shí)自動(dòng)計(jì)算salary表中的實(shí)際工資字段。這個(gè)觸發(fā)器的觸發(fā)往往是在前兩個(gè)觸發(fā)器執(zhí)行后。create trigger s

43、alaryupdate on salary for updateas begin update salaryset real_salary=title_salary+title_allowance+jintie-kouchuwhere title_salary in (select title_salary from inserted) or title_allowance in (select title_allowance from inserted) end(4).界面設(shè)計(jì):圖4.15更改工作情況界面(十).addjiabanjilu和addqueqinjilu增加加班記錄和增加缺勤記錄

44、由于這兩個(gè)模塊功能類似,所以只拿addjiabanjilu模塊做據(jù)圖說明。增加加班記錄和缺勤記錄主要是讓用戶向數(shù)據(jù)庫類增加一條員工某月的加班記錄或者缺勤記錄.這里添加記錄用到的是增加加班記錄的存儲(chǔ)過程。調(diào)用存儲(chǔ)過程的sql語句為sqltemp=exec jiabanadd +m_valueid+, +m_date+,+tianshu+,+losemoney+ 。用戶只需輸入加班的天數(shù),在程序中自動(dòng)計(jì)算出獲得的加班補(bǔ)貼。(1). 界面設(shè)計(jì): 圖4.16增加缺勤記錄界面 圖4.17增加加班記錄界面(2).存儲(chǔ)過程的定義:因?yàn)閮蓚€(gè)存儲(chǔ)過程類似,這里只具體給出其中一個(gè)use salary_databa

45、segocreate procedure absentadd(employeeid char(6),absent _month varchar(50),absent_daynumber int,losemoney money)as begininsert into attendancevalues(employeeid,absent_month,absent_daynumber,losemoney)endreturngo(3).程序流程圖: 圖4.18增加工作信息程序流程圖(4).觸發(fā)器設(shè)計(jì)(數(shù)據(jù)庫完整性約束):雖然在程序端做了計(jì)算加班補(bǔ)貼和缺勤扣除,但是為了更好的維護(hù)數(shù)據(jù)庫的完整性,在數(shù)據(jù)庫

46、中依然做了兩個(gè)觸發(fā)器來保證輸入的數(shù)據(jù)的準(zhǔn)確性,這兩個(gè)觸發(fā)器,是要保證輸入數(shù)據(jù)庫的補(bǔ)貼和扣除數(shù)據(jù)是加班或缺勤天數(shù)乘以100,否則不允許插入數(shù)據(jù)。下面給出兩個(gè)觸發(fā)器的定義語句:觸發(fā)器insert_attendance的定義: create trigger insert_attendance on attendance for insertasbeginif ( select losemoney from inserted )not in(100*(select absent_daynumber from inserted)rollbackend觸發(fā)器insert_jiaban的定義: create

47、 trigger insert_jiaban on jiaban for insertasbeginif ( select getmoney from inserted )not in(100*(select jiaban_daynumber from inserted)rollbackend(5).關(guān)鍵代碼cstring m_date,tianshu,losemoney;int j=atoi(m_valuetianshu.getbuffer(10);m_valuetianshu.releasebuffer();m_date=m_valuenian+.+m_valueyue;tianshu.f

48、ormat(%d,j);losemoney.format(%d,j*100); adoconn adoconn; adoconn.oninitadoconn();/調(diào)試_bstr_t sqltemp;sqltemp=exec jiabanadd +m_valueid+,+m_date+,+tianshu+,+losemoney+ ;adoconn.executesql(sqltemp);(十一). standardtiaozheng職稱工資及職稱補(bǔ)貼調(diào)整 工資調(diào)整是提供給財(cái)務(wù)部門修改職稱的基本工資和職稱津貼的模塊。只有財(cái)務(wù)部門的人員才能夠進(jìn)行此操作。在修改了工資標(biāo)準(zhǔn)之后,在調(diào)整時(shí)間之后的工資月

49、工資表將會(huì)受到改變,并且在之后插入月工資表的數(shù)據(jù)必須要與職稱表相對應(yīng)。這樣的一致性由兩個(gè)個(gè)觸發(fā)器來保證。程序流程圖與之前的工作情況調(diào)整類似,這里不再給出。sql語句為update standard set title_name=+m_name+ , title_allowance = +allowance+, title_salary = +basic+ where title_id=+m_bh+ 。(1).觸發(fā)器設(shè)計(jì):觸發(fā)器standardupdate觸發(fā)其standardupdate是要求數(shù)據(jù)庫中在日期之后的月工資中的相關(guān)記錄自發(fā)動(dòng)更新。create trigger standardupd

50、ate on standard for update as beginupdate salaryset title_salary=(select title_salary from inserted)where title_salary=(select title_salary from deleted) and cast(salary_date+.01 as datetime)getdate()end觸發(fā)器standardupdate與上一個(gè)觸發(fā)器的功能類似,standardupdate是更新的title_salary,standardupdate更新的是title_allowance。create trigger standardupdate1 on standard for update as beginupdate salaryset title_allowance=(select title_allowance from inserted)where title_allowance=(select title_allowanc

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論