教师工资管理制度系统C实现.docx
- 文档编号:23467007
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:30
- 大小:95.51KB
教师工资管理制度系统C实现.docx
《教师工资管理制度系统C实现.docx》由会员分享,可在线阅读,更多相关《教师工资管理制度系统C实现.docx(30页珍藏版)》请在冰豆网上搜索。
教师工资管理制度系统C实现
教师工资管理制度系统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情输入要删除的编号: ");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教师工资 管理制度 系统 实现