最終的職工信息管理系統(tǒng)源代碼_第1頁(yè)
最終的職工信息管理系統(tǒng)源代碼_第2頁(yè)
最終的職工信息管理系統(tǒng)源代碼_第3頁(yè)
最終的職工信息管理系統(tǒng)源代碼_第4頁(yè)
最終的職工信息管理系統(tǒng)源代碼_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、#include #include #include #include int saveflag=0;/是否需要存盤的標(biāo)志變量struct employeechar name15;char num10;char sex4;char pozition15;long salary;char xueli20;char address100;char marriage10;int age;typedef struct nodestruct employee data;struct node *next; Node,*Link;void add(Link l;/添加void disp(Link l;/瀏

2、覽void del(Link l;/刪除Node* Locate(Link l,char findmess,char nameornum;void Qur(Link l;/查詢void Tongji(Link l;/統(tǒng)計(jì)void Sort(Link l;/排序void Modify(Link l;/修改void Save(Link l;/保存void printe(Node *p;/打印鏈表中的節(jié)點(diǎn)/工具函數(shù)void printstart(;void Wrong(;void Nofind(;void printc(;void menu(system("color 07"pr

3、intf("ttn"printf("tt n"printf("tt 歡迎進(jìn)入職工信息管理系統(tǒng) n"printf("tt n"printf("tt 1 創(chuàng)建職工信息 2 刪除職工信息 n"printf("tt 3 查詢職工信息 4 修改職工信息 n"printf("tt 5 追加職工記錄 6 統(tǒng)計(jì)職工信息 n"printf("tt 7 排序職工信息 8 保存職工信息 n"printf("tt 9 瀏覽職工信息 0 退出系統(tǒng) n&

4、quot;printf("tt n"printf("tt 創(chuàng)造者: 龍丹 萬(wàn)莎 廖杰紅 沈冠 n"printf("tt 九天出品 必屬精品 n"printf("tt (o (*_* O(_O ( n"printf("ttn"void Disp(Link lint count=0;Node *p;p=l->next;/l儲(chǔ)存的是單鏈表頭節(jié)點(diǎn)的指針,頭節(jié)點(diǎn)無(wú)職工信息if(!p/ p=NULL NULL在stdlib中定義為0printf("n=>提示:沒有職工記錄可以顯示!n&

5、quot;return ;printf("tttt顯示結(jié)果n"printstart(;printc(;printf("n"while(p/逐條輸出鏈表中儲(chǔ)存的職工信息printe(p;p=p->next;printstart(;printf("n"void printstart(printf("-n"void Wrong(printf("n=>提示:輸入錯(cuò)誤!n"void Nofind(printf("n=>提示:沒有找到該職工!n"void printc(

6、printf("工號(hào)t姓名t性別t年齡t學(xué)歷t職稱t工資t地址t婚否n"printstart(;void printe(Node *pprintf("%st%st%st%dt%st%st%ldt%st%sn",p->data.num,p->,p->data.sex,p->data.age,p->data.xueli,p->data.pozition,p->data.salary,p->data.address,p->data.marriage;Node* Locate(Link l,

7、char findmess,char zcornum/該函數(shù)用于定位鏈表中符合要求的節(jié)點(diǎn),并返回該指針Node *r;if(strcmp(zcornum,"num"=0/按工號(hào)查詢r(jià)=l->next;while(r!=NULLif(strcmp(r->data.num,findmess=0return r;r=r->next;else if(strcmp(zcornum,"pozition"=0/按職稱查詢r(jià)=l->next;while(r!=NULLif(strcmp(r->data.pozition,findmess=0

8、return r;r=r->next;else if(strcmp(zcornum,"name"=0/按姓名查詢r(jià)=l->next;while(r!=NULLif(strcmp(r->,findmess=0return r;r=r->next;return 0;/若未找到 返回一個(gè)空指針void Add(Link l/次函數(shù)中 無(wú)節(jié)點(diǎn)時(shí)r指向list頭 有節(jié)點(diǎn)時(shí) r指向list尾Node *p,*r,*s;/實(shí)現(xiàn)添加操作的臨時(shí)結(jié)構(gòu)體指針變量char num10;int flag=0;r=l;s=l->next;/鏈表無(wú)節(jié)點(diǎn)時(shí)

9、s=NULL 有節(jié)點(diǎn)時(shí) 指向第一個(gè)職工節(jié)點(diǎn)while(r->next!=NULL/如果存在后繼節(jié)點(diǎn)時(shí) r指針后移一個(gè)r=r->next;/將指針移至鏈表末尾 準(zhǔn)備添加記錄while(1printf("請(qǐng)你輸入工號(hào)(以0返回上一級(jí)菜單:)"scanf("%s",num;if(strcmp(num,"0"=0/輸0跳出break;s=l->next;/每次從第一個(gè)節(jié)點(diǎn)開始找 看num是否重復(fù)while(s/工號(hào)重復(fù)時(shí)返回主菜單if(strcmp(s->data.num,num=0printf("=>

10、提示:工號(hào)為%s的職工已經(jīng)存在,若要修改請(qǐng)選擇4!n",num;flag=1;return ;s=s->next;p=(Node *malloc(sizeof(Node;/生成新節(jié)點(diǎn)pstrcpy(p->data.num,num;printf("請(qǐng)輸入姓名:"scanf("%s",p->;getchar(;printf("請(qǐng)輸入性別:"scanf("%s",p->data.sex;getchar(;printf("請(qǐng)輸入年齡:"scanf(&q

11、uot;%d",&p->data.age;getchar(;printf("請(qǐng)輸入學(xué)歷:"scanf("%s",p->data.xueli;getchar(;printf("請(qǐng)輸入職稱:"scanf("%s",p->data.pozition;getchar(;printf("請(qǐng)輸入工資:"scanf("%ld",&p->data.salary;getchar(;printf("請(qǐng)輸入地址:"scanf(&

12、quot;%s",p->data.address;getchar(;printf("請(qǐng)輸入婚否:"scanf("%s",p->data.marriage;getchar(;p->next=NULL;/表明這是鏈表的尾部節(jié)點(diǎn)r->next=p;/將新建的節(jié)點(diǎn)加入鏈表尾部中r=p;saveflag=1;void Del(Link lint sel;Node *p,*r;/實(shí)現(xiàn)刪除操作的臨時(shí)結(jié)構(gòu)體指針變量char findmess20;if(!l->next/當(dāng)list無(wú)后繼節(jié)點(diǎn)時(shí) 提示和返回del(printf(&qu

13、ot;n=>提示:沒有記錄可以刪除!n"return ;printf("n=>1 按工號(hào)刪除n=>2 按姓名刪除n"scanf("%d",&sel;if(sel=1printf("請(qǐng)您輸入要?jiǎng)h除的工號(hào):"scanf("%s",findmess;p=Locate(l,findmess,"num"if(pr=l;while(r->next!=pr=r->next;/從第一個(gè)節(jié)點(diǎn)找起 直到找到待刪除的節(jié)點(diǎn) 跳出循環(huán)r->next=p->nex

14、t;free(p;printf("n=>提示:該職工已經(jīng)成功刪除!n"saveflag=1;else Nofind(;else if(sel=2printf("請(qǐng)您輸入要?jiǎng)h除的姓名:"scanf("%s",findmess;p=Locate(l,findmess,"name"if(pr=l;while(r->next!=pr=r->next;r->next=p->next;free(p;printf("n=>提示:該職工已經(jīng)成功刪除!n"saveflag=1;

15、else Nofind(;else Wrong(;void Qur(Link lint sel;char findmess20;Node *p;/實(shí)現(xiàn)查詢操作的臨時(shí)結(jié)構(gòu)體指針變量if(!l->nextprintf("n=>提示:沒有資料可查詢!n"return ;printf("n=>1按工號(hào)查詢n=>2按職稱查詢n=>3按姓名查詢n"scanf("%d",&sel;if(sel=1printf("請(qǐng)你輸入要查找的工號(hào):"scanf("%s",findmes

16、s;p=Locate(l,findmess,"num"if(pprintf("tttt查找結(jié)果n"printstart(;printc(;printe(p;printstart(;else Nofind(;else if(sel=2printf("請(qǐng)您輸入要查找的職稱:"scanf("%s",findmess;p=Locate(l,findmess,"pozition"if(pprintf("tttt查找結(jié)果n"printstart(;printc(;printe(p;pri

17、ntstart(;else Nofind(;else if(sel=3printf("請(qǐng)您輸入要查找的姓名:"scanf("%s",findmess;p=Locate(l,findmess,"name"if(pprintf("tttt查找結(jié)果n"printstart(;printc(;printe(p;printstart(;else Nofind(;else Wrong(;void Modefy(Link lNode *p;char findmess20;if(!l->nextprintf("n=

18、>提示:沒有資料可以修改!n"return ;printf("請(qǐng)您輸入要修改的職工工號(hào):"scanf("%s",findmess;p=Locate(l,findmess,"num"if(pprintf("請(qǐng)您輸入新工號(hào)(原來(lái)是%s):",p->data.num;scanf("%s",p->data.num;printf("請(qǐng)您輸入新姓名(原來(lái)是%s):",p->;scanf("%s",p->data

19、.name;printf("請(qǐng)您輸入新性別(原來(lái)是%s):",p->data.sex;scanf("%s",p->data.sex;printf("請(qǐng)您輸入新年齡(原來(lái)是%d):",p->data.age;scanf("%d",&p->data.age;printf("請(qǐng)您輸入學(xué)歷(原來(lái)是%s):",p->data.xueli;scanf("%s",p->data.xueli;printf("請(qǐng)您輸入職稱(原來(lái)是%s):&

20、quot;,p->data.pozition;scanf("%s",p->data.pozition;printf("請(qǐng)您輸入工資(原來(lái)是%ld):",p->data.salary;scanf("%ld",&p->data.salary;printf("請(qǐng)您輸入地址(原來(lái)是%s):",p->data.address;scanf("%s",p->data.address;printf("請(qǐng)您輸入婚否(原來(lái)是%s):",p->da

21、ta.marriage;scanf("%s",p->data.marriage;printf("n=>提示:資料修改成功!n"else Nofind(;void Insert(Link l/按工號(hào)查詢到要插入節(jié)點(diǎn)的位置 然后在該工號(hào)之后插入一個(gè)新節(jié)點(diǎn)Node *s,*r,*p;/p指向插入位置 p指新插入記錄節(jié)點(diǎn)char ch,new_num10,old_num10;/前一個(gè)保存插入點(diǎn)位置之前的工號(hào) 后一個(gè)保存輸入的新記錄的工號(hào)int flag=0;s=l->next;system("cls"Disp(l;while

22、(1printf("請(qǐng)您輸入已存在的工號(hào)(以0返回上一級(jí)菜單:)"scanf("%s",old_num;if(strcmp(old_num,"0"=0return ;s=l->next;flag=0;while(s/查詢?cè)摴ぬ?hào)是否存在if(strcmp(s->data.num,old_num=0flag=1;break;s=s->next;if(flag=1/若工號(hào)存在 則進(jìn)行插入之前的新記錄的輸入操作break;elsegetchar(;printf("n=>%s不存在,是否重新再輸入?(y/n):

23、",old_num;scanf("%c",&ch;if(ch='y'|ch='Y'continue;elsereturn ;/以下記錄新節(jié)點(diǎn) 類似addprintf("請(qǐng)您輸入待插入的工號(hào)(以0返回上一級(jí)菜單:)"scanf("%s",new_num;if(strcmp(new_num,"0"=0return ;s=l->next;/每次從第一個(gè)節(jié)點(diǎn)開始找 看num是否重復(fù)while(s/工號(hào)重復(fù)時(shí)返回主菜單if(strcmp(s->data.num,n

24、ew_num=0printf("=>提示:工號(hào)為%s的職工已經(jīng)存在!n",new_num;flag=1;return ;s=s->next;p=(Node *malloc(sizeof(Node;if(!pprintf("n allocate memory failure"/申請(qǐng)空間失敗return ;strcpy(p->data.num,new_num;printf("請(qǐng)您輸入姓名:"scanf("%s",p->;getchar(;printf("請(qǐng)您輸入性別:

25、"scanf("%s",p->data.sex;getchar(;printf("請(qǐng)您輸入年齡:"scanf("%d",&p->data.age;getchar(;printf("請(qǐng)您輸入學(xué)歷:"scanf("%s",p->data.xueli;getchar(;printf("請(qǐng)您輸入職稱:"scanf("%s",p->data.pozition;getchar(;printf("請(qǐng)您輸入工資:&quo

26、t;scanf("%ld",&p->data.salary;getchar(;printf("請(qǐng)您輸入地址:"scanf("%s",p->data.address;getchar(;printf("請(qǐng)您輸入婚否:"scanf("%s",p->data.marriage;getchar(;p->next=NULL;/表明這是鏈表的結(jié)尾saveflag=1;/在主函數(shù)中有對(duì)該全局變量的判斷 若為1 則進(jìn)行存盤操作r=l->next;/將指針賦值給r 因?yàn)閘中的頭

27、節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)才實(shí)際保存著記錄while(1if(strcmp(r->data.num,old_num=0/在鏈表中插入一個(gè)節(jié)點(diǎn)p->next=r->next;r->next=p;break;r=r->next;/r作為查詢指針 從第一個(gè)節(jié)點(diǎn)找起 直到找到后跳出循環(huán)Disp(l;printf("nn"void Tongji(Link lNode *p;int a=0,b=0,c=0;int deal;p=l;printf("請(qǐng)輸入您想統(tǒng)計(jì)的項(xiàng)目n"printf("=>1 對(duì)各工資段的人數(shù)進(jìn)行統(tǒng)計(jì)n"

28、;printf("=>2 對(duì)各年齡段的人數(shù)進(jìn)行統(tǒng)計(jì)n"scanf("%d",&deal;if(deal=1while(1if(p->data.salary>=5000 a+;else if(p->data.salary>=2000&&p->data.salary<5000 b+;else c+;p=p->next;if(p=NULLbreak;system("cls"Disp(l;printf("=>工資大于等于5000的人數(shù)是:%dn"

29、,a-1;printf("=>工資大于等于2000且小于5000的人數(shù)是:%dn",b;printf("=>工資小于2000的人數(shù)是:%dn",c;else if(deal=2while(1if(p->data.age>=30 a+;else if(p->data.age>=18&&p->data.age<30 b+;else c+;p=p->next;if(p=NULLbreak;system("cls"Disp(l;printf("=>年齡大于等

30、于30的人數(shù)是:%dn",a-1;printf("=>年齡大于等于18且小于30的人數(shù)是:%dn",b;printf("=>年齡小于18的人數(shù)是:%dn",c;else Wrong(;void Sort(Link lLink ll;Node *p,*rr,*s;int i=0;int select;if(l->next=NULLsystem("cls"printf("n=>沒有職工記錄!n"getchar(;return ;ll=(Node*malloc(sizeof(Node;i

31、f(!llprintf("n allocate memory failure"return ;ll->next=NULL;system("cls"Disp(l;p=l->next;printf("請(qǐng)選擇排序方法:n"printf("=>1 按年齡排序n=>2 按工資排序n"scanf("%d",&select;while(ps=(Node*malloc(sizeof(Node;/新建節(jié)點(diǎn)用于保存從原鏈表中取出的節(jié)點(diǎn)信息if(!s/s=NULLprintf(&quo

32、t;n allocate memory failure"return ;s->data=p->data;/填數(shù)據(jù)域s->next=NULL;/指針域?yàn)榭誶r=ll;/rr鏈表于儲(chǔ)存插入單個(gè)節(jié)點(diǎn)后保存排序的鏈表 ll是這個(gè)鏈表的頭指針 每次從頭開始查找插入位置if(select=1while(rr->next!=NULL&&rr->next->data.age>=p->data.agerr=rr->next;/指針移至年齡比p所指節(jié)點(diǎn)的年齡小的節(jié)點(diǎn)位置if(rr->next=NULL/若新鏈表ll中的所有節(jié)點(diǎn)的

33、年齡都比p大 則將p插入末尾rr->next=s;else/否則將該節(jié)點(diǎn)插入至第一個(gè)年齡比他小的前面s->next=rr->next;rr->next=s;p=p->next;/原鏈表的指針下移一個(gè)節(jié)點(diǎn)else if(select=2while(rr->next!=NULL&&rr->next->data.salary>=p->data.salaryrr=rr->next;if(rr->next=NULLrr->next=s;elses->next=rr->next;rr->next

34、=s;p=p->next;else Wrong(;l->next=ll->next;/ll中儲(chǔ)存的是已排序的鏈表的頭指針Disp(l;saveflag=1;printf("n =>排序完成!n"void Save(Link lFILE*fp;Node *p;int flag=1,count=0;fp=fopen("employee.txt","wb"if(fp=NULLprintf("n=>提示:重新打開文件時(shí)發(fā)生錯(cuò)誤!n"return ;p=l->next;/指向第一個(gè)記錄節(jié)點(diǎn)

35、while(pif(fwrite(p,sizeof(Node,1,fp=1/將第一個(gè)記錄節(jié)點(diǎn)值寫入文件p=p->next;/依次寫第二個(gè)節(jié)點(diǎn)的值count+;/文件記錄+1elseflag=0;break;if(count>0printf("n=>提示:文件保存成功,(有%d條記錄已經(jīng)保存)n",count;saveflag=0;elsesystem("cls"printf("保存文件失敗,0條記錄被保存!n"fclose(fp;void main(char zhanghao10,mima10;char answer

36、110= "jiutian",password110= "20121314"char answer210= "xiaolong",password210= "1314520"int amg=0;int i,j;printf("請(qǐng)等待"for(i=0; i<15; i+Sleep(300;printf("."printf("n"while(1if(amgbreak;printf("請(qǐng)輸入用戶名:n"scanf("%s&qu

37、ot;,zhanghao;getchar(;printf("請(qǐng)輸入密碼:n"scanf("%s",mima;getchar(;if(strcmp(answer1,zhanghao=0&&strcmp(password1,mima=0|(strcmp(answer2,zhanghao=0&&strcmp(password2,mima=0system("cls"Link list;/定義鏈表FILE *fp;/文件指針int choose;/保存選擇結(jié)果變量char ch;/保存y/nint count=0;/保存節(jié)點(diǎn)個(gè)數(shù)struct node *p,*r;/定義記錄指針變量printf("tttt職工信息管理系統(tǒng)nttttn"list=(struct node*malloc(sizeof(struct node;if(!listprintf("n allocate memory fail

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論