小型人員信息管理系統(tǒng)_第1頁(yè)
小型人員信息管理系統(tǒng)_第2頁(yè)
小型人員信息管理系統(tǒng)_第3頁(yè)
小型人員信息管理系統(tǒng)_第4頁(yè)
小型人員信息管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

35/40成績(jī)?cè)u(píng)定表學(xué)生姓名初珊珊班級(jí)學(xué)號(hào)1203060111專(zhuān)業(yè)通信工程課程設(shè)計(jì)題目小型人員信息治理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)評(píng)語(yǔ)組長(zhǎng)簽字:成績(jī)?nèi)掌?0年月日課程設(shè)計(jì)任務(wù)書(shū)學(xué)院信息科學(xué)與工程專(zhuān)業(yè)通信工程學(xué)生姓名初珊珊班級(jí)學(xué)號(hào)1203060111課程設(shè)計(jì)題目小型人員信息治理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)實(shí)踐教學(xué)要求與任務(wù)某小型公司要緊有四類(lèi)人員:經(jīng)理、兼職技術(shù)人員、銷(xiāo)售經(jīng)理和兼職推銷(xiāo)員?,F(xiàn)在,需要存儲(chǔ)這些人員的姓名、編號(hào)、級(jí)不、當(dāng)月薪水,計(jì)算月薪總額并顯示全部信息。人員編號(hào)基數(shù)為1000,每輸入一個(gè)人員信息編號(hào)順序加1。程序要有對(duì)所有人員提升級(jí)不的功能。本例中為簡(jiǎn)單起見(jiàn),所有人員的初始級(jí)不均為1級(jí),然后進(jìn)行升級(jí),經(jīng)理升為4級(jí),兼職技術(shù)人員和銷(xiāo)售經(jīng)理升為3級(jí),推銷(xiāo)員認(rèn)為1級(jí)。月薪計(jì)算方法是:經(jīng)理拿固定月薪8000元;兼職技術(shù)人員按每小時(shí)100元領(lǐng)取月薪;兼職推銷(xiāo)員的月薪按該推銷(xiāo)員當(dāng)月銷(xiāo)售額的4%提成;銷(xiāo)售經(jīng)理即拿固定月薪也領(lǐng)取銷(xiāo)售提成,固定月薪為5000元,銷(xiāo)售提成為所管轄部門(mén)當(dāng)月銷(xiāo)售總額的千分之五。要求為每一類(lèi)人員單獨(dú)建立文件,并在每個(gè)文件中手工錄入一些人員差不多信息,并依照這些差不多信息計(jì)算職工的月薪,并將計(jì)算結(jié)果保存入相應(yīng)的磁盤(pán)文件中。要求編寫(xiě)程序?qū)崿F(xiàn)上述功能,同時(shí)能夠通過(guò)實(shí)例演示上述功能。工作打算與進(jìn)度安排第17周:分析題目,查閱課題相關(guān)資料,進(jìn)行類(lèi)設(shè)計(jì)、算法設(shè)計(jì);第18周:程序的設(shè)計(jì)、調(diào)試與實(shí)現(xiàn);第19周:程序測(cè)試與分析,撰寫(xiě)課程設(shè)計(jì)報(bào)告,進(jìn)行答辯驗(yàn)收。指導(dǎo)教師:201年月日專(zhuān)業(yè)負(fù)責(zé)人:201年月日學(xué)院教學(xué)副院長(zhǎng):201年月日摘要C++是支持面向過(guò)程的設(shè)計(jì),更是支持基于對(duì)象和面向?qū)ο蟮某绦蛟O(shè)計(jì)。類(lèi)是C++中十分重要的概念,它是實(shí)現(xiàn)面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)。本文采納虛基類(lèi)及其派生類(lèi)實(shí)現(xiàn)了對(duì)小型人員信息的治理,類(lèi)的封裝性和信息隱蔽性能夠?qū)iT(mén)好的愛(ài)護(hù)公司職員的信息,同時(shí)采納了VisualC++6.0的操縱臺(tái)工程和MFC工程實(shí)現(xiàn)了對(duì)職員差不多信息的輸入和全部信息的輸出及保存。關(guān)鍵詞:信息治理;類(lèi);操縱臺(tái)工程;MFC工程

目錄1需求分析 12算法差不多原理 13類(lèi)設(shè)計(jì) 24基于操縱臺(tái)的應(yīng)用程序 34.1類(lèi)的接口設(shè)計(jì) 44.2類(lèi)的實(shí)現(xiàn) 74.3主函數(shù)設(shè)計(jì) 114.4基于操縱臺(tái)的應(yīng)用程序測(cè)試 125基于MFC的應(yīng)用程序 145.1基于MFC的應(yīng)用程序設(shè)計(jì) 155.1.1MFC程序界面設(shè)計(jì) 155.1.2MFC程序代碼設(shè)計(jì) 165.2基于MFC的應(yīng)用程序測(cè)試 21結(jié)論 23參考文獻(xiàn) 241需求分析(1)對(duì)小型公司進(jìn)行小型人員信息操作治理系統(tǒng)。該公司要緊有四類(lèi)人員:經(jīng)理、銷(xiāo)售經(jīng)理、兼職技術(shù)人員、兼職推銷(xiāo)員;定義一個(gè)虛基類(lèi)同時(shí)派生四個(gè)子類(lèi)。(2)系統(tǒng)需要存儲(chǔ)這些人員的姓名、編號(hào)、級(jí)不、當(dāng)月薪水,輸入差不多信息,計(jì)算月薪總額,顯示并保存全部信息;每個(gè)派生類(lèi)的構(gòu)造函數(shù)要實(shí)現(xiàn)對(duì)其特有數(shù)據(jù)成員的初始化。(3)系統(tǒng)具體要求:①編號(hào)要求:人員編號(hào)基數(shù)為1000,每輸入一個(gè)職員姓名編號(hào)加1;編號(hào)定義為全局靜態(tài)變量即可。②級(jí)不要求:所有人員的初始級(jí)不均為1級(jí),然后進(jìn)行升級(jí),經(jīng)理升為4級(jí),兼職技術(shù)人員和銷(xiāo)售經(jīng)理升為3級(jí),兼職推銷(xiāo)員為1級(jí);直接對(duì)級(jí)不賦值即可。③月薪要求:經(jīng)理拿固定月薪8000元;兼職技術(shù)人員按每小時(shí)100元領(lǐng)取月薪;兼職推銷(xiāo)員的月薪按該推銷(xiāo)員當(dāng)月銷(xiāo)售額的4%提成;銷(xiāo)售經(jīng)理既拿固定月薪也領(lǐng)取銷(xiāo)售提成,固定月薪為5000元,銷(xiāo)售提成為所管轄部門(mén)當(dāng)月銷(xiāo)售總額的千分之五。④總體要求:為每一類(lèi)人員單獨(dú)建立文件,并在每個(gè)文件中手工錄入一些人員差不多信息,并依照這些差不多信息計(jì)算職工的月薪,并將計(jì)算結(jié)果保存入相應(yīng)的磁盤(pán)文件中。2算法差不多原理(1)定義一個(gè)職員虛基類(lèi)Employmee(),包括職員姓名、級(jí)不、編號(hào)月薪共有的差不多數(shù)據(jù)成員;(2)在基類(lèi)的基礎(chǔ)上派生出經(jīng)理Mansger()類(lèi)、銷(xiāo)售經(jīng)理Salemansger()類(lèi)、兼職技術(shù)人員Technology()類(lèi)和兼職推銷(xiāo)員Saleman()類(lèi),并在這四個(gè)派生類(lèi)中添加各自數(shù)據(jù)成員和成員函數(shù)。具體分析如下:①職員編號(hào)的能夠定義全局靜態(tài)變量staticintcount=0;同時(shí)初始化職員編號(hào)number=1000+count;每輸入一個(gè)職員的姓名編號(hào)加1。②職員等級(jí)按照要求直接賦值即可;③在派生類(lèi)的構(gòu)造函數(shù)中初始化數(shù)據(jù)成員同時(shí)按照要求計(jì)算各成員的月薪。(3)定義一個(gè)結(jié)構(gòu)體鏈表structLinked,并將鏈表的頭指針頭封裝在友元類(lèi)Head()中。(4)運(yùn)行時(shí)構(gòu)造對(duì)象指針,并存在鏈表中,利用類(lèi)中的成員函數(shù)來(lái)實(shí)現(xiàn)對(duì)鏈表節(jié)點(diǎn)的打印、添加、保存。這些操作均作為數(shù)據(jù)結(jié)構(gòu)中對(duì)單鏈表的操作。3類(lèi)設(shè)計(jì)首先定義一個(gè)職員基類(lèi)Employee,由于要派生出多個(gè)子類(lèi),因此將其定義為虛基類(lèi);在類(lèi)外定義全局靜態(tài)變量,用于記錄職員的編號(hào)。虛基類(lèi)Employee中的數(shù)據(jù)成員包括姓名、編號(hào)、等級(jí)、月薪。虛基類(lèi)的成員函數(shù)包括打印函數(shù)printf(),并聲明友元類(lèi)。然后派生出經(jīng)理Mansger類(lèi)、銷(xiāo)售經(jīng)理Salemansger類(lèi)、兼職技術(shù)人員Technology類(lèi)和兼職推銷(xiāo)員Saleman類(lèi)。在派生類(lèi)Mansger的構(gòu)造函數(shù)直接對(duì)月薪和等級(jí)賦值:月薪8000,等級(jí)4;在派生類(lèi)Salemansger的構(gòu)造函數(shù)中定義特有的數(shù)據(jù)成員:銷(xiāo)售總額sum1,并依照要求計(jì)算月薪,等級(jí)賦值3;在派生類(lèi)Technology的構(gòu)造函數(shù)中定義特有的數(shù)據(jù)成員:工作時(shí)刻time,并依照要求計(jì)算月薪,等級(jí)賦值3;在派生類(lèi)Saleman的構(gòu)造函數(shù)中定義特有的數(shù)據(jù)成員:銷(xiāo)售額sum2,并依照要求計(jì)算月薪,等級(jí)賦值1。派生類(lèi)的功能有打印函數(shù)printf(),儲(chǔ)存函數(shù)save()。友元類(lèi)Head存放的數(shù)據(jù)成員有Linkedtop,功能有構(gòu)造函數(shù)Head()、插入函數(shù)Insert()、打印函數(shù)printf()以及析構(gòu)函數(shù)~Head();其中功能構(gòu)造函數(shù)用來(lái)開(kāi)發(fā)儲(chǔ)存空間,插入函數(shù)采納單鏈表現(xiàn)實(shí)信息的輸入,打印函數(shù)用來(lái)輸出錄入職員的全部信息,析構(gòu)函數(shù)用來(lái)釋放空間?;?lèi)與各派生類(lèi)之間的關(guān)系如下圖所示: charname[30]; charname[30]; intnumber; intlevel; floatwages;Employee()voidprintf()friendclassHeadvoidsave()voidprintf()friendclassHeadintsum1Salemansger():Employee()voidsave()Technology():Employee()floattimevoidprintf()friendclassHeadvoidsave()intsum2Saleman():Employee()voidprintf()friendclassHeadvoidsave()Mansger():Employee()圖1Employee類(lèi)和其派生類(lèi)關(guān)系的圖形表示在程序?qū)崿F(xiàn)過(guò)程中,各派生類(lèi)的成員函數(shù)需要訪(fǎng)問(wèn)基類(lèi)Employee的數(shù)據(jù)成員,利用公有繼承方式派生,同時(shí)將Employee類(lèi)中的數(shù)據(jù)成員的訪(fǎng)問(wèn)操縱設(shè)置為愛(ài)護(hù)類(lèi)型。如此,通過(guò)公有派生之后,基類(lèi)的愛(ài)護(hù)成員在派生類(lèi)中依舊是愛(ài)護(hù)成員,能夠被派生類(lèi)的成員函數(shù)訪(fǎng)問(wèn)。4基于操縱臺(tái)的應(yīng)用程序整個(gè)程序分為三部分,各種職員的類(lèi),結(jié)構(gòu)體鏈表以及封裝在結(jié)構(gòu)體鏈表的類(lèi)。實(shí)現(xiàn)時(shí)先生成各種職員的對(duì)象指針,之后將生成的對(duì)象指針插入到鏈表中,最后通過(guò)封裝類(lèi)類(lèi)的成員函數(shù)對(duì)鏈表節(jié)點(diǎn)進(jìn)行操作,實(shí)現(xiàn)對(duì)職員的操作。4.1類(lèi)的接口設(shè)計(jì)#include<iostream>#include<string.h>#include<fstream>usingnamespacestd;staticintcount=0;//全局動(dòng)態(tài)變量,用于記錄職員編號(hào)//定義虛基類(lèi)classEmployee{public:Employee()//構(gòu)造函數(shù),初始化職員差不多信息 {cout<<"請(qǐng)輸入職員姓名:"; cin>>name; ++count; number=count+1000; level=1; } voidprintf();//打印函數(shù) friendclassHead;//聲明友元類(lèi)protected://數(shù)據(jù)成員為愛(ài)護(hù)類(lèi)型 charname[30]; intnumber; intlevel; floatwages;};//派生類(lèi)MansgerclassMansger:publicvirtualEmployee{public:Mansger():Employee(){level=4;wages=8000;}//構(gòu)造函數(shù)定義 voidsave();//儲(chǔ)存函數(shù) voidprintf();//打印函數(shù) friendclassHead;//聲明友元類(lèi)};//派生類(lèi)SalemansgerclassSalemansger:publicvirtualEmployee{public:Salemansger():Employee()//構(gòu)造函數(shù)定義 {level=3; cout<<"輸入月部門(mén)銷(xiāo)售總額:"; cin>>sum1; wages=5000+0.005*sum1;//計(jì)算銷(xiāo)售經(jīng)理工資 }voidsave();//儲(chǔ)存函數(shù) voidprintf();//打印函數(shù) friendclassHead;protected: intsum1;//銷(xiāo)售總額};//派生類(lèi)TechnologyclassTechnology:publicvirtualEmployee{public:Technology():Employee()//構(gòu)造函數(shù)定義 {level=3; cout<<"輸入該技術(shù)人員的工作時(shí)刻:"; cin>>time; wages=100*time;//計(jì)算技術(shù)人職員資 } voidsave();//儲(chǔ)存函數(shù) voidprintf();//打印函數(shù) friendclassHead;protected: floattime;//工作時(shí)刻};//派生類(lèi)SalemanclassSaleman:publicvirtualEmployee/{public:Saleman():Employee()//構(gòu)造函數(shù)定義 {level=1; cout<<"輸入部門(mén)月銷(xiāo)售總額:"; cin>>sum2; wages=0.04*sum2;//計(jì)算銷(xiāo)售職員資 }voidsave();//儲(chǔ)存函數(shù) voidprintf(); friendclassHead;protected: intsum2;//銷(xiāo)售總額};//定義友元類(lèi)classHead{public:Head();//構(gòu)造函數(shù) voidInsert(Employee*temp);//單鏈表的插入函數(shù) voidprintf();//打印函數(shù) ~Head();//析構(gòu)函數(shù)private: Linked*top;//單鏈表的頭結(jié)點(diǎn)};通過(guò)公有派生,四個(gè)派生類(lèi)獲得了除構(gòu)造函數(shù)之外的Employee類(lèi)的全部成員,由于基類(lèi)的成員是公有和愛(ài)護(hù)類(lèi)型,因此在派生類(lèi)中的成員函數(shù)中,基類(lèi)繼承來(lái)的成員全部能夠訪(fǎng)問(wèn),而關(guān)于建立派生類(lèi)對(duì)象的外部模塊來(lái)講,基類(lèi)的愛(ài)護(hù)成員是無(wú)法訪(fǎng)問(wèn)的。通過(guò)愛(ài)護(hù)訪(fǎng)問(wèn)類(lèi)型和公有的繼承方式,實(shí)現(xiàn)了基類(lèi)Employee的數(shù)據(jù)的有效共享和可靠愛(ài)護(hù)。友元類(lèi)能夠?qū)崿F(xiàn)外部函數(shù)對(duì)類(lèi)中數(shù)據(jù)成員的調(diào)用,在程序中,職員的差不多信息的輸入,全部信息的保存差不多上在基類(lèi)、派生類(lèi)的構(gòu)造函數(shù)以及友元類(lèi)的成員函數(shù)中完成,它們的清理工作在友元類(lèi)析構(gòu)函數(shù)中完成。4.2類(lèi)的實(shí)現(xiàn)//基類(lèi)輸出函數(shù)voidEmployee::printf(){cout<<"姓名:"<<name<<""<<"編號(hào):"<<number<<""<<"等級(jí):"<<level<<""<<"月薪:"<<wages<<endl;}//派生類(lèi)Mansger輸出函數(shù)voidMansger::printf(){cout<<"姓名:"<<name<<""<<"編號(hào):"<<number<<""<<"等級(jí):"<<level<<""<<"月薪:"<<wages<<endl;}//派生類(lèi)Mansger儲(chǔ)存函數(shù)voidMansger::save(){ofstreamfs("f:\\Mansger.txt"); fs<<"姓名:"<<name<<""<<"編號(hào):"<<number<<""<<"等級(jí):"<<level<<""<<"月薪:"<<wages<<endl; cout<<"MansgerOK"<<endl; }//派生類(lèi)Salemansger輸出函數(shù)voidSalemansger::printf(){cout<<"姓名:"<<name<<""<<"編號(hào):"<<number<<""<<"等級(jí):"<<level<<""<<"月薪:"<<wages<<endl;}//派生類(lèi)Salemansger儲(chǔ)存函數(shù)voidSalemansger::save(){ofstreamfs("f:\\Salemansger.txt"); fs<<"姓名:"<<name<<""<<"編號(hào):"<<number<<""<<"等級(jí):"<<level<<""<<"月薪:"<<wages<<endl; cout<<"SalemansgerOK"<<endl; }//派生類(lèi)Technology輸出函數(shù)voidTechnology::printf(){cout<<"姓名:"<<name<<""<<"編號(hào):"<<number<<""<<"等級(jí):"<<level<<""<<"月薪:"<<wages<<endl;}//派生類(lèi)Technology儲(chǔ)存函數(shù)voidTechnology::save(){ofstreamfs("f:\\Technology.txt"); fs<<"姓名:"<<name<<""<<"編號(hào):"<<number<<""<<"等級(jí):"<<level<<""<<"月薪:"<<wages<<endl; cout<<"TechnologyOK"<<endl; }//派生類(lèi)Saleman輸出函數(shù)voidSaleman::printf(){{cout<<"姓名:"<<name<<""<<"編號(hào):"<<number<<""<<"等級(jí):"<<level<<""<<"月薪:"<<wages<<endl;}//派生類(lèi)Saleman:儲(chǔ)存函數(shù)voidSaleman::save(){ofstreamfs("f:\\Saleman.txt"); fs<<"姓名:"<<name<<""<<"編號(hào):"<<number<<""<<"等級(jí):"<<level<<""<<"月薪:"<<wages<<endl; cout<<"SalemanOK"<<endl;}//友元類(lèi)的實(shí)現(xiàn)Head::Head()//友元類(lèi)的構(gòu)造函數(shù)實(shí)現(xiàn)初始化鏈表{if((top=newLinked)==NULL) exit(-1); top->next=NULL;}voidHead::Insert(Employee*temp)//鏈表的插入函數(shù){ Linked*ttop=top; while(ttop->next)//鏈表的頭結(jié)點(diǎn)的下個(gè)結(jié)點(diǎn)不為空時(shí),開(kāi)發(fā)空間 ttop=ttop->next; ttop->next=newLinked; ttop->next->p=temp; ttop->next->next=0;}//鏈表的輸出函數(shù)voidHead::printf() {Linked*pbuf=top->next; while(pbuf!=NULL) { pbuf->p->printf();//插入打印函數(shù) pbuf=pbuf->next; } }//鏈表的析構(gòu)函數(shù) Head::~Head() {Linked*ttop,*q; ttop=top->next; while(ttop!=NULL) {q=ttop; ttop=ttop->next; deleteq;//釋放空間 } } //菜單函數(shù)voidmenu(Head*Data) {intn; cout<<"請(qǐng)輸入1、打印0、退出:"; cin>>n; switch(n)//多分支選擇語(yǔ)句 {case1:Data->printf();//輸出鏈表節(jié)點(diǎn) break; case0: break; } cout<<"是否接著?假如接著請(qǐng)按1,退出請(qǐng)按0:"; cin>>n; if(n!=0) menu(Data);//遞歸調(diào)用}//菜單函數(shù)1 voidmenu1(Head*Data) {Mansger*M;//聲明類(lèi)指針 Salemansger*S; Technology*T; Saleman*S1; intn; cout<<"請(qǐng)輸入1、經(jīng)理2、銷(xiāo)售經(jīng)理3、技術(shù)人員4、銷(xiāo)售員0、退出:"; cin>>n; switch(n) {case1: M=newMansger;//構(gòu)造對(duì)象指針 M->save();//儲(chǔ)存對(duì)象數(shù)據(jù) Data->Insert(M);//將對(duì)象指針插入到鏈表中 break; case2: S=newSalemansger;//構(gòu)造對(duì)象指針 S->save();//儲(chǔ)存對(duì)象數(shù)據(jù) Data->Insert(S);//將對(duì)象指針插入到鏈表中 break; case3: T=newTechnology;//構(gòu)造對(duì)象指針 T->save();//儲(chǔ)存對(duì)象數(shù)據(jù) Data->Insert(T);//將對(duì)象指針插入到鏈表中 break; case4: S1=newSaleman;//構(gòu)造對(duì)象指針 S1->save();//儲(chǔ)存對(duì)象數(shù)據(jù) Data->Insert(S1);//將對(duì)象指針插入到鏈表中 break; case0: break; } cout<<"是否接著?假如接著請(qǐng)按1,退出請(qǐng)按0:"; cin>>n; if(n!=0)menu1(Data);//遞歸調(diào)用 }在類(lèi)的成員函數(shù)實(shí)現(xiàn)過(guò)程中,派生類(lèi)的成員函數(shù)調(diào)用了基類(lèi)的構(gòu)造函數(shù),只是整個(gè)調(diào)用過(guò)程中完全是由系統(tǒng)內(nèi)部完成?;?lèi)的愛(ài)護(hù)數(shù)據(jù)成員,通過(guò)公有派生之后,在派生類(lèi)中是以愛(ài)護(hù)成員的身份出現(xiàn)的,派生類(lèi)的成員函數(shù)能夠自由地進(jìn)行訪(fǎng)問(wèn)。通過(guò)定義友元類(lèi)訪(fǎng)問(wèn)類(lèi)內(nèi)的愛(ài)護(hù)成員,并通過(guò)單鏈表法開(kāi)發(fā)輸入空間以便插入職員的信息。最后通過(guò)友元類(lèi)的析構(gòu)函數(shù)釋放空間。4.3主函數(shù)設(shè)計(jì)//主函數(shù)voidmain(){HeadData;//構(gòu)造對(duì)象 intn; while(1) {cout<<"請(qǐng)輸入:1、輸入2、打印0、退出:"; cin>>n; switch(n)//多分支語(yǔ)句進(jìn)行菜單的選擇 {case1: menu1(&Data); break; case2: menu(&Data); break; case0: system("pause"); return; } } system("cls");}在程序的主函數(shù)部分,定義一個(gè)構(gòu)造對(duì)象以便實(shí)現(xiàn)調(diào)用。Switch多分支選擇語(yǔ)句能夠選擇菜單從而實(shí)現(xiàn)輸入、打印操作。4.4基于操縱臺(tái)的應(yīng)用程序測(cè)試程序運(yùn)行結(jié)果如圖2-1和2-2所示。圖2-1程序運(yùn)行結(jié)果1圖2-2程序運(yùn)行結(jié)果2為每類(lèi)職員保存的文件夾如圖3-1所示的Mansger.txt、Salemansger.txt、Saleman.txt、Technology.txt:圖3-1存盤(pán)文件夾為經(jīng)理建立的文件夾打開(kāi)后如圖3-2所示:圖3-2顯示經(jīng)理文件夾為銷(xiāo)售經(jīng)理建立的文件夾打開(kāi)后如圖3-3所示:圖3-3顯示銷(xiāo)售經(jīng)理文件夾為兼職技術(shù)人員建立的文件夾打開(kāi)后如圖3-4所示:圖3-4顯示兼職技術(shù)人員文件夾為兼職推銷(xiāo)員建立的文件夾打開(kāi)后如圖3-5所示:圖3-5顯示兼職推銷(xiāo)員文件夾從圖2-1到3-5能夠看出,在DOS界面通過(guò)對(duì)菜單的選擇能夠輸入和打印職員的信息。經(jīng)理只需要輸入姓名,銷(xiāo)售經(jīng)理要輸入姓名和當(dāng)月的部門(mén)的銷(xiāo)售總額,兼職技術(shù)人員要輸入姓名和工作時(shí)刻,兼職推銷(xiāo)員要輸入姓名和月銷(xiāo)售額,然后選擇打印菜單即可輸出各類(lèi)人員的全部信息,而這些信息差不多通過(guò)程序的文件輸出流以TXT的格式保存在了電腦磁盤(pán)F:\梁庶芹文件夾中。打開(kāi)后便可顯示各類(lèi)職員的全部信息。 5基于MFC的應(yīng)用程序MFC是通過(guò)窗口和控件實(shí)現(xiàn)輸入輸出,設(shè)置MFC界面也專(zhuān)門(mén)重要,界面的美觀(guān)程度直接阻礙了程序設(shè)計(jì)的好壞。下面在MFC類(lèi)的框架下加入上述類(lèi)并實(shí)現(xiàn)人員的信息治理,通過(guò)圖形界面的輸入和輸出。5.1基于MFC的應(yīng)用程序設(shè)計(jì)5.1.1MFC程序界面設(shè)計(jì)首先在VC中建立MFCAppWizard(exe)工程,名稱(chēng)為lsq,并在向?qū)У腟tep1中選擇Dialogbased,即建立基于對(duì)話(huà)框的應(yīng)用程序,如下圖4~1和4-2所示。圖4-1建立MFCAppWizard(exe)工程圖4-2建立基于對(duì)話(huà)框的應(yīng)用程序?qū)?duì)話(huà)框資源中的默認(rèn)對(duì)話(huà)框利用工具箱改造成如下界面,如圖4-3所示。圖4-3顯示職員信息程序界面設(shè)計(jì)圖4-3所示的界面中包含了5個(gè)GroupBox,7個(gè)StaticText控件,5個(gè)Button控件,和15個(gè)EditBox控件,控件的差不多信息列表如下表1所示。表1控件差不多信息控件類(lèi)不控件ID控件Caption講明GroupBoxIDC_STATIC職位見(jiàn)圖6姓名級(jí)不月薪存盤(pán)StaticTextIDC_STATIC經(jīng)理見(jiàn)圖6銷(xiāo)售經(jīng)理技術(shù)人員推銷(xiāo)員銷(xiāo)售總額工作時(shí)刻銷(xiāo)售額BottonIDC_BUTTON1提交見(jiàn)圖6IDC_BUTTON2MansgerIDC_BUTTON3SalemansgerIDC_BUTTON4TechnologyIDC_BUTTON5SalemanEditBoxIDC_JL姓名欄第一個(gè)EditIDC_XSJL姓名欄第二個(gè)EditIDC_JSRY姓名欄第三個(gè)EditIDC_TXY姓名欄第四個(gè)EditIDC_DJ1級(jí)不欄第一個(gè)EditIDC_DJ2級(jí)不欄第二個(gè)EditIDC_DJ3級(jí)不欄第三個(gè)EditIDC_DJ4級(jí)不欄第四個(gè)EditIDC_YX1月薪欄第一個(gè)EditIDC_YX1月薪欄第二個(gè)EditIDC_YX1月薪欄第三個(gè)EditIDC_YX1月薪欄第四個(gè)EditIDC_XSZE銷(xiāo)售總額右邊EditIDC_GZSJ工作時(shí)刻右邊EditIDC_XSE銷(xiāo)售額右邊Edit5.1.2MFC程序代碼設(shè)計(jì)為了能夠?qū)?duì)話(huà)框界面上的控件能夠與代碼聯(lián)系起來(lái),需要為15個(gè)EditBox控件建立MemberVariables,按Ctrl+w鍵進(jìn)入MFCClassWizard界面,選擇MemberVariables選項(xiàng)卡,可顯示成員變量設(shè)置界面,如圖4-4所示。圖4-4成員變量設(shè)置界面1通過(guò)該界面設(shè)置與15個(gè)EditBox控件對(duì)應(yīng)的成員變量,具體Type與Member請(qǐng)?jiān)斠?jiàn)圖4-4MFC編寫(xiě)代碼也是特不重要的時(shí)期,能夠借鑒在設(shè)計(jì)基于DOS界面的操縱臺(tái)應(yīng)用程序的代碼,并將其作必要的改寫(xiě),具體改寫(xiě)如下。①各職員的姓名直接在MFC界面的姓名檔中輸入,等級(jí)和月薪直接賦值即可。②修改內(nèi)容包括:將顯示職員信息的prinft()函數(shù)去掉,因?yàn)樵趫D形界面的程序上差不多不需要連個(gè)函數(shù)承擔(dān)輸出功能了;將存盤(pán)函數(shù)save()去掉直接在MFC界面的存盤(pán)檔位每類(lèi)職員建立文件夾并保存,仍然使用文件輸出流;菜單函數(shù)也不再需要,直接通過(guò)對(duì)按鈕的選擇進(jìn)行輸入輸出和存盤(pán)操作。具體代碼如下:①//為提交鍵編寫(xiě)的程序,用來(lái)實(shí)現(xiàn)信息的輸出:voidCLsqDlg::OnButton1(){ UpdateData(TRUE); if(m_Mansger)//為經(jīng)理的等級(jí)和月薪賦值 {m_level1=4; m_wages1=8000; }if(m_Salemansger)//為銷(xiāo)售經(jīng)理的等級(jí)和月薪賦值 {m_level2=3; m_wages2=5000+m_sum2*0.005; } if(m_Technology)//為兼職技術(shù)人員的等級(jí)和月薪賦值 {m_level3=3; m_wages3=m_time*100; } if(m_Saleman)//為兼職推銷(xiāo)員的等級(jí)和月薪賦值 {m_level4=1; m_wages4=m_sum1*0.04; UpdateData(FALSE); }}②//為經(jīng)理建立文件夾,將其信息保存在磁盤(pán)中voidCLsqDlg::OnButton2(){ofstreamfs("f:\\MFCMansger.txt");fs<<"姓名:"<<m_Mansger<<""<<"等級(jí):"<<m_level1<<""<<"月薪:"<<m_wages1<<endl;}

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論