职工管理系统2009630.doc_第1页
职工管理系统2009630.doc_第2页
职工管理系统2009630.doc_第3页
职工管理系统2009630.doc_第4页
职工管理系统2009630.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

重庆科技学院本科生课程设计 设计内容与要求11.1 设计内容在计算机中建立相应的数据结构,利用程序实现工资的输入、查询、增、删、改、统计、输出等操作。1.2 设计要求1、 设计一个能够记录公司员工工资的数据结构(包括:员工号、姓名、基本工资、补贴金额、奖励金额、扣除金额、实发工资等)、文件(文件作为工资数据的保存介质)。注:,其中实发工资=基本工资补贴金额奖励金额-扣除金额2、 应用文件保存工资管理数据。3、 新增:能将所有输入的员工工资数据保存到文件中,并可选择继续输入或退出。4、 查找:输入员工的员工号,并在文件中查找5、 若找到,则显示该员工的工资详情否则提示未找到。无论查找成功否,应还可选择继续查找或退出。6、 删除:输入员工的员工号,并在文件中查找若找到,提示是否确定删除若选择是,则删除文件中该员工信息若选择否,则取消,否则提示无此员工信息无论查找成功否,应还可选择继续查找或退出。7、 修改:输入员工的员工号,并在文件中查找若找到,显示该员工的所有信息,并可进行输入。完成后将现输入的内容覆盖原内容保存到文件中。否则提示无此员工信息无论查找成功否,应还可选择继续查找或退出。统计:分类汇总并输出所有员工的基本工资、补贴金额、奖励金额、扣除金额、实发工资的总金额和平均金额。如:基本工资、补贴金额、奖励金额、扣除金额、实发工资 总和 12000 1300 1400 1500 13200 平均 1200 130 140 150 1320 人数: 108、 退出:退出程序2概要设计22.1 信息的存储运行编写好的程序,通过提示,输入人员的员工号、姓名、基本工资、补贴金额、奖励金额、扣除金额等等信息,再根据提示反复输入,并以文本文件形式保存。 2.2职工工资信息的设计需定义一个结构体类型,用来表示职工的各种信息,如下:struct worker int gonghao;char name20;double jiben;double butie;double jiangli;double kouchu;double jieyu; /职工数据信息结构体2.3主函数设计其功能实现从屏幕输出6个选择: 1新增职工信息 2. 查询职工信息 3.删除职工信息 4.修改职工信息 5.浏览职工信息 0.退出程序,从中选择任一一个来进行职工工资信息的管理。2.4信息新增的设计此模块通过void xinzeng( );函数实现。从键盘输入职工工资信息,以文本文件将这些信息写入文本。先建立一个文件指针(FILE *fp),打开文件,输入信息,写入文件,关闭文件。2.5信息查询的设计此模块通过void chaxun()。程序将从文件中读出先前出入的个人通讯信息,从键盘输入要查询的职工工号,再从屏幕上输出您要查找的信息。提示继续与否。2.6信息删除的设计此模块通过void shanchu( )函数实现。程序将从文件中读出先前出入的个人通讯信息,从键盘输入要查询的职工工号,从屏幕上输出所要删除的职工工号,根据操作提示,然后删除信息,返回保存。2.7信息修改的设计此模块通过void xiugai( )函数实现。程序将从文件中读出先前出入的个人通讯信息,从屏幕上输出:请输入您要修改的人职工工号,然后显示要修改的职工工资信息,并根据提示继续输入需修改后的信息,这些信息将以文本形式写入文本。再将修改后的所有职工工资信息一起写入文件并保存。2.8信息统计的设计此模块通过void tongji( )函数实现。分类汇总并输出所有员工的基本工资、补贴金额、奖励金额、扣除金额、实发工资的总金额和平均金额。2.9信息浏览的设计此模块通过void liulan( )函数实现,只需选择显示信息菜单即可显示全部职工工资信息。3 详细设计3.1 主函数(1)函数说明先从屏幕上显示7个选项,以供选择。第一个选项调用了xinzeng()函数、第二个调用了chaxun( )函数,第三个选项调用了shanchu( )函数,第四个调用了xiugai( )函数,第五个选项调用tonji( )函数,第六个选项调用liulan( )函数从而实现学生信息的添加、查询、删除、修改、统计、浏览等功能;最后一个选项实现退出的功能。 (2)函数接口函数入口:从主函数main()开始。函数出口:从主函数main()的switch()开关结构进入,即n几个的值通过break跳出for循环进入主界面,然后退出主函数main(),即退出主函数。函数调用关系:主函数main()不能被其他函数调用,但可以调用其他任意函数。(3)流程图 主函数胡流程图(4)函数代码见附录3.2主菜单函数(1)函数说明此函数用于功能选择。1.若文件不存在 用于创建文件并只能执行新增功能和存入文件,进入功能选择。 2.若文件存在 用于打开文件读入数据,进入功能选择。(2)流程图(3)函数代码:见附录3.3新增信息(1)函数说明 此函数用于输入职工工资信息并存入文件。先定义一个文件指针FILE(*fp),然后用fopen()函数打开文件,从键盘输入数据,用fwrite函数将信息写入到文件中,最后用fclose()函数关闭文件。屏幕上会显示“请输入y继续其他功能”您可以根据您的需要进行选择然后进行下面的操作。(2)流程图(3)函数代码见附录3.4查询信息(1)函数说明此函数用于查找职工工资信息,屏幕上会显示“1.请输入您要查找的人员姓名,2.返回”,从键盘输入,屏幕上会显示您要查找的学生信息,最后用fclose()函数关闭文件。(2)流程图(3)函数代码见附录3.5删除信息(1) 函数说明此函数用于删除职工工资信息,从屏幕上输出提示“1.请输入要删除的职工工号 0.返回保存”,输入后显示该职工工资信息,提示操作。用finput()函数将现在的信息写入到磁盘中,最后用fclose()函数关闭文件。(2)流程图(3)函数代码见附录3.6修改信息(1)函数说明此函数用于修改信息。屏幕上会显示1.请输入您要修改的职工工号0.返回保存:,从键盘输入工号,屏幕上将会显示要修改的职工工资信息 用finput()函数将现在的信息写入到磁盘中,最后用fclose()函数关闭文件。提示操作。(1) 流程图(3)函数代码见附录3.7统计信息(1)函数说明分类汇总并输出所有员工的基本工资、补贴金额、奖励金额、扣除金额、实发工资的总金额和平均金额。(2)流程图(3)函数代码见附录3.8浏览信息(1)函数说明显示全部职工工资信息。(2)流程图(3)函数代码见附录4 调试分析4.1 问题解决事实上单个模块的调试与测试是与整体的调试与测试分不开的,下面对这这个过程的调试方法与测试方法做简单的介绍。1调试方法 打开Microsoft Visual C+ 6.0,先将个功能函数的内容清空,只保留主函数main(),然后编译main()是否有错,如果无错,在连接、运行。确认main()无误,然后加入menu()与xinzeng()一起调试,xinzeng()中注意读取文件与写入文件,都是以文本形式进行操作。若menu()与xinzeng()编译连接无误后,再加入chaxun(),这样依次检查其他函数。当所有的功能函数都加上调试正确无误后在进入程序的测试阶段。首先,由于所要将输入通讯信息要以文本文件的形式进行存储,所以在添加信息和查询信息就遇到了麻烦,读取信息的时候显示的全部是乱码,是因为在输入和读取“姓名”等信息的时候是以%s的形式。在同学和老师的帮助下对程序进行了反复的修改,最终达到了以文本存储和读取的目的。其次,就是在对存储的信息进行删除的时候是以对工号付0值实现的,而在全部显示存储的信息时用if()语句判断进行信息存储和屏幕显示,最后是在仔细查询及反复实践的基础上完成了对程序的修改。最后就是在全部显示文件中存储的信息时,而以免对最后一个信息进行读取两次,而采用if(fscanf(fp,%c,c)!=EOF)以达到全部显示的目的。测试结果.1新增信息文件输入1.输入职工工资信息,运行结果如下:1.无文件存在时的界面:2.选1按回车键即:3. 选1按回车键即:4. 按提示操作,选0按回车键即:可见主菜单改变。5.选6浏览看是否存入数据:可见数据已存入文件。5.2查询职工信息1.主菜单选2进入查询功能:按提示操作。可见查找功能得以实现。.3删除职工信息1. 主菜单选3进入删除功能:按提示操作:可见操作是将工号为1的删除,而未对2删除。为验证之则返回进行浏览功能操作:可见该功能操作是成功的。.4修改职工信息1. 主菜单选3进入修改功能:按提示操作:改操作对2作修改未对3修改,为验证之则返回进行浏览功能操作:可见该功能操作是成功的。.5统计职工信息1. 主菜单选3进入修改功能:按提示操作:可见该功能操作是成功的。.5浏览职工信息在以上步骤中可知是成功的。总结本次课程设计的要求是建立职工管理系统,输入员工号、姓名、基本工资、补贴金额、奖励金额、扣除金额、实发工资等基本信息,然后对职工工资信息进行显示、查找、添加、统计、修改及删除。虽然我对该实验的内容及要求都有所了解,在对程序的大体规划上还很清楚,但是在编写程序时思维却很混乱,由于在对职工工资信息的输入、查询、修改和删除中要求逻辑思维严密谨慎,所以在本次程序的编写中不能独立完成,而是在老师的帮助下,对每一个步骤的深入思考才得出了结果。通过这次的专题实验让我意识到,自己在该门学科中还有很多不懂的地方,其主要原因是上机操作太少,对一些细节考虑还不够全面,今后我会努力学习本课程,要求自己能熟练掌握程序的编写。附录职工管理系统C语言源代码:#include#include#includestruct worker int gonghao;char name20;double jiben;double butie;double jiangli;double kouchu;double jieyu; /职工数据信息结构体int input(struct worker *p,int j);/职工数据信息录入int output_0(struct worker *p);/职工数据信息屏幕输出int foutput(FILE *fp,struct worker *p);/职工数据信息存入文件int finput(FILE *fp,struct worker *p);/职工数据信息读出文件void menu();/主菜单void xinzeng();/新增功能函数void chaxun();/查询功能函数void shanchu();/删除功能函数void xiugai();/修改功能函数void tongji();/统计功能函数int liulan();/浏览功能函数struct worker w10000;int i,n,j,m,k=0;char c5;FILE *fp;int main()/主函数for(;)menu();/主菜单switch(n)case 1:xinzeng();break;/新增功能case 2:chaxun();break;/查询功能case 3:shanchu();break;/删除功能case 4:xiugai();break;/修改功能case 5:tongji();break;/统计功能case 6:liulan();break;/浏览功能case 0:return 0;default:/退出printf(t输入有误?);printf(*按0返回 );scanf(%d,&j);if(!j)break;break;return 0;int input(struct worker *p,int m)/判断输入m做为工号形参输入p-gonghao=m;printf(n姓名: );scanf(%s,p-name);printf(基本工资: );scanf(%lf,&p-jiben);printf(补贴金额: );scanf(%lf,&p-butie);printf(奖励金额: );scanf(%lf,&p-jiangli);printf(扣除金额: );scanf(%lf,&p-kouchu);p-jieyu=p-jiben+p-butie+p-jiangli-p-kouchu;printf(-);return 0;int output_0(struct worker *p)printf(工号 姓名 基本工资 补贴金额 奖励金额 扣除金额 工资结算n);printf(%3d,p-gonghao);printf(%8s,p-name);printf(%12.2lf,p-jiben);printf(%12.2lf,p-butie);printf(%12.2lf,p-jiangli);printf(%12.2lf,p-kouchu);printf(%12.2lfn,p-jieyu);return 0;int finput(FILE *fp,struct worker *p)fscanf(fp,%dn,&p-gonghao);fscanf(fp,%sn,p-name);fscanf(fp,%lfn,&p-jiben);fscanf(fp,%lfn,&p-butie);fscanf(fp,%lfn,&p-jiangli);fscanf(fp,%lfn,&p-kouchu);fscanf(fp,%lfn,&p-jieyu);return 0;int foutput(FILE *fp,struct worker *p)fprintf(fp,%dn,p-gonghao);fprintf(fp,%sn,p-name);fprintf(fp,%lfn,p-jiben);fprintf(fp,%lfn,p-butie);fprintf(fp,%lfn,p-jiangli);fprintf(fp,%lfn,p-kouchu);fprintf(fp,%lfn,p-jieyu);return 0;void menu()system(cls);printf(lijiachunn);printf(/职工工资管理系统/n);printf(/tt1.新增员工信息ttt/n);fp=fopen(worker.txt,a);/在无文件时创建文件fclose(fp);fp=fopen(worker.txt,r);if(fscanf(fp,%c,c)!=EOF)/判断文件是否存有数据fclose(fp);printf(/tt2.查找员工信息ttt/n);printf(/tt3.删除员工信息ttt/n);printf(/tt4.修改员工信息ttt/n);printf(/tt5.统计 ttt/n);printf(/tt6.浏览 ttt/n);printf(/tt0.退出 ttt/n);printf(/*注:员工号为110000./n);printf(请输入选项(06): n);fp=fopen(worker.txt,r);/将职工信息读出文件for(i=0;i+)if(feof(fp)break;finput(fp,&wi); k=i;fclose(fp);scanf(%d,&n);system(cls);else/文件无信息是只有选1有效printf(请输入选项1: n);while(1)scanf(%d,&n);if(n=1)break;elseprintf(请输入选项1: n);continue;void xinzeng()for(;)printf(tt1.请输入所新增员工工号n);printf(tt0.返回保存n请输入选项n);scanf(%d,&n);if(n=1)j=1;for(i=k;i10000;i+)printf(请输入新增员工工号: n);scanf(%d,&n);for(m=0;mi;m+)if(n=wm.gonghao)printf(该工号已存在n);j=0;if(j)input(&wi,n);printf(按1继续*按0返回n);scanf(%d,&j);if(j)continue;break;j=i+1;else fp=fopen(worker.txt,w);for(i=0;ij;i+)if(wi.gonghao!=0)foutput(fp,&wi);fclose(fp);break;void chaxun()for(;)printf(nntt1.请输入所查询员工工号n);printf(tt0.返回n请输入选项n);scanf(%d,&n);if(n=1)for(i=0;ik;i+)for(;)printf(请输入所查询员工工号: );scanf(%d,&n);for(i=0,m=0;ik;i+)if(n=wi.gonghao)output_0(&wi);break;m+;if(m=k)printf(该工号不存在n);printf(tt1.继续ntt0.返回n);scanf(%d,&j);if(j)continue;break;break;else break;void shanchu()for(;)printf(nt1.请输入所删除员工工号n);printf(t0.返回保存n请输入选项: );scanf(%d,&n);if(n=1)for(;)for(i=0;ik;i+)j=1;for(i=0;ik;i+)printf(请输入所删除员工工号: );scanf(%d,&n);for(i=0,j=0;ik;i+)if(n=wi.gonghao)output_0(&wi);break;j+;if(j=k)printf(该工号不存在n);break;elseprintf(t1.确实删除该员工n);printf(t0.返回n请输入选项: );scanf(%d,&j);if(j)wi.gonghao=0;break;elsebreak;break;printf(t1.继续nt0.返回n);scanf(%d,&n);if(n)continue;elsebreak;else fp=fopen(worker.txt,w);for(i=0;ik;i+)if(wi.gonghao!=0)foutput(fp,&wi);fclose(fp);break;void xiugai()for(;)printf(t1.请输入所修改员工工号n);printf(t0.返回n请输入选项n);scanf(%d,&n);if(n=1)for(;)for(i=0;ik;i+)j=1;for(i=0;ik;i+)printf(请输入所修改员工工号: );scanf(%d,&n);for(i=0,j=0;ik;i+)if(n=wi.gonghao)output_0(&wi);break;j+;if(j=k)printf(该工号不存在n);break;elseprintf(nt1.确实修改该员工n);printf(nt0.返回n请输入选项: );scanf(%d,&j);if(j)input(&wi,n);break;elsebreak;break;printf(nt1.继续nt0.返回保存n);scanf(%d,&n);if(n)continue;elsefp=fopen(worker.txt,w);for(i=0;ik;i+)if(wi.gonghao!=0)foutput(fp,&wi);fclose(fp);break;else break;void tongji()double sjiben=0;double sbutie=0;double sjiangli=0;double skouchu=0;doub

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论