把下列问题转化为C语言代码:教师工资管理系统 每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资 - 合计扣款。 A、教师信息处理 (1) 输入教师信息 (2) 插入(修改)教师信息: (3) 删除教师信息: (4) 浏览教师信息: B、教师数据处理: (1) 按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。 (2) 教师实发工资、应发工资、合计扣款计算。 提示:计算规则如题目。 (3) 教师数据管理 提示:输入教师号,读出并显示该教师信息,输入新数据,将改后信息保存。 (4) 教师数据查询: 提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。 (5) 教师综合信息输出 提示:输出教师信息到屏幕。
时间: 2023-11-13 10:03:51 浏览: 38
以下是一个简单的教师工资管理系统的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_TEACHERS 100
struct Teacher {
int id;
char name[50];
char gender[10];
char unit[50];
char address[100];
char phone[20];
float baseSalary;
float allowance;
float livingAllowance;
float phoneFee;
float utilityFee;
float rent;
float incomeTax;
float healthFee;
float housingFund;
float totalDeduction;
float actualSalary;
};
struct Teacher teachers[MAX_TEACHERS];
int numTeachers = 0;
// 函数声明
void inputTeacherInfo();
void insertOrUpdateTeacherInfo();
void deleteTeacherInfo();
void browseTeacherInfo();
void inputTeacherData();
void calculateTeacherSalary(struct Teacher* teacher);
void manageTeacherData();
void queryTeacherData();
void outputTeacherInfo();
int main() {
int choice;
do {
printf("******** 教师工资管理系统 ********\n");
printf("1. 教师信息处理\n");
printf("2. 教师数据处理\n");
printf("3. 退出程序\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("1. 输入教师信息\n");
printf("2. 插入(修改)教师信息\n");
printf("3. 删除教师信息\n");
printf("4. 浏览教师信息\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
inputTeacherInfo();
break;
case 2:
insertOrUpdateTeacherInfo();
break;
case 3:
deleteTeacherInfo();
break;
case 4:
browseTeacherInfo();
break;
default:
printf("无效的操作!\n");
break;
}
break;
case 2:
printf("1. 按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据\n");
printf("2. 教师实发工资、应发工资、合计扣款计算\n");
printf("3. 教师数据管理\n");
printf("4. 教师数据查询\n");
printf("5. 教师综合信息输出\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
inputTeacherData();
break;
case 2:
for (int i = 0; i < numTeachers; i++) {
calculateTeacherSalary(&teachers[i]);
}
printf("教师工资计算完成!\n");
break;
case 3:
manageTeacherData();
break;
case 4:
queryTeacherData();
break;
case 5:
outputTeacherInfo();
break;
default:
printf("无效的操作!\n");
break;
}
break;
case 3:
printf("感谢使用教师工资管理系统!\n");
exit(0);
default:
printf("无效的操作!\n");
break;
}
} while (1);
return 0;
}
// 输入教师信息
void inputTeacherInfo() {
if (numTeachers == MAX_TEACHERS) {
printf("教师数量已达上限,无法继续添加!\n");
return;
}
struct Teacher teacher;
printf("请输入教师号:");
scanf("%d", &teacher.id);
printf("请输入姓名:");
scanf("%s", teacher.name);
printf("请输入性别:");
scanf("%s", teacher.gender);
printf("请输入单位名称:");
scanf("%s", teacher.unit);
printf("请输入家庭住址:");
scanf("%s", teacher.address);
printf("请输入联系电话:");
scanf("%s", teacher.phone);
teachers[numTeachers++] = teacher;
printf("教师信息已保存!\n");
}
// 插入(修改)教师信息
void insertOrUpdateTeacherInfo() {
int id;
printf("请输入要插入或修改的教师号:");
scanf("%d", &id);
for (int i = 0; i < numTeachers; i++) {
struct Teacher* teacher = &teachers[i];
if (teacher->id == id) {
printf("教师原信息如下:\n");
printf("姓名:%s\n", teacher->name);
printf("性别:%s\n", teacher->gender);
printf("单位名称:%s\n", teacher->unit);
printf("家庭住址:%s\n", teacher->address);
printf("联系电话:%s\n", teacher->phone);
printf("请输入修改后的信息:\n");
printf("请输入姓名:");
scanf("%s", teacher->name);
printf("请输入性别:");
scanf("%s", teacher->gender);
printf("请输入单位名称:");
scanf("%s", teacher->unit);
printf("请输入家庭住址:");
scanf("%s", teacher->address);
printf("请输入联系电话:");
scanf("%s", teacher->phone);
printf("教师信息已修改!\n");
return;
}
}
printf("未找到教师号为 %d 的教师!\n", id);
}
// 删除教师信息
void deleteTeacherInfo() {
int id;
printf("请输入要删除的教师号:");
scanf("%d", &id);
for (int i = 0; i < numTeachers; i++) {
if (teachers[i].id == id) {
for (int j = i + 1; j < numTeachers; j++) {
teachers[j - 1] = teachers[j];
}
numTeachers--;
printf("教师信息已删除!\n");
return;
}
}
printf("未找到教师号为 %d 的教师!\n", id);
}
// 浏览教师信息
void browseTeacherInfo() {
printf("教师信息如下:\n");
printf("教师号\t姓名\t性别\t单位名称\t家庭住址\t联系电话\n");
for (int i = 0; i < numTeachers; i++) {
struct Teacher* teacher = &teachers[i];
printf("%d\t%s\t%s\t%s\t%s\t%s\n", teacher->id, teacher->name, teacher->gender, teacher->unit, teacher->address, teacher->phone);
}
}
// 按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据
void inputTeacherData() {
int id;
printf("请输入要录入数据的教师号:");
scanf("%d", &id);
for (int i = 0; i < numTeachers; i++) {
struct Teacher* teacher = &teachers[i];
if (teacher->id == id) {
printf("请输入基本工资:");
scanf("%f", &teacher->baseSalary);
printf("请输入津贴:");
scanf("%f", &teacher->allowance);
printf("请输入生活补贴:");
scanf("%f", &teacher->livingAllowance);
printf("请输入电话费:");
scanf("%f", &teacher->phoneFee);
printf("请输入水电费:");
scanf("%f", &teacher->utilityFee);
printf("请输入房租:");
scanf("%f", &teacher->rent);
printf("请输入所得税:");
scanf("%f", &teacher->incomeTax);
printf("请输入卫生费:");
scanf("%f", &teacher->healthFee);
printf("请输入公积金:");
scanf("%f", &teacher->housingFund);
printf("教师数据已录入!\n");
return;
}
}
printf("未找到教师号为 %d 的教师!\n", id);
}
// 教师实发工资、应发工资、合计扣款计算
void calculateTeacherSalary(struct Teacher* teacher) {
teacher->actualSalary = teacher->baseSalary + teacher->allowance + teacher->livingAllowance - teacher->phoneFee - teacher->utilityFee - teacher->rent - teacher->incomeTax - teacher->healthFee - teacher->housingFund;
teacher->totalDeduction = teacher->phoneFee + teacher->utilityFee + teacher->rent + teacher->incomeTax + teacher->healthFee + teacher->housingFund;
teacher->baseSalary = teacher->actualSalary + teacher->totalDeduction;
}
// 教师数据管理
void manageTeacherData() {
int id;
printf("请输入要管理数据的教师号:");
scanf("%d", &id);
for (int i = 0; i < numTeachers; i++) {
struct Teacher* teacher = &teachers[i];
if (teacher->id == id) {
printf("教师原数据如下:\n");
printf("基本工资:%f\n", teacher->baseSalary);
printf("津贴:%f\n", teacher->allowance);
printf("生活补贴:%f\n", teacher->livingAllowance);
printf("电话费:%f\n", teacher->phoneFee);
printf("水电费:%f\n", teacher->utilityFee);
printf("房租:%f\n", teacher->rent);
printf("所得税:%f\n", teacher->incomeTax);
printf("卫生费:%f\n", teacher->healthFee);
printf("公积金:%f\n", teacher->housingFund);
printf("请输入修改后的数据:\n");
printf("请输入基本工资:");
scanf("%f", &teacher->baseSalary);
printf("请输入津贴:");
scanf("%f", &teacher->allowance);
printf("请输入生活补贴:");
scanf("%f", &teacher->livingAllowance);
printf("请输入电话费:");
scanf("%f", &teacher->phoneFee);
printf("请输入水电费:");
scanf("%f", &teacher->utilityFee);
printf("请输入房租:");
scanf("%f", &teacher->rent);
printf("请输入所得税:");
scanf("%f", &teacher->incomeTax);
printf("请输入卫生费:");
scanf("%f", &teacher->healthFee);
printf("请输入公积金:");
scanf("%f", &teacher->housingFund);
calculateTeacherSalary(teacher);
printf("教师数据已修改!\n");
return;
}
}
printf("未找到教师号为 %d 的教师!\n", id);
}
// 教师数据查询
void queryTeacherData() {
int id;
printf("请输入要查询数据的教师号:");
scanf("%d", &id);
for (int i = 0; i < numTeachers; i++) {
struct Teacher* teacher = &teachers[i];
if (teacher->id == id) {
printf("教师数据如下:\n");
printf("基本工资:%f\n", teacher->baseSalary);
printf("津贴:%f\n", teacher->allowance);
printf("生活补贴:%f\n", teacher->livingAllowance);
printf("电话费:%f\n", teacher->phoneFee);
printf("水电费:%f\n", teacher->utilityFee);
printf("房租:%f\n", teacher->rent);
printf("所得税:%f\n", teacher->incomeTax);
printf("卫生费:%f\n", teacher->healthFee);
printf("公积金:%f\n", teacher->housingFund);
printf("应发工资:%f\n", teacher->baseSalary + teacher->allowance + teacher->livingAllowance);
printf("实发工资:%f\n", teacher->actualSalary);
printf("总扣款:%f\n", teacher->totalDeduction);
return;
}
}
printf("未找到教师号为 %d 的教师!\n", id);
}
// 教师