第一篇:數據庫課程設計工資管理系統.
數據庫課程設計報告 工資管理系統
組員:廖翔, 劉小芳, 強江波, 張晶晶,馮兆強,夏沖 組長 :劉小芳 需求分析員 :張晶晶
程序員 :廖翔 , 劉小芳 , 強將波 測試員 :馮兆強 界面設計員 :夏沖 目錄
一 緒論 ··········································3 二 課程設計說明····································3 三 需求分析·········································4 四 物理結結構設計···································5 五 數據字典·········································5 六 數據庫設計·······································10 七 功能實現截圖·····································11 八,小結············································21 附錄 1.(組員及學號
廖翔(,劉小芳(41009040127,馮兆強(, 張晶晶(41009040130,夏沖(,強將波(2.開發環境說明
使用 C#進行客戶端應用程序的開發,數據庫管理系統采用 SQL SERVER
一、緒論
隨著計算機技術的飛速發展和經濟體制改革的不斷深入, 傳統企業管理方法、手段以及 工作效率已不能適應新的發展需要, 無法很好地完成員工工資管理工作。提高公司企業管理 水平的主要途徑是更新管理者的思想,增強對管理活動的科學認識。基于 C#與 SQL server 數據庫技術建立一個通用工資管理系統,該系統為提供了查詢、增加記錄、刪除等 功能, 功能比較的齊全, 并對工資進行了統計如津貼管理、報表統計等。基本上能滿足管理 員和公司的要求。
此次數據庫課程設計的主要設計如下: 原理分析、程序設計過程、程序實現和程序調試以及數據庫的設計。需求分析、概要結構設計、邏輯結構設計、物理結構設計和數據庫的實施和維護。二.課程設計說明
1.設計題目:工資管理系統 2.設計任務與要求: 2.1實驗任務
1.掌握數據庫設計和實現的基本過程 2.掌握數據庫模式設計、分析和實現的方法 3.了解數據庫應用系統軟件開發的一般過程。2.2 實驗基本要求(1學習相關的預備知識
(2按照數據庫設計與實現過程完成數據庫的設計,應用程序的開發,上機調試、運 行
(3寫出課程設計報 3.目的
本說明書目的在于明確說明系統需求,界定系統實現功能的范圍, 指導系統設計以 及編碼。本文檔作為人力資源管理系統的需求說明文檔,用于與用戶確定最終的目標, 并成為協議文本的一部分,同時也是本系統設計人員的基礎文檔。
4.背景 工資管理系統
工資管理部門希望建立一個數據庫來管理員工的工資。要計算員工的工資, 就需要考慮 不在休假日期以內的假期、工作期間的病假時間、獎金和扣除的部分。必須指明給每個員工 發薪水的方式, 隨著時間的推移, 方式可能會有些改變。大多數的員工是通過銀行卡來結算 工資的, 但是也有一部分人使用現金或支票。如果是通過銀行卡, 就需要知道賬號和卡的類 型。付款方式只可能是一種方式。有幾種原因可以扣除工資:例如,個人所得稅、國家稅、醫療保險、退休保險或者預付款。
5.主要包括三大功能模塊: 1.登錄界面選擇 [員工登錄 ]即可進入 [員工登陸界面 ], 選擇 [管理員登陸 ]即可進入 [管理員 登錄界面 ]。
2.管理員功能模塊。3.員工功能模塊.6.操作說明
6.1 無論是管理員還是員工,操作都以員工編號來進行。
6.2 管理員可以對員工基本信息增、刪、查、改, 員工只能對本人基本信息和工資信息查詢。三.需求分析
1.功能需求分析: 該通用工資管理系統具備下列功能:登錄界面選擇 [員工登錄 ]即可進入 [員工登陸界面 ], 選 擇 [管理員登陸 ]即可進入 [管理員登錄界面 ].管理員通過輸入用戶名和密碼進下該系統后, 可以進行一些基本查詢(員工個人信息查 詢 , 員工工資信息查詢 , 修改(修改員工基本信息 , 修改工資信息 , 刪除(員工個人資料刪除 , 員工工資信息刪除 , 錄入(員工資料錄入 , 員工工資資料錄入;;通過輸入密碼,可以進行 查詢員工的數據(工資,獎金津貼,加班情況。
員工通過輸入用戶名和密碼即可進入系統 , 可以進行查詢(查詢個人基本信息和工資信 息.2.數據流需求分析:
數據庫 數據庫需求分析——數據流圖 四.物理結構設計 1.系統模塊劃分
五.數據字典 2.1表字典
2.2表字段字典
六.數據庫設計 1.建表 : EmpInfoTable(Id[主鍵 ],Name,Position,Status;SalaryInfoTable(Id主鍵 ],Name,Prize,Pasepay,RetirementInsurance,Income,Stute,Medical, Dayleave,Deduced,Paytpe,CardNumber,Cardtype,GrossSalary,NetSalary,Date;(1 員工基本信息表 :(2員工工資表 :
七.功能實現截圖 1.登錄界面
2.管理員部分 :(1管理員登陸界面
(2管理員功能選擇界面
(3.錄入員工基本信息界面(4錄入員工工資信息
(5.修改功能選擇界面
A.修改員工基本信息
B.修改工資信息
(6.管理員查詢界面 A.查詢功能選擇界面
B.查詢員工基本信息
C.查詢工資信息
(7.管理員查詢界面 A.功能選擇界面
B.管理員修改員工個人信息
C.管理員修改員工工資界面界面
(8.管理員刪除界面 A.功能選擇界面
B.刪除員工個人信息及工資信息界面
C.刪除員工工資信息界面
3.員工功能界面(1.員工登錄界面
(2.員工功能選擇界面
(3.員工查詢本人基本信息(4.員工查詢本人工資信息 4.測試分析 4.1 更改員工資料不可以更改身份。4.2 修改員工工資信息一旦失敗 就會把原有信息刪除。4.3 管理員固定,且只有一個。八.小結 該工資管理系統總體說來功能比較齊全,管理
員和員工的一些基本的功能 都已經具備; 數據庫的設計方面,建有員工表、工資表。數據庫中存在一些問題,如數據冗余,不夠完善。但在做課程設計的過程中也遇到很多問題,一開始時其中最大的問題是數 據庫的連接部分,該部分直接影響到數據庫與應用程序接口實現,而且必須注意 數據庫數據庫的名稱與連接數據庫的取名以致.后來經過大家的合作努力解決了 這個問題.在編寫程序時,確實也遇到了很多困難,后來經過調試后終于把自已想 到實現的功能一步步實現了,通過這次課程設計使我收獲了好多,熟悉了 C#的 運用,還復習了數據庫相關語句的編寫。此次課程設計讓我感受頗多:做一個數據庫其實是一件很有趣的事情。想到
自己可以創建一個小型的數據庫系統,有點學習后的滿足感。數據庫的建立并非 難事,難點在于數據庫的連接和編程語言的選擇。C#的功能很強大,這也是我以 后需要學習的課程,于是我毅然選擇了它。再就是建立數據庫系統的步驟,我的 經驗就是要先總體規劃,再局部整理。先做好總的界面,再通過該界面的布置一 步一步實現其功能!同時我體會到: 熟練的編程能力,對知識運用的強烈渴望及其創新和團隊的合作 精神設做好一個大型數據庫的基礎。因此通過此次課程設計我明顯感覺到自身的 不足,并希望以后能更加用心地運用所學知識和學習新的知識。
第二篇:工資管理系統--軟件工程課程設計2
目 錄
目錄...............................................................................................................第一章 緒
論.................................................................................................1.1 開發背景說明....................................................................................1.2課程設計目的.....................................................................................1.3課程題目及內容.................................................................................1.4課程設計要求.....................................................................................1.5預期目標.............................................................................................1.6 系統環境............................................................................................第二章 可行性分析.........................................................................................2.1 可行性研究前提................................................................................2.2 經濟上可行性....................................................................................2.3 技術可行性........................................................................................2.4目標方案可行性.................................................................................2.5操作可行性.........................................................................................第三章 需求分析.............................................................................................3.1引言.....................................................................................................3.2任務陳述.............................................................................................3.3市場需求分析.....................................................................................3.4系統功能需求分析.............................................................................3.5系統性能需求分析.............................................................................3.6 系統業務數據流...................................................錯誤!未定義書簽。3.7用例分析...........................................................................................3.8用例列表...........................................................................................3.9繪制系統模型圖...............................................................................第四章 系統概要設計...................................................................................4.1模塊分析和概要設計.......................................................................4.2 系統數據庫邏輯結構設計..............................................................4.3概念模型轉換為關系數據模型.......................................................4.4 數據庫設計......................................................................................第五章 詳細設計...........................................................................................5.1登錄管理...........................................................................................-***39424243443
入帳目時的錯誤,可以根據職工的考勤、職務、部門、各種稅費等等,自動求出工資。為了便于企業領導掌握本企業的工資信息在系統中應加入各種查詢功能,包括個人信息、職工工資、本企業內某一個月或某一部門的工資情況查詢。系統應能輸出各類統計報表。
本系統需要完成的功能主要有:系統數據初始化;職工基本信息數據的輸入、修改、刪除;企業工資的基本設定;職工工資的瀏覽;職工個人工資表的查詢;職工工資的計算;工資報表打印。
數據流:
職工基本狀況:包括職工編號、職工姓名、性別、年齡、職位等。工資級別和工資金額:包括工資等級、工資額。
企業部門及工作崗位信息:包括部門名稱、工作崗位名稱、工作崗位工資等。工資信息:包括職工編號、職工姓名、職工基本工資、職工崗位工資、職工工齡工資、公司津貼、職工實發工資等。工齡和工資金額:包括工齡及對應工資額。
1.4課程設計要求
堅持“規格嚴格,功夫到家”的優良傳統,加強基本功訓練,做到理論與實際相結合,繼承與創新相結合,充分發揮學生的主觀能動性與教師因材施教、嚴格要求相結合,抓智力因素教育與非智力因素教育相結合,教書育人。所設計的工資管理系統應包含輸入輸出、修改、刪除、查詢等基本功能。根據題目的基本需求,畫出流程圖、用例圖、類圖等,編寫程序,并寫出詳細的設計說明書。課程設計過程中,要嚴格遵守課程設計的時間安排,聽從指導教師的指導。正確地完成上述內容,規范完整地撰寫出課程設計報告。
1.5預期目標
計劃設計:對于企、事業單位的工資發放來說,不需要太大型的數據庫系統,只需要一個操作方便,功能實用,能滿足財務部門對工資及時的發放。本工資管理系統預期目標就是實現如下的一些功能:查詢瀏覽記錄功能,增加記錄功能、修改記錄功能、刪除記錄功能、刷新記錄功能、最后實現統計計算功能。
1.6 系統環境
1.6.1硬件:個人PC 1.6.2軟件:
Windows XP、Microsoft Visual C++6.0、Rational Rose。
第二章 可行性分析
2.1 可行性研究前提
要求:滿足對工資管理的基本要求及功能,并對職工信息收集、處理、保存。目標:實現無紙化辦公,節省成本,提高工作效率。
條件、假定、限制:當企業工資管理的信息量和復雜程度達到某一限度時,即管理人員的勞動強度超過其承受能力時,就必須采用新的管理手段,如用計算機技術對信息的收集、加工、傳遞和存貯等,這樣,一個工資管理系統就可以對企業職工工資進行高效、合理、恰當地管理。
2.2 經濟上可行性
開發成本要低廉。
效益:大幅度地提高工資管理信息系統的工作質量和效率,讓企業掌握整個工資管理系統的全面情況,為管理人員提供了準確的工資管理信息,促進工資管理工作的規范化及各項管理制度與指標體系的建立和健全;提供各種加工處理了的工資管理信息,以滿足工資管理的特殊要求,適應新形勢對職工隊伍提出的新要求。
效益/投資比:暫時無法估算。投資回收期內:
(1)企業有能力承擔系統開發費用。
(2)新系統將為企業帶來經濟效益。管理系統是一個信息化、智能化和先進。理理念的集合體。而管理是一個動態過程,在其運行過程中要采取多項措施。其最主要的表現就是減少了企業管理費用和人力開支。
2.3 技術可行性
(1)軟件需求:操作系統WINDOWS 2000 Advance Server以上。
硬件需求:賽揚1.7G CPU、512M內存 80G硬盤的計算機。(2)本系統采用VC++實現,依靠其強大的面向對象系統,與數據庫管理系統相結合。
(3)要求掌握計算機技術,熟悉系統的功能和使用方法使系統能夠順利運行。
2.4目標方案可行性
計算機設備處理繁雜的工資增減問題,大幅度減少人力、物力,極大地提高企業的管理水平和管理效率。
管理水平和管理效率的提高能直接產生經濟效益。
格,如完成任務表、考勤表、考核表、職工當月的扣款情況(包括水電費、病事假扣款等)等計算職工變動工資、個人所得稅和應發放工資等,編制工資單。按類進行匯總,編制工資匯總表。將實發工資轉入代發銀行,由銀行代發工資,并進行賬務處理。工資結算過程主要設計如下會計賬戶:現金、銀行存款、應付工資、其他應付款、其他應收款等。
3.3市場需求分析
工資管理系統是一個企業單位不可或缺的部分,他能為用戶提供充足的信息和快捷的查詢手段。一個工資管理系統可以高效能、大容量的收集、處理、存儲工資管理信息,大幅度的工資管理信息系統的工作質量和效率。
能夠為企業管理人員及時掌握整個工資管理系統的全面情況,提供系統的準確的工資管理信息,可以促進工資管理工作的規范化及各項管理制度與指標體系的建立和健全。為企業提供各種加工管理了工資管理信息,以滿足工資管理的特殊要求,適應新形勢對職工隊伍建設提出的新要求,幫助管理人員選擇方案,實現優化決策。雖然當前,不少單位的工資管理部門對于計算機應用還僅限于簡單的單機應用,隨著時間的推移、任務的復雜、用戶的需求,其應用還會擴大。
3.4系統功能需求分析
工資管理系統涉及到員工基本信息的錄入、修改和刪除,工資標準的設定、查詢和結算等。
典型的工資管理系統主要有以下基本功能: a)系統數據初始化
b)員工基本信息的錄入、修改、刪除等功能
c)工資標準的設定功能,集體包括職務工資、職稱工資、其他工資標準和福利的設定。
d)工資信息的瀏覽
e)員工工資信息表的創建及查詢 f)工資調整管理 g)工資計算 h)工資報表打印
3.5系統性能需求分析
3.5.1 需求分析總體目標
需求分析的目的在于與開發人員與用戶之間達成系統開發的共識,使開發人員所考慮的系統在功能(系統能做什么)、簡單操作,良好界面,個人信息保密性,系統安全與穩定,良好帳戶管理,友好信息返回模式(如報表及打印功能)。
時,防止數據被不法分析任意的修改和破壞,對所有的敏感數據均進行基于SSL協議 的加密操作,只有對信息解密的人員才能最終讀取數據信息。這樣,能 最大程度的防止數據在傳輸過程的安全保密性。
3.6 系統業務數據流
3.6.1 數據流分析
數據流程圖是一種能全面描述信息系統邏輯模型的主要工具,也是系統分析人員與用戶進行交流的有效手段。本系統的數據流程圖把握住對系統總體目標與總體功能的要求,基于上述的業務流程圖,從科學性,合理性和可行性入手,采用自頂向下,逐層分解的方法建立本管理信息系統的邏輯模型,綜合地反映出信息在本系統中的流動,處理和存儲,具有抽象性和概括性.通過進行用戶調查收集用戶需求后,就要對用戶需求進行分析,并表達用戶的需求。采用結構化分析方法,主要采用數據流圖對用戶需求進行分析,用數字字典和加工說明對數據流圖進行補充和說明。數據流圖用于描述系統中數據流動的過程,反映的是加工處理的對象。
3.6.2 流程圖,模塊圖如下:
流程圖
模塊圖
112
3.9.2活動圖:
分析用例中的邏輯流程,描述用例的事件流,進而畫出各用例對應的活動圖 用戶登錄活動圖:
管理員工信息活動圖:
3.9.3 類圖:
類圖是面向對象的軟件開發中的一個核心概念。Rose中的類圖用于描述軟件系統中涉及到的類的相關信息,以及類與類之間的相互關系。
〔1〕類的識別
類的識別通常由分析員在分析問題域的基礎上來完成。常用的方法有: ? a.名詞識別法。? b.系統識別法。? c.從用例中識別類。? d.利用分解與抽象技術。〔2〕系統類圖
3.9.4狀態圖:
狀態圖(State Diagram)用來描述一個特定對象的所有可能狀態及其引起狀態轉移的事件。
3.9.5 時序圖:
時序圖用來描述對象之間動態的交互關系,著重體現對象間消息傳送消息的時間順序。下面分別給出各個用例的時序圖:
用戶登錄時序圖:
職工時序圖:
71819
設計一般分為三個步驟:
〔1〕概念模型轉換為關系數據模型。〔2〕關系模型的優化。〔3〕設計用戶子模式書號。
4.3概念模型轉換為關系數據模型
一般轉換原則如下:
〔1〕一個實體轉換為一個表(Table),則實體的屬性轉換為表的列(Column),實體的碼轉換為表的主鍵(Primary Key)。
〔2〕實體間的聯系根據聯系的類型,轉換如下: ① 1:n 的聯系:
1:n 的聯系是比較普遍的聯系,其轉換比較直觀。轉換規律是在n 端的實體對應的表中增加屬性,該屬性是1 端實體對應表的主碼。如:崗位和員工的關系是1:n 的聯系。
② m:n 的聯系:
通過引進一個新表來表達兩個實體間多對多的聯系,新表的主碼由聯系兩端實體的主碼組合而成,同時增加相關的聯系屬性。如:部門與員工的聯系是n:m 聯系。
4.4 數據庫設計
數據庫的物理結構設計是指為邏輯數據模型選取一個最適合應用環境的物理結構(包括存儲結構和存取方法),它完全取決于給定的計算機系統。物理結構可分兩步進行。第一步是分析所得到的各種數據模型,依據在實際執行時可能產生的數據容量以及各種數據模型之間的相互依賴程度等,確定數據庫的物理結構;第二步則要根據某種方法對所設計的物理結構進行評價,評價重點是時間和空間的效率。數據庫實施是指建立數據庫,編制與調試應用程序,組織數據入庫,并進行試運行。
根據人員規模,我們只建立起一個數據庫,在此數據庫基礎上建立起如下表:
·職工表
·用戶表
·工資表
下面說明各表的字段名稱和數據類型:
工資表:
職工表:
用戶表:
第五章 詳細設計
詳細設計階段主要是將系統中的每個模塊完成的功能進行具體描述。
5.1登錄管理
根據系統總體結構可以得出登錄管理模塊實現用戶登錄、密碼修改和退出系統三個功能。其中,退出系統實現流程很容易,只需要一行代碼即可;用戶登錄的實現流程是用戶在登錄窗口輸入用戶名稱和密碼,如果沒有用戶名和密碼可以進行注冊后再登錄,選擇了用戶角色后,單擊【登錄】按鈕進行提交,系統開始驗證用戶提交的登錄信息是否正確。如果正確,則打開工資管理系統,并根據用戶角色賦于相應的操作權限;否則給出錯誤信息。
5.1.1界面設計 登錄界面如下:
5.1.2 代碼
部分核心代碼設計: void CZHUCE::OnButton1(){
UpdateData(TRUE);if(m_username.IsEmpty()||m_password.IsEmpty()||m_password2.IsEmpty()){AfxMessageBox(“請將資料填寫完整!”);m_password2.Empty();
m_password.Empty();
UpdateData(FALSE);
return;} OnInitADOConn();if(m_password2==m_password){
CString str;
str.Format(“insert into 用戶表(用戶名,密碼)('%s','%s')”,m_username,m_password);
_variant_t var;
int fieldrow;
try{//捕捉表的主鍵存在重復值的異常
m_pConnection->Execute((_bstr_t)str,&var,adCmdText);
fieldrow=(int)V_I2(&var);
}
catch(...)
{
AfxMessageBox(“用戶名已存在,注冊失敗”);
m_username.Empty();
m_password.Empty();
m_password2.Empty();
UpdateData(FALSE);
return;}
AfxMessageBox(“注冊成功,請返回登錄!”);
m_pConnection->Close();
Clogin clg;
clg.DoModal();} else{AfxMessageBox(“兩次密碼輸入不一樣,注冊失敗!”);
m_username.Empty();
m_password.Empty();m_password2.Empty();
}} UpdateData(FALSE);return;void CZHUCE::OnInitADOConn()try {//創建連接對象實例
} catch(_com_error e){ AfxMessageBox(e.Description());m_pConnection.CreateInstance(“ADODB.Connection”);//設置連接字符串 Cstring
strConnect=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=salary.mdb;Persist Security Info=False;”;//使用Open方法連接數據庫
m_pConnection->Open((_bstr_t)strConnect,“",”“,adModeUnknown);
}
try{if(m_pConnection==NULL){OnInitADOConn();} m_pRecordset.CreateInstance(__uuidof(Recordset));m_pRecordset->Open(sqlstr,m_pConnection.GetInterfacePtr(),adOpenDyna
} catch(_com_error e){ e.Description();} return m_pRecordset;
mic,adLockOptimistic,adCmdText);
5.1.3修改密碼模塊:
成功登錄主界面:
5.2用戶管理
用戶管理模塊用于實現用戶的添加、刪除、更新功能。5.2.1新增用戶模塊:
627UpdateData(TRUE);if(m_Bianhao.IsEmpty()||m_Name.IsEmpty()){AfxMessageBox(”not null“);return;} OnInitADOConn();CString str;str.Format(”update 職工表 set 性別='%s',年齡=%d,電話='%s',住址='%s',位='%s',備
注
='%s'
where
職
工
編
號='%s'“,m_Sex,m_Age,m_Telphone,m_Address,m_Zhiwei,m_Beizhu,m_Bianhao);m_pConnection->Execute((_bstr_t)str,NULL,adCmdText);m_pConnection->Close();m_zhglist.DeleteAllItems();AddToGrid();ClearAll();UpdateData(FALSE);
{// TODO: Add your control notification handler code here
} void CGXZHG::OnButton4(){
UpdateData(TRUE);if(m_tiaojian.IsEmpty()){AfxMessageBox(”請選擇刪除的職工!“);return;} OnInitADOConn();CString bstrSQL;bstrSQL.Format(”delete from 職工表 where 職工編號CMAKESURE cmake;if(cmake.DoModal()!=IDOK){ }
m_pConnection->Execute((_bstr_t)bstrSQL,NULL,adCmdText);m_pConnection->Close();m_zhglist.DeleteAllItems();AddToGrid();ClearAll();AfxMessageBox(“刪除成功!”);UpdateData(FALSE);return;='%s'“,m_tiaojian);UpdateData(TRUE);m_type.GetWindowText(m_Type);if(m_Type.IsEmpty()){AfxMessageBox(”請選擇查詢的方式!“);return;} if(m_tiaojian.IsEmpty()){AfxMessageBox(”請輸入查詢的職工編號!“);return;} OnInitADOConn();CString sql;
部分核心代碼如下: void CTXGZ::OnButton2()
{// TODO: Add your control notification handler code here
息!”);
if(m_Bianhao.IsEmpty()||m_Jibengz==NULL||m_Yuefen.IsEmpty()){AfxMessageBox(“編號不允許空值,請重新填寫!”);ClearALL();return;} OnInitADOConn();float CString cstr1;cstr1.Format(“%.2f”,f1);m_yfsh.SetWindowText(cstr1);float f2=m_Fangzu+m_Chuxu+m_Huifei;CString cstr2;cstr2.Format(“%.2f”,f2);m_yksh.SetWindowText(cstr2);float f4;f4=calculator(f1-f2);float f3=f1-f2-f4;CString cstr3;cstr3.Format(“%.2f”,f3);m_shfsh.SetWindowText(cstr3);CString cstr4;cstr4.Format(“%.2f”,f4);m_grsdsh.SetWindowText(cstr4);CString str;str.Format(“insert
into
工
資
表
values UpdateData(TRUE);m_yuefen.SetCurSel(0);// AfxMessageBox(”該編號的職工不存在,請先到職工管理添加職工信f1=m_Jibengz+m_Jintie+m_Gangtie+m_Butie+m_Fangtie+m_Jiaotongbt;('%s','%s',%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f)“,m_
} void CTXGZ::ClearALL(){
} void CTXGZ::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult){// TODO: Add your control notification handler code here
m_pConnection->Close();m_gzlist.DeleteAllItems();AddToGrid();m_yuefen.SetCurSel(0);ClearALL();m_Jibengz=NULL;m_Jintie=NULL;
m_Shfsh.Empty();m_Yfsh.Empty();m_Yksh.Empty();m_Yuefen.Empty();m_Chaxun.Empty();m_Jiaotongbt=NULL;m_Huifei=NULL;m_Grsdsh.Empty();m_Fangzu=NULL;m_Fangtie=NULL;m_Chuxu=NULL;m_Bianhao=”“;m_Gangtie=NULL;UpdateData(FALSE);int position=m_gzlist.GetSelectionMark();m_Bianhao=m_gzlist.GetItemText(position,0);m_Chaxun=m_gzlist.GetItemText(position,0);m_Yuefen=m_gzlist.GetItemText(position,1);m_Jibengz=atof(m_gzlist.GetItemText(position,2));m_Jintie=atof(m_gzlist.GetItemText(position,3));m_Gangtie=atof(m_gzlist.GetItemText(position,4));
3return;} void CTXGZ::OnButton5(){
} float CTXGZ::calculator(float a){float b=a-2000;
} if(b<0){b=0;} if(0=500&&b<2000){return b=b*10/100-25;} if(b>=2000&&b<5000){return b=b*15/100-125;} if(b>=5000&&b<20000){return b=b*20/100-375;} if(b>=20000&&b<40000){return b=b*25/100-1375;} if(b>=40000&&b<60000){return b=b*30/100-3375;} if(b>=60000&&b<80000){return b=b*35/100-6375;} if(b>=80000&&b<100000){return b=b*40/100-10375;} if(b>=100000){ return b=b*45/100-15375;} UpdateData(TRUE);if(m_Chaxun.IsEmpty()){AfxMessageBox(”請輸入查詢的職工編號!“);return;} OnInitADOConn();CString sql;sql.Format(”select * from 工資表 where 職工編號='%s'“,m_Chaxun);m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);m_pConnection->Close();m_gzlist.DeleteAllItems();ClearALL();m_Chaxun=m_Chaxun;m_yuefen.SetCurSel(0);UpdateData(FALSE);5.5查詢管理
該模塊實現功能是職工查詢工資的詳細信息,查詢個人詳細信息的功能。
5.5.1職工信息查詢:
5.5.2工資信息查詢:
部分核心代碼如下: void CGXGZ::OnButton1(){ UpdateData(TRUE);
if(m_Chaxun.IsEmpty()){AfxMessageBox(”請輸入查詢的職工編號!“);return;} OnInitADOConn();CString sql;sql.Format(”select * from 工資表 where 職工編號='%s'“,m_Chaxun);m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);m_pConnection->Close();m_gzlist.DeleteAllItems();UpdateGrid();m_Chaxun.Empty();
6UpdateData(FALSE);{//創建連接對象實例
} catch(_com_error e){ AfxMessageBox(e.Description());m_pConnection.CreateInstance(”ADODB.Connection“);//設置連接字符串 CString
strConnect=”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=salary.mdb;Persist Security Info=False;“;//使用Open方法連接數據庫
m_pConnection->Open((_bstr_t)strConnect,”“,”“,adModeUnknown);
} OnInitADOConn();//設置查詢字符串 CString bstrSQL;bstrSQL.Format(”select * from 工資表 where 職工編號='%s' order by 職//創建記錄集指針對象實例
m_pRecordset.CreateInstance(__uuidof(Recordset));//打開記錄集
m_pRecordset->Open((_bstr_t)bstrSQL,m_pConnection.GetInterfacePtr(),ad adLockOptimistic,adCmdText);工編號 desc “,m_Chaxun);OpenDynamic, while(!m_pRecordset->adoEOF){ m_gzlist.InsertItem(0,”“);m_gzlist.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect(”職工編號
m_gzlist.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect(“月份”));m_gzlist.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect(“基本工資”));m_gzlist.SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect(“津貼”));m_gzlist.SetItemText(0,4,(char*)(_bstr_t)m_pRecordset->GetCollect(“崗貼”));m_gzlist.SetItemText(0,5,(char*)(_bstr_t)m_pRecordset->GetCollect(“補貼”));m_gzlist.SetItemText(0,6,(char*)(_bstr_t)m_pRecordset->GetCollect(“房貼”));m_gzlist.SetItemText(0,7,(char*)(_bstr_t)m_pRecordset->GetCollect(“交通補貼”));m_gzlist.SetItemText(0,8,(char*)(_bstr_t)m_pRecordset->GetCollect(“應發數”));m_gzlist.SetItemText(0,9,(char*)(_bstr_t)m_pRecordset->GetCollect(“房租”));m_gzlist.SetItemText(0,10,(char*)(_bstr_t)m_pRecordset->GetCollect(“儲蓄”));m_gzlist.SetItemText(0,11,(char*)(_bstr_t)m_pRecordset->GetCollect(“會費”));m_gzlist.SetItemText(0,12,(char*)(_bstr_t)m_pRecordset->GetCollect(“個人所得稅”));m_gzlist.SetItemText(0,13,(char*)(_bstr_t)m_pRecordset->GetCollect(“應扣數”));m_gzlist.SetItemText(0,14,(char*)(_bstr_t)m_pRecordset->GetCollect(“實發數”));
} void CGXGZ::ExitConnect(){if(m_pRecordset!=NULL)
} m_pRecordset->Close();m_pConnection->Close();//將記錄集指針移動到下一條記錄
} //AfxMessageBox(“123”);//斷開數據庫連接 ExitConnect();m_pRecordset->MoveNext();
第六章 系統測試
6.1 測試方法
(1)測試人員:
測試隊伍由兩位成員組成。軟件的設計者在測試整個過程中負責整體測試方案的制定和測試進度的掌握以及白盒測試的測試者。第二位成員由未參加軟件制作者擔任,主要責任是進行軟件的黑盒測試以及軟件環境,硬件要求和極限測試工作。
(2)機器測試:
通過在計算機上直接運行被測程序,來發現程序中的錯誤。機器測試包括黑盒測試盒白盒測試。黑盒測試也稱功能測試,將軟件看作黑盒子,在完全不考慮程序的內部結構和特性的情況下,研究軟件的外部特性。根據軟件的需求規格說明書測試用例,從程序的輸入和輸出特性上測試是否滿足設定的功能。白盒測試也稱結構測試,將軟件看作一個透明的白盒子,按照程序的內部結構和處理邏輯來選定測試用例,對軟件的邏輯路徑及過程進行測試,檢查與測試是否相符。
6.2測試內容
1)軟件的正常運行、關閉及退出時保存記錄的提示。
2)用戶登錄界面友好,可操作性及安全性能較好,能對不同管理級別者進行限制,以保證數據庫的安全。
3)數據庫的可維護性好,數據的錄入、刪除及更改均能順利完成,并能實現動態更新。
4)數據查詢便捷,能對各種不同的查詢條件搜索,以找到最合適的答案。5)數據溢出、越界均能進行非法提示,以警告用戶正確使用。對用戶的正常操作方式也提出警告。
6)數據類型填寫錯誤時,系統能夠報錯。
7)軟件對操作系統的兼容性良好,可移植性完好。
6.3測試結果
本系統有提示消息!
錄入相同編號的數據:
該系統有報錯功能!
查詢職工工資信息:
查詢職工信息成功!
1424344-
牟永敏
清華大學出版社
第三篇:數據庫課程設計題目第9題學校的工資管理系統
數據庫課程設計報告
題目:第9題
學校的工資管理系統
l
實現部門、職務、職稱等基本信息的管理;
l
實現教職工信息的管理;
l
實現工資項目的管理,工資項目設有啟用標志和加扣標志;
l
實現教職工工資項目及其工資的管理;
l
創建觸發器當往教職工工資項目表中插入記錄或刪除記錄時,自動修改該職工的應發工資數和實發工資數;
l
創建存儲過程統計某個月各種工資項目的發放總和;
l
創建視圖查詢各個員工的應發、應扣和實發工資;
l
建立數據庫相關表之間的參照完整性約束。
一、關系模式設計
根據題意,為實現所要求的所有功能,此處共設計5個關系,具體介紹和表的形式如下所示:
①職工(職工編號,姓名,性別,年齡,部門,職稱)
Tno
Tname
Tsex
Tage
Department
Title
②職位變更(職工編號,前職稱,現職稱,變更日期)
Tno
Title1
Title2
Dates
③考勤(職工編號,加班次數,缺勤次數,考勤日期)
Tno
Overtime
Absence
Dates
④基本工資表(職稱,基本工資)
Title
Base
⑤工資表(職工編號,基本工資,加班工資,缺勤扣錢,實發工資)
Tno
Base
Overpay
Docked
Wages
二、全局E-R圖參照1
職稱
基本工資
基本工資表
參照2
基本工資
得到
職工編號
工資表
職稱
年齡
部門
加班工資
缺勤扣錢
實發工資
加班次數
缺勤次數
考勤日期
職工編號
接收考勤
考勤
變更日期
現職稱
前職稱
職工編號
職位變更
職位變更記錄
性別
姓名
職工編號
職工
三、物理設計
1、建立數據庫,學校的工資管理系統
CREATE
DATABASE
SchoolSalary2、建立職工信息表
CREATE
TABLE
Teacher
(Tno
CHAR(20)
PRIMARY
KEY,/*職工號*/
Tname
CHAR(20)
UNIQUE,/*職工名*/
Tsex
CHAR(10)
NOT
NULL
CHECK(Tsex
in('男','女')),/*性別*/
Tage
INT
NOT
NULL,/*年齡*/
Depart
CHAR(20),/*所屬部門*/
Title
CHAR(20))
3、建立職稱變更記錄表
CREATE
TABLE
Change
(Tno
CHAR(20),/*職工號*/
Title1
CHAR(20),/*之前的職稱*/
Title2
CHAR(20),/*現職稱*/
Dates
INT,/*職位變更的月份*/
FOREIGN
KEY
(Tno)
REFERENCES
Teacher(Tno))
4、建立考勤表
CREATE
TABLE
Attendance
(Tno
CHAR(20),/*職工號*/
Overtime
INT,/*加班次數*/
Absence
INT,/*缺勤次數*/
Dates
INT,/*月份*/
FOREIGN
KEY
(Tno)
REFERENCES
Teacher(Tno)
ON
DELETE
CASCADE
ON
UPDATE
CASCADE)
5、建立基本工資表
CREATE
TABLE
Refer
(/*工資參照表*/
Title
CHAR(20)
PRIMARY
KEY,/*職位*/
Salary
FLOAT,/*對應金額*/)
6、建立工資表
CREATE
TABLE
Pay
(Tno
CHAR(20),/*職工號*/
Base
FLOAT,/*基本工資*/
Overpay
FLOAT,/*加班費*/
Docked
FLOAT,/*缺勤扣除工資*/
Wages
FLOAT,/*實際應得工資*/
FOREIGN
KEY(Tno)
REFERENCES
Teacher(Tno))
三、數據庫完整性設計
1、各表名及其對應主鍵
職工(Teacher)
職工編號(Tno)
職稱變更記錄(Change)
職工編號(Tno)
考勤(Attendance)
職工編號(Tno)
基本工資表(Refer)
職稱(Title)
工資表(Pay)
職工編號(Tno)
2、參照完整性設計
2.1、職稱變更記錄(Change)的職工編號(Tno)設為外鍵
FOREIGN
KEY
(Tno)
REFERENCES
Teacher(Tno)
2.2、考勤(Attendance)的職工編號(Tno)設為外鍵
FOREIGN
KEY
(Tno)
REFERENCES
Teacher(Tno)
ON
DELETE
CASCADE
ON
UPDATE
CASCADE
實現在更新和刪除時級聯操作
2.3、工資表(Pay)的職工編號(Tno)設為外鍵
FOREIGN
KEY
(Tno)
REFERENCES
Teacher(Tno)
3、CHECK約束設計
職工(Teacher)中對“性別”進行CHECK約束:
CHECK(Tsex
in('男','女'))
要求性別必須為“男”或“女”
4、觸發器設計
4.1、在職工表中建立職稱變更觸發器,當某職工的職稱發生變化時,在職稱變更記錄表中自動插入一個記錄,記錄變更前后的職稱名以及變更日期
CREATE
TRIGGER
Title_change
ON
Teacher
FOR
UPDATE
AS
BEGIN
DECLARE
@Tno
CHAR(20)
SELECT
@Tno=inserted.Tno
FROM
inserted
SELECT
*
FROM
Teacher
WHERE
@Tno=Teacher.Tno
DECLARE
@Title1
CHAR(20)
SELECT
@Title1=deleted.Title
FROM
deleted
DECLARE
@Title2
CHAR(20)
SELECT
@Title2=Teacher.Title
FROM
Teacher
WHERE
@Tno=Teacher.Tno
IF
@Title1!=@Title2
BEGIN
INSERT
INTO
Change(Tno,Title1,Title2)
VALUES(@Tno,@Title1,@Title2)
END
END
GO
4.2、在職工表中建立基本工資觸發器,當插入一個新的職工記錄時,根據其職稱并參照基本工資表,在工資表中自動更新其基本工資,且默認加班工資和缺勤扣錢均為0
CREATE
TRIGGER
Basic_pay
ON
Teacher
FOR
insert
AS
BEGIN
DECLARE
@Base
FLOAT,@tno
CHAR(20)
SELECT
@tno=inserted.Tno
FROM
inserted
SELECT
@Base=Refer.Salary
FROM
Refer,inserted
WHERE
Refer.Title=inserted.Title
INSERT
INTO
Pay(Tno,Base,Overpay,Docked,Wages)
VALUES(@tno,@Base,0,0,@Base)
END
GO
4.3、在考勤表中建立考勤工資觸發器,當給一個職工插入考勤信息后,自動在工資表中更新其工資信息,算法里設計加班一次加200塊,缺勤一次扣100塊
CREATE
TRIGGER
A_pay
ON
Attendance
FOR
INSERT
AS
BEGIN
DECLARE
@tno
CHAR(20)
DECLARE
@a
FLOAT
DECLARE
@b
FLOAT
DECLARE
@c
INT
DECLARE
@d
INT
DECLARE
@e
FLOAT
SELECT
@tno=inserted.Tno
FROM
inserted
SELECT
@a=Overpay
FROM
Pay
WHERE
Pay.Tno=@tno
SELECT
@b=Docked
FROM
Pay
WHERE
Pay.Tno=@tno
SELECT
@c=Overtime
FROM
Attendance
WHERE
Attendance.Tno=@tno
SELECT
@d=Absence
FROM
Attendance
WHERE
Attendance.Tno=@tno
SELECT
@e=Wages
FROM
Pay
WHERE
Pay.Tno=@tno
UPDATE
Pay
SET
Pay.Overpay=@a+200*@c
WHERE
Pay.Tno=@tno
UPDATE
Pay
SET
Pay.Docked=@b+100*@d
WHERE
Pay.Tno=@tno
UPDATE
Pay
SET
Pay.Wages=@e+@a+200*@c-(@b+100*@d)
WHERE
Pay.Tno=@tno
END
4.4、在職稱變更記錄表中建立基本工資變更觸發器,當某職工職稱變更且記錄在職稱變更記錄表插入記錄后,在工資表中自動更新其所有工資信息
CREATE
TRIGGER
Change_pay
ON
Change
FOR
UPDATE,INSERT
AS
BEGIN
DECLARE
@A
CHAR(20)
DECLARE
@B
CHAR(20)
DECLARE
@C
FLOAT
DECLARE
@D
FLOAT
SELECT
@A=inserted.Title2
FROM
inserted
SELECT
@B=inserted.Tno
FROM
inserted
SELECT
@C=Pay.Overpay
FROM
Pay,inserted
WHERE
Pay.Tno=@B
SELECT
@D=Pay.Docked
FROM
Pay,inserted
WHERE
Pay.Tno=@B
IF
@A='普通教師'
UPDATE
Pay
SET
Pay.Base=4000,Pay.Wages=4000+@C-@D
WHERE
@B=Pay.Tno
IF
@A='高級教師'
UPDATE
Pay
SET
Pay.Base=5000,Pay.Wages=5000+@C-@D
WHERE
@B=Pay.Tno
IF
@A='主任'
UPDATE
Pay
SET
Pay.Base=6000,Pay.Wages=6000+@C-@D
WHERE
@B=Pay.Tno
IF
@A='校長'
UPDATE
Pay
SET
Pay.Base=7000,Pay.Wages=7000+@C-@D
WHERE
@B=Pay.Tno
END
GO
五、數據庫視圖設計
查看各職工應得和實發的工資:
CREATE
VIEW
Pay_view
AS
SELECT
Tno,Base+Overpay
Gets,Docked,Wages
FROM
Pay
六、存儲過程設計
CREATE
PROCEDURE
ALL_pay
AS
SELECT
SUM(Base)
總基本工資,SUM(Overpay)
總加班工資,SUM(Docked)
總扣工資,SUM(Wages)
總實發工資
FROM
Pay
七、實驗結果
(1)基本工資表
各職工的基本工資按各自的職稱參照此表
(2)職工表,以下為添加記錄后的結果
添加后,Basic_pay觸發器觸發,在工資表中自動插入所有人的基本工資信息:
(3)現將李楠、王峰的職稱都提一級,吳鵬降一級,職稱更新后,Title_change觸發器觸發,首先職稱變更記錄表中插入相應記錄,:
然后工資表自動更新,以上三人的基本工資改變:
(4)在考勤表中添加記錄
隨后A_pay觸發器觸發,在工資表中按照加班一次加200、缺勤一次扣100自動更新職工的工資信息:
(5)視圖結果
(6)存儲過程結果
八、實驗心得
本次的數據庫大題目課程設計,所運用到的知識比較豐富,要考慮到的點也比較多,故此需要一定的思考。在整個設計過程中,不僅回顧了以往的理論知識,更重要的是鍛煉了對SQL語言的編寫能力。題目所給的要求并不是特別復雜,在設計數據庫的參照完整性約束上是比較簡單的,主要的在于觸發器的設計和功能的實現,這也正是此次實驗的精髓所在,讓我了解到數據庫的實用性和各方面的可行性,希望以后也能在數據庫的實踐上更進一步。
第四篇:vb課程設計 職工工資管理系統代碼
Form1: Dim errorCount As Integer Private Sub Command1_Click()If Text1.Text = “system” And Text2.Text = “1234” Then
Load Form2
Form2.Show
Me.Hide
MsgBox “登陸成功,歡迎您進入職工工資管理系統”, vbInformation, “登陸成功”
Else
errorCount = errorCount + 1
If errorCount < 3 Then
MsgBox “用戶名或密碼錯誤(第” & errorCount & “次)!”, vbOKOnly + vbExclamation, “登陸失敗”
Text1.SetFocus
End If
If errorCount >= 3 Then
Text1.Enabled = False
Text2.Enabled = False
Command1.Enabled = False
MsgBox “三次輸入用戶名或密碼錯誤,程序將自動退出!”, vbOKOnly + vbExclamation, “登陸失敗”
End
End If End If
End Sub
Private Sub Command2_Click()Unload Me End Sub
Private Sub Form_Load()errorCount = 0 End Sub
Private Sub Form_Unload(Cancel As Integer)If MsgBox(“是否要退出程序?”, vbYesNo, “退出提示”)= vbNo Then
Cancel = 1 End If End Sub
For i = 1 To jlNum
ygList(i).shifagongzi =(CSng(ygList(i).jibengz)+ ygList(i).gerensui
CSng(ygList(i).jingtie)
ygList(y).shifagongzi = ygList(zuishao).shifagongzi ygList(zuishao).shifagongzi = linShi.shifagongzi End If Next loadData End Sub
Private Sub Command5_Click()Dim linShi As YuanGong
linShi.ygnamg = InputBox(“請輸入要添加的姓名”, “添加員工-姓名錄入”)If Len(Trim(linShi.ygnamg))> 0 Then
linShi.jibengz = InputBox(“請輸入添加員工的基本工資”, “添加員工-基本工資錄入”)
If Len(Trim(linShi.jibengz))> 0 Then
linShi.jingtie = InputBox(“請輸入添加員工的津貼”, “添加員工-津貼錄入”)
If Len(Trim(linShi.jingtie))> 0 Then
linShi.gerensui = InputBox(“請輸入添加員工的個人所得稅”, “添加員工-個稅錄入”)
If Len(Trim(linShi.gerensui))> 0 Then
linShi.suidianfei = InputBox(“請輸入添加員工的水電費”, “添加員工-水電費錄入”)
If Len(Trim(linShi.suidianfei))> 0 Then
Open filedir For Append As #1
Write #1, linShi.ygnamg;linShi.jibengz;linShi.jingtie;linShi.gerensui;linShi.suidianfei
Close #1
MsgBox “添加員工成功!”, vbOKOnly + vbInformation, “成功”
jlNum = 0 If Len(Trim(filedir))> 0 Then
Open filedir For Input As #1
Do While Not EOF(1)
Line Input #1, a
If Len(Trim(a))> 0 Then
jlNum = jlNum + 1
End If
Loop
Close #1
ReDim Preserve ygList(jlNum)As YuanGong
jlNum = 0
Open filedir For Input As #1
Do While Not EOF(1)
jlNum = jlNum + 1
Input #1, ygList(jlNum).ygnamg
Input #1, ygList(jlNum).jibengz
Input #1, ygList(jlNum).jingtie
Next
Close #1
MsgBox “刪除員工成功!”, vbOKOnly + vbInformation, “成功”
jlNum = 0 If Len(Trim(filedir))> 0 Then
Open filedir For Input As #1
Do While Not EOF(1)
Line Input #1, a
If Len(Trim(a))> 0 Then
jlNum = jlNum + 1
End If
Loop
Close #1
ReDim ygList(jlNum)As YuanGong
jlNum = 0
Open filedir For Input As #1
Do While Not EOF(1)
jlNum = jlNum + 1
Input #1, ygList(jlNum).ygnamg
Input #1, ygList(jlNum).jibengz
Input #1, ygList(jlNum).jingtie
Input #1, ygList(jlNum).gerensui
Input #1, ygList(jlNum).suidianfei
Loop
Close #1
loadData
Command2.Enabled = True
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = True
Command6.Enabled = True End If
Text1.Text = “姓名” & vbTab & “工資” & vbTab & “津貼” & vbTab & “所得稅” & vbTab & “水電費” & vbCrLf
For i = 1 To jlNum
Text1.Text = Text1.Text & ygList(i).ygnamg & vbTab & ygList(i).jibengz & vbTab & ygList(i).jingtie & vbTab & ygList(i).gerensui & vbTab & ygList(i).suidianfei & vbCrLf
Next Else
MsgBox “刪除員工失敗!”, vbOKOnly + vbExclamation, “失敗” End If End Sub
Private Sub Command7_Click()
第五篇:SQL vb課程設計工資管理系統概要(模版)
課程設計報告
課程設計題目: 工資管理系統
學生姓名 : 專 業 :
班 級 : 指導教師 :
2011年 12 月 17 日
姓名: 學號: 實驗時間:12月14日 實驗地點:
一、課程設計題目:
工資管理系統
二、課程設計目的:
本次課程設計的主要目的是綜合運用所學的數據庫與VB知識解決一個比較實際的簡單問題,側重對數據庫連接、查詢等相關內容的綜合應用,使同學們能進一步熟悉掌握數據庫的基本使用方法,進一步提升自己的編程能力并逐步培養編程思維,進而不斷提高同學們解決問題的能力,并為以后的語言學習打下良好的基礎。
三、課程設計要求: 1.獨立完成;
2.此次課程設計在規定的時間必須在實驗室完成,不得以任何理由在其他地點進行;
3.每個人需按照選題規則確定好自己的題目(注意不是多人完成一題,每人獨立完成一題),不得以任何理由選擇其他的題目,當然在完成自己的題目之后根據個人興趣可以繼續選做其他的題目;
4.課程設計完成后嚴格按照報告格式撰寫課程設計報告,并于結束后的第三天上交到學習委員統一交給老師;
5.課程設計的成績由兩部分組成:程序檢查成績(40%,每個功能占程序分的20%)+報告檢查成績(40%)+平時考核(20%)
四、試驗要求 員工基本信息的管理功能。單位員工變動、獎懲情況的管理功能。3 工資的計算、修改功能。4 查詢統計功能。5 報表打印功能。具有數據備份和數據恢復功能。
五、試驗過程
1.數據庫的設計
本系統的數據庫是SQL數據庫,在SQL環境下創建數據庫工資.mdb文件。該數據庫包括員工信息表、工資標準表、其他工資標準表、用戶表用于紀錄員工的基本信息數據庫表結構如下所示: 字段名 類型 varchar
大小 8
允許空 Not null 員工編號
姓名 varchar 10 Not null 性別 varchar 職務 Varchar 出生年月 datetime 員工頭像 image
員工信息表
字段名 類型
員工編號 varchar
月份 int 津貼 money 獎金 Money 扣保險 Money 扣考勤 Money 扣其他 Money 其他工資標準表 Not null 8 Not null Not null
大小
允許空 8 NULL NULL NULL NULL NULL
字段名 類型
大小
職務 varchar
基本工資 money 8
工資標準表
字段名 類型
大小
用戶名 char
口令 char 10
用戶表 2.主要內容 登錄窗體
登錄窗體 設計代碼:
允許空
Not null
Not null
允許空
Not null
Not null
Option Explicit
Private Function Selectsql(SQL As String As ADODB.Recordset '返回ADODB.Recordset對象 Dim ConnStr As String
Dim Conn As ADODB.Connection Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset Set Conn = New ADODB.Connection 'On Error GoTo MyErr:
ConnStr = “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=true;Initial Catalog=工資;Data Source=(local” '這是連接SQL數據庫的語句 Conn.Open ConnStr
rs.CursorLocation = adUseClient
rs.Open Trim$(SQL, Conn, adOpenDynamic, adLockOptimistic Set Selectsql = rs 'Exit Function 'MyErr: 'Set rs = Nothing
'Set Conn = Nothing '釋放相關的系統資源
'MsgBox Err.Description, vbInformation, “系統提示” '顯示出錯信息 End Function
Private Sub Command3_Click(Unload Me End Sub
Private Sub Form_Load(Dim SQL As String Dim rs As ADODB.Recordset Dim X As Long
On Error GoTo Err_box SQL = “ select * from 用戶表” Set rs = Selectsql(SQL If rs.RecordCount > 0 Then rs.MoveFirst
For X = 1 To rs.RecordCount
Combo1.AddItem rs.Fields(“用戶名”.Value rs.MoveNext Next X
Combo1.ListIndex = 0 End If rs.Close Exit Sub Err_box: End Sub
Private Sub Command1_Click(Dim SQL As String Dim rs As ADODB.Recordset If Text1.Text = “" Then MsgBox ”請輸入口令!“, 16 Text1.SetFocus Exit Sub End If
If Combo1.Text = ”“ Then MsgBox ”請選擇登錄用戶!“, 16 Combo1.SetFocus Exit Sub
End If
SQL = ”SELECT * FROM 用戶表 WHERE 用戶名='“ & Combo1.Text & ”' AND 口令='“ & Text1.Text & ”' “ Set rs = Selectsql(SQL If rs.RecordCount > 0 Then form2.Show '想要打開的主窗體 MsgBox ”登錄成功!“, 64, ”提示“ Unload Me Else
MsgBox ”口令不對,請重新輸入!“, 16, ”提示“ Text1.SetFocus End If End Sub
主控界面
主控界面
設計過程:
所有功能都在菜單中打開來實現,在最下面添加了工具欄,來顯示時間,操作員,狀態等信息。
設計代碼:
Private Sub rechaxun_Click(form3.Show End Sub
Private Sub reluru_Click(form3.Show End Sub
Private Sub cygl2_Click(form5.Show End Sub
Private Sub cyxx_Click(form3.Show End Sub
Private Sub Form_Load(Label2.Caption = Time End Sub
Private Sub gzcx_Click(Form4.Show End Sub
Private Sub Image1_Click(End Sub
Private Sub jcqk_Click(form6.Show End Sub
Private Sub rexiugai_Click(form6.Show End Sub
Private Sub rescbb_Click(Form4.Show
MsgBox ”請先查詢,再點擊生成報表按鈕“, , ”提示窗口“ End Sub
Private Sub sjbf_Click(Form7.Show End Sub
Private Sub sjhf_Click(Form7.Show End Sub
Private Sub tjcy_Click(form5.Show End Sub
成員管理 成員瀏覽
成員瀏覽 設計過程:
用控件可以實現檔案的瀏覽,在此窗體用戶可以瀏覽員工信息,此窗體與數據輪中的員工信息表進行連接。
設計代碼:
Private Sub Command4_Click(Unload Me End Sub 成員管理
成員管理
設計過程:
用于檔案的登記,此窗體和檔案瀏覽窗體中的數據表進行了連接,可以直接進行添加,刪除,修改等。
設計代碼:
Private Sub Command1_Click(Adodc1.Recordset.AddNew End Sub Private Sub Command2_Click(Adodc1.Recordset.Update End Sub Private Sub Command3_Click(Adodc1.Recordset.Delete End Sub
Private Sub Command4_Click(Dim strb(As Byte CommonDialog1.ShowOpen Open CommonDialog1.FileName For Binary As #1 f1 = LOF(1 ReDim strb(f1 Get #1, , strb Adodc1.Recordset.Fields(”員工頭像“.AppendChunk strb Close #1 Image1.Picture = LoadPicture(CommonDialog1.FileName End Sub Private Sub Form_Load(End Sub 獎懲信息:
員工獎懲情況
設計過程:
用戶可以查找各月份的扣除以及獎勵狀況。
設計代碼:
Private Sub Command1_Click(Unload Me End Sub
Private Sub Command2_Click(Adodc1.Recordset.Update End Sub
Private Sub Text1_Change(Adodc1.RecordSource = ” select * from 其他工資標準 where 月份='“ & Text1 & ”'“ Adodc1.Refresh DataGrid1.Refresh End Sub
工資查詢:
工資查詢
設計過程:
通過在姓名欄和月份欄輸入信息,可以快速查找所需查詢人的工資情況;并將查詢結果生成execl表,方便用戶打印及攜帶。
設計代碼:
Private Sub Command1_Click(Dim i As Integer, r As Integer, c As Integer Dim newxls As Excel.Application Dim newbook As Excel.Workbook Dim newsheet As Excel.Worksheet Set newxls = CreateObject(”Excel.Application“ '創建excel應用程序,打開excel Set newbook = newxls.Workbooks.Add '創建工作簿 Set newsheet = newbook.Worksheets(1 '創建工作表 If Adodc1.Recordset.RecordCount > 0 Then For i = 0 To DataGrid1.Columns.Count1 DataGrid1.Col = c newsheet.Cells(r + 1, c + 1 = DataGrid1.Columns(c Next c Adodc1.Recordset.MoveNext Loop Dim myval As Long Dim mystr As String myval = MsgBox(”是否保存該Excel表?“, vbYesNo, ”提示窗口“
If myval = vbYes Then mystr = InputBox(”請輸入文件名稱“, ”輸入窗口“ If Len(mystr = 0 Then MsgBox ”系統不允許文件名稱為空!“, , ”提示窗口“ Exit Sub End If newsheet.SaveAs ”d:“ & mystr & ”.xls“ MsgBox ”Excel文件保存成功,位置:d:“ & mystr & ”.xls“, , ”提示窗口“ newxls.Quit End If End If End Sub Private Sub Command2_Click(Unload Me End Sub Private Sub Form_Load(End Sub Private Sub Text1_Change(Adodc1.RecordSource = ”select a.員工編號,姓名,月份,基本工資,津貼+獎金+扣保險+扣考勤+扣其他 as 獎懲總額,基本工資+津貼+獎金+扣保險+扣考勤+扣其他 as 實發工資 from 員工信息表 a,工資標準 b,其他工資標準 c where a.職務=b.職務 and a.員工編號=c.員工編號 and 姓名 like '“ & Text2 & ”%'and c.月份='“ & Text1 & ”' “ Adodc1.Refresh DataGrid1.Refresh End Sub Private Sub Text2_Change(Adodc1.RecordSource = ”select a.員工編號,姓名,月份,基本工資,津貼+獎金+扣保險+扣考勤+扣其他 as 獎懲總額,基本工資+津貼+獎金+扣保險+扣考勤+扣其他 as 實發工資 from 員工信息表 a,工資標準 b,其他工資標準 c where a.職務=b.職務 and a.員工編號=c.員工編號 and 姓名 like '“ & Text2 & ”%' and c.月份='“ & Text1 & ”'“ Adodc1.Refresh DataGrid1.Refresh End Sub 數據備份及恢復:
數據備份及恢復 設計過程:
用戶可以將數據庫進行完全備份和差異備份,并且在操作不當時可以進行恢復。
設計代碼:
Public Cn As ADODB.Connection Private Sub Command1_Click(Cn.Execute ”backup database 工資 to disk='d:工資完全備份.bak' with name='工資 backup all',description='Full Backup Of pubs'“ MsgBox ”數據完全備份已經完成“, vbOKOnly + vbInformation, ”提醒“ End Sub Private Sub Command2_Click(Cn.Execute ”backup database 工資 to disk='d:工資差異備份.bak' with differential ,noinit,name='工資 backup dif',description='Differential Backup Of 工資'“
MsgBox ”數據差異備份已經完成“, vbOKOnly + vbInformation, ”提醒“ End Sub Private Sub Command3_Click(Cn.Execute ”restore database 工資 from disk='d:工資完全備份.bak' with FILE=1“ MsgBox ”數據恢復已經完成“, vbOKOnly + vbInformation, ”提醒“ End Sub Private Sub Command4_Click(Cn.Execute ”restore database 工資 from disk='d:工資差異備份.bak' with FILE=1“ MsgBox ”數據恢復已經完成“, vbOKOnly + vbInformation, ”提醒“ End Sub Private Sub Form_Load(Set Cn = New ADODB.Connection strcon = ”Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=true;Initial Catalog=工資;Data Source=(local;“ + _ ”use procedure for prepare=1;auto translate=true;“ + _ ”use encryption for data=false;tag with column collation when possible=false“ Cn.ConnectionString = strcon On Error Resume Next Cn.Open If Cn.Errors.Count > 0 Then For i = 0 To Cn.Errors.Count-1 If Cn.Errors(i.Number =-2147467259 Then MsgBox ”網絡不通或服務器未開,請確認后再試“, vbOKOnly + vbInformation, ”提醒" Unload Me
Exit Sub Exit For End If Next i End If End Sub
3、設計體會
在數據庫課程開課之前我就下決心要學好這一門課,因為這是我的專業課,我一開始就謹慎小心,爭取每一個細節都做得很好。現在終于是完成了,我的設計體會如下:
小心謹慎是關鍵,因為做程序關鍵就是寫代碼,每一個字母都要很小心輸入,若是不小心錯了一個,就會帶來龐大的“查錯工程”,不過從我檢查錯誤當中也學會了一些檢查的方法,比如設置中斷點,可以觀查每一個變量的當前值,很有效的。
小心是一個方面,另一個是怎么樣讓程序最人性化,并且保持較簡潔的程序代碼,通俗說就是事半功倍。有很多時間我是花在了調試程序方面,一部分是在找錯誤,還有就是怎么用最簡練的代碼實現當前的作用。其中絕大多數都是自己寫的代碼,只有在自己不會的時候才借鑒了指導老師發下來的那個示例作品的代碼。
我的程序大多數是我自己寫的,但是自己的知識和水平都十分有限,所以會經常去查看書或者在網上尋找資料,通過看書、看資料,我改進了自己的不足,也學會的很多新的作程序方法,都是十分有用的。
在一個體會就是做程序要有對全局和面的分析能力,老師告訴我好多設計中不曾想到的東西,比如數據表建立的不完美,用戶權限應該分開等。做什么事都是一樣的,具體體現在了這次的數據庫課程設計上來,讓我學到了很多東西。就像要完成一個很大的工作,要先從小的部分做起,不能急于求成,細心謹慎才是關鍵,堅持不懈,最后再把這些小的窗體在連接起來,就構成了一個整體。
只有實踐真正動手做了才會真正了解,在不斷的學習和實踐中體會到更多的經驗。