c语言实现职工管理系统Word文档格式.docx
《c语言实现职工管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《c语言实现职工管理系统Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
charname[20];
charsex;
longbyear;
//birthyear出生年月
longiyear;
//imployyear工作年月
chareducation[20];
charduty[20];
charaddress[20];
charphone[20];
structstaff*next;
}*head=NULL,*thisn,*newn,sta[I]={0},temp;
/*temp用于交换的中间量*/
voidcin(void);
/*输入信息*/
intidentify(intnum);
/*对职工号是否重复进行验证*/
voidcout(void);
/*输出信息*/
voidsort(void);
/*查询排序*/
voiddel(void);
/*删除职工信息*/
intrecord(void);
/*将文件中的数据录入结构体数组中*/
voidiyear(intj);
/*按工作年月排序*/
voideducation(intj);
/*按学历排序*/
voidmodify(void);
/*修改职工信息*/
voiddescending(void);
/*学历降序输出*/
voidascending(void);
/*学历升序输出*/
voidprintmsg(inti);
voidseek(void);
//查询员工信息
intmain(void)
intflag=1;
while(flag)
{
system("
cls"
);
/*清屏*/
printf("
欢迎登陆职工信息管理系统!
\n"
【1】输入职工信息【2】输出职工信息\n"
【3】信息查询排序【4】删除职工信息\n"
【5】修改职工信息【6】查询职工信息\n"
请输入以上数字,选择相应的功能:
"
switch(getchar())
case'
1'
:
cin();
break;
/*调用输入信息的函数*/
2'
cout();
/*调用输出信息的函数*/
3'
sort();
/*调用排序的函数*/
4'
del();
/*调用删除职工信息函数*/
5'
modify();
/*调用修改职工信息的函数*/
6'
seek();
default:
flag=0;
/*跳出循环体,结束程序*/
}
return0;
}
voidcin(void)/*输入信息的函数*/
FILE*fp;
intreceive;
/*接收返回值*/
if((fp=fopen("
information.txt"
"
a+"
))==NULL)/*为读写打开一个文本文件*/
文件打开错误\n"
exit
(1);
/*关闭所有文件,终止正在执行的程序,待用户检查出错误,修改后再运行*/
newn=(structstaff*)malloc(sizeof(structstaff));
if(head==NULL)/*连接链表*/
head=newn;
thisn=newn;
thisn->
next=NULL;
else
thisn=head;
while(thisn->
next!
=NULL)
thisn=thisn->
next;
next=newn;
getchar();
/*接收缓冲区中选择菜单时多余的回车*/
fputc('
\n'
fp);
/*每次记录信息前先换行*/
请输入职工号:
"
gets(tempstr);
thisn->
num=atoi(tempstr);
/*atoi()将字符串转换成整型数*/
receive=identify(thisn->
num);
while(receive)
printf("
gets(tempstr);
receive=identify(thisn->
fputs(tempstr,fp);
fputs("
/*信息排版的需要*/
请输入姓名:
gets(thisn->
name);
fputs(thisn->
name,fp);
请输入性别(填F或M):
sex=getchar();
getchar();
fputc(thisn->
sex,fp);
请输入出生年月(如):
byear=atoi(tempstr);
printf("
请输入工作年月(如):
iyear=atoi(tempstr);
请输入学历(博士、硕士、本科、大专、高中、中专、初中、小学、其他):
education);
education,fp);
请输入职务:
duty);
duty,fp);
请输入地址:
address);
address,fp);
请输入电话号码:
phone);
phone,fp);
fclose(fp);
intidentify(intnum)/*对职工号是否重复进行验证*/
inti;
r"
))==NULL)
文件打开错误"
exit
(1);
for(i=0;
i<
I;
i++)/*将文件中的信息按行写入结构体数组中*/
fscanf(fp,"
%d%s%c%ld%ld%s%s%s%s\n"
&
sta[i].num,&
sta[i].name,&
sta[i].sex,&
sta[i].byear,&
sta[i].iyear,&
sta[i].education,&
sta[i].duty,
sta[i].address,&
sta[i].phone);
if(sta[i].num==num)
system("
账号已存在【1】重新输入【2】退出系统\n"
请输入以上数字,选择相应的功能:
switch(getchar())
{
case'
return
(1);
/*输入不成功,返回值作为循环条件*/
exit
(1);
/*退出系统*/
}
if(sta[i].num==0)/*动态限制循环输出的次数*/
break;
return(0);
/*输入成功,返回值作为循环条件*/
voidcout(void)/*输出信息*/
ints,i,j;
i++)/*将文件中的信息按行写入结构体数组中并输出*/
s=record();
setlocale(LC_COLLATE,"
for(j=0;
j<
s-1;
j++)
s-j-1;
i++)
if(strcoll(sta[i].name,sta[i+1].name)>
0)
temp=sta[i];
sta[i]=sta[i+1];
sta[i+1]=temp;
}
工号姓名性别出生年月工作年月学历职务地址电话\n"
-----------------------------------------------------------------------------\n"
for(i=0;
s;
i++)
printmsg(i);
/*接收回车*/
\n\n\n\n\n回到主界面请按r退出系统请按其他键\n"
case'
r'
system("
/*getchar()接收回车*/
default:
exit(0);
}
voidsort(void)/*查询排序*/
intj;
j=record();
【1】按工作年月排序【2】按学历排序\n"
iyear(j);
education(j);
【1】回到主界面【2】退出系统\n"
switch(getchar())
voidiyear(intj)/*按工作年月排序*/
inti,k;
/*i,k用于循环体中以及用于结构体下标*/
for(k=0;
k<
j-1;
k++)
=j-k-1;
if(sta[i].iyear<
sta[i+1].iyear)
=j-1;
%-5d%-10s%-4c%-4ld%-4ld%-6s%-6s%-20s%-s\n"
sta[i].num,sta[i].name,sta[i].sex,sta[i].byear,sta[i].iyear,sta[i].education,sta[i].duty,
sta[i].address,sta[i].phone);
【1】返回上一级【2】退出系统\n"
voideducation(intj)/*按学历排序*/
【1】学历降序排列【2】学历升序排列\n"
descending();
ascending();
\n\n按任意键返回上一级"
voiddel(void)/*删除职工信息*/
intnum,i,j,k;
/*num用于输入要删除的职工号,i用于循环体以及数组下标,j记录职工人数*/
请输入要删除的职工号:
scanf("
%d"
&
/*接收回车*/
if(sta[i].num==0)
j=i;
w"
))==NULL)/*重新向文件输入所有信息*/
for(k=j;
record();
sta[k]=sta[k+1];
sprintf(tempstr,"
sta[i].num);
/*将整型数转化成字符串*/
fputs(tempstr,fp);
fputs(sta[i].name,fp);
fputc(sta[i].sex,fp);
sprintf(tempstr,"
%ld"
sta[i].byear);
sta[i].iyear);
fputs(sta[i].education,fp);
fputs(sta[i].duty,fp);
fputs(sta[i].address,fp);
fputs(sta[i].phone,fp);
fclose(fp);
intrecord(void)/*将文件中的数据录入结构体数组中*/
inti,j;
/*j用于记录职工的人数*/
for(i=0,j=0;
i++,j++)/*将文件中的信息按行写入结构体数组中*/
returnj;
voidmodify(void)/*修改职工信息*/
inti,num,j;
/*num是要修改的职工号,j用于计算职工人数*/
请输入要修改的职工号码:
i++,j++)/*将文件中的信息按行写入结构体数组中并输出*/
{if(sta[i].num==num)
{
【1】修改姓名【2】修改学历\n"
【3】修改职务【4】修改住址\n"
【5】修改电话\n"
请输入新姓名:
gets(sta[i].name);
printf("
修改成功!
按任意键返回主界面"
getchar();
break;
请输入新学历(博士、硕士、本科、大专、高中、中专、初中、小学、其他):
gets(sta[i].education);
请输入新职务:
gets(sta[i].duty);
请输入新地址:
gets(sta[i].address);
get