扣税10002000 扣税超出1000 元局部520003000 元扣
超出2000 元局部10超3000 元扣超出3000 元局部15
确定信息数结构:
struct Salary_type
{ char name[20]
char num[10]
float jbgz
float yfgz
float koukuan
float shuifei
float sfgz
struct salary *prior
struct salary *next
} Salary [N]
2.程序应具根功:
添加:添加记录选择继续输入退出
查询:姓名工号查找记录假设找显示记录否
提示未找查找成功否应选择继续查找退
出
删:删记录先查找需删记录找删该
记录添加提示选择确认删否取消该操作
果查找失败返回没记录
修改:修改记录输入姓名查找假设找显示该姓名
信息进行修改否提示信息
设计求:
1.核心数结构结构体采动态存分配链表结构
家庭住址求存储动态分配存中节约存存起始
址存储结构体成员指针addr 中
2.文件进行存储理程序启动时文件中读取通信信息
键盘输入通信信息运行程中添加删记录时文件进
行存取退出前选择通信信息保存文件中
3.功函数实现〔模块化〕函数功
调接口注释清楚程序局部进行必注释
202142 2257 正确答案 #include
#include
#include
typedef struct Salary_type
{
char name[20]
char num[10]
float jbgz
float yfgz应发工资
float koukuan扣款
float shuifei税费
float sfgz实发工资
struct Salary_type *prior
struct Salary_type *next
} salary*Salary
float taxpay(float salary)
{
float taxpayment
if(salary<1000)
taxpayment0
else
if(salary<2000)
taxpayment(float)((salary1000)*005)
else
if(salary<3000)
taxpayment(float)((salary2000)*010+1000*005)
else
taxpayment(float)((salary3000)*015)
return taxpayment
}
Salary initlist()
{
Salary S
S(Salary)malloc(sizeof(salary))
S>priorNULL
S>nextNULL
return S
}
Salary insertlist(Salary S)添加:添加记录选择继续输入退出
{
Salary p
Salary t
char ch
p(Salary)malloc(sizeof(salary))
printf(请输入字符假设输入c继续输入记录假设输入e退出输入)
scanf(c&ch)
fflush(stdin)
while(ch'c' || ch'C')
{
printf(请输入姓名:\n)
scanf(sp>name)
fflush(stdin)
printf(请输入工号:\n)
scanf(sp>num)
printf(请输入应发工资\n)
scanf(f&p>yfgz)
printf(请输入扣款\n)
scanf(f&p>koukuan)
fflush(stdin)
p>shuifeitaxpay(p>yfgz)
p>sfgzp>yfgzp>koukuanp>shuifei
for(tSt>nextNULLtt>next)
p>priort
p>nextNULL
t>nextp
p(Salary)malloc(sizeof(salary))
printf(请输入字符假设输入c继续输入记录假设输入e退出输入)
scanf(c&ch)
fflush(stdin)
}
return S
}
void searchlist(Salary S)
查询:姓名工号查找记录假设找显示记录否提示未找查找成功否应选择继续查找退出
{
Salary p
char ch*num
num(char*)malloc(sizeof(char)*10)
printf(请输入字符假设输入c继续输入记录假设输入e退出输入)
scanf(c&ch)
fflush(stdin)
while(ch'c'||ch'C')
{
printf(请输入查找工号:\n)
scanf(snum)
fflush(stdin)
for(pS>nextpNULLpp>next)
{
if(strcmp(p>numnum)0)
{
printf(姓名\ts\np>name)
printf(工号\ts\np>num)
printf(应发工资\t2f\np>yfgz)
printf(扣款\t2f\np>koukuan)
printf(税费\t2f\np>shuifei)
printf(实际工资\t2f\np>sfgz)
break
}
}
printf(请输入字符假设输入c继续输入记录假设输入e退出输入)
scanf(c&ch)
fflush(stdin)
}
}
Salary deletelist(Salary S)
删:删记录先查找需删记录找删该记录添加提示选择确认删否取消该操作果查找失败返回没记录
{
char *num
char ch
Salary ppf
num(char*)malloc(sizeof(char)*10)
printf(请输入查找工号:\n)
scanf(snum)
fflush(stdin)
for(pS>nextpNULL && strcmp(p>numnum)0pfppp>next)
if(pNULL)
printf(该记录\n)
else
if(pS>next)
{
printf(否确认删Y确认删N删\n)
chgetchar()
fflush(stdin)
if(ch'Y'||ch'y')
{
pf>nextp>next
p>next>priorp>prior
}
}
else
{
S>nextp>next
p>next>priorS>next
}
return S
}
Salary modifylist(Salary S)
修改:修改记录输入姓名查找假设找显示该姓名信息进行修改否提示信息
{
char name[20]
Salary p
printf(请输入修改记录姓名\n)
scanf(sname)
fflush(stdin)
for(pS>nextpNULL && strcmp(p>namename)0pp>next)
if(pNULL)
printf(信息\n)
else
{
printf(姓名\ts\np>name)
printf(工号\ts\np>num)
printf(应发工资\t2f\np>yfgz)
printf(扣款\t2f\np>koukuan)
printf(税费\t2f\np>shuifei)
printf(实际工资\t2f\np>sfgz)
printf(请项进行修改\n)
printf(姓名:)
scanf(sp>name)
fflush(stdin)
printf(\n)
printf(工号:)
scanf(sp>num)
printf(\n)
printf(应发工资)
scanf(f&p>yfgz)
printf(\n)
printf(扣款)
scanf(f&p>koukuan)
fflush(stdin)
printf(\n)
p>shuifeitaxpay(p>yfgz)
p>sfgzp>yfgzp>koukuanp>shuifei
}
return S
}
void output(Salary S)
{
Salary p
for(pS>nextpNULLpp>next)
{
printf(姓名\ts\np>name)
printf(工号\ts\np>num)
printf(应发工资\t2f\np>yfgz)
printf(扣款\t2f\np>koukuan)
printf(税费\t2f\np>shuifei)
printf(实际工资\t2f\np>sfgz)
}
}
void functionselect(Salary S)
{
char ch
loop printf(I表示插入记录S表示查找记录D表示删记录M表示修改记录E表示退出P表示输出记录\n)
printf(请输入字符:\n)
scanf(c&ch)
fflush(stdin)
switch(ch)
{
case 'I'Sinsertlist(S)goto loop
case 'S'searchlist(S)goto loop
case 'D'Sdeletelist(S)goto loop
case 'M'Smodifylist(S)goto loop
case 'P'output(S)goto loop
case 'E'break
}
}
void main()
{
Salary S
Sinitlist()
functionselect(S)
}追问谢谢啊帮goto loop语句改写成while循环?谢谢啊十分感谢啊 答复void functionselect(Salary S)
{
char ch
while(1)
{
printf(I表示插入记录S表示查找记录D表示删记录M表示修改记录E表示退出P表示输出记录\n)
printf(请输入字符:\n)
scanf(c&ch)
fflush(stdin)
switch(ch)
{
case 'I'Sinsertlist(S)break
case 'S'searchlist(S)break
case 'D'Sdeletelist(S)break
case 'M'Smodifylist(S)break
case 'P'output(S)break
case 'E'break
}
if(ch'E')
break
}
} 赞
1| 评
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档