第一篇:工資管理系統(tǒng)--軟件工程課程設(shè)計(jì)2
目 錄
目錄...............................................................................................................第一章 緒
論.................................................................................................1.1 開(kāi)發(fā)背景說(shuō)明....................................................................................1.2課程設(shè)計(jì)目的.....................................................................................1.3課程題目及內(nèi)容.................................................................................1.4課程設(shè)計(jì)要求.....................................................................................1.5預(yù)期目標(biāo).............................................................................................1.6 系統(tǒng)環(huán)境............................................................................................第二章 可行性分析.........................................................................................2.1 可行性研究前提................................................................................2.2 經(jīng)濟(jì)上可行性....................................................................................2.3 技術(shù)可行性........................................................................................2.4目標(biāo)方案可行性.................................................................................2.5操作可行性.........................................................................................第三章 需求分析.............................................................................................3.1引言.....................................................................................................3.2任務(wù)陳述.............................................................................................3.3市場(chǎng)需求分析.....................................................................................3.4系統(tǒng)功能需求分析.............................................................................3.5系統(tǒng)性能需求分析.............................................................................3.6 系統(tǒng)業(yè)務(wù)數(shù)據(jù)流...................................................錯(cuò)誤!未定義書簽。3.7用例分析...........................................................................................3.8用例列表...........................................................................................3.9繪制系統(tǒng)模型圖...............................................................................第四章 系統(tǒng)概要設(shè)計(jì)...................................................................................4.1模塊分析和概要設(shè)計(jì).......................................................................4.2 系統(tǒng)數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)..............................................................4.3概念模型轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型.......................................................4.4 數(shù)據(jù)庫(kù)設(shè)計(jì)......................................................................................第五章 詳細(xì)設(shè)計(jì)...........................................................................................5.1登錄管理...........................................................................................-***39424243443
入帳目時(shí)的錯(cuò)誤,可以根據(jù)職工的考勤、職務(wù)、部門、各種稅費(fèi)等等,自動(dòng)求出工資。為了便于企業(yè)領(lǐng)導(dǎo)掌握本企業(yè)的工資信息在系統(tǒng)中應(yīng)加入各種查詢功能,包括個(gè)人信息、職工工資、本企業(yè)內(nèi)某一個(gè)月或某一部門的工資情況查詢。系統(tǒng)應(yīng)能輸出各類統(tǒng)計(jì)報(bào)表。
本系統(tǒng)需要完成的功能主要有:系統(tǒng)數(shù)據(jù)初始化;職工基本信息數(shù)據(jù)的輸入、修改、刪除;企業(yè)工資的基本設(shè)定;職工工資的瀏覽;職工個(gè)人工資表的查詢;職工工資的計(jì)算;工資報(bào)表打印。
數(shù)據(jù)流:
職工基本狀況:包括職工編號(hào)、職工姓名、性別、年齡、職位等。工資級(jí)別和工資金額:包括工資等級(jí)、工資額。
企業(yè)部門及工作崗位信息:包括部門名稱、工作崗位名稱、工作崗位工資等。工資信息:包括職工編號(hào)、職工姓名、職工基本工資、職工崗位工資、職工工齡工資、公司津貼、職工實(shí)發(fā)工資等。工齡和工資金額:包括工齡及對(duì)應(yīng)工資額。
1.4課程設(shè)計(jì)要求
堅(jiān)持“規(guī)格嚴(yán)格,功夫到家”的優(yōu)良傳統(tǒng),加強(qiáng)基本功訓(xùn)練,做到理論與實(shí)際相結(jié)合,繼承與創(chuàng)新相結(jié)合,充分發(fā)揮學(xué)生的主觀能動(dòng)性與教師因材施教、嚴(yán)格要求相結(jié)合,抓智力因素教育與非智力因素教育相結(jié)合,教書育人。所設(shè)計(jì)的工資管理系統(tǒng)應(yīng)包含輸入輸出、修改、刪除、查詢等基本功能。根據(jù)題目的基本需求,畫出流程圖、用例圖、類圖等,編寫程序,并寫出詳細(xì)的設(shè)計(jì)說(shuō)明書。課程設(shè)計(jì)過(guò)程中,要嚴(yán)格遵守課程設(shè)計(jì)的時(shí)間安排,聽(tīng)從指導(dǎo)教師的指導(dǎo)。正確地完成上述內(nèi)容,規(guī)范完整地撰寫出課程設(shè)計(jì)報(bào)告。
1.5預(yù)期目標(biāo)
計(jì)劃設(shè)計(jì):對(duì)于企、事業(yè)單位的工資發(fā)放來(lái)說(shuō),不需要太大型的數(shù)據(jù)庫(kù)系統(tǒng),只需要一個(gè)操作方便,功能實(shí)用,能滿足財(cái)務(wù)部門對(duì)工資及時(shí)的發(fā)放。本工資管理系統(tǒng)預(yù)期目標(biāo)就是實(shí)現(xiàn)如下的一些功能:查詢?yōu)g覽記錄功能,增加記錄功能、修改記錄功能、刪除記錄功能、刷新記錄功能、最后實(shí)現(xiàn)統(tǒng)計(jì)計(jì)算功能。
1.6 系統(tǒng)環(huán)境
1.6.1硬件:個(gè)人PC 1.6.2軟件:
Windows XP、Microsoft Visual C++6.0、Rational Rose。
第二章 可行性分析
2.1 可行性研究前提
要求:滿足對(duì)工資管理的基本要求及功能,并對(duì)職工信息收集、處理、保存。目標(biāo):實(shí)現(xiàn)無(wú)紙化辦公,節(jié)省成本,提高工作效率。
條件、假定、限制:當(dāng)企業(yè)工資管理的信息量和復(fù)雜程度達(dá)到某一限度時(shí),即管理人員的勞動(dòng)強(qiáng)度超過(guò)其承受能力時(shí),就必須采用新的管理手段,如用計(jì)算機(jī)技術(shù)對(duì)信息的收集、加工、傳遞和存貯等,這樣,一個(gè)工資管理系統(tǒng)就可以對(duì)企業(yè)職工工資進(jìn)行高效、合理、恰當(dāng)?shù)毓芾怼?/p>
2.2 經(jīng)濟(jì)上可行性
開(kāi)發(fā)成本要低廉。
效益:大幅度地提高工資管理信息系統(tǒng)的工作質(zhì)量和效率,讓企業(yè)掌握整個(gè)工資管理系統(tǒng)的全面情況,為管理人員提供了準(zhǔn)確的工資管理信息,促進(jìn)工資管理工作的規(guī)范化及各項(xiàng)管理制度與指標(biāo)體系的建立和健全;提供各種加工處理了的工資管理信息,以滿足工資管理的特殊要求,適應(yīng)新形勢(shì)對(duì)職工隊(duì)伍提出的新要求。
效益/投資比:暫時(shí)無(wú)法估算。投資回收期內(nèi):
(1)企業(yè)有能力承擔(dān)系統(tǒng)開(kāi)發(fā)費(fèi)用。
(2)新系統(tǒng)將為企業(yè)帶來(lái)經(jīng)濟(jì)效益。管理系統(tǒng)是一個(gè)信息化、智能化和先進(jìn)。理理念的集合體。而管理是一個(gè)動(dòng)態(tài)過(guò)程,在其運(yùn)行過(guò)程中要采取多項(xiàng)措施。其最主要的表現(xiàn)就是減少了企業(yè)管理費(fèi)用和人力開(kāi)支。
2.3 技術(shù)可行性
(1)軟件需求:操作系統(tǒng)WINDOWS 2000 Advance Server以上。
硬件需求:賽揚(yáng)1.7G CPU、512M內(nèi)存 80G硬盤的計(jì)算機(jī)。(2)本系統(tǒng)采用VC++實(shí)現(xiàn),依靠其強(qiáng)大的面向?qū)ο笙到y(tǒng),與數(shù)據(jù)庫(kù)管理系統(tǒng)相結(jié)合。
(3)要求掌握計(jì)算機(jī)技術(shù),熟悉系統(tǒng)的功能和使用方法使系統(tǒng)能夠順利運(yùn)行。
2.4目標(biāo)方案可行性
計(jì)算機(jī)設(shè)備處理繁雜的工資增減問(wèn)題,大幅度減少人力、物力,極大地提高企業(yè)的管理水平和管理效率。
管理水平和管理效率的提高能直接產(chǎn)生經(jīng)濟(jì)效益。
格,如完成任務(wù)表、考勤表、考核表、職工當(dāng)月的扣款情況(包括水電費(fèi)、病事假扣款等)等計(jì)算職工變動(dòng)工資、個(gè)人所得稅和應(yīng)發(fā)放工資等,編制工資單。按類進(jìn)行匯總,編制工資匯總表。將實(shí)發(fā)工資轉(zhuǎn)入代發(fā)銀行,由銀行代發(fā)工資,并進(jìn)行賬務(wù)處理。工資結(jié)算過(guò)程主要設(shè)計(jì)如下會(huì)計(jì)賬戶:現(xiàn)金、銀行存款、應(yīng)付工資、其他應(yīng)付款、其他應(yīng)收款等。
3.3市場(chǎng)需求分析
工資管理系統(tǒng)是一個(gè)企業(yè)單位不可或缺的部分,他能為用戶提供充足的信息和快捷的查詢手段。一個(gè)工資管理系統(tǒng)可以高效能、大容量的收集、處理、存儲(chǔ)工資管理信息,大幅度的工資管理信息系統(tǒng)的工作質(zhì)量和效率。
能夠?yàn)槠髽I(yè)管理人員及時(shí)掌握整個(gè)工資管理系統(tǒng)的全面情況,提供系統(tǒng)的準(zhǔn)確的工資管理信息,可以促進(jìn)工資管理工作的規(guī)范化及各項(xiàng)管理制度與指標(biāo)體系的建立和健全。為企業(yè)提供各種加工管理了工資管理信息,以滿足工資管理的特殊要求,適應(yīng)新形勢(shì)對(duì)職工隊(duì)伍建設(shè)提出的新要求,幫助管理人員選擇方案,實(shí)現(xiàn)優(yōu)化決策。雖然當(dāng)前,不少單位的工資管理部門對(duì)于計(jì)算機(jī)應(yīng)用還僅限于簡(jiǎn)單的單機(jī)應(yīng)用,隨著時(shí)間的推移、任務(wù)的復(fù)雜、用戶的需求,其應(yīng)用還會(huì)擴(kuò)大。
3.4系統(tǒng)功能需求分析
工資管理系統(tǒng)涉及到員工基本信息的錄入、修改和刪除,工資標(biāo)準(zhǔn)的設(shè)定、查詢和結(jié)算等。
典型的工資管理系統(tǒng)主要有以下基本功能: a)系統(tǒng)數(shù)據(jù)初始化
b)員工基本信息的錄入、修改、刪除等功能
c)工資標(biāo)準(zhǔn)的設(shè)定功能,集體包括職務(wù)工資、職稱工資、其他工資標(biāo)準(zhǔn)和福利的設(shè)定。
d)工資信息的瀏覽
e)員工工資信息表的創(chuàng)建及查詢 f)工資調(diào)整管理 g)工資計(jì)算 h)工資報(bào)表打印
3.5系統(tǒng)性能需求分析
3.5.1 需求分析總體目標(biāo)
需求分析的目的在于與開(kāi)發(fā)人員與用戶之間達(dá)成系統(tǒng)開(kāi)發(fā)的共識(shí),使開(kāi)發(fā)人員所考慮的系統(tǒng)在功能(系統(tǒng)能做什么)、簡(jiǎn)單操作,良好界面,個(gè)人信息保密性,系統(tǒng)安全與穩(wěn)定,良好帳戶管理,友好信息返回模式(如報(bào)表及打印功能)。
時(shí),防止數(shù)據(jù)被不法分析任意的修改和破壞,對(duì)所有的敏感數(shù)據(jù)均進(jìn)行基于SSL協(xié)議 的加密操作,只有對(duì)信息解密的人員才能最終讀取數(shù)據(jù)信息。這樣,能 最大程度的防止數(shù)據(jù)在傳輸過(guò)程的安全保密性。
3.6 系統(tǒng)業(yè)務(wù)數(shù)據(jù)流
3.6.1 數(shù)據(jù)流分析
數(shù)據(jù)流程圖是一種能全面描述信息系統(tǒng)邏輯模型的主要工具,也是系統(tǒng)分析人員與用戶進(jìn)行交流的有效手段。本系統(tǒng)的數(shù)據(jù)流程圖把握住對(duì)系統(tǒng)總體目標(biāo)與總體功能的要求,基于上述的業(yè)務(wù)流程圖,從科學(xué)性,合理性和可行性入手,采用自頂向下,逐層分解的方法建立本管理信息系統(tǒng)的邏輯模型,綜合地反映出信息在本系統(tǒng)中的流動(dòng),處理和存儲(chǔ),具有抽象性和概括性.通過(guò)進(jìn)行用戶調(diào)查收集用戶需求后,就要對(duì)用戶需求進(jìn)行分析,并表達(dá)用戶的需求。采用結(jié)構(gòu)化分析方法,主要采用數(shù)據(jù)流圖對(duì)用戶需求進(jìn)行分析,用數(shù)字字典和加工說(shuō)明對(duì)數(shù)據(jù)流圖進(jìn)行補(bǔ)充和說(shuō)明。數(shù)據(jù)流圖用于描述系統(tǒng)中數(shù)據(jù)流動(dòng)的過(guò)程,反映的是加工處理的對(duì)象。
3.6.2 流程圖,模塊圖如下:
流程圖
模塊圖
112
3.9.2活動(dòng)圖:
分析用例中的邏輯流程,描述用例的事件流,進(jìn)而畫出各用例對(duì)應(yīng)的活動(dòng)圖 用戶登錄活動(dòng)圖:
管理員工信息活動(dòng)圖:
3.9.3 類圖:
類圖是面向?qū)ο蟮能浖_(kāi)發(fā)中的一個(gè)核心概念。Rose中的類圖用于描述軟件系統(tǒng)中涉及到的類的相關(guān)信息,以及類與類之間的相互關(guān)系。
〔1〕類的識(shí)別
類的識(shí)別通常由分析員在分析問(wèn)題域的基礎(chǔ)上來(lái)完成。常用的方法有: ? a.名詞識(shí)別法。? b.系統(tǒng)識(shí)別法。? c.從用例中識(shí)別類。? d.利用分解與抽象技術(shù)?!?〕系統(tǒng)類圖
3.9.4狀態(tài)圖:
狀態(tài)圖(State Diagram)用來(lái)描述一個(gè)特定對(duì)象的所有可能狀態(tài)及其引起狀態(tài)轉(zhuǎn)移的事件。
3.9.5 時(shí)序圖:
時(shí)序圖用來(lái)描述對(duì)象之間動(dòng)態(tài)的交互關(guān)系,著重體現(xiàn)對(duì)象間消息傳送消息的時(shí)間順序。下面分別給出各個(gè)用例的時(shí)序圖:
用戶登錄時(shí)序圖:
職工時(shí)序圖:
71819
設(shè)計(jì)一般分為三個(gè)步驟:
〔1〕概念模型轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型?!?〕關(guān)系模型的優(yōu)化?!?〕設(shè)計(jì)用戶子模式書號(hào)。
4.3概念模型轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型
一般轉(zhuǎn)換原則如下:
〔1〕一個(gè)實(shí)體轉(zhuǎn)換為一個(gè)表(Table),則實(shí)體的屬性轉(zhuǎn)換為表的列(Column),實(shí)體的碼轉(zhuǎn)換為表的主鍵(Primary Key)。
〔2〕實(shí)體間的聯(lián)系根據(jù)聯(lián)系的類型,轉(zhuǎn)換如下: ① 1:n 的聯(lián)系:
1:n 的聯(lián)系是比較普遍的聯(lián)系,其轉(zhuǎn)換比較直觀。轉(zhuǎn)換規(guī)律是在n 端的實(shí)體對(duì)應(yīng)的表中增加屬性,該屬性是1 端實(shí)體對(duì)應(yīng)表的主碼。如:崗位和員工的關(guān)系是1:n 的聯(lián)系。
② m:n 的聯(lián)系:
通過(guò)引進(jìn)一個(gè)新表來(lái)表達(dá)兩個(gè)實(shí)體間多對(duì)多的聯(lián)系,新表的主碼由聯(lián)系兩端實(shí)體的主碼組合而成,同時(shí)增加相關(guān)的聯(lián)系屬性。如:部門與員工的聯(lián)系是n:m 聯(lián)系。
4.4 數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)設(shè)計(jì)是指為邏輯數(shù)據(jù)模型選取一個(gè)最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)(包括存儲(chǔ)結(jié)構(gòu)和存取方法),它完全取決于給定的計(jì)算機(jī)系統(tǒng)。物理結(jié)構(gòu)可分兩步進(jìn)行。第一步是分析所得到的各種數(shù)據(jù)模型,依據(jù)在實(shí)際執(zhí)行時(shí)可能產(chǎn)生的數(shù)據(jù)容量以及各種數(shù)據(jù)模型之間的相互依賴程度等,確定數(shù)據(jù)庫(kù)的物理結(jié)構(gòu);第二步則要根據(jù)某種方法對(duì)所設(shè)計(jì)的物理結(jié)構(gòu)進(jìn)行評(píng)價(jià),評(píng)價(jià)重點(diǎn)是時(shí)間和空間的效率。數(shù)據(jù)庫(kù)實(shí)施是指建立數(shù)據(jù)庫(kù),編制與調(diào)試應(yīng)用程序,組織數(shù)據(jù)入庫(kù),并進(jìn)行試運(yùn)行。
根據(jù)人員規(guī)模,我們只建立起一個(gè)數(shù)據(jù)庫(kù),在此數(shù)據(jù)庫(kù)基礎(chǔ)上建立起如下表:
·職工表
·用戶表
·工資表
下面說(shuō)明各表的字段名稱和數(shù)據(jù)類型:
工資表:
職工表:
用戶表:
第五章 詳細(xì)設(shè)計(jì)
詳細(xì)設(shè)計(jì)階段主要是將系統(tǒng)中的每個(gè)模塊完成的功能進(jìn)行具體描述。
5.1登錄管理
根據(jù)系統(tǒng)總體結(jié)構(gòu)可以得出登錄管理模塊實(shí)現(xiàn)用戶登錄、密碼修改和退出系統(tǒng)三個(gè)功能。其中,退出系統(tǒng)實(shí)現(xiàn)流程很容易,只需要一行代碼即可;用戶登錄的實(shí)現(xiàn)流程是用戶在登錄窗口輸入用戶名稱和密碼,如果沒(méi)有用戶名和密碼可以進(jìn)行注冊(cè)后再登錄,選擇了用戶角色后,單擊【登錄】按鈕進(jìn)行提交,系統(tǒng)開(kāi)始驗(yàn)證用戶提交的登錄信息是否正確。如果正確,則打開(kāi)工資管理系統(tǒng),并根據(jù)用戶角色賦于相應(yīng)的操作權(quán)限;否則給出錯(cuò)誤信息。
5.1.1界面設(shè)計(jì) 登錄界面如下:
5.1.2 代碼
部分核心代碼設(shè)計(jì): void CZHUCE::OnButton1(){
UpdateData(TRUE);if(m_username.IsEmpty()||m_password.IsEmpty()||m_password2.IsEmpty()){AfxMessageBox(“請(qǐng)將資料填寫完整!”);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{//捕捉表的主鍵存在重復(fù)值的異常
m_pConnection->Execute((_bstr_t)str,&var,adCmdText);
fieldrow=(int)V_I2(&var);
}
catch(...)
{
AfxMessageBox(“用戶名已存在,注冊(cè)失敗”);
m_username.Empty();
m_password.Empty();
m_password2.Empty();
UpdateData(FALSE);
return;}
AfxMessageBox(“注冊(cè)成功,請(qǐng)返回登錄!”);
m_pConnection->Close();
Clogin clg;
clg.DoModal();} else{AfxMessageBox(“兩次密碼輸入不一樣,注冊(cè)失敗!”);
m_username.Empty();
m_password.Empty();m_password2.Empty();
}} UpdateData(FALSE);return;void CZHUCE::OnInitADOConn()try {//創(chuàng)建連接對(duì)象實(shí)例
} catch(_com_error e){ AfxMessageBox(e.Description());m_pConnection.CreateInstance(“ADODB.Connection”);//設(shè)置連接字符串 Cstring
strConnect=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=salary.mdb;Persist Security Info=False;”;//使用Open方法連接數(shù)據(jù)庫(kù)
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用戶管理
用戶管理模塊用于實(shí)現(xiàn)用戶的添加、刪除、更新功能。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
職
工
編
號(hào)='%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(”請(qǐng)選擇刪除的職工!“);return;} OnInitADOConn();CString bstrSQL;bstrSQL.Format(”delete from 職工表 where 職工編號(hào)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(”請(qǐng)選擇查詢的方式!“);return;} if(m_tiaojian.IsEmpty()){AfxMessageBox(”請(qǐng)輸入查詢的職工編號(hào)!“);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(“編號(hào)不允許空值,請(qǐng)重新填寫!”);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(”該編號(hào)的職工不存在,請(qǐng)先到職工管理添加職工信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(”請(qǐng)輸入查詢的職工編號(hào)!“);return;} OnInitADOConn();CString sql;sql.Format(”select * from 工資表 where 職工編號(hào)='%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查詢管理
該模塊實(shí)現(xiàn)功能是職工查詢工資的詳細(xì)信息,查詢個(gè)人詳細(xì)信息的功能。
5.5.1職工信息查詢:
5.5.2工資信息查詢:
部分核心代碼如下: void CGXGZ::OnButton1(){ UpdateData(TRUE);
if(m_Chaxun.IsEmpty()){AfxMessageBox(”請(qǐng)輸入查詢的職工編號(hào)!“);return;} OnInitADOConn();CString sql;sql.Format(”select * from 工資表 where 職工編號(hào)='%s'“,m_Chaxun);m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);m_pConnection->Close();m_gzlist.DeleteAllItems();UpdateGrid();m_Chaxun.Empty();
6UpdateData(FALSE);{//創(chuàng)建連接對(duì)象實(shí)例
} catch(_com_error e){ AfxMessageBox(e.Description());m_pConnection.CreateInstance(”ADODB.Connection“);//設(shè)置連接字符串 CString
strConnect=”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=salary.mdb;Persist Security Info=False;“;//使用Open方法連接數(shù)據(jù)庫(kù)
m_pConnection->Open((_bstr_t)strConnect,”“,”“,adModeUnknown);
} OnInitADOConn();//設(shè)置查詢字符串 CString bstrSQL;bstrSQL.Format(”select * from 工資表 where 職工編號(hào)='%s' order by 職//創(chuàng)建記錄集指針對(duì)象實(shí)例
m_pRecordset.CreateInstance(__uuidof(Recordset));//打開(kāi)記錄集
m_pRecordset->Open((_bstr_t)bstrSQL,m_pConnection.GetInterfacePtr(),ad adLockOptimistic,adCmdText);工編號(hào) desc “,m_Chaxun);OpenDynamic, while(!m_pRecordset->adoEOF){ m_gzlist.InsertItem(0,”“);m_gzlist.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect(”職工編號(hào)
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(“補(bǔ)貼”));m_gzlist.SetItemText(0,6,(char*)(_bstr_t)m_pRecordset->GetCollect(“房貼”));m_gzlist.SetItemText(0,7,(char*)(_bstr_t)m_pRecordset->GetCollect(“交通補(bǔ)貼”));m_gzlist.SetItemText(0,8,(char*)(_bstr_t)m_pRecordset->GetCollect(“應(yīng)發(fā)數(shù)”));m_gzlist.SetItemText(0,9,(char*)(_bstr_t)m_pRecordset->GetCollect(“房租”));m_gzlist.SetItemText(0,10,(char*)(_bstr_t)m_pRecordset->GetCollect(“儲(chǔ)蓄”));m_gzlist.SetItemText(0,11,(char*)(_bstr_t)m_pRecordset->GetCollect(“會(huì)費(fèi)”));m_gzlist.SetItemText(0,12,(char*)(_bstr_t)m_pRecordset->GetCollect(“個(gè)人所得稅”));m_gzlist.SetItemText(0,13,(char*)(_bstr_t)m_pRecordset->GetCollect(“應(yīng)扣數(shù)”));m_gzlist.SetItemText(0,14,(char*)(_bstr_t)m_pRecordset->GetCollect(“實(shí)發(fā)數(shù)”));
} void CGXGZ::ExitConnect(){if(m_pRecordset!=NULL)
} m_pRecordset->Close();m_pConnection->Close();//將記錄集指針移動(dòng)到下一條記錄
} //AfxMessageBox(“123”);//斷開(kāi)數(shù)據(jù)庫(kù)連接 ExitConnect();m_pRecordset->MoveNext();
第六章 系統(tǒng)測(cè)試
6.1 測(cè)試方法
(1)測(cè)試人員:
測(cè)試隊(duì)伍由兩位成員組成。軟件的設(shè)計(jì)者在測(cè)試整個(gè)過(guò)程中負(fù)責(zé)整體測(cè)試方案的制定和測(cè)試進(jìn)度的掌握以及白盒測(cè)試的測(cè)試者。第二位成員由未參加軟件制作者擔(dān)任,主要責(zé)任是進(jìn)行軟件的黑盒測(cè)試以及軟件環(huán)境,硬件要求和極限測(cè)試工作。
(2)機(jī)器測(cè)試:
通過(guò)在計(jì)算機(jī)上直接運(yùn)行被測(cè)程序,來(lái)發(fā)現(xiàn)程序中的錯(cuò)誤。機(jī)器測(cè)試包括黑盒測(cè)試盒白盒測(cè)試。黑盒測(cè)試也稱功能測(cè)試,將軟件看作黑盒子,在完全不考慮程序的內(nèi)部結(jié)構(gòu)和特性的情況下,研究軟件的外部特性。根據(jù)軟件的需求規(guī)格說(shuō)明書測(cè)試用例,從程序的輸入和輸出特性上測(cè)試是否滿足設(shè)定的功能。白盒測(cè)試也稱結(jié)構(gòu)測(cè)試,將軟件看作一個(gè)透明的白盒子,按照程序的內(nèi)部結(jié)構(gòu)和處理邏輯來(lái)選定測(cè)試用例,對(duì)軟件的邏輯路徑及過(guò)程進(jìn)行測(cè)試,檢查與測(cè)試是否相符。
6.2測(cè)試內(nèi)容
1)軟件的正常運(yùn)行、關(guān)閉及退出時(shí)保存記錄的提示。
2)用戶登錄界面友好,可操作性及安全性能較好,能對(duì)不同管理級(jí)別者進(jìn)行限制,以保證數(shù)據(jù)庫(kù)的安全。
3)數(shù)據(jù)庫(kù)的可維護(hù)性好,數(shù)據(jù)的錄入、刪除及更改均能順利完成,并能實(shí)現(xiàn)動(dòng)態(tài)更新。
4)數(shù)據(jù)查詢便捷,能對(duì)各種不同的查詢條件搜索,以找到最合適的答案。5)數(shù)據(jù)溢出、越界均能進(jìn)行非法提示,以警告用戶正確使用。對(duì)用戶的正常操作方式也提出警告。
6)數(shù)據(jù)類型填寫錯(cuò)誤時(shí),系統(tǒng)能夠報(bào)錯(cuò)。
7)軟件對(duì)操作系統(tǒng)的兼容性良好,可移植性完好。
6.3測(cè)試結(jié)果
本系統(tǒng)有提示消息!
錄入相同編號(hào)的數(shù)據(jù):
該系統(tǒng)有報(bào)錯(cuò)功能!
查詢職工工資信息:
查詢職工信息成功!
1424344-
牟永敏
清華大學(xué)出版社
第二篇:數(shù)據(jù)庫(kù)課程設(shè)計(jì)工資管理系統(tǒng).
數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告 工資管理系統(tǒng)
組員:廖翔, 劉小芳, 強(qiáng)江波, 張晶晶,馮兆強(qiáng),夏沖 組長(zhǎng) :劉小芳 需求分析員 :張晶晶
程序員 :廖翔 , 劉小芳 , 強(qiáng)將波 測(cè)試員 :馮兆強(qiáng) 界面設(shè)計(jì)員 :夏沖 目錄
一 緒論 ··········································3 二 課程設(shè)計(jì)說(shuō)明····································3 三 需求分析·········································4 四 物理結(jié)結(jié)構(gòu)設(shè)計(jì)···································5 五 數(shù)據(jù)字典·········································5 六 數(shù)據(jù)庫(kù)設(shè)計(jì)·······································10 七 功能實(shí)現(xiàn)截圖·····································11 八,小結(jié)············································21 附錄 1.(組員及學(xué)號(hào)
廖翔(,劉小芳(41009040127,馮兆強(qiáng)(, 張晶晶(41009040130,夏沖(,強(qiáng)將波(2.開(kāi)發(fā)環(huán)境說(shuō)明
使用 C#進(jìn)行客戶端應(yīng)用程序的開(kāi)發(fā),數(shù)據(jù)庫(kù)管理系統(tǒng)采用 SQL SERVER
一、緒論
隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展和經(jīng)濟(jì)體制改革的不斷深入, 傳統(tǒng)企業(yè)管理方法、手段以及 工作效率已不能適應(yīng)新的發(fā)展需要, 無(wú)法很好地完成員工工資管理工作。提高公司企業(yè)管理 水平的主要途徑是更新管理者的思想,增強(qiáng)對(duì)管理活動(dòng)的科學(xué)認(rèn)識(shí)?;?C#與 SQL server 數(shù)據(jù)庫(kù)技術(shù)建立一個(gè)通用工資管理系統(tǒng),該系統(tǒng)為提供了查詢、增加記錄、刪除等 功能, 功能比較的齊全, 并對(duì)工資進(jìn)行了統(tǒng)計(jì)如津貼管理、報(bào)表統(tǒng)計(jì)等。基本上能滿足管理 員和公司的要求。
此次數(shù)據(jù)庫(kù)課程設(shè)計(jì)的主要設(shè)計(jì)如下: 原理分析、程序設(shè)計(jì)過(guò)程、程序?qū)崿F(xiàn)和程序調(diào)試以及數(shù)據(jù)庫(kù)的設(shè)計(jì)。需求分析、概要結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)和數(shù)據(jù)庫(kù)的實(shí)施和維護(hù)。二.課程設(shè)計(jì)說(shuō)明
1.設(shè)計(jì)題目:工資管理系統(tǒng) 2.設(shè)計(jì)任務(wù)與要求: 2.1實(shí)驗(yàn)任務(wù)
1.掌握數(shù)據(jù)庫(kù)設(shè)計(jì)和實(shí)現(xiàn)的基本過(guò)程 2.掌握數(shù)據(jù)庫(kù)模式設(shè)計(jì)、分析和實(shí)現(xiàn)的方法 3.了解數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)軟件開(kāi)發(fā)的一般過(guò)程。2.2 實(shí)驗(yàn)基本要求(1學(xué)習(xí)相關(guān)的預(yù)備知識(shí)
(2按照數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn)過(guò)程完成數(shù)據(jù)庫(kù)的設(shè)計(jì),應(yīng)用程序的開(kāi)發(fā),上機(jī)調(diào)試、運(yùn) 行
(3寫出課程設(shè)計(jì)報(bào) 3.目的
本說(shuō)明書目的在于明確說(shuō)明系統(tǒng)需求,界定系統(tǒng)實(shí)現(xiàn)功能的范圍, 指導(dǎo)系統(tǒng)設(shè)計(jì)以 及編碼。本文檔作為人力資源管理系統(tǒng)的需求說(shuō)明文檔,用于與用戶確定最終的目標(biāo), 并成為協(xié)議文本的一部分,同時(shí)也是本系統(tǒng)設(shè)計(jì)人員的基礎(chǔ)文檔。
4.背景 工資管理系統(tǒng)
工資管理部門希望建立一個(gè)數(shù)據(jù)庫(kù)來(lái)管理員工的工資。要計(jì)算員工的工資, 就需要考慮 不在休假日期以內(nèi)的假期、工作期間的病假時(shí)間、獎(jiǎng)金和扣除的部分。必須指明給每個(gè)員工 發(fā)薪水的方式, 隨著時(shí)間的推移, 方式可能會(huì)有些改變。大多數(shù)的員工是通過(guò)銀行卡來(lái)結(jié)算 工資的, 但是也有一部分人使用現(xiàn)金或支票。如果是通過(guò)銀行卡, 就需要知道賬號(hào)和卡的類 型。付款方式只可能是一種方式。有幾種原因可以扣除工資:例如,個(gè)人所得稅、國(guó)家稅、醫(yī)療保險(xiǎn)、退休保險(xiǎn)或者預(yù)付款。
5.主要包括三大功能模塊: 1.登錄界面選擇 [員工登錄 ]即可進(jìn)入 [員工登陸界面 ], 選擇 [管理員登陸 ]即可進(jìn)入 [管理員 登錄界面 ]。
2.管理員功能模塊。3.員工功能模塊.6.操作說(shuō)明
6.1 無(wú)論是管理員還是員工,操作都以員工編號(hào)來(lái)進(jìn)行。
6.2 管理員可以對(duì)員工基本信息增、刪、查、改, 員工只能對(duì)本人基本信息和工資信息查詢。三.需求分析
1.功能需求分析: 該通用工資管理系統(tǒng)具備下列功能:登錄界面選擇 [員工登錄 ]即可進(jìn)入 [員工登陸界面 ], 選 擇 [管理員登陸 ]即可進(jìn)入 [管理員登錄界面 ].管理員通過(guò)輸入用戶名和密碼進(jìn)下該系統(tǒng)后, 可以進(jìn)行一些基本查詢(員工個(gè)人信息查 詢 , 員工工資信息查詢 , 修改(修改員工基本信息 , 修改工資信息 , 刪除(員工個(gè)人資料刪除 , 員工工資信息刪除 , 錄入(員工資料錄入 , 員工工資資料錄入;;通過(guò)輸入密碼,可以進(jìn)行 查詢員工的數(shù)據(jù)(工資,獎(jiǎng)金津貼,加班情況。
員工通過(guò)輸入用戶名和密碼即可進(jìn)入系統(tǒng) , 可以進(jìn)行查詢(查詢個(gè)人基本信息和工資信 息.2.數(shù)據(jù)流需求分析:
數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù)需求分析——數(shù)據(jù)流圖 四.物理結(jié)構(gòu)設(shè)計(jì) 1.系統(tǒng)模塊劃分
五.數(shù)據(jù)字典 2.1表字典
2.2表字段字典
六.數(shù)據(jù)庫(kù)設(shè)計(jì) 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員工工資表 :
七.功能實(shí)現(xiàn)截圖 1.登錄界面
2.管理員部分 :(1管理員登陸界面
(2管理員功能選擇界面
(3.錄入員工基本信息界面(4錄入員工工資信息
(5.修改功能選擇界面
A.修改員工基本信息
B.修改工資信息
(6.管理員查詢界面 A.查詢功能選擇界面
B.查詢員工基本信息
C.查詢工資信息
(7.管理員查詢界面 A.功能選擇界面
B.管理員修改員工個(gè)人信息
C.管理員修改員工工資界面界面
(8.管理員刪除界面 A.功能選擇界面
B.刪除員工個(gè)人信息及工資信息界面
C.刪除員工工資信息界面
3.員工功能界面(1.員工登錄界面
(2.員工功能選擇界面
(3.員工查詢本人基本信息(4.員工查詢本人工資信息 4.測(cè)試分析 4.1 更改員工資料不可以更改身份。4.2 修改員工工資信息一旦失敗 就會(huì)把原有信息刪除。4.3 管理員固定,且只有一個(gè)。八.小結(jié) 該工資管理系統(tǒng)總體說(shuō)來(lái)功能比較齊全,管理
員和員工的一些基本的功能 都已經(jīng)具備; 數(shù)據(jù)庫(kù)的設(shè)計(jì)方面,建有員工表、工資表。數(shù)據(jù)庫(kù)中存在一些問(wèn)題,如數(shù)據(jù)冗余,不夠完善。但在做課程設(shè)計(jì)的過(guò)程中也遇到很多問(wèn)題,一開(kāi)始時(shí)其中最大的問(wèn)題是數(shù) 據(jù)庫(kù)的連接部分,該部分直接影響到數(shù)據(jù)庫(kù)與應(yīng)用程序接口實(shí)現(xiàn),而且必須注意 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)的名稱與連接數(shù)據(jù)庫(kù)的取名以致.后來(lái)經(jīng)過(guò)大家的合作努力解決了 這個(gè)問(wèn)題.在編寫程序時(shí),確實(shí)也遇到了很多困難,后來(lái)經(jīng)過(guò)調(diào)試后終于把自已想 到實(shí)現(xiàn)的功能一步步實(shí)現(xiàn)了,通過(guò)這次課程設(shè)計(jì)使我收獲了好多,熟悉了 C#的 運(yùn)用,還復(fù)習(xí)了數(shù)據(jù)庫(kù)相關(guān)語(yǔ)句的編寫。此次課程設(shè)計(jì)讓我感受頗多:做一個(gè)數(shù)據(jù)庫(kù)其實(shí)是一件很有趣的事情。想到
自己可以創(chuàng)建一個(gè)小型的數(shù)據(jù)庫(kù)系統(tǒng),有點(diǎn)學(xué)習(xí)后的滿足感。數(shù)據(jù)庫(kù)的建立并非 難事,難點(diǎn)在于數(shù)據(jù)庫(kù)的連接和編程語(yǔ)言的選擇。C#的功能很強(qiáng)大,這也是我以 后需要學(xué)習(xí)的課程,于是我毅然選擇了它。再就是建立數(shù)據(jù)庫(kù)系統(tǒng)的步驟,我的 經(jīng)驗(yàn)就是要先總體規(guī)劃,再局部整理。先做好總的界面,再通過(guò)該界面的布置一 步一步實(shí)現(xiàn)其功能!同時(shí)我體會(huì)到: 熟練的編程能力,對(duì)知識(shí)運(yùn)用的強(qiáng)烈渴望及其創(chuàng)新和團(tuán)隊(duì)的合作 精神設(shè)做好一個(gè)大型數(shù)據(jù)庫(kù)的基礎(chǔ)。因此通過(guò)此次課程設(shè)計(jì)我明顯感覺(jué)到自身的 不足,并希望以后能更加用心地運(yùn)用所學(xué)知識(shí)和學(xué)習(xí)新的知識(shí)。
第三篇:vb課程設(shè)計(jì) 職工工資管理系統(tǒng)代碼
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 “登陸成功,歡迎您進(jìn)入職工工資管理系統(tǒng)”, vbInformation, “登陸成功”
Else
errorCount = errorCount + 1
If errorCount < 3 Then
MsgBox “用戶名或密碼錯(cuò)誤(第” & errorCount & “次)!”, vbOKOnly + vbExclamation, “登陸失敗”
Text1.SetFocus
End If
If errorCount >= 3 Then
Text1.Enabled = False
Text2.Enabled = False
Command1.Enabled = False
MsgBox “三次輸入用戶名或密碼錯(cuò)誤,程序?qū)⒆詣?dòng)退出!”, 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(“請(qǐng)輸入要添加的姓名”, “添加員工-姓名錄入”)If Len(Trim(linShi.ygnamg))> 0 Then
linShi.jibengz = InputBox(“請(qǐng)輸入添加員工的基本工資”, “添加員工-基本工資錄入”)
If Len(Trim(linShi.jibengz))> 0 Then
linShi.jingtie = InputBox(“請(qǐng)輸入添加員工的津貼”, “添加員工-津貼錄入”)
If Len(Trim(linShi.jingtie))> 0 Then
linShi.gerensui = InputBox(“請(qǐng)輸入添加員工的個(gè)人所得稅”, “添加員工-個(gè)稅錄入”)
If Len(Trim(linShi.gerensui))> 0 Then
linShi.suidianfei = InputBox(“請(qǐng)輸入添加員工的水電費(fèi)”, “添加員工-水電費(fèi)錄入”)
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 & “水電費(fèi)” & 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課程設(shè)計(jì)工資管理系統(tǒng)概要(模版)
課程設(shè)計(jì)報(bào)告
課程設(shè)計(jì)題目: 工資管理系統(tǒng)
學(xué)生姓名 : 專 業(yè) :
班 級(jí) : 指導(dǎo)教師 :
2011年 12 月 17 日
姓名: 學(xué)號(hào): 實(shí)驗(yàn)時(shí)間:12月14日 實(shí)驗(yàn)地點(diǎn):
一、課程設(shè)計(jì)題目:
工資管理系統(tǒng)
二、課程設(shè)計(jì)目的:
本次課程設(shè)計(jì)的主要目的是綜合運(yùn)用所學(xué)的數(shù)據(jù)庫(kù)與VB知識(shí)解決一個(gè)比較實(shí)際的簡(jiǎn)單問(wèn)題,側(cè)重對(duì)數(shù)據(jù)庫(kù)連接、查詢等相關(guān)內(nèi)容的綜合應(yīng)用,使同學(xué)們能進(jìn)一步熟悉掌握數(shù)據(jù)庫(kù)的基本使用方法,進(jìn)一步提升自己的編程能力并逐步培養(yǎng)編程思維,進(jìn)而不斷提高同學(xué)們解決問(wèn)題的能力,并為以后的語(yǔ)言學(xué)習(xí)打下良好的基礎(chǔ)。
三、課程設(shè)計(jì)要求: 1.獨(dú)立完成;
2.此次課程設(shè)計(jì)在規(guī)定的時(shí)間必須在實(shí)驗(yàn)室完成,不得以任何理由在其他地點(diǎn)進(jìn)行;
3.每個(gè)人需按照選題規(guī)則確定好自己的題目(注意不是多人完成一題,每人獨(dú)立完成一題),不得以任何理由選擇其他的題目,當(dāng)然在完成自己的題目之后根據(jù)個(gè)人興趣可以繼續(xù)選做其他的題目;
4.課程設(shè)計(jì)完成后嚴(yán)格按照?qǐng)?bào)告格式撰寫課程設(shè)計(jì)報(bào)告,并于結(jié)束后的第三天上交到學(xué)習(xí)委員統(tǒng)一交給老師;
5.課程設(shè)計(jì)的成績(jī)由兩部分組成:程序檢查成績(jī)(40%,每個(gè)功能占程序分的20%)+報(bào)告檢查成績(jī)(40%)+平時(shí)考核(20%)
四、試驗(yàn)要求 員工基本信息的管理功能。單位員工變動(dòng)、獎(jiǎng)懲情況的管理功能。3 工資的計(jì)算、修改功能。4 查詢統(tǒng)計(jì)功能。5 報(bào)表打印功能。具有數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)功能。
五、試驗(yàn)過(guò)程
1.數(shù)據(jù)庫(kù)的設(shè)計(jì)
本系統(tǒng)的數(shù)據(jù)庫(kù)是SQL數(shù)據(jù)庫(kù),在SQL環(huán)境下創(chuàng)建數(shù)據(jù)庫(kù)工資.mdb文件。該數(shù)據(jù)庫(kù)包括員工信息表、工資標(biāo)準(zhǔn)表、其他工資標(biāo)準(zhǔn)表、用戶表用于紀(jì)錄員工的基本信息數(shù)據(jù)庫(kù)表結(jié)構(gòu)如下所示: 字段名 類型 varchar
大小 8
允許空 Not null 員工編號(hào)
姓名 varchar 10 Not null 性別 varchar 職務(wù) Varchar 出生年月 datetime 員工頭像 image
員工信息表
字段名 類型
員工編號(hào) varchar
月份 int 津貼 money 獎(jiǎng)金 Money 扣保險(xiǎn) Money 扣考勤 Money 扣其他 Money 其他工資標(biāo)準(zhǔn)表 Not null 8 Not null Not null
大小
允許空 8 NULL NULL NULL NULL NULL
字段名 類型
大小
職務(wù) varchar
基本工資 money 8
工資標(biāo)準(zhǔn)表
字段名 類型
大小
用戶名 char
口令 char 10
用戶表 2.主要內(nèi)容 登錄窗體
登錄窗體 設(shè)計(jì)代碼:
允許空
Not null
Not null
允許空
Not null
Not null
Option Explicit
Private Function Selectsql(SQL As String As ADODB.Recordset '返回ADODB.Recordset對(duì)象 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數(shù)據(jù)庫(kù)的語(yǔ)句 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 '釋放相關(guān)的系統(tǒng)資源
'MsgBox Err.Description, vbInformation, “系統(tǒng)提示” '顯示出錯(cuò)信息 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 ”請(qǐng)輸入口令!“, 16 Text1.SetFocus Exit Sub End If
If Combo1.Text = ”“ Then MsgBox ”請(qǐng)選擇登錄用戶!“, 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 '想要打開(kāi)的主窗體 MsgBox ”登錄成功!“, 64, ”提示“ Unload Me Else
MsgBox ”口令不對(duì),請(qǐng)重新輸入!“, 16, ”提示“ Text1.SetFocus End If End Sub
主控界面
主控界面
設(shè)計(jì)過(guò)程:
所有功能都在菜單中打開(kāi)來(lái)實(shí)現(xiàn),在最下面添加了工具欄,來(lái)顯示時(shí)間,操作員,狀態(tài)等信息。
設(shè)計(jì)代碼:
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 ”請(qǐng)先查詢,再點(diǎn)擊生成報(bào)表按鈕“, , ”提示窗口“ 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
成員管理 成員瀏覽
成員瀏覽 設(shè)計(jì)過(guò)程:
用控件可以實(shí)現(xiàn)檔案的瀏覽,在此窗體用戶可以瀏覽員工信息,此窗體與數(shù)據(jù)輪中的員工信息表進(jìn)行連接。
設(shè)計(jì)代碼:
Private Sub Command4_Click(Unload Me End Sub 成員管理
成員管理
設(shè)計(jì)過(guò)程:
用于檔案的登記,此窗體和檔案瀏覽窗體中的數(shù)據(jù)表進(jìn)行了連接,可以直接進(jìn)行添加,刪除,修改等。
設(shè)計(jì)代碼:
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 獎(jiǎng)懲信息:
員工獎(jiǎng)懲情況
設(shè)計(jì)過(guò)程:
用戶可以查找各月份的扣除以及獎(jiǎng)勵(lì)狀況。
設(shè)計(jì)代碼:
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 其他工資標(biāo)準(zhǔn) where 月份='“ & Text1 & ”'“ Adodc1.Refresh DataGrid1.Refresh End Sub
工資查詢:
工資查詢
設(shè)計(jì)過(guò)程:
通過(guò)在姓名欄和月份欄輸入信息,可以快速查找所需查詢?nèi)说墓べY情況;并將查詢結(jié)果生成execl表,方便用戶打印及攜帶。
設(shè)計(jì)代碼:
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“ '創(chuàng)建excel應(yīng)用程序,打開(kāi)excel Set newbook = newxls.Workbooks.Add '創(chuàng)建工作簿 Set newsheet = newbook.Worksheets(1 '創(chuàng)建工作表 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(”請(qǐng)輸入文件名稱“, ”輸入窗口“ If Len(mystr = 0 Then MsgBox ”系統(tǒng)不允許文件名稱為空!“, , ”提示窗口“ 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.員工編號(hào),姓名,月份,基本工資,津貼+獎(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 a.職務(wù)=b.職務(wù) and a.員工編號(hào)=c.員工編號(hào) and 姓名 like '“ & Text2 & ”%'and c.月份='“ & Text1 & ”' “ Adodc1.Refresh DataGrid1.Refresh End Sub Private Sub Text2_Change(Adodc1.RecordSource = ”select a.員工編號(hào),姓名,月份,基本工資,津貼+獎(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 a.職務(wù)=b.職務(wù) and a.員工編號(hào)=c.員工編號(hào) and 姓名 like '“ & Text2 & ”%' and c.月份='“ & Text1 & ”'“ Adodc1.Refresh DataGrid1.Refresh End Sub 數(shù)據(jù)備份及恢復(fù):
數(shù)據(jù)備份及恢復(fù) 設(shè)計(jì)過(guò)程:
用戶可以將數(shù)據(jù)庫(kù)進(jìn)行完全備份和差異備份,并且在操作不當(dāng)時(shí)可以進(jìn)行恢復(fù)。
設(shè)計(jì)代碼:
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 ”數(shù)據(jù)完全備份已經(jīng)完成“, 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 ”數(shù)據(jù)差異備份已經(jīng)完成“, vbOKOnly + vbInformation, ”提醒“ End Sub Private Sub Command3_Click(Cn.Execute ”restore database 工資 from disk='d:工資完全備份.bak' with FILE=1“ MsgBox ”數(shù)據(jù)恢復(fù)已經(jīng)完成“, vbOKOnly + vbInformation, ”提醒“ End Sub Private Sub Command4_Click(Cn.Execute ”restore database 工資 from disk='d:工資差異備份.bak' with FILE=1“ MsgBox ”數(shù)據(jù)恢復(fù)已經(jīng)完成“, 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 ”網(wǎng)絡(luò)不通或服務(wù)器未開(kāi),請(qǐng)確認(rèn)后再試“, vbOKOnly + vbInformation, ”提醒" Unload Me
Exit Sub Exit For End If Next i End If End Sub
3、設(shè)計(jì)體會(huì)
在數(shù)據(jù)庫(kù)課程開(kāi)課之前我就下決心要學(xué)好這一門課,因?yàn)檫@是我的專業(yè)課,我一開(kāi)始就謹(jǐn)慎小心,爭(zhēng)取每一個(gè)細(xì)節(jié)都做得很好?,F(xiàn)在終于是完成了,我的設(shè)計(jì)體會(huì)如下:
小心謹(jǐn)慎是關(guān)鍵,因?yàn)樽龀绦蜿P(guān)鍵就是寫代碼,每一個(gè)字母都要很小心輸入,若是不小心錯(cuò)了一個(gè),就會(huì)帶來(lái)龐大的“查錯(cuò)工程”,不過(guò)從我檢查錯(cuò)誤當(dāng)中也學(xué)會(huì)了一些檢查的方法,比如設(shè)置中斷點(diǎn),可以觀查每一個(gè)變量的當(dāng)前值,很有效的。
小心是一個(gè)方面,另一個(gè)是怎么樣讓程序最人性化,并且保持較簡(jiǎn)潔的程序代碼,通俗說(shuō)就是事半功倍。有很多時(shí)間我是花在了調(diào)試程序方面,一部分是在找錯(cuò)誤,還有就是怎么用最簡(jiǎn)練的代碼實(shí)現(xiàn)當(dāng)前的作用。其中絕大多數(shù)都是自己寫的代碼,只有在自己不會(huì)的時(shí)候才借鑒了指導(dǎo)老師發(fā)下來(lái)的那個(gè)示例作品的代碼。
我的程序大多數(shù)是我自己寫的,但是自己的知識(shí)和水平都十分有限,所以會(huì)經(jīng)常去查看書或者在網(wǎng)上尋找資料,通過(guò)看書、看資料,我改進(jìn)了自己的不足,也學(xué)會(huì)的很多新的作程序方法,都是十分有用的。
在一個(gè)體會(huì)就是做程序要有對(duì)全局和面的分析能力,老師告訴我好多設(shè)計(jì)中不曾想到的東西,比如數(shù)據(jù)表建立的不完美,用戶權(quán)限應(yīng)該分開(kāi)等。做什么事都是一樣的,具體體現(xiàn)在了這次的數(shù)據(jù)庫(kù)課程設(shè)計(jì)上來(lái),讓我學(xué)到了很多東西。就像要完成一個(gè)很大的工作,要先從小的部分做起,不能急于求成,細(xì)心謹(jǐn)慎才是關(guān)鍵,堅(jiān)持不懈,最后再把這些小的窗體在連接起來(lái),就構(gòu)成了一個(gè)整體。
只有實(shí)踐真正動(dòng)手做了才會(huì)真正了解,在不斷的學(xué)習(xí)和實(shí)踐中體會(huì)到更多的經(jīng)驗(yàn)。
第五篇:軟件工程 課程設(shè)計(jì) 銷售管理系統(tǒng)
銷售管理系統(tǒng)一.項(xiàng)目簡(jiǎn)介
隨著計(jì)算機(jī)技術(shù)的迅猛發(fā)展,存在于網(wǎng)絡(luò)的企業(yè)銷售管理系統(tǒng)將逐步代替?zhèn)鹘y(tǒng)的管理模式進(jìn)入企業(yè)。為了更高效得完成銷售方面的工作,也可以有更多的時(shí)間處理更多的別的事務(wù),企業(yè)也將擺脫原有的管理形勢(shì)完全進(jìn)入信息化管理。銷售管理系統(tǒng)在企業(yè)的管理過(guò)程中起著巨大的作用
二.功能需求
一個(gè)銷售管理系統(tǒng),設(shè)計(jì)者的目標(biāo)是滿足公司運(yùn)營(yíng)和日常管理的需要,具有對(duì)產(chǎn)品,客戶管理的功能。客戶登錄銷售管理系統(tǒng)進(jìn)行售后服務(wù)查詢,銷售員可以對(duì)銷售的產(chǎn)品進(jìn)行登記,并將銷售情況反饋給數(shù)據(jù)庫(kù)。為管理的方便性和信息傳遞的快速性提供了一個(gè)很好的平臺(tái)。系統(tǒng)開(kāi)發(fā)的總體任務(wù)是實(shí)現(xiàn)售后服務(wù)及銷售登記自動(dòng)化??傊?,銷售管理系統(tǒng)要實(shí)現(xiàn)登陸驗(yàn)證、商品銷售管理、商品銷售報(bào)表管理、客戶信息管理四大部分。1.客戶對(duì)功能的需求
1>查看自己的信息,了解自己近期的購(gòu)買情況。2>查看產(chǎn)品的信息,熟悉產(chǎn)品情況。2>查看售后服務(wù)信息。
2.銷售人員對(duì)功能的需求
1>查看自己的信息,了解自己近期的銷售情況。2>查看產(chǎn)品的信息,熟悉產(chǎn)品情況。3>登記銷售產(chǎn)品。
4>添加新產(chǎn)品,并填寫產(chǎn)品相關(guān)信息。
3.售后服務(wù)人員對(duì)功能的需求
1>查看售后服務(wù)信息。2>添加售后服務(wù)信息。
三.分析模型時(shí)序圖
銷售管理系統(tǒng)頂層圖
1.客戶管理
第三層DFD圖 客戶管理子系統(tǒng)
2.銷售管理
第三層DFD圖 銷售管理子系統(tǒng)
3.售后服務(wù)管理
第三層DFD圖 售后服務(wù)管理子系統(tǒng)
4.客戶登錄動(dòng)態(tài)時(shí)序圖為
四.模塊活動(dòng)圖,登錄流程圖
1.注冊(cè)、登陸模塊
1>模塊功能描述
該模塊主要實(shí)現(xiàn)對(duì)用戶能否進(jìn)入系統(tǒng)的確認(rèn)以及對(duì)進(jìn)入系統(tǒng)的用戶權(quán)限的設(shè)定;因?yàn)楸鞠到y(tǒng)涉及到三類使用者,不可能每一類用戶都具有相同的操作權(quán)限,如前所說(shuō),必然會(huì)早成系統(tǒng)的混亂和崩潰,嚴(yán)重影響其安全性和有效性。所以采取在通常的注冊(cè),登錄模式下加上用戶類型的選擇,非常簡(jiǎn)潔地就完成了對(duì)用戶類型的區(qū)別及權(quán)限的劃分。2>在模塊的詳細(xì)設(shè)計(jì)后,便能得出實(shí)現(xiàn)該部分的具體流程,如圖
用戶注冊(cè)模塊程序流程圖
登錄模塊程序流程圖
活動(dòng)圖為:
2.客戶管理模塊
1>模塊功能描述
顯示客戶的基本信息。庫(kù)戶可以查看自己的等級(jí)和交易次數(shù)。
2>在模塊的詳細(xì)設(shè)計(jì)后,便能得出實(shí)現(xiàn)該部分的具體流程,如圖3-8。
客戶管理模塊流程圖
活動(dòng)圖為:
3.銷售管理模塊 >模塊功能描述
在這個(gè)模塊可以登記銷售記錄。并且在提交記錄時(shí),更新數(shù)據(jù)庫(kù):
(1)更新客戶信息。如果是“老客戶”系統(tǒng)會(huì)按照客戶等級(jí)給出對(duì)應(yīng)的優(yōu)惠價(jià)。(2)更新產(chǎn)品信息。主要是更新該產(chǎn)品數(shù)量。
2>在模塊的詳細(xì)設(shè)計(jì)后,便能得出實(shí)現(xiàn)該部分的具體流程,如圖
銷售管理模塊流程圖
活動(dòng)圖為
五.數(shù)據(jù)庫(kù)設(shè)計(jì)
1.客戶信息表
字段khidkhnamegyshjchzhgzhugteladrkhtelfaxbzh數(shù)據(jù)類型IntVarCharVarCharVarCharnCharVarCharncharVarChartext是否是主鍵是否否否否否否否否是否為空否否否是是是否是是說(shuō)明客戶編號(hào)客戶名稱客戶簡(jiǎn)稱采購(gòu)主管采購(gòu)主管聯(lián)系方式客戶地址客戶電話傳真?zhèn)渥?/p>
2.商品進(jìn)貨表
字段數(shù)據(jù)類型intVarCharCharCharCharnumericnumericint是否是主鍵是否否否否否否否是否為空說(shuō)明進(jìn)貨編號(hào)商品名稱商品名稱首拼大單位小單位進(jìn)貨成本jhbhshpmchshpshpddwxdwjhchbxshjgjhshulgyshjhrqbzh否否否否是否否否銷售價(jià)格進(jìn)貨數(shù)量供應(yīng)商進(jìn)貨日期備注VarCharsmalldatetimeVarChar否否否是否是 3.商品銷售表
字段xshbhshpmchshpshpxshjgxshshlxshryxshrqkhbzh數(shù)據(jù)類型IntVarCharVarCharNumericIntVarCharSmalldatetimeVarChartext是否是主鍵是否否否否否否否否是否為空否否否是是是否是是說(shuō)明銷售編號(hào)商品名稱商品名稱首拼銷售價(jià)格銷售數(shù)量銷售人員銷售日期客戶簡(jiǎn)稱備注
六.運(yùn)行界面與代碼
1.登陸窗口
Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Private Sub CmdOk_Click()If UserName.Text <> “" And PassWord.Text <> ”“ Then Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ rs.Open ”select * from usermanage where username='“ & UserName.Text & ”'“, conn, 1, 1 If Not rs.EOF Then If rs(”password“)= PassWord.Text Then Main.Show Unload Me Else MsgBox ”非法登錄,密碼錯(cuò)誤!“, vbOKOnly, ”警告“ End If Else MsgBox ”非法登錄,找不到該用戶!“, vbOKOnly, ”警告“ End If Else MsgBox ”用戶名或密碼不能為空!“, vbOKOnly, ”提示“ End If End Sub
Private Sub PassWord_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then Call CmdOk_Click End If End Sub
Private Sub UserName_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then Call CmdOk_Click End If End Sub
`2.主界面
Private Sub Cmd_Click(Index As Integer)Select Case Index Case 0 GoodsIn.Show Me.Enabled = False Case 1 Saler.Show Me.Enabled = False Case 2 SaleData.Show Me.Enabled = False Case 3 SaleTotal.Show Me.Enabled = False Case 4 UserM.Show Me.Enabled = False End Select End Sub
`進(jìn)貨管理
Private Sub Cmd_Click(Index As Integer)Select Case Index Case 0 '第一條
Adodc1.Recordset.MoveFirst
Case 1 '上一條
If Not Adodc1.Recordset.BOF Then Adodc1.Recordset.MovePrevious End If
Case 2 '下一條
If Not Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveNext End If
Case 3 '最尾條
Adodc1.Recordset.MoveLast
Case 4 '添加
Adodc1.Recordset.AddNew For i = 0 To 7 GoodText(i).Enabled = True Next Cmd(6).Enabled = True
Case 5 '修改 For i = 0 To 7 GoodText(i).Enabled = True Next Cmd(6).Enabled = True
Case 6 '保存 Adodc1.Recordset.Update For i = 0 To 7 GoodText(i).Enabled = False Next MsgBox ”更新記錄成功!“, vbOKOnly, ”提示“ Cmd(6).Enabled = False
Case 6 '刪除
If MsgBox(”確定刪除當(dāng)前記錄,數(shù)據(jù)將不可恢復(fù)?“, vbOKCancel, ”提示“)= vbOK Then Adodc1.Recordset.Delete End If End Select End Sub
Private Sub Form_Load()Adodc1.ConnectionString = ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ Adodc1.RecordSource = ”select * from save“ For i = 0 To 6 Set GoodText(i).DataSource = Adodc1 GoodText(i).DataField = Adodc1.Recordset.Fields(i).Name Next Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1 End Sub
Private Sub Form_Unload(Cancel As Integer)Main.Enabled = True End Sub
`銷售管理
Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Public id As String Public action As String Private Sub Cmd_Click(Index As Integer)Select Case Index Case 0 '第一條
If Not Adodc1.Recordset.BOF Then Adodc1.Recordset.MoveFirst End If
Case 1 '上一條
If Not Adodc1.Recordset.BOF Then Adodc1.Recordset.MovePrevious End If
Case 2 '下一條
If Not Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveNext End If
Case 3 '最尾條
If Not Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast End If
Case 4 '添加 action = ”add“ ManageSale.Show Me.Enabled = False
Case 5 '修改 action = ”modify“ id = Adodc1.Recordset.Fields(”id“)ManageSale.Show Me.Enabled = False
Case 7 '刪除
If MsgBox(”確定刪除當(dāng)前記錄,數(shù)據(jù)將不可恢復(fù)?“, vbOKCancel, ”提示“)= vbOK Then Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ rs.Open ”select goodcount from save where goodnum='“ & GoodText(0).Text & ”'“, conn, 1, 3 rs(”goodcount“)= rs(”goodcount“)+ GoodText(5).Text rs.Update rs.Close Adodc1.Recordset.Delete End If End Select End Sub
Private Sub Form_Load()Adodc1.ConnectionString = ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ Adodc1.RecordSource = ”select * from sale order by id“ For i = 0 To 6 Set GoodText(i).DataSource = Adodc1 GoodText(i).DataField = Adodc1.Recordset.Fields(i + 1).Name Next Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 End Sub
Private Sub Form_Unload(Cancel As Integer)Main.Enabled = True End Sub
添加修改銷售記錄
Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Public salecount As Long
Private Sub Combo1_Change()End Sub
Private Sub Cmd_Click(Index As Integer)Select Case Index Case 0 Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ If GoodText(0)= ”“ Or GoodText(3)= ”“ Or GoodText(4)= ”“ Then MsgBox ”數(shù)據(jù)沒(méi)有輸入完整,請(qǐng)重新輸入!“, vbOKOnly, ”提示“ Exit Sub End If
If SaleData.action = ”add“ Then rs.Open ”select * from sale“, conn, 1, 3 rs.AddNew Else rs.Open ”select * from sale where id=“ & SaleData.id, conn, 1, 3 End If rs(”Goodnum“)= GNum.Text rs(”goodname“)= GoodText(1).Text rs(”danwei“)= GoodText(2).Text rs(”outdate“)= GoodText(3).Text rs(”danjia“)= GoodText(4).Text rs(”outcount“)= GoodText(0).Text rs(”salename“)= SaleName.Text rs.Update rs.Close
rs.Open ”select * from save where goodnum='“ & GNum.Text & ”'“, conn, 1, 3 '在庫(kù)存表中將庫(kù)存數(shù)量減去已售出的數(shù)量 If SaleData.action = ”add“ Then rs(”goodcount“)= rs(”goodcount“)(GoodText(0).Text-salecount)End If rs.Update rs.Close MsgBox ”數(shù)據(jù)更新成功!“, vbOKOnly, ”提示“ SaleData.Adodc1.Refresh Unload Me Case 1 Unload Me
End Select End Sub
Private Sub Form_Load()Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ Dim saleman As String
If SaleData.action = ”add“ Then rs.Open ”select goodnum from save order by goodnum“, conn, 1, 1 Do While Not rs.EOF GNum.AddItem rs(0)rs.MoveNext Loop GNum.Text = GNum.List(0)Else rs.Open ”select * from sale where id=“ & SaleData.id, conn, 1, 1 GNum.AddItem rs(”goodnum“)GoodText(1).Text = rs(”goodname“)GoodText(2).Text = rs(”danwei“)GoodText(3).Text = rs(”outdate“)GoodText(4).Text = rs(”danjia“)GoodText(0).Text = rs(”outcount“)saleman = rs(”salename“)GNum.Text = GNum.List(0)GNum.Enabled = False rs.Close rs.Open ”select * from save where goodnum='“ & GNum.Text & ”'“, conn, 1, 1 SaleNum.Max = GoodText(0).Text + rs(”goodcount“)salecount = GoodText(0).Text End If rs.Close rs.Open ”select salename from saler order by id“, conn, 1, 1 Do While Not rs.EOF SaleName.AddItem rs(0)rs.MoveNext Loop If SaleData.action = ”add“ Then SaleName.Text = SaleName.List(0)Else SaleName.Text = saleman Cmd(0).Caption = ”保存修改“ End If rs.Close End Sub
Private Sub Form_Unload(Cancel As Integer)SaleData.Enabled = True End Sub
Private Sub GNum_Click()Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ rs.Open ”select * from save where goodnum='“ & GNum.Text & ”'“, conn, 1, 1 If Not rs.EOF Then GoodText(1).Text = rs(”goodname“)GoodText(2).Text = rs(”danwei“)SaleNum.Max = rs(”goodcount")End If End Sub