C语言员工管理系统-创新互联

#include

“只有客户发展了,才有我们的生存与发展!”这是创新互联公司的服务宗旨!把网站当作互联网产品,产品思维更注重全局思维、需求分析和迭代思维,在网站建设中就是为了建设一个不仅审美在线,而且实用性极高的网站。创新互联对成都做网站、网站建设、网站制作、网站开发、网页设计、网站优化、网络推广、探索永无止境。

#include

#include

#include

struct employee

{

char no[40]; //职工号

char name[40]; //职工姓名

char sex[10]; //职工性别

int age; //职工年龄

struct employee *next;//下一结点指针

};

typedef struct employee EMP;

EMP *h;

void load(); //读文件数据,并创建链表

void save(); //将链表中数据写到文件中

void add(EMP *p); //链表中增加职工结点

void del(char *s); //链表中删除指定姓名的职工结点

void update(); //链表中更新职工结点中的数据

void browse(); //在屏幕上显示链表中所有结点数据

void menu(); //显示系统主菜单

void delEmp(); //删除职工

void addEmp(); //增加职工

void main(void)

{

int op;//operation

h =(EMP *)malloc(sizeof(EMP)); //创建链表的头结点

h->next = NULL; //初始化链表头节点中下一节点指针为NULL

menu();

scanf("%d",&op);

while(op!=0)

{

switch(op)

{

case 1:

load();

break;

case 2:

save();

break;

case 3:

addEmp();

break;

case 4:

delEmp();

break;

case 5:

update();

break;

case 6:

browse();

break;

}

menu();

scanf("%d",&op);

}

}

//显示系统主菜单函数

void menu()

{

printf(" Main Menu\n");

printf(" **********https://www.2345.com/?kcys123************ \n");

printf(" * 0:quit 1 :load * \n");

printf(" * 2:save 3 :add * \n");

printf(" * 4:delete 5 :update * \n");

printf(" * 6:browse 7 :default* \n");

printf(" ********https://www.2345.com/?kcys123************** \n");

}

//读文件数据,并创建链表函数

void load()

{

FILE *fp;

char ch;

fp = fopen("data.txt","r");

if(fp==NULL)

{

printf("打开文件错误,按任意返回主菜单\n");

getch();//程序停下来,等待输入

return;

}

while(!feof(fp))

{

EMP *node =(EMP *)malloc(sizeof(EMP));

node->next = NULL;

fscanf(fp,"%s%s%s%d",node->no,node->name,node->sex,&node->age);//从文件中读一行职工信息

add(node); // 调用函数增加链表结点

}

fclose(fp);

}

//链表中增加职工结点的函数

void add(EMP *p)

{

EMP *q;

q = h->next; //将q指针指向链表中第一个职工结点

if(q==NULL) //如果q指针为NULL,则表示当前链表为空

{

h->next = p; //p指针指向的结点为链表中第一个结点

p->next = NULL;

}

else

{

while(q->next!=NULL) //通过while循环找到链表中最后一个结点

{

q = q ->next;

}

q->next = p; //将q指针指向的最后一个结点的next指针指向新增结点

p->next =NULL; //现在p指针指向的是最后一个结点,因此将该节点的next指针设为NULL

}

}

//增加职工函数

void addEmp()

{

EMP *node;

node = (EMP *)malloc(sizeof(EMP));

node->next = NULL;

printf("input the employee's no name sex age:\n");

scanf("%s%s%s%d",node->no,node->name,node->sex,&node->age);

add(node);

}

//删除职工函数

void delEmp()

{

char name[40];

printf("input del name:\n");

scanf("%s",name);

del(name);

}

//在屏幕上显示链表中所有职工结点数据函数

void browse()

{

EMP *node;

node = h->next; //node指针指向链表第一个结点

printf("Employee no name age sex\n");

while(node) //遍历链表

{

printf("%12s%6s%5d%4s\n",node->no,node->name,node->age,node->sex);

node = node->next; //node指针指向下一个职工结点

}

printf("\n");

}

//将链表中数据写到文件中的函数

void save()

{

FILE *fp;

EMP *node;

fp = fopen("data.txt","w"); //以写的方式打开文件

node = h->next; //node指针指向链表第一个结点

while(node!=NULL)

{ //"%s %s %s %d\n" 格式符之间有空格

fprintf(fp,"%s %s %s %d\n",node->no,node->name,node->sex,node->age);

node = node ->next;

}

fclose(fp);

}

//删除职工结点的函数

void del(char *s)

{

EMP *p,*q;

p = h->next;//链表中第一个节点 p->next=p->next->next;

q = p->next;//链表中第二个节点

if(strcmp(s,p->name)==0)

{h->next=p->next;

free(p);

return;

}

while(q!=NULL)

{

if(strcmp(s,q->name)==0)

{

p->next = q->next;

free(q);

break;

}

p = q;

q = q->next;

}

}

//更新职工结点的函数

void update()

{

char name[40];

int flag = 0;

EMP *p;

printf("input the name:\n");

scanf("%s",name);

p = h->next;

while(p!=NULL)

{

if(strcmp(name,p->name)==0)

{

printf("input the age:\n");

scanf("%d",&p->age);

printf("input the sex:\n");

getchar();

scanf("%c",&p->sex);

flag = 1;

break;

}

p=p->next;

}

if(flag==0)

{

printf("error username\n");

}

}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻标题:C语言员工管理系统-创新互联
文章起源:http://azwzsj.com/article/iejjs.html