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

下载本文档

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

文档简介

沈 阳 航 空 工 业 学 院 课程设计学 号 20070403305 班 级 7403302 姓 名 唐 恺 指导教师 王 晓 岩 2009 年 3 月 5 日沈阳航空工业学院课程设计任务书院系:沈阳航空工业学院 专业:飞行器设计与工程 班级:7403302学号:200704033062 题目:工资管理系统一、课程设计时间2009年2月23日至2009年2月27日,共计1周,20学时。二、课程设计内容用C语言编写软件完成以下任务:能够对职工工资信息进行数字化管理,人数不少于3人。工资信息应保存到文件pay.txt中。三、课程设计要求1贯彻结构化程序设计思想。2用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。3用户界面中的菜单至少应包括“职工信息录入”、“信息查询”、“工资统计”和“退出”4项。4代码应适当缩进,并给出必要的注释,以增强程序的可读性。四、指导教师和学生签字指导教师:_ 学生签名:_五、说明书成绩六、教师评语目录一、需求分析1二、程序流程图2三、核心技术的实现说明及相应程序段6四、课设总结10五、参考文献10六、源程序10一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为六个模块,其中每一个模块对应一个函数,它们的功能分别是:添加职工信息函数,显示职工信息函数,删除职工信息函数,更改职工信息函数,工资统计函数以及信息查询函数。在这些函数当中,有四个函数的实现严格按照题目的要求,而另两个函数属于附加功能。1, 添加职工信息函数 主要实现程序最初运行时职工信息的录入以及其后的运行中职工信息的追加功能;2、显示职工信息函数 实现的是显示目前所有的有效职工信息;3, 删除职工信息函数 实现的功能是按照编号对职工的数据记录进行删除;4, 更改职工信息函数 可以实现对职工记录的信息进行修改;5、工资统计函数 实现的是总工资的递减排序以及名次显示,其中总工资相同者名次相同;6、信息查询函数 允许按照编号对单一职工工资进行查询。除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个职工信息都包含编号、姓名,以及职工的基本工资,补贴,奖励和扣除金额。在程序当中,将职工记录类型定义为结构体类型,添加以及追加的职工信息直接写入D盘的pay.txt文件中,其它函数每次对职工记录的访问,其数据来源都是pay.txt文件,这样做不但可以保证职工数据的一致性,而且可以对职工数据进行永久保存,保证每次运行程序都可以采用原来的数据。二、程序流程图1、程序总体结构图图1程序总体结构图2、具体功能框图(1)读取职工数据reads开始读方式打开D盘pay.txt文件不成功?读出记录总数赋给形参*n循环变量return;i*n读出一条职工记录到形参数组元素pii+;关闭文件结束图2读取职工数据(3)删除职工记录函数delreads(p,&n);循环变量i=0; 输入待删除的职工编号ngbianhaonumber假i+当in-1时pi与number相等?真break;输出该职工记录不存在!记录写回文件i+关闭文件return;当i=n-2显示打开文件失败!i=0写方式打开pay.txt不成功?假真数租元素依次前移 j+当j=n?真假j=i+1 图3删除职工记录函数三、核心技术的实现说明及相应程序段本程序主要由六个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当中,删除职工信息函数和职工工资统计函数是程序中较为核心的部分,下面分别进行说明。1、删除职工信息函数该函数的核心内容是删除算法以及最终对源文件的更新。该函数执行时,首先调用reads函数将文件中的职工信息读入数组当中,并由用户输入待删除职工的编号,而后按照该编号进行查找,如果文件中存在该职工的数据,则采用删除算法删除,否则输出职工信息不存在的提示信息。对职工信息的具体删除算法是在结构体数组中实现的,当职工的信息被找到后,位于数组中该职工后面的职工记录依次向前移动一个元素的位置,这些操作完成后,要删除的职工信息就被后面的数组元素覆盖掉了,也就实现了删除。在数组中删除职工信息后,还要将更改后的信息重新写回文件当中,以保证数据的一致性。具体程序段如下:void del() struct pay pN; char number20; FILE *fp; int n,i,j; reads(p,&n); printf(n请输入要删除信息的职工编号,按回车键确认:); getchar(); scanf(%s,number); for(i=0;i=n) printf(没有找到该学生信息!n); return; elsefor(j=i+1;jn;j+) pj-1=pj; if(fp=fopen(d:pay.txt,w)=NULL) printf(文件打开失败!); return; else for(i=0;in-1;i+) fprintf(fp,n%s %s %f %f %f %f,pi.num,,pi.base,pi.subsidy,pi.bonus,pi.fine); fclose(fp); printf(删除成功!n); 2、职工工资统计函数对于总分的排序采用的排序算法是冒泡法排序,其中总分的求得是在排序的过程中实现的,这部分程序仍然调用了reads函数,整个排序过程在结构体数组p中实现,由于排序算法涉及到两个数组元素的信息交换,因此还需要定义一个中间变量来协助。排序函数使学生数据的排列顺序发生了变化,因此也需要队员文件进行更新,此外,对于职工排序后名次的确定,仅在结果输出时予以显示,并未将名次信息写入源文件。具体的程序段如下:void sort() FILE *fp; struct pay pN,temp; int i,j,n; reads(p,&n); for(i=0;in-1;i+) for(j=0;jn-1-i;j+) if(pj.base+pj.subsidy+pj.bonus-pj.finepj+1.base+pj+1.subsidy+pj+1.bonus-pj+1.fine) temp=pj; pj=pj+1; pj+1=temp; if(fp=fopen(d:pay.txt,w)=NULL) printf(打开文件失败!); return; j=1; for(i=0;in;i+) fprintf(fp,n%s %s %f %f %f %f,pi.num,,pi.base,pi.subsidy,pi.bonus,pi.fine); if(pi.base+pi.subsidy+pi.bonus-pi.fine=pi+1.base+pi+1.subsidy+pi+1.bonus-pi+1.fine) printf(n%3d%5s%5s%8.2f%8.2f%8.2f%8.2f%9.2fn,j,pi.num,,pi.base,pi.subsidy,pi.bonus,pi.fine,pi.base+pi.subsidy+pi.bonus-pi.fine); else printf(n%3d%5s%5s%8.2f%8.2f%8.2f%8.2f%9.2fn,j+,pi.num,,pi.base,pi.subsidy,pi.bonus,pi.fine,pi.base+pi.subsidy+pi.bonus-pi.fine); fclose(fp); getch(); 四、课设总结在本次课设中,不仅对以前学习的加以巩固,而且学到了不少的新知识。知道了如果不亲手实践,是学不会C语言的,此次课设为今后的学习指引了方向。五、参考文献1 谭浩强C程序设计北京:清华大学出版社,20052 刘成等C语言程序设计实验指导与习题集北京:中国铁道出版社,2006六、源程序#include #include /其中定义了getch()函数。#include /其中定义了system()函数。#include#define N 20struct paychar num20; char name10; float base; float subsidy; float bonus; float fine;void menu();void reads(struct pay pN,int *n);void add();void del();void sort();void query();void change();void show();void main() int n; while(1) menu(); printf(n 请输入您要选择的操作序号,按回车键确认:); scanf(%d,&n); switch(n) case 1: add();break; case 2: show();break; case 3: del();break; case 4: change();break; case 5: sort();break; case 6: query();break; case 7: exit(0); default: printf(输入错误,请输入列表中存在的序号!n ); void menu()printf( *工资管理系统* ); printf(n 1 添加职工信息); printf(n 2 显示职工信息); printf(n 3 删除职工信息); printf(n 4 更改职工信息); printf(n 5 工资统计); printf(n 6 信息查询); printf(n 7 退出);void reads(struct pay pN,int *n) FILE *fp; int i=0; if(fp=fopen(d:pay.txt,r)=NULL) printf(文件打开失败!n); return; else for(i=0;!feof(fp);i+) fscanf(fp,%s%s%f%f%f%f,pi.num,,&pi.base,&pi.subsidy,&pi.bonus,&pi.fine); *n=i; fclose(fp);void add()FILE *fp; int n,i; struct pay p; if(fp=fopen(d:p.txt,w)!=NULL) printf(请输入要添加的职工人数,按回车键确认:); scanf(%d,&n); for(i=1;i=n;i+) printf(n请输入第%d个职工编号、姓名,用空格分开,并按回车键确认:n,i); scanf(%s%s,p.num,); printf(n请输入第%d个职工的基本工资,补贴,奖励和扣除金额,用空格分开,并按回车键确认:n,i); scanf(%f%f%f%f,&p.base,&p.subsidy,&p.bonus,&p.fine); fprintf(fp,n%s %s %f %f %f %f,p.num,,p.base,p.subsidy,p.bonus,p.fine); fclose(fp);void show()struct pay pN; int i,n; reads(p,&n); printf( *所有的职工信息如下*); for(i=0;in;i+) printf(n%3d%5s%5s%8.2f%8.2f%8.2f%8.2fn,i+1,pi.num,,pi.base,pi.subsidy,pi.bonus,pi.fine); getch();void del() struct pay pN; char number20; FILE *fp; int n,i,j; reads(p,&n); printf(n请输入要删除信息的职工编号,按回车键确认:); getchar(); scanf(%s,number); for(i=0;i=n) printf(没有找到该学生信息!n); return; elsefor(j=i+1;jn;j+) pj-1=pj; if(fp=fopen(d:pay.txt,w)=NULL) printf(文件打开失败!); return; else for(i=0;in-1;i+) fprintf(fp,n%s %s %f %f %f %f,pi.num,,pi.base,pi.subsidy,pi.bonus,pi.fine); fclose(fp); printf(删除成功!n);void change()struct pay pN,temp; int n,i; FILE *fp; printf(n请输入要更改信息的职工编号,按回车键确认:); scanf(%s,temp.num); reads(p,&n); for(i=0;i=n) printf(无此学生信息!); return; printf(n请输入更改后职工的姓名,基本工资,补贴,奖励和扣除金额,按回车键确认:n); scanf(%s%f%f%f%f,,&temp.base,&temp.subsidy,&temp.bonus,&temp.fine); pi=temp; if(fp=fopen(d:pay.txt,w)=NULL) printf(打开文件失败!); return; for(i=0;in;i+) fprintf(fp,n%s %s %f %f %f %f,pi.num,,pi.base,pi.subsidy,pi.bonus,pi.fine); fclose(fp); printf(修改职工信息成功!n);void sort() FILE *fp; struct pay pN,temp; int i,j,n; reads(p,&n); for(i=0;in-1;i+) for(j=0;jn-1-i;j+) if(pj.base+pj.subsidy+pj.bonus-pj.finepj+1.base+pj+1.subsidy+pj+1.bonus-pj+1.fine) temp=pj; pj=pj+1; pj+1=temp; if(fp=fopen(d:pay.txt,w)=NULL) printf(打开文件失败!); return; j=1; for(i=0;in;i+) fprintf(fp,n%s %s %f %f %f %f,pi.num,,pi.base,pi.subsidy,pi.bonus,pi.fine);

温馨提示

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

评论

0/150

提交评论