



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、.#include <string>#include <iostream>#include <fstream>#include <iomanip>#include <memory.h>#include <stdio.h>#include <conio.h>#include <stdlib.h>using namespace std;struct Employee/聲明職工的結(jié)構(gòu)作為鏈表節(jié)點。/- 數(shù)據(jù)域 -string m_Code;string m_Name;unsigned short int
2、m_Year;string m_Sex;string m_Post;string m_Department;unsigned int m_Wage;/鏈表節(jié)點的指針域 -struct Employee* Next;/- 個人習(xí)慣:取別名 -typedef struct Employee Node;typedef Node* Link;/- 函數(shù)聲明 -Link Create(Link Head);void Release(Link Head);Link Add(Link Head);bool Search(Link Head);Link Search_Unique(Link Head);voi
3、d Display_List(Link Head);void Display_Node(Link pNode);Link Modify(Link Head);Link Del(Link Head);void Save_ByFile(Link Head,fstream& ofile);Link Sort(Link Head);/- 函數(shù)實現(xiàn) -Link Create(Link Head)學(xué)習(xí)好幫手./創(chuàng)建一個帶頭節(jié)點的空鏈表。Head=(Link)new Node;if(!Head)cout<<" 分配內(nèi)存失?。?"<<endl;return
4、NULL;Head->m_Code=""Head->m_Name=""Head->m_Year=0;Head->m_Sex=""Head->m_Post=""Head->m_Department=""Head->m_Wage=0;Head->Next=NULL;return Head;void Release(Link Head)/釋放鏈表。Link ptr;/ 聲明一個操作用的指針。while(Head!=NULL)ptr=Head;Head=H
5、ead->Next;delete ptr;/ 釋放節(jié)點資源。Link Add(Link Head)/前插法添加數(shù)據(jù)。Link pNew;/聲明一個新節(jié)點。char again;string code,name,sex,post,department;unsigned short int year;unsigned int wage;dopNew=(Link)new Node;/數(shù)據(jù)域。cout<<" 請輸入職工代碼: "學(xué)習(xí)好幫手.cin>>code;cout<<endl<<" 請輸入職工姓名: "c
6、in>>name;cout<<endl<<" 請輸入職工出生年份: "cin>>year;while(cin.fail()cout<<" 請輸入正確的年份格式。"<<endl;cin.clear();fflush(stdin);cin>>year;cout<<endl<<" 請輸入職工性別: "cin>>sex;cout<<endl<<" 請輸入職工職稱: "cin>
7、>post;cout<<endl<<" 請輸入職工部門: "cin>>department;cout<<endl<<" 請輸入職工工資: "cin>>wage;while(cin.fail()cout<<" 請輸入正確的工資數(shù)據(jù)。"<<endl;cin.clear();fflush(stdin);cin>>wage;cout<<endl;pNew->m_Code=code;pNew->m_Name=
8、name;pNew->m_Year=year;pNew->m_Sex=sex;pNew->m_Post=post;pNew->m_Department=department;pNew->m_Wage=wage;/指針域。pNew->Next=Head->Next;Head->Next=pNew;cout<<" 數(shù)據(jù)添加成功!是否繼續(xù)添加?(Y/N)"<<endl;cin>>again;while(again='Y'|again='y');return Head
9、;學(xué)習(xí)好幫手.bool Search(Link Head)/查詢同時滿足 “姓名 ”和“部門 ”的職工信息。Link ptr;string department;string name;ptr=Head->Next;cout<<" 請輸入部門: "cin>>department;cout<<endl<<" 請輸入姓名: "cin>>name;cout<<endl<<"-查詢結(jié)果 -"<<endl;while(ptr)if(ptr-&g
10、t;m_Name=name)&&(ptr->m_Department=department)Display_Node(ptr);/ 打印滿足條件的節(jié)點。return true;ptr=ptr->Next;/ 查詢下一節(jié)點。cout<<" 無此職工的信息。 "<<endl;return false;Link Search_Unique_Front(Link Head)/查詢滿足 “職工代碼 “的職工信息(職工代碼必需唯一)。Link ptr;string code;ptr=Head;cout<<" 請輸
11、入職工代碼: "cin>>code;cout<<endl<<"-查詢結(jié)果 -"<<endl;while(ptr->Next)if(ptr->Next->m_Code=code)/Display_Node(ptr);/ 打印滿足條件的節(jié)點。return ptr;/ 注意,是返回的查詢到的節(jié)點的直接前趨節(jié)點。ptr->Next=ptr->Next->Next;/查詢下一節(jié)點。return ptr;學(xué)習(xí)好幫手.void Display_List(Link Head)Link ptr;pt
12、r=Head->Next;cout<<"=所有職工信息 ="<<endl;while(ptr)Display_Node(ptr);ptr=ptr->Next;void Display_Node(Link pNode)/在標(biāo)準(zhǔn)輸出設(shè)備上輸出。cout<<setw(10)<<left<<pNode->m_Code<<setw(10)<<left<<pNode->m_Name<<setw(10)<<left<<pNode-&g
13、t;m_Year<<setw(10)<<left<<pNode->m_Sex<<setw(10)<<left<<pNode->m_Post<<setw(10)<<left<<pNode->m_Department<<setw(10)<<left<<pNode->m_Wage<<endl;/setw(10) 表示占 10 個字符位置。 Link Modify(Link Head)/ 修改單一個節(jié)點。Link ptr;p
14、tr=Search_Unique_Front(Head);string code,name,sex,post,department;unsigned short int year;unsigned int wage;if(ptr->Next)cout<<"- 你現(xiàn)在可以修改此職工的信息了-"<<endl;/數(shù)據(jù)域。cout<<" 請輸入職工代碼: "cin>>code;cout<<endl<<" 請輸入職工姓名: "cin>>name;cout&
15、lt;<endl<<" 請輸入職工出生年份: "cin>>year;學(xué)習(xí)好幫手.while(cin.fail()cout<<" 請輸入正確的年份格式。"<<endl;cin.clear();fflush(stdin);cin>>year;cout<<endl<<" 請輸入職工性別: "cin>>sex;cout<<endl<<" 請輸入職工職稱: "cin>>post;cout&
16、lt;<endl<<" 請輸入職工部門: "cin>>department;cout<<endl<<" 請輸入職工工資: "cin>>wage;while(cin.fail()cout<<" 請輸入正確的工資數(shù)據(jù)。"<<endl;cin.clear();fflush(stdin);cin>>wage;cout<<endl;ptr->Next->m_Code=code;/ 因 ptr 是前趨節(jié)點,所以要用 ptr
17、->Next; ptr->Next->m_Name=name;ptr->Next->m_Year=year;ptr->Next->m_Sex=sex;ptr->Next->m_Post=post;ptr->Next->m_Department=department;ptr->Next->m_Wage=wage;cout<<" 沒找到此職工的記錄 ,無法修改。 "<<endl; return Head;Link Del(Link Head)Link ptr;Link ptr_
18、front;ptr_front=Search_Unique_Front(Head);ptr=ptr_front->Next;if(ptr)學(xué)習(xí)好幫手.ptr_front->Next=ptr->Next;delete ptr;/ 刪除此節(jié)點。cout<<" 沒找到此職工的記錄 ,無法刪除。 "<<endl; return Head;void Save_ByFile(Link Head,fstream& ofile)Link pNode;pNode=Head->Next;ofile.clear();/ 清除文件結(jié)束狀態(tài)。w
19、hile(pNode)ofile<<setw(10)<<left<<pNode->m_Code<<setw(10)<<left<<pNode->m_Name<<setw(10)<<left<<pNode->m_Year<<setw(10)<<left<<pNode->m_Sex<<setw(10)<<left<<pNode->m_Post<<setw(10)<<l
20、eft<<pNode->m_Department<<setw(10)<<left<<pNode->m_Wage<<endl;/setw(10)表示占 10 個字符位置。pNode=pNode->Next;cout<<" 數(shù)據(jù)文件保存成功! "<<endl;Link Sort(Link Head)/我創(chuàng)建的是帶頭節(jié)點的鏈表。用直接插入法。if(Head->Next=NULL)|(Head->Next->Next=NULL)/ 此步條件判斷非常有價值。cout
21、<<" 數(shù)據(jù)節(jié)點數(shù)少于 2 個,不用排序! "<<endl; return Head;/- 第二步;Link ptr;Link ptr_F;Link ptr_N;ptr=Head->Next->Next;ptr_F=Head;學(xué)習(xí)好幫手.Head->Next->Next=NULL;/到此,分成了兩個鏈表。/第三步。while(ptr)ptr_N=ptr->Next;ptr_F=Head;/ptr_F的歸位。while(ptr_F->Next)if(ptr->m_Wage>ptr_F->Next-&
22、gt;m_Wage)ptr->Next=ptr_F->Next;ptr_F->Next=ptr;break;/ifelseptr_F=ptr_F->Next;/while(ptr_F->Next)if(ptr_F->Next=NULL)ptr->Next=ptr_F->Next;ptr_F->Next=ptr;/ 表示插到有序鏈表的最后面了。ptr=ptr_N;/ 歸位,準(zhǔn)備下一次排序。/while(ptr)cout<<" 從高到低,排序成功! "<<endl;return Head;int ma
23、in()Link Head=0;Head=Create(Head);fstream iofile;iofile.open("d:iofile.txt",ios_base:in|ios_base:out|ios_base:app);/文件以三種方式打開。if(!iofile)學(xué)習(xí)好幫手.cout<<" 打開文件失敗! "<<endl;return -1;int menu;while(1)cout<<"*"<<endl;cout<<"*=菜單選頂=*"<<endl; cout<<"*=*" <<endl;cout<<"* 1. 注冊職工 2.修改信息 3.刪除信息 4.信息查詢 *"<<endl; cout<<"* 5. 保存文件 6.工資排行 7.信息顯示 0.退出系統(tǒng) *&qu
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞動合同范本海南
- 2025年硬質(zhì)橡膠及其制品合作協(xié)議書
- 2025年孕產(chǎn)婦保健項目建議書
- 合伙酒店轉(zhuǎn)讓合同范本
- epc工程總價合同范本
- 信貸機構(gòu)合同范本
- 創(chuàng)業(yè)魔芋種植合作合同范本
- 合伙奶茶協(xié)議合同范本
- 低價手套租賃合同范本
- 南寧個人租房合同范本
- 人教版(2025新版)七年級下冊數(shù)學(xué)第七章 相交線與平行線 單元測試卷(含答案)
- 汽輪機輔機培訓(xùn)
- 國之重器:如何突破關(guān)鍵技術(shù)-筆記
- 全套IECQ QC080000-2017 有害物質(zhì)過程管理體系程序文件
- 冀教版三年級數(shù)學(xué)下冊《第二單元第2課時 兩位數(shù)乘兩位數(shù)(進位)的乘法》教學(xué)課件PPT小學(xué)公開課
- 成都市入戶申請表
- 主題班會:預(yù)防流行性感冒課件
- 對外援助成套項目管理辦法(試行)
- 鐵路工程預(yù)算定額標(biāo)準(zhǔn)
- 管道吹掃、試壓檢驗批質(zhì)量驗收記錄表
- 教學(xué)教案、作業(yè)、記錄檢查記錄表
評論
0/150
提交評論