數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告(人事管理系統(tǒng)).doc
課程設(shè)計(jì)報(bào)告 課程設(shè)計(jì)題目: 人事管理系統(tǒng) 姓 名: 學(xué) 號(hào): 班 級(jí): 指導(dǎo)教師 : 2016 年1月15日1 題目分析:人事管理系統(tǒng)是企、事業(yè)單位常見(jiàn)的計(jì)算機(jī)信息管理系統(tǒng)。它的主要任務(wù)是對(duì)各種人事信息進(jìn)行日常的信息管理,如人員信息的輸入、查詢(xún)、修改、增加、刪除,迅速準(zhǔn)確地完成各種人員信息的統(tǒng)計(jì)計(jì)算和匯總,快速打印出報(bào)表。在建立與實(shí)現(xiàn)人事管理系統(tǒng)時(shí),進(jìn)行了功能劃分,能夠由數(shù)據(jù)庫(kù)管理系統(tǒng)完成的功能應(yīng)盡可能由數(shù)據(jù)庫(kù)管理系統(tǒng)守成,充分發(fā)揮數(shù)據(jù)庫(kù)管理系統(tǒng)高效、完全、可靠、便捷的性能,減少編程人員的工作量。工資管理系統(tǒng)是數(shù)據(jù)庫(kù)管理系統(tǒng)的一個(gè)比較典型的應(yīng)用,前臺(tái)使用的是微軟的VB6.0,后臺(tái)數(shù)據(jù)庫(kù)采用Microsoft SQL Sever數(shù)據(jù)庫(kù)。運(yùn)行結(jié)果證明,本人事管理系統(tǒng)極大提高了工作效率,節(jié)省了人力和物力,自重滿足企業(yè)員工管理的需要。人事管理系統(tǒng)的主要任務(wù)是用計(jì)算機(jī)對(duì)各種員工信息進(jìn)行日常的管理,如查詢(xún)、修改、添加、刪除以及存儲(chǔ)等,迅速準(zhǔn)確地完成各種員工信息的統(tǒng)計(jì)計(jì)算和匯總工作,針對(duì)系統(tǒng)服務(wù)對(duì)象的具體要求,設(shè)計(jì)了人事管理系統(tǒng)。人事管理系統(tǒng)主要有以下幾大功能:(1) 對(duì)單位人員的變動(dòng)進(jìn)行處理。一個(gè)單位的職工不會(huì)是一成不變的,總是在不斷的變化:有調(diào)出、有調(diào)入、也有職工在本單位內(nèi)部調(diào)動(dòng)。因此,設(shè)計(jì)系統(tǒng)是應(yīng)考慮到這些情況。(2) 對(duì)職工的工資進(jìn)行計(jì)算、修改??梢詫?duì)職工的工資檔案進(jìn)行個(gè)別、部分和批量修改,同時(shí),能對(duì)各職工的工資進(jìn)行計(jì)算,即計(jì)算基本工資、崗位工資、水電費(fèi)及實(shí)發(fā)金額等。(3) 查詢(xún)統(tǒng)計(jì)功能。要求即可以單項(xiàng)查詢(xún),比如查看某個(gè)職工的就職情況等;也可以多項(xiàng)查詢(xún),比如某個(gè)部門(mén)所有的員工的工資信息。2 設(shè)計(jì)分析:1,數(shù)據(jù)表的設(shè)計(jì):(1)基本信息表:鍵名稱(chēng)數(shù)據(jù)類(lèi)型大小空默認(rèn)值主鍵員工編號(hào)char8Not null姓名char8Not null性別char2null“男”出生年月datetime8null外鍵所屬部門(mén)char4null文化程度char4null職稱(chēng)char12null身份證號(hào)Varchar50null婚姻狀況Char20null備注Varchar100null年齡IntNull(2) 基本部門(mén)表鍵名稱(chēng)數(shù)據(jù)類(lèi)型大小空默認(rèn)值主鍵部門(mén)編號(hào)char4Not null部門(mén)名稱(chēng)char20null部門(mén)負(fù)責(zé)人char8null部門(mén)人數(shù)int4null(3) 職工工資表鍵名稱(chēng)數(shù)據(jù)類(lèi)型大小空默認(rèn)值主鍵、外鍵員工編號(hào)char8不可以外鍵部門(mén)編號(hào)char4可以基本工資numeric5(8,2)可以獎(jiǎng)金numeric5(8,2)可以2. ER圖設(shè)計(jì):3.ER圖轉(zhuǎn)換成關(guān)系模式:(主鍵添加下劃線)(1) 基本信息(編號(hào),姓名,性別,籍貫,年齡,學(xué)歷,婚姻狀況,部門(mén),職稱(chēng),參加工作時(shí)間,崗位,工資,身份證號(hào),電話號(hào)碼,備注)(2) 職工部門(mén):(部門(mén)編號(hào),部門(mén)名稱(chēng),職工總數(shù),部門(mén)負(fù)責(zé)人,所有職工編號(hào))(3) 職工工資表:(編號(hào),姓名,工資,獎(jiǎng)金)(4) 人事管理(編號(hào),部門(mén)編號(hào),姓名)3 創(chuàng)建人事管理系統(tǒng)(數(shù)據(jù)庫(kù)部分)1創(chuàng)建數(shù)據(jù)庫(kù):(1) 創(chuàng)建數(shù)據(jù)庫(kù)的實(shí)現(xiàn):create database 人事管理系統(tǒng) on primary ( name=人事管理系統(tǒng), filename=G:數(shù)據(jù)庫(kù)人事管理系統(tǒng).mdf, size=5, maxsize=100, filegrowth=10% ) log on ( name=人事信息管理系統(tǒng), filename=G:數(shù)據(jù)庫(kù)人事管理系統(tǒng).ldf, size=3, maxsize=100, filegrowth=5 )(2) 創(chuàng)建數(shù)據(jù)庫(kù):2. 創(chuàng)建基本數(shù)據(jù)表:(1)創(chuàng)建數(shù)據(jù)標(biāo)的實(shí)現(xiàn); use 人事管理系統(tǒng) create table 基本職工信息表(姓名 varchar(20),編號(hào) char(8),性別 char(8),籍貫 char(10),年齡 int,學(xué)歷 varchar(20),婚姻狀況 varchar(20),部門(mén) varchar(20),職稱(chēng) varchar(20),參加工作時(shí)間 char(10),崗位 varchar(30),工資 char(20),省份證號(hào) varchar(30),電話號(hào)碼 varchar(30),備注 varchar (50)use 人事管理系統(tǒng) create table 職工部門(mén)表(部門(mén)編號(hào) int,部門(mén)名稱(chēng) varchar(30),部門(mén)負(fù)責(zé)人 varchar(30),職工總數(shù) int,所有職員編號(hào) varchar(100)use 人事管理系統(tǒng) create table 職工工資表(編號(hào) char(8),姓名 varchar(50),工資 char(20),獎(jiǎng)金 char(8)數(shù)據(jù)表的創(chuàng)建:基本信息表:職工部門(mén)表職工工資表3. 創(chuàng)建存儲(chǔ)過(guò)程: create proc p2(sname varchar(20) as if exists( select * from 職工基本信息表where sname=sname) select * from 職工基本信息表where sname=sname else print 查無(wú)此人 p2 劉 4. 創(chuàng)建觸發(fā)器: create trigger tr1 on 基本職工信息表 for insert as print 任何人不得添加數(shù)據(jù) rollbackselect * from s四,創(chuàng)建人事管理系統(tǒng)訪問(wèn)鍵面:(VB部分)1,創(chuàng)建鍵面的實(shí)現(xiàn)代碼:(1)基本職工信息查詢(xún):Private Sub Command1_Click()Unload MeEnd SubPrivate Sub DataGrid1_Click()With Adodc1.RecordsetText1(0) = .Fields("姓名")Text1(1) = .Fields("編號(hào)")Text1(2) = .Fields("性別")Text1(3) = .Fields("籍貫")End WithEnd SubPrivate Sub Form_Load()Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""strsql1 = "select *from 基本職工信息表"Adodc1.ConnectionString = connAdodc1.RecordSource = strsql1Adodc1.RefreshSet DataGrid1.DataSource = Adodc1With Adodc1.RecordsetText1.Text = .Fields("姓名")Text2.Text = .Fields("編號(hào)")Text3.Text = .Fields("性別")Text4.Text = .Fields("籍貫")End WithEnd Sub(2) 基本的職工工資:Private Sub Command1_Click()Unload MeEnd SubPrivate Sub DataGrid1_Click()With Adodc1.RecordsetText1(0) = .Fields("姓名")Text1(1) = .Fields("編號(hào)")Text1(2) = .Fields("性別")Text1(3) = .Fields("籍貫")End WithEnd SubPrivate Sub Form_Load()Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""strsql1 = "select *from 基本職工信息表"Adodc1.ConnectionString = connAdodc1.RecordSource = strsql1Adodc1.RefreshSet DataGrid1.DataSource = Adodc1With Adodc1.RecordsetText1.Text = .Fields("姓名")Text2.Text = .Fields("編號(hào)")Text3.Text = .Fields("性別")Text4.Text = .Fields("籍貫")End WithEnd Sub(3) 職工部門(mén):Private Sub cmdAdd_Click() Data1.Recordset.AddNewEnd SubPrivate Sub cmdDelete_Click() 如果刪除記錄集的最后一條記錄 記錄或記錄集中唯一的記錄 Data1.Recordset.Delete Data1.Recordset.MoveNextEnd SubPrivate Sub cmdRefresh_Click() 這僅對(duì)多用戶應(yīng)用程序才是需要的 Data1.RefreshEnd SubPrivate Sub cmdUpdate_Click() Data1.UpdateRecord Data1.Recordset.Bookmark = Data1.Recordset.LastModifiedEnd SubPrivate Sub cmdClose_Click() Unload MeEnd SubPrivate Sub Data1_Error(DataErr As Integer, Response As Integer) 這就是放置錯(cuò)誤處理代碼的地方 如果想忽略錯(cuò)誤,注釋掉下一行代碼 如果想捕捉錯(cuò)誤,在這里添加錯(cuò)誤處理代碼 MsgBox "數(shù)據(jù)錯(cuò)誤事件命中錯(cuò)誤:" & Error$(DataErr) Response = 0 忽略錯(cuò)誤End SubPrivate Sub Data1_Reposition() Screen.MousePointer = vbDefault On Error Resume Next 這將顯示當(dāng)前記錄位置 為動(dòng)態(tài)集和快照 Data1.Caption = "記錄:" & (Data1.Recordset.AbsolutePosition + 1) 對(duì)于 Table 對(duì)象,當(dāng)記錄集創(chuàng)建后并使用下面的行時(shí), 必須設(shè)置 Index 屬性 Data1.Caption = "記錄:" & (Data1.Recordset.RecordCount * (Data1.Recordset.PercentPosition * 0.01) + 1End SubPrivate Sub Data1_Validate(Action As Integer, Save As Integer) Select Case Action Case vbDataActionMoveFirst Case vbDataActionMovePrevious Case vbDataActionMoveNext Case vbDataActionMoveLast Case vbDataActionAddNew Case vbDataActionUpdate Case vbDataActionDelete Case vbDataActionFind Case vbDataActionBookmark Case vbDataActionClose End Select Screen.MousePointer = vbHourglassEnd Sub(4)基本職工信息:Private Sub cmdAdd_Click() Data1.Recordset.AddNewEnd SubPrivate Sub cmdDelete_Click() 如果刪除記錄集的最后一條記錄 記錄或記錄集中唯一的記錄 Data1.Recordset.Delete Data1.Recordset.MoveNextEnd SubPrivate Sub cmdRefresh_Click() 這僅對(duì)多用戶應(yīng)用程序才是需要的 Data1.RefreshEnd SubPrivate Sub cmdUpdate_Click() Data1.UpdateRecord Data1.Recordset.Bookmark = Data1.Recordset.LastModifiedEnd SubPrivate Sub cmdClose_Click() Unload MeEnd SubPrivate Sub Data1_Error(DataErr As Integer, Response As Integer) 這就是放置錯(cuò)誤處理代碼的地方 如果想忽略錯(cuò)誤,注釋掉下一行代碼 如果想捕捉錯(cuò)誤,在這里添加錯(cuò)誤處理代碼 MsgBox "數(shù)據(jù)錯(cuò)誤事件命中錯(cuò)誤:" & Error$(DataErr) Response = 0 忽略錯(cuò)誤End SubPrivate Sub Data1_Reposition() Screen.MousePointer = vbDefault On Error Resume Next 這將顯示當(dāng)前記錄位置 為動(dòng)態(tài)集和快照 Data1.Caption = "記錄:" & (Data1.Recordset.AbsolutePosition + 1) 對(duì)于 Table 對(duì)象,當(dāng)記錄集創(chuàng)建后并使用下面的行時(shí), 必須設(shè)置 Index 屬性 Data1.Caption = "記錄:" & (Data1.Recordset.RecordCount * (Data1.Recordset.PercentPosition * 0.01) + 1End SubPrivate Sub Data1_Validate(Action As Integer, Save As Integer) 這是放置驗(yàn)證代碼的地方 當(dāng)下面的動(dòng)作發(fā)生時(shí),調(diào)用這個(gè)事件 Select Case Action Case vbDataActionMoveFirst Case vbDataActionMovePrevious Case vbDataActionMoveNext Case vbDataActionMoveLast Case vbDataActionAddNew Case vbDataActionUpdate Case vbDataActionDelete Case vbDataActionFind Case vbDataActionBookmark Case vbDataActionClose End Select Screen.MousePointer = vbHourglassEnd Sub2.實(shí)現(xiàn):(1)登陸鍵面:(2)基本菜單(3)修改密碼(4) 基本信息:(5)五:實(shí)驗(yàn)總結(jié)1. 實(shí)驗(yàn)中遇到的問(wèn)題:(1) 數(shù)據(jù)庫(kù)中存儲(chǔ)過(guò)程和觸發(fā)器的建立,因?yàn)樵谄綍r(shí)的學(xué)習(xí)中沒(méi)有太認(rèn)真的學(xué)習(xí)這一塊以至于在課程設(shè)計(jì)的過(guò)程中這塊存在者嚴(yán)重的問(wèn)題,但是在同學(xué)的幫助下及時(shí)的得到了解決(2) 數(shù)據(jù)庫(kù)與VB的連接訪問(wèn)2,心得:很多的題目看似簡(jiǎn)單,其實(shí)不然,一開(kāi)始看了只有這么幾個(gè)模塊是心里挺高興的,但是當(dāng)我真真正正地去把一個(gè)操作寫(xiě)成功時(shí),很多意想不到的情況發(fā)生了。有時(shí)候會(huì)為了一個(gè)操作不能調(diào)試成功而整個(gè)晚上都不能去安心做其他的作業(yè)。這也就要求我們要冷靜沉著、兢兢業(yè)業(yè)的去對(duì)待這件事,編程是一個(gè)很繁瑣的過(guò)程,要考慮到很多錯(cuò)誤轉(zhuǎn)移情況,在這期間會(huì)有很多以前不曾想過(guò)的問(wèn)題出現(xiàn),次數(shù)多了,不免會(huì)有覺(jué)得做不下去的感覺(jué)。但是我從中發(fā)現(xiàn),只要一步一步調(diào)試、靜下心來(lái)看待問(wèn)題,再?gòu)?fù)雜再微小的問(wèn)題都會(huì)迎刃而解,當(dāng)一個(gè)程序被調(diào)試出來(lái)時(shí),那時(shí)的快樂(lè)相比與任何困難都值得的。經(jīng)過(guò)課程設(shè)計(jì)我覺(jué)得立足程序、回歸書(shū)本才是組重要的,在著手寫(xiě)程序時(shí)覺(jué)得思路一片混亂,無(wú)意間出現(xiàn)的問(wèn)題會(huì)不知道怎么解決。這時(shí),需要回歸書(shū)本,書(shū)本是前人總結(jié)的經(jīng)驗(yàn),幾乎所有情況都會(huì)有解決方法。只有把書(shū)本“吃透”,在遇到問(wèn)題是才會(huì)反應(yīng)快。