职工信息管理查询,显示出所有一样的
//职工信息
typedef struct work
{
int id; //工号
char name[8]; //姓名
int wages; //工资
int bonus; //奖金
int deduction; //扣款
int money; //实发工资
struct work* next; //链表
}workers; //别名
//表头
workers* Listhead()
{
workers* head = (workers*)malloc(sizeof(workers));//动态内存申请 指针变成变量
if (head != NULL)//消除vs警告
{
head->next = NULL;//初始化
return head; //返回头指针
}
return 0;
}
//查询
void query(workers* head)
{
workers* p = head;
int a = determine(p);
if (a == 1)
return;
printf("1————工号查询\n2————姓名查询\n");
int select;
scanf_s("%d", &select);
if (select == 1)
{
printf("工号:");
int id;
scanf_s("%d", &id);
while (p->next != NULL)
{
p = p->next;
if (id == p->id)
{
format;
printf("%-8d\t%-8s\t%-8d\t%-8d\t%-8d\n",
p->id, p->name, p->wages, p->bonus, p->deduction);
system("pause");
system("cls");
return;
}
}
printf("未有此人\n");
system("pause");
system("cls");
return;
}
else if (select == 2)
{
printf("姓名:");
char name[8]="\0";
scanf_s("%s", name, 8);
while (p->next != NULL)
{
p = p->next;
if (strcmp(name, p->name) == 0)
{
format;
printf("%-8d\t%-8s\t%-8d\t%-8d\t%-8d\n",
p->id, p->name, p->wages, p->bonus, p->deduction);
system("pause");
system("cls");
return;
}
}
printf("未有此人\n");
system("pause");
system("cls");
}
}
想在这里加个功能,就是输出所有一样姓名的
else if (select == 2)
{
printf("姓名:");
char name[8]="\0";
scanf_s("%s", name, 8);
while (p->next != NULL)
{
p = p->next;
if (strcmp(name, p->name) == 0)
{
format;
printf("%-8d\t%-8s\t%-8d\t%-8d\t%-8d\n",
p->id, p->name, p->wages, p->bonus, p->deduction);
system("pause");
system("cls");
return;
}
}
printf("未有此人\n");
system("pause");
system("cls");
}
}
邦邦!
修改如下,改动处注释,供参考:
//职工信息
typedef struct work
{
int id; //工号
char name[8]; //姓名
int wages; //工资
int bonus; //奖金
int deduction; //扣款
int money; //实发工资
struct work* next; //链表
}workers; //别名
//表头
workers* Listhead()
{
workers* head = (workers*)malloc(sizeof(workers));//动态内存申请 指针变成变量
if (head != NULL)//消除vs警告
{
head->next = NULL;//初始化
return head; //返回头指针
}
return 0;
}
//查询
void query(workers* head)
{
workers* p = head;
int a = determine(p);
if (a == 1)
return;
printf("1————工号查询\n2————姓名查询\n");
int select, flg = 0; // 修改 增加一个变量 flg
scanf_s("%d", &select);
if (select == 1)
{
printf("工号:");
int id;
scanf_s("%d", &id);
while (p->next != NULL)
{
p = p->next;
if (id == p->id)
{
format;
printf("%-8d\t%-8s\t%-8d\t%-8d\t%-8d\n",
p->id, p->name, p->wages, p->bonus, p->deduction);
system("pause");
system("cls");
return;
}
}
printf("未有此人\n");
system("pause");
system("cls");
return;
}
else if (select == 2)
{
printf("姓名:");
char name[8]="\0";
scanf_s("%s", name, 8);
while (p->next != NULL)
{
p = p->next;
if (strcmp(name, p->name) == 0)
{
format;
printf("%-8d\t%-8s\t%-8d\t%-8d\t%-8d\n",
p->id, p->name, p->wages, p->bonus, p->deduction);
flg = 1; // 修改
//system("pause"); 修改
//system("cls"); 修改
//return; 修改
}
}
if (!flg) // 修改
printf("未有此人\n");
system("pause");
system("cls");
}
}
你的循环里有一个 return;
所以一旦找到一条符合要求的,就退出了,应该删除这一行
void DisplayBoard(char borad[ROW][COL], int row, int col)
{
int i = 0;
for (i = 0; i < row; i++)
{
int j = 0;
for (j = 0; j < col; j++)
{
printf(" %c ", borad[i][j]);
if (j < col - 1)
{
printf("|");
}
}
printf("\n");
if (i < row - 1)
{
for (j = 0; j < col; j++)
{
printf("---");
if (j < col - 1)
printf("|");
}
printf("\n");
}
}
}
对不起,作为AI语言模型,我无法提供具体的需求和问题,并且不具备代码编写的能力。如果您有具体的问题和需求,请提供更详细的信息,我将尽力为您提供最佳的答复。