職工信息管理系統(tǒng)_第1頁
職工信息管理系統(tǒng)_第2頁
職工信息管理系統(tǒng)_第3頁
職工信息管理系統(tǒng)_第4頁
職工信息管理系統(tǒng)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

職工信息管理系統(tǒng)共4頁第PAGE1頁《程序設(shè)計基礎(chǔ)》課程設(shè)計報告設(shè)計題目職工信息管理系統(tǒng)專業(yè)計算機科學(xué)與技術(shù)班級姓名學(xué)號完成日期職工信息管理系統(tǒng)全文共職工信息管理系統(tǒng)全文共35頁,當前為第1頁。目錄(空兩行)1.問題描述………………頁碼2.系統(tǒng)設(shè)計………………頁碼3.數(shù)據(jù)結(jié)構(gòu)與算法描述…………………頁碼4.測試結(jié)果與分析………頁碼5.總結(jié)…………………頁碼6.參考文獻………………頁碼附錄程序源代碼…………頁碼(要求:給出一級目錄,宋體加粗,四號字,1.5倍行距。)職工信息管理系統(tǒng)全文共職工信息管理系統(tǒng)全文共35頁,當前為第2頁。(報告正文部分):課程設(shè)計題目(要求:正文部分一律用小四號字,宋體,1.5倍行距。一級標題靠左,四號加粗。二級、三級標題靠左,小四加粗。)1.問題描述[問題描述]對單位的職工進行管理,包括插入、刪除、查找、排序等功能。[基本要求]職工對象包括姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話等信息。1)新增一名職工:將新增職工對象按姓名以字典方式存到職工管理文件中。2)刪除一名職工:從職工管理文件中刪除一名職工對象。3)查詢:從職工管理文件中查詢符合某些條件的職工。4)修改:檢索某個職工對象,對其某些屬性進行修改。5)排序:按某種需要對職工對象文件進行排序。[實現(xiàn)提示]職工對象數(shù)不必很多,便于一次讀入內(nèi)存,所有操作不經(jīng)過內(nèi)外存交換。1)由鍵盤輸入職工對象,以文件方式保存。程序執(zhí)行時先將文件讀入內(nèi)存。2)對職工對象中的"姓名"按字典順序進行排序。3)對排序后的職工對象進行增、刪、查詢、修改、排序等操作。[選做內(nèi)容]將職工對象按散列法存儲,并設(shè)計解決沖突的方法。在此基礎(chǔ)上實現(xiàn)增、刪、查詢、修改、排序等操作。2.系統(tǒng)設(shè)計2.1設(shè)計目標職工信息管理系統(tǒng)全文共35頁,當前為第3頁。設(shè)計一個實用的簡單職工信息管理系統(tǒng),用鏈表來存儲職工的基本信息和工資信息,完成對職工信息包括職工編號、職工姓名、出生日期、職工性別、職工職稱、職工部門、職工工資等信息的新建、修改、刪除、查找、排序職工信息管理系統(tǒng)全文共35頁,當前為第3頁。2.2設(shè)計思想設(shè)計一個菜單,通過菜單選擇實現(xiàn)相應(yīng)操作。對于輸入的原始信息,使用鏈表存儲它們。這樣做的好處是,可以隨時增加內(nèi)容,也容易將職工信息從文件中刪除。為職工設(shè)計一個類,單獨設(shè)計完成這個文件讀寫的成員函數(shù)。使用結(jié)構(gòu)數(shù)組作為職工信息的存儲器,由它們和文件建立讀寫關(guān)系。需要顯示它們時,先將文件讀入內(nèi)存,然后再顯示。需要顯示輸出職工信息時,則直接從內(nèi)存鏈表中篩選。當然,需要顯示原始信息時,也通過直接顯示鏈表信息的方法實現(xiàn)。這四種數(shù)據(jù)的顯示問題均通過一個成員函數(shù)來完成。用類的成員函數(shù)對鏈表的數(shù)據(jù)進行操作1)新建函數(shù)LinkCreate(LinkHead);//創(chuàng)建一個帶頭節(jié)點的空鏈表2)修改函數(shù)LinkModify(LinkHead);//修改單個節(jié)點3)刪除函數(shù)LinkDel(Link&Head);//4)查詢函數(shù)boolSearch(LinkHead)//查詢同時滿足“姓名”和“部門”的職工信息LinkSearch_Unique_Front(LinkHead)//查詢滿足“職工代碼“的職工信息(職工代碼必需唯一)5)保存函數(shù)voidSave_ByFile(LinkHead)//6)排序函數(shù)(包括按工資排序和按姓名進行字典排序)//LinkSort(LinkHead)//LinkSort_byname(LinkHead)職工信息管理系統(tǒng)全文共35頁,當前為第4頁。7)顯示函數(shù)職工信息管理系統(tǒng)全文共35頁,當前為第4頁。2.3系統(tǒng)模塊劃分(要給出流程圖)2.4設(shè)計職工工資信息的數(shù)據(jù)結(jié)構(gòu)表。表2-3職工信息管理序號成員數(shù)數(shù)據(jù)類型可否為空1m_Codestring職工編號2m_Namestring職工姓名3m_Sexstring職工性別4m_Poststring職工職稱5m_Yearstring出生年月6m_Departmentstring職工部門7m_Wageunsignedint職工工資職工信息管理系統(tǒng)全文共職工信息管理系統(tǒng)全文共35頁,當前為第5頁。3.數(shù)據(jù)結(jié)構(gòu)與算法描述職工信息管理系統(tǒng)全文共35頁,當前為第6頁。圖3-1總體結(jié)構(gòu)設(shè)計框圖職工信息管理系統(tǒng)全文共35頁,當前為第6頁。圖3-1總體結(jié)構(gòu)設(shè)計框圖(圖序、圖名 圖3-1××× 置于圖的下方,宋體小四居中,單倍行距,圖序與圖名文字之間空一個漢字符寬度)4.測試結(jié)果與分析(可將測試過程抓圖說明)5.1新建函數(shù)LinkCreate(LinkHead)的測試。職工信息管理系統(tǒng)全文共35頁,當前為第7頁。5.2保存函數(shù)voidSave_ByFile(LinkHead)的測試。職工信息管理系統(tǒng)全文共35頁,當前為第7頁。5.3顯示函數(shù)voidDisplay_List(LinkHead)的測試。5.4查詢函數(shù)boolSearch(LinkHead)的測試5.5排序函數(shù)的LinkSort(LinkHead)的測試按姓名字典排序職工信息管理系統(tǒng)全文共35頁,當前為第8頁。按工資高低排序職工信息管理系統(tǒng)全文共35頁,當前為第8頁。5.6修改函數(shù)LinkModify(LinkHead)的測試5.7刪除函數(shù)LinkDel(Link&Head)的測試職工信息管理系統(tǒng)全文共35頁,當前為第9頁。職工信息管理系統(tǒng)全文共35頁,當前為第9頁??偨Y(jié)通過一年對程序設(shè)計的學(xué)習(xí),我已經(jīng)能夠進行簡單的程序設(shè)計,這次課程設(shè)計對自己所學(xué)知識起到了檢測和提高的作用。課程設(shè)計中用到了類、結(jié)構(gòu)、鏈表、文件的儲存和讀取等方式對職工信息進行較為全面的管理,對一年來程序設(shè)計的學(xué)習(xí)有一個綜合性的檢測和應(yīng)用。程序的設(shè)計中遇到不少問題,例如如何進行排序算法的邊寫,文件的讀寫功能等等,通過和同學(xué)的討論與交流,解決了不少問題。程序的調(diào)試過程中也有不少問題,例如標點、菜單的界面設(shè)計等。課程設(shè)計完成后,感覺上最大的收獲就是在設(shè)計之前要有一個清晰的思路和完整的設(shè)計提綱,對各功能函數(shù)的作用做詳細考慮。細心在這次課程設(shè)計中起到很關(guān)鍵的作用,一個標點、一個字母、一個符號都可能導(dǎo)致程序的不能運行,因此要有耐心認真完成。當然知識是不可缺少的,只有對這學(xué)期所學(xué)得知識能夠真正掌握并能加以運用,才能順利完成這次的課程設(shè)計。參考文獻附錄程序源代碼1、頭文件structdef.h#include<string>#include<iostream>#include<fstream>#include<iomanip>職工信息管理系統(tǒng)全文共35頁,當前為第10頁。#include<memory.h>職工信息管理系統(tǒng)全文共35頁,當前為第10頁。#include<stdio.h>#include<conio.h>#include<stdlib.h>usingnamespacestd;structEmployee{//聲明職工的結(jié)構(gòu)作為鏈表節(jié)點。//數(shù)據(jù)域 stringm_Code;//編號 stringm_Name;//姓名 //unsignedshortintm_Year; stringm_Year;//出生年月 stringm_Sex;//性別 stringm_Post;// stringm_Department; unsignedintm_Wage; //stringm_Wage;//鏈表節(jié)點的指針域 structEmployee*Next;};/*structEmployee{//聲明職工的結(jié)構(gòu)作為鏈表節(jié)點。//數(shù)據(jù)域 charm_Code[10]; charm_Name[10]; unsignedshortintm_Year; charm_Sex[2]; charm_Post[12]; charm_Department[16]; unsignedintm_Wage;//鏈表節(jié)點的指針域 structEmployee*Next;};*///取別名typedefstructEmployeeNode;typedefNode*Link;//函數(shù)聲明LinkCreate(LinkHead);職工信息管理系統(tǒng)全文共35頁,當前為第11頁。voidRelease(LinkHead);職工信息管理系統(tǒng)全文共35頁,當前為第11頁。LinkAdd(LinkHead);boolSearch(LinkHead);LinkSearch_Unique(LinkHead);voidDisplay_List(LinkHead);voidDisplay_Node(LinkpNode);LinkModify(LinkHead);//LinkDel(LinkHead);Link//voidSave_ByFile(LinkHead,fstream&ofile);voidSave_ByFile(LinkHead);LinkSort(LinkHead);//voidLoad_ByFile(Link&pNode,fstream&ifile);voidLoad_ByFile(Link&pNode);LinkSort_byname(LinkHead);2、修改和排序SortModify.cpp//修改職工信息函數(shù)LinkModify(LinkHead){//修改單一個節(jié)點。 stringco; cout<<"輸入你要修改的職工編號:";cin>>co; Linkptr; Linkptr_front; ptr_front=Head; while(ptr_front){ ptr=ptr_front->Next; if(ptr==NULL)break; elseif(ptr->m_Code==co){break;//找到,為ptr } ptr_front=ptr_front->Next; } //stringcode,name,sex,post,department,year; //unsignedintwage; cout<<"找到一條記錄如下:\n";cout<<"\n"; cout<<"職工編號職工姓名出生日期性別\t職稱\t部門\t工資\n";職工信息管理系統(tǒng)全文共35頁,當前為第12頁。 Display_Node(ptr);職工信息管理系統(tǒng)全文共35頁,當前為第12頁。cout<<"\n"; cout<<"請輸入你要修改的內(nèi)容:\n"; cout<<"╭╮"<<endl; cout<<"∣1.職工編號2.職工姓名∣"<<endl; cout<<"∣3.出生日期4.性別∣"<<endl; cout<<"∣5.職工職稱6.部門∣"<<endl; cout<<"∣7.職工工資0.取消修改∣"<<endl; cout<<"╰╯"<<endl; intchoice;stringagain; intflag=0; do{ cout<<endl<<"請選擇:"; cin>>choice; switch(choice){ case1: cout<<"請輸入職工編號:"; //cin>>code; cin>>ptr->m_Code; break; case2: cout<<endl<<"請輸入職工姓名:"; //cin>>name; cin>>ptr->m_Name; break; case3: cout<<endl<<"請輸入職工出生日期:"; //cin>>year; cin>>ptr->m_Year; break;職工信息管理系統(tǒng)全文共35頁,當前為第13頁。 case4:職工信息管理系統(tǒng)全文共35頁,當前為第13頁。 cout<<"請輸入職工性別(1.男/2.女):"; //cin>>sex; cin>>ptr->m_Sex; break; case5: cout<<"請輸入職工職稱:"; //cin>>post; cin>>ptr->m_Post; break; case6: cout<<"請輸入職工部門:"; //cin>>department; cin>>ptr->m_Department; break; case7: cout<<"請輸入職工工資:"; //cin>>wage; cin>>ptr->m_Wage; break; case0: returnHead; default: cout<<"你的輸入有誤!請重新輸入:"; } cout<<"是否繼續(xù)(y/n)?"; while(1){ cin>>again; if(again=="N"||again=="n"){flag=0;break;} elseif(again=="Y"||again=="y"){flag=1;break;} elsecout<<"輸入有誤!請重新選擇:"; } }while(flag); cout<<"信息已成功修改,請注意保存!\n\n"; returnHead;}//對職工信息進行排序(包括按工資排序和按姓名進行字典排序)LinkSort(LinkHead){//我創(chuàng)建的是帶頭節(jié)點的鏈表。用直接插入法。職工信息管理系統(tǒng)全文共35頁,當前為第14頁。 if((Head->Next==NULL)||(Head->Next->Next==NULL))//此步條件判斷非常有價值。職工信息管理系統(tǒng)全文共35頁,當前為第14頁。 { cout<<"數(shù)據(jù)節(jié)點數(shù)少于2個,不用排序!"<<endl; returnHead; } //第二步; Linkptr; Linkptr_F; Linkptr_N; ptr=Head->Next->Next; ptr_F=Head; 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->m_Wage) { ptr->Next=ptr_F->Next; ptr_F->Next=ptr; break; }//if else { ptr_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;//歸位,準備下一次排序。 }//while(ptr)職工信息管理系統(tǒng)全文共35頁,當前為第15頁。 cout<<"\n從高到低,排序成功!信息如下:"<<endl;職工信息管理系統(tǒng)全文共35頁,當前為第15頁。 Display_List(Head); returnHead;}//按姓名進行字典排序LinkSort_byname(LinkHead){//我創(chuàng)建的是帶頭節(jié)點的鏈表。用直接插入法。 if((Head->Next==NULL)||(Head->Next->Next==NULL))//此步條件判斷非常有價值。 { cout<<"數(shù)據(jù)節(jié)點數(shù)少于2個,不用排序!"<<endl; returnHead; } //第二步; Linkptr; Linkptr_F; Linkptr_N; ptr=Head->Next->Next; ptr_F=Head; Head->Next->Next=NULL;//到此,分成了兩個鏈表。 //第三步。 while(ptr) { ptr_N=ptr->Next; ptr_F=Head;//ptr_F的歸位。 while(ptr_F->Next) { if(ptr->m_Name<ptr_F->Next->m_Name) { ptr->Next=ptr_F->Next; ptr_F->Next=ptr; break; }//if else { ptr_F=ptr_F->Next; } }//while(ptr_F->Next)職工信息管理系統(tǒng)全文共35頁,當前為第16頁。 if(ptr_F->Next==NULL)職工信息管理系統(tǒng)全文共35頁,當前為第16頁。 { ptr->Next=ptr_F->Next; ptr_F->Next=ptr;//表示插到有序鏈表的最后面了。 } ptr=ptr_N;//歸位,準備下一次排序。 }//while(ptr) cout<<"\n按字典序排序如下:"<<endl; Display_List(Head); returnHead;}3、新建和刪除addelet.cpp//新建鏈表存放職工信息LinkCreate(LinkHead){//創(chuàng)建一個帶頭節(jié)點的空鏈表。 Head=(Link)newNode; if(!Head) { cout<<"分配內(nèi)存失??!"<<endl; returnNULL; }/* Head->m_Code=""; Head->m_Name=""; Head->m_Year=""; Head->m_Sex=""; Head->m_Post=""; Head->m_Department=""; Head->m_Wage="";*/ Head->Next=NULL; returnHead;}voidRelease(LinkHead){//釋放鏈表。 Linkptr;//聲明一個操作用的指針。 while(Head!=NULL) { ptr=Head; Head=Head->Next;職工信息管理系統(tǒng)全文共35頁,當前為第17頁。 deleteptr;//釋放節(jié)點資源。職工信息管理系統(tǒng)全文共35頁,當前為第17頁。 }}LinkAdd(LinkHead){//前插法添加數(shù)據(jù)。 LinkpNew;//聲明一個新節(jié)點。 stringagain; intflag; stringcode,name,sex,post,department,year; //unsignedshortintyear; unsignedintwage; //stringwage; do { pNew=(Link)newNode; //數(shù)據(jù) cout<<"請輸入職工代碼:"; cin>>code; cout<<endl<<"請輸入職工姓名:"; cin>>name; cout<<endl<<"請輸入職工出生日期:"; cin>>year; while(cin.fail()) { cout<<"請輸入正確的日期格式。"<<endl; cin.clear(); fflush(stdin); cin>>year; } cout<<endl<<"請輸入職工性別(1.男/2.女):"; while(1){ cin>>sex; if(sex=="1"||sex=="2")break; elsecout<<"輸入有誤!請重新輸入:"; } cout<<endl<<"請輸入職工職稱:"; cin>>post; cout<<endl<<"請輸入職工部門:"; cin>>department;職工信息管理系統(tǒng)全文共35頁,當前為第18頁。 cout<<endl<<"請輸入職工工資:";職工信息管理系統(tǒng)全文共35頁,當前為第18頁。 cin>>wage; while(cin.fail()) { cout<<"請輸入正確的工資數(shù)據(jù):"; cin.clear(); fflush(stdin); cin>>wage; } cout<<endl; pNew->m_Code=code; pNew->m_Name=name; pNew->m_Year=year; pNew->m_Sex=sex; pNew->m_Post=post; pNew->m_Department=department; pNew->m_Wage=wage; //***********************************/* strcpy(pNew->m_Code,code);//因ptr是前趨節(jié)點,所以要用ptr->Next; strcpy(pNew->m_Name,name); strcpy(pNew->m_Year,year); strcpy(pNew->m_Sex,sex); strcpy(pNew->m_Post,post); strcpy(pNew->m_Department,department); strcpy(pNew->m_Wage,wage);*/ //********************************* //指針域。 pNew->Next=Head->Next; Head->Next=pNew; cout<<"數(shù)據(jù)添加成功!是否繼續(xù)添加(Y/N)?"<<endl; while(1){ cin>>again; if(again=="N"||again=="n"){flag=0;break;} elseif(again=="Y"||again=="y"){flag=1;break;} elsecout<<"輸入有誤!請重新選擇:"; } }while(flag); cout<<"數(shù)據(jù)添加成功,請注意保存!\n";職工信息管理系統(tǒng)全文共35頁,當前為第19頁。 returnHead;職工信息管理系統(tǒng)全文共35頁,當前為第19頁。}/*Link{ Linkptr; Linkptr_front; ptr_front=Search_Unique_Front(Head); ptr=ptr_front->Next; if(ptr) { ptr_front->Next=ptr->Next; deleteptr;//刪除此節(jié)點。 cout<<"\n該條記錄已成功刪除!\n"; }elsecout<<"沒找到此職工的記錄,無法刪除。"<<endl; returnHead;}*///刪除職工信息LinkD{ intflag=0; stringcode; cout<<"輸入你要刪除的職工代碼:"; cin>>code; Linkptr; Linkptr_front; ptr_front=Head; while(ptr_front){ ptr=ptr_front->Next; if(ptr==NULL)break; elseif(ptr->m_Code==code){ flag=1; ptr_front->Next=ptr->Next; deleteptr;//刪除此節(jié)點。 } ptr_front=ptr_front->Next; } if(flag)cout<<"\n該條記錄已成功刪除!注意文件的保存!\n"; elsecout<<"沒找到此職工的記錄,無法刪除!"<<endl;職工信息管理系統(tǒng)全文共35頁,當前為第20頁。 returnHead;職工信息管理系統(tǒng)全文共35頁,當前為第20頁。}查詢和顯示seanddisp.cpp//查詢職工信息函數(shù)boolSearch(LinkHead){//查詢同時滿足“姓名”和“部門”的職工信息。 Linkptr; stringdepartment; stringname; ptr=Head->Next; cout<<"請輸入部門:"; cin>>department; cout<<endl<<"請輸入姓名:"; cin>>name; cout<<endl<<"查詢結(jié)果:"<<endl; //cout<<""<<endl; while(ptr) { if((ptr->m_Name==name)&&(ptr->m_Department==department)) { cout<<""<<endl; cout<<"職工代碼職工姓名出生日期性別\t職稱\t部門\t工資\n"; Display_Node(ptr);//打印滿足條件的節(jié)點。 cout<<""<<endl; returntrue; } ptr=ptr->Next;//查詢下一節(jié)點。 } cout<<"無此職工的信息!"<<endl; returnfalse;}LinkSearch_Unique_Front(LinkHead){//查詢滿足“職工代碼“的職工信息(職工代碼必需唯一)。職工信息管理系統(tǒng)全文共35頁,當前為第21頁。 Linkptr;職工信息管理系統(tǒng)全文共35頁,當前為第21頁。 stringcode; ptr=Head; cout<<"請輸入職工代碼:"; cin>>code; cout<<endl<<"查詢結(jié)果:"<<endl; cout<<""<<endl; cout<<"職工代碼職工姓名出生日期性別\t職稱\t部門\t工資\n"; while(ptr->Next) { if(ptr->Next->m_Code==code){ Display_Node(ptr->Next);//打印滿足條件的節(jié)點。 returnptr;//注意,是返回的查詢到的節(jié)點的直接前趨節(jié)點。 } ptr->Next=ptr->Next->Next;//查詢下一節(jié)點。 } cout<<""<<endl; returnptr;}//顯示職工信息函數(shù)voidDisplay_List(LinkHead){ Linkptr; ptr=Head->Next; if(ptr!=NULL){ cout<<"\n所有職工信息如下:"<<endl; cout<<""<<endl; cout<<"職工代碼職工姓名出生日期性別\t職稱\t部門\t工資\n"; while(ptr) { Display_Node(ptr); ptr=ptr->Next; }職工信息管理系統(tǒng)全文共35頁,當前為第22頁。 cout<<""<<endl;職工信息管理系統(tǒng)全文共35頁,當前為第22頁。 }else cout<<"\n尚無任何記錄!請?zhí)砑?\n\n";}voidDisplay_Node(LinkpNode){//在標準輸出設(shè)備上輸出。 cout<<setw(10)<<left<<pNode->m_Code <<setw(10)<<left<<pNode->m_Name <<setw(10)<<left<<pNode->m_Year; if(pNode->m_Sex=="1")cout<<setw(10)<<"男"; if(pNode->m_Sex=="2")cout<<setw(10)<<"女"; //cout<<setw(10)<<left<<pNode->m_Sex cout<<setw(10)<<left<<pNode->m_Post <<setw(10)<<left<<pNode->m_Department <<setw(10)<<left<<pNode->m_Wage<<endl;//setw(10)表示占10個字符位置。}修改和排序SortModify.cpp/*LinkModify(LinkHead){//修改單一個節(jié)點。 Linkptr; ptr=Search_Unique_Front(Head); stringcode,name,sex,post,department; //unsignedshortintyear; //unsignedintwage; stringyear,wage; if(ptr->Next) { cout<<"\n你現(xiàn)在可以修改此職工的信息了"<<endl; //數(shù)據(jù)域。 cout<<"請輸入職工編號:"; cin>>code; cout<<endl<<"請輸入職工姓名:"; cin>>name; cout<<endl<<"請輸入職工出生年份:";職工信息管理系統(tǒng)全文共35頁,當前為第23頁。 cin>>year;職工信息管理系統(tǒng)全文共35頁,當前為第23頁。 while(cin.fail()) { cout<<"請輸入正確的年份格式。"<<endl; cin.clear(); fflush(stdin); cin>>year; } cout<<endl<<"請輸入職工性別(1.男/2.女):"; cin>>sex; cout<<endl<<"請輸入職工職稱:"; cin>>post; cout<<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->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; /*strcpy(ptr->Next->m_Code,code);//因ptr是前趨節(jié)點,所以要用ptr->Next; strcpy(ptr->Next->m_Name,name); strcpy(ptr->Next->m_Year,year); strcpy(ptr->Next->m_Sex,sex); strcpy(ptr->Next->m_Post,post); strcpy(ptr->Next->m_Department,department);職工信息管理系統(tǒng)全文共35頁,當前為第24頁。 strcpy(ptr->Next->m_Wage,wage);*/職工信息管理系統(tǒng)全文共35頁,當前為第24頁。/* cout<<"你的修改已經(jīng)成功了!"<<endl; } else cout<<"沒找到此職工的記錄,無法修改。"<<endl; returnHead;}*///修改職工信息函數(shù)LinkModify(LinkHead){//修改單一個節(jié)點。 stringco; cout<<"輸入你要修改的職工編號:";cin>>co; Linkptr; Linkptr_front; ptr_front=Head; while(ptr_front){ ptr=ptr_front->Next; if(ptr==NULL)break; elseif(ptr->m_Code==co){break;//找到,為ptr } ptr_front=ptr_front->Next; } //stringcode,name,sex,post,department,year; //unsignedintwage; cout<<"找到一條記錄如下:\n";cout<<"\n"; cout<<"職工編號職工姓名出生日期性別\t職稱\t部門\t工資\n"; Display_Node(ptr);cout<<"\n"; cout<<"請輸入你要修改的內(nèi)容:\n"; cout<<"╭╮"<<endl; cout<<"∣1.職工編號2.職工姓名∣"<<endl;職工信息管理系統(tǒng)全文共35頁,當前為第25頁。 cout<<"∣3.出生日期4.性別∣"<<endl;職工信息管理系統(tǒng)全文共35頁,當前為第25頁。 cout<<"∣5.職工職稱6.部門∣"<<endl; cout<<"∣7.職工工資0.取消修改∣"<<endl; cout<<"╰╯"<<endl; intchoice;stringagain; intflag=0; do{ cout<<endl<<"請選擇:"; cin>>choice; switch(choice){ case1: cout<<"請輸入職工編號:"; //cin>>code; cin>>ptr->m_Code; break; case2: cout<<endl<<"請輸入職工姓名:"; //cin>>name; cin>>ptr->m_Name; break; case3: cout<<endl<<"請輸入職工出生日期:"; //cin>>year; cin>>ptr->m_Year; break; case4: cout<<"請輸入職工性別(1.男/2.女):"; //cin>>sex; cin>>ptr->m_Sex; break; case5: cout<<"請輸入職工職稱:"; //cin>>post; cin>>ptr->m_Post;職工信息管理系統(tǒng)全文共35頁,當前為第26頁。 break;職工信息管理系統(tǒng)全文共35頁,當前為第26頁。 case6: cout<<"請輸入職工部門:"; //cin>>department; cin>>ptr->m_Department; break; case7: cout<<"請輸入職工工資:"; //cin>>wage; cin>>ptr->m_Wage; break; case0: returnHead; default: cout<<"你的輸入有誤!請重新輸入:"; } cout<<"是否繼續(xù)(y/n)?"; while(1){ cin>>again; if(again=="N"||again=="n"){flag=0;break;} elseif(again=="Y"||again=="y"){flag=1;break;} elsecout<<"輸入有誤!請重新選擇:"; } }while(flag); cout<<"信息已成功修改,請注意保存!\n\n"; returnHead;}//對職工信息進行排序(包括按工資排序和按姓名進行字典排序)LinkSort(LinkHead){//我創(chuàng)建的是帶頭節(jié)點的鏈表。用直接插入法。 if((Head->Next==NULL)||(Head->Next->Next==NULL))//此步條件判斷非常有價值。 { cout<<"數(shù)據(jù)節(jié)點數(shù)少于2個,不用排序!"<<endl; returnHead; } //第二步; Linkptr; Linkptr_F; Linkptr_N;職工信息管理系統(tǒng)全文共35頁,當前為第27頁。 ptr=Head->Next->Next;職工信息管理系統(tǒng)全文共35頁,當前為第27頁。 ptr_F=Head; 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->m_Wage) { ptr->Next=ptr_F->Next; ptr_F->Next=ptr; break; }//if else { ptr_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;//歸位,準備下一次排序。 }//while(ptr) cout<<"\n從高到低,排序成功!信息如下:"<<endl; Display_List(Head); returnHead;}//按姓名進行字典排序LinkSort_byname(LinkHead){//我創(chuàng)建的是帶頭節(jié)點的鏈表。用直接插入法。 if((Head->Next==NULL)||(Head->Next->Next==NULL))//此步條件判斷非常有價值。職工信息管理系統(tǒng)全文共35頁,當前為第28頁。 {職工信息管理系統(tǒng)全文共35頁,當前為第28頁。 cout<<"數(shù)據(jù)節(jié)點數(shù)少于2個,不用排序!"<<endl; returnHead; } //第二步; Linkptr; Linkptr_F; Linkptr_N; ptr=Head->Next->Next; ptr_F=Head; Head->Next->Next=NULL;//到此,分成了兩個鏈表。 //第三步。 while(ptr) { ptr_N=ptr->Next; ptr_F=Head;//ptr_F的歸位。 while(ptr_F->Next) { if(ptr->m_Name<ptr_F->Next->m_Name) { ptr->Next=ptr_F->Next; ptr_F->Next=ptr; break; }//if else { ptr_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;//歸位,準備下一次排序。 }//while(ptr) cout<<"\n按字典序排序如下:"<<endl;職工信息管理系統(tǒng)全文共35頁,當前為第29頁。 Display_List(Head);職工信息管理系統(tǒng)全文共35頁,當前為第29頁。 returnHead;}保存信息Save.cpp//保存職工信息函數(shù)voidSave_ByFile(LinkHead){ LinkpNode; pNode=Head->Next;// ofile.clear();//清除文件結(jié)束狀態(tài)。 ofstreamfo("iofile.txt"); while(pNode) { fo<<setw(10)<<left<<pNode->m_Code <<setw(10)<<left<<pNode->m_Name <<setw(15)<<left<<pNode->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(1) pNode=pNode->Next; } //fo<<"\b"; fo.close(); cout<<"\n數(shù)據(jù)文件保存成功!\n"<<endl;}voidLoad_ByFile(Link&Head){ LinkpNode; stringcode,name,sex,post,department,year; //unsignedshortintyear; unsignedintwage; //stringyear,wage; ifstreamfi("iofile.txt"); if(!fi)return; while(!fi.eof()){pNode=(Link)newNode; fi>>code>>name>>year>>sex>>post>>department>>wage; if(code=="")break;職工信息管理系統(tǒng)全文共35頁,當前為第30頁。 pNode->m_Code=code;職工信息管理系統(tǒng)全文共35頁,當前為第30頁。 pNode->m_Name=name; pNode->m_Year=year; pNode->m_Sex=sex; pNode->m_Post=post; pNode->m_Department=department; pNode->m_Wage=wage; pNode->Next=Head->Next; Head->Next=pNode; } fi.close();}7、主函數(shù)execute2.cpp#include"structdef.h"#include"seanddisp.cpp"#include"SortModify.cpp"#include"addelete.cpp"#include"save.cpp"voidclear(){system("cls");}intlogin();intmain(){ if(login()){ LinkHead=0; Head=Create(Head); //fstreamiofile; //iofile.open("iofile.txt",ios_base::in|ios_base::out);//文件以三種方式打開。 /*if(!iofile) { cout<<"打開文件失?。?<<endl; return-1; }*/ Load_ByFile(Head); intmenu; while(1) { clear();職工信息管理系統(tǒng)全文共35頁,當前為第31頁。 cout<<"╭╮"<<endl;職工信息管理系統(tǒng)全文共35頁,當前為第31頁。 cout<<"∣===============菜單選頂=========∣"<<endl; cout<<"∣請選擇功能:∣"<<endl; cout<<"∣===============================∣"<<endl; cout<<"∣1.新建職工2.修改信息∣"<<endl; cout<<"∣3.刪除信息4.查詢信息∣"<<endl; cout<<"∣5.保存文件6.工資排序∣"<<endl; cout<<"∣7.顯示信息8.姓名排序∣"<<endl; cout<<"∣0.退出系統(tǒng)∣"<<endl; cout<<"╰╯"<<

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論