题目要求如下:
设计一个工资纳税管理系统,实现对职工工资及纳税信息进行管理和维护。
设计一个工资纳税管理系统,要求录入职工信息(每位职工的信息包括:职工编号、姓名、基本工资、津贴、补贴、应发工资、个人所得税、实发工资)并存入文件中;能计算税金;同时能对职工工资新信息编辑(插入或删除)、按职工编号进行查询、按个人所得税进行排序等管理功能。 个人所得税的计算方法:工资少于5000元税金为0;5000-8000部分为5%;8000-10000为10%;10000-12000为15%;12000以上为20%。 要求编写多个函数分别实现上述功能,而后在main函数中进行调用。
程序源代码:
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
typedef struct _Person {
char id[20]; //职工编号
char name[10]; //姓名
double basic_salary; //基本工资
double allowance; //津贴
double subsidy; //补贴
double theoretical_salary; //应发工资
double tax; //个人所得税
double actually_salary; //实发工资
struct _Person* next;
}person;
person* head = NULL;
person* last = NULL;
int count = 0;
void add(); //添加新职工
void delete_person(char* number); //删除职工
void search(char* number); //查找
void sort(); //按个人所得税由高到低排序
void save(); //保存到文件
int main()
{
FILE* fp = fopen("worker.dat", "rb");
if (fp)
{
printf("检测到已经有保存的数据,是打开已有数据还是重新建立?\n注意:重新建立会覆盖当前数据!\n");
printf("1.打开\n2.新建\n");
int choice;
scanf("%d", &choice);
if (choice == 2)
{
fclose(fp);
goto write;
}
fread((void*)&count, sizeof(int), 1, fp);
person* back = head;
for (int i = 0; i < count; i++)
{
person* p = (person*)malloc(sizeof(person));
fread((void*)p, sizeof(person)