职工工资信息管理系统Word文件下载.docx

上传人:b****2 文档编号:3710224 上传时间:2023-05-02 格式:DOCX 页数:19 大小:20.01KB
下载 相关 举报
职工工资信息管理系统Word文件下载.docx_第1页
第1页 / 共19页
职工工资信息管理系统Word文件下载.docx_第2页
第2页 / 共19页
职工工资信息管理系统Word文件下载.docx_第3页
第3页 / 共19页
职工工资信息管理系统Word文件下载.docx_第4页
第4页 / 共19页
职工工资信息管理系统Word文件下载.docx_第5页
第5页 / 共19页
职工工资信息管理系统Word文件下载.docx_第6页
第6页 / 共19页
职工工资信息管理系统Word文件下载.docx_第7页
第7页 / 共19页
职工工资信息管理系统Word文件下载.docx_第8页
第8页 / 共19页
职工工资信息管理系统Word文件下载.docx_第9页
第9页 / 共19页
职工工资信息管理系统Word文件下载.docx_第10页
第10页 / 共19页
职工工资信息管理系统Word文件下载.docx_第11页
第11页 / 共19页
职工工资信息管理系统Word文件下载.docx_第12页
第12页 / 共19页
职工工资信息管理系统Word文件下载.docx_第13页
第13页 / 共19页
职工工资信息管理系统Word文件下载.docx_第14页
第14页 / 共19页
职工工资信息管理系统Word文件下载.docx_第15页
第15页 / 共19页
职工工资信息管理系统Word文件下载.docx_第16页
第16页 / 共19页
职工工资信息管理系统Word文件下载.docx_第17页
第17页 / 共19页
职工工资信息管理系统Word文件下载.docx_第18页
第18页 / 共19页
职工工资信息管理系统Word文件下载.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

职工工资信息管理系统Word文件下载.docx

《职工工资信息管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《职工工资信息管理系统Word文件下载.docx(19页珍藏版)》请在冰点文库上搜索。

职工工资信息管理系统Word文件下载.docx

#defineN50

voidmain()

{

voidmenu();

menu();

}

voidmenu()//主菜单函数

voidenter();

voidadd();

voidbrowse();

voidsearch();

voidorder();

intn,w1;

do

{

puts("

\t\t*********************MENU*************************\n\n"

);

\t\t\t1.Enter"

\t\t\t2.Add"

\t\t\t3.browseall"

\t\t\t4.Search"

\t\t\t5.Order"

\t\t\t6.Exit"

\n\n\t\t*************************************************\n"

printf("

Choiceyournumber(1-6):

[]\b\b"

scanf("

%d"

&

n);

if(n<

1||n>

6)/*对选择的数字进行判断*/

w1=1;

getchar();

}

elsew1=0;

while(w1==1);

switch(n)

case1:

enter();

break;

/*输入模块*/

case2:

add();

/*新增模块*/

case3:

browse();

/*浏览模块*/

case4:

search();

/*查找模块*/

case5:

order();

/*排序模块*/

case6:

exit(0);

/*退出模块*/

structlist//结构体定义工资信息

intnum;

//工资卡号

charname[20];

//姓名

intmonth;

//月份

intsalary1;

//应发工资

intwater;

//水费

intelectrisity;

//电费

floatfax;

//税金

floatsalary2;

//实发工资

}list[N];

//list[N]中每个数组元素对应一个职工工资信息

voidenter()//输入模块函数

voidprintf_back();

voidsave(intn);

voidinput(inti);

inti,n;

howmanyworkers(1-%d)?

:

"

N-1);

//输入职工数目

\nenterdatenow\n\n"

for(i=0;

i<

n;

i++)//输入职工各项信息

\ninput%dthstudentrecord.\n"

i+1);

input(i);

//调用职工信息输入函数

if(i!

=0)save(n);

//储存职工信息

printf_back();

//执行返回函数

voidadd()//新增模块函数

{

inti,n,m,k;

intload();

FILE*fp;

//定义文件指针变量

n=load();

//导出文件信息,得到返回值

howmanyworkersareyouwanttoadd(0-%d)?

N-1-n);

m);

//输入新增职工数目

k=m+n;

//总职工数=新增职工数+已有职工数

for(i=n+1;

=k;

i++)//输入新增职工信息

\ninput%dthworkersrecord.\n"

i-n+2);

fp=fopen("

workers.txt"

"

ab"

//以追加形式打开文件

i++)

fwrite(&

list[i],sizeof(structlist),1,fp);

//将内存中的职工信息输出到磁盘文件中

save(n);

//储存输入信息

fclose(fp);

//关闭文件

voidbrowse()//浏览模块函数

voidprintf_one(inti);

voidprintf_face();

printf_face();

if((i!

=0)&

&

(i%10==0))//以10个职工为一组输出

{printf("

\n\npassanykeytocontinue..."

getch();

\n\n"

printf_one(i);

//输出各职工信息

printf("

\n"

\tthereare%drecode.\n"

n);

\npassanykeytoback.."

//返回主菜单

voidsearch()//查询模块函数

{

\t\t\t1.searchbyname"

//按姓名查询

\t\t\t2.searchbynum"

//按工资卡号查询

if(n<

2)

voidsearch_1();

voidsearch_2();

search_1();

search_2();

voidsearch_1()//按姓名查询

inti,n,k,w1=1,w2,w3,w4;

structlists;

k=-1;

\n\nenternamethatyouwanttosearch!

name:

%s"

s.name);

//输入要查找的姓名

//输出职工信息项目

if(strcmp(s.name,list[i].name)==0)//查询出与输入姓名相同的职工的信息

k=i;

printf_one(k);

//输出查询结果并中断,说明只能输出查到的第一个数据

if(k==-1)//如果没有查出信息则执行如下选择菜单

\n\nNO.exit!

please"

\n\nareyouagain?

\n\t1).again2).NOandback[]\b\b"

w1);

if(w1==2)break;

while(k==-1&

w1==1);

//选择1继续循环执行查询

w4=0;

w3=0;

if(k!

=-1)

successful"

\n\nwhatdoyouwanttodo?

\n\t1).searchanother2).back[]\b\b"

//选择查找下一个数据或返回

w2);

while(w2==1);

//选择1循环执行查询下一个数据

voidsearch_2()//按工资卡号查询

\n\nenternumthatyouwanttosearch!

num:

s.num);

//输入要查找的工资卡号

if(s.num==list[i].num)//查询出与输入工资卡号相同的职工的信息

printf_one(k);

if(k==-1)//如果没有查出信息则执行如下选择菜单

//选择1继续循环执行查询

w4=0;

while(w2==1);

//选择1循环执行查询下一个数据

voidorder()//排序功能模块函数

{intw1,n;

voidorder_1();

voidorder_2();

\t\t\t1.orderbynum"

//按工资卡号排序

\t\t\t2.orderbysalary2"

//按实发工资排序

order_1();

order_2();

voidorder_1()//按工资卡号升序排序

voidsave(inti);

inti,j,n;

voidbrowse();

structlists;

n-1;

i++)//冒泡排序法,按职工工资卡号升序排列出职工信息

{for(j=i+1;

j<

j++)

{if(list[j].num<

list[i].num)

s=list[j];

list[j]=list[i];

list[i]=s;

save(n);

//储存排序后的信息

browse();

//显示排序后的信息

voidorder_2()//按实发工资升序排序

i++)//冒泡排序法,按实发工资升序排列出职工信息

{if(list[i].salary2<

list[j].salary2)

list[j]=list[i];

list[i]=s;

voidsave(intn)//储存函数

inti;

wb"

//以只写方式打开文件

}

intload()//导出文件信息

rb"

//以只读方式打开文件

!

feof(fp);

fread(&

//读出磁盘文件中的职工信息

return(i-1);

//返回数值i-1

voidinput(inti)//职工信息输入函数

floatsalary2(inti);

floatfax(inti);

No.:

list[i].num);

name:

list[i].name);

month:

list[i].month);

salary1:

list[i].salary1);

water:

list[i].water);

electricity:

list[i].electrisity);

fax(i);

//计算税金

salary2(i);

//计算实发工资

floatfax(inti)//税金计算函数

if(list[i].salary1<

800)list[i].fax=0;

elseif(list[i].salary1<

1400)

list[i].fax=(((list[i].salary1-800)*5/100));

elselist[i].fax=(((list[i].salary1-1400)/10));

returnlist[i].fax;

floatsalary2(inti)//实发工资计算函数

list[i].salary2=(list[i].salary1-list[i].water-list[i].electrisity-list[i].fax);

returnlist[i].salary2;

voidprintf_back()//返回函数

intw;

\n\n\tsuccessful!

whatdoyouwanttodo?

\n\n\t1).browseallnow\t2).back:

[]\b\b"

//菜单选择浏览职工信息或返回主菜单

w);

if(w==1)browse();

//输入1选择浏览职工信息

elsemenu();

//输入2返回主菜单

voidprintf_one(inti)//单个职工信息输出函数

%9d"

list[i].num);

%9s"

list[i].month);

list[i].salary1);

list[i].water);

list[i].electrisity);

%9.2f"

list[i].fax);

list[i].salary2);

voidprintf_face()//职工信息项目

\n\tNo.namemonthsalary1waterelectrisityfaxsalary2\n"

5.编程中遇到的困难及解决方法

遇到最大的问题是所有程序代码编完放在一起后,虽然能够成功运行,但使用时如果职工人数发生变化,会导致文件后部出现乱码。

若要使每次运行都正常,必须在人数改变后退出程序,修改宏定义的值。

这样很不方便,不能够连续运行。

为解决这一大问题,最后我想到了定义一个全局指针变量,用来追踪最新的人数。

特别是添加这个会导致人数变化的函数中,全局指针变量起了很大作用。

经过一边修改一边调试,最终可以成功的串联整个函数,在连续运行时,总能根据最新的人数调用各个函数。

另外在串联所有函数时,调试提示出错:

有几个函数“redefinition;

differentbasictypes”解决:

在函数名前加void指明类型。

整个程序代码是分块书写的,每个函数都可以独立运行。

只有输入函数查询菜单函数写得很顺利,一次性就能够成功运行,其他函数在调试过程中或多或少都出现了问题。

比如,浏览函数display()遇到的问题虽然不大,但解决起来很麻烦。

理想的运行结果是美观整齐。

即下面的职工信息分别与第一个printf输出的中文项目提示对齐。

解决方法:

不断修改空格个数,不断运行察看效果。

又如,添加函数add()遇到的问题是用printf输入新职工信息后,保存到文件里面,发现原有的信息不见了。

解决:

文件打开方式改用"

a"

追加写入。

6.总结心得及良好建议

经过一学期的C语言学习,我们掌握了C语言的基础知识,能够读懂别人用c语言设计的程序。

平时的程序设计大多是以填空的形式出现,虽然有所接触,但都不完全。

而这一周的课程设计,却让我们完完全全用自己学到的知识编写一个完整的体统程序。

这是一个新的挑战,也是一种新的学习。

C语言是一个有序的学习,学了最基本的替换,然后扩展到循环、嵌套,条例很清楚,不是一个零散的知识,不过通过实践我也知道了自己的不足,存在很多的问题,比如懒惰和依赖心理。

初步接触C语言的时候,觉得甚是无聊,通过实践,摆脱了那种似懂非懂的状态!

希望以后还会有更多类似的实践课程,在有限的大学时间学到更多的实用技能,为以后的工作打下良好基础。

7.参考文献

《C程序设计》谭浩强

《C程序设计课程设计》刘振安

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

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2