学院教职工工资管理系统C语言程序设计Word文档下载推荐.docx
《学院教职工工资管理系统C语言程序设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《学院教职工工资管理系统C语言程序设计Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
voidall();
/*计算工资总额函数*/
voidave();
/*计算平均工资函数*/
voidsort1();
/*排序函数*/
voidsort2();
voidsame();
/*找工资级别相同职工名单函数*/
voidreviwe();
/*修改函数*/
voidfind();
/*查询函数*/
voidprint();
/*数据输出函数*/
voidmain()
charch;
printf("
※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※\n"
);
╱********欢◇☆○进◇☆○院◇☆○工◇☆○资◇☆○理◇☆○统************╲\n"
╲********○☆◇迎○☆◇入○☆◇职○☆◇工○☆◇管○☆◇系○************╱\n"
\n☆请选择你所需要的服务,按回车确认☆\n"
\n\t\ts:
数据输入\t\n\t\ta:
总工资\t\n\t\tv:
平均工资\t\n\t\tg:
按工资排序\t\n\t\tx:
按姓名排序\t\n\t\tm:
工资级别相同职工名单\t\n\t\tr:
修改\t\n\t\tf:
查询\t\n\t\te:
退出\t\n"
scanf("
%c"
&
ch);
while(ch!
='
e'
)
{
switch(ch)
case'
s'
:
save();
break;
a'
all();
v'
ave();
g'
sort1();
x'
sort2();
m'
same();
r'
reviwe();
f'
find();
}
\n☆请再次选择你所需要的服务,按回车确认☆\n"
getchar();
}
/*函数功能:
输入职工信息*/
voidsave()
FILE*fp;
intj=0,i;
charch[2];
intn=0;
请选择输入方式:
\n"
1:
向管理系统重新输入数据,并删除原有数据\n2:
向系统增加数据\n"
%d"
i);
/*输入选项*/
if(i==1)
if((fp=fopen("
C:
\\file1.dat"
"
wb+"
))==NULL)/*判断文件能否打开*/
cannotopenthisfile\n"
exit(0);
你是否要输入职工信息?
(是:
y/否:
n)"
%s"
ch);
while(strcmp(ch,"
y"
)==0||strcmp(ch,"
Y"
)==0)/*判断是否要录入新信息*/
{
\n姓名\t"
teac[j].name);
\n性别(男:
b/女:
g)\t"
teac[j].sex);
\n生日:
年\t"
teac[j].year);
\n月\t"
teac[j].mounth);
while(teac[j].mounth<
1||teac[j].mounth>
12)
输入月份有误请重输"
\n年龄\t"
teac[j].age);
\n婚否(是y/否n)\t"
teac[j].marrige);
\n地址\t"
teac[j].addr);
\n职称\t"
teac[j].engineer);
\n工资\t"
%f"
teac[j].wage);
fwrite(&
teac[j],sizeof(structteacher),1,fp);
/*信息写入磁盘*/
j++;
n)\n"
fclose(fp);
/*关闭文件*/
if(i==2)
c:
rb"
}
for(n=0;
(fread(&
teac[n],sizeof(structteacher),1,fp)==1);
n++)continue;
/*将职工信息读入内存*/
你是否要增加职工信息?
teac[j+n].name);
teac[j+n].sex);
teac[j+n].year);
teac[j+n].mounth);
while(teac[j+n].mounth<
1||teac[j+n].mounth>
teac[j+n].age);
teac[j+n].marrige);
teac[j+n].addr);
teac[j+n].engineer);
teac[j+n].wage);
//fwrite(&
teac[j+n],sizeof(structteacher),1,fp);
n++;
wb"
for(j=0;
j<
n;
j++)
计算总工资*/
voidall()
FILE*fp;
n=0;
sum=0;
ab+"
))==NULL)
姓名\t性别\t生日:
年月\t年龄\t婚否\t地址\t职称\t工资\n"
n++)/*将职工信息读入内存*/
{printf("
%s\t%s\t%d%d\t%d\t%s\t%st\t%s\t%f\n"
teac[n].name,teac[n].sex,teac[n].year,teac[n].mounth,teac[n].age,teac[n].marrige,teac[n].addr,teac[n].engineer,teac[n].wage);
/*将职工信息输出到屏幕上*/
sum=sum+teac[n].wage;
continue;
总工资为%f\n"
sum);
/*函数功能:
计算平均工资*/
voidave()
floataver;
all();
/*调用计算总工资函数得到总工资*/
(float)(aver=sum/n);
/*计算平均工资*/
平均工资为%f\n"
aver);
按工资由低到高排序*/
voidsort1()
FILE*fp;
inti,j;
structteachertemp;
/*定义一个结构体变量一边在交换顺序是暂时存放数据*/
))==NULL)/*以只读方式打开一个二进制文件判断能否打开*/
//while(!
feof(fp))/*检查文件是否结束*/
n++)
/*排序*/
for(i=0;
i<
i++)
n-(i+1);
if(teac[j].wage>
teac[j+1].wage)
temp=teac[j];
teac[j]=teac[j+1];
teac[j+1]=temp;
print();
/*调用数据输出函数,输出结果*/
voidsort2()
if(strcmp(teac[j].name,teac[j+1].name)>
0)
找工资级别相同的职工名单*/
voidsame()
staticintt=0;
/*定义一个静态变量*/
inti,j,k,m,a,l;
structteachertemp[N];
/*定义一个结构体数组存放工资级别相同的职工名单*/
))==NULL)/*以读写方式打开一个文本文件并判断能否打开*/
%s\t%s\t%d%d\t%d\t%s\t%s\t%s\t%f\n"
/*找相同*/
m=t;
a=0;
if(i>
for(l=0;
l<
t;
l++)
if(teac[i].wage==temp[l].wage)
a++;
if(a>
/*说明该数已在上一级比较中存入temp数组中了不需再比结束本次循环*/
else
for(j=i;
if(teac[i].wage==teac[j].wage)
temp[t++]=teac[j];
\n工资级别为%f的名单为:
\t"
temp[t-1].wage);
for(k=m;
k<
k++)
%s\t"
temp[k].name);
删除不需要的职工信息*/
voidreviwe()/*删除函数*/
inti,j,k=0;
inta;
if(n==0)
没有记录\n"
请输入姓名\n"
name);
if(strcmp(name,teac[i].name)==0)/*找与要修改的信息相同的姓名*/
该职工信息为:
%s\t%s\t%d\t%d%d\t%s\t%s\t%s\t%f\n"
teac[i].name,teac[i].sex,teac[i].year,teac[i].mounth,teac[i].age,teac[i].marrige,teac[i].addr,teac[i].engineer,teac[i].wage);
break;
是否删除?
(y/n)"
if(strcmp(ch,"
)==0)/*判断是否删除*/
已成功删除信息\n\n"
strcpy(teac[j].addr,teac[j+1].addr);
strcpy(teac[j].engineer,teac[j+1].engineer);
strcpy(teac[j].marrige,teac[j+1].marrige);
strcpy(teac[j].name,teac[j+1].name);
strcpy(teac[j].sex,teac[j+1].sex);
teac[j].age=teac[j+1].age;
teac[j].year=teac[j+1].year;
teac[j].mounth=teac[j+1].mounth;
n-1;
查询*/
voidfind()
inti;
是否查询?
)==0)
你要查询的职工信息如下:
if(i==n)
没有你需要查询的信息\n"
是否继续查询?
输出数据*/
voidprint()
\n姓名\t性别\t生日: