




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1实发工资应发工资扣款税费。根据应发工资,1000 元以内的不扣税,1000-2000 扣税超出1000 元部分的5%,2000-3000 元再扣超出2000 元部分的10%,超过3000 元的都扣除超出3000 元部分的15%。确定信息的数据结构:struct Salary_type char name20;char num10;float jbgz;float yfgz;float koukuan;float shuifei;float sfgz;struct salary *prior;struct salary *next; Salary N;2程序应具有以下基本功能: 添加:添加一个或几个的记录,并可选择继续输入或退出。 查询:可按姓名或工号查找记录,若找到,则显示其记录,否则提示未找到,无论查找成功与否,应还可选择继续查找或退出。 删除:删除记录。先查找需要删除的记录,如找到,则删除该记录,可添加提示,选择确认后删除,否则可以取消该操作;如果查找失败,则返回没有此记录。 修改:修改记录。输入姓名并查找,若找到,显示该姓名的所有信息,并可进行修改;否则提示无此信息。设计要求:1核心数据结构用到的结构体要采用动态内存分配和链表结构。家庭住址也要求存储在动态分配的内存中,以节约内存。内存的起始地址存储在结构体的成员指针addr 中。2使用文件进行存储和管理。程序启动时可从文件中读取通信信息,或从键盘输入通信信息;运行过程中如添加或删除记录时也可对文件进行存取;退出前可选择将通信信息保存到文件中。3不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要注释清楚。对程序其它部分也进行必要的注释。 2011-4-2 22:57 最佳答案 #include#include#includetypedef struct Salary_type char name20; char num10;/ 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) taxpayment=0; else if(salary=2000) taxpayment=(float)(salary-1000)*0.05); else if(salaryprior=NULL; S-next=NULL; 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(%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); 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(%s,num); fflush(stdin); for(p=S-next;p!=NULL;p=p-next) if(strcmp(p-num,num)=0) printf(姓名为:t%sn,p-name); printf(工号为:t%sn,p-num); printf(应发工资为:t%.2fn,p-yfgz); printf(扣款为:t%.2fn,p-koukuan); printf(税费为:t%.2fn,p-shuifei); printf(实际工资为:t%.2fn,p-sfgz); break; printf(请输入一个字符,若输入c则继续输入记录,若输入e则退出输入); scanf(%c,&ch); fflush(stdin); Salary deletelist(Salary S)/删除:删除记录。先查找需要删除的记录,如找到,则删除该记录,可添加提示,选择确认后删除,否则可以取消该操作;如果查找失败,则返回没有此记录。 char *num; char ch; Salary p,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; return S;Salary modifylist(Salary S)/修改:修改记录。输入姓名并查找,若找到,显示该姓名的所有信息,并可进行修改;否则提示无此信息。 char name20; Salary p; 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%sn,p-name); printf(工号为:t%sn,p-num); printf(应发工资为:t%.2fn,p-yfgz); printf(扣款为:t%.2fn,p-koukuan); printf(税费为:t%.2fn,p-shuifei); printf(实际工资为:t%.2fn,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; return S;void output(Salary S) Salary p; for(p=S-next;p!=NULL;p=p-next) printf(姓名为:t%sn,p-name); printf(工号为:t%sn,p-num); printf(应发工资为:t%.2fn,p-yfgz); printf(扣款为:t%.2fn,p-koukuan); printf(税费为:t%.2fn,p-shuifei); printf(实际工资为:t%.2fn,p-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:S=insertlist(S);goto loop; case S:searchlist(S);goto loop; case D:S=deletelist(S);goto loop; case M:S=modifylist(S);goto loop; case P:output(S);goto loop; case E:break; void main() Salary S; S=initlist(); functionselect(S);追问谢谢你啊。你能帮我把goto loop语句,改写成用while循环吗?谢谢你啊,十分感谢啊 回答void functionselect(Salary S) char ch;while(1) printf(I表示插入记录、S表示查找记录、D表示删除记录、M表示修改记录、E表示退出,P表示输出记录n); printf(请输入一个字符:n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第11课 烧开水说课稿-2023-2024学年小学劳动小学中年级湘教版(广西)
- 2.2 音视频的编辑说课稿-2025-2026学年初中信息技术重大版2019七年级下册-重大版2019
- 2025健身房行业劳动合同
- 2025咖啡销售合同翻译
- 2025跨国销售代理合同
- 第二章 有理数及其运算单元说课稿 -2024-2025学年鲁教版(五四制)数学六年级上册
- 七台河事业单位笔试真题2025
- 塑料厂产品检验记录细则
- 2025设施保养合同(标准版)
- 2025年海南公务员真题
- 骨关节外科问诊知识讲座
- 国际篮联三对三篮球比赛记录表
- 07FK02防空地下室通风设备安装图集
- 室内装饰装修施工工艺标准规范及管理流程
- 【拓展阅读】类文阅读《燧人氏钻木取火》
- 李建涛员工从“老板”做起课件
- 海船船员甲类三管轮实习记录簿
- 注采压力分布规律研究课件
- 填料及表面处理培训课件
- 法院民事调解协议书
- 2022年人口变动情况抽样调查表
评论
0/150
提交评论