C++面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告_第1頁(yè)
C++面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告_第2頁(yè)
C++面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告_第3頁(yè)
C++面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告_第4頁(yè)
C++面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上課 程 設(shè) 計(jì) 課程名稱C+面向?qū)ο蟪绦蛟O(shè)計(jì)題目名稱公司人員管理系統(tǒng)專(zhuān)業(yè)班級(jí)13級(jí)計(jì)算機(jī)科學(xué)與技術(shù)一班學(xué)生姓名 林濤、甑德勝、梁增輝 吳志偉、李齊、江靖學(xué) 號(hào)、指導(dǎo)教師郭有強(qiáng)二一四年六月二十日目 錄一、引 言1985年,管理信息系統(tǒng)的創(chuàng)始人,高登戴維斯給出的管理信息系統(tǒng)的定義是:“它是一個(gè)利用計(jì)算機(jī)硬件和軟件,手工作業(yè),分析、計(jì)劃、控制和決策模型,以及數(shù)據(jù)庫(kù)的用戶一機(jī)器系統(tǒng)。它能提供信息,支持企業(yè)或組織的運(yùn)行、管理和決策。”這個(gè)定義說(shuō)明了管理信息系統(tǒng)的組成要素:計(jì)算機(jī)硬件、軟件、數(shù)據(jù)庫(kù)、模型庫(kù)和用戶。隨著我國(guó)社會(huì)的不斷進(jìn)步,人們對(duì)管理信息系統(tǒng)越來(lái)越重視,再加之管理信息

2、系統(tǒng)在管理方面所產(chǎn)生的巨大影響,也使得人們?cè)絹?lái)越關(guān)注管理信息系統(tǒng)的發(fā)展趨勢(shì)。由于管理信息系統(tǒng)的發(fā)展受到以上各種變革因素的制約,傳統(tǒng)的管理信息系統(tǒng)必然向現(xiàn)代管理信息系統(tǒng)發(fā)展,在這個(gè)發(fā)展過(guò)程中,管理信息系統(tǒng)的發(fā)展將會(huì)呈現(xiàn)出以下趨勢(shì):管理信息系統(tǒng)將會(huì)越來(lái)越注重以人為本。管理科學(xué)的發(fā)展有科學(xué)管理理論、行為管理理論和現(xiàn)代管理理論三個(gè)發(fā)展階段,正在向著越來(lái)越人性化的方向發(fā)展,即以人為本?;诠芾韺W(xué)的這一研究視角,管理信息系統(tǒng)也將向著更加人性化的方向發(fā)展。在今后的管理信息系統(tǒng)中將會(huì)越來(lái)越注重人的因素,以人為出發(fā)點(diǎn)和中心,圍繞著激發(fā)和調(diào)動(dòng)人的主動(dòng)性、積極性、創(chuàng)造性展開(kāi)的,以實(shí)現(xiàn)人與社會(huì)共同發(fā)展的一系列管理活動(dòng)

3、。而且這種人性化還會(huì)貫穿于管理信息系統(tǒng)的開(kāi)發(fā)設(shè)計(jì)與研究中,具體表現(xiàn)為今后的管理信息系統(tǒng)將具有更加友好的人機(jī)界面,易于人們操作,也會(huì)考慮到不同用戶的不同需求,更加個(gè)性化。管理信息系統(tǒng)向智能化方向發(fā)展。 隨著人工智能技術(shù)的發(fā)展,數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)挖掘技術(shù)在管理信息系統(tǒng)中的應(yīng)用,管理信息系統(tǒng)必將向著智能化方向發(fā)展,如產(chǎn)生了很多的決策支持系統(tǒng)、專(zhuān)家系統(tǒng)等等。智能化的管理信息系統(tǒng)具有思維模擬活動(dòng),它具有很高的自學(xué)習(xí)、自組織和進(jìn)化性,并具有知識(shí)創(chuàng)新功能,可以解決非結(jié)構(gòu)化事務(wù),在決策中處于主導(dǎo)地位,是人的向?qū)?在體系上將是大規(guī)模分布式計(jì)算模式,以基于網(wǎng)絡(luò)神經(jīng)元構(gòu)件的智能網(wǎng)為主。管理信息系統(tǒng)向集成化方向發(fā)展。隨著

4、當(dāng)前系統(tǒng)集成技術(shù)的提高,集成技術(shù)和方法也逐步地運(yùn)用到管理信息系統(tǒng)中。由于管理信息系統(tǒng)將包含多個(gè)子系統(tǒng),因此將這些功能集合在一起以便更好地發(fā)揮它的作用,這就是集成化的管理信息系統(tǒng)。集成化的管理信息系統(tǒng)將管理信息系統(tǒng)的各個(gè)子系統(tǒng)有機(jī)地結(jié)合起來(lái),達(dá)到互通信息、共享數(shù)據(jù)資源的目的,其支撐技術(shù)是數(shù)據(jù)庫(kù)和計(jì)算機(jī)網(wǎng)絡(luò)。集成管理則是一種全新的理念與方法,其核心是強(qiáng)調(diào)運(yùn)用集成的思想和理念指導(dǎo)管理實(shí)踐。而集成管理信息系統(tǒng)的本質(zhì)是要素的整合和優(yōu)勢(shì)互補(bǔ),在集成管理運(yùn)作過(guò)程中,首先經(jīng)歷的是一個(gè)投入要素的聚集過(guò)程,當(dāng)投入要素積累到一定量時(shí),集成能量便開(kāi)始發(fā)生膨脹裂變,從而使各種單項(xiàng)要素優(yōu)勢(shì)催化出更大的整體優(yōu)勢(shì),管理效果也

5、因而急劇放大。因此,管理信息系統(tǒng)是當(dāng)代公司發(fā)展中不可或缺的一部分,是公司管理人員的基礎(chǔ)。公司人員管理系統(tǒng)的完善也起到保護(hù)公司內(nèi)部資料的作用,是公司盈利與否的必備條件之一。二、課程設(shè)計(jì)報(bào)告1、問(wèn)題描述某小型公司,主要有四類(lèi)人員:經(jīng)理、兼職技術(shù)人員、銷(xiāo)售經(jīng)理和兼職推銷(xiāo)員?,F(xiàn)在,需要存儲(chǔ)這些人員的姓名、編號(hào)、級(jí)別、當(dāng)月薪水,計(jì)算月薪總額并顯示全部信息。要求: 其中,人員編號(hào)在生成人員信息時(shí)同時(shí)生成,每輸入一個(gè)人員信息編號(hào)順序加1。 程序?qū)λ腥藛T有提升級(jí)別的功能 月薪的計(jì)算方法是:經(jīng)理拿固定月薪,兼職技術(shù)人員按工作小時(shí)數(shù)領(lǐng)取月薪,兼職推銷(xiāo)員的報(bào)酬按該推銷(xiāo)員當(dāng)月銷(xiāo)售額提成 ,銷(xiāo)售經(jīng)理既拿固定月薪也領(lǐng)取

6、銷(xiāo)售提成。 能按姓名或者編號(hào)顯示、查找、增加、刪除和保存各類(lèi)人員的信息。用文件處理方式實(shí)現(xiàn)。2、系統(tǒng)總體方案使用面向?qū)ο蟮某绦蛟O(shè)計(jì)思想進(jìn)行分析,整個(gè)系統(tǒng)涉及兩大類(lèi)信息和操作,公司,人員。所以系統(tǒng)主要涉及兩個(gè)大類(lèi):公司類(lèi)Company、人員類(lèi)Person。系統(tǒng)的總體框架就是公司類(lèi),人員類(lèi)的定義;主函數(shù)中定義一個(gè)公司對(duì)象,循環(huán)顯示主菜單并根據(jù)用戶選擇調(diào)用公司類(lèi)的相應(yīng)方法(成員函數(shù))。 (1)公司類(lèi)Company:考慮系統(tǒng)操作的人員信息的數(shù)量具有不確定性,所以考慮使用鏈表保存、處理人員信息。公司類(lèi)包含:所有人員信息的一個(gè)不帶頭結(jié)點(diǎn)的鏈表(作為數(shù)據(jù)成員)及可以對(duì)人員信息進(jìn)行增,刪,改,查詢經(jīng)營(yíng)信息,基

7、礎(chǔ)數(shù)據(jù)設(shè)置,數(shù)據(jù)存盤(pán),數(shù)據(jù)裝入等操作的相關(guān)模塊(Add,Delete,Modify,Query,Set,Save,Load)作為成員函數(shù)。 (2)人員類(lèi)Person:所有人員都具有的公共信息及操作可以使用人員類(lèi)進(jìn)行描述。由于系統(tǒng)具有4類(lèi)人員且4類(lèi)人員數(shù)據(jù),操作有所不同,如銷(xiāo)售員包含銷(xiāo)售額,而技術(shù)人員包含工作小時(shí)數(shù)且計(jì)算工資的方法不同,所以應(yīng)當(dāng)為4類(lèi)人員創(chuàng)建相應(yīng)的Person類(lèi)的派生類(lèi)。 (3)為了使公司類(lèi)可以方便處理人員信息,可以考慮將公司類(lèi)確定為人員類(lèi)的友元類(lèi)或者人員類(lèi)提供公共的方法以便公司類(lèi)進(jìn)行操作。為了公司類(lèi)可以用共同方法操作人員類(lèi),可以將人員類(lèi)的方法確定為虛函數(shù)。3、設(shè)計(jì)思路和主要步驟

8、根據(jù)需求分析,首先我們需要建立Person基類(lèi),由此派生出了經(jīng)理類(lèi)(Manager),銷(xiāo)售經(jīng)理類(lèi)(SalesManager),銷(xiāo)售員類(lèi)(Sales),技術(shù)人員類(lèi)(Technician),在Person類(lèi)中,需要將人員編號(hào),姓名,崗位,收入,以及next指針等數(shù)據(jù)設(shè)置權(quán)限為protected;由于其他類(lèi)需要訪問(wèn)基類(lèi)數(shù)據(jù)及相應(yīng)成員函數(shù),所以我們必須設(shè)置為public。在各個(gè)派生類(lèi)中,因?yàn)槎夹枰褂昧薈alcSalary(),OutPut()函數(shù),為了不出現(xiàn)二義性的問(wèn)題,我們需要在基類(lèi)中將這兩個(gè)函數(shù)聲明為純虛函數(shù),通過(guò)進(jìn)一步分析,由于基類(lèi)中的構(gòu)造函數(shù)不能被繼承,而且在派生類(lèi)中又需要增加自己的數(shù)據(jù)成員

9、,所以我們必須定義派生類(lèi)的構(gòu)造函數(shù)來(lái)完成相應(yīng)的初始化。然后建立Company類(lèi),在public訪問(wèn)權(quán)限中,我們通過(guò)鏈表來(lái)操作人員數(shù)據(jù),同時(shí)增加不同功能的成員函數(shù)如:void Add(); /增加人員 void Delete(); /刪除人員void Modify(); /修改人員void Query(); /查詢?nèi)藛Tvoid Set(); /基礎(chǔ)數(shù)據(jù)設(shè)置void Save(); /數(shù)據(jù)存盤(pán)void Load(); /數(shù)據(jù)裝入為了實(shí)現(xiàn)多文件的效果,我們將Company類(lèi)定義及該類(lèi)的實(shí)現(xiàn)分開(kāi),然后逐一對(duì)各功能函數(shù)進(jìn)行代碼編寫(xiě)。最后,我們定義了主函數(shù),通過(guò)公司類(lèi)創(chuàng)建了一個(gè)對(duì)象,并通過(guò)此對(duì)象完成相應(yīng)的

10、操作。在調(diào)試并測(cè)試代碼過(guò)程中,當(dāng)程序員輸入相應(yīng)的指令后,該系統(tǒng)自動(dòng)調(diào)用相應(yīng)的功能函數(shù)來(lái)達(dá)到需求效果,至此,一個(gè)公司人員管理系統(tǒng)的實(shí)現(xiàn)才算基本成功。4、各功能模塊和流程圖(1)各功能模塊1.Person 類(lèi)的No-人員編號(hào),Name-人員姓名,Duty-人員類(lèi)別,Earning-工資,next-指向下一個(gè)人員的指針;Person類(lèi)的CalcSalary(),Output()定義為純虛函數(shù)分別表示要計(jì)算人員工資和輸出人員信息,由于定義純虛函數(shù),所以Person是抽象類(lèi),具體計(jì)算工資,輸出人員信息由派生類(lèi)完成。 2.各個(gè)派生的類(lèi),包含本類(lèi)對(duì)象特有的數(shù)據(jù),Sales:Amount-銷(xiāo)售員銷(xiāo)售額,Sal

11、esManager:Amount-銷(xiāo)售經(jīng)理的總銷(xiāo)售額(系統(tǒng)統(tǒng)計(jì)各個(gè)銷(xiāo)售員銷(xiāo)售額得到銷(xiāo)售經(jīng)理的總銷(xiāo)售額),Technician:t-技術(shù)人員工作小時(shí)數(shù)。 其中:Worker就是人員鏈表。 Clear()用于清除人員鏈表所有結(jié)點(diǎn)。 Add(),Delete(),Modify(),Query(),Set(),Save(),Load()分別表示系統(tǒng)各個(gè)功能模塊:增加人員,刪除人員,修改人員,查詢本月經(jīng)營(yíng)信息,基礎(chǔ)數(shù)據(jù)設(shè)置,數(shù)據(jù)存盤(pán),數(shù)據(jù)裝入。(2)流程圖 1主函數(shù)流程 2 Company:Add() 3 Company:Delete() 4 Company:Modify 5 Company:Query

12、() 6 Company:Save() 7 Company:Load()三、系統(tǒng)測(cè)試 列出各功能具體的輸入數(shù)據(jù)及對(duì)應(yīng)的輸出結(jié)果,說(shuō)明其是否符合設(shè)計(jì)要求:增加人員數(shù)據(jù):查詢所添加人員的信息:刪除員工:查詢是否刪除成功:修改員工的姓名:查詢是否修改成功:數(shù)據(jù)存盤(pán):數(shù)據(jù)裝入:清除并退出系統(tǒng): 四、心得體會(huì) 通過(guò)此次課程設(shè)計(jì),使我們更加扎實(shí)的掌握了有關(guān)C+程序設(shè)計(jì)方面的知識(shí),在設(shè)計(jì)過(guò)程中雖然遇到了一些問(wèn)題,但經(jīng)過(guò)一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我們?cè)谶@方面的知識(shí)欠缺和經(jīng)驗(yàn)不足。實(shí)踐出真知,通過(guò)大家的親自動(dòng)手制作,使我們掌握的知識(shí)不再是紙上談兵。過(guò)而能改,善莫大焉。在

13、課程設(shè)計(jì)過(guò)程中,我們不斷發(fā)現(xiàn)錯(cuò)誤,不斷改正,不斷領(lǐng)悟,不斷獲取。最終的檢測(cè)調(diào)試環(huán)節(jié),本身就是在踐行“過(guò)而能改,善莫大焉”的知行觀。這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多問(wèn)題,最后通過(guò)查閱相關(guān)書(shū)籍以及在大家的積極討論下,終于迎刃而解。在今后社會(huì)的發(fā)展和學(xué)習(xí)實(shí)踐過(guò)程中,我們一定會(huì)不懈努力,不能遇到問(wèn)題就想到要退縮,一定要不厭其煩的發(fā)現(xiàn)問(wèn)題所在,然后一一進(jìn)行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上劈荊斬棘,而不是知難而退,那樣永遠(yuǎn)不可能收獲成功,收獲喜悅,也永遠(yuǎn)不可能得到社會(huì)及他人對(duì)你的認(rèn)可!課程設(shè)計(jì)誠(chéng)然是一門(mén)專(zhuān)業(yè)課,給我們很多專(zhuān)業(yè)知識(shí)以及專(zhuān)業(yè)技能上的提升,同時(shí)又是一門(mén)講道

14、課,一門(mén)辯思課,給了我許多道,給了我很多思,給了我們莫大的空間。同時(shí),設(shè)計(jì)讓我們感觸很深。使我們對(duì)抽象的理論有了具體的認(rèn)識(shí)。通過(guò)這次課程設(shè)計(jì),我們基本掌握了C+課程設(shè)計(jì)的原理。我認(rèn)為,在這學(xué)期的實(shí)驗(yàn)中,不僅培養(yǎng)了團(tuán)結(jié)合作、動(dòng)手操作的能力,在各種其它能力上也都有了提高。更重要的是,在實(shí)驗(yàn)課上,我們學(xué)會(huì)了很多學(xué)習(xí)的方法。而這是日后最實(shí)用的,真的是受益匪淺。要面對(duì)社會(huì)的挑戰(zhàn),只有不斷的學(xué)習(xí)、實(shí)踐,再學(xué)習(xí)、再實(shí)踐。這對(duì)于我們的將來(lái)也有很大的幫助。以后,不管有多苦,我想我們都能變苦為樂(lè),找尋有趣的事情,發(fā)現(xiàn)其中珍貴的事情。就像中國(guó)提倡的艱苦奮斗一樣,我們都可以在實(shí)驗(yàn)結(jié)束之后變的更加成熟,會(huì)面對(duì)需要面對(duì)的

15、事情。回顧起此次課程設(shè)計(jì),至今仍讓我們感慨頗多,從理論到實(shí)踐,在這段日子里,可以說(shuō)得是苦多于甜,但是可以學(xué)到很多很多的東西,不僅鞏固了以前所學(xué)過(guò)的知識(shí),而且學(xué)到了很多在書(shū)本上所沒(méi)有學(xué)到過(guò)的知識(shí)。通過(guò)這次課程設(shè)計(jì)使我們懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高我們的實(shí)際動(dòng)手能力和團(tuán)結(jié)互助的能力。在設(shè)計(jì)的過(guò)程中遇到問(wèn)題,可以說(shuō)是困難重重,但可喜的是最終都得到了解決。此次設(shè)計(jì)也讓我們明白了思路即出路,有什么不懂不明白的地方要及時(shí)請(qǐng)教或上網(wǎng)查詢,只要認(rèn)真鉆研,動(dòng)腦思考,動(dòng)手實(shí)踐,就沒(méi)有弄不懂的知識(shí),收

16、獲頗豐。 五、參考文獻(xiàn)1美 Gary Bronson 著,劉勇譯Programming Development and Design Using C+, Second Edition(C+程序開(kāi)發(fā)與設(shè)計(jì),第2版)北京:人民郵電出版社,20022王萍C+面向?qū)ο蟪绦蛟O(shè)計(jì)北京:清華大學(xué)出版社20023羅建軍等C+程序設(shè)計(jì)教程(第2版)北京:高等教育出版社,2004 4譚浩強(qiáng)C+程序設(shè)計(jì)北京:清華大學(xué)出版社20045黃維通Visual C+面向?qū)ο笈c可視化程序設(shè)計(jì)(第2版)北京:清華大學(xué)出版社,20076張基溫C+程序設(shè)計(jì)基礎(chǔ)北京:高等教育出版社,20017刁成嘉面向?qū)ο驝+程序設(shè)計(jì)北京:機(jī)械工業(yè)出

17、版社,20048郭有強(qiáng)等編著,C+面向?qū)ο蟪绦蛟O(shè)計(jì),清華大學(xué)出版社,2009年出版9郭有強(qiáng)等編著,C+面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)指導(dǎo)與課程設(shè)計(jì),清華大學(xué)出版社,2009年出版附:程序設(shè)計(jì)代碼/Company.h#include"Person.h"class Company /公司類(lèi)private: Person *Worker; /員工表 void Clear(); /清除內(nèi)存中數(shù)據(jù)public: Company() Worker=0; Load(); Company() Person *p; p=Worker; while(p) p=p->next; delete Wor

18、ker; Worker=p; Worker=0; void Add(); /增加人員 void Delete(); /刪除人員 void Modify(); /修改人員 void Query(); /查詢?nèi)藛T void Set(); /基礎(chǔ)數(shù)據(jù)設(shè)置 void Save(); /數(shù)據(jù)存盤(pán)(包括基礎(chǔ)數(shù)據(jù),人員數(shù)據(jù)) void Load(); /數(shù)據(jù)裝入(包括基礎(chǔ)數(shù)據(jù),人員數(shù)據(jù));/Manager.hextern double ManagerSalary;class Manager:public Person /經(jīng)理類(lèi)public: Manager(char ID,char *Name,int Du

19、ty):Person(ID,Name,Duty) void CalcSalary()Earning=ManagerSalary; void Output() CalcSalary(); cout<<No<<"t"<<Name<<"t經(jīng)理t"<<Earning<<endl; ;/Person.h#include"string.h"class Person /員工類(lèi)protected: int No; /編號(hào) char Name20; /姓名 int Duty; /崗

20、位 double Earning; /收入 Person *next;public: Person(char ID,char *Name,int Duty) this->Duty=Duty; strcpy(this->Name,Name); this->No=ID; virtual void CalcSalary()=0; virtual void Output()=0; friend class Company;/Sales.hextern double SalesPercent; /銷(xiāo)售人員提成class Sales:public Person /銷(xiāo)售員類(lèi)private:

21、 double Amount;public: Sales(char ID,char *Name,int Duty,double Amount):Person(ID,Name,Duty) this->Amount=Amount; double GetAmount() return Amount; void SetAmount(double Amount) this->Amount=Amount; void CalcSalary() Earning=SalesPercent/100*Amount; void Output() CalcSalary(); cout<<No&l

22、t;<"t<<Name"<<"t銷(xiāo)售員t"<<Amount<<"t"<<Earning<<endl; ;/SalesManager.hextern double SalesManagerSalary; /銷(xiāo)售經(jīng)理固定月薪extern double SalesManagerPercent; /銷(xiāo)售經(jīng)理提成class SalesManager:public Person /銷(xiāo)售經(jīng)理類(lèi)private: double Amount;public: SalesMana

23、ger(char ID,char *Name,int Duty):Person(ID,Name,Duty) void SetAmount(double s) Amount=s; void CalcSalary() Earning=SalesManagerSalary+Amount*SalesManagerPercent/100; void Output() CalcSalary(); cout<<No<<"t"<<Name<<"t銷(xiāo)售經(jīng)理t"<<Earning<<endl; ;/Te

24、chnician.hextern double WagePerHour;class Technician:public Person /技術(shù)員類(lèi)private: double t;public: Technician(char ID,char *Name,int Duty,double T):Person(ID,Name,Duty) this->t=T; double GetT() return t; void SetT(double T) this->t=T; void CalcSalary() Earning=WagePerHour*t; void Output() CalcS

25、alary(); cout<<No<<"t"<<Name<<"t技術(shù)員t"<<t<<"t"<<Earning<<endl; ;/Company.cpp#include"ctype.h"#include"fstream.h"#include"string.h"#include"Company.h"#include"iostream.h"#inc

26、lude"Technician.h"#include"SalesManager.h"#include"Sales.h"#include"Manager.h"extern int ID;extern double ManagerSalary; void Company:Clear() /清除內(nèi)存中人員數(shù)據(jù)(內(nèi)部使用) Person* p=Worker; while(p) Worker=p->next; delete p; p=Worker; void Company:Add() Person *p; /新結(jié)點(diǎn)指

27、針 int Duty; char Name20; double Amount,T; cout<<"n* 新增員工 *n" /輸入員工信息 ID+; cout<<"輸入崗位(1-經(jīng)理2-銷(xiāo)售經(jīng)理3-銷(xiāo)售員4-技術(shù)員):" cin>>Duty; cout<<"輸入姓名:" cin>>Name; if(Duty=3) cout<<"本月銷(xiāo)售額:" cin>>Amount; else if(Duty=4) cout<<"

28、;本月工作小時(shí)數(shù)(0-168):" cin>>T; /創(chuàng)建新員工結(jié)點(diǎn) switch(Duty) case 1:p=new Manager(ID,Name,Duty); break; case 2:p=new SalesManager(ID,Name,Duty); break; case 3:p=new Sales(ID,Name,Duty,Amount); break; case 4:p=new Technician(ID,Name,Duty,T); break; p->next=0; /員工結(jié)點(diǎn)加入鏈表 if(Worker) /若已經(jīng)存在結(jié)點(diǎn) Person *p2

29、; p2=Worker; while(p2->next) /查找尾結(jié)點(diǎn) p2=p2->next; p2->next=p; /連接 else /若不存在結(jié)點(diǎn)(表空) Worker=p; /連接 void Company:Delete() /刪除人員 int No; cout<<"n* 刪除員工 *n" cout<<"ID:" cin>>No;/查找要?jiǎng)h除的結(jié)點(diǎn) Person *p1,*p2; p1=Worker; while(p1) if(p1->No=No) break; else p2=p1;

30、 p1=p1->next; /刪除結(jié)點(diǎn) if(p1!=NULL)/若找到結(jié)點(diǎn),則刪除 if(p1=Worker) /若要?jiǎng)h除的結(jié)點(diǎn)是第一個(gè)結(jié)點(diǎn) Worker=p1->next; delete p1; else /若要?jiǎng)h除的結(jié)點(diǎn)是后續(xù)結(jié) p2->next=p1->next; delete p1; cout<<"找到并刪除n" else /未找到結(jié)點(diǎn) cout<<"未找到!n"void Company:Modify() int No,Duty; char Name20; double Amount,T; cou

31、t<<"n* 修改員工 *n" cout<<"ID:" cin>>No;/查找要修改的結(jié)點(diǎn) Person *p1,*p2; p1=Worker; while(p1) if(p1->No=No) break; else p2=p1; p1=p1->next; /修改結(jié)點(diǎn) if(p1!=NULL)/若找到結(jié)點(diǎn) p1->Output(); cout<<"調(diào)整崗位(1-經(jīng)理2-銷(xiāo)售經(jīng)理3-銷(xiāo)售員4-技術(shù)員):" cin>>Duty; if(p1->Duty!=

32、Duty) /若崗位發(fā)生變動(dòng) /修改其它數(shù)據(jù) cout<<"輸入姓名:" cin>>Name; if(Duty=3) cout<<"本月銷(xiāo)售額:" cin>>Amount; else if(Duty=4) cout<<"本月工作小時(shí)數(shù)(0-168):" cin>>T; /創(chuàng)建新員工結(jié)點(diǎn) Person *p3; switch(Duty) case 1:p3=new Manager(p1->No,Name,Duty); break; case 2:p3=new

33、SalesManager(p1->No,Name,Duty); break; case 3:p3=new Sales(p1->No,Name,Duty,Amount); break; case 4:p3=new Technician(p1->No,Name,Duty,T); break; /員工結(jié)點(diǎn)替換到鏈表 p3->next=p1->next; if(p1=Worker) /要替換的結(jié)點(diǎn)是第一個(gè)結(jié)點(diǎn) Worker=p3; else /若要除的結(jié)點(diǎn)是后續(xù)結(jié)點(diǎn) p2->next=p3;/刪除原來(lái)的員工結(jié)點(diǎn) delete p1; else /若崗位沒(méi)有變動(dòng) co

34、ut<<"輸入姓名:" cin>>p1->Name; if(Duty=3) cout<<"本月銷(xiāo)售額:"cin>>Amount; (Sales *)p1)->SetAmount(Amount); else if(Duty=4) cout<<"本月工作小時(shí)數(shù)(0-168):"cin>>T; (Technician *)p1)->SetT(T); cout<<"修改成功!n" else /未找到結(jié)點(diǎn) cout<&

35、lt;"未找到!n"void Company:Query() cout<<"n* 查詢?nèi)藛T本月銷(xiāo)售信息 *n" double sum=0; /銷(xiāo)售額總和 Person *p=Worker; while(p) if(p->Duty=3)sum+=(Sales *)p)->GetAmount(); p=p->next; p=Worker; double sum2=0; /工資總和 while(p) if(p->Duty=2)(SalesManager *)p)->SetAmount(sum); p->Outpu

36、t(); sum2+=p->Earning; p=p->next; cout<<"本月盈利:"<<sum*0.20-sum2<<endl; cout<<"(按照20利潤(rùn)計(jì)算)n"void Company:Set() cout<<"n* 設(shè)置基礎(chǔ)數(shù)據(jù) *n" cout<<"經(jīng)理固定月薪"<<ManagerSalary<<"元:"cin>>ManagerSalary; cout&l

37、t;<"銷(xiāo)售經(jīng)理固定月薪"<<SalesManagerSalary<<"元:"cin>>SalesManagerSalary; cout<<"銷(xiāo)售經(jīng)理提成"<<SalesManagerPercent<<":"cin>>SalesManagerPercent; cout<<"銷(xiāo)售人員提成"<<SalesPercent<<":"cin>>Sal

38、esPercent; cout<<"技術(shù)人員小時(shí)工資"<<WagePerHour<<"(元/小時(shí)):"cin>>WagePerHour; cout<<"員工標(biāo)識(shí)>="<<ID<<":"cin>>ID;void Company:Save() /數(shù)據(jù)存盤(pán)(包括基礎(chǔ)數(shù)據(jù),人員數(shù)據(jù)),均采用文本文件 ofstream fPerson,fBase; char c; cout<<"n保存人員和基礎(chǔ)數(shù)據(jù),是

39、否繼續(xù)?Y/N:" cin>>c; if(toupper(c)!='Y')return; /保存人員編號(hào)、姓名、崗位 fPerson.open("person.txt",ios:out); Person *p=Worker; while(p) fPerson<<p->No<<"t"<<p->Name<<"t"<<p->Duty<<"t" if(p->Duty=3) fPerson&l

40、t;<(Sales*)p)->GetAmount()<<"t" else if(p->Duty=4) fPerson<<(Technician *)p)->GetT()<<"t" fPerson<<endl; p=p->next; fPerson.close();/保存基礎(chǔ)數(shù)據(jù) fBase.open("base.txt",ios:out); fBase<<"經(jīng)理固定月薪t"<<ManagerSalary<&l

41、t;endl; fBase<<"銷(xiāo)售經(jīng)理固定月薪t"<<SalesManagerSalary<<endl; fBase<<"銷(xiāo)售經(jīng)理提成t"<<SalesManagerPercent<<endl; fBase<<"銷(xiāo)售人員提成t"<<SalesPercent<<endl; fBase<<"技術(shù)人員小時(shí)工資t"<<WagePerHour<<endl; fBase<<

42、;"IDt"<<ID<<endl; fPerson.close(); cout<<"n保存人員和基礎(chǔ)數(shù)據(jù)已經(jīng)完成.n"void Company:Load() /數(shù)據(jù)裝入(包括基礎(chǔ)數(shù)據(jù),人員數(shù)據(jù)) /基礎(chǔ)數(shù)據(jù)裝入 ifstream fBase; char buf80; /buf用于保存數(shù)據(jù)文件中的注釋字符串 fBase.open("base.txt",ios:in); fBase>>buf>>ManagerSalary; /經(jīng)理固定月薪 fBase>>buf>

43、>SalesManagerSalary; /銷(xiāo)售經(jīng)理固定月薪 fBase>>buf>>SalesManagerPercent; /銷(xiāo)售經(jīng)理提成 fBase>>buf>>SalesPercent; /銷(xiāo)售人員提成 fBase>>buf>>WagePerHour; /技術(shù)人員小時(shí)工資 fBase>>buf>>ID; /員工標(biāo)識(shí) fBase.close(); /清除內(nèi)存人員數(shù)據(jù) Clear(); /人員數(shù)據(jù)數(shù)據(jù)裝入 ifstream fPerson; Person *p=Worker; int No; char Name20; int Duty; double Amount,T; fPerson.open("person.txt",ios:in); /讀一條記錄 fPerson>>No>>Name>>Duty; if(Duty=3)fPerson>>Amount; else if(Duty=4

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論