最新教师工资管理系统C实现资料.docx

上传人:b****6 文档编号:3832324 上传时间:2022-11-25 格式:DOCX 页数:23 大小:81.86KB
下载 相关 举报
最新教师工资管理系统C实现资料.docx_第1页
第1页 / 共23页
最新教师工资管理系统C实现资料.docx_第2页
第2页 / 共23页
最新教师工资管理系统C实现资料.docx_第3页
第3页 / 共23页
最新教师工资管理系统C实现资料.docx_第4页
第4页 / 共23页
最新教师工资管理系统C实现资料.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

最新教师工资管理系统C实现资料.docx

《最新教师工资管理系统C实现资料.docx》由会员分享,可在线阅读,更多相关《最新教师工资管理系统C实现资料.docx(23页珍藏版)》请在冰豆网上搜索。

最新教师工资管理系统C实现资料.docx

最新教师工资管理系统C实现资料

教师工资管理系统

一.选题背景

二.需求分析

一、设计选题与目标

1.选题要求:

教师工资管理系统

每个教师的信息为:

教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。

注:

应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资-合计扣款。

A、教师信息处理

(1)输入教师信息

(2)插入(修改)教师信息:

(3)删除教师信息:

(4)浏览教师信息:

  提示:

具体功能及操作参考题1。

B、教师数据处理:

(1)按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。

(2)教师实发工资、应发工资、合计扣款计算。

  提示:

计算规则如题目。

(3)教师数据管理

  提示:

输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件

(4)教师数据查询:

  提示:

输入教师号或其他信息,即读出所有数据信息,并显示出来。

(5)教师综合信息输出

  提示:

输出教师信息到屏幕。

2.目标

教师数据处理:

(1)按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。

(2)教师实发工资、应发工资、合计扣款计算。

  计算规则如题目。

(3)教师数据管理

  输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件

(4)教师数据查询:

 输入教师号或其他信息,即读出所有数据信息,并显示出来。

(5)教师综合信息输出

输出教师信息到屏幕

三.总体设计

利用六个模块分别实现教师信息的输入,修改,删除,查询,保存以及信息文件的读入功能。

并使用不同的函数实现不同的功能。

使用链表存储及处理数据。

程序流程图如下:

四.详细设计

1.功能模块

共分为六个模块:

(1)输入教师信息模块

在主菜单中运用结构体teacher,输入教师信息,首先建立链表,将用户信息储存到链表中,输入完成后提示用户是否继续输入,如果用户输入“Y”,则再次调用,实现继续输入教师信息的操作。

如果用户输入”NO“,则返回主菜单界面。

(2)修改教师信息模块

在主函数中调用voidchange_id(),修改记录操作需要对数组中目标元素的数据域中的值进行操作。

首先请用户输入要修改的教师编号,然后若找到该记录就提示用户输入各个信息。

(3)删除教师信息模块

在主函数中调用voiddelete_id(),以删除教师信息,首先按学号查询教师信息,如果没有找到教师信息,给出提示。

如果找到教师信息,将教师信息显示出来,提示用户删除。

(4)查询教师信息

查询分三种,调用voidshow_all()显示所有教师信息;调用voidsearch_id()按编号查询教师信息;调用voidsearch_name()按姓名查询教师信息。

(5)读入教师信息文件模块

调用voidreadfromfile()函数从文件导入教师信息

(6)保存并退出模块

调用voidwritetofile()写入文件。

2.函数的设计与调用

(1)主函数的设计

编写主函数的主要任务就是确定调用函数以及控制屏幕显示。

(2)其他函数

1)原型voidshow_all;

功能展出所有录入文件

参数无

返回值无

工作方式调用charname[10];floatsalary;floatallowance;floatlife;floattel;floatutilities;floatrent;floatdue;floathealth;floatfund;floattotal;floatshould;floatactual;

2)原型voidtea_new

功能创建新的信息录入

参数无

返回值无

工作方式创建file

3)原型voidsearchmenu;

功能查找菜单

参数无

返回值无

工作方式调用voidsearch_id;voidsearch_name;

4)原型voidsearch_id;

功能查找信息按编号查找

参数无

返回值整个信息

工作方式调用number

5)原型voidsearch_name;

功能查找信息按姓名查找

参数无

返回值整个信息

工作方式调用charname

6)原型voiddelete_id

功能删除数据按编号删除

参数无

返回值无

工作方式调用id

7)原型voidchange_id;

功能改变数据按编号改

参数无

返回值整个录入信息

工作方式调用id

 

3.数据结构的设计

定义结构体teacher,用于存放教师的信息。

structteacher

{

intnumber;教师编号

charname[10];教师姓名

floatsalary;教师基本工资

floatallowance;教师津贴

floatlife;教师生活补贴

floattel;教师电话费

floatutilities;教师水电费

floatrent;教师房租

floatdue;教师所得税

floathealth;教室卫生费

floatfund;教师公积金

floattotal;教师合计扣款

floatshould;教师应发工资

floatactual;教师实发工资

}tea[500];

4.算法实现

链表是算法的关键。

在添加新的数据时,可以表头插入也可以表尾插入,这两种插入方法决定了其他成员函数数据的处理。

本系统中采取的是表尾插入的方法。

在删除某信息时需要判断数据是在表头,表中还是表尾,如果删除的是在表中,则需要将删除的前后链表连接起来。

统大量运用了链表的5种基本操作:

建立链表、链表的插入、删除、输入和查找。

5.程序清单

#include

#include

#include

#include

/*教师工资管理系统结构体定义*/

structteacher

{

intnumber;

charname[10];

floatsalary;

floatallowance;

floatlife;

floattel;

floatutilities;

floatrent;

floatdue;

floathealth;

floatfund;

floattotal;

floatshould;

floatactual;

}tea[500];

intnum=0;

FILE*fp;

voidmainmenu();

voidreadfromfile();

voidwritetofile();

voidshow_all();

voidtea_new();

voidsearchmenu();

voidsearch_id();

voidsearch_name();

voiddelete_id();

voidchange_id();

voidmain()

{

readfromfile();

while

(1)

{

mainmenu();

}

}

//主菜单

voidmainmenu()

{

charchoic;

system("cls");

printf("\t----------------欢迎使用\(^o^)/~-------------------\n");

printf("\t****************教师工资管理系统******************\n\n");

printf("\t---------------[1]输入教师信息--------------------\n");

printf("\t---------------[2]修改教师信息--------------------\n");

printf("\t---------------[3]删除教师信息--------------------\n");

printf("\t---------------[4]查询教师信息--------------------\n");

printf("\t---------------[5]保存并退出----------------------\n");

printf("\t**************************************************\n");

printf("\t请输入所需的服务项目序号:

\n");

choic=getch();

switch(choic)

{

case'1':

tea_new();break;

case'2':

change_id();break;

case'3':

delete_id();break;

case'4':

searchmenu();break;

case'5':

writetofile();break;

default:

mainmenu();

}

}

//从文件导入

voidreadfromfile()

{

if((fp=fopen("teacher.bin","rb"))==NULL)

{

printf("\n\t教师工资信息文件不存在哟(*/ω╲*)");

if((fp=fopen("teacher.bin","wb"))==NULL)

{

printf("\n\t建立失败");

exit(0);

}

else

{

printf("\n\t教师工资信息文件已建立(~o ̄3 ̄)~");

printf("\n\t按回车键进入主菜单");

getch();

return;

}

exit(0);

}

fseek(fp,0,2);

if(ftell(fp)>0)

{

rewind(fp);

for(num=0;!

feof(fp)&&fread(&tea[num],sizeof(structteacher),1,fp);num++);

printf("\n\t教师工资信息文件导入成功(* ̄3 ̄)╭");

printf("\n\t文件中无任何记录(=@__@=)");

printf("\n\t按回车键进入主菜单");

getch();

return;

}

}

//写入文件

voidwritetofile()

{

inti;

if((fp=fopen("teacher.bin","wb"))==NULL)

{

printf("\n\t打开文件失败(*/ω╲*)");

}

for(i=0;i

{

if(fwrite(&tea[i],sizeof(structteacher),1,fp)!

=1)

{

printf("\n\t文件写入错误!

(>﹏<)\n");

}

}

fclose(fp);

printf("\n\t教师工资信息文件已保存");

printf("\n\t按任意键退出程序(* ̄ω ̄)\n\t");

exit(0);

}

//添加记录

voidtea_new()

{

printf("请输入教师号:

");

scanf("%d",&tea[num].number);

printf("请输入教师姓名:

");

scanf("%s",tea[num].name);

printf("请输入教师基本工资:

");

scanf("%f",&tea[num].salary);

printf("请输入教师的津贴:

");

scanf("%f",&tea[num].allowance);

printf("请输入教师的生活补贴:

");

scanf("%f",&tea[num].life);

printf("请输入教师的电话费:

");

scanf("%f",&tea[num].tel);

printf("请输入教师的水电费:

");

scanf("%f",&tea[num].utilities);

printf("请输入教师的房租:

");

scanf("%f",&tea[num].rent);

printf("请输入教师的所得税:

");

scanf("%f",&tea[num].due);

printf("请输入教师的卫生费:

");

scanf("%f",&tea[num].health);

printf("请输入教师的公积金:

");

scanf("%f",&tea[num].fund);

tea[num].should=tea[num].salary+tea[num].allowance+tea[num].life;

tea[num].total=tea[num].tel+tea[num].utilities+tea[num].rent+tea[num].due+tea[num].health+tea[num].fund;

tea[num].actual=tea[num].should-tea[num].total;

num++;

printf("是否继续添加?

(Y/N)");

if(getch()=='y')

tea_new();

return;

}

//查询菜单

voidsearchmenu()

{

charchoic;

system("cls");

printf("\n\t------------查询-------------------");

printf("\n\t--------[1]显示所有----------------");

printf("\n\t--------[2]按编号查询--------------");

printf("\n\t--------[3]按姓名查询--------------");

printf("\n\t--------[4]返回主菜单--------------");

printf("\n\t请选择:

\n");

choic=getch();

switch(choic)

{

case'1':

show_all();break;

case'2':

search_id();break;

case'3':

search_name();break;

case'4':

mainmenu();break;

}

}

//显示所有

voidshow_all()

{

inti;

system("cls");

if(num!

=0)

{

for(i=0;i

{

printf("\n\t编号:

%d",tea[i].number);

printf("\n\t姓名:

%s",tea[i].name);

printf("\n\t基本工资:

%.5f",tea[i].salary);

printf("\n\t津贴:

%.5f",tea[i].allowance);

printf("\n\t生活补贴:

%.5f",tea[i].life);

printf("\n\t电话费:

%.5f",tea[i].tel);

printf("\n\t水电费:

%.5f",tea[i].utilities);

printf("\n\t房租:

%.5f",tea[i].rent);

printf("\n\t所得税:

%.5f",tea[i].due);

printf("\n\t卫生费:

%.5f",tea[i].health);

printf("\n\t公积金:

%.5f",tea[i].fund);

printf("\n\t应发工资:

%.5f",tea[i].should);

printf("\n\t合计扣款:

%.5f",tea[i].total);

printf("\n\t实发工资:

%.5f",tea[i].actual);

if(i+1

{

printf("\n\t_____________________");

system("pause");

}

}

printf("\n\t*************************************");

}

else

printf("\n\t文件中无记录┭┮﹏┭┮");

printf("\n\t按回车键回到主菜单");

getch();

return;

}

//按编号查询

voidsearch_id()

{

intmark=0;

inti,a=0;

intid;

printf("\n\t请输入编号:

");

scanf("%d",&id);

for(i=0;i

{

if(id==tea[i].number)

{

printf("\n\t******以下是你要查找的教师工资信息******\n");

printf("\n\t编号:

%d",tea[i].number);

printf("\n\t姓名:

%s",tea[i].name);

printf("\n\t基本工资:

%.5f",tea[i].salary);

printf("\n\t津贴:

%.5f",tea[i].allowance);

printf("\n\t生活补贴:

%.5f",tea[i].life);

printf("\n\t电话费:

%.5f",tea[i].tel);

printf("\n\t水电费:

%.5f",tea[i].utilities);

printf("\n\t房租:

%.5f",tea[i].rent);

printf("\n\t所得税:

%.5f",tea[i].due);

printf("\n\t卫生费:

%.5f",tea[i].health);

printf("\n\t公积金:

%.5f",tea[i].fund);

printf("\n\t应发工资:

%.5f",tea[i].should);

printf("\n\t合计扣款:

%.5f",tea[i].total);

printf("\n\t实发工资:

%.5f",tea[i].actual);

printf("\n\t*************************************");

printf("\n\t按回车键回到主菜单");

mark++;

getch();

return;

}

}

if(mark==0)

{

printf("\n\t没有该编号的信息");

printf("\n\t按回车键返回主菜单");

getch();

return;

}

}

//按姓名查询

voidsearch_name()

{

intmark=0;

inti,a=0;

charname[10];

printf("请输入姓名:

");

scanf("%s",name);

for(i=a;i

{

if(strcmp(tea[i].name,name)==0)

{

printf("\n\t******以下是你要查找的教师工资信息******\n");

printf("\n\t编号:

%d",tea[i].number);

printf("\n\t姓名:

%s",tea[i].name);

printf("\n\t基本工资:

%.5f",tea[i].salary);

printf("\n\t津贴:

%.5f",tea[i].allowance);

printf("\n\t生活补贴:

%.5f",tea[i].life);

printf("\n\t电话费:

%.5f",tea[i].tel);

printf("\n\t水电费:

%.5f",tea[i].utilities);

printf("\n\t房租:

%.5f",tea[i].rent);

printf("\n\t所得税:

%.5f",tea[i].due);

printf("\n\t卫生费:

%.5f",tea[i].health);

printf("\n\t公积金:

%.5f",tea[i].fund);

printf("\n\t应发工资:

%.5f",tea[i].should);

printf("\n\t合计扣款:

%.5f",tea[i].total);

printf("\n\t实发工资:

%.5f",tea[i].actual);

printf("\n\t*************************************");

mark++;

if((i+1)

{

printf("\t\n是否继续查找相同名字的教师信息:

(y/n)");

if(getch()=='y')

{

a=i;continue;

}

else

return;

}

else

{

printf("\n\t按回车键返回主菜单");

getch();

return;

}

}

}

if(mark!

=0)

{

printf("\n\t没有相同姓名的教师信息记录");

printf("\n\t按回车键回到主菜单");

getch();

return;

}

else

{

printf("\n\t没有相同姓名的教师信息记录");

printf("\n\t按回车键回到主菜单");

getch();

return;

}

}

//删除菜单

voiddelete_id()

{

inti,j;

intdeletemark=0;

intid;

printf("\n\t情输入要删除的编号:

");

scanf("%d",&id);

if(num==0)

{

printf("\n\t对不起,文件中无任何教师工资信息记录");

printf("\n\t按回车键回到主菜单");

getch();

return;

}

for(i=0;i

{

if(id==tea[i].num

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1