求一道C語言編程題(職工信息管理程序)
設計一個簡單的職工信息管理程序,職工信息包括職工號,姓名,性別,年齡,學歷,工資,住址,電話等。主要實現以下功能:
1、錄入職工信息,若錄入的職工號重復給予提示;
2、浏覽職工信息;
3、職工號和職工姓名查詢職工信息;
4、按職工號刪除職工信息。
最佳回答:
//寫這個程序花了我2.5小時寫代碼
//再花了1個小時測試,全部正確了
//所以一定要給我加分哦,要求100分以上,哈哈
//不然下次就沒信心幫你寫了
//職工管理系統
//職工號,姓名,性別,年齡,學歷,工資,住址,電話等
/*
1、錄入職工信息,若錄入的職工號重復給予提示;
2、浏覽職工信息;
3、職工號和職工姓名查詢職工信息;
4、按職工號刪除職工信息。
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//下面定義職工信息結構
structWORKER{
intid;//職工號
charname[20];//姓名
charsex[3];//性別
intage;//年齡
charedu[50];//學歷
intwages;//工資
charadr[255];//住址
charphone[13];//電話
};
typedefstructWORKER*PWORKER;
structLINK{
WORKERw;
LINK*next;
};
typedefstructLINK*PLINK;
//創建職工信息鏈表
PLINKcreate()
{
PLINKp=(PLINK)malloc(sizeof(structLINK));
if(NULL!=p)
{
p->next=NULL;
returnp;
}
printf("內存不足!\n");
returnNULL;
}
//顯示程序界面文字
voidmessage()
{
system("cls");
printf("歡迎進入職工管理系統\n");
printf("--幫助請輸入:0\n");
printf("--錄入職工信息請輸入:1\n");
printf("--浏覽職工信息請輸入:2\n");
printf("--按職工號查詢請輸入:3\n");
printf("--按姓名查詢請輸入:4\n");
printf("--刪除職工信息請輸入:5\n");
printf("\n--清屏請輸入:6\n");
printf("--退出請輸入:-1\n");
}
//錄入職工信息
intadd(PLINKp)
{
PLINKq=(PLINK)malloc(sizeof(structLINK));
if(NULL==q)
{
printf("錄入失敗提示:內存不足!\n");
return-1;
}
printf("請輸入職工號(數字):");
scanf("%d",&q->w.id);
PLINKh=p->next;
while(h)
{
if(h->w.id==q->w.id)
{
free(q);
printf("錄入失敗提示:此職工號已經存在!\n");
return-1;
}
h=h->next;
}
printf("請輸入職工姓名(文字):");
scanf("%s",&q->w.name);
printf("請輸入職工性別(文字):");
scanf("%s",&q->w.sex);
printf("請輸入職工年齡(數字):");
scanf("%d",&q->w.age);
printf("請輸入職工學歷(文字):");
scanf("%s",&q->w.edu);
printf("請輸入職工工資(數字):");
scanf("%d",&q->w.wages);
printf("請輸入職工住址(文字):");
scanf("%s",&q->w.adr);
printf("請輸入職工電話(文字):");
scanf("%s",&q->w.phone);
q->next=p->next;
p->next=q;
printf("錄入成功!\n");
return-1;
}
//浏覽職工信息
voidshow(PLINKp)
{
message();
printf("浏覽職工信息\n");
printf("職工號\t姓名\t性別\t年齡\t學歷\t工資\t住址\t電話\n");
while(NULL!=p->next)
{
printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",
p->next->w.id,p->next->w.name,p->next->w.sex,p->next->w.adr,
p->next->w.edu,p->next->w.wages,p->next->w.adr,p->next->w.phone);
p=p->next;
}
printf("顯示完畢!\n");
}
//按職工號查詢
PLINKfindid(PLINKp,intid)
{
message();
printf("按職工號查詢\n");
printf("職工號\t姓名\t性別\t年齡\t學歷\t工資\t住址\t電話\n");
while(NULL!=p->next)
{
if(p->next->w.id==id)
{
printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",
p->next->w.id,p->next->w.name,p->next->w.sex,p->next->w.adr,
p->next->w.edu,p->next->w.wages,p->next->w.adr,p->next->w.phone);
returnp;
}
p=p->next;
}
printf("查詢結束!\n");
returnNULL;
}
//按姓名查詢
PLINKfindname(PLINKp,char*name)
{
message();
printf("按姓名查詢\n");
printf("職工號\t姓名\t性別\t年齡\t學歷\t工資\t住址\t電話\n");
while(NULL!=p->next)
{
if(0==strcmp(p->next->w.name,name))
{
printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",
p->next->w.id,p->next->w.name,p->next->w.sex,p->next->w.adr,
p->next->w.edu,p->next->w.wages,p->next->w.adr,p->next->w.phone);
returnp;
}
p=p->next;
}
printf("查詢結束!\n");
returnNULL;
}
//按職工號刪除職工信息
intdel(PLINKp,intid)
{
message();
printf("按職工號刪除職工信息\n");
while(NULL!=p->next)
{
if(p->next->w.id==id)
{
PLINKq=p->next;
p->next=p->next->next;
free(q);
printf("刪除成功!\n");
return1;
}
p=p->next;
}
printf("沒有你輸入的職工號!\n");
return-1;
}
//程序結束時釋放內存
voidrelease(PLINKp)
{
PLINKq;
while(NULL!=p->next)
{
q=p;
p=p->next;
free(q);
}
free(p);
}
intmain()
{
intcmd=0;//命令號
intid;
charname[20];
PLINKpworker;
if(!(pworker=create()))
{
exit(0);//如果創建職工信息鏈表表頭失敗則結束程序
}
while(cmd!=-1)
{
switch(cmd)
{
case0:
message();
break;
case1:
add(pworker);
break;
case2:
show(pworker);
break;
case3:
printf("請輸入要查詢的職工號:");
scanf("%d",&id);
findid(pworker,id);
break;
case4:
printf("請輸入要查詢的職姓名:");
scanf("%s",name);
findname(pworker,name);
break;
case5:
printf("請輸入要刪除的職工號:");
scanf("%d",&id);
del(pworker,id);
break;
case6:
default:
message();
}
printf("請輸入操作命令數字:\n");
scanf("%d",&cmd);//接收命令
}
printf("謝謝使用!\n");
release(pworker);
return0;
}
//程序有詳細說明了
//希望你以後好好學。