c语言实现职工管理系统Word文档格式.docx

上传人:b****5 文档编号:18120742 上传时间:2022-12-13 格式:DOCX 页数:25 大小:19.66KB
下载 相关 举报
c语言实现职工管理系统Word文档格式.docx_第1页
第1页 / 共25页
c语言实现职工管理系统Word文档格式.docx_第2页
第2页 / 共25页
c语言实现职工管理系统Word文档格式.docx_第3页
第3页 / 共25页
c语言实现职工管理系统Word文档格式.docx_第4页
第4页 / 共25页
c语言实现职工管理系统Word文档格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

c语言实现职工管理系统Word文档格式.docx

《c语言实现职工管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《c语言实现职工管理系统Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。

c语言实现职工管理系统Word文档格式.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1