




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、面向對象程序設計大作業(yè)-計算器類、學校人員管理系統(tǒng)學 院 名 稱 數(shù)學與系統(tǒng)科學學院 專業(yè)班級 信息與計算科學2013-2班 學生姓名 陳濤 學 號 201301050904 指 導 教 師 孫紅梅 完成時間:2015 年 7月 1 日山 東 科 技 大 學大 作 業(yè) 任 務 書一、 題目:計算器類二、 原始資料:面向對象程序設計大作業(yè)要求和任務書三、 應解決下列各主要問題:計算器類:設計一個計算器類模板,適用各類型表達式的“+、-、/” 數(shù)學四則運算以及“、=、=、=、!=、=”等關系運算。數(shù)學四則運算表達式中可含有加、減、乘、除運算符以及各型數(shù)據(jù)的運算對象。程序可以直接輸入數(shù)學表達式以及關
2、系表達式,不需要任何轉換,就可以直接輸出數(shù)學四則運算和邏輯運算的結果。并且操作簡單、界面清晰、靈活、實用、方便等。(系統(tǒng)功能可充分自由發(fā)揮)。擴展功能:三角運算、進制轉換、開方、冪指數(shù)等。問題描述設計一個簡單計算器。用戶輸入四則運算表達式,程序輸出正確結果。當表達式中數(shù)據(jù)格式或運算符輸入錯誤,程序給出錯誤信息。要求:(1)表達式的左、右操作數(shù)可以為整數(shù)或實數(shù)。(2)運算符限制為+,-,*,/(3)輸入表達式允許有前導空格,允許在運算符前后嵌入空格。(4)檢測表達式由以下函數(shù)完成:void check(char *input, int &a, double &y, int &op, char *
3、 &err);其中參數(shù)意義如下: input 輸入表達式的字符串。x 返回表達式的左操作數(shù)轉換結果數(shù)值。此題為簡單起見,把數(shù)據(jù)統(tǒng)一轉換成double類型。y 返回表達式的右操作數(shù)轉換結果數(shù)值。op 返回對運算式的判斷結果。若輸入表達式左、右操作數(shù)和運算符都正確,則返回值為1、2、3、4,分別表示做+、-、*、/運算。若返回-1,表示左操作數(shù)錯;若返回-2,表示右操作數(shù)錯;若返回-3,表示操作符錯。err 返回顯示錯誤信息的字符串。附錄(源程序代碼)#include iostream#include stringusing namespace std;void check(char *input
4、, double &x, double &y, int &op, char * &err);double chage(char *ch);int main() double x,y; int op; char input40,*err; double result; gets(input); check(input,x,y,op,err); if(op0) couterrendl; return 0; switch(op) case 1: result=x+y; break; case 2: result=x-y; break; case 3: result=x*y; break; case
5、4: result=x/y; break; coutinput=result=0&inputj+1=0&inputj1) err=左操作數(shù)錯誤!; op=-1; return; j+; k=0; while(i=0&inputj+1=0&inputj1) err=右操作數(shù)錯誤!; op=-2; return; j+; k=0; while(i=0;i-) wre=1; j=0; while(jf-i-1) wre*=10; j+; result+=(chi-0)*wre; for(i=f+1;chfχi+) wre=1; j=0; while(ji-f) wre*=0.1; j+; r
6、esult+=(chi-0)*wre; return result;指導教師評語成績: 指導教師(簽章):2015年 月 日山 東 科 技 大 學大 作 業(yè) 任 務 書六、 題目:公司人員工資管理系統(tǒng)七、 原始資料:面向對象程序設計大作業(yè)要求和任務書八、 應解決下列各主要問題:公司人員工資管理系統(tǒng):本程序用于管理一個公司的人員工資,所有雇員類(employee)有共性的數(shù)據(jù)成員是:編號、姓名和工資。技術員類(technician)的數(shù)據(jù)成員包括共性的數(shù)據(jù)成員以及工作時間(每月的)、每小時的工資。銷售員類(salesman)的數(shù)據(jù)成員包括共性的數(shù)據(jù)成員以及銷售額(本月)、提成。經理類(manag
7、er)的數(shù)據(jù)成員包括共性的數(shù)據(jù)成員以及月工資。銷售員兼經理類(salesmanager)的數(shù)據(jù)成員包括銷售員類和經理類的數(shù)據(jù)成員。 九、 設計說明書應附有下列圖紙:無十、 小組分工說明:無 六、命題發(fā)出日期:2015.6.10設計完成日期:2015.7.10目的與要求本程序用于管理一個公司的人員工資,所有雇員類(employee)有共性的數(shù)據(jù)成員是:編號、姓名和工資。技術員類(technician)的數(shù)據(jù)成員包括共性的數(shù)據(jù)成員以及工作時間(每月的)、每小時的工資。銷售員類(salesman)的數(shù)據(jù)成員包括共性的數(shù)據(jù)成員以及銷售額(本月)、提成。經理類(manager)的數(shù)據(jù)成員包括共性的數(shù)據(jù)成
8、員以及月工資。銷售員兼經理類(salesmanager)的數(shù)據(jù)成員包括銷售員類和經理類的數(shù)據(jù)成員。問題描述(1) 公司主要有4類人:經理、計術員、銷售員、銷售經理。要求存儲這些人 的職工號、姓名、月工資、年齡、性別等信息。(2) 工資的計算方法 a、經理:固定月薪為8000元; b、技術員:工作時間*小時工資(100元每小時); c、銷售員:銷售額*4%提成; d、銷售經理:底薪(5000元)+所轄部門銷售額總額*0.5%;(3)輸入員工基本數(shù)據(jù),要求每類人員不能少于2人。(4)實現(xiàn)功能數(shù)據(jù)錄入:輸入各項數(shù)據(jù);數(shù)據(jù)統(tǒng)計:統(tǒng)計各銷售經理下屬銷售員的銷售額及銷售額之和;銷售經理按工資進行的冒泡排序
9、;數(shù)據(jù)打?。捍蛴「黝悊T工的數(shù)據(jù)信息;數(shù)據(jù)備份:把各類員工的數(shù)據(jù)信息寫入文件中保存;退出:退出本系統(tǒng)(6)菜單說明 數(shù)據(jù)錄入指通過鍵盤輸入各類員工的各項數(shù)據(jù);數(shù)據(jù)統(tǒng)計指統(tǒng)計各銷售經理下屬銷售員的銷售額 及銷售額之和;銷售經理按工資進行的冒泡排序;數(shù)據(jù)打印指按照表格的格式在屏幕上輸出各類員工的信息;數(shù)據(jù)備份指將所有員工的信息保存到文件;退出:結束程序的運行。附錄(源程序代碼)#include#include#include#include#includeusing namespace std;ofstream outfile;const int b=2;const int t=2;const in
10、t sb=2;const int s=4;int wage(int n);void technicianinformatian();void managerinformation();void salesmanagerinformation();void sellerinformation();void total();void maopao();void yejibiao();void sbrank();void excelhead();void excelmiddle();void excelend();void backup_yejibiao();void backup_sbrank()
11、;void backup_technicianinformatian();void backup_managerinformation();void backup_salesmanagerinformation();void backup_sellerinformation();class employeepublic:int nume() return(num);string nam()return(name);char showsex() return(sex);int showage() return(age);protected:int num;string name;char sex
12、;int age;int wage;class manager:public employeepublic:manager() /8000元為經理固定月薪wage=8000;int managerwage() return(wage);void set_in()coutnum;coutendl;coutname;coutendl;coutsex;coutendl;coutage;coutendl;class technician:public employeepublic:void set_in()coutnum;coutendl;coutname;coutendl;coutsex;coute
13、ndl;coutage;coutendl;coutworktime;coutendl;int get_wage()return (worktime*100); /100元為單位小時工資protected:int worktime;class salesmanager:public employeepublic:salesmanager()allsale=0; void set_in()coutnum;coutendl;coutname;coutendl;coutsex;coutendl;coutage;coutendl;int get_wage()return (5000+allsale*0.
14、005); /5000元為銷售經理底薪protected:int allsale;class seller:public employeepublic:int bossnume() return(bossnum); int money() return(salesmoney); void set_in()coutnum;coutendl;coutname;coutendl;coutsex;coutendl;coutage;coutendl;coutsalesmoney;coutendl;coutbossnum;coutendl; int get_wage() return (salesmone
15、y*0.04);protected:int salesmoney;int bossnum;manager bossb;technician technit;seller salesmans;salesmanager salesbosssb;int salesbosstotalesb=0;salesmanager exchangesb;int exchange; int b=0,t=0,sb=0,s=0;int inputboss()for(int i=0;ib;i+)bossi.set_in(); coutendl;return 0;int inputtechni()for(int j=0;j
16、t;j+)technij.set_in(); coutendl;return 0;int inputsalesman()for(int n=0;ns;n+)salesmann.set_in(); coutendl;return 0;int inputsalesboss()for(int m=0;msb;m+)salesbossm.set_in();return 0;int main ()for(;)cout 小型公司工資管理系統(tǒng)endl;coutendl;cout 請選擇您所需要的操作 endl;cout 數(shù)據(jù)輸入:1,并按回車鍵 endl;cout 數(shù)據(jù)統(tǒng)計:2,并按回車鍵 endl;cou
17、t 數(shù)據(jù)打?。?,并按回車鍵 endl;cout 數(shù)據(jù)備份:4,并按回車鍵 endl;cout 退出系統(tǒng):5,并按回車鍵 endl;coutendl;coutselect;switch(select)case 1: for(;)cout 小型公司工資管理系統(tǒng)endl; coutendl; cout 請選擇您所需要的操作 endl; cout 經理數(shù)據(jù)輸入 :1,并按回車鍵 endl; cout 技術員數(shù)據(jù)輸入 :2,并按回車鍵 endl; cout 銷售員數(shù)據(jù)輸入 :3,并按回車鍵 endl; cout 銷售經理數(shù)據(jù)輸入:4,并按回車鍵 endl; cout 返回上一級 :5,并按回車鍵 en
18、dl; coutendl; coutchoice;switch(choice)case 1: inputboss();b+;break;case 2: inputtechni();t+; break;case 3: inputsalesman();s+;break;case 4: inputsalesboss();sb+;break;case 5:break;default:cout輸入有誤,請重新輸入.endl;if(choice=5) break;break;case 2:if(s=0) cout尚未輸入銷售員數(shù)據(jù).endl;if(sb=0) cout尚未輸入銷售經理數(shù)據(jù).endl;if(
19、s=0|sb=0) break; total();maopao();yejibiao();sbrank(); break;case 3:cout請等待.endl;if(t!=0|b!=0|sb!=0|s!=0)cout職工基本情況一覽表如下endl;if(t!=0)cout技術員endl; technicianinformatian(); coutendl;if(b!=0)cout經理endl; managerinformation(); coutendl;if(sb!=0)cout銷售經理endl; salesmanagerinformation(); coutendl;if(s!=0)co
20、ut銷售員endl; sellerinformation(); coutendl; if(t=0&b=0&sb=0&s=0)cout尚未錄入任何人員數(shù)據(jù).endl;else if(t=0)cout尚未錄入技術員數(shù)據(jù).endl; if(b=0)cout尚未錄入經理數(shù)據(jù).endl; if(sb=0)cout尚未錄入銷售經理數(shù)據(jù).endl; if(s=0)cout尚未錄入銷售員數(shù)據(jù).endl;if(t=0|b=0|sb=0|s=0)cout請錄入所需打印數(shù)據(jù) 或 進行其他操作endl;break; case 4:if(t=0|b=0|sb=0|s=0)cout人員數(shù)據(jù)輸入尚未完全,請打印確認后再備份
21、.endl;break;backup_yejibiao();backup_sbrank(); backup_technicianinformatian(); backup_managerinformation(); backup_salesmanagerinformation(); backup_sellerinformation();cout備份中,請等待.endl;break;case 5:char choice;for(;)coutchoice; if(choice=y) exit(0);else if(choice=n) break;else cout輸入有誤,請重新輸入.endl;
22、default:cout輸入有誤,請重新輸入.endl;return 0;int wage(int n)return(5000+n*0.005);/以下為第二步代碼void total() /求總銷售額for(int n=0;ns;n+)for(int m=0;msb;m+)if(salesmann.bossnume()=salesbossm.nume()salesbosstotalem+=salesmann.money(); break;void maopao() /冒泡法排序for(int n=1;nsb;n+)for(int m=1;msalesbosstotalem)exchanges
23、b=salesbossm-1;salesbossm-1=salesbossm;salesbossm=exchangesb;exchange=salesbosstotalem-1;salesbosstotalem-1=exchange;salesbosstotalem=exchange; void yejibiao() for(int n=0;nsb;n+)cout職工號為salesbossn.nume()銷售經理salesbossn.nam()下屬的銷售員業(yè)績?yōu)?endl; coutendl; cout職工號 姓名 銷售額 endl; for(int j=0;js;j+)if(salesman
24、j.bossnume()=salesbossn.nume() coutendl;coutsetw(12)salesmanj.nume()setw(12)salesmanj.nam()setw(14)salesmanj.money()endl; coutendl; cout銷售額總計: setw(28)salesbosstotalenendl; coutendl; void sbrank() cout銷售經理按工資排序為:-1;n-)excelmiddle();coutsetw(8)salesbossn.nume()setw(8)salesbossn.nam()setw(6)salesbossn
25、.showsex()setw(8)salesbossn.showage()setw(8)wage(salesbosstotalen)endl;excelend();/以上為第二步代碼/以下為職工信息一覽表代碼void technicianinformatian()excelhead();for(int k=0;kt;k+)excelmiddle();coutsetw(8)technik.nume()setw(8)technik.nam()setw(6)technik.showsex()setw(8)technik.showage()setw(8)technik.get_wage()endl;
26、excelend();void managerinformation() excelhead();for(int k=0;kb;k+) excelmiddle();coutsetw(8)bossk.nume()setw(8)bossk.nam()setw(6)bossk.showsex()setw(8)bossk.showage()setw(8)bossk.managerwage()-1;k-) excelmiddle();coutsetw(8)salesbossk.nume()setw(8)salesbossk.nam()setw(6)salesbossk.showsex()setw(8)s
27、alesbossk.showage()setw(8)wage(salesbosstotalek)endl;excelend();void sellerinformation()coutendl;cout 職工號 姓名 性別 年齡 工資 所屬部門經理編號endl;for(int k=0;ks;k+)coutendl;coutsetw(8)salesmank.nume()setw(8)salesmank.nam()setw(6)salesmank.showsex()setw(8)salesmank.showage()setw(8)salesmank.get_wage()setw(16)salesm
28、ank.bossnume()endl;coutendl;/以上為職工信息一覽表代碼/各步表格的表頭,表中和表尾void excelhead() coutendl;cout 職工號 姓名 性別 年齡 工資 endl;void excelmiddle()coutendl;void excelend()coutendl;/各步表格的表頭,表中和表尾/數(shù)據(jù)備份void backup_yejibiao() outfile.open(備份數(shù)據(jù).text,ios:out);for(int n=0;nsb;n+)outfile職工號為salesbossn.nume()銷售經理salesbossn.nam()下
29、屬的銷售員業(yè)績?yōu)?endl;outfileendl;outfile職工號 姓名 銷售額 endl; for(int j=0;js;j+)if(salesmanj.bossnume()=salesbossn.nume() outfileendl;outfilesetw(12)salesmanj.nume()setw(12)salesmanj.nam()setw(14)salesmanj.money()endl; outfileendl; outfile銷售額總計: setw(28)salesbosstotalenendl; outfileendl;void backup_sbrank()outf
30、ile銷售經理按工資排序為:endl; outfileendl;outfile 職工號 姓名 性別 年齡 工資 -1;n-)outfileendl;outfilesetw(8)salesbossn.nume()setw(8)salesbossn.nam()setw(6)salesbossn.showsex()setw(8)salesbossn.showage()setw(8)wage(salesbosstotalen)endl;outfileendl;void backup_technicianinformatian()outfile職工基本情況一覽表如下endl;outfile技術員endl;outfileendl;outfile 職工號 姓名 性別 年齡 工資 endl;for(int k=0;kt;k+)outfileendl;outfiles
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個體建材購銷合同范本
- 家政公司家政公司加盟合同范本
- 合同范本面布局
- 雙方共同研發(fā)合同范本
- gf造價咨詢合同范本
- 業(yè)務委托合同范本
- 合作醫(yī)院合同范本
- 中介售房居間合同范本
- 單位定酸奶合同范例
- 水箱定制合同范本
- D502-15D502等電位聯(lián)結安裝圖集
- 《生物材料》課件 第03章 醫(yī)用金屬材料
- 醫(yī)學英語詞匯詞根詞綴
- EHs安全工作總結
- QC成果:降低低壓臺區(qū)線損率
- 化學教學論(課堂PPT)
- 抗滑樁+預應力錨索施工方案
- 2017版和2002版醫(yī)療器械分類目錄對比完整版
- 飲水機濾芯更換記錄表
- 2021年廣州市事業(yè)單位《公共基礎知識》1000題必考題庫
- 養(yǎng)老保險及職業(yè)年金相關解釋PPT課件
評論
0/150
提交評論