某企业职工工资管理系统(1)

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