C语言课设职工工资管理系统.docx

上传人:b****6 文档编号:6258181 上传时间:2023-01-04 格式:DOCX 页数:50 大小:339.08KB
下载 相关 举报
C语言课设职工工资管理系统.docx_第1页
第1页 / 共50页
C语言课设职工工资管理系统.docx_第2页
第2页 / 共50页
C语言课设职工工资管理系统.docx_第3页
第3页 / 共50页
C语言课设职工工资管理系统.docx_第4页
第4页 / 共50页
C语言课设职工工资管理系统.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

C语言课设职工工资管理系统.docx

《C语言课设职工工资管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课设职工工资管理系统.docx(50页珍藏版)》请在冰豆网上搜索。

C语言课设职工工资管理系统.docx

C语言课设职工工资管理系统

一引言

C语言是CombinedLanguage(组合语言)的中英混合简称。

是一种计算机程序设计语言。

它既具有高级语言的特点,又具有汇编语言的特点。

它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

设计一个程序的过程就是解决一个实际问题的过程,从解决实际问题的角度,我们可以这样来看:

首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;在次我们必须捋清思路,逐一的解决问题的各个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数、结构体和文件等,然后确定处理过程。

本课题中主要应用了C语言中的数组、结构体、文件等关键技术。

在C语言中,数组属于构造数据类型。

一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型;结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构,在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型,结构体只能描述一个对象的状态,不能描述一个对象的行为。

文件是一种组织外部存储介质上的数据的数据类型。

它具有两个特征:

一是对一个数据集合可以用一个名字命名;二是保存在外部存储介质上,可以长期保存。

通过此次课设可以锻炼学生理论联系实际能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解,并达到如下目的:

1.熟悉C语言程序的编辑、编译链接和运行的过程。

2.熟练运用if语句和switch语句以及嵌套应用。

3.学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程。

4.掌握文件的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。

5.掌握结构体类型变量、数组的定义和使用。

6.掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串。

 

二系统总体设计

2.1程序功能

(1)添加职工信息

(2)查看职工信息(3)查找职工信息(4)删除职工信息(5)统计职工信息(6)修改职工信息(7)保存数据(8)作者信息(0)退出

2.2程序功能图

职工工资管理系统

作者信息

保存数据

修改职工信息

查看职工信息

查找职工信息

删除职工信息

退出

统计职工信息

添加职工信息

图1程序功能图

2.3主函数流程图

图2程序流程图

主函数源代码:

voidmain()

{

intchoose=0;

while(true)

{

show();

printf("\t\t====>请选择:

");

scanf("%d",&choose);

system("cls");

switch(choose)

{

case0:

exit(0);//退出

break;

case1:

add();

back();//添加职工信息

break;

case2:

see();

back();//查看职工信息

break;

case3:

search();

back();//查找职工信息

break;

case4:

del();

back();//删除职工信息

break;

case5:

statistics();

back();//统计职工工资

break;

case6:

modify();

back();//修改职工信息

break;

case7:

reserve();

back();//保存数据

break;

case8:

author();

back();//作者信息

break;

default:

break;

}

fflush(stdin);

getchar();

system("cls");

}

}

三程序详细设计

3.1添加职工信息函数的实现

添加记录前如图3所示。

图3添加记录前效果图

输入一条记录信息:

选择1,回车。

输入记录如图4所示。

图4输入记录效果图

添加后如图5所示。

图5添加记录后效果图

添加函数代码流程图,如图6所示。

图6添加函数流程图

添加源代码:

//添加职工信息

voidadd()

{

intnumberTemp=0;

inti=0;

structworkertemp;

printf("请输入要添加职工个数:

");

scanf("%d",&numberTemp);

for(i=0;i

{

printf("输入第%d个职工信息\n",i+1);

printf("姓名:

");

scanf("%s",temp.name);

printf("工号:

");

scanf("%s",temp.ID);

printf("基本工资:

");

scanf("%d",&temp.salary1);

printf("职务工资:

");

scanf("%d",&temp.salary2);

printf("津贴:

");

scanf("%d",&temp.salary3);

wo[Number++]=temp;//写入到数组

bc(&temp);//写入到文件

}

printf("添加成功\n");

}

3.2查看职工信息函数的实现

查看记录前如图7所示。

图7查看记录前效果图

输入一条记录信息:

如图8所示:

图8输入记录效果图

查看记录后如图9所示。

图9查看记录后效果图

查看函数代码流程图,如图10所示。

图10查看函数流程图

查看源代码:

//查看职工信息

voidsee()

{

inti=0;

printf("以下是全部职工\n");

printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n");

while(i

{

printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].salary1,wo[i].salary2,wo[i].salary3);

i++;

}

}

 

3.3查找职工信息函数的实现

查找记录前如图11所示。

图11查找记录前效果图

输入一条记录信息:

选择3,回车

如图12所示。

图12输入记录效果图

查找记录后如图13所示。

图13查找记录后效果图

查找函数代码流程图,如图14所示。

图14查找函数流程图

 

查找源代码:

//查找职工信息

voidsearch()

{

intn=0;

printf("1按姓名查找\n");

printf("2按工号查找\n");

scanf("%d",&n);

switch(n)

{

case1:

xmcz();

break;

case2:

ghcz();

break;

default:

printf("输入错误!

\n");

break;

}

}

voidxmcz()//按姓名查找

{

charname[30];

inti=0;

printf("请输入要查找职工姓名:

");

scanf("%s",name);

system("cls");

printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n");

for(i=0;i

{

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

{

printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].salary1,wo[i].salary2,wo[i].salary3);

}

}

}

voidghcz()//按工号查找

{

charid[10];

inti=0;

printf("请输入要查找职工工号:

");

scanf("%s",id);

system("cls");

printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n");

for(i=0;i

{

if(strcmp(id,wo[i].ID)==0)

{

printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].salary1,wo[i].salary2,wo[i].salary3);

}

}

}

3.4删除职工信息函数的实现

删除记录前如图15所示。

图15删除记录前效果图

输入一条记录信息:

选择4,回车后,如图16所示:

图16输入记录效果图

删除记录后如图17所示。

图17删除记录后效果图

 

删除函数代码流程图,如图18所示。

图18删除函数流程图

删除源代码:

//删除职工信息

voiddel()

{

intn=0;

printf("1按姓名删除\n");

printf("2按工号删除\n");

scanf("%d",&n);

switch(n)

{

case1:

xmsc();

break;

case2:

ghsc();

break;

}

}

voidxmsc()//按姓名删除

{

FILE*fp=NULL;

charname[30];

inti=0;

intj=0;

printf("请输入要删除的职工姓名:

");

scanf("%s",name);

for(i=0;i

{

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

{

for(j=i;j

{

wo[j]=wo[j+1];

}

Number--;

}

}

//将剩余数据写入文件擦除以前的数据

fp=fopen("C:

//worker.dat","wb");

for(i=0;i

{

fwrite(&wo[i],sizeof(structworker),1,fp);

}

fclose(fp);

printf("删除成功;\n");

}

voidghsc()//按工号删除

{

FILE*fp=NULL;

charid[60];

inti=0;

intj=0;

printf("请输入要删除的职工工号:

");

scanf("%s",id);

for(i=0;i

{

if(strcmp(id,wo[i].ID)==0)

{

for(j=i;j

{

wo[j]=wo[j+1];

}

Number--;

}

}

//将剩余数据写入文件擦除以前的数据

fp=fopen("C:

//worker.dat","wb");

for(i=0;i

{

fwrite(&wo[i],sizeof(structworker),1,fp);

}

fclose(fp);

printf("删除成功;\n");

}

3.5统计职工工资函数的实现

统计记录前如图19所示。

图19统计记录前效果图

输入一条记录信息:

如图20所示:

图20输入记录效果图

统计记录后如图21所示。

图21统计后前效果图

统计函数代码流程图,如图22所示。

图22统计函数流程图

统计源代码:

//统计职工工资

voidstatistics()

{

inti=0;

doubles=0.0;

doublesum[100];

for(i=0;i

{

sum[i]=wo[i].salary1+wo[i].salary2+wo[i].salary3;

printf("%s的总工资为:

%f\n",wo[i].name,sum[i]);

}

for(i=0;i

{

s+=sum[i];

}

printf("平均工资为:

%f\n",s/Number);

}

3.6修改函数的实现

修改记录前如图23所示。

图23修改记录前效果图

输入一条记录信息:

如图24所示:

图24输入记录效果图

修改记录后如图25所示。

图25修改记录后效果图

 

修改函数代码流程图,如图26所示。

图26修改函数流程图

修改源代码:

//修改职工信息

voidmodify()

{

intmode=0;

printf("请选择修改查找方式\n");

printf("1按姓名查找修改\n");

printf("2按工号查找修改\n");

scanf("%d",&mode);

switch(mode)

{

case1:

xmxg();

break;

case2:

ghxg();

break;

default:

printf("输入错误!

\n");

break;

}

}

voidxmxg()//按姓名修改

{

FILE*fp=NULL;

charname[30];

inti=0;

printf("请输入要修改的职工姓名:

");

scanf("%s",name);

for(i=0;i

{

if(strcmp(name,wo[i].name));

else

break;

}

printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n");

printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].salary1,wo[i].salary2,wo[i].salary3);

printf("请重新输入该职工信息");

printf("姓名:

");

scanf("%s",wo[i].name);

printf("工号:

");

scanf("%s",wo[i].ID);

printf("基本工资:

");

scanf("%d",&wo[i].salary1);

printf("职务工资:

");

scanf("%d",&wo[i].salary2);

printf("津贴:

");

scanf("%d",&wo[i].salary3);

//信息修改后重新更新文件里面的数据以保持数据一致性

fp=fopen("C:

//worker.dat","wb");

for(i=0;i

{

fwrite(&wo[i],sizeof(structworker),1,fp);

}

fclose(fp);

}

voidghxg()//按工号修改

{

FILE*fp=NULL;

charid[30];

inti=0;

printf("请输入要修改的职工工号:

");

scanf("%s",id);

for(i=0;i

{

if(strcmp(id,wo[i].ID));

else

break;

}

printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n");

printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].salary1,wo[i].salary2,wo[i].salary3);

printf("请重新输入该职工信息");

printf("姓名:

");

printf("姓名:

");

scanf("%s",wo[i].name);

printf("工号:

");

scanf("%s",wo[i].ID);

printf("基本工资:

");

scanf("%d",&wo[i].salary1);

printf("职务工资:

");

scanf("%d",&wo[i].salary2);

printf("津贴:

");

scanf("%d",&wo[i].salary3);

//信息修改后重新更新文件里面的数据以保持数据一致性

fp=fopen("C:

//worker.dat","wb");

for(i=0;i

{

fwrite(&wo[i],sizeof(structworker),1,fp);

}

fclose(fp);

printf("\t=======>修改成功\n");

}

3.7保存数据函数的实现

保存记录前如图27所示。

图27保存记录前效果图

输入一条记录信息:

图28输入记录效果图

保存记录后如图29所示。

图29保存记录后效果图

保存源代码:

//保存数据

voidreserve()

{

printf("\t=====程序在运行时已自动保存.....\n");

}

voidback()

{

printf("\t===>按Enter键返回主菜单\n");

}

3.8作者信息函数的实现

作者记录前如图30所示。

图30作者记录前效果图

输入一条记录信息:

如图31所示:

图31输入记录效果图

作者记录后如图32所示。

图32作者记录后效果图

作者源代码:

//作者信息

voidauthor()

{

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

printf("\t^^^^^^^^^^^^^^^某学校^^^^^^^^^^^^^^^\n\n");

printf("\t^^^^^^^^^^^^^^^通信工程^^^^^^^^^^^^^^^\n\n");

printf("\t^^^^^^^^^^^^^^***制作^^^^^^^^^^^^^^\n\n");

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

}

3.9退出程序

操作前如图33所示。

图33作者记录前效果图

输入一条记录信息:

如图34所示:

图34输入记录效果图

回车后:

如图35所示

按任意键即可退出。

图35输入记录后效果图

四总结

通过这几天的努力,职工工资管理系统的设计已基本完成。

在本次课程设计中,我充分领略了C语言功能的强大,包括函数、数组、指针、结构体、文件等。

职工工资管理系统是一个很实用并且使用广泛的操作系统。

此系统可以减少很多工作量,做到设计合理,便于使用,易于操作;界面友好,容错性高,可在很短的时间内,查找出所需的职工工资资料,提高工作效率。

该系统具有添加、显示、查询、修改、删除等基本功能,以方便对工资的各项管理操作。

每一条记录包括一个职工的工号、姓名、工资等信息,系统的各个功能模块都用函数的形式来实现,可以将职工信息保存在文件中,并从文件中读取出来。

总的来说,通过这次程序设计,使我加深了对C语言的认识,进一步熟悉了对C语言功能的灵活运用,而且加深了我对程序的理解和编写能力,通过文献资料和网络资料的帮助,使我对C语言程序设计这一基础学科又一次加深了认识,也意识到了其具有的强大功能和发展前景。

这会对以后的学习有所帮助。

参考文献

[1]谭浩强,张基温.C语言程序设计教程[M].第3版.高等教育出版社,2006

[2]杨涛.C程序设计语言.北京:

机械工业出版社,2004

[3]全国计算机等级考试二级教程:

C语言程序设计(2009年版).高等教育出版社

 

附录

#include

#include

#include

structworker

{

charname[30];

charID[10];

intsalary1,salary2,salary3;

};

intdq(structworkerwo[]);

voidshow();

voidbc(structworkerwo[]);

voidadd();

voidsee();

voidsearch();

voidghcz();

voidxmcz();

voiddel();

voidxmsc();

voidghsc();

voidstatistics();

voidmodify();

voidghxg();

voidxmxg();

voidreserve();

voidback();

voidauthor();

structworkerwo[100];//保存所有的职工信息

intNumber=0;//记录总的职工人数

voidmain()

{

intchoose=0;

while(true)

{

show();

printf("\t\t====>请选择:

");

scanf("%d",&choose);

system("cls");

switch(choose)

{

case0:

exit(0);//退出

break;

case1:

add();

back();//添加职工信息

break;

case2:

see();

back();//查看职工信息

break;

case3:

search();

back();//查找职工信息

break;

case4:

del();

back();//删除职工信息

break;

case5:

statistics();

back();//统计职工工资

break;

case6:

modify();

back();//修改职工信息

break;

case7:

reserve();

back();//保存数据

break;

case8:

author();

back();//作者信息

break;

default:

break;

}

fflush(stdin);

getchar();

system("cls");

}

}

intdq(structworkerwo[])

{

FILE*fp=NULL;

inti=0;

fp=fopen("C:

//worker.dat","rb");

while(fread(&wo[i],sizeof(structworker),1,fp))

i++;

fclose(fp);

returni;

}

voidshow()

{

printf("\n");

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

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

printf("\t^^^^^^^^^^^^^^^[1]添加职工信息^^^^^^^^^^^^^^^^^\n");

printf

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

当前位置:首页 > 表格模板 > 合同协议

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

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