1、青岛理工大学C语言程序设计 题目 职工工资管理程序 指导教师: XXX 姓名: XXX 学号: XXXXX 班级: XXXXX 专业: 软件工程 地点: 计算机工程学院机房 时间: 2014.6.30 至 2014.7.4 一、内容本系统实现了职工工资的管理与查询,具有输入信息,查询信息,添加信息,删除信息以及修改信息等功能。打开本系统后,将需要输入的信息输入,便可以进入操作界面。按照操作界面的提示进行操作。二、上机环境操作系统:Windows7旗舰版开发工具:Codeblocks三、函数调用关系图Main()show()显示操作界面increase ()添加数据信息found()查找符合查找
2、条件的数据Show2 ()显示数据信息print2()删除数据信息Print3()修改数据信息四、各函数功能说明1.main()主函数2 .increase() 文件输入函数3. void show() 操作界面显示函数4. void found() 查找函数5.show2() 显示函数6. void print2(int y) 删除函数7. void print3() 修改信息函数五、算法描述或流程图1:found( )函数:流程图描述:开始输入j的值判断j的值j=1 编号j=3 工资范围j=2 姓名输入编号输入姓名输入工资范围i=0i=0i=0i1000i1000i1000检测输入号与存储
3、号是否相同检测输入名与存储名是否相同检测是否在工资范围内是否被删除是否被删除是否被删除是是是i增大1位i增大1位i增大1位是是是否否否否否否否否否结束是是数据被删除数据被删除数据被删除输出符合要求的数据输出符合要求的数据输出符合要求的数据n是2:increase ()函数流程图描述开始z1000结束是否输入i2判断i2的值是否输入要添加教师的编号,姓名,年龄,工资,奖金z=03:void print2(int y)函数: 流程图描述开始i=0iy结束i的值是否等于职工号减1否是输入职工号将该职工的年龄设为10000i的值增大1位将i职工号对应的数据写入文件中。是否4:void print3()
4、函数流程图描述开始输入修改的职工号职工号不为零输入的职工号是否为零结束是否数据是否被删除是否该行数据已被删除输出该职工的编号,姓名,年龄,工资,奖金输入需要修改的选项判断选项输入修改后的编号输入修改后的姓名输入修改后的年龄输入修改后的工资输入修改后的奖金编号姓名年龄工资奖金结束输入职工号判断职工号职工号为零输入结束六、程序运行效果图1:打开界面 2:查询信息(1):按编号查询(2):按姓名查询(3):按工资范围查询3:添加信息4:修改信息5:删除信息七、总结通过本次课设,不仅成功的完成了项目,复习了一个学期来所学过的知识要点,还极大的提高了自己的动手能力,受益匪浅。通过整日含辛茹苦的编码,第一
5、次体验到了未来本专业工作岗位上的不易,也切身感受到了一位程序员的辛苦。其次,本次,通过本次课设,进一步提高了自己对本专业的兴趣,利于之后的学习乃至将来的工作,以及未来的方向。最重要的是,提高了独立分析,解决问题的能力。另一方面,这次动手实践操作,也暴露出自己在对专业知识学习上的一些漏洞。要点记得不踏实,重点知识未理解透彻,导致在写程序时捉襟见肘。但这也是经验,之后的学习要引以为鉴。八、参考文献1:李春葆 曾平 喻丹丹 .C语言程序设计教程 , 清华大学出版社 , 20112:梁力 .程序设计与C语言 , 西安交通大学出版社 , 2010九、程序清单#includestdio.h#include
6、string.h#includestdlib.h#includemath.h#define N 1000#define X 100int i;struct worker/定义结构体变量 char numX; char nameX; int y; double m; double award;staffN;/=函数线=void increase()/输入函数 int i,i2,k; FILE *fp;/定义文件指针 char numX,nameX; int y; double m,award; if(fp=fopen(design.txt,a)=NULL)/打开文件 printf(Can not
7、 open a file.n); exit(0); for(i=0;iN;i+) printf(请输入教师的编号:);/输入教师信息 scanf(%s,num); printf(请输入教师的姓名:); scanf(%s,name); printf(请输入教师的年龄:); scanf(%d,&y); printf(请输入教师的工资:); scanf(%lf,&m); printf(请输入教师的奖金:); scanf(%lf,&award); fprintf(fp,%s %s %d %lf %lfn,num,name,y,m,award); printf(是否结束输入:n1:继续输入:n0:结束输
8、入:n); scanf(%d,&i2); if(i2=0) break; else if(i2=1) continue; printf(输入结束。nn); fclose(fp);/关闭文件 /=void show()/显示操作界面 printf(* 欢迎使用职工工资管理程序 *n); printf(=n); printf(* 1:添加信息 *n); printf(* 2:删除信息 *n); printf(* 3:查询信息 *n); printf(* 4:修改信息 *n); printf(* 5:显示信息 *n); printf(* 6:退出系统 *n); printf(=n); printf(
9、请输入您要选择的操作序号,按回车键确认。n);void found() int j; FILE *fp; printf(1:按教师编号查询n2:按教师姓名查询n3:按工资范围查询n); printf(请输入数字:); scanf(%d,&j); char bX,cX,b1X,c1X; double n1,m1; if(fp=fopen(design.txt,r)=NULL)/打开文件 printf(Can not open a file.n); exit(1); switch(j)/输入数字选择要查找的条件 case 1:/按编号查找的情况 printf(n请输入要查找的教师编号:); sca
10、nf(%s,b); for(i=0;iN;i+) fscanf(fp,%s%s%d%lf%lf,staffi.num,staffi.name,&staffi.y,&staffi.m,&staffi.award); if(strcmp(b,staffi.num)=0)/检测输入名与存储名是否相同 if(staffi.y=10000) printf(n该行数据已被删除。n); printf(=n); break; else printf(n编号t姓名tt年龄t工资t奖金n); printf(%st%stt%dt%.0lft%.0lfn,staffi.num,staffi.name,staffi.y
11、,staffi.m,staffi.award); printf(=n); printf(n);break; case 2:/按姓名查找的情况 printf(请输入要查找的教师的姓名:); scanf(%s,c); for(i=0;iN;i+) fscanf(fp,%s%s%d%lf%lf,staffi.num,staffi.name,&staffi.y,&staffi.m,&staffi.award); if(strcmp(c,staffi.name)=0) if(staffi.y=10000) printf(n该行数据已被删除。n); printf(=n); break; else prin
12、tf(n编号t姓名tt年龄t工资t奖金n); printf(%st%stt%dt%.0lft%.0lfn,staffi.num,staffi.name,staffi.y,staffi.m,staffi.award); printf(=n); printf(n);break; case 3:/按工资范围查找的情况 printf(n请输入工资范围:); scanf(%lf,%lf,&n1,&m1); for(i=0;i=n1&staffi.m=m1) if(staffi.y=10000) continue; else printf(n编号t姓名tt年龄t工资t奖金n); printf(%st%st
13、t%dt%.0lft%.0lfn,staffi.num,staffi.name,staffi.y,staffi.m,staffi.award); printf(=n); printf(n);break; default:/不在查找范围内的情况 printf(n结束该项操作。n); printf(=n); break; fclose(fp);void print2()/删除函数 int s,i; FILE *fp; if(fp=fopen(design.txt,r)=NULL) printf(Can not open a file.n); exit(0); for(i=0;iN;i+) fsca
14、nf(fp,%s%s%d%lf%lf,staffi.num,staffi.name,&staffi.y,&staffi.m,&staffi.award); if(staffi.y=0) break; fclose(fp); if(fp=fopen(design.txt,w)=NULL)/打开文件 printf(Can not open a file.n); exit(1); printf(请输入需要删除的职工的位数:); scanf(%d,&s); staffs-1.y=10000; for(i=0;iN;i+) if(staffi.y=0) break; fprintf(fp,%s %s %
15、d %lf %lfn,staffi.num,staffi.name,staffi.y,staffi.m,staffi.award); printf(n删除成功.nn); fclose(fp);void print3()/修改函数 int i1,i; FILE *fp; char b1X; if(fp=fopen(design.txt,r)=NULL)/打开文件 printf(Can not open a file.n); exit(0); for(i=0;iN;i+) fscanf(fp,%s%s%d%lf%lf,staffi.num,staffi.name,&staffi.y,&staffi
16、.m,&staffi.award); if(staffi.y=0) break; fclose(fp); printf(请输入需要修改信息的职工号:); while(scanf(%d,&i1)!=EOF) if(fp=fopen(design.txt,w)=NULL)/打开文件 printf(Can not open a file.n); exit(1); if(i1=0) printf(n输入结束。n); break; else if(staffi1-1.y=10000) printf(n该行数据已被删除。nn); break; printf(n编号t姓名tt年龄t工资t奖金n); prin
17、tf(%st%stt%dt%.0lft%.0lfn,staffi1-1.num,staffi1-1.name,staffi1-1.y,staffi1-1.m,staffi1-1.award); printf(n请选择需要修改的选项:); scanf(%s,b1); if(strcmp(b1,编号)=0) printf(n请输入修改后的编号:); scanf(%s,staffi1-1.num); else if(strcmp(b1,姓名)=0) printf(n请输入修改后的姓名:); scanf(%s,staffi1-1.name); else if(strcmp(b1,年龄)=0) prin
18、tf(n请输入修改修改后的年龄:); scanf(%d,&staffi1-1.y); else if(strcmp(b1,工资)=0) printf(n请输入修改后的工资:); scanf(%lf,&staffi1-1.m) ; else if(strcmp(b1,奖金)=0) printf(n请输入修改后的奖金:); scanf(%lf,&staffi1-1.award); for(i=0;iN;i+) if(staffi.y=0) break; fprintf(fp,%s %s %d %lf %lfn,staffi.num,staffi.name,staffi.y,staffi.m,sta
19、ffi.award); printf(nn若继续修改,请输入职工号,若停止修改,请输入0:); printf(n=n); fclose(fp);void show2() FILE *fp; if(fp=fopen(design.txt,r)=NULL) printf(Can not open a file.n); exit(1); printf(n编号t姓名tt年龄t工资t奖金n); for(i=0;iN;i+) fscanf(fp,%s%s%d%lf%lf,staffi.num,staffi.name,&staffi.y,&staffi.m,&staffi.award); if(staffi
20、.y=0) break; printf(%st%stt%dt%.0lft%.0lfn,staffi.num,staffi.name,staffi.y,staffi.m,staffi.award); fclose(fp);/=int main()/主程序 int j,s,n2,t,k; char yX,dX,rX; int i1,i2,i3; char y1X; printf(* 职工工资管理程序 *n); printf(=nn); while(1) show(); scanf(%d,&n2); printf(n); switch(n2) case 1:increase();break;/执行添
21、加工作 case 2:print2();break;/执行删除工作 case 3:found();break;/执行查找工作 case 4:print3();break;/执行修改工作 case 5:show2();break;/执行显示工作 case 6:printf(n您已退出系统。n);break;/执行退出工作 default:printf(输入不符合要求。);break; if(n2=6) break; printf(n是否继续操作:n1:继续操作n0:结束操作n请输入序号:); scanf(%d,&i3); if(i3=1) continue; else if(i3=0) printf(n您已退出系统。n); break; return 0;