1、 青岛理工大学 《C语言程序设计》 题目 职工工资管理程序 指导教师: XXX 姓名: XXX 学号: XXXXX 班级: XXXXX 专业: 软件工程 地点: 计算机工程学院机房 时间: 2014.6.30 至 2014.7.4 一、内容 本系统实现了职工工资的管理与查询,具有输入
2、信息,查询信息,添加信息,删除信息以及修改信息等功能。打开本系统后,将需要输入的信息输入,便可以进入操作界面。按照操作界面的提示进行操作。 二、上机环境 操作系统:Windows7旗舰版 开发工具:Codeblocks 三、函数调用关系图 Main() show() 显示操作界面 increase () 添加数据信息 found() 查找符合查找条件的数据 Show2 () 显示数据信息 print2() 删除数据信息 Print3() 修改数据信息 四、各函数功能说明 1.main() 主函数 2 .i
3、ncrease() 文件输入函数 3. void show() 操作界面显示函数 4. void found() 查找函数 5.show2() 显示函数 6. void print2(int y) 删除函数 7. void print
4、3() 修改信息函数 五、算法描述或流程图 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位
5、
是
是
是
否
否
否
否
否
否
否
否
否
结束
是
是
数据被删除
数据被删除
数据被删除
输出符合要求的数据
输出符合要求的数据
输出符合要求的数据
\n
是
2:increase ()函数
流程图描述
开始
z<1000
结束
是
否
输入i2
判断i2的值
是
否
输入要添加教师的编号,姓名,年龄,工资,奖金
z=0
3:void print2(int y)函数
: 流程图描述
开始
i=0
i 6、束
i的值是否等于职工号减1
否
是
输入职工号
将该职工的年龄设为10000
i的值增大1位
将i职工号对应的数据写入文件中。
是
否
4:void print3()函数
流程图描述
开始
输入修改的职工号
职工号不为零
输入的职工号是否为零
结束
是
否
数据是否被删除
是
否
该行数据已被删除
输出该职工的编号,姓名,年龄,工资,奖金
输入需要修改的选项
判断选项
输入修改后的编号
输入修改后的姓名
输入修改后的年龄
输入修改后的工资
输入修改后的奖金
编号
姓名
年龄
工资
奖金
结束
输入职工号
7、判断职工号
职工号为零
输入结束
六、程序运行效果图
1:打开界面
2:查询信息
(1):按编号查询
(2):按姓名查询
(3):按工资范围查询
3:添加信息
4:修改信息
5:删除信息
七、总结
通过本次课设,不仅成功的完成了项目,复习了一个学期来所学过的知识要点,还极大的提高了自己的动手能力,受益匪浅。通过整日含辛茹苦的编码,第一次体验到了未来本专业工作岗位上的不易,也切身感受到了一位程序员的辛苦。其次,本次,通过本次课设,进一步提高了自己对本专业的兴趣,利于之后的学习乃至将来的工作,以及未来的方向。最重要 8、的是,提高了独立分析,解决问题的能力。另一方面,这次动手实践操作,也暴露出自己在对专业知识学习上的一些漏洞。要点记得不踏实,重点知识未理解透彻,导致在写程序时捉襟见肘。但这也是经验,之后的学习要引以为鉴。
八、参考文献
1:李春葆 曾平 喻丹丹 .《C语言程序设计教程》 , 清华大学出版社 , 2011
2:梁力 .《程序设计与C语言》 , 西安交通大学出版社 , 2010
九、程序清单
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#include"math.h"
9、
#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;//定义文件指针
10、
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 11、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);
i 12、f(i2==0)
break;
else if(i2==1)
continue;
}
printf("输入结束。\n\n");
fclose(fp);//关闭文件
}
//=================================================================
void show()//显示操作界面
{
printf("* 欢迎使用职工工资管理程序 *\n") 13、
printf("=========================================================================\n");
printf("* 1:添加信息 *\n");
printf("* 2:删除信息 *\n");
printf("* 14、 3:查询信息 *\n");
printf("* 4:修改信息 *\n");
printf("* 5:显示信息 *\n");
printf("* 6:退出系统 15、 *\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], 16、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 17、 18、 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] 19、name,staff[i].y,staff[i].m,staff[i].award);
printf("=========================================================================\n");
}
}
}
printf("\n");break;
case 2://按姓名查找的情况
printf("请输入要查找的教师的姓名:");
scanf( 20、"%s",c);
for(i=0;i 21、");
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]. 22、num,staff[i].name,staff[i].y,staff[i].m,staff[i].award);
printf("=========================================================================\n");
}
}
}
printf("\n");break;
case 3://按工资范围查找的情况
printf("\n请输入工资范围:");
sc 23、anf("%lf,%lf",&n1,&m1);
for(i=0;i 24、 }
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("=============================================================== 25、\n");
}
}
}
printf("\n");break;
default://不在查找范围内的情况
printf("\n结束该项操作。\n");
printf("=========================================================================\n");
break;
}
fclose(fp);
}
void print2()//删除函数
{
26、 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 27、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 28、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.tx 29、t","r"))==NULL)//打开文件
{
printf("Can not open a file.\n");
exit(0);
}
for(i=0;i 30、close(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)
{
31、 printf("\n输入结束。\n");
break;
}
else
{
if(staff[i1-1].y==10000)
{
printf("\n该行数据已被删除。\n\n");
break;
}
printf("\n编号\t姓名\t\t年龄\t工资\t奖金\n"); 32、
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请输入修改后的编 33、号:");
scanf("%s",staff[i1-1].num);
}
else if(strcmp(b1,"姓名")==0)
{
printf("\n请输入修改后的姓名:");
scanf("%s",staff[i1-1].name);
}
else if(strcmp(b1,"年龄")==0)
34、 {
printf("\n请输入修改修改后的年龄:");
scanf("%d",&staff[i1-1].y);
}
else if(strcmp(b1,"工资")==0)
{
printf("\n请输入修改后的工资:");
scanf("%lf",&staff[i1-1].m) ;
}
e 35、lse if(strcmp(b1,"奖金")==0)
{
printf("\n请输入修改后的奖金:");
scanf("%lf",&staff[i1-1].award);
}
for(i=0;i 36、 %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);
}
voi 37、d 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 38、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);
}
//=================================================================
39、
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() 40、
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;//执 41、行退出工作
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;
}






