C语言职工工资管理系统设计报告.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 职工工资 管理 系统 设计 报告
- 资源描述:
-
.. - ?C语言程序设计? 课程设计报告 分值 设计题目:职工工资管理系统 专业: 班级: 学号: XX: 信息工程学院 1 前言 工资管理系统是企业不可缺少的一局部,它利用计算机对员工工资进展统一管理,实现工资管理系统的系统化、规化和自动化,为企业提高工作效率。本程序旨在训练读者的根本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和构造数组的各种根本操作。本程序中涉及构造体、数组、文件等面的知识。 2 需求分析 2.1课程设计目的 学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。通过课程设计〔论文〕,提高学生综合运用所学知识来解决实际问题、使用文献资料、及进展科学实验或技术设计的初步能力,为毕业设计〔论文〕打根底。 2.2 课程设计任务 职工工资管理系统 功能设计要求 〔1〕输入记录:将每一个职工的XX、ID号以及根本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。 〔2〕显示记录:根据用户提供的记录或者根据职工XX显示一个或几个职工的各项工资和平均工资。 〔3〕修改记录:可以对数据文件的任意记录的数据进展修改并在修改前后对记录容进展显示。 〔4〕查找记录:可以对数据文件的任意记录的数据进展查找并在查找前后对记录容进展显示。 〔5〕删除记录:可删除数据文件中的任一记录。 〔6〕统计: (A)计算各项工资平均工资及总工资, (B)统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元) 以的工资职工人数及占总职工人数的百分比。(C)按字符表格形式打印全部职工工资信息表及平均工资(包括各项总的平均工资)。 〔7〕保存数据文件功能。 例如:职工工资信息表 ID号XX根本工资职务工资津贴医疗保险- 公积金- 总工资 01 望 1286 794 198 109 2034 02 明 1185 628 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 〔要求:1.源文件采用多文件的工程构造2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的容需要自学〕 2.3 设计环境 〔1〕WINDOWS 2000/2003/XP/7/Vista系统 〔2〕Visual C++ 2.4 开发语言 C语言 3 分析和设计 从主菜单中选择相对应的数字,使程序进入不同的程序模块,用switch实现其功能,程序共分为六个模块,分别为:主函数、Input( )函数(输入函数)、Display(T)显示函数〔计算职工工资信息并输入文件〕、Delete (T)删除函数〔从文件中读入信息并将其删除〕,Chick〔T〕查询模块,Change(T);修改模块,sum(T);统计模块 3.1 系统模块图 主菜单 查 找 功 能 显 示 功 能 删 除 功 能 输 入 功 能 退 出 程 序 添 加 功 能 修 改 功 能 按XX删除 按工号查找 修改工号 修改XX 修改职务工资 修改根本工资 修改医疗保险 修改津贴 修改公积金 按XX查找 按工号删除 图3.1 系统模块图 4 具体代码实现 #include"stdio.h" #include<stdlib.h> #include<conio.h> #include<string.h> // 头文件 static int n=0; // 定义静态全局变量,存储已经读入记录的条数。 typedef struct { char id[15]; /*ID号*/ char name[10]; /*XX*/ double base; /*根本工资*/ double position; /*职务工资*/ double allowance; /*津贴*/ double insurance; /*医疗保险*/ double fund; //公积金 double wage; //总工资 }Student; Student T[100]; int Menu_Select() { int c; do{ system("cls"); //清屏 printf("\t\t******************职工工资管理系统*********************\n"); printf("\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("\t\t# 1. 添加记录 #\n"); printf("\t\t# #\n"); printf("\t\t# 2. 显示记录 #\n"); printf("\t\t# #\n"); printf("\t\t# 3. 删除记录 #\n"); printf("\t\t# #\n"); printf("\t\t# 4. 查询记录 #\n"); printf("\t\t# #\n"); printf("\t\t# 5.修改记录 #\n"); printf("\t\t# #\n"); printf("\t\t# 6. 统计记录 #\n"); printf("\t\t# #\n"); printf("\t\t# 0. 退出程序 #\n"); printf("\t\t#############################################\n"); printf("\t\t\t请您选择(0-6)选择请输入:"); scanf("%d",&c); }while(c<0&&c>=7); return(c); } int Input(Student stu[]) { int i=0; char sign; while(sign!='n'&&sign!='N') { printf("\tID:"); scanf("\t%s",stu[n+i].id); printf("\tXX:"); scanf("\t%s",stu[n+i].name); printf("\t根本工资:"); scanf("\t%lf",&stu[n+i].base); printf("\t职务工资:"); scanf("\t%lf",&stu[n+i].position); printf("\t津贴:"); scanf("\t%lf",&stu[n+i].allowance); printf("\t医疗保险:"); scanf("\t%lf",&stu[n+i].insurance); printf("\t公积金:"); scanf("\t%lf",&stu[n+i].fund); stu[n+i].wage=stu[n+i].base +stu[n+i].position +stu[n+i].allowance +stu[n+i].insurance +stu[n+i].fund; ; printf("\n\t是否继续添加?(Y/N)"); scanf("\t%c",&sign); i++; } return(n+i); } void Display(Student stu[]) { int i; double m1=0,m2=0,m3=0,m4=0,m5=0; printf("\n\n~~~~~~~~~~~~~按照XX进展排序!\n\n"); printf("------------------------------------------------------------------------------\n"); //显示的格式 printf("ID XX根本工资职务工资津贴医疗保险公积金总工资\n"); printf("------------------------------------------------------------------------------\n"); for(i=0;i<n;i++) printf("%-6s%-8s%-11.2lf%-11.2lf%-11.2lf%-11.2lf%-11.2lf%-11.2lf\n",stu[i].id,stu[i].name,stu[i].base,stu[i].position,stu[i].allowance,stu[i].insurance,stu[i].fund,stu[i].wage); //-14d% -表示左对齐 14 表示十四个字节的位置缺乏用空格补齐 for(i=0;i<n;i++) { m1+=stu[i].base; m2+=stu[i].position; m3+=stu[i].allowance; m4+=stu[i].insurance; m5+=stu[i].fund; } if(n!=0) { printf("----------------------------------------------------------------------\n"); printf("各项平均工资:%-11.2lf%-11.2lf%-11.2lf%-11.2lf%-11.2lf\n\n",m1/n,m2/n,m3/n,m4/n,m5/n); } system("pause"); //系统函数停顿。 } int Delete(Student stu[]) { int i=0,j,x; char m[10]; printf("\t 1.全部删除\n"); printf("\t 2.根据ID号删除\n"); printf("\t请选择: "); scanf("%d",&x); if(x==1) { for(j=0;j<n;j++)//后一条记录覆盖前一条记录 { stu[j]=stu[n+1]; } n=0; printf("~~~~~已抹掉数据文件中的所有数据!\n"); system("pause"); } else if(x==2) { printf("\t请输入想删除记录中的ID号:"); scanf("%s",m); while(strcmp(stu[i].id,m)!=0&&i<n) i++; if(i==n) { printf("\t职工工资管理系统中没有此人!\n"); } else { for(j=i;j<n-1;j++)//后一条记录覆盖前一条记录 { stu[j]=stu[j+1]; } printf("\t\t\t已经成功删除!\n"); n=n-1; } } return (n); } void Chick(Student stu[]) { int m; printf("\t\n请选择查询式:\n"); //printf输出查询格式 printf("\t**************************************\n");//格式: printf("\t** 1--XX查询 **\n"); printf("\t** 2--ID查询 **\n"); printf("\t**************************************\n"); printf("请选择:"); scanf("%d",&m); while(m!=1&&m!=2) { printf("输入错误,请重新选择:"); scanf("%d",&m); } if(m==1) //此处对名字进展特殊处理 { char s[20]; int i=0; int f=0; printf("\t请输入想查询的XX:"); scanf("\t%s",s); while(strcmp(stu[i].name,s)!=0&&i<n ) { //名字如果有重复的也照常输出 i++; } if(i==n) { printf("\t职工工资管理系统中没有此人!\n"); return; } else { printf("\tID: %s\n",stu[i].id); printf("\tXX: %s\n",stu[i].name); printf("\t根本工资: %.2lf\n",stu[i].base); printf("\t职务工资: %.2lf\n",stu[i].position); printf("\t津贴: %.2lf\n",stu[i].allowance); printf("\t医疗保险: %.2lf\n",stu[i].insurance); printf("\t公积金: %.2lf\n",stu[i].fund); printf("\t总工资: %.2lf\n",stu[i].wage); } } if(m==2)//用ID作为索引查询 { char s[20]; int i=0; printf("\t请输入想查询的ID:"); scanf("\t%s",s); while(strcmp(stu[i].id,s)!=0&&i<n) i++; if(i==n) { printf("\t职工工资管理系统中没有此人!\n"); return; } printf("\tID: %s\n",stu[i].id); printf("\tXX: %s\n",stu[i].name); printf("\t根本工资: %.2lf\n",stu[i].base); printf("\t职务工资: %.2lf\n",stu[i].position); printf("\t津贴: %.2lf\n",stu[i].allowance); printf("\t医疗保险: %.2lf\n",stu[i].insurance); printf("\t公积金: %.2lf\n",stu[i].fund); printf("\t总工资: %.2lf\n",stu[i].wage); } } void Change(Student stu[]) { int m; printf("\t\n请选择修改式:\n"); //printf输出查询格式 printf("\t**************************************\n");//格式: printf("\t** 1--ID **\n"); printf("\t** 2--XX **\n"); printf("\t**************************************\n"); printf("请选择:"); scanf("%d",&m); while(m!=1&&m!=2) { printf("输入错误,请重新选择:"); scanf("%d",&m); } if(m==1) { int i=0; char m[10]; printf("\t请输入想修改的记录中人的ID:"); scanf("%s",m); while(strcmp(stu[i].id,m)!=0&&i<n) i++; if(i==n) { printf("\t职工工资管理系统中没有此人!\n"); return; } printf("\tID:"); scanf("\t%s",stu[i].id); printf("\tXX:"); scanf("\t%s",stu[i].name); printf("\t根本工资:"); scanf("\t%lf",&stu[i].base); printf("\t职务工资:"); scanf("\t%lf",&stu[i].position); printf("\t津贴:"); scanf("\t%lf",&stu[i].allowance); printf("\t医疗保险:"); scanf("\t%lf",&stu[i].insurance); printf("\t公积金:"); scanf("\t%lf",&stu[i].fund); stu[i].wage=stu[i].base +stu[i].position +stu[i].allowance +stu[i].insurance +stu[i].fund; printf("\t修改成功!"); } else if(m==2) { int i=0; char m[10]; printf("\t请输入想修改的记录中人的XX:"); scanf("%s",m); while(strcmp(stu[i].name,m)!=0&&i<n) i++; if(i==n) { printf("\t职工工资管理系统中没有此人!\n"); return; } printf("\tID:"); scanf("\t%s",stu[i].id); printf("\tXX:"); scanf("\t%s",stu[i].name); printf("\t根本工资:"); scanf("\t%lf",&stu[i].base); printf("\t职务工资:"); scanf("\t%lf",&stu[i].position); printf("\t津贴:"); scanf("\t%lf",&stu[i].allowance); printf("\t医疗保险:"); scanf("\t%lf",&stu[i].insurance); printf("\t公积金:"); scanf("\t%lf",&stu[i].fund); stu[i].wage=stu[i].base +stu[i].position +stu[i].allowance +stu[i].insurance +stu[i].fund; printf("\t修改成功!"); } } void WritetoText(Student stu[]) { int i=0; FILE *fp; /*定义文件指针*/ printf("\t保存到文件\n"); /*输入文件名*/ if((fp=fopen("output","w"))==NULL) { printf("\t无法翻开文件\n"); system("pause"); return; } while(i<n) { fprintf(fp,"%s %s %lf %lf %lf %lf %lf %lf\n",stu[i].id,stu[i].name,stu[i].base,stu[i].position,stu[i].allowance,stu[i].insurance,stu[i].fund,stu[i].wage); i++; } fclose(fp); /*关闭文件*/ printf("保存成功!\n"); } void Read(Student stu[]) { FILE *fp; int i; char filename[20]; strcpy(filename,"output"); if((fp=fopen(filename,"r"))==NULL) { printf("找不到%s文件!\n",filename); system("pause"); return ; } n=0; for(i=0;i<100&&!feof(fp);i++) //这里的100 是前面已经说明了最多可以存100条记录 { fscanf(fp,"%s %s %lf %lf %lf %lf %lf %lf \n",stu[i].id,&stu[i].name,&stu[i].base,&stu[i].position,&stu[i].allowance,&stu[i].insurance,&stu[i].fund,&stu[i].wage); n++; } fclose(fp); //qsort(stu,n,sizeof(Student),p);//调用qsort排序 printf("读取成功,文件%s中的所有信息已经读入!\n",filename); } int sum(Student stu[]) { int i; double s=0,m=0,n1,s1; for(i=0;i<n;i++) { m=0; m=stu[i].base + stu[i].position + stu[i].allowance; if(m>2000) { s++; } } printf("在职工工资前三项之和于2000的占总职工的百分比:%.2lf\n",s/n); return(n); system("pause"); } void Menu() { while(1) //让这里程序循环,否那么就退出程序了。 { switch(Menu_Select()) { case 1: printf("\n\t添加记录到职工工资管理系统\n"); /*添加记录*/ n=Input(T); WritetoText(T); system("pause"); break; case 2: printf("\n\t\t\t职工工资管理系统记录表\n"); Read(T); Display(T); /*显示记录*/ system("pause"); break; case 3: printf("\n\t从职工工资管理系统中删除记录\n"); n=Delete(T); WritetoText(T); /*删除记录*/ printf("\t"); system("pause"); /*按任意键继续*/ break; case 4: printf("\n\t在职工工资管理系统中查找记录\n"); Chick(T); /*查找记录*/ printf("\t"); system("pause"); break; case 5: printf("\n\t修改职工工资管理系统中的记录\n"); Change(T); WritetoText(T); /*修改数据*/ printf("\t"); system("pause"); break; case 6: printf("\n\t****职工工资管理系统统计人数****\n\n"); /*统计记录*/ sum(T); system("pause"); break; case 0: printf("\n\t\t\t欢送您再次使用本程序!\n"); /*完毕程序*/ printf("\n\t\t\n"); system("pause"); exit(0); } } } int main() { char ch[7]; int i,n; //设置的控制台输出的格式 printf ("\t\t **********职工工资管理系统!**********\n\n"); printf("\t\t\t 您好,欢送你进入本系统!\n\n"); printf("正在读取数据…………\n\n"); Read(T); Menu(); return 0; } 5 课程设计总结 5.1 程序运行结果 菜单界面: 图5-1-1 添加信息运行图: 图5-1-2 数据写入文件 图5-1-3 显示数据文件中的数据: 图5-1-4 查询模块,可以根据XX和ID进展查询: 图5-1-5 图5-1-6 修改模块,可以根据XX和ID进展相应的修改: 图5-1-7 图5-1-8 统计模块,统计在职工工资前三项之和于2000的占总职工的百分比: 图5-1-9 删除模块,课根据ID号进展删除,或者是全部删除: 图5-1-10 图5-1-11 5.2 课程设计体会 这一个星期以来,在开发这个工资管理系统过程中我深刻地体会到了自学能力的重要性。毕竟在学校学习到的知识是有限的,而在开发系统的过程中仅凭原有的一点点知识是远远不够的,只有翻阅大量的资料才能学到更多的知识,才能实现其预期的功能。在开发过程中,遇到困难是在所难免的,期间我跟我的指导教师和同学进展交流,从中明白了很多。开发一个系统,恒心和毅力也是不可缺少的,如果一遇到难题就心慌,想要放弃,那这样就不可能完成系统。同样,在开发过程当中,细心也是非常重要的,由于很多事项都要很注意才行,如果没有做到这一点,就会出错。 在开发过程当中,我学到很多,明白了做任事情都要有始有终,要敢于同困难作斗争,要养成独立思考的习惯。在以后的工作和生活当中,我将继续发扬这些好的作风。 在同学和教师的帮助下,根本完本钱次课程设计,根本到达了工资管理系统的要求。 参考文献 ?C语言程序设计教程?中国铁道 ?C语言课程设计案例精编?郭翠英 ?C程序设计教程?淑霞代世雄著 ?C程序设计语言?.:机械工业 ?C语言程序设计教程[M]?.第3版.高等教育 致 通过学习和练习C程序的设计根底,了解了一些关于C的知识。在设计过程中,好多展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




C语言职工工资管理系统设计报告.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/4510108.html