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