C语言课设职工工资管理系统_第1页
C语言课设职工工资管理系统_第2页
C语言课设职工工资管理系统_第3页
C语言课设职工工资管理系统_第4页
C语言课设职工工资管理系统_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、山西大学软件学院 程序设计基础 课程设计报告书题目: 职工工资管理系统 指导教师: 亢临生 班 级: 软件工程1611 姓 名: 李国栋 学 号: 2016028* 课设时间: 成 绩 二一七年六月课 程 设 计 任 务 书题 目职工工资管理系统一、设计内容及要求一个职工的工资信息包含姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金。编写程序实现对职工工资的录入、显示、修改、查询、保存等功能。参考数据ID号 姓名 基本工资 职务工资 津贴 医疗保险- 公积金- 总工资 01 张望 1286 794 198 109 135 2034 02 李明 1185 628 135 94 114

2、 1740 03 王小民 895 438 98 64 73 1294 04 张效章 1350 868 210 116 150 2162 二、设计原始资料 无三、设计完成后提交的成果及其相关资料。 1.完整的源程序 2.课程设计报告书电子版一份 3.课程设计报告书纸质版一份四、主要参考资料1.<C primer plus>人民邮电出版社 2.<c程序设计>清华大学出版社五、进程安排1.2017年6月13日:下达任务,指导老师做出必要讲解2.2017年6月13日-2017年6月22日,指导老师在机房定时辅导学生完成课程设计项目目 录 第1章 课程设计的目的与要求11.1 课

3、程设计目的31.2 课程设计的实验环境31.3 课程设计的预备知识31.4 课程设计要求3第2章 课程设计内容42.1程序功能介绍42.2程序整体设计说明42.2.1设计思路42.2.2数据结构设计及用法说明52.2.3各模块的功能及程序说明62.2.4程序结果72.3程序源代码及注释9第3章 课程设计总结14第1章 课程设计的目的与要求1.1 课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完程序设计语言(C)课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1. 巩固和加深学生对C语言课程的基本知识的理解和掌握 2. 掌握C语言编程和程序调试的基本技能

4、 3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力1.2 课程设计的实验环境硬件要求能运行Windows 2000/XP操作系统的微机系统。C语言程序设计及相应的开发环境。1.3 课程设计的预备知识熟悉C语言及C语言开发工具。1.4 课程设计要求1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告第2章 课程设计内容2.1程序功能介绍每一个职工的工资信息包含姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金。编写程序实

5、现对职工工资的录入、显示、修改、查询、保存等功能。参考数据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 2.2程序整体设计说明根据题目要求,应该把职工工资信息用结构体形式输入,再定义一个变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构

6、体和文件的输入输出等操作。在程序中需实现职工工资浏览、查询、修改等功能的操作,所以要建立相应的功能模块来实现。在头文件中将所需包含的函数进行输入,再进行变量的定义,如:定义数据结构,有关职工工资管理需要输入的基本信息再用指针的方法将这些有关变量进行地址存储。再定义出工资管理整个程序中所需要的函数原型;然后进行主函数的书写,并显示所有数据。主函数无限循环,数据的录入、修改、查询等均是对内存中的链表进行操作,每次操作后将数据保存到文件。2.2.1设计思路首先利用while(1)对提示页面无限调用,帮助用户输入对应的正确数字编码,在输入职工信息时,运用void import()调用函数对文件的使用,

7、首先定义一个指针文件,又以写的方式打开此文件,在打开的文件中输入要管理的职工人数,用一个for循环按照姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金的格式循环获取职工的记录,使用fwrite()将职工记录写入文件“word”中,并fclose关闭文件。在查询职工信息时,按职工号查询,首先是以只读(二进制)的方式打开文件“word”, 然后输入要查询的职工号,用一个for循环来控制查询的人数,之后在显示器上显示某一个职工信息,然后关闭文件。在修改职工信息时,按职工号修改,首先是以读写的方式打开文件“word”。输入要修改的职工号,用一个for循环来控制输入的数量。然后对职工的信息进

8、行修改,就可获得新的职工记录。之后文件指针指向该修改的记录开头,此时用fwrite覆盖当前记录,修改完成时系统会显示修改后的文件数据:姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金然后关闭文件。在显示职工信息时,运用void browse()调用函数对文件的使用。首先以只读的方式打开一个文本文件”word”。操作无误则用for循环输出正在查询职工的:记录号 职工号 姓名 性别 年龄 工资。这些完成后用fclose(fp)函数关闭文件。2.2.2数据结构设计及用法说明 数据结构:定义结构体people,用于存放职工的基本信息和工资信息.使用struct结构体编辑主菜单,定义全局变量

9、,用于存放结构体数组。使用一维数组。用for语句编辑输入模块,用switch、for语句编辑查找职工数据,用if,for语句编辑修改职工信息。用法说明:启动后屏幕上会显示下面菜单:1 录入信息2 修改信息3 显示所有4 查询信息5 退出执行者若要执行某一功能,就按下该功能所对应的数字即可。输入职工信息:在主菜单中输入1则系统会进入新界面并自动提示你输入职工号,输入完成后按回车键系统会逐一提示输入姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金,输入完成后会继续提示输入下一个职工的职工号。修改职工信息:在主菜单中输2,系统会自动提示你输入要修改的职工号,然后进行修改。修改成功显示已修

10、改后的文件数据;输入错职工号显示查无此人。显示职工信息:在主菜单中输入3系统界面是输出菜单界面,按照输入格式:姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金,逐个的输出职工的信息,输出所有职工信息后系统自动退出。查询职工信息:主菜单中输入4 则进入查询子菜单界面,输入职工号后会出现该职工的信息。输入错误职工号,显示查无此人。 退出:在主菜单中输入5则退出系统。并显示 “ 退出成功 请关闭 ”。2.2.3各模块的功能及程序说明首先是定义了一个输入输出头文件,接着是一个宏定义,下面是函数声明部分,用结构体存储和录入该程序的所有数据,主函数部分包括设计的全部信息,之后是输出主菜单和调用

11、函数,退出程序。此程序中包括:输入模块、查询模块、修改模块、显示模块。输入模块:该模块先是对姓名、ID号、基本工资、职务工资、岗位津贴、医 疗保险、公积金的录入并保存到文件“word ”中。查询模块:实现按职工号查询每个职工的信息,查询显示姓名、ID号、基本 工资、职务工资、岗位津贴、医疗保险、公积金修改模块:该模块实现按职工号对职工所有信息的修改。显示模块: 该模块实现按职工号输出职工的所有信息。退出模块:保存并且关闭,用来退出while(1)的死循环2.2.4程序结果展示录入模块:修改模块:查询模块:显示模块:退出模块:2.3程序源代码及注释/*每一个职工的工资信息包含姓名、ID号、基本工

12、资、职务工资、岗位津贴、医疗保险、公积金。编写程序实现对职工工资的录入、显示、修改、查询、保存等功能。参考数据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 */ 源码: #include<stdio.h> #include<string.h> #

13、include<stdlib.h> #define max 30 /定义 void menu();/菜单 void import(); void browse();/显示所有 void search_num();/查询信息 void revise();/修改信息 struct people /定义个人信息结构体 char no5; /编号 char namemax;/名字 int basepay;/基本工资 int wage;/职务工资 int subsidy;/津贴 int surance;/医疗保险 int fund;/公积金 int total; /z总和 ; struct

14、people nummax; /定义人员信息数组 void main()/主函数 menu(); void menu() /菜单 int a;int i=0; while(1) printf("n*n") ; printf("1.录入信息n") ;printf("2.修改信息n") ;printf("3.显示所有n") ;printf("4.查询信息n") ;printf("5.退出n") ;printf("n*n") ;printf ("请输入

15、数字编码");scanf("%d",&a);switch (a) case 1:/录入数据 import(); break; case 2:/修改信息 revise();break;case 3: /显示信息 browse();break;case 4: /查询信息 search_num();break; case 5:/退出 printf("退出成功 请关闭") ;exit(0);defaul:/输入错误 printtf("请重新输入");break; void import() /录入信息 FILE *fp; i

16、nt n,i; /n用来存储职工数 i用来存储第几个员工 if (fp=fopen("word","wb")=NULL) / / printf("不能建立word文件n"); / 这四行用来判断是否可以正确打开 exit(1); / printf("输入职工人数:");scanf ("%d",&n);for(i=0;i<n;i+)printf("请输入第%d个职工的编号",i+1);scanf("%s",&numi.no);/职工号

17、printf("请输入第%d姓名信息",i+1);scanf("%s",&);/姓名 printf("请输入第%d基本工资",i+1) ;scanf("%d",&numi.basepay) ;/基本工资 printf("请输入职务工资") ;scanf("%d",&numi.wage) ;/职务工资 printf("请输入津贴") ;scanf("%d",&numi.subsidy) ;

18、/津贴 printf("请输入医疗保险") ;scanf("%d",&numi.surance) ;/保险 printf("请输入公积金") ;scanf("%d",&numi.fund) ;/公积金 numi.total= numi.basepay+numi.wage+numi.subsidy+numi.surance+numi.fund; /计算总和 fwrite(&numi,sizeof(struct people),1,fp);/写入到文件中 fclose(fp);/关闭文件 voi

19、d revise()/修改信息 FILE *fp; int i; char number5; if(fp=fopen("word","rb+")=NULL)/二进制读的方式打开 printf("不能打开word文件n"); exit(1); printf("输入要修改的的职工号:"); scanf("%s",number); for(i=0;fread(&numi,sizeof(struct people),1,fp);i+) if(!strcmp(numi.no,number) bre

20、ak;/对比职工号 如果没有这个职工号 就退出 if(feof(fp) /如果fp文件指针到达文件尾 printf("t查无此人n"); exit(2); /fseek(fp,i*sizeof(struct people),SEEK_SET); printf("请输入职工新的编号");scanf("%s",&numi.no);printf("请输入姓名信息");scanf("%s",&);printf("请输入基本工资") ;scanf(&q

21、uot;%d",&numi.basepay) ;printf("请输入职务工资") ;scanf("%d",&numi.wage) ;printf("请输入津贴") ;scanf("%d",&numi.subsidy) ;printf("请输入医疗保险") ;scanf("%d",&numi.surance) ;printf("请输入公积金") ;scanf("%d",&numi.fun

22、d) ;numi.total= numi.basepay+numi.wage+numi.subsidy+numi.surance+numi.fund; fseek(fp,-(long)sizeof(struct people),SEEK_CUR); /移动指针到所在数组的第一个地址上 fwrite(&numi,sizeof(struct people),1,fp);/写入数据 fclose(fp); void browse() /显示信息 int i; FILE *fp; if(fp=fopen("word","r")=NULL) printf(

23、"不能打开word文件n"); exit(0); printf("职工号t 姓名t 基本工资t 职务工资t 津贴t 医疗保险t 公积金t t总工资 n"); for(i=0;fread(&numi,sizeof(struct people),1,fp)!=0;i+) printf("%st %st %dtt %dtt %dt %dtt %dtt %dtn",numi.no,,numi.basepay,numi.wage,numi.subsidy,numi.surance,numi.fund,numi.total); fclose(fp);void search_num()/查询信息 FILE *fp; int i; char number5; if(fp=fopen("word","rb")=NULL) printf("不能打开word文件n"); exit(1); printf("要查询的职工号:"); scanf("%s",number); for(i=0;fread(&numi,sizeof(struct people),1,fp);i+) if(!strcmp(num

温馨提示

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

评论

0/150

提交评论