- #include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct staff
{
char number[100];
char name[100];
char sex[100];
int jbgz;
int jj;
int gwjt;
int gjj;
int yfgz;
};
double jbgz,jj,gwjt,gjj;
struct staff sta[100];
int num=0;
void menu();
void input();
void modify();
void list();
void search();
void del();
int main()
{
printf(" ************* 职工工资管理系统 **************\n");
printf(" * 1-----输入/添加职工信息 *\n");
printf(" * 2-----查询职工信息 *\n");
printf(" * 3-----修改员工信息 *\n");
printf(" * 4-----删除员工信息 *\n");
printf(" * 5-----排序职工工资 *\n");
printf(" * 6-----退出程序 *\n");
printf(" *********************************************\n");
while(1)
{
menu();
}
}
void menu()
{ int n;
printf("请输入您的选择:");
scanf("%d",&n);
switch(n)
{ case 1:input(); break;
case 2:search(); break;
case 3:modify(); break;
case 4:del(); break;
case 5:list(); break;
case 6:exit(0);
}
}
void input()
{
int i,n;
printf("请输入(要添加)职工人数:");
scanf("%d",&n);
for(i=1+num;i<=n+num;i++)
{
printf("请输入第%d位职工的工号,姓名,性别,基本工资,奖金,岗位津贴,公积金(中间以空格分隔):\n",i);
scanf("%s %s %s %d %d %d %d",&sta[i].number,&sta[i].name,&sta[i].sex,&sta[i].jbgz,&sta[i].jj,&sta[i].gwjt,&sta[i].gjj); //输入第i位职工的工号,姓名,性别,部门,基本工资,绩效工资,奖金
sta[i].yfgz=sta[i].jbgz+sta[i].jj+sta[i].gwjt-sta[i].gjj;
printf("输入成功\n");
}
num+=n;
}
void modify()
{
int i;
char num[100];
printf("请输入您想要修改职工的数据的工号:");
scanf("%s",&num);
for(i=0;i<100;i++)
{
if(strcmp(num,sta[i].number)==0)
{
printf("请输入新工号,姓名,性别,基本工资,奖金,岗位津贴,公积金(中间以空格分隔):\n");
scanf("%s %s %s %d %d %d %d",&sta[i].number,&sta[i].name,&sta[i].sex,&sta[i].jbgz,&sta[i].jj,&sta[i].gwjt,&sta[i].gjj);
sta[i].yfgz=sta[i].jbgz+sta[i].jj+sta[i].gwjt-sta[i].gjj;
break;
}
}
printf("修改成功!\n");
printf("修改后的数据为:\n");
printf("工号\t姓名\t性别\t基本工资\t奖金\t岗位津贴\t公积金\t应发工资\n");
printf("%s\t%s\t%s\t%d\t\t%d\t%d\t\t%d\t%d\n",
sta[i].number,sta[i].name,sta[i].sex,sta[i].jbgz,sta[i].jj,sta[i].gwjt,sta[i].gjj,sta[i].yfgz);
}
void list()
{
int i,j,k;
char n[100];
int nn;
for(i=0;i<=100;i++)
{
for(j=0;j<=100;j++)
{
if(strcmp(sta[i].number,sta[j].number)<0&&sta[i].number!=""&&sta[j].number!="")
{
strcpy(n,sta[j].number);
strcpy(sta[j].number,sta[i].number);
strcpy(sta[i].number,n);
//
strcpy(n,sta[j].name);
strcpy(sta[j].name,sta[i].name);
strcpy(sta[i].name,n);
//
strcpy(n,sta[j].sex);
strcpy(sta[j].sex,sta[i].sex);
strcpy(sta[i].sex,n);
//
nn=sta[i].jbgz;
sta[i].jbgz=sta[j].jbgz;
sta[j].jbgz=nn;
//
nn=sta[i].jj;
sta[i].jj=sta[j].jj;
sta[j].jj=nn;
//
nn=sta[i].gwjt;
sta[i].gwjt=sta[j].gwjt;
sta[j].gwjt=nn;
//
nn=sta[i].gjj;
sta[i].gjj=sta[j].gjj;
sta[j].gjj=nn;
//
nn=sta[i].yfgz;
sta[i].yfgz=sta[j].yfgz;
sta[j].yfgz=nn;
}
}
}
printf("工号\t姓名\t性别\t基本工资\t奖金\t岗位津贴\t公积金\t应发工资\n");
for(k=0;k<=100;k++)
{
if(strlen(sta[k].number)!=0)
printf("%s\t%s\t%s\t%d\t\t%d\t%d\t\t%d\t%d\n",sta[k].number,sta[k].name,sta[k].sex,sta[k].jbgz,sta[k].jj,sta[k].gwjt,sta[k].gjj,sta[k].yfgz);
}
}
void search()
{
int i,d=0;
char num[100];
printf("请输入您想要查询的职工工号:");
scanf("%s",&num);
for(i=0;i<100;i++)
{
if(strcmp(num,sta[i].number)==0)
{
d=1;
printf("该职工的数据为:\n");
printf("工号\t姓名\t性别\t基本工资\t奖金\t岗位津贴\t公积金\t应发工资\n");
printf("%s\t%s\t%s\t%d\t\t%d\t%d\t\t%d\t%d\n",sta[i].number,sta[i].name,sta[i].sex,sta[i].jbgz,sta[i].jj,sta[i].gwjt,sta[i].gjj,sta[i].yfgz);
break;
}
}
if(d==0)
printf("查无此人!\n");
}
void del()
{
int i,j,m;
char delnum[100];
printf("请输入您想要删除职工数据的工号:");
scanf("%s",&delnum);
for(i=0;i<100;i++)
{
if(strcmp(delnum,sta[i].number)==0)
{
printf("该职工的数据为:\n");
printf("工号\t姓名\t性别\t基本工资\t奖金\t岗位津贴\t公积金\t应发工资\n");
printf("%s\t%s\t%s\t%d\t\t%d\t%d\t\t%d\t%d\n",sta[i].number,sta[i].name,sta[i].sex,sta[i].jbgz,sta[i].jj,sta[i].gwjt,sta[i].gjj,sta[i].yfgz);
printf("确认删除该名职工的数据吗?(1.确认 2.取消)\n");
scanf("%d",&m);
if(m==1)
{
strcpy(sta[i].number,"");
printf("删除成功!!\n");
}
else break;
}
}
list();
}

运行后出现了这样的问题


这个是正常的,要你从键盘输入对应的内容来完成职工添加操作。
你根据提示依次输入就好了,最后回车就行了。
如有帮助,请采纳。点击我回答右上角【采纳】按钮。
你的scanf语句都有问题,记住,字符串是不需要加&符号的
scanf("%s %s %s %d %d %d %d",&sta[i].number,&sta[i].name,&sta[i].sex,&sta[i].jbgz,&sta[i].jj,&sta[i].gwjt,&sta[i].gjj);
改为
scanf("%s %s %s %d %d %d %d",sta[i].number,sta[i].name,sta[i].sex,&sta[i].jbgz,&sta[i].jj,&sta[i].gwjt,&sta[i].gjj);