




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGEXXXIII摘要公司人事管理系統是典型的人事信息管理系統,其主要的功能是把人事管理過程信息化,自動化以減輕人工的重復繁瑣勞動。其開發(fā)主要包括后臺數據庫的建立維護以及前臺應用程序的開發(fā)兩個方面。對于后臺數據庫要求建立一個穩(wěn)定的數據庫,保持數據的一致性,完整性,安全性也是必要的。對于前臺要求穩(wěn)定,實用,易用。本系統是為公司人事管理的各種工作而設計的。根據需求分析,需要實現對系統用戶,基本信息(公司部門,人員相關信息等),考勤考評的管理。經過分析,本系統使用SQLSERVER做為其后臺數據庫,采用ADO數據庫鏈接技術;VisualC++做為開發(fā)工具,提供了相當齊備的類庫、友好的編程界面和多種多樣的數據庫訪問技術。其中ADO使得編寫數據庫應用程序變得簡單容易。公司人事管理系統是典型的信息管理系統,其開發(fā)主要包括后臺數據庫的建立和維護以及前端應用程序的開發(fā)兩個方面。對于前者要求建立起數據一致性,完整性,安全性好的庫。而對于后者則要求應用程序功能完備,易使用等特點。關鍵詞:VC++數據庫;人事管理系統;ADO數據源
AbstractCompany'spersonneladministrativesystemistypicalpersonnelinformationmanagementsystems,itsmainfunctionistoinformationandautomationtheprocessofthepersonnelinformationmanagementsystemwhichlightenpeoplefromrepeatedandtediousartificialwork.Itdevelopstworespectsofmaindevelopmentincludingthesetting-upandmaintainingofbackstagesupporter'sdatabaseandthefrontdeskapplicationprogram.Demandtosetupasteadydatabasetobackstagesupporter'sdatabase,keeptheconsistencyofthedata,integrality,securityareallessential.Astothethingthatthefrontdeskrequiressteadily,practical,easytouse.Thissystemwasworkedanddesignedforvariouskindsofcompany'spersonnelmanagement.Accordingtodemandanalysis,needtorealizesystematicuserscorrectly,basicinformation(company'sdepartment,personnel'srelevantinformation,etc.),themanagementthattheattendancechecksandrate.Afteranalyzing,thissystemusesSQLSERVERasitsbackstagedatabase,adoptADOdatabasetechnologytochain;takingVisualC++asthedevelopinginstrumentwhichhasofferedquitecompletekindsofstorehouses,friendlyprogramminginterfaceandvarieddatabasevisitingtechnology.ADOtechnologymakesitsimpleandeasytowritedatabaseapplicationprogram.Company'spersonneladministrativesystemistypicalinformationmanagementsystems,itdevelopstworespectsofmaindevelopmentincludingsetting-upandmaintenanceandfrontapplicationprogramofbackstagesupporter'sdatabase.Astothethingthattheformerdemandstosetupconsistencyofthedata,integrality,thestorehousewithgoodsecurity.Requiretothelatterthefunctionoftheapplicationprogramiscomplete,aptcharacteristicofusingetc.Keywords:ThedatabaseofVisualC++;PersonnelManageSystem;ThedatasourceofADO
目錄TOC\o"1-2"\h\z\u1引言 42系統分析 52.1概要分析 52.2總體設計 72.3開發(fā)環(huán)境 83數據庫設計 153.1數據規(guī)范化問題 153.2設計表的結構 154建立數據庫表的類 194.1部門表的類 194.2員工基本信息表的類 194.3員工家庭信息的類 194.4員工教育及工作經歷記錄的類 194.5員工考評表的類 204.6員工工作考勤表的類 204.7用戶信息表的類 205系統實現 215.1用ADO進行數據庫編程: 215.2實現用戶登錄功能 315.3實現部門管理功能 335.4實現員工信息管理功能 355.5實現考勤管理功能 405.6實現員工考評管理功能 445.7實現用戶管理功能 476結論 517致謝 518參考文獻 52
1引言人事管理是一個企業(yè)在經營管理中不可缺少的部分,它的成功與否對于企業(yè)的發(fā)展來說都是至關重要的,所以公司人事管理系統應該能夠為用戶提供充足的信息和快捷的查詢手段。但如果使用傳統的人工直接統計的話,工作量十分的龐大,存在許多的缺點,如:效率低,保密性差,且如果人多,時間一長,將產生大量的文件及數據,對于查找,更新和維護帶來困難。隨著科學技術的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領域并發(fā)揮著越來越重要的作用。作為計算機應用的一部分,使用計算機對人事進行管理,可使人們從繁重而又單調的統計運算中解脫出來,僅用一些簡單的操作便可及時準確地獲得需要得信息。使企業(yè)實現科學化,正規(guī)化管理,與世界接軌。因此,開發(fā)這樣一套管理軟件成為很必要的事情。此設計主要實現的功能有系統用戶管理,基本信息管理(部門、員工信息),考勤考評管理。本文主要構成如下:系統分析、數據庫設計、建立數據庫表的類、系統實現。本次畢業(yè)設計的數據庫采用了ADO技術,這是一個基于OLEDB的訪問接口,它繼承了OLEDB的技術的優(yōu)點,并且ADO基于COM,提供編程語言可利用的對象,如面向VC++。ADO在服務器應用方面非常有效,特別是對動態(tài)服務器頁面的支持。
2系統分析2.1概要分析2.1.1系統功能分析(UML)人事信息管理系統是對企業(yè)部門,人事檔案,考勤,考評等人事管理進行全面管理的系統。該系統通過采集在日常的人事管理中所產生的各種原始的數據,根據現代人事管理的要求,對數據進行分類,分析,匯總,建立程序化,制度化,規(guī)范化的人事信息計算機軟件管理系統,對各項人事信息進行分類維護與綜合查詢,為人事信息管理提供一個現代化管理手段,保持各種數據的完整性,及時性,正確性,完善管理體系,提高管理水平。系統的用例圖:基本的類圖:
2.1.2驗證需求分析階段的工作結果是開發(fā)軟件的重要基礎,大量統計數字表明,軟件系統中15%的錯誤起源于錯誤的需求。為了提高軟件的質量,確保軟件開發(fā)成功,降低軟件的開發(fā)成本,一旦對目標系統提出一組要求之后,必須嚴格驗證這些需求的正確性。一般來說,應從下面四個方面進行驗證:a.一致性所有需求必須是一致的,任何一條需求不能和其他需求互相矛盾。b.完整性需求必須是完整的,規(guī)格說明書應該包括用戶需要的每一個功能或性能。c.現實性指定的需求應該是用現有的硬件技術和軟件技術基礎上可以實現的。對硬件技術的進步可以做些預測,對軟件技術的進步很難做些預測,只能從現有的技術水平出發(fā)判斷需求的現實性。d.有效性必須證明需求是正確有效的,確保能解決用戶面對的問題。通過用戶和設計者對上述需求分析所得到的管理系統功能的復查,并且對照上面幾點要求進行驗證,人事信息管理系提出的基本滿足需求分析驗證的要求。2.2總體設計系統主要模塊分布如下:人事管理系統主窗體人事管理系統主窗體系統用戶管理基本信息管理考勤考評管理用戶管理修改密碼部門管理員工管理退出系統考勤管理考評管理系統用戶管理模塊:完成新建用戶信息,用戶信息管理,用戶密碼修改,用戶管理代碼功能。基本信息管理模塊:完成對公司部門信息編輯,管理,選擇;完成對員工選擇,基本信息管理,信息編輯,調轉部門,照片管理,家庭信息編輯,家庭信息管理,教育及工作經歷編輯,教育及工作經歷管理。完成退出系統。考勤考評管理模塊:完成考勤信息編輯,管理及員工月度考勤;員工考評信息編輯與管理。2.3開發(fā)環(huán)境2.3.1開發(fā)工具的選擇1.VisualC++VisualC++是運行于Windows平臺上的交互式的可視化集成開發(fā)環(huán)境,它是美國Microsoft公司開發(fā)的MicrosoftVisualStudio套件中的一部分。像其他可視化集成開發(fā)環(huán)境一樣,VisualC++集程序的代碼編輯、編譯、連接和調試等功能于一體,給編程人員提供了一個完整方便的開發(fā)界面和許多有效的輔助開發(fā)工具。VisualC++的應用程序向導可以以很大一部分類型的程序提供框架代碼,用戶不用書寫程序代碼,只需按幾個按鈕就可以生成一些完整的可以運行的程序。VisualC++具有以下優(yōu)點:1)面向對象、可視化開發(fā)。提供了面向對象的應用程序框架MFC(MicrosoftFoundationClass:微軟基礎類庫),大大簡化了程序員的編程工作,提高了模塊的可重用性。VisualC++還提供了基于CASE技術的可視化軟件自動生成和維護工具AppWizard、ClassWizard、VisualStudio、WizardBar等,幫助用戶直觀的、可視地設計程序的用戶界面,可以方便的編寫和管理各種類,維護程序源代碼,從而提高了開發(fā)效率。用戶可以簡單而容易地使用C/C++編程。2)眾多的開發(fā)商支持以及業(yè)已成為工業(yè)標準的MFC類庫。MFC類庫已經成為事實上的工業(yè)標準類庫,得到了眾多開發(fā)商和軟件開發(fā)工具的支持;另外,由于眾多的開發(fā)商都采用VisualC++進行軟件開發(fā),這樣用VisualC++開發(fā)的程序就與別的應用軟件有許多相似之處,易于學習和使用。3)VisualC++封裝了Windows的API(應用程序接口)函數、USER、KERNEL、GDI函數,幫助我們弄清了許多函數的組織方法,隱去了創(chuàng)建、維護窗口的許多復雜的例行工作,簡化了編程。2)ADO(ActiveXDataObject)ADO技術是基于OLEDB的訪問接口,它繼承了OLEDB技術的優(yōu)點,并且,ADO對OLEDB的接口作了封裝,定義了ADO對象,使程序開發(fā)得到簡化,ADO技術屬于數據庫訪問的高層接口。2.SQL主要語法SQLSERVER提供了關系數據庫的查詢語言SQL(StructuredQueryLanguage),是一種非常口語化、既易學又易懂的語法。此一語言幾乎是每個資料庫系統都必須提供的,,包含了資料的定義(DDL)以及資料的處理(DML)。SQL原來拼成SEQUEL,這語言的原型以“系統R“的名字在IBM圣荷西實驗室完成,經過IBM內部及其他的許多使用性及效率測試,其結果相當令人滿意,并決定在系統R的技術基礎發(fā)展出來IBM的產品。而且美國國家標準學會(ANSI)及國際標準化組織(ISO)在1987遵循一個幾乎是以IBMSQL為基礎的標準關連式資料語言定義。一、資料定義DDL(DataDefinitionLanguage)
資料定語言是指對資料的格式和形態(tài)下定義的語言,他是每個資料庫要建立時候時首先要面對的,舉凡資料分哪些表格關系、表格內的有什麼欄位主鍵、表格和表格之間互相參考的關系等等,都是在開始的時候所必須規(guī)劃好的。1、建表格:
CREATETABLEtable_name(
column1DATATYPE[NOTNULL][NOTNULLPRIMARYKEY],
column2DATATYPE[NOTNULL],
...)
說明:
DATATYPE--是資料的格式,詳見表。
NUTNULL--可不可以允許資料有空的(尚未有資料填入)。
PRIMARYKEY--是本表的主鍵。2、更改表格
ALTERTABLEtable_name
ADDCOLUMNcolumn_nameDATATYPE
說明:增加一個欄位(沒有刪除某個欄位的語法)。
ALTERTABLEtable_name
ADDPRIMARYKEY(column_name)
說明:更改表得的定義把某個欄位設為主鍵。
ALTERTABLEtable_name
DROPPRIMARYKEY(column_name)
說明:把主鍵的定義刪除。3、建立索引
CREATEINDEXindex_nameONtable_name(column_name)
說明:對某個表格的欄位建立索引以增加查詢時的速度。4、刪除
DROPtable_name
DROPindex_name二、資料形態(tài)DATATYPEs
smallint16位元的整數。
interger32位元的整數。
decimal(p,s)
p精確值和s大小的十進位整數,精確值p是指全部有幾個數(digits)大小值,s是指小數點后有幾位數。如果沒有特別指定,則系統會設為p=5;s=0。
float32位元的實數。
double64位元的實數。
char(n)n長度的字串,n不能超過254。
varchar(n)長度不固定且其最大長度為n的字串,n不能超過4000。
graphic(n)和char(n)一樣,不過其單位是兩個字元double-bytes,n不能超過127。這個形態(tài)是為了支援兩個字元長度的字體,例如中文字。
vargraphic(n)可變長度且其最大長度為n的雙字元字串,n不能超過2000。
date包含了年份、月份、日期。
time包含了小時、分鐘、秒。timestamp包含了年、月、日、時、分、秒、千分之一秒。組合查詢
組合查詢是指所查詢得資料來源并不只有單一的表格,而是聯合一個以上的
表格才能夠得到結果的。
SELECT*
FROMtable1,table2
WHEREtable1.colum1=table2.column1
說明:
1.查詢兩個表格中其中column1值相同的資料。
2.當然兩個表格相互比較的欄位,其資料形態(tài)必須相同。
3.一個復雜的查詢其動用到的表格可能會很多個。整合性的查詢:
SELECTCOUNT(*)
FROMtable_name
WHEREcolumn_name=xxx
說明:
查詢符合條件的資料共有幾筆。
SELECTSUM(column1)
FROMtable_name
說明:
1.計算出總和,所選的欄位必須是可數的數字形態(tài)。
2.除此以外還有AVG()是計算平均、MAX()、MIN()計算最大最小值的整合性查詢。
SELECTcolumn1,AVG(column2)
FROMtable_name
GROUPBYcolumn1
HAVINGAVG(column2)>xxx
說明:
1.GROUPBY:以column1為一組計算column2的平均值必須和AVG、SUM等整合性查詢的關鍵字
一起使用。
2.HAVING:必須和GROUPBY一起使用作為整合性的限制。復合性的查詢
SELECT*
FROMtable_name1
WHEREEXISTS(
SELECT*
FROMtable_name2
WHEREconditions)
說明:
1.WHERE的conditions可以是另外一個的query。
2.EXISTS在此是指存在與否。
SELECT*
FROMtable_name1
WHEREcolumn1IN(
SELECTcolumn1
FROMtable_name2
WHEREconditions)
說明:
1.IN后面接的是一個集合,表示column1存在集合里面。
2.SELECT出來的資料形態(tài)必須符合column1。其他查詢
SELECT*
FROMtable_name1
WHEREcolumn1LIKE’x%’
說明:LIKE必須和後面的’x%’相呼應表示以x為開頭的字串。
SELECT*
FROMtable_name1
WHEREcolumn1IN(’xxx’,’yyy’,..)
說明:IN後面接的是一個集合,表示column1存在集合里面。
SELECT*
FROMtable_name1
WHEREcolumn1BETWEENxxANDyy
說明:BETWEEN表示column1的值介於xx和yy之間。3、更改資料:
UPDATEtable_name
SETcolumn1=’xxx’
WHEREconditoins
說明:
1.更改某個欄位設定其值為’xxx’。
2.conditions是所要符合的條件、若沒有WHERE則整個table的那個欄位都會全部被更改。4、刪除資料:
ELETEFROMtable_name
WHEREconditions
說明:刪除符合條件的資料。說明:關于WHERE條件后面如果包含有日期的比較,不同數據庫有不同的表達式。具體如下:
(1)如果是ACCESS數據庫,則為:WHEREmydate>#2000-01-01#
(2)如果是ORACLE數據庫,則為:WHEREmydate>cast(’2000-01-01’asdate)
或:WHEREmydate>to_date(’2000-01-01’,’yyyy-mm-dd’)
如果比較日期時間型,則為:
WHEREmydatetime>to_date(’2000-01-0110:00:01’,’yyyy-mm-ddhh24:mi:ss’)2.3.2運行環(huán)境硬件平臺:CPU的主頻在500MHz上,內存在128MB以上軟件平臺:操作系統:Window98/Me/NT/2000/XP開發(fā)工具:VisualStudio2003數據庫:SQLServer2000及其以上版本
3數據庫設計通過對人事信息管理系統的需求分析及驗證和總體的規(guī)劃設計,確定了設計本系統所需的各個模塊及各模塊所要的基本功能。就要設計數據庫及數據庫數據,并用數據庫對各模塊進行設計和編碼。3.1數據規(guī)范化問題當把數據庫收集在一個二維表中,往往有很多重復的數據,即冗余度大。像這樣的二維表是不宜作為數據庫管理的,必須進行規(guī)范化后才能使用。數據規(guī)范化理論是研究如何將一個不好的關系模型轉化成為好的關系模型。規(guī)范化理論認為,關系數據庫中的每一個關系都要滿足一定的規(guī)范。根據滿足規(guī)范的條件不同,可分為五個等級,分別稱為第一范式(1NF),第二范式(2NF)……第五范式(5NF),通常解決一般性問題時,只要把數據規(guī)范到第三范式(3NF)標準就可滿足需要,不是規(guī)范化等級越高越好。運用Microsoftaccess2003新建一個“hr.mdb”的數據庫,人事管理所有人事信息的數據都保存在這個數據庫中。3.2設計表的結構表3-1列名(中文)列名(英文)數據類型寬度是否為空部門編號(主鍵)Dep_idintNo部門名稱Dep_namevarchar40No部門描述Describechar200No上級部門UpperIdintNo表3-2列名(中文)列名(英文)數據類型寬度是否為空員工編號(主鍵)Emp_IdintNo員工姓名Emp_namevarchar50No照片ImageYes性別Sexchar2Yes民族Nationalityvarchar40Yes出生日期Birthvarchar20Yes政治面貌Political_Partyvarchar40Yes文化程度Culture_levelvarchar40Yes婚姻狀況Marital_Conditionvarchar20Yes家庭住址Family_Placevarchar60Yes身份證號Id_Cardvarchar20Yes工作證號BadgeIDvarchar40Yes辦公電話Office_phonevarchar30Yes手機號Mobilevarchar30Yes檔案所在地File_keep_orgvarchar100Yes戶口所在地Hukouvarchar100Yes到崗日期HireDatevarchar20Yes所在部門編號Dep_IdintYes工作崗位Positionvarchar40Yes職務Titlevarchar20Yes員工狀態(tài)StateintYes上級員工UpperIdintYes合同有效期Contract_Durationvarchar20Yes填表人Fillin_Personvarchar30Yes填表時間Fillin_Timevarchar20Yes表3-3列名(中文)列名(英文)數據類型寬度是否為空編號(主鍵)IdintNo員工編號Emp_IdintNo姓名Namevarchar50No性別Sexchar2Yes年齡AgeintYes關系Relationshipvarchar20Yes工作單位Workingorgvarchar40Yes表3-4列名(中文)列名(英文)數據類型寬度是否為空編號(主鍵)IdintNo員工編號Emp_IdintNo開始日期Start_Datechar10Yes結束日期End_Datechar10Yes學校/單位School_Orgvarchar50Yes職務Titlevarchar20Yes表3-5列名(中文)列名(英文)數據類型寬度是否為空考評月份EvaMonthchar10No員工編號(主鍵)Emp_IdintNo總體評價ztEvavarchar200Yes獎勵事由jlReasonvarchar200Yes獎勵金額jlAmountsmallintYes處罰事由cfReasonvarchar200Yes處罰金額cfAmountintYes表3-6列名(中文)列名(英文)數據類型寬度是否為空考勤日期CheckDatechar10No員工編號(主鍵)Emp_IdintNo全勤天數qqDaysintYes出差天數cqDaysintYes病家天數bjDaysintYes事假天數sjDaysintYes曠工天數kgDaysintYes法定休假日fdxjDaysintYes年休假日nxjDaysintYes倒休假天數dxjDaysintYes遲到分鐘數cdMinutesintYes早退分鐘數ztMinutesintYes一類加班天數Ot1DaysintYes二類加班天數Ot2DaysintYes三類加班天數Ot3DaysintYes備注信息Memovarchar200Yes表3-7列名(中文)列名(英文)數據類型寬度是否為空用戶名(主鍵)UserNamevarchar40No密碼Pwdvarchar40No用戶類型User_TypeintNo
4建立數據庫表的類4.1部門表的類部門表的類用來管理部門表的數據庫操作。定義部門編號,部門名稱,部門描述以及上級部門;構造和析構部門表;設置和讀取成員變量;對數據庫的操作:判斷指定部門名稱是否存在,是否包含下級部門(如果又則不能刪除),指定部門是否有員工(若有則不能刪除);讀取所有部門名稱,上級部門及相關的描述信息等。4.2員工基本信息表的類員工表的類用來管理員工基本信息表的數據庫操作。定義員工編號,姓名,性別,民族,出生年月,政治面貌,文化程度,婚姻狀況,家庭住址,身份證號,識別卡號,辦公室電話,手機號,檔案所在地,戶口,受雇日期,所在部門編號,職位,頭銜,國籍,上級部門編號,合同期,備忘錄,………;構造和析構員工基本信息表;設置和讀取成員變量;數據庫操作:判定指定的員工姓名是否存在;根據指定的員工編號返回員工姓名;根據員工編號讀取所有的字段值,更新部門信息,以便調轉部門時調用。4.3員工家庭信息的類員工家庭信息的類用來管理員工家庭信息的數據庫操作。定義員工家庭成員的編號,員工編號,姓名,性別,年齡,關系,原先工作地;構造和析構員工家庭信息表;讀取和設置成員變量;數據庫操作:根據員工編號讀取所有字段值,更新家庭成員信息。4.4員工教育及工作經歷記錄的類員工教育及工作經歷記錄的類用來管理員工教育及工作經歷記錄的數據庫操作。定義員工教育及工作經歷記錄表的項:編號,員工編號,起始日期,截止日期,學校,職稱。構造和析構員工教育及工作經歷記錄表。讀取和設置成員變量。數據庫操作:跟據員工編號讀取所有的字段值,更新記錄編號。4.5員工考評表的類員工考評表的類用來管理員工考評的數據庫操作。定義考評表的基本項:月度考評,員工編號,總體考評,獎勵原因,獎勵數目,處罰原因,處罰數目,備忘錄。構造和析構員工考評表。讀取和設置成員變量。數據庫操作:判斷指定員工/月份考評記錄是否存在,根據員工編號讀取所有的字段值,更新月份考評情況。4.6員工工作考勤表的類員工考勤表的類用來管理員工考勤表的數據庫操作。定義考勤表的基本項:考勤日期,員工編號,缺勤天數,出勤天數,病假天數,事假天數,曠工天數,法定休假天數,年休假天數,調休假天數,遲到分鐘數,早退分鐘數,加班一天,加班兩天,加班三天,備忘錄。構造和析構員工考勤表。讀取和設置成員變量。數據庫操作:判定指定員工/日期的考勤記錄是否存在;根據員工編號讀取所有字段值,更新員工/日期的考勤記錄。4.7用戶信息表的類用戶信息表的類用來管理用戶信息的數據庫操作。定義用戶信息的基本項:用戶名,密碼。構造和析構用戶信息表。讀取和設置成員變量。數據庫操作:判斷指定用戶名是否存在;獲取用戶名,更新密碼。
5系統實現5.1用ADO進行數據庫編程:1.生成應用程序框架并初始化OLE/COM庫環(huán)境創(chuàng)建一個標準的MFCAppWizard(exe)應用程序,然后在使用ADO數據庫的InitInstance函數中初始化OLE/COM庫(因為ADO庫是一個COMDLL庫)。
本例為:BOOLCAdotestDlg::OnInitDialog()
{
::CoInitialize(NULL);//初始化OLE/COM庫環(huán)境
}程序最后要調用::CoUninitialize();//釋放程序占用的COM資源。另外:m_pRecordset->Close();注意?。?!不要多次關閉!?。。。。。。。。。。?/p>
m_pConnection->Close();
m_pRecordset=NULL;
m_pConnection=NULL;
2.引入ADO庫文件使用ADO前必須在工程的stdafx.h文件最后用直接引入符號#import引入ADO庫文件,以使編譯器能正確編譯。代碼如下:
#import"C:\ProgramFiles\commonfiles\system\ado\msado15.dll"no_namespacerename("EOF","adoEOF")
ADO類的定義是作為一種資源存儲在ADODLL(msado15.dll)中,在其內部稱為類型庫。類型庫描述了自治接口,以及C++使用的COMvtable接口。當使用#import指令時,在運行時VisualC++需要從ADODLL中讀取這個類型庫,并以此創(chuàng)建一組C++頭文件。這些頭文件具有.tli和.tlh擴展名,讀者可以在項目的目錄下找到這兩個文件。在C++程序代碼中調用的ADO類要在這些文件中定義。
程序的第三行指示ADO對象不使用名稱空間。在有些應用程序中,由于應用程序中的對象與ADO中的對象之間可能會出現命名沖突,所以有必要使用名稱空間。如果要使用名稱空間,則可把第三行程序修改為:rename_namespace("AdoNS")。第四行代碼將ADO中的EOF(文件結束)更名為adoEOF,以避免與定義了自己的EOF的其他庫沖突。3.利用智能指針進行數據庫操作在CaboutDlg頭文件中定義兩個ADO智能指針類實例,并在對話框中加入一個ListCtrl。
classCAdotestDlg:publicCDialog
{
_ConnectionPtrm_pConnection;
_RecordsetPtrm_pRecordset;
ClistCtrlm_List;
}
ADO庫包含三個智能指針:_ConnectionPtr、_CommandPtr和_RecordsetPtr。_ConnectionPtr通常被用來創(chuàng)建一個數據連接或執(zhí)行一條不返回任何結果的SQL語句,如一個存儲過程。
_CommandPtr返回一個記錄集。它提供了一種簡單的方法來執(zhí)行返回記錄集的存儲過程和SQL語句。在使用_CommandPtr接口時,可以利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用連接串。_RecordsetPtr是一個記錄集對象。與以上兩種對象相比,它對記錄集提供了更多的控制功能,如記錄鎖定、游標控制等。在使用ADO程序的事件響應中OnButton1加入以下代碼:voidCAdotestDlg::OnButton1()
{
m_List.ResetContent();
m_pConnection.CreateInstance(_uuidof(Connection));//初始化Connection指針
m_pRecordset.CreateInstance(_uuidof(Recordset));//初始化Recordset指針
try
{
m_pConnection->Open("DSN=ADOTest","","",0);//連接叫作ADOTest的ODBC數據源
//注意:這是連接不需要用戶ID或密碼的open函數
//否則形式為->Open("DSN=test;uid=sa;pwd=123;","","",0);
//執(zhí)行SQL語句得到一個記錄集把其指針賦值給m_pRecordset
CStringstrSql="select*frommiddle";
BSTRbstrSQL=strSql.AllocSysString();
m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
//adOpenDynamic:動態(tài)adLockOptimistic樂觀封鎖法adCmdText:文本查詢語句
while(!m_pRecordset->adoEOF)//遍歷所有記錄
{
//取紀錄字段值方式之一
_variant_tTheValue;//VARIANT數據類型
TheValue=m_pRecordset->GetCollect("BIG_NAME");//得到字段BIG_NAME的值
if(TheValue.vt!=VT_NULL)
m_List.AddString((char*)_bstr_t(TheValue));
//將該值加入到列表控件中
//取紀錄字段值方式之二
//_bstr_tTheValue1=m_pRecordset->Fields->GetItem("BIG_NAME")->Value;
//CStringtemp=TheValue1.copy();
//m_List.AddString(temp);
//數據類型轉換
_variant_tvUsername,vBirthday,vID,vOld;
TRACE("id:%d,姓名:%s,年齡:%d,生日:%s\r\n",
vID.lVal,(LPCTSTR)(_bstr_t)vUsername,vOld.lVal,(LPCTSTR)(_bstr_t)vBirthday);
m_pRecordset->MoveNext();//轉到下一條紀錄
}
m_pRecordset->Close();
m_pConnection->Close();
}
catch(_com_errore)//異常處理
{
AfxMessageBox(e.ErrorMessage());
}
m_pRecordset->Close();//注意?。?!不要多次關閉!?。?!否則會出錯
m_pConnection->Close();
m_pRecordset=NULL;
m_pConnection=NULL;
}程序中通過_variant_t和_bstr_t轉換COM對象和C++類型的數據,_variant_t類封裝了OLE自治VARIANT數據類型。在C++中使用_variant_t類要比直接使用VARIANT數據類型容易得多。好,編譯后該程序就能運行了,但記住運行前要創(chuàng)建一個叫ADOTest的ODBC數據源。該程序將把表middle中的BIG_NAME字段值顯示在列表控件中。4.執(zhí)行SQL命令并取得結果記錄集
為了取得結果記錄集,我們定義一個指向Recordset對象的指針:_RecordsetPtrm_pRecordset;
并為其創(chuàng)建Recordset對象的實例:m_pRecordset.CreateInstance("ADODB.Recordset");
SQL命令的執(zhí)行可以采用多種形式,下面我們一進行闡述。(1)利用Connection對象的Execute方法執(zhí)行SQL命令Execute方法的原型如下所示:
_RecordsetPtrConnection15::Execute(_bstr_tCommandText,VARIANT*RecordsAffected,longOptions)
其中CommandText是命令字串,通常是SQL命令。
參數RecordsAffected是操作完成后所影響的行數,
參數Options表示CommandText中內容的類型,Options可以取如下值之一:
adCmdText:表明CommandText是文本命令
adCmdTable:表明CommandText是一個表名
adCmdProc:表明CommandText是一個存儲過程
adCmdUnknown:未知
Execute執(zhí)行完后返回一個指向記錄集的指針,下面我們給出具體代碼并作說明。
_variant_tRecordsAffected;
///執(zhí)行SQL命令:CREATETABLE創(chuàng)建表格users,users包含四個字段:整形ID,字符串username,整形old,日期型birthday
m_pConnection->Execute("CREATETABLEusers(IDINTEGER,usernameTEXT,oldINTEGER,birthdayDATETIME)",
&RecordsAffected,
adCmdText);
///往表格里面添加記錄
m_pConnection->Execute("INSERTINTOusers(ID,username,old,birthday)VALUES(1,''''Washington'''',25,''''1970/1/1'''')",&RecordsAffected,adCmdText);
///將所有記錄old字段的值加一
m_pConnection->Execute("UPDATEusersSETold=old+1",&RecordsAffected,adCmdText);///執(zhí)行SQL統計命令得到包含記錄條數的記錄集
m_pRecordset=
m_pConnection->Execute("SELECTCOUNT(*)FROMusers",&RecordsAffected,adCmdText);
_variant_tvIndex=(long)0;
_variant_tvCount=m_pRecordset->GetCollect(vIndex);///取得第一個字段的值放入vCount變量
上兩句可以寫成_variant_tvCount=m_pRecordset->GetCollect((_variant_t)((long)0));
m_pRecordset->Close();///關閉記錄集
CStringmessage;
message.Format("共有%d條記錄",vCount.lVal);
AfxMessageBox(message);///顯示當前記錄條數(2)利用Command對象來執(zhí)行SQL命令_CommandPtrm_pCommand;
m_pCommand.CreateInstance("ADODB.Command");
_variant_tvNULL;
vNULL.vt=VT_ERROR;
vNULL.scode=DISP_E_PARAMNOTFOUND;///定義為無參數
m_pCommand->ActiveConnection=m_pConnection;///非常關鍵的一句,將建立的連接賦值給它
m_pCommand->CommandText="SELECT*FROMusers";///命令字串
m_pRecordset=m_pCommand->Execute(&vNULL,&vNULL,adCmdText);///執(zhí)行命令,取得記錄集在這段代碼中我們只是用Command對象來執(zhí)行了SELECT查詢語句,Command對象在進行存儲過程的調用中能真正體現它的作用。5.記錄集的遍歷、更新
根據我們剛才通過執(zhí)行SQL命令建立好的users表,它包含四個字段:ID,username,old,birthday
由代碼實現:打開記錄集,遍歷所有記錄,刪除第一條記錄,添加三條記錄,移動光標到第二條記錄,更改其年齡,保存到數據庫。
5.2實現用戶登錄功能5.2.1全局類classCGlobal{public: CUserscurUser; CGlobal(); virtual~CGlobal();};5.2.2用戶登錄對話框圖5-1登錄界面功能:用戶登錄進入人事管理系統。系統啟動后,首先要做的就是用戶登錄。若不登錄系統,所有功能都無法使用。用戶只有登錄系統后,根據其具有的權限,才能執(zhí)行一定的操作。操作:進入該功能后,要求輸入用戶的登錄名及其口令,只有其登錄名和口令完全正確,才能進入人事管理系統。圖5-2人事信息管理主界面系統會根據為用戶分配的權限,設置其對應的功能為有效,用戶就可操作該功能。5.3實現部門管理功能5.3.1部門信息管理功能圖5-3部門信息管理界面點擊人事管理系統主菜單上的基本信息管理,進入部門管理子菜單,彈出如上部門信息管理對話框,若要添加部門及信息,點擊添加,彈出如下對話框圖5-4編輯部門信息界面即可添加部門及相關的信息;若要對部門信息進行修改,選定某一部門,點擊修改,彈出如上對話框,可對部門名及相關描述進行修改更新;刪除操作只能從某一部門的最直接下屬部門開始操作,若越權操作,則會彈出警告對話框:此部門包含下級部門,不能刪除,同時樹的根部:部門信息為不可刪除項;單擊關閉即可退出部門信息管理。5.3.2部門信息選擇功能圖5-5選擇部門信息界面5.4實現員工信息管理功能圖5-6員工信息管理界面點擊員工管理,進入員工基本信息管理界面,即可選擇指定的員工及對所選的員工的相應的信息進行編輯修改(圖5-7),可選擇相應部門添加,刪除員工,實現員工調轉部門;同時選定員工后,還可編輯其家庭成員信息,編輯自己的工作經歷等。最后點擊關閉退出基本信息的管理。圖5-7編輯員工基本信息界面5.5實現考勤管理功能圖5-8考勤管理界面點擊考勤管理進入員工考勤信息管理,選擇考勤日期,所在部門,則會顯示此部門員工的考勤記錄,設置員工考勤相關信息,可實現對員工月度考勤的統計,點擊關閉退出考勤管理。5.6實現員工考評管理功能圖5-9考評管理界面點擊考評管理,進入員工考評管理界面,選擇考評時間:x年x月,選擇所在部門:xx,即可顯示此部門下的員工考評情況,可瀏覽設置員工考評信息,點擊關閉退出員工考評管理。5.7實現用戶管理功能圖5-10用戶管理界面點擊用戶管理,進入用戶管理界面,做為超級用戶可添加刪除指定用戶,同時可重置密碼,即恢復用戶最初的密碼,點擊取消退出用戶管理。圖5-11新建用戶界面用戶密碼修改功能點擊修改密碼,進入修改密碼界面,即可對已有用戶密碼進行修改。圖5-12修改密碼界面
6結論通過這幾個月的努力,人事信息管理系統的設計與開發(fā)已完成。其基本功能包括:系統用戶管理:包括用戶管理、修改密碼;基本信息管理:包括部門管理、人員基本信息管理;考勤、考評管理等功能已基本達到。這次畢業(yè)設計是按照軟件開發(fā)流程進行的。從一開始的詳細設計,用UML描繪出系統的基本框架,到數據庫的設計,以及每個類的實現,采用了面向對象的思想,這對系統的日后維護及功能的擴充有很大的幫助。在這幾個月的開發(fā)過程中,加深了對VisualC++的理解,對SQLSERVER數據庫使用也比較熟練,尤其是SQL語句的使用。最重要的是,我對這樣一個大的程序的編寫過程中,培養(yǎng)了自學的能力,對C++語言的認識有了進一步的提高。7致謝8參考文獻基于C8051F單片機直流電動機反饋控制系統的設計與研究基于單片機的嵌入式Web服務器的研究MOTOROLA單片機MC68HC(8)05PV8/A內嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機溫度控制系統的研制基于MCS-51系列單片機的通用控制模塊的研究基于單片機實現的供暖系統最佳啟停自校正(STR)調節(jié)器單片機控制的二級倒立擺系統的研究基于增強型51系列單片機的TCP/IP協議棧的實現基于單片機的蓄電池自動監(jiān)測系統基于32位嵌入式單片機系統的圖像采集與處理技術的研究基于單片機的作物營養(yǎng)診斷專家系統的研究基于單片機的交流伺服電機運動控制系統研究與開發(fā)基于單片機的泵管內壁硬度測試儀的研制基于單片機的自動找平控制系統研究基于C8051F040單片機的嵌入式系統開發(fā)基于單片機的液壓動力系統狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機實現一種基于單片機的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機沖床數控系統的研究基于CYGNAL單片機的在線間歇式濁度儀的研制基于單片機的噴油泵試驗臺控制器的研制基于單片機的軟起動器的研究和設計基于單片機控制的高速快走絲電火花線切割機床短循環(huán)走絲方式研究基于單片機的機電產品控制系統開發(fā)基于PIC單片機的智能手機充電器基于單片機的實時內核設計及其應用研究基于單片機的遠程抄表系統的設計與研究基于單片機的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機系統單片機系統軟件構件開發(fā)的技術研究基于單片機的液體點滴速度自動檢測儀的研制基于單片機系統的多功能溫度測量儀的研制基于PIC單片機的電能采集終端的設計和應用基于單片機的光纖光柵解調儀的研制氣壓式線性摩擦焊機單片機控制系統的研制基于單片機的數字磁通門傳感器基于單片機的旋轉變壓器-數字轉換器的研究基于單片機的光纖Bragg光柵解調系統的研究單片機控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機的多生理信號檢測儀基于單片機的電機運動控制系統設計Pico專用單片機核的可測性設計研究基于MCS-51單片機的熱量計基于雙單片機的智能遙測微型氣象站MCS-51單片機構建機器人的實踐研究基于單片機的輪軌力檢測基于單片機的GPS定位儀的研究與實現基于單片機的電液伺服控制系統用于單片機系統的MMC卡文件系統研制基于單片機的時控和計數系統性能優(yōu)化的研究基于單片機和CPLD的粗光柵位移測量系統研究單片機控制的后備式方波UPS提升高職學生單片機應用能力的探究基于單片機控制的自動低頻減載裝置研究基于單片機控制的水下焊接電源的研究基于單片機的多通道數據采集系統基于uPSD3234單片機的氚表面污染測量儀的研制基于單片機的紅外測油儀的研究96系列單片機仿真器研究與設計基于單片機的單晶金剛石刀具刃磨設備的數控改造基于單片機的溫度智能控制系統的設計與實現基于MSP430單片機的電梯門機控制器的研制基于單片機的氣體測漏儀的研究基于三菱M16C/6N系列單片機的CAN/USB協議轉換器基于單片機和DSP的變壓器油色譜在線監(jiān)測技術研究基于單片機的膛壁溫度報警系統設計基于AVR單片機的低壓無功補償控制器的設計基于單片機船舶電力推進電機監(jiān)測系統基于單片機網絡的振動信號的采集系統基于單片機的大容量數據存儲技術的應用研究基于單片機的疊圖機研究與教學方法實踐基于單片機嵌入式Web服務器技術的研究及實現基于AT89S52單片機的通用數據采集系統基于單片機的多道脈沖幅度分析儀研究機器人旋轉電弧傳感角焊縫跟蹤單片機控制系統基于單片機的控制系統在PLC虛擬教學實驗中的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北??叼B(yǎng)職業(yè)學院《藥學學科概論》2023-2024學年第一學期期末試卷
- 福州黎明職業(yè)技術學院《乳品研究與開發(fā)》2023-2024學年第一學期期末試卷
- 安徽現代信息工程職業(yè)學院《行為矯正的原理與技術》2023-2024學年第二學期期末試卷
- 湖南省瀏陽一中、株洲二中等湘東七校2024-2025學年高三第二次質檢化學試題含解析
- 廈門華天涉外職業(yè)技術學院《幼兒園教育活動設計與實施三》2023-2024學年第二學期期末試卷
- 蘭考三農職業(yè)學院《金融軟件應用技術綜合實踐》2023-2024學年第二學期期末試卷
- 長沙軌道交通職業(yè)學院《土質學與土力學》2023-2024學年第二學期期末試卷
- 包頭鐵道職業(yè)技術學院《思維與語言能力訓練》2023-2024學年第二學期期末試卷
- 版臨床護理實踐指南
- 蓮花與中式浮雕
- 《畢業(yè)生登記表》填寫模板
- 風電場建設項目綠色施工方案
- 臨時操作平臺施工方案(33頁)
- TCMBA 013-2021 醫(yī)療機構管理嵌合抗原受體T細胞治療產品臨床應用的規(guī)范
- GIS軟件工程_01概述
- 湘少版級英語單詞表吐血整理
- SF36量表內容與計分方法附
- 第一單元到郊外去
- 食堂出入庫明細表(新)
- 澆注型聚氨酯彈性體生產技術標準_圖文
- 《大力集團大型電動機降補固態(tài)軟起動裝置(PPT 31頁)6.65MB》
評論
0/150
提交評論