【正文】
onnectionClose()。Data Source=。 order by 職//創(chuàng)建記錄集指針對(duì)象實(shí)例(__uuidof(Recordset))。(0,5,(char*)(_bstr_t)m_pRecordsetGetCollect(“補(bǔ)貼”))。(0,13,(char*)(_bstr_t)m_pRecordsetGetCollect(“應(yīng)扣數(shù)”))。軟件的設(shè)計(jì)者在測(cè)試整個(gè)過程中負(fù)責(zé)整體測(cè)試方案的制定和測(cè)試進(jìn)度的掌握以及白盒測(cè)試的測(cè)試者。2)用戶登錄界面友好,可操作性及安全性能較好,能對(duì)不同管理級(jí)別者進(jìn)行限制,以保證數(shù)據(jù)庫的安全。一、關(guān)系模式設(shè)計(jì)根據(jù)題意,為實(shí)現(xiàn)所要求的所有功能,此處共設(shè)計(jì)5個(gè)關(guān)系,具體介紹和表的形式如下所示:①職工(職工編號(hào),姓名,性別,年齡,部門,職稱)TnoTnameTsexTageDepartmentTitle②職位變更(職工編號(hào),前職稱,現(xiàn)職稱,變更日期)TnoTitle1Title2Dates③考勤(職工編號(hào),加班次數(shù),缺勤次數(shù),考勤日期)TnoOvertimeAbsenceDates④基本工資表(職稱,基本工資)TitleBase⑤工資表(職工編號(hào),基本工資,加班工資,缺勤扣錢,實(shí)發(fā)工資)TnoBaseOverpayDockedWages二、全局ER圖參照1職稱基本工資基本工資表參照2基本工資得到職工編號(hào)工資表職稱年齡部門加班工資缺勤扣錢實(shí)發(fā)工資加班次數(shù)缺勤次數(shù)考勤日期職工編號(hào)接收考勤考勤變更日期現(xiàn)職稱前職稱職工編號(hào)職位變更職位變更記錄性別姓名職工編號(hào)職工三、物理設(shè)計(jì)建立數(shù)據(jù)庫,學(xué)校的工資管理系統(tǒng)CREATEDATABASESchoolSalary建立職工信息表CREATETABLETeacher(TnoCHAR(20)PRIMARYKEY,/*職工號(hào)*/TnameCHAR(20)UNIQUE,/*職工名*/TsexCHAR(10)NOTNULLCHECK(Tsexin('男','女')),/*性別*/TageINTNOTNULL,/*年齡*/DepartCHAR(20),/*所屬部門*/TitleCHAR(20))建立職稱變更記錄表CREATETABLEChange(TnoCHAR(20),/*職工號(hào)*/Title1CHAR(20),/*之前的職稱*/Title2CHAR(20),/*現(xiàn)職稱*/DatesINT,/*職位變更的月份*/FOREIGNKEY(Tno)REFERENCESTeacher(Tno))建立考勤表CREATETABLEAttendance(TnoCHAR(20),/*職工號(hào)*/OvertimeINT,/*加班次數(shù)*/AbsenceINT,/*缺勤次數(shù)*/DatesINT,/*月份*/FOREIGNKEY(Tno)REFERENCESTeacher(Tno)ONDELETECASCADEONUPDATECASCADE)建立基本工資表CREATETABLERefer(/*工資參照表*/TitleCHAR(20)PRIMARYKEY,/*職位*/SalaryFLOAT,/*對(duì)應(yīng)金額*/)建立工資表CREATETABLEPay(TnoCHAR(20),/*職工號(hào)*/BaseFLOAT,/*基本工資*/OverpayFLOAT,/*加班費(fèi)*/DockedFLOAT,/*缺勤扣除工資*/WagesFLOAT,/*實(shí)際應(yīng)得工資*/FOREIGNKEY(Tno)REFERENCESTeacher(Tno))三、數(shù)據(jù)庫完整性設(shè)計(jì)各表名及其對(duì)應(yīng)主鍵職工(Teacher)職工編號(hào)(Tno)職稱變更記錄(Change)職工編號(hào)(Tno)考勤(Attendance)職工編號(hào)(Tno)基本工資表(Refer)職稱(Title)工資表(Pay)職工編號(hào)(Tno)參照完整性設(shè)計(jì)、職稱變更記錄(Change)的職工編號(hào)(Tno)設(shè)為外鍵FOREIGNKEY(Tno)REFERENCESTeacher(Tno)、考勤(Attendance)的職工編號(hào)(Tno)設(shè)為外鍵FOREIGNKEY(Tno)REFERENCESTeacher(Tno)ONDELETECASCADEONUPDATECASCADE實(shí)現(xiàn)在更新和刪除時(shí)級(jí)聯(lián)操作、工資表(Pay)的職工編號(hào)(Tno)設(shè)為外鍵FOREIGNKEY(Tno)REFERENCESTeacher(Tno)CHECK約束設(shè)計(jì)職工(Teacher)中對(duì)“性別”進(jìn)行CHECK約束:CHECK(Tsexin('男','女'))要求性別必須為“男”或“女”觸發(fā)器設(shè)計(jì)、在職工表中建立職稱變更觸發(fā)器,當(dāng)某職工的職稱發(fā)生變化時(shí),在職稱變更記錄表中自動(dòng)插入一個(gè)記錄,記錄變更前后的職稱名以及變更日期CREATETRIGGERTitle_changeONTeacherFORUPDATEASBEGINDECLARETnoCHAR(20)SELECTTno=FROMinsertedSELECT*FROMTeacherWHERETno=DECLARETitle1CHAR(20)SELECTTitle1=FROMdeletedDECLARETitle2CHAR(20)SELECTTitle2=FROMTeacherWHERETno=IFTitle1!=Title2BEGININSERTINTOChange(Tno,Title1,Title2)VALUES(Tno,Title1,Title2)ENDENDGO、在職工表中建立基本工資觸發(fā)器,當(dāng)插入一個(gè)新的職工記錄時(shí),根據(jù)其職稱并參照基本工資表,在工資表中自動(dòng)更新其基本工資,且默認(rèn)加班工資和缺勤扣錢均為0CREATETRIGGERBasic_payONTeacherFORinsertASBEGINDECLAREBaseFLOAT,tnoCHAR(20)SELECTtno=FROMinsertedSELECTBase=FROMRefer,insertedWHERE=INSERTINTOPay(Tno,Base,Overpay,Docked,Wages)VALUES(tno,Base,0,0,Base)ENDGO、在考勤表中建立考勤工資觸發(fā)器,當(dāng)給一個(gè)職工插入考勤信息后,自動(dòng)在工資表中更新其工資信息,算法里設(shè)計(jì)加班一次加200塊,缺勤一次扣100塊CREATETRIGGERA_payONAttendanceFORINSERTASBEGINDECLAREtnoCHAR(20)DECLAREaFLOATDECLAREbFLOATDECLAREcINTDECLAREdINTDECLAREeFLOATSELECTtno=FROMinsertedSELECTa=OverpayFROMPayWHERE=tnoSELECTb=DockedFROMPayWHERE=tnoSELECTc=OvertimeFROMAttendanceWHERE=tnoSELECTd=AbsenceFROMAttendanceWHERE=tnoSELECTe=WagesFROMPayWHERE=tnoUPDATEPaySET=a+200*cWHERE=tnoUPDATEPaySET=b+100*dWHERE=tnoUPDATEPaySET=e+a+200*c(b+100*d)WHERE=tnoEND、在職稱變更記錄表中建立基本工資變更觸發(fā)器,當(dāng)某職工職稱變更且記錄在職稱變更記錄表插入記錄后,在工資表中自動(dòng)更新其所有工資信息CREATETRIGGERChange_payONChangeFORUPDATE,INSERTASBEGINDECLAREACHAR(20)DECLAREBCHAR(20)DECLARECFLOATDECLAREDFLOATSELECTA=FROMinsertedSELECTB=FROMinsertedSELECTC=FROMPay,insertedWHERE=BSELECTD=FROMPay,insertedWHERE=BIFA='普通教師'UPDATEPaySET=4000,=4000+CDWHEREB=IFA='高級(jí)教師'UPDATEPaySET=5000,=5000+CDWHEREB=IFA='主任'UPDATEPaySET=6000,=6000+CDWHEREB=IFA='校長'UPDATEPaySET=7000,=7000+CDWHEREB=ENDGO五、數(shù)據(jù)庫視圖設(shè)計(jì)查看各職工應(yīng)得和實(shí)發(fā)的工資:CREATEVIEWPay_viewASSELECTTno,Base+OverpayGets,Docked,WagesFROMPay六、存儲(chǔ)過程設(shè)計(jì)CREATEPROCEDUREALL_payASSELECTSUM(Base)總基本工資,SUM(Overpay)總加班工資,SUM(Docked)總扣工資,SUM(Wages)總實(shí)發(fā)工資FROMPay七、實(shí)驗(yàn)結(jié)果(1)基本工資表各職工的基本工資按各自的職稱參照此表(2)職工表,以下為添加記錄后的結(jié)果添加后,Basic_pay觸發(fā)器觸發(fā),在工資表中自動(dòng)插入所有人的基本工資信息:(3)現(xiàn)將李楠、王峰的職稱都提一級(jí),吳鵬降一級(jí),職稱更新后,Title_change觸發(fā)器觸發(fā),首先職稱變更記錄表中插入相應(yīng)記錄,:然后工資表自動(dòng)更新,以上三人的基本工資改變:(4)在考勤表中添加記錄隨后A_pay觸發(fā)器觸發(fā),在工資表中按照加班一次加200、缺勤一次扣100自動(dòng)更新職工的工資信息:(5)視圖結(jié)果(6)存儲(chǔ)過程結(jié)果八、實(shí)驗(yàn)心得本次的數(shù)據(jù)庫大題目課程設(shè)計(jì),所運(yùn)用到的知識(shí)比較豐富,要考慮到的點(diǎn)也比較多,故此需要一定的思考。 “工資” amp。 ygList(i).ygnamg amp。 ygList(i).suidianfei amp。五、試驗(yàn)過程本系統(tǒng)的數(shù)據(jù)庫是SQL數(shù)據(jù)庫。這是連接SQL數(shù)據(jù)庫的語句 ConnStr = adUseClient Trim$(SQL, Conn, adOpenDynamic, adLockOptimistic Set Selectsql = rs 39?!?amp。想要打開的主窗體 MsgBox ”登錄成功!“, 64, ”提示“ Unload Me ElseMsgBox ”口令不對(duì),請(qǐng)重新輸入!“, 16, ”提示“ End If End Sub主控界面主控界面設(shè)計(jì)過程:所有功能都在菜單中打開來實(shí)現(xiàn),在最下面添加了工具欄,來顯示時(shí)間,操作員,狀態(tài)等信息?!? End Sub工資查詢:工資查詢?cè)O(shè)計(jì)過程:通過在姓名欄和月份欄輸入信息,可以快速查找所需查詢?nèi)说墓べY情況;并將查詢結(jié)果生成execl表,方便用戶打印及攜帶。 ”.xls“, , ”提示窗口“ End If End If End Sub Private Sub Command2_Click(Unload Me End Sub Private Sub Form_Load(End Sub Private Sub Text1_Change( = ”select ,姓名,月份,基本工資,津貼+獎(jiǎng)金+扣保險(xiǎn)+扣考勤+扣其他 as 獎(jiǎng)懲總額,基本工資+津貼+獎(jiǎng)金+扣保險(xiǎn)+扣考勤+扣其他 as 實(shí)發(fā)工資 from 員工信息表 a,工資標(biāo)準(zhǔn) b,其他工資標(biāo)準(zhǔn) c where = and = and 姓名 like 39。 “ End Sub Private Sub Text2_Change( = ”select ,姓名,月份,基本工資,津貼+獎(jiǎng)金+扣保險(xiǎn)+扣考勤+扣其他 as 獎(jiǎng)懲總額,基本工資+津貼+獎(jiǎng)金+扣保險(xiǎn)+扣考勤+扣其他 as 實(shí)發(fā)工資 from 員工信息表 a,工資標(biāo)準(zhǔn) b,其他工資標(biāo)準(zhǔn) c where = and = and 姓名 like 39?!? End Sub 數(shù)據(jù)備份及恢復(fù):數(shù)據(jù)備份及恢復(fù) 設(shè)計(jì)過程:用戶可以將數(shù)據(jù)庫進(jìn)行完全備份和差異備份,并且在操作不當(dāng)時(shí)可以進(jìn)行恢復(fù)。d:39。d:39?!?+ _ ”use encryption for data=fals