#include "stdio.h"
#include "stdlib.h"
#include "windows.h "     //清屏函数头文件
#include "string.h"

typedef struct Stuff
{
 char number[10];      //编号
 char name[10];        //姓名
 char sex[8];          //性别
 char birthday[10];    //生日
 char degree[20];      //学历
 char business[20];    //职务
 char phone[15];       //电话
 char place[50];       //住址
 char con[50];         //判断关键字
 struct Stuff *next;  
}Stuff;

char          Menu();                             //菜单函数
Stuff         *App(Stuff *head);                  //添加函数
void          Sort(Stuff *head);                  //排序函数
Stuff         *Search(Stuff *head);               //查找函数
Stuff         *Change(Stuff *head,char n[10]);    //更改函数
void          Scpy(char *p,char *q);              //排序中用于交换员工信息
Stuff         *Del(Stuff *head,char n[10]);       //删除函数
int           Sel(char ch,Stuff *p,Stuff *q);     //判断排序及关键字专用函数
void          Show(Stuff *head);                  //输出函数
void          Fre(Stuff *head);                   //释放函数
int           n=1;                                //定义全局变量,实现人数统计



//菜单函数
char Menu(void)
{
	int ch;
    printf("---------------------------菜单-------------------------\n");
    printf("                     1.添加员工信息\n");
    printf("                     2.员工信息排序\n");
    printf("                     3.查找员工信息\n");
    printf("                     4.输出员工信息\n");
    printf("                     5.更改员工信息\n"); 
    printf("                     6.删除员工信息\n"); 
    printf("                     0.退出\n");
printf("--------------------------------------------------------\n");
printf("请选择你的操作:");  
       scanf(" %d",&ch);
    return ch;
}

//添加成员函数
Stuff *App(Stuff *head)
{
	Stuff *p=NULL,*q=head;
    while(n)
	{
		p=(Stuff *)malloc(sizeof(Stuff));      //申请结构体空间
        if(p==NULL)
		{
			printf("空间不足,自动退出系统!\n");
            exit(0);
		}
        p->next =NULL;                                        //指针域为空
        printf("请输入第%d名员工:\n",n);
        printf(" 编号 | 姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 :\n");
        getchar();
        scanf("%s",p->number );
        if(strcmp(p->number,"#"))
		{
			++n;
			scanf("%s%s%s%s%s%s%s",p->name ,p->sex ,p->birthday ,p->degree ,p->business ,p->phone ,p->place );
            p->con[0]='\0';                       //防止后面判断出现随机值
            if(head==NULL)
				head=p;
            else
			{
				while(q->next !=NULL) 
                   q=q->next ;
                   q->next =p;
			}
            q=p;                                             //尾插法
		}
		if(!strcmp(p->number ,"#"))
		{
			free(p);                         //完成添加,释放多余空间
            break;
		}
	}
    return head;
}

//排序函数
void Sort(Stuff *head)
{
	char ch;
    Stuff *p,*q,*r;
    while(1)
	{
		printf("请选择排序条件:1.编号|2.姓名|0.退出\n");
		getchar();
        scanf("%c",&ch);
        if(ch=='0')
        break;
        if(ch<'1'||ch>'2')
		{
			printf("输入错误,请重新输入!\n");
            continue;
		}
        p=head;
        while(p->next!=NULL)                                 //选择排序
		{
			q=p->next;
            r=p;
            while(q!=NULL)
			{
				if(Sel(ch,r,q))                             //调用判断函数
					r=q;
                q=q->next;
			}
            if(r!=p)                                        //交换信息
			{
				Scpy(r->number,p->number);
                Scpy(r->name,p->name);
                Scpy(r->sex,p->sex);
				Scpy(r->birthday,p->birthday);
                Scpy(r->degree,p->degree);
                Scpy(r->business,p->business);
                Scpy(r->phone,p->phone);
                Scpy(r->place,p->place);
			}
            p=p->next;
		}
         Show(head);                                          //输出
	}
}

//交换函数
void Scpy(char *p,char *q)
{
	char c[50];
    strcpy(c,p);
    strcpy(p,q);
    strcpy(q,c);
}

//判断函数
int Sel(char ch,Stuff *p,Stuff *q)
{
	switch(ch)                                  //实现各个关键字查找
	{
	case '1':
return strcmp(q->number ,p->number )<0||strcmp(q->con ,p->number )==0 ;    case '2':
        return strcmp(q->name ,p->name )<0||strcmp(q->con ,p->name  )==0 ;
    default :
        exit(0);
	}
}
 
//查找函数
Stuff *Search(Stuff *head)
{
	Stuff *p=NULL,*q;
    int          flag;                                     //查找判断
    char         ch,sh;                                    //两个控制变量
    while(1)
	{
		printf("请输入要查找的条件:1.编号2.姓名0.退出\n");
          scanf(" %c",&ch);
        if(ch=='0')
          break;
        if(ch<'1'||ch>'2')
		{
			printf("输入错误,请重新输入!\n");
			continue;
		}
		getchar();
		printf("请输入:");
		    gets(q->con);
		p=head;                                                //指向表头
		flag=0;
		while(p!=NULL)
		{
			if(strcmp(q->con,p->number)==0||strcmp(q->con,p->name)==0)
			{
				printf("员工信息如下:\n");
				printf(" 编号 | 姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 \n%s  \t%s  \t%s  \t%s  \t%s  \t%s  \t%s  \t%s\n",p->number ,p->name ,p->sex ,p->birthday ,p->degree ,p->business ,p->phone ,p->place );
				printf("是否需要:1.更改 2.删除 3.继续\n");
				scanf(" %c",&sh);
				if(sh=='1')
					Change(head,p->number);                    //调用更改函数
				else if(sh=='2')
					head=Del(head,p->number);             //调用删除函数				flag=1;
				break;
			}
			p=p->next ;
		}
		if(flag==0)
			printf("没有找到该员工信息!\n");
	}
	return head;
}

//更改函数
Stuff *Change(Stuff *head,char n[10])
{
	Stuff *p=head;
	int flag=0;
	if(head==NULL)
		printf("信息表为空,请先建立信息表!\n");
	else
	{
		while(p!=NULL)
		{
			if(!strcmp(p->number,n))
			{
				printf("找到员工,请输入新的信息:\n 编号 | 姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 \n");
				scanf("%s%s%s%s%s%s%s%s",p->number ,p->name ,p->sex ,p->birthday ,p->degree ,p->business ,p->phone ,p->place );
				printf("员工信息如下:\n");
				flag=1;
			}
			p=p->next;
		}
		if(flag==0)
			printf("未找到该员工信息!\n");
	}
	Show(head);
    return head;
}

//删除函数
Stuff *Del(Stuff *head,char n[10])
{
	Stuff *p,*pr;
	int flag;
	flag=0;
	p=head,pr=head;
	if(head==NULL)
		printf("未找到员工信息!\n");
	else
	{
		while(strcmp(p->number ,n)&&p->next !=NULL)
		{
			pr=p;
			p=p->next ;
		}
		if(!strcmp(p->number ,n))
		{
			if(p==head)
				head=p->next ;
			else
				pr->next=p->next ;
			free(p);
			printf("删除成功!\n");
			n--;
		}
		else
			printf("未找到员工信息!\n");
	}
	Show(head); 
	return head;
}

//输出函数
void Show(Stuff *head)
{
	Stuff *p=head;
	int i=1;
	if(head!=NULL)
	{
		printf("员工信息如下:\n");
	    while(p!=NULL)
		{
			printf("%d. %s  %s  %s  %s  %s  %s  %s  %s\n"
	,i++,p->number ,p->name ,p->sex ,p->birthday ,p->degree ,p->business ,p->phone ,p->place);
		    p=p->next ;
		}
	}
	else
	{
		printf("信息为空!\n");
	}
}

//释放函数
void Fre(Stuff *head)
{
	Stuff *p;
	while(head!=NULL)
	{
		p=head;
		head=head->next ;
		free(p);
	}
} 

void main()
{
	char Index[10];
    Stuff *head=NULL;                       //链表头指针定义
    printf("---------------欢迎使用《员工信息管理系统》-------------\n");
    Sleep(1000);
    while(1)
	{
		switch(Menu())
		{
		case 1:
			printf("请输入员工信息,直接输入'#'结束\n");
            head=App(head);
            break;
        case 2:
            Sort(head);
            break;
        case 3:
            head=Search(head);
            break;
        case 4:
            Show(head);
            break;
        case 5:
            printf("请输入员工编号:");
            scanf("%s",Index);
            Change(head,Index);
            break;
        case 6:
            printf("请输入员工编号:");
            scanf("%s",Index);
            head=Del(head,Index);
            break;
        case 0:
            printf("-------------------欢迎下次光临!-----------------\n");
			Sleep(2000);
            exit(0);
			break;
        default:
            printf("输入错误,请重新输入!\n");
		}
        printf("按Enter键继续~");
        getchar();
		getchar();
        system("cls");          //清屏效果
	}
    Fre(head);
	
}   //结束




系统菜单

 

windows设置java项目开机后台启动_#include

输入数据

(1)输入操作字符1;  

(2)输入员工信息;

(3)输入“#”字符结束输入。



windows设置java项目开机后台启动_#include_02

显示数据

                     

windows设置java项目开机后台启动_#include_02

信息排序

                    

windows设置java项目开机后台启动_选择排序_04

更改信息

windows设置java项目开机后台启动_#include_05

 

删除信息


windows设置java项目开机后台启动_#include_06