c语言职工工资管理系统课程设计说明书.doc
《c语言职工工资管理系统课程设计说明书.doc》由会员分享,可在线阅读,更多相关《c语言职工工资管理系统课程设计说明书.doc(17页珍藏版)》请在咨信网上搜索。
课程设计说明书 学 院、系: 专 业: 学 生 姓 名: 学 号: 设 计 题 目: 职工工资管理系统 起 迄 日 期: 指 导 教 师: 日期: 2017年5月12日 1 设计目的 本课程设计是采用C语言,在VC平台下设计年历显示系统,该系统运行在MS-DOS命令行模式下。本课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。 1) 进一步巩固和复习C程序设计的基础知识; 2) 培养学生结构化程序、模块化程序设计的方法和能力; 3) 了解软件的编制过程及各环节的具体内容; 4) 提高学生程序调试技巧、软件设计能力和代码规范化等素质; 提高学生分析问题、解决问题以及实际运用能力。 2 任务概述 功能设计要求: 1. 输入记录:将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录(系统应能建立一个新的数据文件或给已建立好的数据文件增加记录)。 2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。 3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。 4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。 5. 删除记录:可删除数据文件中的任一记录。 6. 统计: (按字符表格形式打印全部职工工资信息表及平均工资(包括各项总的平均工资)。 7.保存数据文件功能。 例如:职工工资信息表 ID号 姓名 基本工资 职务工资 津贴 医疗保险- 公积金- 总工资 01 张望 1286 794 198 109 135 2034 02 李明 1185 628 135 94 114 1740 03 王小民 895 438 98 64 73 1294 04 张效章 1350 868 210 116 150 2162 05 彭山 745 398 84 61 68 1098 ¼ ¼ ¼ ¼ ¼ ¼ ¼ ¼ 各项平均工资 1092.2 625.2 145 88.8 108 3 模块划分 图3.1 4 主要函数说明及其N-S图 主要函数说明: (1)输入记录:将每一个职工的姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个结构体。 (2)显示记录:根据职工姓名或者ID号显示一个或几个职工的各项工资。 (3)修改记录:对任何一个结构体中的成员按照要求进行修改,并显示修改前后结构体中的所有成员信息。 (4)查找记录:查找满足条件的职工信息,要求显示所有的职工成员信息。 (5)删除记录:删除满足条件的职工信息。 (6)统计:计算各项工资的总工资及平均工资。 N-S图: 1. 输入函数 图4.1 2. 查找函数 图4.2 3. 统计函数 图4.3 4.修改函数 图4.4 5. 删除函数 图4.5 6.显示函数 图4.6 7.保存数据文件 图4.7 8. 读取数据文件 图4.8 9.程序框图 图4.9 5 程序运行数据及其结果 1.输入职工信息的实现 图5.1.1 图5.1.2 2. 通过姓名显示职工信息 图5.2.1 图5.2.2 3.修改职员信息 图5.3 4.查找职员信息 图5.4.1 图5.4.2 5.删除职员信息 图5.5.1 图5.5.2 6.统计职员信息 图5.6 7.退出系统 图5.7 6 课程设计心得 通过这次的设计,练习熟悉了C语言的编译,有更深的体会和了解。对传值传址更为熟悉,对单链表的相关算法,如键立,插入,删除等也基本掌握,最基本的单链算法是后期学习的基础,调试程序作分析找错误时,画图细心分析每步的进程,提高了逻辑能力和思维能力。也经过这次的练习找到自已很多的不足,好的编程习惯很重要,可以节省不少的调试时间。 对基础的掌握很重要,这样可不不必时时查资料,向同学咨询。计算机编程要多多练习,这样才可以熟悉,可以加深记忆,提高编程的能力。 在编程的过程中,有时因某些错误难以改正而无奈,可以调试改正好后的成就感也让人愉悦。 大学的生活很松散,在编程过程中会觉得时间过得很快,专心的做一件事,也让人充实。 这也是学习计算机的乐趣所在,以后会加深在计算机方面的学习。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 计算机是门注重实践的学科,要学好计算机必须要多多的实践。这次练习让我更明白了这点。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际。 经过这段时间的上机实践学习,使我对c语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对c语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对c语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。 课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也 不容易记住,死记硬背是不可取的。然而要使用c语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。 学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。 一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓"环境"就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。 完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。 附录: #include<stdio.h> #include<string.h> #define N 100 struct worker { int ID; char name[20]; float base; //base 基本工资 float rate; //rate 职务工资 float subsidy; //subsidy 岗位津贴 float medicare; //medicare 医疗保险 float fund; //fund 公积金 float total; //tootal 总工资 }; //输入函数,输入职工的信息 int input(struct worker work[],int a) { int i; printf("请输入员工人数:\n"); scanf("%d",&a); printf("输入格式为:\nID号 姓名\n基本工资 职务工资 岗位津贴 医疗保险 公积金\n"); for(i=0;i<a;i++) { printf("请输入第%d个员工信息 ",i+1); scanf("%d %s",&work[i].ID,work[i].name); scanf("%f %f %f %f %f",&work[i].base,&work[i].rate,&work[i].subsidy,&work[i].medicare,&work[i].fund); } printf("输入职工信息成功!!!!!!!!!!!!!!!!!!!!!!!!" ); return a; } void read(struct worker work[],int a){ FILE *fp; if((fp=fopen("zggzxx.txt","r"))==NULL) printf("打开文件失败"); else{ for(int i=0;i<N;i++) fscanf(fp,"%d %s %f %f %f %f %f",&work[i].ID,work[i].name,&work[i].base,&work[i].rate,&work[i].subsidy,&work[i].medicare,&work[i].fund); fclose(fp); } } void save(struct worker work[],int a){ FILE *fp; if((fp=fopen("zggzxx.txt","w"))==NULL){ printf("打开文件失败!\n"); }else{ for(int i=0;i<N;i++) fprintf(fp,"%d %s %f %f %f %f %f\n",work[i].ID,work[i].name,work[i].base,work[i].rate,work[i].subsidy,work[i].medicare,work[i].fund); printf("保存文件信息成功!!!!") ; } fclose(fp); } //显示,按要求显示需要显示的职工信息 void xianshi(struct worker work[],int a) { int i,select,t; char * next,r[20]; printf("\n 1. 按姓名查找\n"); printf("\n 2. 按ID查找\n"); scanf("%d",&select); switch(select) { case 1: printf("请输入要显示的姓名:\n"); scanf("%s",r); next=r; printf("ID号 姓 名 基本工资 职务工资 岗位津贴 医疗保险 公积金\n"); for(i=0;i<a;i++) if(strcmp(next,work[i].name)==0) printf("%d %s %f %f %f %f %f\n",work[i].ID,work[i].name,work[i].base,work[i].rate,work[i].subsidy,work[i].medicare,work[i].fund); break; case 2: printf("请输入要查询的ID:\n"); scanf("%d",&t); printf("ID号 姓 名 基本工资 职务工资 岗位津贴 医疗保险 公积金\n"); for(i=0;i<a;i++) if(t==work[i].ID) printf("%d %s %f %f %f %f %f\n",work[i].ID,work[i].name,work[i].base,work[i].rate,work[i].subsidy,work[i].medicare,work[i].fund); break; } } //修改函数,修改需要修改的职工信息 void xiugai(struct worker work[],int a) { int i,ID,t; printf("请输入要修改员工的ID:\n"); scanf("%d",&ID); printf("修改前职工的信息:\n"); printf("ID号 姓 名 基本工资 职务工资 岗位津贴 医疗保险 公积金\n"); for(i=0;i<a;i++) printf("%d %s %f %f %f %f %f\n",work[i].ID,work[i].name,work[i].base,work[i].rate,work[i].subsidy,work[i].medicare,work[i].fund); for(i=0;i<a;i++) if(ID==work[i].ID) t=i; printf("请输入该职工的信息:"); printf("输入格式为:\nID号 姓名\n基本工资 职务工资 岗位津贴 医疗保险 公积金\n"); scanf("%d %s",&work[t].ID,work[t].name); scanf("%f %f %f %f %f",&work[t].base,&work[t].rate,&work[t].subsidy,&work[t].medicare,&work[t].fund); printf("修改后职工的信息:\n"); printf("ID号 姓 名 基本工资 职务工资 岗位津贴 医疗保险 公积金\n"); for(i=0;i<a;i++) printf("%d %s %f %f %f %f %f\n",work[i].ID,work[i].name,work[i].base,work[i].rate,work[i].subsidy,work[i].medicare,work[i].fund); } //查找函数,查找员工信息,并输出其信息 void search(struct worker work[],int a) { int i,select,t; char * next,r[20]; printf("\n 1. 按姓名查找\n"); printf("\n 2. 按ID查找\n"); scanf("%d",&select); switch(select) { case 1: printf("请输入要显示的姓名:\n"); scanf("%s",r); next=r; printf("ID号 姓 名 基本工资 职务工资 岗位津贴 医疗保险 公积金\n"); for(i=0;i<a;i++) if(strcmp(next,work[i].name)==0) printf("%d %s %f %f %f %f %f\n",work[i].ID,work[i].name,work[i].base,work[i].rate,work[i].subsidy,work[i].medicare,work[i].fund); break; case 2: printf("请输入要查询的ID:\n"); scanf("%d",&t); printf("ID号 姓 名 基本工资 职务工资 岗位津贴 医疗保险 公积金\n"); for(i=0;i<a;i++) if(t==work[i].ID) printf("%d %s %f %f %f %f %f\n",work[i].ID,work[i].name,work[i].base,work[i].rate,work[i].subsidy,work[i].medicare,work[i].fund); break; } } //删除函数,删除员工信息 int dele(struct worker work[],int a) { int i,select,t; char * next,r[20]; printf("\n 1. 按姓名查找\n"); printf("\n 2. 按ID查找\n"); scanf("%d",&select); switch(select) { case 1: printf("请输入要显示的姓名:\n"); scanf("%s",r); next=r; printf("ID号 姓 名 基本工资 职务工资 岗位津贴 医疗保险 公积金\n"); for(i=0;i<a;i++) if(strcmp(next,work[i].name)==0) printf("%d %s %f %f %f %f %f\n",work[i].ID,work[i].name,work[i].base,work[i].rate,work[i].subsidy,work[i].medicare,work[i].fund); printf("您确定要删除该职工信息吗?(请输入'y'或'n'):"); getchar(); if((getchar()=='y')||(getchar()=='Y')) { work[i]=work[i+1]; a--; } case 2: printf("请输入要查询的ID:\n"); scanf("%d",&t); printf("ID号 姓 名 基本工资 职务工资 岗位津贴 医疗保险 公积金\n"); for(i=0;i<a;i++) if(t==work[i].ID) printf("%d %s %f %f %f %f %f\n",work[i].ID,work[i].name,work[i].base,work[i].rate,work[i].subsidy,work[i].medicare,work[i].fund); printf("您确定要删除该职工信息吗?(请输入'y'或'n'):"); getchar(); if((getchar()=='y')||(getchar()=='Y')) { work[i]=work[i+1]; a--; } } return a; } //统计函数,统计员工的信息 void tongji(struct worker work[],int a) { int i=0,j; float add[5]; for(i=0;i<a;i++) { add[0]+=work[i].base; add[1]+=work[i].rate; add[2]+=work[i].subsidy; add[3]+=work[i].medicare; add[4]+=work[i].fund; work[i].total=work[i].base+work[i].rate+work[i].subsidy+work[i].medicare+work[i].fund; } for(i=0;i<a;i++){ printf("ID号 姓 名 基本工资 职务工资 岗位津贴 医疗保险 公积金\n"); printf("%d %s %f %f %f %f %f\n",work[i].ID,work[i].name,work[i].base,work[i].rate,work[i].subsidy,work[i].medicare,work[i].fund,work[i].total); } printf("各项平均工资:%f %f %f %f %f\n",add[0]/a,add[1]/a,add[2]/a,add[3]/a,add[4]/a); } int main() { struct worker work[100],*p=work; int a=0,select,i=0; printf("您是首次登陆本系统,请先输入员工信息:\n"); read(p,a); do{ i++; }while(work[i].ID!=0); a=i-1; do { //打印菜单选项 printf("\n **************职工工资管理系统**************\n"); printf("\n 1. 输入职工信息\n"); printf("\n 2. 通过姓名显示职工信息\n"); printf("\n 3. 修改职工信息\n"); printf("\n 4. 查找信息\n"); printf("\n 5. 删除信息\n"); printf("\n 6. 统计信息\n"); printf("\n 0. 退出系统\n"); printf("\n ********************************************\n"); printf("请输入您选择的操作:"); scanf("%d",&select); switch(select) { case 1: if (a==0) a=input(p,a); else printf("系统已有职工的工资记录,再次输入将覆盖原记录,要继续吗?(请输入'y'或'n'):"); getchar(); if((getchar()=='y')||(getchar()=='Y')) a=input(p,a);save(p,a);break; case 2: read(p,a); xianshi(p,a);break; case 3: read(p,a); xiugai(p,a);save(p,a);break; case 4: read(p,a); search(p,a);break; case 5: read(p,a); a=dele(p,a);save(p,a);break; case 6: read(p,a); tongji(p,a);break; case 0:printf("您将准备退出系统!!!"); break; } printf("您要退出系统吗?(请输入'y'或'n'):"); getchar(); if((getchar()=='y')||(getchar()=='Y')) break; } while(select); printf("职工工资管理系统本次运行结束!\n"); return 0; }- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 职工工资 管理 系统 课程设计 说明书
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文