/*
问题描述:每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。系统能够完成员工信息的查询、更新、插入、删除、排序等功能。
基本要求:排序:按不同关键字,对所有员工的信息进行排序;查询:按特定条件查找员工;更新,按编号对某个员工的某项信息进行修改;插入,加入新员工的信息;删除,按编号删除已离职的员工的信息。
选作内容:实现图形用户界面。
通过链表实现
数据结构:
struct workers
{
char name[15];//姓名
char department[18];//单位
char gender;//性别
unsigned int age;//年龄
unsigned long telephone;//电话
unsigned long wage;//工资
unsigned long num;//职工号
struct workers *next;
};
操作实现:
/*插入职工信息,通过链表实现*/
/*具体实现职工信息的插入*/
/*对职工信息的删除操作*/
/*修改操作*/
/*实现对员工信息的查找*/
/*排序*/
/* 输出员工信息 */
/* 显示职工工资情况 计算平均工资*/
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
typedef struct workers
{
char name[15];//姓名
char department[18];//单位
char gender;//性别
unsigned int age;//年龄
unsigned long tel;//电话
unsigned long wage;//工资
unsigned long num;//职工号
struct workers *next;
}Node;
void input(Node *p)
{
printf("请输入姓名:\n");
scanf("%s",p->name);
printf("请输入单位:\n");
scanf("%s",p->department);
getchar();
printf("请输入性别:\n");
scanf("%c",&p->gender);
printf("请输入年龄:\n");
scanf("%d",&p->age);
printf("请输入电话:\n");
scanf("%ld",&p->tel);
printf("请输入工资:\n");
scanf("%ld",&p->wage);
printf("请输入职工号:\n");
scanf("%ld",&p->num);
p->next=NULL;
}
Node *create()
{
int i,n;
Node *p,*h,*q;
h=(Node*)malloc(sizeof(Node));
p=h;
printf("请输入你想新增员工的人数:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
q=(Node*)malloc(sizeof(Node));
input(q);
p->next=q;
p=q;
}
return h;
}
int update(Node *h)
{
unsigned long nu;
Node *p;
p=h->next;
printf("请输入你想查找的员工的职工号:\n");
scanf("%ld",&nu);
if(!p)
return 0;
else
{
while(p&&p->num!=nu)
{
p=p->next;
}
if(!p)
return 0;
else
{
printf("请重新输入姓名:\n");
scanf("%s",p->name);
printf("请重新输入单位:\n");
scanf("%s",p->department);
getchar();
printf("请重新输入性别:\n");
scanf("%c",&p->gender);
printf("请重新输入年龄:\n");
scanf("%d",&p->age);
printf("请重新输入电话:\n");
scanf("%ld",&p->tel);
printf("请重新输入工资:\n");
scanf("%ld",&p->wage);
printf("请重新输入职工号:\n");
scanf("%ld",&p->num);
return 1;
}
}
}
void insert(Node *h)
{
Node *p,*q;
p=h;
q=(Node*)malloc(sizeof(Node));
input(q);
while(p->next)
{
p=p->next;
}
p->next=q;
}
void output(Node *p)
{
printf("姓名 单位 性别 年龄 电话 工资 职工号 \n");
printf("%-8s%-8s%-8c%-8d%-12ld%-12ld%-8ld\n",p->name,p->department,p->gender,p->age,p->tel,p->wage,p->num);
}
void output_age(Node *p[],int n)
{
printf("姓名 单位 性别 年龄 电话 工资 职工号 \n");
int i;
for(i=0;i<n;i++)
printf("%-8s%-8s%-8c%-8d%-12ld%-12ld%-8ld\n",p[i]->name,p[i]->department,p[i]->gender,p[i]->age,p[i]->tel,p[i]->wage,p[i]->num);
}
void travel(Node *h)
{
Node *p;
p=h->next;
if(!h->next)
{
printf("现在一个人都没有!\n");
return;
}
printf("姓名 单位 性别 年龄 电话 工资 职工号 \n");
while(p)
{
printf("%-8s%-8s%-8c%-8d%-12ld%-12ld%-8ld\n",p->name,p->department,p->gender,p->age,p->tel,p->wage,p->num);
p=p->next;
}
}
Node *search_name(Node *h,char na[])
{
单链表的应用:用C语言实现简单的员工管理系统(新建、增、删、改、查、排序)
最新推荐文章于 2024-09-18 08:50:42 发布
本文介绍了如何使用C语言通过链表实现一个简单的员工管理系统,包括员工信息的增删改查、排序等功能。系统允许用户按不同关键字对员工信息进行排序,按特定条件查询员工,修改员工的某项信息,插入新员工,删除离职员工。代码中定义了员工结构体并实现了相关操作函数。
摘要由CSDN通过智能技术生成