1、课程设计 教师工资管理系统运行平台:VC6.0(其他平台未经测试,不一定保证有效)制作者:弓箭 中南大学 信息科学与工程学院源代码如下:#include #include #include #include #define LEN sizeof(struct teacher)struct teacher int num;char name20;char sex20;char workplace50;char address50;long phone;double de_salary;double de_jintie;double de_shenghuobutie;double yingfa_s
2、alary;double cost_phone;double cost_water_elec;double cost_rent;double cost_tax;double cost_weisheng;double cost_gongjijin;double cost_all;double shifa_salary;struct teacher *next;/*读取函数*/struct teacher *load()struct teacher *p1,*p2,*head;FILE *fp;int i=1;if(fp=fopen(“save“,“rb“)=NULL)printf(“ 文件不存在
3、!按下任意键返回主菜单.“);getch();return (NULL);elsehead=NULL;p1=(struct teacher *)malloc(LEN);while (fread(p1,LEN-4,1,fp)=1)if(i=1)head=p1;p2=p1;i=2;else p2-next=p1;p2=p2-next;p1=(struct teacher *)malloc(LEN);p2-next=NULL;free(p1);fclose(fp);return(head);/*欢迎菜单函数*/void welcome()printf(“nnn 欢迎使用教师工资管理系统 Beta1.
4、2版权所有 侵权必究ILLEGAL COPY BANNED欢迎使用教师工资管理系统 Beta1.2num=atoi(num);printf(“ 请输入姓名:“);gets(px-name);printf(“ 请输入性别:“);gets(px-sex);printf(“ 请输入单位名称:“);gets(px-workplace);printf(“ 请输入家庭住址:“);gets(px-address);printf(“ 请输入联系电话:“);gets(num);px-phone=atoi(num);printf(“ 请输入基本工资:“);gets(num);px-de_salary=atof(n
5、um);printf(“ 请输入津贴:“);gets(num);px-de_jintie=atof(num);printf(“ 请输入生活补贴:“);gets(num);px-de_shenghuobutie=atof(num);printf(“ 请输入电话费:“);gets(num);px-cost_phone=atof(num);printf(“ 请输入水电费:“);gets(num);px-cost_water_elec=atof(num);printf(“ 请输入房租:“);gets(num);px-cost_rent=atof(num);printf(“ 请输入个人所得税:“);ge
6、ts(num);px-cost_tax=atof(num);printf(“ 请输入卫生费:“);gets(num);px-cost_weisheng=atof(num);printf(“ 请输入公积金:“);gets(num);px-cost_gongjijin=atof(num);px-yingfa_salary=px-de_salary+px-de_jintie+px-de_shenghuobutie;px-cost_all=px-cost_phone+px-cost_water_elec+px-cost_rent+px-cost_tax+px-cost_weisheng+px-cost
7、_gongjijin;px-shifa_salary=px-yingfa_salary-px-cost_all;printf(“ 数据输入完毕,按下任意键继续.“);getch();system(“cls“);printf(“nnn 插入教师信息 3)printf(“ 输入有误!请重新输入:“);scanf(“%d“,getchar();switch(i)case 1:printf(“ 请输入要插入在哪条数据后面:“);scanf(“%d“,getchar();p1=head;while (p1-num!=t)if (p1-next!=NULL) p1=p1-next;else printf(
8、“ 查找不到相关数据!n“);break;if (p1-num=t)printf(“-要插入的信息如下:-n“);printf(“教工号 姓名 性别 单位名称 家庭住址 联系电话n“);printf(“ %-4d %-13s %s %-19s %-19s%-14ldn“,px-num,px-name,px-sex,px-workplace,px-address,px-phone);printf(“电话费 水电费 房租 个人所得税 卫生费 公积金 合计扣款n“);printf(“ %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10
9、.1lfn“,px-cost_phone,px-cost_water_elec,px-cost_rent,px-cost_tax,px-cost_weisheng,px-cost_gongjijin,px-cost_all);printf(“基本工资 津贴 生活补贴 应发工资 实发工资n“);printf(“ %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lfn“,px-de_salary,px-de_jintie,px-de_shenghuobutie,px-yingfa_salary,px-shifa_salary);printf(“-n“);prin
10、tf(“ 确定插入吗?(y 或 n):“);scanf(“%c“,getchar();if (k=y|k=Y)if (p1-num=t)if(p1=head)/*如果插入点为头指针*/p3=p1-next;p1-next=px;px-next=p3;p2=head;else if(p1-next=NULL)/*如果插入点为末尾指针 */p3=p1;p1=head;p2=head;while(p1-next!=p3)p1=p1-next;p1=p1-next;p1-next=px;px-next=NULL;else/*如果插入点为中间指针*/p3=p1;p1=head;p2=head;while
11、(p1-next!=p3)p1=p1-next;p1=p1-next;p3=p1-next;px-next=p3;p1-next=px;if(fp=fopen(“save“,“wb“)=NULL)printf(“ 文件不存在!按下任意键返回主菜单.“);getch();elsedofwrite(p2,LEN-4,1,fp);if(p2-next!=NULL)p2=p2-next;while(p2-next!=NULL);if(p2!=head)fwrite(p2,LEN-4,1,fp);fclose(fp);printf(“ 插入成功!按下任意键继续.“);getch();else print
12、f(“ 插入已被取消!按下任意键继续.“);getch();break;case 2:printf(“ 请输入要插入的教师姓名:“);gets(name);p1=head;while (strcmp(p1-name),name)!=0)if (p1-next!=NULL)p1=p1-next;else printf(“ 查找不到相关数据!n“);break;if (strcmp(p1-name),name)=0)printf(“-要插入的信息如下:-n“);printf(“教工号 姓名 性别 单位名称 家庭住址 联系电话n“);printf(“ %-4d %-13s %s %-19s %-19
13、s%-14ldn“,p1-num,p1-name,p1-sex,p1-workplace,p1-address,p1-phone);printf(“电话费 水电费 房租 个人所得税 卫生费 公积金 合计扣款n“);printf(“ %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf n“,p1-cost_phone,p1-cost_water_elec,p1-cost_rent,p1-cost_tax,p1-cost_weisheng,p1-cost_gongjijin,p1-cost_all);printf(“基本工资
14、 津贴 生活补贴 应发工资 实发工资n“);printf(“ %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lfn“,p1-de_salary,p1-de_jintie,p1-de_shenghuobutie,p1-yingfa_salary,p1-shifa_salary);printf(“-n“);printf(“ 确定插入吗?(y 或 n):“);scanf(“%c“,getchar();if (k=y|k=Y)if (strcmp(p1-name),name)=0)if(p1=head)/*如果插入点为头指针*/p1-next=px;p2=head
15、;else if(p1-next=NULL)/*如果插入点为末尾指针 */p3=p1;p1=head;p2=head;while(p1-next!=p3)p1=p1-next;p1=p1-next;p1-next=px;px-next=NULL;else/*如果插入点为中间指针*/p3=p1;p1=head;p2=head;while(p1-next!=p3)p1=p1-next;p1=p1-next;p1-next=px;p3=p3-next;px-next=p3;if(fp=fopen(“save“,“wb“)=NULL)printf(“ 文件不存在!按下任意键返回主菜单.“);getch
16、();elsedofwrite(p2,LEN-4,1,fp);if(p2-next!=NULL)p2=p2-next;while(p2-next!=NULL);if(p2!=head)fwrite(p2,LEN-4,1,fp);fclose(fp);printf(“ 插入成功!按下任意键继续.“);getch();else printf(“ 插入已被取消!按下任意键继续.“);getch();break;case 3:break;default :break;if (i!=3)printf(“n 继续插入其他教师的信息吗?(y 或 n)“);scanf(“%c“,getchar();while
17、(n=y|n=Y)printf(“ 数据插入成功!按下任意键返回主菜单.“);getch();getchar();/*输入函数*/void insert()FILE *fp;char m,num30;struct teacher *p1;p1=(struct teacher *)malloc(LEN);if(fp=fopen(“save“,“ab“)=NULL)printf(“ 文件不存在!按下任意键返回主菜单.“);getch();elseprintf(“ 请输入教师信息:n“);doprintf(“ -n“);printf(“ 请输入教工号:“);gets(num);p1-num=atoi
18、(num);printf(“ 请输入姓名:“);gets(p1-name);printf(“ 请输入性别:“);gets(p1-sex);printf(“ 请输入单位名称:“);gets(p1-workplace);printf(“ 请输入家庭住址:“);gets(p1-address);printf(“ 请输入联系电话:“);gets(num);p1-phone=atoi(num);printf(“ 请输入基本工资:“);gets(num);p1-de_salary=atof(num);printf(“ 请输入津贴:“);gets(num);p1-de_jintie=atof(num);pr
19、intf(“ 请输入生活补贴:“);gets(num);p1-de_shenghuobutie=atof(num);printf(“ 请输入电话费:“);gets(num);p1-cost_phone=atof(num);printf(“ 请输入水电费:“);gets(num);p1-cost_water_elec=atof(num);printf(“ 请输入房租:“);gets(num);p1-cost_rent=atof(num);printf(“ 请输入个人所得税:“);gets(num);p1-cost_tax=atof(num);printf(“ 请输入卫生费:“);gets(num
20、);p1-cost_weisheng=atof(num);printf(“ 请输入公积金:“);gets(num);p1-cost_gongjijin=atof(num);p1-yingfa_salary=p1-de_salary+p1-de_jintie+p1-de_shenghuobutie;p1-cost_all=p1-cost_phone+p1-cost_water_elec+p1-cost_rent+p1-cost_tax+p1-cost_weisheng+p1-cost_gongjijin;p1-shifa_salary=p1-yingfa_salary-p1-cost_all;f
21、write(p1,LEN-4,1,fp);printf(“ 输入下一个?(y 或 n)“);m=getchar();if(m!=ygetch();getchar();while (m=y|m=Y);fclose(fp);/*修改函数*/void modify()struct teacher *head,*p1,*p2;int i;FILE *fp;char m=n,n=n,num230;p1=head=(struct teacher *)malloc(LEN);if(head=load()!=NULL)doint num=0;char name20;p1=head;system(“cls“);
22、printf(“nnn 修改教师信息 3)printf(“ 输入有误!请重新输入:“);scanf(“%d“,getchar();switch(i)case 1:printf(“ 请输入要修改的教师号:“);scanf(“%d“,getchar();while (p1-num!=num)if (p1-next!=NULL)p1=p1-next;else printf(“ 查找不到相关数据!n“);break;if (p1-num=num)system(“cls“);printf(“nnn 欢迎使用教师工资管理系统 Beta1.2num,p1-name,p1-sex,p1-workplace,p
23、1-address,p1-phone);printf(“电话费 水电费 房租 个人所得税 卫生费 公积金 合计扣款n“);printf(“ %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lfn“,p1-cost_phone,p1-cost_water_elec,p1-cost_rent,p1-cost_tax,p1-cost_weisheng,p1-cost_gongjijin,p1-cost_all);printf(“基本工资 津贴 生活补贴 应发工资 实发工资n“);printf(“ %-13.1lf %-13.1l
24、f %-13.1lf %-13.1lf %-13.1lfn“,p1-de_salary,p1-de_jintie,p1-de_shenghuobutie,p1-yingfa_salary,p1-shifa_salary);printf(“-n“);printf(“ *n“);printf(“ * 1.教师号 2.姓名 *n“);printf(“ * 3.性别 4.单位名称 *n“);printf(“ * 5.家庭住址 6.联系电话 *n“);printf(“ * 7.基本工资 8.津贴 *n“);printf(“ * 9.生活补贴 10.电话费 *n“);printf(“ * 11.水电费 1
25、2.房租 *n“);printf(“ * 13.所得税 14.卫生费 *n“);printf(“ * 15.公积金 *n“);printf(“ *n“);doprintf(“ 请选择要修改的数据:“);scanf(“%d“,getchar();while (i15|inum=atoi(num2);break;case 2:printf(“ 请输入新姓名:“);gets(p1-name);break;case 3:printf(“ 请输入新性别:“);gets(p1-sex);break;case 4:printf(“ 请输入新单位名称:“);gets(p1-workplace);break;c
26、ase 5:printf(“ 请输入新家庭住址:“);gets(p1-address);break;case 6:printf(“ 请输入新联系电话:“);gets(num2);p1-phone=atoi(num2);break;case 7:printf(“ 请输入新基本工资:“);gets(num2);p1-de_salary=atof(num2);break;case 8:printf(“ 请输入新津贴:“);gets(num2);p1-de_jintie=atof(num2);break;case 9:printf(“ 请输入新生活补贴:“);gets(num2);p1-de_shen
27、ghuobutie=atof(num2);break;case 10:printf(“ 请输入新电话费:“);gets(num2);p1-cost_phone=atof(num2);break;case 11:printf(“ 请输入新水电费:“);gets(num2);p1-cost_water_elec=atof(num2);break;case 12:printf(“ 请输入新房租:“);gets(num2);p1-cost_rent=atof(num2);break;case 13:printf(“ 请输入新所得税:“);gets(num2);p1-cost_tax=atof(num2
28、);break;case 14:printf(“ 请输入新卫生费:“);gets(num2);p1-cost_weisheng=atof(num2);break;case 15:printf(“ 请输入新公积金:“);gets(num2);p1-cost_gongjijin=atof(num2);break;default:break;p1-yingfa_salary=p1-de_salary+p1-de_jintie+p1-de_shenghuobutie;p1-cost_all=p1-cost_phone+p1-cost_water_elec+p1-cost_rent+p1-cost_ta
29、x+p1-cost_weisheng+p1-cost_gongjijin;p1-shifa_salary=p1-yingfa_salary-p1-cost_all;printf(“ 继续修改其他数据吗?(y 或 n):“);scanf(“%c“,getchar();while (m=y|m=Y);p2=head;if(fp=fopen(“save“,“wb“)=NULL)printf(“ 文件不存在!按下任意键返回主菜单.“);getch();elsefwrite(head,LEN-4,1,fp);dop2=p2-next;fwrite(p2,LEN-4,1,fp);while(p2-next
30、!=NULL);printf(“-修改后数据如下:-n“);printf(“教工号 姓名 性别 单位名称 家庭住址 联系电话n“);printf(“ %-4d %-13s %s %-19s %-19s%-14ldn“,p1-num,p1-name,p1-sex,p1-workplace,p1-address,p1-phone);printf(“电话费 水电费 房租 个人所得税 卫生费 公积金 合计扣款n“);printf(“ %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf n“,p1-cost_phone,p1-co
31、st_water_elec,p1-cost_rent,p1-cost_tax,p1-cost_weisheng,p1-cost_gongjijin,p1-cost_all);printf(“基本工资 津贴 生活补贴 应发工资 实发工资n“);printf(“ %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lfn“,p1-de_salary,p1-de_jintie,p1-de_shenghuobutie,p1-yingfa_salary,p1-shifa_salary);printf(“-n“);fclose(fp);break;case 2:printf
32、(“ 请输入要修改的教师姓名:“);gets(name);while (strcmp(p1-name,name)!=0)if (p1-next!=NULL)p1=p1-next;else printf(“ 查找不到相关数据!n“);break;if (strcmp(p1-name,name)=0)system(“cls“);printf(“nnn 欢迎使用教师工资管理系统 Beta1.2num,p1-name,p1-sex,p1-workplace,p1-address,p1-phone);printf(“电话费 水电费 房租 个人所得税 卫生费 公积金 合计扣款n“);printf(“ %-
33、10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf n“,p1-cost_phone,p1-cost_water_elec,p1-cost_rent,p1-cost_tax,p1-cost_weisheng,p1-cost_gongjijin,p1-cost_all);printf(“基本工资 津贴 生活补贴 应发工资 实发工资n“);printf(“ %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lfn“,p1-de_salary,p1-de_jintie,p1-de_shenghuo
34、butie,p1-yingfa_salary,p1-shifa_salary);printf(“-n“);printf(“ *n“);printf(“ * 1.教师号 2.姓名 *n“);printf(“ * 3.性别 4.单位名称 *n“);printf(“ * 5.家庭住址 6.联系电话 *n“);printf(“ * 7.基本工资 8.津贴 *n“);printf(“ * 9.生活补贴 10.电话费 *n“);printf(“ * 11.水电费 12.房租 *n“);printf(“ * 13.所得税 14.卫生费 *n“);printf(“ * 15.公积金 *n“);printf(“
35、 *n“);doprintf(“ 请选择要修改的数据:“);scanf(“%d“,getchar();while (i15|inum=atoi(num2);break;case 2:printf(“ 请输入新姓名:“);gets(p1-name);break;case 3:printf(“ 请输入新性别:“);gets(p1-sex);break;case 4:printf(“ 请输入新单位名称:“);gets(p1-workplace);break;case 5:printf(“ 请输入新家庭住址:“);gets(p1-address);break;case 6:printf(“ 请输入新联
36、系电话:“);gets(num2);p1-phone=atoi(num2);break;case 7:printf(“ 请输入新基本工资:“);gets(num2);p1-de_salary=atof(num2);break;case 8:printf(“ 请输入新津贴:“);gets(num2);p1-de_jintie=atof(num2);break;case 9:printf(“ 请输入新生活补贴:“);gets(num2);p1-de_shenghuobutie=atof(num2);break;case 10:printf(“ 请输入新电话费:“);gets(num2);p1-co
37、st_phone=atof(num2);break;case 11:printf(“ 请输入新水电费:“);gets(num2);p1-cost_water_elec=atof(num2);break;case 12:printf(“ 请输入新房租:“);gets(num2);p1-cost_rent=atof(num2);break;case 13:printf(“ 请输入新所得税:“);gets(num2);p1-cost_tax=atof(num2);break;case 14:printf(“ 请输入新卫生费:“);gets(num2);p1-cost_weisheng=atof(nu
38、m2);break;case 15:printf(“ 请输入新公积金:“);gets(num2);p1-cost_gongjijin=atof(num2);break;default:break;p1-yingfa_salary=p1-de_salary+p1-de_jintie+p1-de_shenghuobutie;p1-cost_all=p1-cost_phone+p1-cost_water_elec+p1-cost_rent+p1-cost_tax+p1-cost_weisheng+p1-cost_gongjijin;p1-shifa_salary=p1-yingfa_salary-p
39、1-cost_all;printf(“ 继续修改其他数据吗?(y 或 n):“);scanf(“%c“,getchar();while (m=y|m=Y);p2=head;if(fp=fopen(“save“,“wb“)=NULL)printf(“ 文件不存在!按下任意键返回主菜单.“);getch();elsefwrite(head,LEN-4,1,fp);dop2=p2-next;fwrite(p2,LEN-4,1,fp);while(p2-next!=NULL);printf(“-修改后数据如下:-n“);printf(“教工号 姓名 性别 单位名称 家庭住址 联系电话n“);print
40、f(“ %-4d %-13s %s %-19s %-19s%-14ldn“,p1-num,p1-name,p1-sex,p1-workplace,p1-address,p1-phone);printf(“电话费 水电费 房租 个人所得税 卫生费 公积金 合计扣款n“);printf(“ %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf n“,p1-cost_phone,p1-cost_water_elec,p1-cost_rent,p1-cost_tax,p1-cost_weisheng,p1-cost_gongjijin,p1-cost_all);printf(“基本工资 津贴 生活补贴 应发工资 实发工资n“);printf(“ %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lfn“,p1-de_salary,p1-de_jintie,p1-de_shenghuobutie,p1-yingfa_salary,p1-shifa_salary);printf(“-n“);fclose(fp);break;case 3:break;default :break;if (i!=3)printf(“n 继续