基于VC++的人事管理系統(tǒng)設(shè)計與實現(xiàn)_第1頁
基于VC++的人事管理系統(tǒng)設(shè)計與實現(xiàn)_第2頁
基于VC++的人事管理系統(tǒng)設(shè)計與實現(xiàn)_第3頁
基于VC++的人事管理系統(tǒng)設(shè)計與實現(xiàn)_第4頁
基于VC++的人事管理系統(tǒng)設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、本科畢業(yè)論文(設(shè)計)題目: 基于VC+的人事管理系統(tǒng)設(shè)計與實現(xiàn) 學生姓名 2342 學 號 2342 指導(dǎo)教師 2342 院 系 信息科學與技術(shù)學院 專 業(yè) 計算機科學與技術(shù) 年 級 2000級 2004年05 月25日56摘要公司人事管理系統(tǒng)是典型的人事信息管理系統(tǒng),其主要的功能是把人事管理過程信息化,自動化以減輕人工的重復(fù)繁瑣勞動。其開發(fā)主要包括后臺數(shù)據(jù)庫的建立維護以及前臺應(yīng)用程序的開發(fā)兩個方面。對于后臺數(shù)據(jù)庫要求建立一個穩(wěn)定的數(shù)據(jù)庫,保持數(shù)據(jù)的一致性,完整性,安全性也是必要的。對于前臺要求穩(wěn)定,實用,易用。本系統(tǒng)是為公司人事管理的各種工作而設(shè)計的。根據(jù)需求分析,需要實現(xiàn)對系統(tǒng)用戶,基本信

2、息(公司部門,人員相關(guān)信息等),考勤考評的管理。經(jīng)過分析,本系統(tǒng)使用SQL SERVER做為其后臺數(shù)據(jù)庫,采用ADO數(shù)據(jù)庫鏈接技術(shù);Visual C+做為開發(fā)工具, 提供了相當齊備的類庫、友好的編程界面和多種多樣的數(shù)據(jù)庫訪問技術(shù)。其中ADO使得編寫數(shù)據(jù)庫應(yīng)用程序變得簡單容易。公司人事管理系統(tǒng)是典型的信息管理系統(tǒng),其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護以及前端應(yīng)用程序的開發(fā)兩個方面。對于前者要求建立起數(shù)據(jù)一致性,完整性,安全性好的庫。而對于后者則要求應(yīng)用程序功能完備,易使用等特點。關(guān)鍵詞: VC+ + 數(shù)據(jù)庫; 人事管理系統(tǒng); ADO 數(shù)據(jù)源AbstractCompany's person

3、nel administrative system is typical personnel information management systems , its main function is to information and automation the process of the personnel information management system which lighten people from repeated and tedious artificial work. It develops two respects of main development i

4、ncluding the setting-up and maintaining of backstage supporter's database and the front desk application program. Demand to set up a steady database to backstage supporter's database, keep the consistency of the data, integrality, security are all essential. As to the thing that the front de

5、sk requires steadily, practical, easy to use.This system was worked and designed for various kinds of company's personnel management. According to demand analysis, need to realize systematic users correctly, basic information (company's department, personnel's relevant information, etc.)

6、, the management that the attendance checks and rate.After analyzing ,this system uses SQL SERVER as its backstage database , adopt ADO database technology to chain; taking Visual C + + as the developing instrument which has offered quite complete kinds of storehouses , friendly programming interfac

7、e and varied database visiting technology. ADO technology makes it simple and easy to write database application program.Company's personnel administrative system is typical information management systems, it develops two respects of main development including setting-up and maintenance and fron

8、t application program of backstage supporter's database . As to the thing that the former demands to set up consistency of the data, integrality , the storehouse with good security . Require to the latter the function of the application program is complete, apt characteristic of using etc. Keywo

9、rds: The database of Visual C+; Personnel Manage System; The data source of ADO目 錄1引言42 系統(tǒng)分析52.1概要分析52.2 總體設(shè)計72.3 開發(fā)環(huán)境83 數(shù)據(jù)庫設(shè)計153.1 數(shù)據(jù)規(guī)范化問題153.2設(shè)計表的結(jié)構(gòu)154 建立數(shù)據(jù)庫表的類194.1 部門表的類194.2員工基本信息表的類194.3員工家庭信息的類194.4員工教育及工作經(jīng)歷記錄的類194.5員工考評表的類204.6員工工作考勤表的類204.7用戶信息表的類205 系統(tǒng)實現(xiàn)215.1用ADO進行數(shù)據(jù)庫編程:215.2實現(xiàn)用戶登錄功能315.3

10、實現(xiàn)部門管理功能335.4 實現(xiàn)員工信息管理功能355.5 實現(xiàn)考勤管理功能405.6 實現(xiàn)員工考評管理功能445.7實現(xiàn)用戶管理功能476 結(jié)論517致 謝518參考文獻521引言人事管理是一個企業(yè)在經(jīng)營管理中不可缺少的部分,它的成功與否對于企業(yè)的發(fā)展來說都是至關(guān)重要的,所以公司人事管理系統(tǒng)應(yīng)該能夠為用戶提供充足的信息和快捷的查詢手段。但如果使用傳統(tǒng)的人工直接統(tǒng)計的話,工作量十分的龐大,存在許多的缺點,如:效率低,保密性差,且如果人多,時間一長,將產(chǎn)生大量的文件及數(shù)據(jù),對于查找,更新和維護帶來困難。隨著科學技術(shù)的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各

11、個領(lǐng)域并發(fā)揮著越來越重要的作用。作為計算機應(yīng)用的一部分,使用計算機對人事進行管理,可使人們從繁重而又單調(diào)的統(tǒng)計運算中解脫出來,僅用一些簡單的操作便可及時準確地獲得需要得信息。使企業(yè)實現(xiàn)科學化,正規(guī)化管理,與世界接軌。因此,開發(fā)這樣一套管理軟件成為很必要的事情。此設(shè)計主要實現(xiàn)的功能有系統(tǒng)用戶管理,基本信息管理(部門、員工信息),考勤考評管理。本文主要構(gòu)成如下:系統(tǒng)分析、數(shù)據(jù)庫設(shè)計、建立數(shù)據(jù)庫表的類、系統(tǒng)實現(xiàn)。本次畢業(yè)設(shè)計的數(shù)據(jù)庫采用了ADO技術(shù),這是一個基于OLE DB的訪問接口,它繼承了OLE DB的技術(shù)的優(yōu)點,并且ADO基于COM,提供編程語言可利用的對象,如面向VC+。 ADO在服務(wù)器應(yīng)用

12、方面非常有效,特別是對動態(tài)服務(wù)器頁面的支持。 2 系統(tǒng)分析2.1概要分析2.1.1 系統(tǒng)功能分析(UML)人事信息管理系統(tǒng)是對企業(yè)部門,人事檔案,考勤,考評等人事管理進行全面管理的系統(tǒng)。該系統(tǒng)通過采集在日常的人事管理中所產(chǎn)生的各種原始的數(shù)據(jù),根據(jù)現(xiàn)代人事管理的要求,對數(shù)據(jù)進行分類,分析,匯總,建立程序化,制度化,規(guī)范化的人事信息計算機軟件管理系統(tǒng),對各項人事信息進行分類維護與綜合查詢,為人事信息管理提供一個現(xiàn)代化管理手段,保持各種數(shù)據(jù)的完整性,及時性,正確性,完善管理體系,提高管理水平。 系統(tǒng)的用例圖:基本的類圖:2.1.2 驗證需求分析階段的工作結(jié)果是開發(fā)軟件的重要基礎(chǔ),大量統(tǒng)計數(shù)字表明,軟

13、件系統(tǒng)中15%的錯誤起源于錯誤的需求。為了提高軟件的質(zhì)量,確保軟件開發(fā)成功,降低軟件的開發(fā)成本,一旦對目標系統(tǒng)提出一組要求之后,必須嚴格驗證這些需求的正確性。一般來說,應(yīng)從下面四個方面進行驗證: a. 一致性 所有需求必須是一致的,任何一條需求不能和其他需求互相矛盾。 b. 完整性 需求必須是完整的,規(guī)格說明書應(yīng)該包括用戶需要的每一個功能或性能。 c現(xiàn)實性 指定的需求應(yīng)該是用現(xiàn)有的硬件技術(shù)和軟件技術(shù)基礎(chǔ)上可以實現(xiàn)的。對硬件技術(shù)的進步可以做些預(yù)測,對軟件技術(shù)的進步很難做些預(yù)測,只能從現(xiàn)有的技術(shù)水平出發(fā)判斷需求的現(xiàn)實性。 d 有效性 必須證明需求是正確有效的,確保能解決用戶面對的問題。通過用戶和設(shè)

14、計者對上述需求分析所得到的管理系統(tǒng)功能的復(fù)查,并且對照上面幾點要求進行驗證,人事信息管理系提出的基本滿足需求分析驗證的要求。2.2 總體設(shè)計 系統(tǒng)主要模塊分布如下:人事管理系統(tǒng)主窗體系統(tǒng)用戶管理基本信息管理考勤考評管理用戶管理修改密碼部門管理員工管理退出系統(tǒng)考勤管理考評管理系統(tǒng)用戶管理模塊:完成新建用戶信息,用戶信息管理,用戶密碼修改,用戶管理代碼功能?;拘畔⒐芾砟K:完成對公司部門信息編輯,管理,選擇;完成對員工選擇,基本信息管理,信息編輯,調(diào)轉(zhuǎn)部門,照片管理,家庭信息編輯,家庭信息管理,教育及工作經(jīng)歷編輯,教育及工作經(jīng)歷管理。完成退出系統(tǒng)??记诳荚u管理模塊:完成考勤信息編輯,管理及員工月

15、度考勤;員工考評信息編輯與管理。2.3 開發(fā)環(huán)境2.3.1開發(fā)工具的選擇 1. Visual C+Visual C+是運行于Windows平臺上的交互式的可視化集成開發(fā)環(huán)境,它是美國Microsoft公司開發(fā)的Microsoft Visual Studio 套件中的一部分。像其他可視化集成開發(fā)環(huán)境一樣,Visual C+集程序的代碼編輯、編譯、連接和調(diào)試等功能于一體,給編程人員提供了一個完整方便的開發(fā)界面和許多有效的輔助開發(fā)工具。Visual C+的應(yīng)用程序向?qū)Э梢砸院艽笠徊糠诸愋偷某绦蛱峁┛蚣艽a,用戶不用書寫程序代碼,只需按幾個按鈕就可以生成一些完整的可以運行的程序。Visual C+具有

16、以下優(yōu)點:1)面向?qū)ο?、可視化開發(fā)。提供了面向?qū)ο蟮膽?yīng)用程序框架MFC(Microsoft Foundation Class:微軟基礎(chǔ)類庫),大大簡化了程序員的編程工作,提高了模塊的可重用性。Visual C+還提供了基于CASE技術(shù)的可視化軟件自動生成和維護工具AppWizard、ClassWizard、Visual Studio、WizardBar等,幫助用戶直觀的、可視地設(shè)計程序的用戶界面,可以方便的編寫和管理各種類,維護程序源代碼,從而提高了開發(fā)效率。用戶可以簡單而容易地使用C/C+編程。2)眾多的開發(fā)商支持以及業(yè)已成為工業(yè)標準的MFC類庫。MFC類庫已經(jīng)成為事實上的工業(yè)標準類庫,得到

17、了眾多開發(fā)商和軟件開發(fā)工具的支持;另外,由于眾多的開發(fā)商都采用Visual C+進行軟件開發(fā),這樣用Visual C+開發(fā)的程序就與別的應(yīng)用軟件有許多相似之處,易于學習和使用。 3)Visual C+封裝了Windows的API(應(yīng)用程序接口)函數(shù)、USER、KERNEL、GDI函數(shù),幫助我們弄清了許多函數(shù)的組織方法,隱去了創(chuàng)建、維護窗口的許多復(fù)雜的例行工作,簡化了編程。2)ADO(ActiveX Data Object)ADO技術(shù)是基于OLE DB的訪問接口,它繼承了OLE DB技術(shù)的優(yōu)點,并且,ADO對OLE DB的接口作了封裝,定義了ADO對象,使程序開發(fā)得到簡化,ADO技術(shù)屬于數(shù)據(jù)庫訪

18、問的高層接口。 2. SQL主要語法 SQL SERVER 提供了關(guān)系數(shù)據(jù)庫的查詢語言SQL(Structured Query Language),是一種非??谡Z化、既易學又易懂的語法。此一語言幾乎是每個資料庫系統(tǒng)都必須提供的,包含了資料的定義(DDL)以及資料的處理(DML)。SQL原來拼成SEQUEL,這語言的原型以“系統(tǒng) R“的名字在 IBM 圣荷西實驗室完成,經(jīng)過IBM內(nèi)部及其他的許多使用性及效率測試,其結(jié)果相當令人滿意,并決定在系統(tǒng)R 的技術(shù)基礎(chǔ)發(fā)展出來 IBM 的產(chǎn)品。而且美國國家標準學會(ANSI)及國際標準化組織(ISO)在1987遵循一個幾乎是以 IBM SQL 為基礎(chǔ)的標準

19、關(guān)連式資料語言定義。 一、資料定義 DDL(Data Definition Language) 資料定語言是指對資料的格式和形態(tài)下定義的語言,他是每個資料庫要建立時候時首先要面對的,舉凡資料分哪些表格關(guān)系、表格內(nèi)的有什麼欄位主鍵、表格和表格之間互相參考的關(guān)系等等,都是在開始的時候所必須規(guī)劃好的。 1、建表格: CREATE TABLE table_name( column1 DATATYPE NOT NULL NOT NULL PRIMARY KEY, column2 DATATYPE NOT NULL, .) 說明: DATATYPE -是資料的格式,詳見表。 NUT NULL -可不可以允

20、許資料有空的(尚未有資料填入)。 PRIMARY KEY -是本表的主鍵。 2、更改表格 ALTER TABLE table_name ADD COLUMN column_name DATATYPE 說明:增加一個欄位(沒有刪除某個欄位的語法)。  ALTER TABLE table_name ADD PRIMARY KEY (column_name) 說明:更改表得的定義把某個欄位設(shè)為主鍵。 ALTER TABLE table_name DROP PRIMARY KEY (column_name) 說明:把主鍵的定義刪除。 3、建立索引 CREATE INDEX index_nam

21、e ON table_name (column_name) 說明:對某個表格的欄位建立索引以增加查詢時的速度。 4、刪除 DROP table_name DROP index_name 二、資料形態(tài) DATATYPEs smallint 16 位元的整數(shù)。 interger 32 位元的整數(shù)。 decimal(p,s) p 精確值和 s 大小的十進位整數(shù),精確值p是指全部有幾個數(shù)(digits)大小值,s是指小數(shù)點后有幾位數(shù)。如果沒有特別指定,則系統(tǒng)會設(shè)為 p=5; s=0 。 float 32位元的實數(shù)。 double 64位元的實數(shù)。 char(n) n 長度的字串,n不能超過 254。

22、varchar(n) 長度不固定且其最大長度為 n 的字串,n不能超過 4000。 graphic(n) 和 char(n) 一樣,不過其單位是兩個字元 double-bytes, n不能超過127。這個形態(tài)是為 了支援兩個字元長度的字體,例如中文字。 vargraphic(n) 可變長度且其最大長度為 n 的雙字元字串,n不能超過 2000。 date 包含了 年份、月份、日期。 time 包含了 小時、分鐘、秒。timestamp 包含了 年、月、日、時、分、秒、千分之一秒。 組合查詢 組合查詢是指所查詢得資料來源并不只有單一的表格,而是聯(lián)合一個以上的 表格才能夠得到結(jié)果的。 SELECT

23、 * FROM table1,table2 WHERE table1.colum1=table2.column1 說明: 1.查詢兩個表格中其中 column1 值相同的資料。 2.當然兩個表格相互比較的欄位,其資料形態(tài)必須相同。 3.一個復(fù)雜的查詢其動用到的表格可能會很多個。 整合性的查詢: SELECT COUNT (*) FROM table_name WHERE column_name = xxx 說明: 查詢符合條件的資料共有幾筆。 SELECT SUM(column1) FROM table_name 說明: 1.計算出總和,所選的欄位必須是可數(shù)的數(shù)字形態(tài)。 2.除此以外還有 AV

24、G() 是計算平均、MAX()、MIN()計算最大最小值的整合性查詢。 SELECT column1,AVG(column2) FROM table_name GROUP BY column1 HAVING AVG(column2) > xxx 說明: 1.GROUP BY: 以column1 為一組計算 column2 的平均值必須和 AVG、SUM等整合性查詢的關(guān)鍵字 一起使用。 2.HAVING : 必須和 GROUP BY 一起使用作為整合性的限制。 復(fù)合性的查詢 SELECT * FROM table_name1 WHERE EXISTS ( SELECT * FROM tab

25、le_name2 WHERE conditions ) 說明: 1.WHERE 的 conditions 可以是另外一個的 query。 2.EXISTS 在此是指存在與否。 SELECT * FROM table_name1 WHERE column1 IN ( SELECT column1 FROM table_name2 WHERE conditions ) 說明: 1. IN 后面接的是一個集合,表示column1 存在集合里面。 2. SELECT 出來的資料形態(tài)必須符合 column1。 其他查詢 SELECT * FROM table_name1 WHERE column1 LI

26、KE x% 說明:LIKE 必須和後面的x% 相呼應(yīng)表示以 x為開頭的字串。 SELECT * FROM table_name1 WHERE column1 IN (xxx,yyy,.) 說明:IN 後面接的是一個集合,表示column1 存在集合里面。 SELECT * FROM table_name1 WHERE column1 BETWEEN xx AND yy 說明:BETWEEN 表示 column1 的值介於 xx 和 yy 之間。 3、更改資料: UPDATE table_name SET column1=xxx WHERE conditoins 說明: 1.更改某個欄位設(shè)定其值

27、為xxx。 2.conditions 是所要符合的條件、若沒有 WHERE 則整個 table 的那個欄位都會全部被更改。 4、刪除資料: ELETE FROM table_name WHERE conditions 說明:刪除符合條件的資料。 說明:關(guān)于WHERE條件后面如果包含有日期的比較,不同數(shù)據(jù)庫有不同的表達式。具體如下: (1)如果是ACCESS數(shù)據(jù)庫,則為:WHERE mydate>#2000-01-01# (2)如果是ORACLE數(shù)據(jù)庫,則為:WHERE mydate>cast(2000-01-01 as date) 或:WHERE mydate>to_date

28、(2000-01-01,yyyy-mm-dd) 如果比較日期時間型,則為: WHERE mydatetime>to_date(2000-01-01 10:00:01,yyyy-mm-dd hh24:mi:ss)2.3.2 運行環(huán)境 硬件平臺: CPU的主頻在500MHz上,內(nèi)存在128MB以上軟件平臺: 操作系統(tǒng): Window 98/Me/NT/2000/XP 開發(fā)工具: Visual Studio 2003 數(shù)據(jù)庫: SQL Server 2000及其以上版本3 數(shù)據(jù)庫設(shè)計通過對人事信息管理系統(tǒng)的需求分析及驗證和總體的規(guī)劃設(shè)計,確定了設(shè)計本系統(tǒng)所需的各個模塊及各模塊所要的基本功能。就

29、要設(shè)計數(shù)據(jù)庫及數(shù)據(jù)庫數(shù)據(jù),并用數(shù)據(jù)庫對各模塊進行設(shè)計和編碼。3.1 數(shù)據(jù)規(guī)范化問題 當把數(shù)據(jù)庫收集在一個二維表中,往往有很多重復(fù)的數(shù)據(jù),即冗余度大。像這樣的二維表是不宜作為數(shù)據(jù)庫管理的,必須進行規(guī)范化后才能使用。數(shù)據(jù)規(guī)范化理論是研究如何將一個不好的關(guān)系模型轉(zhuǎn)化成為好的關(guān)系模型。規(guī)范化理論認為,關(guān)系數(shù)據(jù)庫中的每一個關(guān)系都要滿足一定的規(guī)范。根據(jù)滿足規(guī)范的條件不同,可分為五個等級,分別稱為第一范式(1NF),第二范式(2NF)第五范式(5NF),通常解決一般性問題時,只要把數(shù)據(jù)規(guī)范到第三范式(3NF)標準就可滿足需要,不是規(guī)范化等級越高越好。下面給出第一、第二和第三范式的條件:第一范式(1NF):如

30、果關(guān)系R的所有屬性都是不可再分的數(shù)據(jù)項,則稱該關(guān)系為第一范式。記作R屬于1NF。第二范式(2NF):若關(guān)系R屬于1NF,且它的每一非主屬性都完全依賴與關(guān)鍵字,則稱R屬于第二范式。記作R屬于2NF。第三范式(3NF):若關(guān)系R屬于2NF,且每一非主屬性都不傳遞依賴于關(guān)鍵字,則稱R屬于第三范式。記作R屬于3NF。運用Microsoft access 2003 新建一個“hr.mdb”的數(shù)據(jù)庫,人事管理所有人事信息的數(shù)據(jù)都保存在這個數(shù)據(jù)庫中。3.2設(shè)計表的結(jié)構(gòu) 表 3-1列名(中文)列名(英文)數(shù)據(jù)類型寬度是否為空部門編號(主鍵)Dep_idintNo部門名稱Dep_namevarchar40No部

31、門描述Describechar200No上級部門UpperIdintNo表3-2 列名(中文)列名(英文)數(shù)據(jù)類型寬度是否為空員工編號(主鍵)Emp_IdintNo員工姓名Emp_namevarchar50No照片ImageYes性別Sexchar2Yes民族Nationalityvarchar40Yes出生日期Birthvarchar20Yes政治面貌Political_Partyvarchar40Yes文化程度Culture_levelvarchar40Yes婚姻狀況Marital_Conditionvarchar20Yes家庭住址Family_Placevarchar60Yes身份證號I

32、d_Cardvarchar20Yes工作證號BadgeIDvarchar40Yes辦公電話Office_phonevarchar30Yes手機號Mobilevarchar30Yes檔案所在地File_keep_orgvarchar100Yes戶口所在地Hukouvarchar100Yes到崗日期HireDatevarchar20Yes所在部門編號Dep_IdintYes工作崗位Positionvarchar40Yes職務(wù)Titlevarchar20Yes員工狀態(tài)StateintYes上級員工UpperIdintYes合同有效期Contract_Durationvarchar20Yes填表人Fi

33、llin_Personvarchar30Yes填表時間Fillin_Timevarchar20Yes表3-3 列名(中文)列名(英文)數(shù)據(jù)類型寬度是否為空編號(主鍵)IdintNo員工編號Emp_IdintNo姓名Namevarchar50No性別Sexchar2Yes年齡AgeintYes關(guān)系Relationshipvarchar20Yes工作單位Workingorgvarchar40Yes表3-4 列名(中文)列名(英文)數(shù)據(jù)類型寬度是否為空編號(主鍵)IdintNo員工編號Emp_IdintNo開始日期Start_Datechar10Yes結(jié)束日期End_Datechar10Yes學校/

34、單位School_Orgvarchar50Yes職務(wù)Titlevarchar20Yes表3-5 列名(中文)列名(英文)數(shù)據(jù)類型寬度是否為空考評月份EvaMonthchar10No員工編號(主鍵)Emp_IdintNo總體評價ztEvavarchar200Yes獎勵事由jlReasonvarchar200Yes獎勵金額jlAmountsmallintYes處罰事由cfReasonvarchar200Yes處罰金額cfAmountintYes表3-6列名(中文)列名(英文)數(shù)據(jù)類型寬度是否為空考勤日期CheckDatechar10No員工編號(主鍵)Emp_IdintNo全勤天數(shù)qqDaysin

35、tYes出差天數(shù)cqDaysintYes病家天數(shù)bjDaysintYes事假天數(shù)sjDaysintYes曠工天數(shù)kgDaysintYes法定休假日fdxjDaysintYes年休假日nxjDaysintYes倒休假天數(shù)dxjDaysintYes遲到分鐘數(shù)cdMinutesintYes早退分鐘數(shù)ztMinutesintYes一類加班天數(shù)Ot1DaysintYes二類加班天數(shù)Ot2DaysintYes三類加班天數(shù)Ot3DaysintYes備注信息Memovarchar200Yes表3-7列名(中文)列名(英文)數(shù)據(jù)類型寬度是否為空用戶名(主鍵)UserNamevarchar40No密碼Pwdvar

36、char40No用戶類型User_TypeintNo4 建立數(shù)據(jù)庫表的類4.1 部門表的類部門表的類用來管理部門表的數(shù)據(jù)庫操作。定義部門編號,部門名稱,部門描述以及上級部門;構(gòu)造和析構(gòu)部門表;設(shè)置和讀取成員變量;對數(shù)據(jù)庫的操作:判斷指定部門名稱是否存在,是否包含下級部門(如果又則不能刪除),指定部門是否有員工(若有則不能刪除);讀取所有部門名稱,上級部門及相關(guān)的描述信息等。4.2員工基本信息表的類員工表的類用來管理員工基本信息表的數(shù)據(jù)庫操作。定義員工編號,姓名,性別,民族,出生年月,政治面貌,文化程度,婚姻狀況,家庭住址,身份證號,識別卡號,辦公室電話,手機號,檔案所在地,戶口,受雇日期,所在

37、部門編號,職位,頭銜,國籍,上級部門編號,合同期,備忘錄,;構(gòu)造和析構(gòu)員工基本信息表;設(shè)置和讀取成員變量;數(shù)據(jù)庫操作:判定指定的員工姓名是否存在;根據(jù)指定的員工編號返回員工姓名;根據(jù)員工編號讀取所有的字段值,更新部門信息,以便調(diào)轉(zhuǎn)部門時調(diào)用。4.3員工家庭信息的類員工家庭信息的類用來管理員工家庭信息的數(shù)據(jù)庫操作。定義員工家庭成員的編號,員工編號,姓名,性別,年齡,關(guān)系,原先工作地;構(gòu)造和析構(gòu)員工家庭信息表;讀取和設(shè)置成員變量;數(shù)據(jù)庫操作:根據(jù)員工編號讀取所有字段值,更新家庭成員信息。4.4員工教育及工作經(jīng)歷記錄的類員工教育及工作經(jīng)歷記錄的類用來管理員工教育及工作經(jīng)歷記錄的數(shù)據(jù)庫操作。定義員工教

38、育及工作經(jīng)歷記錄表的項:編號,員工編號,起始日期,截止日期,學校,職稱。構(gòu)造和析構(gòu)員工教育及工作經(jīng)歷記錄表。讀取和設(shè)置成員變量。數(shù)據(jù)庫操作:跟據(jù)員工編號讀取所有的字段值,更新記錄編號。4.5員工考評表的類員工考評表的類用來管理員工考評的數(shù)據(jù)庫操作。定義考評表的基本項:月度考評,員工編號,總體考評,獎勵原因,獎勵數(shù)目,處罰原因,處罰數(shù)目,備忘錄。構(gòu)造和析構(gòu)員工考評表。讀取和設(shè)置成員變量。數(shù)據(jù)庫操作:判斷指定員工/月份考評記錄是否存在,根據(jù)員工編號讀取所有的字段值,更新月份考評情況。4.6員工工作考勤表的類員工考勤表的類用來管理員工考勤表的數(shù)據(jù)庫操作。定義考勤表的基本項:考勤日期,員工編號,缺勤天

39、數(shù),出勤天數(shù),病假天數(shù),事假天數(shù),曠工天數(shù),法定休假天數(shù),年休假天數(shù),調(diào)休假天數(shù),遲到分鐘數(shù),早退分鐘數(shù),加班一天,加班兩天,加班三天,備忘錄。構(gòu)造和析構(gòu)員工考勤表。讀取和設(shè)置成員變量。數(shù)據(jù)庫操作:判定指定員工/日期的考勤記錄是否存在;根據(jù)員工編號讀取所有字段值,更新員工/日期的考勤記錄。4.7用戶信息表的類用戶信息表的類用來管理用戶信息的數(shù)據(jù)庫操作。定義用戶信息的基本項:用戶名,密碼。構(gòu)造和析構(gòu)用戶信息表。讀取和設(shè)置成員變量。數(shù)據(jù)庫操作:判斷指定用戶名是否存在;獲取用戶名,更新密碼。5 系統(tǒng)實現(xiàn)5.1用ADO進行數(shù)據(jù)庫編程: 1. 生成應(yīng)用程序框架并初始化OLE/COM庫環(huán)境 創(chuàng)建一個標準的

40、MFC AppWizard(exe)應(yīng)用程序,然后在使用ADO數(shù)據(jù)庫的InitInstance函數(shù)中初始化OLE/COM庫(因為ADO庫是一個COM DLL庫)。本例為: BOOL CAdotestDlg:OnInitDialog()        :CoInitialize(NULL); /初始化OLE/COM庫環(huán)境   程序最后要調(diào)用 :CoUninitialize();/釋放程序占用的COM 資源。另外:m_pRecordset->Close(); 注意!不要多次關(guān)閉!m_pConnection->

41、;Close();m_pRecordset = NULL;m_pConnection = NULL; 2. 引入ADO庫文件 使用ADO前必須在工程的stdafx.h文件最后用直接引入符號import引入ADO庫文件,以使編譯器能正確編譯。代碼如下:#import "C:Program Filescommon filessystemadomsado15.dll" no_namespace rename("EOF","adoEOF")ADO類的定義是作為一種資源存儲在ADO DLL(msado15.dll)中,在其內(nèi)部稱為類型庫。類型庫

42、描述了自治接口,以及C使用的COM vtable接口。當使用import指令時,在運行時Visual C需要從ADO DLL中讀取這個類型庫,并以此創(chuàng)建一組C頭文件。這些頭文件具有.tli 和.tlh擴展名,讀者可以在項目的目錄下找到這兩個文件。在C程序代碼中調(diào)用的ADO類要在這些文件中定義。   程序的第三行指示ADO對象不使用名稱空間。在有些應(yīng)用程序中,由于應(yīng)用程序中的對象與ADO中的對象之間可能會出現(xiàn)命名沖突,所以有必要使用名稱空間。如果要使用名稱空間,則可把第三行程序修改為: rename_namespace("AdoNS")。第四行代碼將ADO中的EOF

43、(文件結(jié)束)更名為adoEOF,以避免與定義了自己的EOF的其他庫沖突。 3利用智能指針進行數(shù)據(jù)庫操作 在CaboutDlg頭文件中定義兩個ADO智能指針類實例,并在對話框中加入一個ListCtrl。 class CAdotestDlg : public CDialog     _ConnectionPtr m_pConnection;     _RecordsetPtr m_pRecordset; ClistCtrl m_List;      . 

44、60;   ADO庫包含三個智能指針:_ConnectionPtr、_CommandPtr和_RecordsetPtr。_ConnectionPtr通常被用來創(chuàng)建一個數(shù)據(jù)連接或執(zhí)行一條不返回任何結(jié)果的SQL語句,如一個存儲過程。_CommandPtr返回一個記錄集。它提供了一種簡單的方法來執(zhí)行返回記錄集的存儲過程和SQL語句。在使用_CommandPtr接口時,可以利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用連接串。_RecordsetPtr是一個記錄集對象。與以上兩種對象相比,它對記錄集提供了更多的控制功能,如記錄鎖定、游標控制等

45、。 在使用ADO程序的事件響應(yīng)中OnButton1加入以下代碼: void CAdotestDlg:OnButton1()  m_List.ResetContent(); m_pConnection.CreateInstance(_uuidof(Connection); /初始化Connection指針 m_pRecordset.CreateInstance(_uuidof(Recordset);/初始化Recordset指針 try   m_pConnection->Open("DSN=ADOTest",&

46、quot;","",0); /連接叫作ADOTest的ODBC數(shù)據(jù)源  /注意:這是連接不需要用戶ID或密碼的open 函數(shù)  / 否則形式為 ->Open("DSN=test;uid=sa;pwd=123;","","",0);    / 執(zhí)行SQL語句得到一個記錄集把其指針賦值給m_pRecordset  CString strSql="select * from middle"  BSTR bstrSQL = st

47、rSql.AllocSysString();   m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);   /adOpenDynamic:動態(tài) adLockOptimistic樂觀封鎖法 adCmdText:文本查詢語句  while(!m_pRecordset->adoEOF)/遍歷所有記錄     /取紀錄字段值方式之一   _variant_t TheValue

48、; /VARIANT數(shù)據(jù)類型   TheValue = m_pRecordset->GetCollect("BIG_NAME");/得到字段BIG_NAME的值   if(TheValue.vt!=VT_NULL)    m_List.AddString(char*)_bstr_t(TheValue);   /將該值加入到列表控件中    /取紀錄字段值方式之二   / _bstr_t TheValue1=m_pRecordset

49、->Fields->GetItem("BIG_NAME")->Value;   / CString temp=TheValue1.copy();   / m_List.AddString(temp);   /數(shù)據(jù)類型轉(zhuǎn)換   _variant_t vUsername,vBirthday,vID,vOld;   TRACE("id:%d,姓名:%s,年齡:%d,生日:%srn",   vID.lVal,(LPCTSTR)

50、(_bstr_t)vUsername,vOld.lVal,(LPCTSTR)(_bstr_t)vBirthday);   m_pRecordset->MoveNext();/轉(zhuǎn)到下一條紀錄    m_pRecordset->Close();  m_pConnection->Close();  catch (_com_error e)/異常處理   AfxMessageBox(e.ErrorMessage();  m_pRecordset->Close(); /注

51、意!不要多次關(guān)閉!否則會出錯 m_pConnection->Close(); m_pRecordset = NULL; m_pConnection = NULL; 程序中通過_variant_t和_bstr_t轉(zhuǎn)換COM對象和C類型的數(shù)據(jù), _variant_t類封裝了OLE自治VARIANT數(shù)據(jù)類型。在C+中使用_variant_t類要比直接使用VARIANT數(shù)據(jù)類型容易得多。 好,編譯后該程序就能運行了,但記住運行前要創(chuàng)建一個叫ADOTest的ODBC數(shù)據(jù)源。該程序?qū)驯韒iddle中的BIG_NAME字段值顯示在列表控件中。 4執(zhí)行SQL命令并取得結(jié)果

52、記錄集    為了取得結(jié)果記錄集,我們定義一個指向Recordset對象的指針:_RecordsetPtr m_pRecordset;并為其創(chuàng)建Recordset對象的實例: m_pRecordset.CreateInstance("ADODB.Recordset");SQL命令的執(zhí)行可以采用多種形式,下面我們一進行闡述。(1)利用Connection對象的Execute方法執(zhí)行SQL命令Execute方法的原型如下所示:     _RecordsetPtr Connection15:Execute (

53、_bstr_t CommandText, VARIANT * RecordsAffected, long Options )      其中CommandText是命令字串,通常是SQL命令。 參數(shù)RecordsAffected是操作完成后所影響的行數(shù),  參數(shù)Options表示CommandText中內(nèi)容的類型,Options可以取如下值之一: adCmdText:表明CommandText是文本命令 adCmdTable:表明CommandText是一個表名 adCmdProc:表明CommandTe

54、xt是一個存儲過程 adCmdUnknown:未知    Execute執(zhí)行完后返回一個指向記錄集的指針,下面我們給出具體代碼并作說明。     _variant_t RecordsAffected;    /執(zhí)行SQL命令:CREATE TABLE創(chuàng)建表格users,users包含四個字段:整形ID,字符串username,整形old,日期型birthday    m_pConnection->Execute("CREATE TABLE users

55、(ID INTEGER,username TEXT,old INTEGER,birthday DATETIME)",   &RecordsAffected,   adCmdText);    /往表格里面添加記錄    m_pConnection->Execute("INSERT INTO users(ID,username,old,birthday) VALUES(1,''''Washington'''&

56、#39;,25,''''1970/1/1'''')",&RecordsAffected,adCmdText);    /將所有記錄old字段的值加一    m_pConnection->Execute("UPDATE users SET old = old+1",&RecordsAffected,adCmdText);/執(zhí)行SQL統(tǒng)計命令得到包含記錄條數(shù)的記錄集    m_pRecordse

57、t =  m_pConnection->Execute("SELECT COUNT(*) FROM users",&RecordsAffected,adCmdText);    _variant_t vIndex = (long)0;    _variant_t vCount = m_pRecordset->GetCollect(vIndex);/取得第一個字段的值放入vCount變量    上兩句可以寫成_variant_t vCount = m_pRe

58、cordset->GetCollect(_variant_t)(long)0);    m_pRecordset->Close();/關(guān)閉記錄集    CString message;    message.Format("共有%d條記錄",vCount.lVal);    AfxMessageBox(message);/顯示當前記錄條數(shù)(2)利用Command對象來執(zhí)行SQL命令 _CommandPtr m_pCommand;m_pCommand.CreateInstance("ADODB.Command");_variant_t vNULL;vNULL.vt = VT_ERROR;vNULL.scode = DISP_E_PARAMNOTFOUND;/定義為無參數(shù)m_pCommand->ActiveConnection = m_pConnection;/非常關(guān)鍵的一句,將建立的連接賦值給它m_pCommand->CommandText = "SELECT * FROM users"/命令字串m_pRecordset = m_pCommand->

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論