《2022年2022年教师工资管理系统程序代码 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年教师工资管理系统程序代码 .pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、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程序应具有以下
2、基本功能:添加:添加一个或几个的记录,并可选择继续输入或退出。查询:可按姓名或工号查找记录,若找到,则显示其记录,否则提示未找到,无论查找成功与否,应还可选择继续查找或退出。删除:删除记录。先查找需要删除的记录,如找到,则删除该记录,可添加提示,选择确认后删除,否则可以取消该操作;如果查找失败,则返回没有此记录。修改:修改记录。输入姓名并查找,若找到,显示该姓名的所有信息,并可进行修改;否则提示无此信息。设计要求:1核心数据结构用到的结构体要采用动态内存分配和链表结构。家庭住址也要求存储在动态分配的内存中,以节约内存。内存的起始地址存储在结构体的成员指针addr 中。2使用文件进行存储和管理。
3、程序启动时可从文件中读取通信信息,或从键盘输入通信信息;运行过程中如添加或删除记录时也可对文件进行存取;退出前可选择将通信信息保存到文件中。3不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要注释清楚。对程序其它部分也进行必要的注释。2011-4-2 22:57 最佳答案#include #include #include typedef struct Salary_type char name20; char num10; / float jbgz; float yfgz;/ 应发工资float koukuan;/ 扣款名师资料总结 - - -精品资料欢迎下载 - - -
4、- - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 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)(
5、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); sca
6、nf(%s,p-name); fflush(stdin); printf( 请输入工号:n); scanf(%s,p-num); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - printf( 请输入应发工资:n); scanf(%f,&p-yfgz); printf( 请输入扣款 :n); scanf(%f,&p-koukuan); fflush(stdin); p-shuifei=taxpay(p-yfgz); p-sfgz
7、=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
8、 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-nu
9、m); printf( 应发工资为 :t%.2fn,p-yfgz); printf( 扣款为 :t%.2fn,p-koukuan); printf( 税费为 :t%.2fn,p-shuifei); printf( 实际工资为 :t%.2fn,p-sfgz); break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - printf( 请输入一个字符,若输入c 则继续输入记录,若输入e 则退出输入 ); scanf(%c,&ch
10、); 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); i
11、f(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) /修改:修改记录。输入姓名并查找,若找到,显示该姓名的所有信息,并可进行修改;否则提示无此信息。 名师资料总结 - - -
12、精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - 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( 工
13、号为 :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
14、); 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); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
15、 - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - 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 表示输出记录
16、 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); 追问谢
17、谢你啊。你能帮我把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:S=insertlist(S);break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - -
18、- - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 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| 评论名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -