- 在顺序存储结构的职工工资表中,职工工资信息包括:职工号(no)、姓名(name )、职称(pro)、工资(sal)等四项信息,请编写一完整的程序,实现以下功能:
(1)创建信息表:从键盘读入所有职工的信息。(3 分)
(2)删除:给定职工号,删除该职工的信息。(6 分)
(3)修改:对职称为"教授"的职工工资加 100。( 4 分)
(4)在显示器(屏幕)上显示所有职工的各项信息。(3 分)
(5)主程序以菜单的方式调用以上功能。(4 分)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLEN 100
typedef struct {
char no[8],
name[10],pro[6];
float sal;
} DataType;
typedef struct {
DataType data[MAXLEN+1];
int len;
} SeqList;
void input(SeqList*L)
{
int i;
printf("input the length\n");
scanf("%d",&L->len);
printf("input no,name,pro,sal\n");
for(i=1;i<=L->len;i++)
scanf("%s%s%s%f",L->data[i].no,L->data[i].name,L->data[i].pro,&L->data[i].sal);
}
void del(SeqList*L,DataType x)
{
int j,i=1;
while(i<=L->len&&strcmp(L->data[i].no,x.no)!=0)
i++;
if(i>L->len )
printf("not find\n");
else {
for (j=i+1;j<=L->len;j++)
L->data[j-1]=L->data[j];
(L->len)--;
}
}
void modify(SeqList*L)
{
int i; for(i=1;i<=L->len;i++)
if(strcmp(L->data[i].pro,"教授")==0)
L->data[i].sal+=100;
}
void menu()
{
printf("1-------------录入信息\n");
printf("2-------------删除\n");
printf("3-------------修改\n");
printf("4-------------输出\n");
printf("0-------------退出\n");
}
void main()
{
SeqList* L;
DataType x;
int sel,i;
L=(SeqList*)malloc(sizeof(SeqList));
L->len=0;
do {
menu();
printf("input your select\n");
scanf("%d",&sel);
switch(sel){
case 1:input(L);break;
case 2:printf("input no\n"); scanf("%s",x.no); del(L,x); break;
case 3:modify(L); break;
case 4:for(i=1;i<=L->len;i++)
printf("%10s%12s%8s%7.1f\n",L->data[i].no,L->data[i].name,L->data[i].p ro,L->data[i].sal);
}
}
while(sel!=0);
}