课程设计之职工信息管理系统

问题及代码:

/********************************************** 
*版权所有 (C)2016,meiyanrumei
* 
*文件名称:职工信息管理系统 
*文件标识:无 
*内容摘要:head.h  1.cpp  main.cpp 
*其他内容:无 
*当前版本:v1.0
*作者:刘倩
*完成日期:2016.12.27 
*************************************************/  
(1)head.cpp代码

struct employee  
{  
    char id[20];//职工号  
    char name[20];//姓名  
    char sex[20];//性别  
    int age;//年龄  
    char edu[20];//学历  
    double salary;//工资    
    char phone[30];//电话     
    char address[30];//地址  

};  

//存储结构  
typedef struct LNode  
{  
    struct employee data;  
    struct LNode* next;  
	
}LNode, *Linklist;  
void menu();//菜单函数
int Initlist(Linklist *L);//初始化单链表  
int CreatList(Linklist L);//头插法生成单链表  
void Display(Linklist L);//显示职工信息 
void Search(Linklist L);//职工信息查询
int SearchID(Linklist L,char id[20]);//职工号查询  
int SearchName(Linklist L,char name[10]);//姓名查询  
int SearchPhone(Linklist L,char phone[30]);//电话查询
void Sort(Linklist L);//职工信息排序
void SortID(Linklist L);//职工号排序  
void SortName(Linklist L);//姓名排序  
void SortSalary(Linklist L);//工资排序 
int Ins(Linklist L, char id[20]);//插入信息  
int Alter(Linklist L,char id[20]);//更改信息  
int Del(Linklist L,char id[20]);//按职工号删除  
void Save(Linklist L);//保存到文件
void Read(Linklist L);//读取信息
(2)1.cpp代码

#include<stdio.h>  
#include<stdlib.h>  
#include<string.h>  
#include"head.h"  
 
#define OK 1  
#define ERROR 0  
/***************************************************************************************
*功能描述:菜单函数
*输入参数:无  
*输出参数:无  
*返回值:1  
*其他说明:消息字段之间用分号(;)隔离  
***************************************************************************************/ 
void menu()
{
	
printf("\t  ∴★∵∴☆.★∵∴☆.  欢迎使用职工信息管理系统     ∴★∵**☆.\n");
printf("\t  █████.★∵∴☆. 1.录入职工信息  2.查询职工信息 ∴★∵**☆.\n");
printf("\t  █田█田█.★∵∴☆.3.职工信息排序  4.插入职工信息 ∴★∵**☆.\n");
printf("\t  █田█田█.★∵∴☆.5.浏览职工信息  6.修改职工信息 ∴★∵**☆.\n");
printf("\t  █田█田█.★∵∴☆.7.删除职工信息  8.保存职工信息 ∴★∵**☆.\n");
printf("\t  █田█田█.★∵∴☆.     【9】退出系统             ∴★∵**☆.\n");
printf("\t  █████.★∵∴☆.                               ∴★∵**☆.\n");
printf("\t◢██□██◣.~~~~~*^_^* \n");
    
}
/***************************************************************************************
*功能描述:初始化单链表  
*输入参数:无  
*输出参数:无  
*返回值:1  
*其他说明:消息字段之间用分号(;)隔离  
***************************************************************************************/  
int Initlist(Linklist *L) //初始化单链表  
{    
    *L=(Linklist )malloc(sizeof(LNode));    
    if((*L)==NULL)    
        return (0);    
    (*L)->next=NULL;   
    return OK;   
}  
  
  
/***************************************************************************************
*功能描述:头插法生成单链表  
*输入参数:职工各项信息  
*输出参数:无  
*返回值:1或0  
*其他说明:消息字段之间用分号(;)隔离  
***************************************************************************************/  
int CreatList(Linklist L)//头插法生成单链表  
{  
    LNode *p,*r,*s;  
	char id[30];
     
    int k=0;
	r=L;
	s=L->next;//链表没有节点时,s=null;/链表有节点时,指向第一个职工节点
	while(r->next!=NULL)//如果存在后继结点时,r指针后移一个
	{
		r=r->next;
	}
	while(L)
	{
        printf("\t职工号:");  
        scanf("%s",id); 
		s=L->next;//每次从第一个节点开始找,看id是否重复
		while(s)
		{
			if(strcmp(s->data.id,id)==0)
			{
				printf("\t提示:职工号为'%s'的职工已经存在!\n",id);
                k=1;
				return OK;
			}
			s=s->next;
		}
        p=(Linklist)malloc(sizeof(LNode)); 
		memset(p,0,sizeof(LNode));//清空内存
        strcpy(p->data.id,id);
        printf("\t姓名:");  
        scanf("%s",p->data.name);  
        printf("\t性别:");  
        scanf("%s",p->data.sex);  
        printf("\t年龄:");  
        scanf("%d",&p->data.age);  
        printf("\t学历:");  
        scanf("%s",p->data.edu);  
        printf("\t工资:");  
        scanf("%lf",&p->data.salary);  
        printf("\t电话:");  
        scanf("%s",p->data.phone);  
        printf("\t地址:");  
        scanf("%s",p->data.address); 
		
       break;
	}
        p->next=NULL;//表明这是链表的尾部结点 
		r->next=p;//将新建的结点加入链表尾部中
        r=p;

	return OK;
}  
  
  
/***************************************************************************************  
*功能描述:显示职工信息  
*输入参数:无  
*输出参数:职工各项信息  
*返回值:无  
*其他说明:消息字段之间用分号(;)隔离  
***************************************************************************************/  
void Display(Linklist L)//显示职工信息  
{  
    LNode *p; 
	p=L->next;  
    if(p==NULL)     
    {  
        printf("\t现在没有职工信息,请先输入职工信息\n\n");  
        return;  
    }  
    printf("\t职工号\t姓名\t\t性别\t年龄\t学历\t工资\t电话\t\t地址\n\n");  
    while(p)  
    {  
        printf("\t%s\t",p->data.id);  
        printf("%s\t\t",p->data.name);  
        printf("%s\t",p->data.sex);  
        printf("%d\t",p->data.age);  
        printf("%s\t",p->data.edu);  
        printf("%0.2lf\t",p->data.salary);  
        printf("%s\t",p->data.phone);  
        printf("%s\t",p->data.address); 
		printf("\n");  
        p=p->next;  
    }  

}  
/***************************************************************************************
*功能描述:职工信息查询  
*输入参数:无
*输出参数:无 
*返回值:1无 
*其他说明:消息字段之间用分号(;)隔离  
***************************************************************************************/  
void Search(Linklist L)//职工信息查询
 {
      int a,k=0; 
      char name[10];  
      char id[20];
	  char phone[30];
      printf("\t请输入查询方式(1按职工号查询,2按姓名查找,3按电话查询):");  
      scanf("%d",&a);  
      if(a==1)  
      {  
		  k=1;
          printf("\t请输入查询职工号:");  
          scanf("%s",&id);  
          SearchID(L,id);//ID查询 	
	  }  
      if(a==2)  
      {  
		  k=1;
          printf("\t请输入查询职工姓名:");  
          scanf("%s",&name);  
          SearchName(L,name);//姓名查询 
	  }  
	  if(a==3)  
      {  
		 k=1;
         printf("\t请输入查
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值