《程序設(shè)計課程設(shè)計》設(shè)計職工信息管理系統(tǒng)

上傳人:無*** 文檔編號:41034041 上傳時間:2021-11-18 格式:DOC 頁數(shù):19 大?。?27KB
收藏 版權(quán)申訴 舉報 下載
《程序設(shè)計課程設(shè)計》設(shè)計職工信息管理系統(tǒng)_第1頁
第1頁 / 共19頁
《程序設(shè)計課程設(shè)計》設(shè)計職工信息管理系統(tǒng)_第2頁
第2頁 / 共19頁
《程序設(shè)計課程設(shè)計》設(shè)計職工信息管理系統(tǒng)_第3頁
第3頁 / 共19頁

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

10 積分

下載資源

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

資源描述:

《《程序設(shè)計課程設(shè)計》設(shè)計職工信息管理系統(tǒng)》由會員分享,可在線閱讀,更多相關(guān)《《程序設(shè)計課程設(shè)計》設(shè)計職工信息管理系統(tǒng)(19頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、 《程序設(shè)計課程設(shè)計》設(shè)計說明書 題目: 職工信息管理系統(tǒng) 班級: 1301 專業(yè): 計算機科學與技術(shù) 學號: ********** 姓名: ***** 上課老師: 張 桂 珠 評定成績: 日期: 2014.5.31 題目: 職工信息管理系統(tǒng) 設(shè)

2、計要求: 1、要求: 課程設(shè)計要求采用面向?qū)ο笙到y(tǒng)分析與設(shè)計方法,首先對問題進行需求分析,識別類與對象,設(shè)計合理的類結(jié)構(gòu)與程序結(jié)構(gòu)實現(xiàn)程序功能(恰當應(yīng)用教材所介紹的各種數(shù)據(jù)結(jié)構(gòu)和算法),用c++語言編寫程序;然后設(shè)計各種可能的數(shù)據(jù)(測試對象)對程序進行測試,觀察運行結(jié)果是否正確,確保在可見范圍內(nèi)的測試對象都能得到正確結(jié)果。 設(shè)計合理的程序完成題目要求的功能,輸入輸出信息時注意輸入輸出的格式,應(yīng)該在輸入前提示輸入的格式和內(nèi)容;將程序的各項信息保存到文件并能打開,用c++的輸入輸出流實現(xiàn)。 2、題目內(nèi)容: 該系統(tǒng)在磁盤上存儲某單位所有職工的基本信息,對于每一

3、個職工存儲:職工 編號、姓名、性別、出生年月、職稱、最后學歷、工資和婚否。 系統(tǒng)功能要求如下: (1)創(chuàng)建存儲該單位職工信息的存儲系統(tǒng)(第一次輸入職工基本信息時); (2)增加職工信息,增加新職工時輸入新職工的基本信息; (3)刪除某職工的基本信息(如,死亡或離職); (4)修改某職工(指定職工編號)的某些信息(如,加工資、獲得新學位、晉升職稱、結(jié)婚或離婚)。 (5)可以輸出符合某種特征的職工信息列表: ①全體職工信息列表; ②某職稱的職工信息列表; ③某年月以后出生的職工信息列表; ④某年月

4、以前出生的職工信息列表; ⑤未婚職工信息列表。 3、開發(fā)環(huán)境: Code::Blocks 10.05 設(shè)計思路: 1、定義結(jié)構(gòu)體birth存儲年月日數(shù)據(jù),再定義結(jié)構(gòu)體worker存儲職工的數(shù)據(jù)。 2、定義類operate,它包含3個私有數(shù)據(jù)成員 1、職工數(shù)據(jù)worker a[HUMAN_NUMBER], 2、已存數(shù)據(jù)長度lengh, 3、a的總體長度siae, 3、類中包含19公有函數(shù): 1、void set_first();對所有數(shù)據(jù)的初始化函數(shù), 2、void cin_all();全體數(shù)據(jù)輸入函數(shù), 3、

5、void cout_all();全體數(shù)據(jù)輸出函數(shù), 4、void cout_one(int i);一個職工數(shù)據(jù)的輸出函數(shù), 5、void elete_one();一個職工數(shù)據(jù)的刪除函數(shù), 6、void add_one();一個職工數(shù)據(jù)的添加函數(shù), 7、void cout_after_time();輸出在某個時間后出生的所有職工數(shù)據(jù)函數(shù), 8、void cout_before_time();輸出在某個時間前出生的所有職工數(shù)據(jù)函數(shù), 9、void cout_position();輸出某個職稱的所有的職工數(shù)據(jù)函數(shù), 10、void

6、 cout_ifmarry();輸出所有未婚的職工數(shù)據(jù)函數(shù), 11、void change_salary();改變某個職工的工資函數(shù), 12、void change_educate();改變某個職工的最高學歷函數(shù), 13、void change_marry();改變某個職工的婚姻狀態(tài)函數(shù), 14、void change_position();改變某個職工職稱函數(shù), 15、void chang_lengh(int i);改變類中的數(shù)據(jù)長度lengh函數(shù), 16、void amend();修改職工數(shù)據(jù)的函數(shù),包含了11,12,13,14

7、,這4個函數(shù),通過顯示操作類型,選擇讀取11,12,13,14中某個或多個函數(shù),退出操作室對出該函數(shù), 17、void output();輸出職工數(shù)據(jù)函數(shù),包含了7,8,9,10,這4個函數(shù),通過顯示操作類型,選擇讀取7,8,9,10中某個或多個函數(shù),退出操作室對出該函數(shù), 18、void save();將職工數(shù)據(jù)存儲在已定義文件中函數(shù), 19、int load_data();將已存儲在文件中的數(shù)據(jù)讀取進入程序中來函數(shù), 4、 在main()函數(shù)中,定義類worker的對象man, 1、第一部分操作:顯示可以對對象man進行的操作(讀取,創(chuàng)建,退

8、出)和對輸入的操作進行讀取判斷,選擇調(diào)用函數(shù)cin_all(),loat_data()或退出(退出創(chuàng)建過程)。 2、第二部分操作:顯示可以對對象man進行的操作(添加,刪除,修改,輸出,退出),對輸入的操作的判斷進行讀取判斷,選擇調(diào)用函數(shù)add_one(),delete_one(),amend(),out_put()或退出(退出系統(tǒng))。 程序代碼: #include #include #include #include #define true 1 #define flase 0

9、#define HUMAN_NUMBER 50 #define ADD 10 using namespace std; //出生日期儲存 typedef struct{ int year; int month; int day; }birth; //職工數(shù)據(jù)儲存 typedef struct{ long number;//職工編號 string name;//姓名 string sex;//性別 birth birthday;//出生年月 string position;//職稱 string

10、educate;//最后學歷 float salary;//工資 int marry;//婚否 }worker; //儲存系統(tǒng) class operate{ private: worker a[HUMAN_NUMBER]; int lengh; int size; public: void set_first(); void cin_all(); void cout_all(); void cout_one(int i); void delete_one(); void add_one();

11、 void cout_after_time(); void cout_before_time(); void cout_position(); void cout_ifmarry(); void change_salary(); void change_educate(); void change_marry(); void change_position(); void chang_lengh(int i); void amend(); void output(); void save();

12、 int load_data(); }; // //第一次建立 void operate::set_first(){ for(int j=0;j!=HUMAN_NUMBER-1;j++){ a[j].birthday.year=0; a[j].birthday.month=0; a[j].birthday.day=0; a[j].educate="未知"; a[j].marry=0; a[j].name="未知"; a[j].number

13、=0; a[j].position="未知"; a[j].salary=0; a[j].sex="未知"; } a[0].number=0; lengh=0; size=HUMAN_NUMBER; } //第一次所有數(shù)據(jù)輸入 void operate::cin_all(){ cout<<"輸入(編號為負時結(jié)束)"<

14、>a[i].number; if(a[i].number<0){ cout<<"職工數(shù)據(jù)輸入完成。"<>a[i].name; cout<<" 性別: ";cin>>a[i].sex; cout<<" 出生日期: "<>a[i].birthday.year;cout<<" 月:";cin>>a[i].birthday.month;cout<<" 日:";ci

15、n>>a[i].birthday.day; cout<<" 職稱:";cin>>a[i].position; cout<<" 最后學歷:";cin>>a[i].educate; cout<<" 工資:"; cin>>a[i].salary; cout<<" 是否結(jié)婚(是:1,不是:-1):";cin>>a[i].marry; cout<

16、 a[i].number=-1; save(); } //輸出所有數(shù)據(jù) void operate::cout_all(){ cout<

17、 出生年月:"<=0){ cout<<"結(jié)婚"<

18、 else cout<<"未婚"<

19、rthday.day<=0){ cout<<"結(jié)婚"<

20、:cout_after_time(){ system("cls"); birth t; cout<<"輸入要求在某個時間出生以后的職工的那個時間:"; cout<<"出生日期: "<>t.year;cout<<"月:";cin>>t.month;cout<<"日:";cin>>t.day; int s=0; for(int i=0;it.year){ if(s==0) cout<<"輸出

21、在時間"<t.month){ if(s==0) cout<<"輸出在時間"<

22、t.day){ if(s==0) cout<<"輸出在時間"<

23、(i); s++; } } } if(a[i+1].number<=0) break; } if(s==0) cout<<" 沒有在"<

24、 cout<<"輸入要求在某個時間出生以前的職工的那個時間:"; cout<<"出生日期: "<>t.year;cout<<"月:";cin>>t.month;cout<<"日:";cin>>t.day; int s=0; for(int i=0;i

25、endl; cout_one(i); s++; } else if(a[i].birthday.year==t.year){ if(a[i].birthday.month

26、 s++; } else if(a[i].birthday.month==t.month){ if(a[i].birthday.day

27、 } } if(a[i+1].number<=0) break; } if(s==0) cout<<" 沒有在"<>p; cout<

28、<"輸出職稱為"<0;j++){ if(a[j].position==p){ cout_one(j); s++; } } if(s==0){ cout<<"沒有職稱為"<

29、stem("cls"); cout<<"輸出所有未婚的職工數(shù)據(jù):"<

30、delete_one(){ int i=0,n; system("cls"); cout<<"輸入要刪除職工的編號:"; cin>>n; for(;i0;i++){ a[i]=a[i+1]; } save

31、(); lengh--; cout<>a

32、[i].number; cout<<" 姓名:";cin>>a[i].name; cout<<" 性別: ";cin>>a[i].sex; cout<<" 出生日期: "<>a[i].birthday.year; cout<<" 月:"; cin>>a[i].birthday.month; cout<<" 日:"; cin>>a[i].birthday.day; cout<<" 職稱:";

33、 cin>>a[i].position; cout<<" 最后學歷:"; cin>>a[i].educate; cout<<" 工資:"; cin>>a[i].salary; cout<<" 是否結(jié)婚(是:1,不是(否):-1):";cin>>a[i].marry; cout<

34、" 姓名:"<=0){ c

35、out<<"結(jié)婚"<>num; int x=0;

36、 for(;x>a[x].salary; cout<<"職工"<

37、ary<>num; int x=0; for(;x

38、"沒有編號為"<>a[x].educate; cout<<"職工"<

39、num; cin>>num; int x=0; for(;x0){ cout<<"編號為"<

40、-1;} else { cout<<"編號為"<>num; int x=0; for(;x

41、 break; } system("cls"); if(x==lengh) cout<<"沒有編號為"<>a[x].position; cout<<"職工"<

42、e(){ ofstream file("F:\\c++實驗\\data.txt",ios_base::out|ios_base::trunc); for(int i=0;i

43、day.day<<" "; file<

44、 file>>a[i].number; file>>a[i].name; file>>a[i].sex; file>>a[i].birthday.year>>a[i].birthday.month>>a[i].birthday.day; file>>a[i].position; file>>a[i].educate; file>>a[i].salary; file>>a[i].marry; } lengh=i; file.close(); system("cls"); cout<<"讀取成功。"<

45、return 1; } void operate::amend(){ int in;int key=1; system("cls"); while(key) { cout<<"輸入要修改的職工項目(輸入數(shù)字):"<>in; switch(i

46、n) { case 1: key=0;break; case 2: change_position(); save();break; case 3: change_educate(); save();break; case 4: change_salary(); save();break; case 5:

47、 change_marry(); save();break; default: cout<<"輸入錯誤,請重新輸入."<

48、表" <>in; switch(in){ case 1: system("cls"); cout_all();break;

49、 case 2: cout_position();break; case 3: cout_after_time();break; case 4: cout_before_time();break; case 5: cout_ifmarry();break; case 6: key=0; system("cls");break; default

50、: cout<<"輸入錯誤,請重新輸入."<

51、讀取后不再創(chuàng)建。)"<>in; switch(in){ case 1: key=0;break; case 2: man.cin_all(); man.save();break; case 3: man.load_data();break; default: cout<<"輸入錯誤,請重新輸入."<

52、k; } } system("cls"); key=1; while(key){ cout<<"請輸入想要進行的操作(輸入數(shù)字):"<>in; switch(in){ case 1: key

53、=0; cout<<"退出系統(tǒng),謝謝使用該系統(tǒng)。";break; case 2: man.add_one();man.save();break; case 3: man.delete_one();man.save();break; case 4: man.amend();break; case 5: man.output();break; default: cout<<"輸入錯誤,請重新輸入."<

54、 } }return 0; } 運行結(jié)果: 1、讀取已儲存在文件的數(shù)據(jù): 2、對數(shù)據(jù)進行添加,刪除、修改和輸出: 3、輸出的想要輸出的對象: 4、輸出所有對象的數(shù)據(jù): 5、退出職工系統(tǒng): 安裝使用說明:所有的操作都必須輸入數(shù)字、根據(jù)顯示屏的顯示進行操作。 在開發(fā)過程中所遇到的問題及其解決辦法: 1、數(shù)據(jù)第一次初始化時,結(jié)構(gòu)體中每個數(shù)據(jù)的類型未做好。解決辦法:重新對結(jié)構(gòu)體worker中的數(shù)據(jù)的類型進行定義。 2、在功能(4)修改某職工(指定職工編號)的某些信息的程序編寫時,對a[]

55、中的編號理解錯誤,導(dǎo)致修改數(shù)據(jù)的不成功。解決辦法:再定義一個用來保存a[]中的數(shù)組編號,而用num保存輸入的職工編號數(shù)據(jù)。 3、屏幕上數(shù)據(jù)太多顯示非常繁瑣。解決辦法:在網(wǎng)上查找刷屏函數(shù)system(“cls”)并了解其使用方法 4、對顯示界面的刷屏函數(shù)使用時出現(xiàn)了顯示屏沒有操作指令的情況。解決辦法:重新對所有的的刷屏函數(shù)進行排列和增添對顯示屏上輸出。 小結(jié):在這個職工管理系統(tǒng)中,從最開始的結(jié)構(gòu)體的編寫,到最后的程序調(diào)試,都是慢慢的進行的,思路很清晰。在編寫過程中對程序進行了很多的改變和結(jié)構(gòu)的調(diào)節(jié)。像程序中的刷屏函數(shù),文件的讀取,寫入函數(shù)等都是通過網(wǎng)絡(luò)的查找,從而對其有了更好的了解,才能將其寫入這個程序中。代碼長度越大,寫代碼的時候的越要有很清晰的思路和所有函數(shù)之間的數(shù)據(jù)類型的兼容。

展開閱讀全文
溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

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

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

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


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