某企业职工工资管理系统1.docx
《某企业职工工资管理系统1.docx》由会员分享,可在线阅读,更多相关《某企业职工工资管理系统1.docx(16页珍藏版)》请在冰豆网上搜索。
某企业职工工资管理系统1
某企业职工工资管理系统
(1)
目录
摘要2
1.绪论2
2.系统分析2
2.1功能需求2
2.2数据需求3
2.3性能需求3
3.总体设计3
3.1功能模块设计3
4.详细设计5
4.1录入职工信息6
4.2对职工按工资排序并显示8
4.3能够增加新职工数据并按工资高低排序……………………………………..8
4.4退出8
5.调试与测试9
5.1调试9
5.2测试9
6.结论9
结束语10
参考文献10
附录1-用户手册10
附录2-源程序11
摘要
某企业职工工资管理系统是一个企事业单位不可缺少的部分,公司可以利用这套程序进行职工的工资管理,也方便查询修改职工的各项信息,可以提高管理工作的效率。
本系统使用C语言作为开发工具的,开发职工信息管理系统,实现了录入职工工资,按工资排序、等条件查询职工信息,并支持模糊查询,统计不同的职工工资。
本文从分析课题的题目背景、题目意义、题目要求等出发,分别从需求分析、总体设计、详细设计、测试等各个方面详细介绍了系统的设计与实现过程,最后对系统的完成情况进行了总结。
关键词:
职工信息管理;模糊查询;统计;C语言
1.绪论
随着科技的发展,愈来愈多的公司选择了企业职工工资管理系统来管理食品的各项信息。
企业职工工资管理系统是一个企事业单位不可缺少的部分,公司可以利用这套程序进行工资的各种信息管理,也方便查询修改工资的各项信息,可以提高管理工资信息的效率和简化管理工作的程序。
有利的为公司节省了运作成本,优化资源利用率,这也正是编写本程序的目的所在。
根据课程设计任务书要求,本系统开发主要完成以下功能和性能。
(1).录入职工信息并保存在文件中;
(2).对职工按工资排序并显示;
(3).能够增加新职工数据并按工资高低排序,并将排序后的结果保存到另一文件中。
2.系统分析
2.1功能需求
本系统主要是企业对职工工资信息简单管理的系统。
该系统需要有录入信息,排序,根据所给条件查询信息,修改信息,统计信息,循环显示主菜单,保存信息的功能,并且利用显示函数将职工的所有信息显示出来。
2.2数据需求
需要输入员工的工号、姓名、工资,等信息。
2.3性能需求
在运行本程序时只要按照正确的操作方法不会出现无法运行的情况,系统稳定性好,安全,可靠。
3.总体设计
3.1功能模块设计
本程序主要由三个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,工资排序并显示函数和增加新职工数据函数是程序中较为核心的部分,下面分别进行说明。
1、工资排序并显示函数
工资排序使用冒泡法,将结构体中的数据按照工资由多到少的顺序排序,把排序后的结果保存打印到屏幕上,并将结果保存到文件中。
具体的程序段如下
voidsore(intn)
{
inti,j=1;
structworkertemp;
FILE*fp1;
for(i=0;ifor(j=0;j{if(wor[j].gongzi{strcpy(temp.num,wor[j].num);strcpy(temp.name,wor[j].name);temp.gongzi=wor[j].gongzi;strcpy(wor[j].num,wor[j+1].num);strcpy(wor[j].name,wor[j+1].name);wor[j].gongzi=wor[j+1].gongzi;strcpy(wor[j+1].num,temp.num);strcpy(wor[j+1].name,temp.name);wor[j+1].gongzi=temp.gongzi;}}if((fp1=fopen("d://sore.txt","wb"))==NULL){printf("打开文件失败!");exit(0);}printf("序号工号姓名工资\n");for(i=0;i{fwrite(&wor[i],sizeof(structworker),1,fp1);if(wor[i].gongzi==wor[i+1].gongzi)printf("%3d%5s%5s%8.2f\n",j,wor[i].num,wor[i].name,wor[i].gongzi);elseprintf("%3d%5s%5s%8.2f\n",j++,wor[i].num,wor[i].name,wor[i].gongzi);}fclose(fp1);2、增加新职工数据函数该函数的核心内容是增加新的员工信息,保存到结构体中,并调用sore()函数将增加后的员工信息重新进行排序。最后把增加后的总人数返回给主函数。具体程序段如下:intadd(intn){inti,j;FILE*fp;if((fp=fopen("d://worker.txt","rb+"))!=NULL){printf("请输入要追加的员工数量,按回车键确认:");scanf("%d",&j);for(i=1;i<=j;i++){printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:\n",i);scanf("%s%s%f",&wor[n+i-1].num,&wor[n+i-1].name,&wor[n+i-1].gongzi);fwrite(&wor[n+i-1],sizeof(structworker),1,fp);}}sore(n+j);return(n+j)}4.详细设计4.1、录入职工信息函数主要实现程序最初运行时员工数据的录入;图2录入职工信息函数流程图4.2、工资排序并显示函数实现的功能是按照工资由多到少对员工的数据进行排序,把排序后的文件保存到sore.dat文件中,并打印目前所有的有效员工记录信息图3工资排序并显示函数流程图4.3、增加新职工数据函数按插入新职工并按工资高低排序图4增加新职工数据函数流程图除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个员工记录都包含工号、姓名、工资,在程序当中,将员工记录类型定义为结构体类型,添加以及追加的员工信息直接写入worker.dat文件中,其他函数每次对员工记录的访问,其数据来源都是worker.dat文件,这样做不但可以保证员工数据的一致性,而且可以对员工数据进行永久保存,保证每次运行程序都可以采用原来的数据。4.4退出5.调试与测试5.1调试调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者者来说也是最艰巨的任务。调试的任务是及时改正测试过程中发现的软件错误。具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。然后仔细研究推断代码以确定问题的原因,并设法改正。调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。本系统调试过程中遇到问题、原因和解决方法如下面介绍。(1)程序不能运行定义的指针,很多次引用,过个函数里面,定义的不明确,造成错误连连发生。(2)不能正确输出信息,有乱码现象原因是键入信息的时候,没有一一对应,逗号的位置不正确,后来,用的是信息逐一输入,保证了信息的一一对应和高度的准确性,使程序可以正常运行。(3)程序运行途中,出现错误,被迫中止其中定义字符数组,却没有定义长度,导致定义类型变成了字符型,而不能接受字符串,因此出现了错误。5.2测试软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。过度测试则会浪费许多宝贵的资源。到测试后期,即使找到了错误,然而付出了过高的代价。6.结论经过了一周的课程设计实习,我对C语言又了更深的认识,知道了它不光是一种语言,一些字母和算法,它可以实现许多功能,给社会提供了许多便利。也通过这次课程设计对我的C语言能力有了一定程度的提高,自己能和计算机沟通了,也能让计算机给自己做事。并且方便,简洁。这次课程设计所设计的题目是书店销售系统,刚拿到的时候对完成没什么信心,经过自己的努力终于还是完成了。并且还算满意,也有些许成就感。希望今后对计算机还能有更高的了深造。也让我对C语言2级考试充满了信心和希望。结束语为期两个礼拜的的软件综合课程设计实习终于顺利完成,在这期间,我学到了很多课堂上学不到的东西,而且,将所学付之于实践,理论联系实际,是令我很兴奋的,但同时也感觉到了难度。对C语言,有了更深一步的了解,并且培养出了良好的思考方式,对于编程。虽然困难很多,问题出现的也很多,但好在,顺利完成任务了,很有成就感。参考文献谭浩强.C语言程序设计(第三版).北京:清华大学出版社,2005.7附录1-用户手册附录2-源程序#include#include#include#defineN100structworker{charnum[20];charname[10];floatgongzi;}wor[N]; intshuru(){inti,n;FILE*fp;if((fp=fopen("d://worker.txt","wb"))==NULL){printf("文件打开失败");exit(0);}printf("请输入要录入的员工数量,按回车键确认:");scanf("%d",&n);for(i=1;i<=n;i++){printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:\n",i);scanf("%s%s%f",&wor[i-1].num,&wor[i-1].name,&wor[i-1].gongzi);if((fwrite(&wor[i-1],sizeof(structworker),1,fp))!=1)printf("文件保存失败!\n");}fclose(fp);return(n);}voidsore(intn){inti,j=1;structworkertemp;FILE*fp1;for(i=0;ifor(j=0;j{if(wor[j].gongzi{strcpy(temp.num,wor[j].num);strcpy(temp.name,wor[j].name);temp.gongzi=wor[j].gongzi;strcpy(wor[j].num,wor[j+1].num);strcpy(wor[j].name,wor[j+1].name);wor[j].gongzi=wor[j+1].gongzi;strcpy(wor[j+1].num,temp.num);strcpy(wor[j+1].name,temp.name);wor[j+1].gongzi=temp.gongzi;}}if((fp1=fopen("d://sore.txt","wb"))==NULL){printf("打开文件失败!");exit(0);}printf("序号工号姓名工资\n");for(i=0;i{fwrite(&wor[i],sizeof(structworker),1,fp1);if(wor[i].gongzi==wor[i+1].gongzi)printf("%3d%5s%5s%8.2f\n",j,wor[i].num,wor[i].name,wor[i].gongzi);elseprintf("%3d%5s%5s%8.2f\n",j++,wor[i].num,wor[i].name,wor[i].gongzi);}fclose(fp1);}intadd(intn){inti,j;FILE*fp;if((fp=fopen("d://worker.txt","rb+"))!=NULL){printf("请输入要追加的员工数量,按回车键确认:");scanf("%d",&j);for(i=1;i<=j;i++){printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:\n",i);scanf("%s%s%f",&wor[n+i-1].num,&wor[n+i-1].name,&wor[n+i-1].gongzi);fwrite(&wor[n+i-1],sizeof(structworker),1,fp);}}sore(n+j);return(n+j);}voidmain(){intn=0;while(1){printf("*******************************************************************************\n");printf("*******************************************************************************\n");printf("*****************************欢迎使用员工工资管理系统**************************\n");printf("*******************************************************************************\n");printf("*********************************1输入员工信息*******************************\n");printf("*********************************2根据工资排序*******************************\n");printf("*********************************3增加新员工数据******************************\n");printf("*********************************4退出程序*********************************\n");printf("*******************************************************************************\n");printf("请输入你要选择的功能序号,按enter键确认:");intk;scanf("%d",&k);switch(k){case1:n=shuru();break;case2:sore(n);break;case3:n=add(n);break;case4:exit(0);}}}
for(j=0;j{if(wor[j].gongzi{strcpy(temp.num,wor[j].num);strcpy(temp.name,wor[j].name);temp.gongzi=wor[j].gongzi;strcpy(wor[j].num,wor[j+1].num);strcpy(wor[j].name,wor[j+1].name);wor[j].gongzi=wor[j+1].gongzi;strcpy(wor[j+1].num,temp.num);strcpy(wor[j+1].name,temp.name);wor[j+1].gongzi=temp.gongzi;}}if((fp1=fopen("d://sore.txt","wb"))==NULL){printf("打开文件失败!");exit(0);}printf("序号工号姓名工资\n");for(i=0;i{fwrite(&wor[i],sizeof(structworker),1,fp1);if(wor[i].gongzi==wor[i+1].gongzi)printf("%3d%5s%5s%8.2f\n",j,wor[i].num,wor[i].name,wor[i].gongzi);elseprintf("%3d%5s%5s%8.2f\n",j++,wor[i].num,wor[i].name,wor[i].gongzi);}fclose(fp1);2、增加新职工数据函数该函数的核心内容是增加新的员工信息,保存到结构体中,并调用sore()函数将增加后的员工信息重新进行排序。最后把增加后的总人数返回给主函数。具体程序段如下:intadd(intn){inti,j;FILE*fp;if((fp=fopen("d://worker.txt","rb+"))!=NULL){printf("请输入要追加的员工数量,按回车键确认:");scanf("%d",&j);for(i=1;i<=j;i++){printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:\n",i);scanf("%s%s%f",&wor[n+i-1].num,&wor[n+i-1].name,&wor[n+i-1].gongzi);fwrite(&wor[n+i-1],sizeof(structworker),1,fp);}}sore(n+j);return(n+j)}4.详细设计4.1、录入职工信息函数主要实现程序最初运行时员工数据的录入;图2录入职工信息函数流程图4.2、工资排序并显示函数实现的功能是按照工资由多到少对员工的数据进行排序,把排序后的文件保存到sore.dat文件中,并打印目前所有的有效员工记录信息图3工资排序并显示函数流程图4.3、增加新职工数据函数按插入新职工并按工资高低排序图4增加新职工数据函数流程图除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个员工记录都包含工号、姓名、工资,在程序当中,将员工记录类型定义为结构体类型,添加以及追加的员工信息直接写入worker.dat文件中,其他函数每次对员工记录的访问,其数据来源都是worker.dat文件,这样做不但可以保证员工数据的一致性,而且可以对员工数据进行永久保存,保证每次运行程序都可以采用原来的数据。4.4退出5.调试与测试5.1调试调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者者来说也是最艰巨的任务。调试的任务是及时改正测试过程中发现的软件错误。具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。然后仔细研究推断代码以确定问题的原因,并设法改正。调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。本系统调试过程中遇到问题、原因和解决方法如下面介绍。(1)程序不能运行定义的指针,很多次引用,过个函数里面,定义的不明确,造成错误连连发生。(2)不能正确输出信息,有乱码现象原因是键入信息的时候,没有一一对应,逗号的位置不正确,后来,用的是信息逐一输入,保证了信息的一一对应和高度的准确性,使程序可以正常运行。(3)程序运行途中,出现错误,被迫中止其中定义字符数组,却没有定义长度,导致定义类型变成了字符型,而不能接受字符串,因此出现了错误。5.2测试软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。过度测试则会浪费许多宝贵的资源。到测试后期,即使找到了错误,然而付出了过高的代价。6.结论经过了一周的课程设计实习,我对C语言又了更深的认识,知道了它不光是一种语言,一些字母和算法,它可以实现许多功能,给社会提供了许多便利。也通过这次课程设计对我的C语言能力有了一定程度的提高,自己能和计算机沟通了,也能让计算机给自己做事。并且方便,简洁。这次课程设计所设计的题目是书店销售系统,刚拿到的时候对完成没什么信心,经过自己的努力终于还是完成了。并且还算满意,也有些许成就感。希望今后对计算机还能有更高的了深造。也让我对C语言2级考试充满了信心和希望。结束语为期两个礼拜的的软件综合课程设计实习终于顺利完成,在这期间,我学到了很多课堂上学不到的东西,而且,将所学付之于实践,理论联系实际,是令我很兴奋的,但同时也感觉到了难度。对C语言,有了更深一步的了解,并且培养出了良好的思考方式,对于编程。虽然困难很多,问题出现的也很多,但好在,顺利完成任务了,很有成就感。参考文献谭浩强.C语言程序设计(第三版).北京:清华大学出版社,2005.7附录1-用户手册附录2-源程序#include#include#include#defineN100structworker{charnum[20];charname[10];floatgongzi;}wor[N]; intshuru(){inti,n;FILE*fp;if((fp=fopen("d://worker.txt","wb"))==NULL){printf("文件打开失败");exit(0);}printf("请输入要录入的员工数量,按回车键确认:");scanf("%d",&n);for(i=1;i<=n;i++){printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:\n",i);scanf("%s%s%f",&wor[i-1].num,&wor[i-1].name,&wor[i-1].gongzi);if((fwrite(&wor[i-1],sizeof(structworker),1,fp))!=1)printf("文件保存失败!\n");}fclose(fp);return(n);}voidsore(intn){inti,j=1;structworkertemp;FILE*fp1;for(i=0;ifor(j=0;j{if(wor[j].gongzi{strcpy(temp.num,wor[j].num);strcpy(temp.name,wor[j].name);temp.gongzi=wor[j].gongzi;strcpy(wor[j].num,wor[j+1].num);strcpy(wor[j].name,wor[j+1].name);wor[j].gongzi=wor[j+1].gongzi;strcpy(wor[j+1].num,temp.num);strcpy(wor[j+1].name,temp.name);wor[j+1].gongzi=temp.gongzi;}}if((fp1=fopen("d://sore.txt","wb"))==NULL){printf("打开文件失败!");exit(0);}printf("序号工号姓名工资\n");for(i=0;i{fwrite(&wor[i],sizeof(structworker),1,fp1);if(wor[i].gongzi==wor[i+1].gongzi)printf("%3d%5s%5s%8.2f\n",j,wor[i].num,wor[i].name,wor[i].gongzi);elseprintf("%3d%5s%5s%8.2f\n",j++,wor[i].num,wor[i].name,wor[i].gongzi);}fclose(fp1);}intadd(intn){inti,j;FILE*fp;if((fp=fopen("d://worker.txt","rb+"))!=NULL){printf("请输入要追加的员工数量,按回车键确认:");scanf("%d",&j);for(i=1;i<=j;i++){printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:\n",i);scanf("%s%s%f",&wor[n+i-1].num,&wor[n+i-1].name,&wor[n+i-1].gongzi);fwrite(&wor[n+i-1],sizeof(structworker),1,fp);}}sore(n+j);return(n+j);}voidmain(){intn=0;while(1){printf("*******************************************************************************\n");printf("*******************************************************************************\n");printf("*****************************欢迎使用员工工资管理系统**************************\n");printf("*******************************************************************************\n");printf("*********************************1输入员工信息*******************************\n");printf("*********************************2根据工资排序*******************************\n");printf("*********************************3增加新员工数据******************************\n");printf("*********************************4退出程序*********************************\n");printf("*******************************************************************************\n");printf("请输入你要选择的功能序号,按enter键确认:");intk;scanf("%d",&k);switch(k){case1:n=shuru();break;case2:sore(n);break;case3:n=add(n);break;case4:exit(0);}}}
if(wor[j].gongzi{strcpy(temp.num,wor[j].num);strcpy(temp.name,wor[j].name);temp.gongzi=wor[j].gongzi;strcpy(wor[j].num,wor[j+1].num);strcpy(wor[j].name,wor[j+1].name);wor[j].gongzi=wor[j+1].gongzi;strcpy(wor[j+1].num,temp.num);strcpy(wor[j+1].name,temp.name);wor[j+1].gongzi=temp.gongzi;}}if((fp1=fopen("d://sore.txt","wb"))==NULL){printf("打开文件失败!");exit(0);}printf("序号工号姓名工资\n");for(i=0;i{fwrite(&wor[i],sizeof(structworker),1,fp1);if(wor[i].gongzi==wor[i+1].gongzi)printf("%3d%5s%5s%8.2f\n",j,wor[i].num,wor[i].name,wor[i].gongzi);elseprintf("%3d%5s%5s%8.2f\n",j++,wor[i].num,wor[i].name,wor[i].gongzi);}fclose(fp1);2、增加新职工数据函数该函数的核心内容是增加新的员工信息,保存到结构体中,并调用sore()函数将增加后的员工信息重新进行排序。最后把增加后的总人数返回给主函数。具体程序段如下:intadd(intn){inti,j;FILE*fp;if((fp=fopen("d://worker.txt","rb+"))!=NULL){printf("请输入要追加的员工数量,按回车键确认:");scanf("%d",&j);for(i=1;i<=j;i++){printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:\n",i);scanf("%s%s%f",&wor[n+i-1].num,&wor[n+i-1].name,&wor[n+i-1].gongzi);fwrite(&wor[n+i-1],sizeof(structworker),1,fp);}}sore(n+j);return(n+j)}4.详细设计4.1、录入职工信息函数主要实现程序最初运行时员工数据的录入;图2录入职工信息函数流程图4.2、工资排序并显示函数实现的功能是按照工资由多到少对员工的数据进行排序,把排序后的文件保存到sore.dat文件中,并打印目前所有的有效员工记录信息图3工资排序并显示函数流程图4.3、增加新职工数据函数按插入新职工并按工资高低排序图4增加新职工数据函数流程图除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个员工记录都包含工号、姓名、工资,在程序当中,将员工记录类型定义为结构体类型,添加以及追加的员工信息直接写入worker.dat文件中,其他函数每次对员工记录的访问,其数据来源都是worker.dat文件,这样做不但可以保证员工数据的一致性,而且可以对员工数据进行永久保存,保证每次运行程序都可以采用原来的数据。4.4退出5.调试与测试5.1调试调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者者来说也是最艰巨的任务。调试的任务是及时改正测试过程中发现的软件错误。具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。然后仔细研究推断代码以确定问题的原因,并设法改正。调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。本系统调试过程中遇到问题、原因和解决方法如下面介绍。(1)程序不能运行定义的指针,很多次引用,过个函数里面,定义的不明确,造成错误连连发生。(2)不能正确输出信息,有乱码现象原因是键入信息的时候,没有一一对应,逗号的位置不正确,后来,用的是信息逐一输入,保证了信息的一一对应和高度的准确性,使程序可以正常运行。(3)程序运行途中,出现错误,被迫中止其中定义字符数组,却没有定义长度,导致定义类型变成了字符型,而不能接受字符串,因此出现了错误。5.2测试软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。过度测试则会浪费许多宝贵的资源。到测试后期,即使找到了错误,然而付出了过高的代价。6.结论经过了一周的课程设计实习,我对C语言又了更深的认识,知道了它不光是一种语言,一些字母和算法,它可以实现许多功能,给社会提供了许多便利。也通过这次课程设计对我的C语言能力有了一定程度的提高,自己能和计算机沟通了,也能让计算机给自己做事。并且方便,简洁。这次课程设计所设计的题目是书店销售系统,刚拿到的时候对完成没什么信心,经过自己的努力终于还是完成了。并且还算满意,也有些许成就感。希望今后对计算机还能有更高的了深造。也让我对C语言2级考试充满了信心和希望。结束语为期两个礼拜的的软件综合课程设计实习终于顺利完成,在这期间,我学到了很多课堂上学不到的东西,而且,将所学付之于实践,理论联系实际,是令我很兴奋的,但同时也感觉到了难度。对C语言,有了更深一步的了解,并且培养出了良好的思考方式,对于编程。虽然困难很多,问题出现的也很多,但好在,顺利完成任务了,很有成就感。参考文献谭浩强.C语言程序设计(第三版).北京:清华大学出版社,2005.7附录1-用户手册附录2-源程序#include#include#include#defineN100structworker{charnum[20];charname[10];floatgongzi;}wor[N]; intshuru(){inti,n;FILE*fp;if((fp=fopen("d://worker.txt","wb"))==NULL){printf("文件打开失败");exit(0);}printf("请输入要录入的员工数量,按回车键确认:");scanf("%d",&n);for(i=1;i<=n;i++){printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:\n",i);scanf("%s%s%f",&wor[i-1].num,&wor[i-1].name,&wor[i-1].gongzi);if((fwrite(&wor[i-1],sizeof(structworker),1,fp))!=1)printf("文件保存失败!\n");}fclose(fp);return(n);}voidsore(intn){inti,j=1;structworkertemp;FILE*fp1;for(i=0;ifor(j=0;j{if(wor[j].gongzi{strcpy(temp.num,wor[j].num);strcpy(temp.name,wor[j].name);temp.gongzi=wor[j].gongzi;strcpy(wor[j].num,wor[j+1].num);strcpy(wor[j].name,wor[j+1].name);wor[j].gongzi=wor[j+1].gongzi;strcpy(wor[j+1].num,temp.num);strcpy(wor[j+1].name,temp.name);wor[j+1].gongzi=temp.gongzi;}}if((fp1=fopen("d://sore.txt","wb"))==NULL){printf("打开文件失败!");exit(0);}printf("序号工号姓名工资\n");for(i=0;i{fwrite(&wor[i],sizeof(structworker),1,fp1);if(wor[i].gongzi==wor[i+1].gongzi)printf("%3d%5s%5s%8.2f\n",j,wor[i].num,wor[i].name,wor[i].gongzi);elseprintf("%3d%5s%5s%8.2f\n",j++,wor[i].num,wor[i].name,wor[i].gongzi);}fclose(fp1);}intadd(intn){inti,j;FILE*fp;if((fp=fopen("d://worker.txt","rb+"))!=NULL){printf("请输入要追加的员工数量,按回车键确认:");scanf("%d",&j);for(i=1;i<=j;i++){printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:\n",i);scanf("%s%s%f",&wor[n+i-1].num,&wor[n+i-1].name,&wor[n+i-1].gongzi);fwrite(&wor[n+i-1],sizeof(structworker),1,fp);}}sore(n+j);return(n+j);}voidmain(){intn=0;while(1){printf("*******************************************************************************\n");printf("*******************************************************************************\n");printf("*****************************欢迎使用员工工资管理系统**************************\n");printf("*******************************************************************************\n");printf("*********************************1输入员工信息*******************************\n");printf("*********************************2根据工资排序*******************************\n");printf("*********************************3增加新员工数据******************************\n");printf("*********************************4退出程序*********************************\n");printf("*******************************************************************************\n");printf("请输入你要选择的功能序号,按enter键确认:");intk;scanf("%d",&k);switch(k){case1:n=shuru();break;case2:sore(n);break;case3:n=add(n);break;case4:exit(0);}}}
{strcpy(temp.num,wor[j].num);
strcpy(temp.name,wor[j].name);
temp.gongzi=wor[j].gongzi;
strcpy(wor[j].num,wor[j+1].num);
strcpy(wor[j].name,wor[j+1].name);
wor[j].gongzi=wor[j+1].gongzi;
strcpy(wor[j+1].num,temp.num);
strcpy(wor[j+1].name,temp.name);
wor[j+1].gongzi=temp.gongzi;
}
if((fp1=fopen("d:
//sore.txt","wb"))==NULL)
printf("打开文件失败!
");
exit(0);
printf("序号工号姓名工资\n");
for(i=0;i{fwrite(&wor[i],sizeof(structworker),1,fp1);if(wor[i].gongzi==wor[i+1].gongzi)printf("%3d%5s%5s%8.2f\n",j,wor[i].num,wor[i].name,wor[i].gongzi);elseprintf("%3d%5s%5s%8.2f\n",j++,wor[i].num,wor[i].name,wor[i].gongzi);}fclose(fp1);2、增加新职工数据函数该函数的核心内容是增加新的员工信息,保存到结构体中,并调用sore()函数将增加后的员工信息重新进行排序。最后把增加后的总人数返回给主函数。具体程序段如下:intadd(intn){inti,j;FILE*fp;if((fp=fopen("d://worker.txt","rb+"))!=NULL){printf("请输入要追加的员工数量,按回车键确认:");scanf("%d",&j);for(i=1;i<=j;i++){printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:\n",i);scanf("%s%s%f",&wor[n+i-1].num,&wor[n+i-1].name,&wor[n+i-1].gongzi);fwrite(&wor[n+i-1],sizeof(structworker),1,fp);}}sore(n+j);return(n+j)}4.详细设计4.1、录入职工信息函数主要实现程序最初运行时员工数据的录入;图2录入职工信息函数流程图4.2、工资排序并显示函数实现的功能是按照工资由多到少对员工的数据进行排序,把排序后的文件保存到sore.dat文件中,并打印目前所有的有效员工记录信息图3工资排序并显示函数流程图4.3、增加新职工数据函数按插入新职工并按工资高低排序图4增加新职工数据函数流程图除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个员工记录都包含工号、姓名、工资,在程序当中,将员工记录类型定义为结构体类型,添加以及追加的员工信息直接写入worker.dat文件中,其他函数每次对员工记录的访问,其数据来源都是worker.dat文件,这样做不但可以保证员工数据的一致性,而且可以对员工数据进行永久保存,保证每次运行程序都可以采用原来的数据。4.4退出5.调试与测试5.1调试调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者者来说也是最艰巨的任务。调试的任务是及时改正测试过程中发现的软件错误。具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。然后仔细研究推断代码以确定问题的原因,并设法改正。调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。本系统调试过程中遇到问题、原因和解决方法如下面介绍。(1)程序不能运行定义的指针,很多次引用,过个函数里面,定义的不明确,造成错误连连发生。(2)不能正确输出信息,有乱码现象原因是键入信息的时候,没有一一对应,逗号的位置不正确,后来,用的是信息逐一输入,保证了信息的一一对应和高度的准确性,使程序可以正常运行。(3)程序运行途中,出现错误,被迫中止其中定义字符数组,却没有定义长度,导致定义类型变成了字符型,而不能接受字符串,因此出现了错误。5.2测试软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。过度测试则会浪费许多宝贵的资源。到测试后期,即使找到了错误,然而付出了过高的代价。6.结论经过了一周的课程设计实习,我对C语言又了更深的认识,知道了它不光是一种语言,一些字母和算法,它可以实现许多功能,给社会提供了许多便利。也通过这次课程设计对我的C语言能力有了一定程度的提高,自己能和计算机沟通了,也能让计算机给自己做事。并且方便,简洁。这次课程设计所设计的题目是书店销售系统,刚拿到的时候对完成没什么信心,经过自己的努力终于还是完成了。并且还算满意,也有些许成就感。希望今后对计算机还能有更高的了深造。也让我对C语言2级考试充满了信心和希望。结束语为期两个礼拜的的软件综合课程设计实习终于顺利完成,在这期间,我学到了很多课堂上学不到的东西,而且,将所学付之于实践,理论联系实际,是令我很兴奋的,但同时也感觉到了难度。对C语言,有了更深一步的了解,并且培养出了良好的思考方式,对于编程。虽然困难很多,问题出现的也很多,但好在,顺利完成任务了,很有成就感。参考文献谭浩强.C语言程序设计(第三版).北京:清华大学出版社,2005.7附录1-用户手册附录2-源程序#include#include#include#defineN100structworker{charnum[20];charname[10];floatgongzi;}wor[N]; intshuru(){inti,n;FILE*fp;if((fp=fopen("d://worker.txt","wb"))==NULL){printf("文件打开失败");exit(0);}printf("请输入要录入的员工数量,按回车键确认:");scanf("%d",&n);for(i=1;i<=n;i++){printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:\n",i);scanf("%s%s%f",&wor[i-1].num,&wor[i-1].name,&wor[i-1].gongzi);if((fwrite(&wor[i-1],sizeof(structworker),1,fp))!=1)printf("文件保存失败!\n");}fclose(fp);return(n);}voidsore(intn){inti,j=1;structworkertemp;FILE*fp1;for(i=0;ifor(j=0;j{if(wor[j].gongzi{strcpy(temp.num,wor[j].num);strcpy(temp.name,wor[j].name);temp.gongzi=wor[j].gongzi;strcpy(wor[j].num,wor[j+1].num);strcpy(wor[j].name,wor[j+1].name);wor[j].gongzi=wor[j+1].gongzi;strcpy(wor[j+1].num,temp.num);strcpy(wor[j+1].name,temp.name);wor[j+1].gongzi=temp.gongzi;}}if((fp1=fopen("d://sore.txt","wb"))==NULL){printf("打开文件失败!");exit(0);}printf("序号工号姓名工资\n");for(i=0;i{fwrite(&wor[i],sizeof(structworker),1,fp1);if(wor[i].gongzi==wor[i+1].gongzi)printf("%3d%5s%5s%8.2f\n",j,wor[i].num,wor[i].name,wor[i].gongzi);elseprintf("%3d%5s%5s%8.2f\n",j++,wor[i].num,wor[i].name,wor[i].gongzi);}fclose(fp1);}intadd(intn){inti,j;FILE*fp;if((fp=fopen("d://worker.txt","rb+"))!=NULL){printf("请输入要追加的员工数量,按回车键确认:");scanf("%d",&j);for(i=1;i<=j;i++){printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:\n",i);scanf("%s%s%f",&wor[n+i-1].num,&wor[n+i-1].name,&wor[n+i-1].gongzi);fwrite(&wor[n+i-1],sizeof(structworker),1,fp);}}sore(n+j);return(n+j);}voidmain(){intn=0;while(1){printf("*******************************************************************************\n");printf("*******************************************************************************\n");printf("*****************************欢迎使用员工工资管理系统**************************\n");printf("*******************************************************************************\n");printf("*********************************1输入员工信息*******************************\n");printf("*********************************2根据工资排序*******************************\n");printf("*********************************3增加新员工数据******************************\n");printf("*********************************4退出程序*********************************\n");printf("*******************************************************************************\n");printf("请输入你要选择的功能序号,按enter键确认:");intk;scanf("%d",&k);switch(k){case1:n=shuru();break;case2:sore(n);break;case3:n=add(n);break;case4:exit(0);}}}
fwrite(&wor[i],sizeof(structworker),1,fp1);
if(wor[i].gongzi==wor[i+1].gongzi)
printf("%3d%5s%5s%8.2f\n",j,wor[i].num,wor[i].name,wor[i].gongzi);
else
printf("%3d%5s%5s%8.2f\n",j++,wor[i].num,wor[i].name,wor[i].gongzi);
fclose(fp1);
2、增加新职工数据函数
该函数的核心内容是增加新的员工信息,保存到结构体中,并调用sore()函数将增加后的员工信息重新进行排序。
最后把增加后的总人数返回给主函数。
具体程序段如下:
intadd(intn)
inti,j;
FILE*fp;
if((fp=fopen("d:
//worker.txt","rb+"))!
=NULL)
printf("请输入要追加的员工数量,按回车键确认:
scanf("%d",&j);
for(i=1;i<=j;i++)
printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:
\n",i);
scanf("%s%s%f",&wor[n+i-1].num,&wor[n+i-1].name,&wor[n+i-1].gongzi);
fwrite(&wor[n+i-1],sizeof(structworker),1,fp);
sore(n+j);
return(n+j)
4.详细设计
4.1、录入职工信息函数主要实现程序最初运行时员工数据的录入;
图2录入职工信息函数流程图
4.2、工资排序并显示函数实现的功能是按照工资由多到少对员工的数据进行排序,把排序后的文件保存到sore.dat文件中,并打印目前所有的有效员工记录信息
图3工资排序并显示函数流程图
4.3、增加新职工数据函数按插入新职工并按工资高低排序
图4增加新职工数据函数流程图
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个员工记录都包含工号、姓名、工资,在程序当中,将员工记录类型定义为结构体类型,添加以及追加的员工信息直接写入worker.dat文件中,其他函数每次对员工记录的访问,其数据来源都是worker.dat文件,这样做不但可以保证员工数据的一致性,而且可以对员工数据进行永久保存,保证每次运行程序都可以采用原来的数据。
4.4退出
5.调试与测试
5.1调试
调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者者来说也是最艰巨的任务。
调试的任务是及时改正测试过程中发现的软件错误。
具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。
然后仔细研究推断代码以确定问题的原因,并设法改正。
调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。
本系统调试过程中遇到问题、原因和解决方法如下面介绍。
(1)程序不能运行
定义的指针,很多次引用,过个函数里面,定义的不明确,造成错误连连发生。
(2)不能正确输出信息,有乱码现象
原因是键入信息的时候,没有一一对应,逗号的位置不正确,后来,用的是信息逐一输入,保证了信息的一一对应和高度的准确性,使程序可以正常运行。
(3)程序运行途中,出现错误,被迫中止
其中定义字符数组,却没有定义长度,导致定义类型变成了字符型,而不能接受字符串,因此出现了错误。
5.2测试
软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。
或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。
过度测试则会浪费许多宝贵的资源。
到测试后期,即使找到了错误,然而付出了过高的代价。
6.结论
经过了一周的课程设计实习,我对C语言又了更深的认识,知道了它不光是一种语言,一些字母和算法,它可以实现许多功能,给社会提供了许多便利。
也通过这次课程设计对我的C语言能力有了一定程度的提高,自己能和计算机沟通了,也能让计算机给自己做事。
并且方便,简洁。
这次课程设计所设计的题目是书店销售系统,刚拿到的时候对完成没什么信心,经过自己的努力终于还是完成了。
并且还算满意,也有些许成就感。
希望今后对计算机还能有更高的了深造。
也让我对C语言2级考试充满了信心和希望。
结束语
为期两个礼拜的的软件综合课程设计实习终于顺利完成,在这期间,我学到了很多课堂上学不到的东西,而且,将所学付之于实践,理论联系实际,是令我很兴奋的,但同时也感觉到了难度。
对C语言,有了更深一步的了解,并且培养出了良好的思考方式,对于编程。
虽然困难很多,问题出现的也很多,但好在,顺利完成任务了,很有成就感。
参考文献
谭浩强.C语言程序设计(第三版).北京:
清华大学出版社,2005.7
附录1-用户手册
附录2-源程序
#include
#defineN100
structworker
charnum[20];
charname[10];
floatgongzi;
}wor[N];
intshuru()
inti,n;
//worker.txt","wb"))==NULL)
printf("文件打开失败");
printf("请输入要录入的员工数量,按回车键确认:
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%s%s%f",&wor[i-1].num,&wor[i-1].name,&wor[i-1].gongzi);
if((fwrite(&wor[i-1],sizeof(structworker),1,fp))!
=1)
printf("文件保存失败!
\n");
fclose(fp);
return(n);
for(i=0;ifor(j=0;j{if(wor[j].gongzi{strcpy(temp.num,wor[j].num);strcpy(temp.name,wor[j].name);temp.gongzi=wor[j].gongzi;strcpy(wor[j].num,wor[j+1].num);strcpy(wor[j].name,wor[j+1].name);wor[j].gongzi=wor[j+1].gongzi;strcpy(wor[j+1].num,temp.num);strcpy(wor[j+1].name,temp.name);wor[j+1].gongzi=temp.gongzi;}}if((fp1=fopen("d://sore.txt","wb"))==NULL){printf("打开文件失败!");exit(0);}printf("序号工号姓名工资\n");for(i=0;i{fwrite(&wor[i],sizeof(structworker),1,fp1);if(wor[i].gongzi==wor[i+1].gongzi)printf("%3d%5s%5s%8.2f\n",j,wor[i].num,wor[i].name,wor[i].gongzi);elseprintf("%3d%5s%5s%8.2f\n",j++,wor[i].num,wor[i].name,wor[i].gongzi);}fclose(fp1);}intadd(intn){inti,j;FILE*fp;if((fp=fopen("d://worker.txt","rb+"))!=NULL){printf("请输入要追加的员工数量,按回车键确认:");scanf("%d",&j);for(i=1;i<=j;i++){printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:\n",i);scanf("%s%s%f",&wor[n+i-1].num,&wor[n+i-1].name,&wor[n+i-1].gongzi);fwrite(&wor[n+i-1],sizeof(structworker),1,fp);}}sore(n+j);return(n+j);}voidmain(){intn=0;while(1){printf("*******************************************************************************\n");printf("*******************************************************************************\n");printf("*****************************欢迎使用员工工资管理系统**************************\n");printf("*******************************************************************************\n");printf("*********************************1输入员工信息*******************************\n");printf("*********************************2根据工资排序*******************************\n");printf("*********************************3增加新员工数据******************************\n");printf("*********************************4退出程序*********************************\n");printf("*******************************************************************************\n");printf("请输入你要选择的功能序号,按enter键确认:");intk;scanf("%d",&k);switch(k){case1:n=shuru();break;case2:sore(n);break;case3:n=add(n);break;case4:exit(0);}}}
for(j=0;j{if(wor[j].gongzi{strcpy(temp.num,wor[j].num);strcpy(temp.name,wor[j].name);temp.gongzi=wor[j].gongzi;strcpy(wor[j].num,wor[j+1].num);strcpy(wor[j].name,wor[j+1].name);wor[j].gongzi=wor[j+1].gongzi;strcpy(wor[j+1].num,temp.num);strcpy(wor[j+1].name,temp.name);wor[j+1].gongzi=temp.gongzi;}}if((fp1=fopen("d://sore.txt","wb"))==NULL){printf("打开文件失败!");exit(0);}printf("序号工号姓名工资\n");for(i=0;i{fwrite(&wor[i],sizeof(structworker),1,fp1);if(wor[i].gongzi==wor[i+1].gongzi)printf("%3d%5s%5s%8.2f\n",j,wor[i].num,wor[i].name,wor[i].gongzi);elseprintf("%3d%5s%5s%8.2f\n",j++,wor[i].num,wor[i].name,wor[i].gongzi);}fclose(fp1);}intadd(intn){inti,j;FILE*fp;if((fp=fopen("d://worker.txt","rb+"))!=NULL){printf("请输入要追加的员工数量,按回车键确认:");scanf("%d",&j);for(i=1;i<=j;i++){printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:\n",i);scanf("%s%s%f",&wor[n+i-1].num,&wor[n+i-1].name,&wor[n+i-1].gongzi);fwrite(&wor[n+i-1],sizeof(structworker),1,fp);}}sore(n+j);return(n+j);}voidmain(){intn=0;while(1){printf("*******************************************************************************\n");printf("*******************************************************************************\n");printf("*****************************欢迎使用员工工资管理系统**************************\n");printf("*******************************************************************************\n");printf("*********************************1输入员工信息*******************************\n");printf("*********************************2根据工资排序*******************************\n");printf("*********************************3增加新员工数据******************************\n");printf("*********************************4退出程序*********************************\n");printf("*******************************************************************************\n");printf("请输入你要选择的功能序号,按enter键确认:");intk;scanf("%d",&k);switch(k){case1:n=shuru();break;case2:sore(n);break;case3:n=add(n);break;case4:exit(0);}}}
if(wor[j].gongzi{strcpy(temp.num,wor[j].num);strcpy(temp.name,wor[j].name);temp.gongzi=wor[j].gongzi;strcpy(wor[j].num,wor[j+1].num);strcpy(wor[j].name,wor[j+1].name);wor[j].gongzi=wor[j+1].gongzi;strcpy(wor[j+1].num,temp.num);strcpy(wor[j+1].name,temp.name);wor[j+1].gongzi=temp.gongzi;}}if((fp1=fopen("d://sore.txt","wb"))==NULL){printf("打开文件失败!");exit(0);}printf("序号工号姓名工资\n");for(i=0;i{fwrite(&wor[i],sizeof(structworker),1,fp1);if(wor[i].gongzi==wor[i+1].gongzi)printf("%3d%5s%5s%8.2f\n",j,wor[i].num,wor[i].name,wor[i].gongzi);elseprintf("%3d%5s%5s%8.2f\n",j++,wor[i].num,wor[i].name,wor[i].gongzi);}fclose(fp1);}intadd(intn){inti,j;FILE*fp;if((fp=fopen("d://worker.txt","rb+"))!=NULL){printf("请输入要追加的员工数量,按回车键确认:");scanf("%d",&j);for(i=1;i<=j;i++){printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:\n",i);scanf("%s%s%f",&wor[n+i-1].num,&wor[n+i-1].name,&wor[n+i-1].gongzi);fwrite(&wor[n+i-1],sizeof(structworker),1,fp);}}sore(n+j);return(n+j);}voidmain(){intn=0;while(1){printf("*******************************************************************************\n");printf("*******************************************************************************\n");printf("*****************************欢迎使用员工工资管理系统**************************\n");printf("*******************************************************************************\n");printf("*********************************1输入员工信息*******************************\n");printf("*********************************2根据工资排序*******************************\n");printf("*********************************3增加新员工数据******************************\n");printf("*********************************4退出程序*********************************\n");printf("*******************************************************************************\n");printf("请输入你要选择的功能序号,按enter键确认:");intk;scanf("%d",&k);switch(k){case1:n=shuru();break;case2:sore(n);break;case3:n=add(n);break;case4:exit(0);}}}
for(i=0;i{fwrite(&wor[i],sizeof(structworker),1,fp1);if(wor[i].gongzi==wor[i+1].gongzi)printf("%3d%5s%5s%8.2f\n",j,wor[i].num,wor[i].name,wor[i].gongzi);elseprintf("%3d%5s%5s%8.2f\n",j++,wor[i].num,wor[i].name,wor[i].gongzi);}fclose(fp1);}intadd(intn){inti,j;FILE*fp;if((fp=fopen("d://worker.txt","rb+"))!=NULL){printf("请输入要追加的员工数量,按回车键确认:");scanf("%d",&j);for(i=1;i<=j;i++){printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:\n",i);scanf("%s%s%f",&wor[n+i-1].num,&wor[n+i-1].name,&wor[n+i-1].gongzi);fwrite(&wor[n+i-1],sizeof(structworker),1,fp);}}sore(n+j);return(n+j);}voidmain(){intn=0;while(1){printf("*******************************************************************************\n");printf("*******************************************************************************\n");printf("*****************************欢迎使用员工工资管理系统**************************\n");printf("*******************************************************************************\n");printf("*********************************1输入员工信息*******************************\n");printf("*********************************2根据工资排序*******************************\n");printf("*********************************3增加新员工数据******************************\n");printf("*********************************4退出程序*********************************\n");printf("*******************************************************************************\n");printf("请输入你要选择的功能序号,按enter键确认:");intk;scanf("%d",&k);switch(k){case1:n=shuru();break;case2:sore(n);break;case3:n=add(n);break;case4:exit(0);}}}
return(n+j);
voidmain()
intn=0;
while
printf("*******************************************************************************\n");
printf("*****************************欢迎使用员工工资管理系统**************************\n");
printf("*********************************1输入员工信息*******************************\n");
printf("*********************************2根据工资排序*******************************\n");
printf("*********************************3增加新员工数据******************************\n");
printf("*********************************4退出程序*********************************\n");
printf("请输入你要选择的功能序号,按enter键确认:
intk;
scanf("%d",&k);
switch(k)
case1:
n=shuru();break;
case2:
sore(n);break;
case3:
n=add(n);break;
case4:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1