高校工資管理系統(tǒng) C課程設(shè)計(jì)

上傳人:痛*** 文檔編號(hào):156012827 上傳時(shí)間:2022-09-25 格式:DOC 頁(yè)數(shù):18 大小:152.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
高校工資管理系統(tǒng) C課程設(shè)計(jì)_第1頁(yè)
第1頁(yè) / 共18頁(yè)
高校工資管理系統(tǒng) C課程設(shè)計(jì)_第2頁(yè)
第2頁(yè) / 共18頁(yè)
高校工資管理系統(tǒng) C課程設(shè)計(jì)_第3頁(yè)
第3頁(yè) / 共18頁(yè)

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《高校工資管理系統(tǒng) C課程設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《高校工資管理系統(tǒng) C課程設(shè)計(jì)(18頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、重慶郵電大學(xué)《C++》課程設(shè)計(jì)報(bào)告 C++課程設(shè)計(jì) 高 校 工 資 管 理 系 統(tǒng) 1.系統(tǒng)概述 通過(guò)設(shè)計(jì)一個(gè)較為簡(jiǎn)單的《高校工資管理系統(tǒng)》,進(jìn)一步熟悉C++中類的概念、類的封裝、繼承的實(shí)現(xiàn)方式。了解系統(tǒng)開(kāi)發(fā)的需求分析、類層次設(shè)計(jì)、模塊分析、編碼測(cè)試、模塊組裝與整體調(diào)試的全過(guò)程,加深對(duì)C++的理解與Visual C++環(huán)境的使用;逐步熟悉程序設(shè)計(jì)的方法,并養(yǎng)成良好的編程習(xí)慣。 2.總體設(shè)計(jì) 2.1職工類的設(shè)計(jì) 基于C++中類的概念,類的封裝,繼承和抽象。編寫一個(gè)Person的基類包含共有的相關(guān)信息和操作,然后使職工類都

2、繼承于此基類從而實(shí)現(xiàn)多態(tài)。 2.2應(yīng)用類的設(shè)計(jì) 編寫一個(gè)Person類的友元類College類來(lái)實(shí)現(xiàn)添加,刪除,查找等功能。 2.3文件的讀寫設(shè)計(jì) 通過(guò)College類中的Save()函數(shù)來(lái)實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ),保存在Person.dat中,而通過(guò)Load()函數(shù)來(lái)實(shí)現(xiàn)Person.dat數(shù)據(jù)的讀入。 3.詳細(xì)設(shè)計(jì)及系統(tǒng)實(shí)現(xiàn) 3.1 Person類 class Person //人員類(抽象類) { protected: int No; //編號(hào) char Name[20]; //姓名 char Duty;

3、 //人員類別標(biāo)志(0-教師,1-實(shí)驗(yàn)員,2-行政人員,3-教師兼實(shí)驗(yàn)員,4-行政兼教師) double Salary; //基本工資 Person *next; //指針域 public: Person() //基類構(gòu)造 { next=0; //指針域設(shè)置為空 } virtual ~Person() //基類虛析構(gòu) { } virtual void Input()=0; //從鍵盤輸入數(shù)據(jù) virtual void Input(ifstream& ifs)=0;

4、 //從文件輸入數(shù)據(jù) virtual void Output()=0; //向屏幕輸出數(shù)據(jù) virtual void Output(ofstream& ofs)=0; //向文件輸出數(shù)據(jù) virtual double Incoming()=0; //計(jì)算收入 friend class College; }; 3.2 Teacher類 class Teacher:virtual public Person //教師類 { protected: int Hours; //教師課時(shí) publi

5、c: //為對(duì)象設(shè)置數(shù)據(jù)分為兩種途徑,通過(guò))構(gòu)造函數(shù),)一般成員函數(shù) //分開(kāi)可以使得程序中應(yīng)用更加靈活 //本程序采用:缺省構(gòu)造+Input() Teacher() //構(gòu)造函數(shù),初始化部分?jǐn)?shù)據(jù) { Duty='0'; Salary=800; } void Input() //鍵盤補(bǔ)充輸入其它數(shù)據(jù) { cout<<"編號(hào):"; cin>>No; cout<<"姓名:"; cin>>Name; cout<<"教師上學(xué)期課時(shí):"; cin>>Hours; }

6、 void Input(ifstream& ifs) { ifs>>No>>Name>>Duty>>Hours; } void Output() { cout<

7、g() { return Salary+(Hours-120)*20; } }; 3.3 Assistant類 class Assistant:virtual public Person //實(shí)驗(yàn)員 { protected: int Allowance; int Hours; public: Assistant() { Duty='1'; Salary=650; Allowance=150; } void Input() { cout<<"編號(hào):"

8、; cin>>No; cout<<"姓名:"; cin>>Name; cout<<"實(shí)驗(yàn)員上學(xué)期實(shí)驗(yàn)課時(shí):"; cin>>Hours; } void Input(ifstream& ifs) { ifs>>No>>Name>>Duty>>Hours; } void Output() { cout<

9、 { ofs<

10、50; Allowance=250; } void Input() { cout<<"編號(hào):"; cin>>No; cout<<"姓名:"; cin>>Name; } void Input(ifstream& ifs) { ifs>>No>>Name>>Duty; } void Output() { cout<

11、& ofs) { ofs<

12、00; } void Input() { cout<<"編號(hào):"; cin>>No; cout<<"姓名:"; cin>>Name; cout<<"教師上學(xué)期課時(shí):"; cin>>Teacher::Hours; cout<<"教師兼職實(shí)驗(yàn)員上學(xué)期實(shí)驗(yàn)課時(shí):"; cin>>Assistant::Hours; } void Input(ifstream& ifs) { ifs>>No>>Name>>Duty>>Teacher::Hours>>Assistant::Hours; } v

13、oid Output() { cout<

14、 return Salary+(Teacher::Hours-120)*20 +Allowance+(Assistant::Hours-70)*20; } }; 3.6 Manager_Teacher類 class Manager_Teacher:public Manager,public Teacher //行政人員兼教師 { public: Manager_Teacher() { Duty='4'; Manager::Salary=750; } void Input() { c

15、out<<"編號(hào):"; cin>>No; cout<<"姓名:"; cin>>Name; cout<<"行政人員兼職教師上學(xué)期課時(shí):"; cin>>Hours; } void Input(ifstream& ifs) { ifs>>No>>Name>>Duty>>Hours; } void Output() { cout<

16、stream& ofs) { ofs<

17、c: College(); //構(gòu)造 ~College(); //析構(gòu) void Add(); //增加職工 void Delete(); //刪除職工 void Modify(); //修改職工 void Print(); //輸出職工信息 void Save(); //職工信息存盤 void Load(); //職工信息裝入 void Finding(); //查找職工 }; 3.7.2 構(gòu)造函數(shù) College::College() //構(gòu)造函數(shù)(創(chuàng)建個(gè)頭結(jié)點(diǎn)的鏈表) {

18、Person *p=new Teacher; PL=p; cout<<"自動(dòng)裝入數(shù)據(jù)...\n"; Load(); } 3.7.3 析構(gòu)函數(shù) College::~College() //析構(gòu)函數(shù)(僅保留個(gè)頭結(jié)點(diǎn)) { Person *p=PL; while(p) //逐個(gè)刪除結(jié)點(diǎn),包括頭結(jié)點(diǎn) { PL=p->next; delete p; p=PL; } PL=0; } 3.7.4 Add函數(shù) void College::Add() //增加職工 { cout<<"\t\t*******

19、*********高校工資管理系統(tǒng)*******************\n\n\n"; cout<<"\n\t\t\t\t**增加職工,輸入x結(jié)束** \n\n"; //查找尾結(jié)點(diǎn) Person *p=PL; while(p->next)p=p->next; char ch='m'; //創(chuàng)建新結(jié)點(diǎn),錄入數(shù)據(jù),連接到鏈表 Teacher *pt; Assistant *pa; Manager *pm; Teacher_Assistant *pta; Manager_Teacher *pmt; cout<<"職工分

20、類碼[0-教師,1-實(shí)驗(yàn)員,2-行政人員,3-教師兼實(shí)驗(yàn)員,4-行政兼教師]:\n\n"; for(;ch!='x';) { cout<<"類別:"; cin>>ch; switch(ch) { case'0': pt=new Teacher; pt->Input(); p->next=pt; break; case '1': pa=new Assistant; pa->Input(); p->next=pa; break; case '2': pm=

21、new Manager; pm->Input(); p->next=pm; break; case '3': pta=new Teacher_Assistant; pta->Input(); p->next=pta; break; case '4': pmt=new Manager_Teacher; pmt->Input(); p->next=pmt; break; } p=p->next; } } 3.7.5 Find函數(shù) //查找職工結(jié)點(diǎn)(返回-找到

22、,-未找到.結(jié)點(diǎn)指針由p1返回,p2為前看指針) int College::Find(int ID,Person **p1,Person **p2) { *p1=PL->next; *p2=PL; while(*p1) { if((*p1)->No==ID) break; //找到 else { *p2=*p1; //繼續(xù)查找 *p1=(*p1)->next; } } return *p1?1:0; } 3.7.6 Clear函數(shù) void College

23、::Clear() //清除所有的職工結(jié)點(diǎn)(僅保留頭結(jié)點(diǎn)) { Person *p=PL->next; while(p) { PL->next=p->next; delete p; p=PL->next; } } 3.7.7 Delete函數(shù) void College::Delete() //刪除職工 { cout<<"\t\t****************高校工資管理系統(tǒng)*******************\n\n\n"; cout<<"\n\t\t\t\t** 刪除職工**\n"; int No;

24、 Person *p1,*p2; cout<<"編號(hào):"; cin>>No; if(!Find(No,&p1,&p2)) { cout<<"指定的人員沒(méi)有找到!\n"; } else { p2->next=p1->next; //連接 delete p1; cout<<"正確刪除!\n"; } } 3.7.8 Modify函數(shù) void College::Modify() //修改職工 { cout<<"\t\t****************高校工資管理系統(tǒng)********

25、***********\n\n\n"; cout<<"\n\t\t\t\t** 修改職工**\n"; int No; Person *p1,*p2; cout<<"編號(hào):"; cin>>No; if(!Find(No,&p1,&p2)) { cout<<"指定的人員沒(méi)有找到!\n"; } else { p1->Output(); //輸出原來(lái)的職工信息(做提示) p1->Input(); //輸入新的職工信息(更新) cout<<"修改完成!\n"; } } 3.7.9

26、 Print函數(shù) void College::Print() //輸出職工信息 { cout<<"\t\t****************高校工資管理系統(tǒng)*******************\n\n\n"; cout<<"\n** 職工信息表**\n\n"; cout<<"編號(hào)\t姓名\t崗位\t\t其它\t工資\n"; Person *p=PL->next; if(!p) { cout<<"無(wú)職工記錄!\n"; return; } while(p) //遍歷鏈表,輸出職工信息 { p->Ou

27、tput(); p=p->next; } } 3.7.10 Save函數(shù) void College::Save() //職工信息存盤 { ofstream f("Person.dat",ios::out); //打開(kāi)文件 //遍歷輸出至文件 Person *p=PL->next; while(p) { p->Output(f); p=p->next; } f.close(); //關(guān)閉文件 cout<<"職工信息已經(jīng)保存在Person.dat.\n"; } 3.7.

28、11 Load函數(shù) void College::Load() //職工信息裝入 { char buf[81]; //臨時(shí)空間 char Duty; //人員類型 Person *p2; //新建結(jié)點(diǎn)的指針 long t; //讀寫位置 //清除現(xiàn)有結(jié)點(diǎn)(保留頭結(jié)點(diǎn)) Clear(); //打開(kāi)文件 ifstream f("Person.dat",ios::in); //建立結(jié)點(diǎn),讀數(shù)據(jù) Person *p=PL; //尾結(jié)點(diǎn)指針 while(1) { //讀取人員

29、類型 t=f.tellg(); f>>buf>>buf>>Duty; if(f) { //根據(jù)人員類型創(chuàng)建新結(jié)點(diǎn) switch(Duty) { case '0': p2=new Teacher; break; case '1': p2=new Assistant; break; case '2': p2=new Manager; break; case '3': p2=new Teacher_Assistant; break;

30、 case '4': p2=new Manager_Teacher; break; default: f.close(); return; } p->next=p2; p=p->next; f.seekg(t); p->Input(f); } else break; } //關(guān)閉文件 f.close(); cout<<"Person.dat數(shù)據(jù)已裝入.\n"; } 3.7.12 Finding函數(shù) v

31、oid College::Finding() { cout<<"\t\t****************高校工資管理系統(tǒng)*******************\n\n\n"; cout<<"\n\t\t\t\t**查找職工**\n"; Person *p1,*p2; int ID; cout<<"編號(hào);"; cin>>ID; cout<<"\n\n"; p1=PL->next; p2=PL; while(p1) { if((p1)->No==ID) { cout<<"編號(hào)\t姓名\t崗位\t\t其它\t工資

32、\n"; (p1)->Output(); break; }//找到 else { p2=p1; //繼續(xù)查找 p1=(p1)->next; } } } 3.8 界面函數(shù) char Meau() { char c; int flag; do { system("cls"); flag=1; cout<<"\t\t****************高校工資管理系統(tǒng)*******************\n\n\n";

33、 cout<<"\t\t\t┏━━━━━━━━━━━━━━━━┑\n"; cout<<"\t\t\t┃ ┃\n"; cout<<"\t\t\t┃ 1、增加職工 ┃\n"; cout<<"\t\t\t┃ 2、刪除職工 ┃\n"; cout<<"\t\t\t┃ 3、查找職工 ┃\n"; cout<<"\t\t\t┃ 4、修改職工

34、 ┃\n"; cout<<"\t\t\t┃ 5、輸出職工信息 ┃\n"; cout<<"\t\t\t┃ 6、數(shù)據(jù)存盤 ┃\n"; cout<<"\t\t\t┃ 7、數(shù)據(jù)裝入 ┃\n"; cout<<"\t\t\t┃ 8、退出 ┃\n"; cout<<"\t\t\t┗━━━━━━━━━━━━━━━━┛\n"; cout<<"\n\n\n\t\t請(qǐng)輸入您的選擇:"; cin>>c

35、; if(c=='1'||c=='2'||c=='3'||c=='4'||c=='5'||c=='6'||c=='7'||c=='8') flag=0; }while(flag); return c; }//顯示主菜單,接受選擇 3.9 主函數(shù) void main() { char ch; College c; //定義大學(xué)對(duì)象 do{ ch=Meau(); switch(ch) { case '1': system("cls");c.Add(); cout<<"\n\n\t\t按任意

36、鍵結(jié)束...\n";getchar();getchar();break; case '2': system("cls");c.Delete();cout<<"\n\n\t\t按任意鍵結(jié)束...\n";getchar();getchar();break; case '3': system("cls");c.Finding();cout<<"\n\n\t\t按任意鍵結(jié)束...\n";getchar();getchar();break; case '4': system("cls");c.Modify();cout<<"\n\n\t\t按任意鍵結(jié)束...\n

37、";getchar();getchar();break; case '5': system("cls");c.Print(); cout<<"\n\n\t\t按任意鍵結(jié)束...\n";getchar();getchar();break; case '6': system("cls");c.Save(); cout<<"\n\n\t\t按任意鍵結(jié)束...\n";getchar();getchar();break; case '7': system("cls");c.Load(); cout<<"\n\n\t\t按任意鍵結(jié)束...\n";getchar();get

38、char(); }; }while(ch!='8'); } 4.系統(tǒng)評(píng)價(jià) 該系統(tǒng)實(shí)現(xiàn)了職工的添加,刪除,查找,顯示,修改,和數(shù)據(jù)的存盤與裝入操作,總體上來(lái)說(shuō)功能比較全面,但仍有一些不足,如界面問(wèn)題,以及程序中的許多繁瑣之處。 5.設(shè)計(jì)結(jié)果與分析 5.1 主界面 實(shí)現(xiàn)各種功能的選擇: 5.2 添加功能 實(shí)現(xiàn)添加功能,輸入“x“結(jié)束: 5.3 刪除功能 5.4 查找功能 5.5 修改功能 5.6 顯示功能 5.7 保存功能 5.8 讀入功能 6.設(shè)計(jì)體會(huì)與建議 6.1 體會(huì) 通過(guò)這次對(duì)《高校工資管理系統(tǒng)》這個(gè)實(shí)驗(yàn)的設(shè)計(jì),充分感受并體會(huì)到了C++中的面對(duì)對(duì)象設(shè)計(jì)的真意,以及學(xué)習(xí)了對(duì)一個(gè)程序的分解和分工完成的方法,掌握了一點(diǎn)編寫的技巧。實(shí)際的操作與解決問(wèn)題的能力更有了大幅的提升。 6.2 建議 希望在以后的課程設(shè)計(jì)中,能更多的得到老師的幫助,可以幫助我們更清晰地理清思路,以及一些編程上的技巧。 7.附錄 7.1 成員 7.2 分工 18

展開(kāi)閱讀全文
溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!