C++課程設(shè)計(jì) 職工工資管理系統(tǒng)(報(bào)告內(nèi)含程序完整清單)
《C++課程設(shè)計(jì) 職工工資管理系統(tǒng)(報(bào)告內(nèi)含程序完整清單)》由會員分享,可在線閱讀,更多相關(guān)《C++課程設(shè)計(jì) 職工工資管理系統(tǒng)(報(bào)告內(nèi)含程序完整清單)(27頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、真誠為您提供優(yōu)質(zhì)參考資料,若有不當(dāng)之處,請指正。 目錄 目錄 i 1 概述 1 1.1 程序的基本功能 1 1.2 其它功能 1 1.3 擴(kuò)展功能 1 2 課題的分析 2 2.1 會員登入系統(tǒng)模塊即systemhead靜態(tài)全局函數(shù)模塊 2 2.2 查詢功能模塊即search函數(shù)模塊 2 2.3 職務(wù)信息匹配及處理模塊即systembody靜態(tài)全局函數(shù)模塊模塊4 2 2.4 循環(huán)控制模塊即while(1)模塊 2 3 詳細(xì)設(shè)計(jì) 3 3.1 類聲明 3 3.2 系統(tǒng)簡略流程圖 4 3.3 會員登入系統(tǒng)模塊即systemhead靜態(tài)全局函數(shù)模塊 5 3.4 查詢功能模
2、塊即search函數(shù)模塊 6 3.5 職務(wù)信息匹配及處理模塊即systembody靜態(tài)全局函數(shù)模塊 7 3.6 循環(huán)控制模塊即while(1)模塊 7 4 課程設(shè)計(jì)總結(jié) 8 4.1 完成情況 8 4.2 遇到的問題及解決 8 參考文獻(xiàn) 11 附錄 12 26 / 27 1 概述 本課程設(shè)計(jì)是《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程的后繼教學(xué)環(huán)節(jié),學(xué)好C++語言就必須堅(jiān)持用面向?qū)ο蟮乃季S方式分析問題、解決問題,最好的方法是仿照教材編寫C++實(shí)際應(yīng)用程序。 此次課程設(shè)計(jì)的題目及要求:實(shí)現(xiàn)一個(gè)簡單的工資管理系統(tǒng)。 1.1 程序的基本功能 系統(tǒng)的主要功能是計(jì)算職工當(dāng)月工資并存檔。公司內(nèi)有
3、5種不同類型的職工:技術(shù)人員、銷售人員、文秘、技術(shù)經(jīng)理和銷售經(jīng)理,他們的工資計(jì)算方式各不相同。 1.2 其它功能 將工資信息存入salary.txt文件中,工資信息包含雇員編號、姓名、職務(wù)、月份、月收入。Info.txt文件中只存留一些信息及會員最后進(jìn)入系統(tǒng)時(shí)輸入的數(shù)據(jù),最多含有編號、姓名、職務(wù)、月份的信息。 1.3 擴(kuò)展功能 采用了會員制度,并將登入信息及編號、密碼存入number.txt文件中。 2 課題的分析 通過對課題的深入分析,我將這個(gè)課題分為以下幾個(gè)模塊,深入詳細(xì)得剖析它們。 2.1 會員登入系統(tǒng)模塊即systemhead靜態(tài)全局函數(shù)模塊 程序運(yùn)行后,先進(jìn)行會員選擇
4、判斷。為減少會員重新注冊,通過輸入兩次編號及密碼,增加繁瑣度。同時(shí)在一定的方面上,又方便忘記密碼的會員。通過密碼匹配,雇員的工資信息這一隱私得到了很好的保障。 2.2 查詢功能模塊即search函數(shù)模塊 首先,從info.txt中提取編號,與salary.txt中的編號進(jìn)行匹配,匹配成功,輸出工資信息,直到文件!indata.eof()==0。. 2.3 職務(wù)信息匹配及處理模塊即systembody靜態(tài)全局函數(shù)模塊模塊4 從info.txt中提取職務(wù)信息,用switch語句進(jìn)行匹配,據(jù)匹配情況調(diào)用不同的函數(shù)進(jìn)行輸入、處理、顯示并以增加方式記錄到salary.txt中。 2.4 循環(huán)控
5、制模塊即while(1)模塊 為了更加方便使用,盡量改善系統(tǒng),實(shí)現(xiàn)search函數(shù)及systembody函數(shù)功能,在search函數(shù)及systembody函數(shù)模塊的基礎(chǔ)上加了一些必要的語句,并增加了外層循環(huán)控制。 3 詳細(xì)設(shè)計(jì) 作為一個(gè)面向?qū)ο蟪绦蛟O(shè)計(jì),我們不得不先從類的聲明開始設(shè)計(jì),而后是一個(gè)整體的流程圖做框架。最后在從小的模塊結(jié)構(gòu)著手。 class TechManager: public Technician, public Manager {private: float gradeBonus; int grade; public: TechManager(fl
6、oat x=1000); void setgrade(float x); void countSalary( ); }; 圖3.1 類聲明 3.1 類聲明 圖3.2 職工工資管理系統(tǒng)簡略流程圖 3.2 系統(tǒng)簡略流程圖 開始 優(yōu)點(diǎn):一個(gè)入口,一個(gè)出口! 處理5 輸入5 輸入4 輸入3 輸入2 輸入1 處理4 處理3 處理2 處理1 工資記錄在salary.txt 職務(wù)代碼分析 顯示
7、 真 1 0 查詢信息 選擇? 是否會員 否 注冊 是 輸入編號及密碼 假 檢驗(yàn)? 真 輸入姓名、職務(wù)、月份 記錄編碼姓名職務(wù)月份至info.txt 從info.txt提取職務(wù)代碼 再次輸入 假 結(jié)束 3.3 會員登入系統(tǒng)模塊即systemhead靜態(tài)全局函數(shù)模塊 清空info.txt并將編號存入到info.txt中 圖3.3 登入系統(tǒng)模塊詳細(xì)流程圖 否 是否會員 輸入編號及密碼 打開name.txt并輸出編號
8、及密碼 匹配? 關(guān)閉name.txt 否 是 以增加方式打開name.txt并輸入編號及密碼 關(guān)閉name.txt .輸入編號及密碼 3.4 查詢功能模塊即search函數(shù)模塊 1 0 否 是 輸出info.txt中的職務(wù)信息 將info.txt的編號與salary.txt中的編號進(jìn)行匹配 是否打開info.txt !indata.eof() ? 圖3.4 查詢功能模塊 以默認(rèn)方式打開info.txt 以默認(rèn)方式打
9、開salary.txt 從文件info.txt中提取編號并關(guān)閉文件 輸出“以上是你的工資信息!” 關(guān)閉salary.txt 3.5 職務(wù)信息匹配及處理模塊即systembody靜態(tài)全局函數(shù)模塊 圖3.5 systembody函數(shù)模塊 以默認(rèn)方式打開info.txt 提取info.txt中的職務(wù)信息 switch語句進(jìn)行職務(wù)匹配 調(diào)用不同函數(shù)進(jìn)行數(shù)據(jù)處理及顯示 3.6 循環(huán)控制模塊即whil
10、e(1)模塊 圖3.6循環(huán)控制模塊即while(1)模塊 1 0 2 輸入選擇操作 查詢功能模塊 Info及recordinfo調(diào)用 systembody調(diào)用 選擇? 結(jié)束 4 課程設(shè)計(jì)總結(jié) 4.1 完成情況 本次面向?qū)ο笳n程設(shè)計(jì)的所有功能基本完成,并且擴(kuò)展功能也成功的實(shí)現(xiàn)!可執(zhí)行文件能正常執(zhí)行指令并運(yùn)行! 4.2 遇到的問題及解決 圖4.2.1錯(cuò)誤 [Error] C:\Users\權(quán)\Desktop\main.o(.data$_vt$8Employee+0xc):main.cpp: undefined reference to `Employee::
11、countSalary(void)' 錯(cuò)誤:沒有定義Employee類中的countSalary函數(shù)! 改正:將原先的“virtual void countSalary();”改為” virtual void countSalary(){}” 圖4.2.2錯(cuò)誤 錯(cuò)誤分析:(會員板塊中)提示:“數(shù)字1表示是!其他鍵表示否!”,但定義的選擇變量為整型。加上我當(dāng)時(shí)輸入字符p。 改正:“其他鍵表示否!”改為”數(shù)字0表示否”。輸入時(shí)按提示進(jìn)行輸入即可! 圖4.2.3錯(cuò)誤 調(diào)試分析:錯(cuò)誤發(fā)生在systemhead靜態(tài)全局函數(shù)內(nèi)的文件輸入循環(huán)模塊中!
12、改正:將以nocreate方式即” ifstream indata("d:\\number.txt",ios::nocreate); “ 該為默認(rèn)打開方式即“ifstream indata("d:\\number.txt");”。 圖4.2.4錯(cuò)誤 調(diào)試分析:錯(cuò)誤發(fā)生在調(diào)用systembody靜態(tài)全局函數(shù)前后的while循環(huán)模塊中,很有可能是數(shù)據(jù)存取混亂造成的。 改正: systemhead靜態(tài)全局函數(shù)內(nèi)“ofstream outdata("d:\\info.txt",ios::trunc);”改為先清 后在以默認(rèn)方式輸入!且將存取整型編號的變量類型從字符型改為整型。
13、 圖4.2.5錯(cuò)誤 錯(cuò)誤:后面莫名其妙的跟著一個(gè)提示語句指令。 分析調(diào)試:當(dāng)語句指令是基類info函數(shù)內(nèi)的語句,很有可能是循環(huán)控制出現(xiàn)了一些問題。 改正:見程序源代碼! 參考文獻(xiàn) [1] 下面給出幾個(gè)參考文獻(xiàn)的格式參考 [2] 匿名,不知道,非常多.計(jì)算機(jī)實(shí)用教程.北京:XX大學(xué)出版社,2004,123~234 [3] [美] Donis Something.Visual X# 2008技術(shù)內(nèi)幕.北京:YYY大學(xué)出版社,2007,56~78 [4] Johns Smith, James Nothing. Programming in C++ or Anything and So
14、mething. http://www.world.ic.ac.uk/lab/cplusplus/nothing/index.html 2007 [5] Anonymous. Something to Say. 2007 [6] 《面向?qū)ο蟪绦蛟O(shè)計(jì)》 ,鄭莉,清華大學(xué)出版社, [7] 《面向?qū)ο蟪绦蛟O(shè)計(jì)C++語言》,朱戰(zhàn)立等編 西安電子科技大學(xué)出版社 [8] 《面向?qū)ο蟪绦蛟O(shè)計(jì)----Visual C++》,劉斌等編, 清華大學(xué)出版社 [9] 《面向?qū)ο蟪绦蛟O(shè)計(jì)----C++語言描述》, Richard Johnsonbaugh(美)等著,蔡宇輝等譯,機(jī)械工業(yè)出版社, 2
15、003 附錄 本系統(tǒng)有三個(gè)源程序文件構(gòu)成,分別為system.h, system.cpp及main.cpp。同時(shí)含有三個(gè)系統(tǒng)文件,分別為info.txt, name.txt及salary.txt,且全部存放在D盤根目錄下,請勿隨意移動或修改系統(tǒng)文件。當(dāng)會員正式進(jìn)入系統(tǒng), info.txt是先清空后用來存儲會員輸入的信息,最多含有編號、姓名、職務(wù)及月份。當(dāng)僅會員注冊時(shí),會將編碼及密碼存儲到name.txt中。當(dāng)僅會員登入的編號及密碼進(jìn)行匹配時(shí),會打開輸入文件name.txt,提取編號及密碼,進(jìn)行匹配。當(dāng)僅當(dāng)輸入工資數(shù)據(jù)時(shí),會將工資、編號、姓名、職務(wù)、月份存儲到salary.txt中。當(dāng)僅
16、當(dāng)查詢工資信息時(shí),會打開salary.txt,提取編號、姓名、職務(wù)、月份及工資。 該系統(tǒng)是一個(gè)只適合5種及5種職務(wù)的工資管理系統(tǒng)。并將職務(wù)分為技術(shù)人員、銷售人員、文秘、技術(shù)經(jīng)理和銷售經(jīng)理,其代號分別為1,2,3,4,5。 雇員編號以整型變量存儲,編號所取范圍在-65536至65535之內(nèi)(包括邊界值),首位數(shù)字表示相應(yīng)的職務(wù)代碼。 該系統(tǒng)能力有限,請根據(jù)指示嚴(yán)格輸入相應(yīng)字符! 程序清單 Main 函數(shù) #include "system.cpp" #include "cstring" static void systemhead(); static void sys
17、tembody(); static void technician(); static void salesman(); static void secretary(); static void techmanager(); static void salesmanager(); using namespace std; void main() { systemhead(); //調(diào)用systemhead靜態(tài)全局函數(shù) cout<<"\n\n1: 查詢工資"; cout<<"\n\n2: 輸入工資數(shù)據(jù)"; cout<<"\n\n0: 退出
18、系統(tǒng)!\n\n";
cout<<"請選擇您需要的操作?。n";
while(1)
{
int xuanze;
cin>>xuanze;
if(xuanze==1)
{
employee a;
cout< 19、e a;
a.info();
a.recordinfo(); //輸入處理工資數(shù)據(jù)并暫時(shí)記錄
systembody(); //調(diào)用systembody靜態(tài)全局函數(shù)
cout<<"\n\n查詢工資請按數(shù)字1,退出系統(tǒng)請按數(shù)字0!\n\n";
}
if(xuanze==0)exit(0);
}
}
static void salesmanager()
{
SalesManager a5;
float sum;
cout<<"請輸入整個(gè) 20、月的總營業(yè)額:";
cin>>sum;
a5.setsalesnum(sum);
a5.countSalary();
a5.recordSalary();
}
static void techmanager()
{
TechManager a4;
int gra;
cout<<"請輸入這個(gè)月的評級:"; //1,2,3三個(gè)等級
cin>>gra;
a4.setgrade(gra);
a4.countSalary();
a4.recordSalary();
}
static void secretary()
{
21、
Secretary a3;
float bon;
cout<<"請輸入這個(gè)月的額外獎(jiǎng)勵(lì):";
cin>>bon;
a3.setbonus(bon);
a3.countSalary();
a3.recordSalary();
}
static void salesman()
{
Salesman a2;
float sum;
cout<<"請輸入整個(gè)月的營業(yè)額:";
cin>>sum;
a2.setsalesnum(sum);
a2.countSalary();
a2.recordSalary();
}
stat 22、ic void technician()
{
Technician a1;
float hour;
cout<<"請輸入整個(gè)月的工作時(shí)間:";
cin>>hour;
a1.setHour(hour);
a1.countSalary();
a1.recordSalary();
}
static void systembody()
{
ifstream indata("info.txt");
if(indata==NULL) exit(0);
int num;
char na[25];
int sta;
indata>>num>>na 23、>>sta; //職務(wù)代號分別為1,2,3,4,5
switch(sta)
{
case 1:technician();break;
case 2:salesman();break;
case 3:secretary();break;
case 4:techmanager();break;
case 5:salesmanager();break;
default:cout<<"職務(wù)代號錯(cuò)誤!\n請重新輸入!";
}
}
static void systemhead()
{
char x,y='y';
int 24、num;
char secret[6];
while(y)
{
cout<<"\n\n系統(tǒng)會員請輸入'y',非系統(tǒng)會員請輸入‘n’\n";
cin>>x;
if(x)
{
cout<<"請輸入編號(首位為職務(wù)代號且為不超過5位數(shù)的整數(shù)):\n";
cin>>num;
cout<<"請輸入密碼(6及6位字符以下):\n";
cin>>secret; //輸入編號及密碼
ifstream indata("number.txt");
if(indat 25、a==NULL)
{
cout<<"文件打開失敗!請聯(lián)系管理員!\n"; exit(0); //文件沒打開,退出程序
}
int num1;char secret1[6];
indata>>num1;
while(!indata.eof())
{
indata>>secret1;
if((num==num1)&&(strcmp(secret,secret1)==0))
{
y=0; //改變判斷變量的值,停止外層循環(huán)
26、break; //終止內(nèi)層循環(huán)
}
indata>>num1;
}
indata.close(); // 檢驗(yàn) 登入信息
}
else
{
cout<<"請輸入編號(首位為職務(wù)代號且為不超過5位數(shù)的整數(shù)):\n";
cin>>num;
cout<<"請輸入密碼(6及6位字符以下):\n";
cin>>secret; //注冊輸入編號及密碼
ofstream outdata("n 27、umber.txt",ios::app);
outdata< 28、 outdata.close(); //輸入編號至info.txt
}
System.cpp
#include 29、
void Employee::search()
{
int num;
ifstream indata0("info.txt");
if(indata0==NULL) exit(0);
indata0>>num;
indata0.close(); //從文件info.txt中提取編號
int num1;char na1[25];int sta1;int mon1;float sal;
int mon0;
ifstream indata("salary.txt");
if(indata==NULL) exit(0);
wh 30、ile(!indata.eof())
{
indata>>num1>>na1>>sta1>>mon1>>sal;
if(num==num1)
cout< 31、
ofstream outdata("info.txt",ios::app);
outdata< 32、ar na1[25];int sta1;int mon1;float sal;
ifstream indata1("salary.txt");
if(indata1==NULL) exit(0);
while(!indata1.eof())
{
indata1>>num1>>na1>>sta1>>mon1>>sal;
if(month!=mon1)
cout< 33、 //依次輸出該雇員的工資信息
}
cout< 34、cian::setHour(float x)
{
workHour=x;
}
Technician::Technician(float x)
{
hourSalary=x;
}
void Technician::countSalary()
{
salary=workHour*hourSalary;
}
void Salesman::setsalesnum(float x)
{
salesnum=x;
}
Salesman::Salesman(float x)
{
getRate=x;
}
void Salesman::co 35、untSalary( )
{
salary=salesnum*getRate;
}
void Secretary::setbonus(float x)
{
bonus=x;
}
Secretary::Secretary(float x)
{
fixedSalary=x;
}
void Secretary::countSalary( )
{
salary=fixedSalary+bonus;
}
Manager::Manager(float x)
{
fixedSalary=x;
}
void TechManager::se 36、tgrade(int x)
{
grade=x;
}
TechManager::TechManager(float x)
{
gradeBonus=x;
}
void TechManager::countSalary()
{
salary=fixedSalary+grade*gradeBonus;
}
SalesManager::SalesManager(float x)
{
getRate=x;
}
void SalesManager::countSalary()
{
salary=fixedSalary+salesnum*g 37、etRate;
}
void Technician::setHour(float x)
{
workHour=x;
}
Technician::Technician(float x)
{
hourSalary=x;
}
void Technician::countSalary()
{
salary=workHour*hourSalary;
}
void Salesman::setsalesnum(float x)
{
salesnum=x;
}
Salesman::Salesman(float x)
{
get 38、Rate=x;
}
void Salesman::countSalary( )
{
salary=salesnum*getRate;
}
void Secretary::setbonus(float x)
{
bonus=x;
}
Secretary::Secretary(float x)
{
fixedSalary=x;
}
void Secretary::countSalary( )
{
salary=fixedSalary+bonus;
}
Manager::Manager(float x)
{
fixedSalar 39、y=x;
}
void TechManager::setgrade(int x)
{
grade=x;
}
TechManager::TechManager(float x)
{
gradeBonus=x;
}
void TechManager::countSalary()
{
salary=fixedSalary+grade*gradeBonus;
}
SalesManager::SalesManager(float x)
{
getRate=x;
}
void SalesManager::countSalary()
{
40、
salary=fixedSalary+salesnum*getRate;
}
System.h
class Employee
{
protected:
int number; char name[25]; int status;
int month; float salary;
public:
void info(); void search();
virtual void countSalary(){}
void recordinfo(); void recordinfo1();
void recordSalary();
};
class 41、Salesman:public Employee
{ protected:
float salesnum;
double getRate;
public:
Salesman(float x=0.05);
void setsalesnum(float x);
void countSalary( );
};
class Technician:public Employee
{
private:
float workHour;
float hourSalary;
public:
Technician(float x=35.0); void setHour 42、(float x);
void countSalary( );
};
class Secretary:public Employee
{private:
float fixedSalary;
float bonus;
public:
Secretary(float x=4000);
void setbonus(float x);
void countSalary( );
};
class Manager{
protected:
float fixedSalary;
public:
Manager(float x=6000);
void 43、countSalary( );
};
class SalesManager:public Salesman, public Manager
{
public:
SalesManager(float x=0.02);
void countSalary( );
};
class TechManager:public Technician, public Manager
{
private:
float gradeBonus;
int grade;
public:
TechManager(float x=1000);
void setgrade(int x);
void countSalary( );
};
- 溫馨提示:
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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 5段太尉逸事狀
- 讀后感作文輔導(dǎo)1
- 有機(jī)磷農(nóng)藥中毒終極
- 電解池的應(yīng)用(教育精品)
- 庫存管理流程及改善課件
- 廬陽區(qū)XX小學(xué)四年級數(shù)學(xué)上冊-1-大數(shù)的認(rèn)識-第4課時(shí)-億以內(nèi)數(shù)的大小比較課件-新人教版
- 合同策劃與合同分析
- 五年級下冊語文課件-1春光染綠我們雙腳-蘇教版
- 闌尾炎的教學(xué)查房csp課件
- 基準(zhǔn)和輪廓度公差課件
- 建立開放式公共物流平臺體系-推動制造業(yè)及物流的聯(lián)動課件
- 三(323)家長會
- 策略管理Chapter3內(nèi)部分析獨(dú)特能力競爭優(yōu)勢與獲利能力課件
- 江城子(教育精品)
- 水果寶寶去旅行 (2)(教育精品)