




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、目 錄1 前言12 需求分析12.1 任務(wù)和要求12.2 運行環(huán)境12.3 開發(fā)工具13 分析和設(shè)計23.1 系統(tǒng)分析及設(shè)計思路23.2 主要類圖23.3 函數(shù)流程圖34 具體代碼實現(xiàn)45 課程設(shè)計總結(jié)105.1 程序運行結(jié)果或預(yù)期運行結(jié)果105.2 設(shè)計結(jié)論12參考文獻(xiàn)13致謝141 前言某公司內(nèi)有5種不同類型的職工: 技術(shù)人員(technician)、銷售人員(salesman)、文秘(secretary)、技術(shù)經(jīng)理(tech-manager)、銷售經(jīng)理(sales-manager)。他們的工資計算方式各不相同:1) 技術(shù)人員的工資根據(jù)他當(dāng)月工作的小時數(shù)來定,時薪為35元;2) 銷售人員的
2、工資則是根據(jù)本人當(dāng)月銷售額來確定,工資為銷售額的5%;3) 文秘有4000元的基本工資,獎金視當(dāng)月工作情況而定;4) 技術(shù)經(jīng)理和銷售經(jīng)理都有6000元的固定工資,技術(shù)經(jīng)理的工作業(yè)績可分為3個等級,每級可以獲得1000元獎金,5) 銷售經(jīng)理除有6000元的固定工資外,銷售經(jīng)理的獎金由他所管理的銷售員的銷售業(yè)績而定,為總銷售額的0.2%。為此設(shè)計一個工資管理系統(tǒng)管理職工的信息。2 需求分析2.1 任務(wù)和要求使用C+面向?qū)ο蟪绦蛟O(shè)計一個簡易的工資管理系統(tǒng)。,系統(tǒng)的主要功能是:根據(jù)不同的職工,計算職工當(dāng)月工資。確定程序至少應(yīng)該具備如下功能:.輸入職工, 添加職工,刪除職工,結(jié)算工資,等基本模塊。1)輸
3、入職工: 用class person *creat(void) 函數(shù)創(chuàng)建鏈表。2)添加職工: 用class person *insert(class person *head,class person *pe)函數(shù)添加。3)刪除職工:用class person *del(class person *head,double num) 函數(shù)刪除。4)結(jié)算工資:用void selary(class person *head) 函數(shù)計算。2.2 運行環(huán)境(1)WINDOWS2000/XP系統(tǒng)(2)Visual C+ 6.0編譯環(huán)境或DEV C+ 5.0編譯環(huán)境2.3 開發(fā)工具C+語言3 分析和設(shè)計3.
4、1 系統(tǒng)分析及設(shè)計思路首先公司有五類人,各類之間又有相同的部分例如:姓名、職工號等,所以定義一個基類Person,四類人相同部分為基類數(shù)據(jù)成員。由基類Person再派生出各類:技工類Technician類、售貨員類Salesman、文秘類Secretary、技術(shù)經(jīng)理類Tech-manager、銷售經(jīng)理類Sales-manager。(1) Person類:包含: num,wage,year, name10,post10,sex等數(shù)據(jù)成員等。要完成結(jié)算工資操作,需要設(shè)計virtual void pay()作為成員函數(shù)。(2)Technician類:繼承Person類,增加hours數(shù)據(jù)。(3)Sa
5、lesman類:繼承Person類,增加sales數(shù)據(jù)。(4) Secretary類:繼承Person類,增加bonus數(shù)據(jù)。(5)Tech-manager類:繼承Person類,增加bonus數(shù)據(jù)(6)Sales-manager類:繼承Person類,增加sumsales數(shù)據(jù)。然后分析系統(tǒng)管理需要有幾個功能,分別是輸入職工,添加職工,刪除職工以及結(jié)算工資。我們?yōu)檫@幾個功能分別建立對應(yīng)的函數(shù)來實現(xiàn):class person *creat(void) 、class person *insert(class person *head,class person *pe)、class person *
6、del(class person *head,double num) 、void selary(class person *head) 。并且還有輸出函數(shù)print()以及保存信息函數(shù)save()最后主函數(shù)的實現(xiàn)。由于是有選擇的菜單,首先想到了switch選擇語句。當(dāng)輸入不同值時,進(jìn)入不同的case部分以實現(xiàn)不同的功能。case1的功能是實現(xiàn)數(shù)據(jù)的輸入。用creat()函數(shù)創(chuàng)建職工信息,按照提示分別輸入職工的信息:編號、姓名、性別、出生年份,并用save()函數(shù)保存信息。case2的功能是實現(xiàn)數(shù)據(jù)的添加。用malloc動態(tài)分配內(nèi)存空間,然后輸入要添加的職工信息。用insert()函數(shù)添加進(jìn)去。
7、用print()函數(shù)輸出并保存。case3的功能是實現(xiàn)數(shù)據(jù)的刪除。根據(jù)提示輸入你要刪除的職工編號。按照你輸入的編號,用del()函數(shù)輸出該職工的所有信息。case4的功能是計算職工的工資。根據(jù)不同的職工類別計算工資。3.2 主要類圖圖3.1 主要類圖3.3 函數(shù)流程圖(1)主函數(shù)流程圖3.2 主函數(shù)流程圖 4 具體代碼實現(xiàn)#include#include#include#include#include#define NULL 0#define LEN sizeof(class person)class personpublic:virtual void pay()double num,wage
8、,year;char name10,post10,sex;class person *next;int n;class Technician:public personpublic:void pay()couthours;wage=35*hours;cout工資:wageendl;protected:double hours;class Salesman:public personpublic: void pay()coutsales; wage=0.05*sales;cout工資:wageendl;double sales;class Secretary:public personpubli
9、c:Void pay()coutbonus;wage=4000+bonus;cout工資:wageendl;protected:double bonus;class Techmanager:public personpublic:void pay()coutbonus;wage=6000+bonus;cout工資:wageendl;protected:double bonus;class Salesmanager:public personpublic:void pay()cout總銷售額:sumsalesendl;wage=6000+sumsales*0.002; cout工資:wagep1
10、-postp1-nump1-namep1-sexp1-year; head=NULL;while(p1-num!=0)n=n+1;if(n=1)head=p1;else p2-next=p1;p2=p1;p1=(class person *)malloc(LEN);cinp1-postp1-nump1-namep1-sexp1-year;p2-next=NULL;return(head);void print(class person *head) / 輸出職工class person *p;coutn個職工信息:endl;cout職務(wù) 編號 姓名 性別 出生年份 endl;p=head;if
11、(head!=NULL)docoutpost num name sex yearnext;while(p!=NULL);class person *del(class person *head,double num) / 刪除職工class person *p1,*p2;if(head=NULL)coutlist null!num&p1-next!=NULL)p2=p1;p1=p1-next;if(num=p1-num)if(p1=head)head=p1-next;else p2-next=p1-next;coutdelete:numendl; n=n-1;else cout num not
12、 been found!next=NULL;elsewhile(p0-nump1-num)&(p1-next!=NULL)p2=p1;p1=p1-next;if(p0-numnum)if(head=p1)head=p0;else p2-next=p0; p0-next=p1; elsep1-next=p0; p0-next=NULL; n=n+1;return(head);void save(class person *head) / 保存文件class person *p;ofstream outfile(職工.txt,ios:out);if(!outfile)cerropen error!
13、endl;exit(1);p=head;if(head!=NULL)dooutfilepost num name sex yearnext;while(p!=NULL);outfile.close();void selary(class person *head) / 計算工資class person *p;Technician te;Salesman sa;Secretary se; Techmanager tm; Salesmanager sm;sm.sumsales=0;ifstream infile(職工.txt,ios:in);if(!infile)cerropen error!p-
14、postp-nump-namep-sexp-year;coutpost num name sex year numnumnum200)sa.pay();sm.sumsales=sa.sales+sm.sumsales;if(p-numnum300)se.pay();if(p-numnum400)tm.pay();if(p-numnum500)sm.pay();p=p-next;while(p!=NULL);infile.close();int main() class person *head,*pe; double delnum;int menu; while(1) cout*endl; c
15、out*=菜單選頂=*endl; cout*=*endl; cout* 1.輸入職工 2.添加職工 3.刪除職工 4.結(jié)算工資 *endl; cout*endl; cout編號:技工(101-199) 售貨員(201-299) 文秘(301-399) endl 技術(shù)經(jīng)理(401-499)銷售經(jīng)理(501-599)endl; coutendlmenu; switch(menu) case 1:coutendl輸入職工:endl; cout職務(wù) 編號 姓名 性別 出生年份 endl; head=creat();print(head);save(head); break; case 2:couten
16、dl添加職工:endl; cout職務(wù) 編號 姓名 性別 出生年份 pe-postpe-numpe-namepe-sexpe-year;while(pe-num!=0)head=insert(head,pe);print(head);save(head);pe=(class person *)malloc(LEN);cinpe-postpe-numpe-namepe-sexpe-year;break;case 3:coutendldelnum;while(delnum!=0)head=del(head,delnum);print(head);save(head);coutendldelnum;
17、break;case 4:selary(head);break; return 0;5 課程設(shè)計總結(jié)5.1 程序運行結(jié)果或預(yù)期運行結(jié)果圖5.1實驗結(jié)果圖圖5.2實驗結(jié)果圖圖5.3實驗結(jié)果圖圖5.2實驗結(jié)果圖5.2 設(shè)計結(jié)論本次設(shè)計我們組的題目是職工工資管理系統(tǒng),因為事先老師的細(xì)心指導(dǎo),我們才得以的完成這次課程設(shè)計。在系統(tǒng)分析和設(shè)計的部分仍然花了比較多的時間,特別是源代碼的編寫和調(diào)試,經(jīng)過反復(fù)的改寫、調(diào)試、再改寫、調(diào)試,我們最終完成了任務(wù)。經(jīng)過對職工信息管理系統(tǒng)的分析與編寫,我們得到了很大的收獲。自主學(xué)習(xí)的必要性更是解決問題的基礎(chǔ),我們二個人一組,在設(shè)計的過程中,我們相互討論,相互學(xué)習(xí),發(fā)揮出各
18、自的優(yōu)勢,發(fā)現(xiàn)自己的不足,取長補(bǔ)短,增強(qiáng)了團(tuán)隊意識。更重要的是這次設(shè)計讓我們對C面向?qū)ο笤O(shè)計編程有了更深刻的認(rèn)識和更全面的掌握,也提升了我們分析問題的能力和思考問題的邏輯能力,更明白實際調(diào)研的重要性。對面向?qū)ο缶幊逃辛松羁痰睦斫?,對軟件工程有了了解。在以后的學(xué)習(xí)中我們會更加的努力,深刻的鉆研,增強(qiáng)團(tuán)隊意識。通過這次課程設(shè)計,我們加深了對類與派生的理解。類與派生類之間的關(guān)系,通過上機(jī)實踐得到了進(jìn)一步的深化。從數(shù)據(jù)成員的繼承到派生類對象對基類成員函數(shù)的調(diào)用。整個實習(xí)過程讓我的C+知識得到了應(yīng)用,體驗了程序員編程時的喜怒哀樂,知識、心智,得到全方位提升,收獲頗豐。參考文獻(xiàn)1 龔曉慶,付麗娜,朱心懿.C+面向?qū)ο蟪绦蛟O(shè)計.北京:清華大學(xué)出版社,2012 揣錦華等編.C+程序設(shè)計語言.西安:西安電子科技大學(xué)出版社,20033 呂鳳翥著.C+語言基礎(chǔ)教程.北京:清華大學(xué)出版社,20014張國峰編著.C+語言及其程序設(shè)計教程.北京:電子工業(yè)出版社,1996.6 鄭莉,董淵,張瑞豐.C+語言課程設(shè)計(第
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年安徽省濉溪縣聯(lián)考英語八下期末監(jiān)測試題含答案
- 天津事業(yè)單位試題及答案
- 團(tuán)校試題及答案
- 2025年能源管道建設(shè)與維護(hù)策劃合作協(xié)議
- 2025年策劃業(yè)務(wù)合作優(yōu)化協(xié)議書
- 2025年數(shù)據(jù)分析行業(yè)咨詢合作協(xié)議
- 2025年修訂版股東協(xié)議
- 2025年工傷賠償標(biāo)準(zhǔn)協(xié)議書范文
- 大數(shù)據(jù)時代出版業(yè)的精準(zhǔn)營銷策略
- 健美操文化傳播的創(chuàng)新路徑與實踐
- 2025廣東勞動合同樣本新(合同版本)
- 2025年高級車輛鉗工(三級)技能認(rèn)定理論考試題庫(含答案)
- 糧食公司筆試題庫及答案
- 闖關(guān)東人口遷移情景課件高中地理人教版必修二
- 2025年綠色食品授權(quán)協(xié)議
- 《樓地層陽臺雨棚》課件
- 《企業(yè)預(yù)算編制》課件
- 2025年廣西廣電網(wǎng)絡(luò)公司招聘筆試參考題庫含答案解析
- 有載分接開關(guān)技術(shù)交流課件
- DB51T 1349-2011 油菜脫粒機(jī)規(guī)范
- DB31∕T 1148-2019 水量計量差錯的退補(bǔ)水量核算方法
評論
0/150
提交評論