欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言课程设计-职工工资管理系统(25页).doc

    • 资源ID:36395313       资源大小:524KB        全文页数:24页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言课程设计-职工工资管理系统(25页).doc

    -C语言课程设计-职工工资管理系统-第 22 页课程设计报告设计名称: 职工工资管理系统 姓 名: 学 号: 专业班级: 计算机161 系 (院): 设计时间: 2017.06.122017.06.23 设计地点: 机房、图书馆、宿舍 成绩:指导教师评语: 签名: 年 月 日1、课程设计目的 C语言程序设计课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C语言的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C语言程序设计这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。2、课程设计任务与要求:本次课程设计利用C语言程序设计课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。要求:1、对系统进行功能需求分析2、设计合理的数据结构和系统框架3、编程简练,程序功能齐全,能正确运行4、说明书、流程图要清楚5、课题完成后必须按要求提交课程设计报告任务:职工工资管理系统实现功能:(1)输入记录:将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。(2)显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。(3)修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。(4)查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。(5)删除记录:可删除数据文件中的任一记录。 (6)统计: (A)计算各项工资平均工资及总工资, (B)统计符合指定条件(如职工工资前三项之和在3000元以上、30002000元、20001000元) 以内的工资职工人数及占总职工人数的百分比。(C)按字符表格形式打印全部职工工资信息表及平均工资(包括各项总的平均工资)。 (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概要设计在我设计的程序中,首先在首页有一个封面,进入系统之后有包括了六个模块进行选择,分别是:输入模块、增加模块、显示模块、修改模块、删除模块、查找系统模块。这六个模块中增加,删除,查找和修改都是独立分开作为子函数的,另外三个则是作为switch语句中的一部分,通过switch语句,把六大模块联系了起来,同时,为了实现多次使用这六大模块,就在switch语句外加了while循环。图1 整体框架详细设计 结束删除职工信息统计职工工资选择6选择4百分比平均工资修改职工信息选择5选择3选择2选择1查找职工信息输入职工信息显示职工信息按姓名按工号菜单界面开始选择操作图2 录入函数图3 修改函数图5 统计函数图4 删除函数图6 查询函数4课程设计成果程序源代码#include<stdio.h>#include<string.h>struct clerk int num; char name20; int jbgz; int zwgz; int jt; int yb; int gjj; int total; em100; void menu(); /菜单界面void input(); /录入void save(int); /保存文件void display(); /显示职工信息 void del(); /删除 void search(); /查询void search_num(); /按职工号查询 void search_name(); /按姓名查询 void modify(); /修改 void sta(); /统计 void start(); /开始界面int main()/主函数 int n,button; char a; start();getch(); menu(); do printf(" 功能选择(1-6):"); scanf("%d",&n); if(n>=1&&n<=6) button=1; break; else button=0; printf("您输入有误,请重新选择!"); while(button=0); while(button=1) switch(n) case 1: input();break; case 2: display();break; case 3: search();break; case 4:del();break; case 5:modify();break; case 6:sta();break; default :break; getchar(); printf("n"); printf("按Enter键继续n"); getch(); system("cls"); /清屏 menu(); /调用菜单函数 printf(" 功能选择(1-6):"); scanf("%d",&n); printf("n"); return 0;void start() /开始界面 system("cls"); printf("nnnnnn");printf(" *n");printf(" *欢迎进入工资管理系统*n");printf(" *nnnn");printf("nnnnntttttttttt 班级:计算机nnn"); printf("tttttttttt 姓名:某某某n");printf("nnnnntttttt *按Enter键进入*n");void menu() /菜单界面system("cls");printf("ntttttt>>>>>菜单<<<<<nnnn");printf("ttttt>>>>> 1 输入 t 2 显示 <<<<< nn");printf("ttttt>>>>> 3 查找 t 4 删除 <<<<<nn");printf("ttttt>>>>> 5 修改 t 6 统计 <<<<<nn");printf("nnnttt 注意:首次使用 请先输入数据 nnn");void input() /录入 int i,m; system("cls"); printf("职工人数(1-100):n"); scanf("%d",&m); for (i=0;i<m;i+) printf("请输入职工号: "); scanf("%d",&emi.num); printf("请输入姓名: "); scanf("%s",&emi.name); getchar(); printf("请输入基本工资: "); scanf("%d",&emi.jbgz); printf("请输入职务工资: "); scanf("%d",&emi.zwgz); printf("请输入津贴: "); scanf("%d",&emi.jt); printf("请输入医疗保险: "); scanf("%d",&emi.yb); printf("请输入公积金: "); scanf("%d",&emi.gjj); emi.total=(emi.jbgz)+(emi.zwgz)+(emi.jt)-(emi.yb)-(emi.gjj);/计算总工资 printf("n"); printf("n创建完毕!n"); save(m);/保存职工人数mvoid save(int m) /保存文件 int i; FILE*fp; /声明fp是指针,用来指向FILE类型的对象 if (fp=fopen("clerk.txt","wb")=NULL) /打开职工列表文件为空 printf ("打开失败n"); exit(0); for (i=0;i<m;i+) /将内存中职工的信息输出到磁盘文件中去 if (fwrite(&emi,sizeof(struct clerk),1,fp)!=1)/写入数据块 printf("文件读写错误n"); fclose(fp);/关闭文件 int load() FILE*fp; int i=0; if(fp=fopen("clerk.txt","rb")=NULL) printf ("cannot open filen"); exit(0); else do fread(&emi,sizeof(struct clerk),1,fp); /读取 i+; while(feof(fp)=0); /检测文件结束符 fclose(fp); return(i-1);/返回人数void display() /显示职工信息 int i,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0; int m=load(); system("cls"); printf("职工号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 n"); for(i=0;i<m;i+) /m为输入部分的职工人数 printf("n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",emi.num,emi.name,emi.jbgz,emi.zwgz,emi.jt,emi.yb,emi.gjj,emi.total); sum0+=emi.jbgz; sum1+=emi.zwgz; sum2+=emi.jt; sum3+=emi.yb; sum4+=emi.gjj; sum5+=emi.total; printf("nn职工平均工资为: %-8d %-8d %-8d %-8d %-8d %-8dn", sum0/m, sum1/m, sum2/m,sum3/m,sum4/m,sum5/m); void del() /删除 int m=load(); int i,j,n,t,button; char name20;printf("n 原来的职工信息:n"); display(); /显示删除前的员工信息 printf("n");printf("按姓名删除:n"); scanf("%s",name); for(button=1,i=0;button&&i<m;i+)/主函数中确定button=1时各函数才可以被调用 if(strcmp(emi.name,name)=0)/按员工姓名查找到某员工 并调出其资料 printf("n此人原始记录为:n");/显示选定员工的信息 printf("职工号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 n"); printf("n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",emi.num,emi.name,emi.jbgz,emi.zwgz,emi.jt,emi.yb,emi.gjj,emi.total); printf("n确定删除 请按1,不删除请按0n"); scanf("%d",&n); if(n=1) for(j=i;j<m-1;j+)/从第i项开始 将后一项的各成员的值赋给前一项各对应的成员 完成对第i项的删除 strcpy(emj.name,emj+1.name); emj.num=emj+1.num; emj.jbgz=emj+1.jbgz; emj.zwgz=emj+1.zwgz; emj.jt=emj+1.jt; emj.yb=emj+1.yb; emj.gjj=emj+1.gjj; emj.total=emj+1.total; button=0; if(!button)/button=0表明删除已完成 m=m-1;/总员工数减少一人 else printf("n查无此人!n"); printf("n 删除后的所有职工信息:n"); save(m); /保存删除后的职工信息 display(); /显示删除后的职工信息 printf("n继续删除请按1,不再删除请按0n"); scanf("%d",&t); switch(t) case 1:del();break; case 0:break; default :break;void search()/查询 int t,button; system("cls"); do printf("n按1 按工号查询n按2 按姓名查询n按3 回主菜单n"); scanf("%d",&t); if(t>=1&&t<=3) button=1; break; else button=0; printf("输入错误"); while(button=1); switch(t)/选择查询方式 case 1:printf("按工号查询n");search_num();break; case 2:printf("按姓名查询n");search_name();break; case 3:break; default:break; void search_num()/按职工号查询 int a; int i,t; int m=load(); printf("请输入要查找的职工号:n"); scanf("%d",&a); for(i=0;i<m;i+) if(a=emi.num) printf("职工号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 n"); printf("n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",emi.num,emi.name,emi.jbgz,emi.zwgz,emi.jt,emi.yb,emi.gjj,emi.total); break; if(i=m) printf("n对不起,查无此人n"); printf("n"); printf("返回查询函数请按1,继续查询职工号请按2n"); scanf("%d",&t); switch(t) case 1:search();break; case 2:search_num();break; default:break; void search_name()/按姓名查询 char name30; int i,t; int m=load(); printf("请输入姓名:n"); scanf("%s",name); for(i=0;i<m;i+) if(strcmp(emi.name,name)=0) printf("n已找到,其记录为:n"); printf("职工号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 n"); printf("n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",emi.num,emi.name,emi.jbgz,emi.zwgz,emi.jt,emi.yb,emi.gjj,emi.total); if(i=m) printf("nn"); printf("n"); printf("返回查询菜单请按1,继续查询姓名请按2n"); scanf("%d",&t); switch(t) case 1:search();break; case 2:search_name();break; default :break; void modify() /修改 int num; char name20; int jbgz; int zwgz; int jt; int yb; int gjj; int b,c,i,n,t,button; int m=load(); system("cls"); printf("n 原来的职工信息:n"); display(); printf("n");printf("请输入要修改的职工的姓名:n"); scanf("%s",name); for(button=1,i=0;button&&i<m;i+) if(strcmp(emi.name,name)=0) printf("n此人原始记录为:n"); printf("职工号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 n"); printf("n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",emi.num,emi.name,emi.jbgz,emi.zwgz,emi.jt,emi.yb,emi.gjj,emi.total); printf("n确定 按1 ; 不修改请按0n"); scanf("%d",&n); if(n=1) printf("n需要进行修改的选项n 1.职工号 2.姓名 3.基本工资 4.职务工资 5.津贴 6.医疗保险 7.公积金 8.返回上层n"); printf("请选择序号1-8:n"); scanf("%d",&c); if(c>8|c<1) printf("n选择错误,请重新选择!n"); button=0; if(button=1) printf("n查无此人n"); do switch(c) /因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人 case 1:printf("职工号改为: "); scanf("%d",&num); emi-1.num=num; break; case 2:printf("姓名改为: "); scanf("%s",name); strcpy(emi-1.name,name); break; case 3:printf("基本工资改为: "); getchar(); scanf("%d",&jbgz); emi-1.jbgz=jbgz; emi-1.total=( emi-1.jbgz+ emi-1.zwgz + emi-1.jt- emi-1.yb- emi-1.gjj); break; case 4:printf("职务工资改为: "); scanf("%d",&zwgz); emi-1.zwgz=zwgz; emi-1.total=( emi-1.jbgz+ emi-1.zwgz + emi-1.jt- emi-1.yb- emi-1.gjj); break; case 5:printf("津贴改为: "); scanf("%d",&jt); emi-1.jt=jt; emi-1.total=( emi-1.jbgz+ emi-1.zwgz + emi-1.jt- emi-1.yb- emi-1.gjj); break; case 6:printf("医疗保险改为: "); scanf("%d",&yb); emi-1.yb=yb; emi-1.total=( emi-1.jbgz+ emi-1.zwgz + emi-1.jt- emi-1.yb- emi-1.gjj); break; case 7:printf("公积金改为: "); scanf("%d",&gjj); emi-1.gjj=gjj; emi-1.total=( emi-1.jbgz+ emi-1.zwgz + emi-1.jt- emi-1.yb- emi-1.gjj); break; case 8:modify(); break; printf("n"); printf("nn 确定修改 请按1 ; 重新修改 请按2: n"); scanf("%d",&b); while(b=2); printf("n修改后的所有职工信息:n"); printf("n"); save(m);display(); printf("n按1 继续修改 ,不再修改请按0n"); scanf("%d",&t); switch(t) case 1:modify();break; case 0:break; default :break; void sta()/统计 int i; int sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0; int a=0,b=0,c=0; int m=load();system("cls"); for(i=0;i<m;i+) /为输入部分的职工人数 sum0+=emi.jbgz; sum1+=emi.zwgz; sum2+=emi.jt; sum3+=emi.yb; sum4+=emi.gjj; sum5+=emi.total; if(emi.total)<=2000&&emi.total>=1000) a+; if(emi.total>2000&&emi.total<=3000) b+; if(emi.total>3000) c+;printf("nn工资总额为:%dn",sum5);printf("平均工资为:%dn%dn%dn%dn%dn%dn",sum0/m,sum1/m,sum2/m,sum3/m,sum4/m,sum5/m);printf("n基本工资、职务工资、津贴之和n");printf("在1000-2000圆的员工占总员工的%d%n",a*100/m); printf("在2000-3000圆的员工占总员工的%d%n",b*100/m); printf("在3000圆以上的员工占总员工的%d%n",c*100/m);printf("nn按Enter键继续");getch();menu();运行结果截图图8 菜单界面图7 开始界面图12 工号查询图11 修改图10 删除图9 显示数据图14 统计图13 姓名查询5.课程设计心得通过一个学年学习C语言,从刚开始对C的一无所知,到了如今,也算是对C有了一定的认识。而C语言的课程设计,我认为比考试更能考验自己。考试考察的仅仅是个别知识点,而课程设计就比较的全面。虽然说只是做了一个程序,但是其中运用到的知识确实很多所学到的内容,很好的考验了我们的综合能力。不光如此,课程设计还需要自己动手画流程图,这考察了我们的逻辑能力,又考察了我们对办公软件的使用。在编写程序的过程中,由于运用的知识点比较的广,我也发现了自身的不足,在此前学过的知识点可能有遗忘部分,对此我也进行了认真的复习,巩固了一学年以来学过的知识。对于第一次编写这么长的程序代码的我来说,这个过程可谓是繁琐和艰苦,但是却能极大的提高我的编程能力,对此我有巨大的收货。总而言之,此课程设计可谓是一举数得,让我受益匪浅!

    注意事项

    本文(C语言课程设计-职工工资管理系统(25页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开