教师工资管理系统程序代码.docx

上传人:b****8 文档编号:9908158 上传时间:2023-02-07 格式:DOCX 页数:11 大小:16.11KB
下载 相关 举报
教师工资管理系统程序代码.docx_第1页
第1页 / 共11页
教师工资管理系统程序代码.docx_第2页
第2页 / 共11页
教师工资管理系统程序代码.docx_第3页
第3页 / 共11页
教师工资管理系统程序代码.docx_第4页
第4页 / 共11页
教师工资管理系统程序代码.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

教师工资管理系统程序代码.docx

《教师工资管理系统程序代码.docx》由会员分享,可在线阅读,更多相关《教师工资管理系统程序代码.docx(11页珍藏版)》请在冰豆网上搜索。

教师工资管理系统程序代码.docx

教师工资管理系统程序代码

1.实发工资=应发工资-扣款-税费。

根据应发工资,1000元以

内的不扣税,1000-2000扣税超出1000元部分的5%,2000-3000元再扣

超出2000元部分的10%,超过3000元的都扣除超出3000元部分的15%。

确定信息的数据结构:

structSalary_type

{charname[20];

charnum[10];

floatjbgz;

floatyfgz;

floatkoukuan;

floatshuifei;

floatsfgz;

structsalary*prior;

structsalary*next;

}Salary[N];

2.程序应具有以下基本功能:

添加:

添加一个或几个的记录,并可选择继续输入或退出。

查询:

可按姓名或工号查找记录,若找到,则显示其记录,否

则提示未找到,无论查找成功与否,应还可选择继续查找或退

出。

删除:

删除记录。

先查找需要删除的记录,如找到,则删除该

记录,可添加提示,选择确认后删除,否则可以取消该操作;

如果查找失败,则返回没有此记录。

修改:

修改记录。

输入姓名并查找,若找到,显示该姓名的所

有信息,并可进行修改;否则提示无此信息。

设计要求:

1.核心数据结构用到的结构体要采用动态内存分配和链表结构。

家庭住址也要求存储在动态分配的内存中,以节约内存。

内存的起始地

址存储在结构体的成员指针addr中。

2.使用文件进行存储和管理。

程序启动时可从文件中读取通信信息,

或从键盘输入通信信息;运行过程中如添加或删除记录时也可对文件进

行存取;退出前可选择将通信信息保存到文件中。

3.不同的功能使用不同的函数实现(模块化),对每个函数的功能和

调用接口要注释清楚。

对程序其它部分也进行必要的注释。

2011-4-222:

57最佳答案#include

#include

#include

typedefstructSalary_type

{

charname[20];

charnum[10];

//floatjbgz;

floatyfgz;//应发工资

floatkoukuan;//扣款

floatshuifei;//税费

floatsfgz;//实发工资

structSalary_type*prior;

structSalary_type*next;

}salary,*Salary;

floattaxpay(floatsalary)

{

floattaxpayment;

if(salary<=1000)

taxpayment=0;

else

if(salary<=2000)

taxpayment=(float)((salary-1000)*0.05);

else

if(salary<=3000)

taxpayment=(float)((salary-2000)*0.10+1000*0.05);

else

taxpayment=(float)((salary-3000)*0.15);

returntaxpayment;

}

Salaryinitlist()

{

SalaryS;

S=(Salary)malloc(sizeof(salary));

S->prior=NULL;

S->next=NULL;

returnS;

}

Salaryinsertlist(SalaryS)//添加:

添加一个或几个的记录,并可选择继续输入或退出。

{

Salaryp;

Salaryt;

charch;

p=(Salary)malloc(sizeof(salary));

printf("请输入一个字符,若输入c则继续输入记录,若输入e则退出输入");

scanf("%c",&ch);

fflush(stdin);

while(ch=='c'||ch=='C')

{

printf("请输入姓名:

\n");

scanf("%s",p->name);

fflush(stdin);

printf("请输入工号:

\n");

scanf("%s",p->num);

printf("请输入应发工资:

\n");

scanf("%f",&p->yfgz);

printf("请输入扣款:

\n");

scanf("%f",&p->koukuan);

fflush(stdin);

p->shuifei=taxpay(p->yfgz);

p->sfgz=p->yfgz-p->koukuan-p->shuifei;

for(t=S;t->next!

=NULL;t=t->next);

p->prior=t;

p->next=NULL;

t->next=p;

p=(Salary)malloc(sizeof(salary));

printf("请输入一个字符,若输入c则继续输入记录,若输入e则退出输入");

scanf("%c",&ch);

fflush(stdin);

}

returnS;

}

voidsearchlist(SalaryS)

//查询:

可按姓名或工号查找记录,若找到,则显示其记录,否则提示未找到,无论查找成功与否,应还可选择继续查找或退出。

{

Salaryp;

charch,*num;

num=(char*)malloc(sizeof(char)*10);

printf("请输入一个字符,若输入c则继续输入记录,若输入e则退出输入");

scanf("%c",&ch);

fflush(stdin);

while(ch=='c'||ch=='C')

{

printf("请输入要查找的工号:

\n");

scanf("%s",num);

fflush(stdin);

for(p=S->next;p!

=NULL;p=p->next)

{

if(strcmp(p->num,num)==0)

{

printf("姓名为:

\t%s\n",p->name);

printf("工号为:

\t%s\n",p->num);

printf("应发工资为:

\t%.2f\n",p->yfgz);

printf("扣款为:

\t%.2f\n",p->koukuan);

printf("税费为:

\t%.2f\n",p->shuifei);

printf("实际工资为:

\t%.2f\n",p->sfgz);

break;

}

}

printf("请输入一个字符,若输入c则继续输入记录,若输入e则退出输入");

scanf("%c",&ch);

fflush(stdin);

}

}

Salarydeletelist(SalaryS)

//删除:

删除记录。

先查找需要删除的记录,如找到,则删除该记录,可添加提示,选择确认后删除,否则可以取消该操作;如果查找失败,则返回没有此记录。

{

char*num;

charch;

Salaryp,pf;

num=(char*)malloc(sizeof(char)*10);

printf("请输入要查找的工号:

\n");

scanf("%s",num);

fflush(stdin);

for(p=S->next;p!

=NULL&&strcmp(p->num,num)!

=0;pf=p,p=p->next);

if(p==NULL)

printf("无该记录\n");

else

if(p!

=S->next)

{

printf("是否确认删除:

Y确认删除、N不删除\n");

ch=getchar();

fflush(stdin);

if(ch=='Y'||ch=='y')

{

pf->next=p->next;

p->next->prior=p->prior;

}

}

else

{

S->next=p->next;

p->next->prior=S->next;

}

returnS;

}

Salarymodifylist(SalaryS)

//修改:

修改记录。

输入姓名并查找,若找到,显示该姓名的所有信息,并可进行修改;否则提示无此信息。

{

charname[20];

Salaryp;

printf("请输入要修改记录的姓名:

\n");

scanf("%s",name);

fflush(stdin);

for(p=S->next;p!

=NULL&&strcmp(p->name,name)!

=0;p=p->next);

if(p==NULL)

printf("无此信息\n");

else

{

printf("姓名为:

\t%s\n",p->name);

printf("工号为:

\t%s\n",p->num);

printf("应发工资为:

\t%.2f\n",p->yfgz);

printf("扣款为:

\t%.2f\n",p->koukuan);

printf("税费为:

\t%.2f\n",p->shuifei);

printf("实际工资为:

\t%.2f\n",p->sfgz);

printf("请对每一项进行修改:

\n");

printf("姓名:

");

scanf("%s",p->name);

fflush(stdin);

printf("\n");

printf("工号:

");

scanf("%s",p->num);

printf("\n");

printf("应发工资:

");

scanf("%f",&p->yfgz);

printf("\n");

printf("扣款:

");

scanf("%f",&p->koukuan);

fflush(stdin);

printf("\n");

p->shuifei=taxpay(p->yfgz);

p->sfgz=p->yfgz-p->koukuan-p->shuifei;

}

returnS;

}

voidoutput(SalaryS)

{

Salaryp;

for(p=S->next;p!

=NULL;p=p->next)

{

printf("姓名为:

\t%s\n",p->name);

printf("工号为:

\t%s\n",p->num);

printf("应发工资为:

\t%.2f\n",p->yfgz);

printf("扣款为:

\t%.2f\n",p->koukuan);

printf("税费为:

\t%.2f\n",p->shuifei);

printf("实际工资为:

\t%.2f\n",p->sfgz);

}

}

voidfunctionselect(SalaryS)

{

charch;

loop:

printf("I表示插入记录、S表示查找记录、D表示删除记录、M表示修改记录、E表示退出,P表示输出记录\n");

printf("请输入一个字符:

\n");

scanf("%c",&ch);

fflush(stdin);

switch(ch)

{

case'I':

S=insertlist(S);gotoloop;

case'S':

searchlist(S);gotoloop;

case'D':

S=deletelist(S);gotoloop;

case'M':

S=modifylist(S);gotoloop;

case'P':

output(S);gotoloop;

case'E':

break;

}

}

voidmain()

{

SalaryS;

S=initlist();

functionselect(S);

}追问谢谢你啊。

你能帮我把gotoloop语句,改写成用while循环吗?

谢谢你啊,十分感谢啊回答voidfunctionselect(SalaryS)

{

charch;

while

(1)

{

printf("I表示插入记录、S表示查找记录、D表示删除记录、M表示修改记录、E表示退出,P表示输出记录\n");

printf("请输入一个字符:

\n");

scanf("%c",&ch);

fflush(stdin);

switch(ch)

{

case'I':

S=insertlist(S);break;

case'S':

searchlist(S);break;

case'D':

S=deletelist(S);break;

case'M':

S=modifylist(S);break;

case'P':

output(S);break;

case'E':

break;

}

if(ch=='E')

break;

}

}赞同

1|评论

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

当前位置:首页 > 解决方案 > 学习计划

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

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