c语言课程设计 教师工资管理系统

#include
#include
#include
#define LEN sizeof(struct teacher)
struct teacher *creat();
struct teacher
{
int num;
char name[10];
char sex[8];
char unit[10];
char address[10];
long telnum;
float salary_1;
float allowance;
float life_allow;
float salary_2;
float tel_fee;
float tax;
float health_fee;
float water_fee;
float rent;
float grant;
float total_fee;
float actual_salary;
struct teacher *next;
};
int n;
struct teacher *head;
FILE *fp;
struct teacher *creat(void)
{
struct teacher *p1,*p2;
n=0;
p1=p2=(struct teacher *)malloc(LEN);
printf("教师号:");
scanf("%d",&p1->num);fflush(stdin);
printf("教师姓名:");
gets(p1->name);
printf("教师性别:");
gets(p1->sex);
printf("单位名称:");
gets(p1->unit);
printf("家庭地址:");
gets(p1->address);
printf("电话号码:");
scanf("%ld",&p1->telnum);fflush(stdin);
printf("基本工资:");
scanf("%f",&p1->salary_1);fflush(stdin);
printf("津贴:"); scanf("%f",&p1->allowance);fflush(stdin);
printf("生活补贴:");
scanf("%f",&p1->life_allow);fflush(stdin);
printf("电话费:"); scanf("%f",&p1->tel_fee);fflush(stdin);
printf("个人所得税:");
scanf("%f",&p1->tax);fflush(stdin);
printf("房租:");
scanf("%f",&p1->rent);fflush(stdin);
printf("公积金:");
scanf("%f",&p1->grant);fflush(stdin);
printf("水电费:");
scanf("%f",&p1->water_fee);fflush(stdin);
printf("卫生费:");
scanf("%f",&p1->health_fee);fflush(stdin);
p1->salary_2=p1->salary_1+p1->allowance+p1->life_allow;
p1->total_fee=p1->tel_fee+p1->water_fee+p1->rent+p1->tax+p1->health_fee+p1->grant;
p1->actual_salary=p1->salary_2-p1->total_fee;
head=NULL;
while(p1->num!=0)
{
n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct teacher*)malloc(LEN);
printf("教师号:");
scanf("%d",&p1->num);fflush(stdin);
printf("教师姓名:");
gets(p1->name);
printf("教师性别:");
gets(p1->sex);
printf("单位名称:");
gets(p1->unit);
printf("家庭地址:");
gets(p1->address);
printf("电话号码:");
scanf("%ld",&p1->telnum);fflush(stdin);
printf("基本工资:");
scanf("%f",&p1->salary_1);fflush(stdin);
printf("津贴:");
scanf("%f",&p1->allowance);fflush(stdin);
printf("生活补贴:");
scanf("%f",&p1->life_allow);fflush(stdin);
printf("电话费:");
scanf("%f",&p1->tel_fee);fflush(stdin);
printf("个人所得税:");
scanf("%f",&p1->tax);fflush(stdin);
printf("房租:");
scanf("%f",&p1->rent);fflush(stdin);
printf("公积金:");
scanf("%f",&p1->grant);fflush(stdin);
printf("水电费:");
scanf("%f",&p1->water_fee);fflush(stdin);
printf("卫生费:");
scanf("%f",&p1->health_fee);fflush(stdin);
p1->salary_2=p1->salary_1+p1->allowance+p1->life_allow;
p1->total_fee=p1->tel_fee+p1->water_fee+p1->rent+p1->tax+p1->health_fee+p1->grant;
p1->actual_salary=p1->salary_2-p1->total_fee;
}
p2->next=NULL;
return(head);
}
void

print(struct teacher *head)
{
struct teacher *p;
printf("\nNow,These %d records are:\n",n);
p=head;
if(head!=NULL)
do
{
printf("教师号:%5d\t\t",p->num);
printf("教师姓名:%-10s\n",p->name);
printf("教师性别:%-6s\t\t",p->sex);
printf("单位名称:%-10s\n",p->unit);
printf("家庭地址:%-10s\t",p->address);
printf("电话号码:%8ld\n",p->telnum);
printf("基本工资:%5.0f\t\t",p->salary_1);
printf("津贴:%5.0f\n",p->allowance);
printf("生活补贴:%5.0f\t",p->life_allow);
printf("\t 电话费:%5.0f\n",p->tel_fee);
printf("个人所得税:%5.0f\t",p->tax);
printf("卫生费:%5.0f\n",p->health_fee);
printf("水电费:%5.0f\t\t",p->water_fee);
printf("房租:%5.0f\n",p->rent);
printf("公积金:%5.0f\t\t",p->grant);
printf("应发工资:%5.0f\n",p->salary_2);
printf("合计扣款:%5.0f\t\t",p->total_fee);
printf("实发工资:%5.0f\n\n\n",p->actual_salary);
p=p->next;
}while(p!=NULL);
}
struct teacher *insert(struct teacher*head,struct teacher *teach)
{
struct teacher *p0,*p1,*p2;
p1=head; p0=teach;
if(head==NULL)
{
head=p0;p0->next=NULL;
}
else
{
while((p0->num>p1->num)&&(p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->numnum)
{
if(head==p1)
head=p0;
else
p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
}
n=n+1;
return(head);
}
struct teacher *del(struct teacher *head,int number)
{
struct teacher *p1,*p2;
if(head==NULL)
{
printf("\nlist null\n");
return(head);
}
p1=head;
while(number!=p1->num&&p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(number==p1->num)
{
if(p1==head)
head=p1->next;
else
p2->next=p1->next;
printf("删除:%d\n",number);
n=n-1;
}
else
printf("%ld is not found\n",number);
return(head);
}
void save()
{
int i;
struct teacher *p1;
p1=head;
if((fp=fopen("teacher_list","wb"))==NULL)
{
printf("cannot open file\n");
return;
}
for(i=0;i{
if(fwrite(p1,sizeof(struct teacher),1,fp)!=1)
printf("file write error\n");
p1=p1->next;
}
fclose(fp);
}
void load()
{
struct teacher *p1,*p2;
if((fp=fopen("teacher_list","rb"))==NULL)
{
printf("cannot open file\n");
return;
}
p1=p2=(struct teacher *)malloc(LEN);
head=p1;
do
{
if(fread(p1,sizeof(struct teacher),1,fp)!=1)
{
printf("file error\n");
goto end;
}
if(p1->next!=NULL)
{
p2=p1;
p1=(struct teacher *)malloc(LEN);
p2->next=p1;
}
else
break;
}while(1);
end:
fclose(fp);
}
void query(struct teacher *p)
{
int no;
p=head;
printf("please input num:\n");
scanf("%d",&no);
while(p->num!=no)
p=p->next;
printf("基本工资:%5.0f\t\t",p->salary_1);
printf("津贴:%5.0f\n",p->allowance);
printf("

生活补贴:%5.0f\t",p->life_allow);
printf("\t 电话费:%5.0f\n",p->tel_fee);
printf("个人所得税:%5.0f\t",p->tax);
printf("卫生费:%5.0f\n",p->health_fee);
printf("水电费:%5.0f\t\t",p->water_fee);
printf("房租:%5.0f\n",p->rent);
printf("公积金:%5.0f\t\t",p->grant);
printf("应发工资:%5.0f\n",p->salary_2);
printf("合计扣款:%5.0f\t\t",p->total_fee);
printf("实发工资:%5.0f\n\n\n",p->actual_salary);
}
void edit(struct teacher *p)
{
int a;
printf("please input num:\n");
scanf("%d",&a);
printf("%d\n\n",a);
for(;;)
{
if(p->num==a)
{
printf("教师号:%5d\t\t",p->num);
printf("教师姓名:%-10s\n",p->name);
printf("教师性别:%-6s\t\t",p->sex);
printf("单位名称:%-10s\n",p->unit);
printf("家庭地址:%-10s\t",p->address);
printf("电话号码:%8ld\n",p->telnum);
printf("基本工资:%5.0f\t\t",p->salary_1);
printf("津贴:%5.0f\n",p->allowance);
printf("生活补贴:%5.0f\t",p->life_allow);
printf("\t 电话费:%5.0f\n",p->tel_fee);
printf("个人所得税:%5.0f\t",p->tax);
printf("卫生费:%5.0f\n",p->health_fee);
printf("水电费:%5.0f\t\t",p->water_fee);
printf("房租:%5.0f\n",p->rent);
printf("公积金:%5.0f\t\t",p->grant);
printf("应发工资:%5.0f\n",p->salary_2);
printf("合计扣款:%5.0f\t\t",p->total_fee);
printf("实发工资:%5.0f\n\n\n",p->actual_salary);
printf("请输入新数据:\n");
printf("教师号:");
scanf("%d",&p->num);fflush(stdin);
printf("教师姓名:");
gets(p->name);
printf("教师性别:");
gets(p->sex);
printf("工作单位:");
gets(p->unit);
printf("家庭地址:");
gets(p->address);
printf("电话号码:");
scanf("%ld",&p->telnum);fflush(stdin);
printf("基本工资:");
scanf("%f",&p->salary_1);fflush(stdin);
printf("津贴:");
scanf("%f",&p->allowance);fflush(stdin);
printf("生活补贴:");
scanf("%f",&p->life_allow);fflush(stdin);
printf("电话费:");
scanf("%f",&p->tel_fee);fflush(stdin);
printf("个人所得税:");
scanf("%f",&p->tax);fflush(stdin);
printf("房租:");
scanf("%f",&p->rent);fflush(stdin);
printf("公积金:");
scanf("%f",&p->grant);fflush(stdin);
printf("水电费:");
scanf("%f",&p->water_fee);fflush(stdin);
printf("卫生费:");
scanf("%f",&p->health_fee);fflush(stdin);
p->salary_2=p->salary_1+p->allowance+p->life_allow;
p->total_fee=p->tel_fee+p->water_fee+p->rent+p->tax+p->health_fee+p->grant;
p->actual_salary=p->salary_2-p->total_fee;
break;
}
p=p->next;
}
}
void welcome()
{
printf("\t\t\t+---------------------------+\n");
printf("\t\t\t| |\n");
printf("\t\t\t| 欢迎使用教师工资管理系统 |\n");
printf("\t\t\t| |\n");
printf("\t\t\t+---------------------------+\n");
printf("\n\n");
}
char mai

nmenu()
{
char choice;
printf("\n 温馨提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n");
printf("\n\n");
printf("\t\t\t--------------------------------\n");
printf("\t\t\t| 教师工资管理系统 |\n");
printf("\t\t\t--------------------------------\n");
printf("\t\t\t| [1]----输入教师信息 |\n");
printf("\t\t\t| [2]----插入教师信息 |\n");
printf("\t\t\t| [3]----删除教师信息 |\n");
printf("\t\t\t| [4]----浏览教师信息 |\n");
printf("\t\t\t| [5]----录入教师信息 |\n");
printf("\t\t\t| [6]----查询教师信息 |\n");
printf("\t\t\t| [7]----修改教师信息 |\n");
printf("\t\t\t| [8]----加载教师信息 |\n");
printf("\t\t\t| [0]----退出系统 |\n");
printf("\t\t\t|*·*·*·*·*·*·*·*·*·*·|\n");
printf("\t\t\t--------------------------------\n");
printf("请输入您的选择:");
do
{
fflush(stdin);
scanf("%c",&choice);fflush(stdin);
}while(choice<'0'||choice>'8');
return(choice);
}
void main()
{
struct teacher *teach;
int del_num;
char choice;
while(1)
{
welcome();
choice=mainmenu();
switch(choice)
{
case '0':system("cls");
exit(0);
case '1':printf("input records:\n");
head=creat();
break;
case '2':printf("input the inserted record:\n");
teach=(struct teacher *)malloc(LEN);
printf("教师号:");
scanf("%d",&teach->num);fflush(stdin);
printf("教师姓名:");
gets(teach->name);
printf("教师性别:");
gets(teach->sex);
printf("单位名称:");
gets(teach->unit);
printf("家庭地址:");
gets(teach->address);
printf("电话号码:");
scanf("%ld",&teach->telnum);fflush(stdin);
printf("基本工资:");
scanf("%f",&teach->salary_1);fflush(stdin);
printf("津贴:");
scanf("%f",&teach->allowance);fflush(stdin);
printf("生活补贴:");
scanf("%f",&teach->life_allow);fflush(stdin);
printf("电话费:");
scanf("%f",&teach->tel_fee);fflush(stdin);
printf("个人所得税:");
scanf("%f",&teach->tax);fflush(stdin);
printf("房租:");
scanf("%f",&teach->rent);fflush(stdin);
printf("公积金:");
scanf("%f",&teach->grant);fflush(stdin);
printf("水电费:");
scanf("%f",&teach->water_fee);fflush(stdin);
printf("卫生费:");
scanf("%f",&teach->health_fee);fflush(stdin);
teach->salary_2=teach->salary_1+teach->allowance+teach->life_allow;
teach->total_fee=teach->tel_fee+teach->water_fee+teach->rent+teach->tax+teach->health_fee+teach->grant;
teach->actual_salary=teach->salary_2-teach->total_fee;
head=insert(head,teach);
print(head);
break;
case '3':printf("input the delete number:");
scanf("%d",&del_num);
getchar();
head=

del(head,del_num);
print(head);
break;
case '4':print(head);break;
case '5':save();break;
case '6':query(head);break;
case '7':edit(head);break;
case '8':load();break;
}
}
}

相关文档
最新文档