2015数据结构课程设计——职工信息管理系统

问题及代码:

/***************************************************************************************/
*版权所有 (C)2015,SongChen
*
*文件名称:messageguanli.cpp
*文件标识:无
*内容摘要:head.h  dingyi.cpp  main.cpp
*其它说明:无
*当前版本:V1.0
*作者:宋晨
*完成日期:20151225
/***************************************************************************************/


头文件head.h

#ifndef HEAD_H_INCLUDED
#define HEAD_H_INCLUDED

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

//存储结构
typedef struct LNode
{
	struct employee data;
	struct LNode* next;
}LNode,*Linklist;

int Initlist(Linklist *L);//初始化单链表
int CreatList(Linklist L);//头插法生成单链表
void Display(Linklist L);//显示职工信息
int SearchID(Linklist L,char id[20]);//ID查询
int SearchName(Linklist L,char name[10]);//姓名查询
void SortID(Linklist L);//编号排序
void SortName(Linklist L);//姓名排序
int Ins(Linklist L, char id[20]);//插入信息
int Alter(Linklist L,char id[20]);//更改信息
int Del(Linklist L,char id[20]);//按ID删除

#endif // HEAD_H_INCLUDED


各函数的定义 dingyi.cpp

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "head.h"

#define OK 1
#define ERROR 0

/***************************************************************************************/
*功能描述:初始化单链表
*输入参数:无
*输出参数:无
*返回值:1
*其他说明:消息字段之间用分号(;)隔离
/***************************************************************************************/
int Initlist(Linklist *L) //初始化单链表
{  
	(*L)=(Linklist)malloc(sizeof(LNode));  
	if(!(*L))  
		return (0);  
	(*L)->next=NULL; 
	return OK; 
}


/***************************************************************************************/
*功能描述:头插法生成单链表
*输入参数:职工各项信息
*输出参数:无
*返回值:1或0
*其他说明:消息字段之间用分号(;)隔离
/***************************************************************************************/
int CreatList(Linklist L)//头插法生成单链表
{
	Linklist p;
	p=(Linklist)malloc(sizeof(LNode));
	if(!p)
	{
		return (0);
	}
	else
	{
		printf("请输入员工信息\n");
		printf("编号:");
		scanf("%s",p->data.id);
		printf("姓名:");
		scanf("%s",p->data.name);
		printf("性别:");
		scanf("%s",p->data.sex);
		printf("年龄:");
		scanf("%s",p->data.age);
		printf("学历:");
		scanf("%s",p->data.edu);
		printf("工资:");
		scanf("%s",p->data.salary);
		printf("电话:");
		scanf("%s",p->data.phone);
		printf("地址:");
		scanf("%s",p->data.address);
	}
	p->next=L->next;
	L->next=p;
	return OK;
}


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


/***************************************************************************************/
*功能描述:ID查询
*输入参数:职工工号
*输出参数:该职工各项信息
*返回值:1
*其他说明:消息字段之间用分号(;)隔离
/***************************************************************************************/
int SearchID(Linklist L,char id[20])//ID查询
{
	LNode *p;  p=L;
	while(p)
	{
		if(strcmp(p->data.id,id)==0)
		{
			printf("编号        %s\n",p->data.id);
			printf("姓名        %s\n",p->data.name);
			printf("性别        %s\n",p->data.sex);
			printf("年龄        %s\n",p->data.age);
			printf("学历        %s\n",p->data.edu);
			printf("工资        %s\n",p->data.salary);
			printf("电话        %s\n",p->data.phone);
			printf("地址        %s\n",p->data.address);
		}
		p=p->next;
	}
	return OK;
}


/***************************************************************************************/
*功能描述:姓名查询
*输入参数:职工姓名
*输出参数:该职工各项信息
*返回值:1
*其他说明:消息字段之间用分号(;)隔离
/***************************************************************************************/
int SearchName(Linklist L,char name[10])//姓名查询
{
	LNode *p;  p=L;
	while(p)
	{
		if(strcmp(p->data.name,name)==0)
		{
			printf("编号         %s\n",p->data.id);
			printf("姓名         %s\n",p->data.name);
			printf("性别         %s\n",p->data.sex);
			printf("年龄         %s\n",p->data.age);
			printf("学历         %s\n",p->data.edu);
			printf("工资         %s\n",p->data.salary);
			printf("电话         %s\n",p->data.phone);
			printf("地址         %s\n",p->data.address);
		}
		p=p->next;
	}
	return OK;
}


/***************************************************************************************/
*功能描述:编号排序
*输入参数:无
*输出参数:按照编号排序后各职工各项信息
*返回值:无
*其他说明:消息字段之间用分号(;)隔离
/***************************************************************************************/
void SortID(Linklist L)//编号排序
{
	Linklist p,q;
	struct employee temp;
	for(p=L->next;p!=NULL;p=p->next)
     {
		for(q=p->next;q!=NULL;q=q->next)
		{
			if((strcmp(p->data.id,q->data.id)>0))
			{
				temp=q->data;
				q->data=p->data;
				p->data=temp;
			}
		}
	}
}


/***************************************************************************************/
*功能描述:姓名排序
*输入参数:无
*输出参数:按照姓名排序后各职工各项信息
*返回值:无
*其他说明:消息字段之间用分号(;)隔离
/***************************************************************************************/
void SortName(Linklist L)//姓名排序
{
	Linklist p,q;
	struct employee temp;
	for(p=L->next;p!=NULL;p=p->next)
	{
		for(q=p->next;q!=NULL;q=q->next)
		{
			if((strcmp(p->data.name,q->data.name)>0))
			{
				temp=q->data;
				q->data=p->data;
				p->data=temp;
			}
		}
	}
}


/***************************************************************************************/
*功能描述:插入信息
*输入参数:要插入员工的信息
*输出参数:无
*返回值:1
*其他说明:消息字段之间用分号(;)隔离
/***************************************************************************************/
int Ins(Linklist L, char id[20])//插入信息
{
	LNode *pre,*s;
	pre=L;
	while(pre->next!=NULL)
	{
		pre=pre->next;
		if((strcmp( pre->data.id,id))==0)
		{
			s=(LNode*)malloc(sizeof(LNode));
			printf("请输入要插入员工信息\n");
			printf("编号:");
			scanf("%s",s->data.id);
			printf("姓名:");
			scanf("%s",s->data.name);
			printf("性别:");
			scanf("%s",s->data.sex);
			printf("年龄:");
			scanf("%s",s->data.age);
			printf("学历:");
			scanf("%s",s->data.edu);
			printf("工资:");
			scanf("%s",s->data.salary);
			printf("电话:");
			scanf("%s",s->data.phone);
			printf("地址:");
			scanf("%s",s->data.address);
			s->next=pre->next;
			pre->next=s;
			printf("插入员工信息成功!\n");
		}
	}
	return OK;
}


/***************************************************************************************/
*功能描述:更改信息
*输入参数:要更改的员工的某项信息
*输出参数:无
*返回值:1
*其他说明:消息字段之间用分号(;)隔离
/***************************************************************************************/
int Alter(Linklist L,char id[20])//更改信息
{
	int c;
	LNode *p;
	p=L;
	while(p)
	{
		if(strcmp(p->data.id,id)==0)
		{
			printf("请输入要修改的选项(1编号,2姓名,3性别,4出生年月\n");
			printf("            5学历,6职务,7电话,8地址):");
			scanf("%d",&c);
			switch(c)
			{
			case 1:
				{
					printf("请输入修改员工编号(原编号是%s):",p->data.id);
					scanf("%s",p->data.id);
					printf("修改员工信息成功!\n");
					break;
				}
			case 2:
				{
					printf("请输入员工修改姓名(原姓名是%s):",p->data.name);
					scanf("%s",p->data.name);
					printf("修改员工信息成功!\n");
					break;
				}
			case 3:
				{
					printf("请输入员工修改性别原(性别是%s):",p->data.sex);
					scanf("%s",p->data.sex);
					printf("修改员工信息成功!\n");
					break;
				}
			case 4:
				{
					printf("请输入员工修改年龄(原年龄是%s):",p->data.age);
					scanf("%s",p->data.age);
					printf("修改员工信息成功!\n");
					break;
				}
			case 5:
				{
					printf("请输入员工修改学历(原学历是%s):",p->data.edu);
					scanf("%s",p->data.edu);
					printf("修改员工信息成功!\n");
					break;
				}
			case 6:
				{
					printf("请输入员工修改工资(原工资是%s):",p->data.salary);
					scanf("%s",p->data.salary);
					printf("修改员工信息成功!\n");
					break;
				}
			case 7:
				{
					printf("请输入员工修改电话(原电话是%s):",p->data.phone);
					scanf("%s",p->data.phone);
					printf("修改员工信息成功!\n");
					break;
				}
			case 8:
				{
					printf("请输入员工修改地址(原地址是%s):",p->data.address);
					scanf("%s",p->data.address);
					printf("修改员工信息成功!\n");
					break;
				}
			}
		}
		p=p->next;
	}
	return OK;
 }


/***************************************************************************************/
*功能描述:按ID删除
*输入参数:要删除的员工的工号
*输出参数:无
*返回值:1
*其他说明:消息字段之间用分号(;)隔离
/***************************************************************************************/
int Del(Linklist L,char id[20])//按ID删除
{
	LNode *p;  LNode *r;
	p=L->next;  r=L;  while(!(strcmp(p->data.id,id)==0)&&p)
	{
		r=p;
		p=p->next;
	}
	if(!p)
		printf("\n删除位置不合理\n");
	else
	{
		r->next=p->next;
		free(p);
		printf("删除成功!\n");
	}
	return OK;
}



main.cpp

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "head.h"
#include "dingyi.cpp"

#define OK 1
#define ERROR 0


/***************************************************************************************/
*功能描述:测试函数
*输入参数:你的选择
*输出参数:无
*返回值:0
*其他说明:完成各个函数测试,消息字段之间用分号(;)隔离
/***************************************************************************************/
int main()//主函数
{
	Linklist L;
	int a,b;
	int x=1;
	int y;
	char m;
	char name[10];
	char id[20];
	Initlist(&L);//初始化单链表
	while(x)
	{
		printf("◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
		printf("◆        欢迎使用职工信息管理系统      ◆\n");
		printf("◆                                      ◆\n");
		printf("◆              【菜单】                ◆\n");
		printf("◆          1.录入职工信息              ◆\n");
		printf("◆          2.查询职工信息              ◆\n");
		printf("◆          3.职工信息排序              ◆\n");
		printf("◆          4.插入职工信息              ◆\n");
		printf("◆          5.浏览职工信息              ◆\n");
		printf("◆          6.修改职工信息              ◆\n");
		printf("◆          7.删除职工信息              ◆\n");
		printf("◆          【8】退出系统               ◆\n");
		printf("◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");

		printf("请选择操作序号并按回车:");
		scanf("%d",&y);
		switch(y)
		{
		case 1:
			{
				printf("*********************欢迎进入录入模块********************\n");
				CreatList(L);//头插法生成单链表
				do
				{
					printf("是否继续输入?(y/n):");
					getchar();
					scanf("%c",&m);
					if(m=='y')
					{
						CreatList(L);//显示职工信息
					}
				}
				while(m!='n');
				printf("*******************欢迎下次进入录入模块******************\n");
				break;
			}
		case 2:
			printf("*********************欢迎进入查询模块********************\n");
			printf("请输入查询方式(1按编号查询,2按姓名查找):");
			scanf("%d",&a);
			if(a==1)
			{
				printf("请输入查询职工编号:");
				scanf("%s",&id);
				SearchID(L,id);//ID查询
			}
			if(a==2)
			{
				printf("请输入查询职工姓名:");
				scanf("%s",&name);
				SearchName(L,name);//姓名查询
			}
			printf("*******************欢迎下次进入查找模块******************\n");
			break;
		case 3:
			printf("*********************欢迎进入排序模块********************\n");
			printf("请输入排序方式(1按编号排序,2按姓名排序):");
			scanf("%d",&b);
			if(b==1)
			{
				printf("按编号排序为:\n");
				SortID(L);//编号排序
				Display(L);
			}
			if(b==2)
			{
				printf("按姓名排序为:\n");
				SortName(L);//姓名排序
				Display(L);//显示职工信息
			}
			printf("*******************欢迎下次进入排序模块******************\n");
			break;
		case 4:
			printf("*********************欢迎进入插入模块********************\n");
			printf("请输入要插入查找的职工号:");
			getchar();
			scanf("%s",&id);
			Ins(L,id);//插入信息
			printf("*******************欢迎下次进入插入模块******************\n");
			break;
		case 5:
			printf("*********************欢迎进入显示模块********************\n");
			printf("所有职工信息如下所示\n");
			Display(L);//显示职工信息
			printf("*******************欢迎下次进入显示模块******************\n");
			break;
		case 6:
			printf("*********************欢迎进入修改模块********************\n");
			printf("请输入要修改员工编号:");
			getchar();
			scanf("%s",&id);
			Alter(L,id);//更改信息
			printf("******************欢迎下次进入修改模块*******************\n");
			break;
		case 7:
			printf("*********************欢迎进入删除模块********************\n");
			printf("请输入删除员工编号:");
			getchar();
			scanf("%s",&id);
			Del(L,id);//按ID删除
			printf("******************欢迎下次进入删除模块*******************\n");
			break;
		case 8: x=0;
			printf("****************欢迎下次进入员工管理系统*****************\n");
			break;
		default:
			printf("请输入正确序号!\n");
			break;
		}
	}
	return 0;
}


运行结果:

2015数据结构课程设计——职工信息管理系统_第1张图片

2015数据结构课程设计——职工信息管理系统_第2张图片

2015数据结构课程设计——职工信息管理系统_第3张图片

2015数据结构课程设计——职工信息管理系统_第4张图片

2015数据结构课程设计——职工信息管理系统_第5张图片

2015数据结构课程设计——职工信息管理系统_第6张图片

2015数据结构课程设计——职工信息管理系统_第7张图片

2015数据结构课程设计——职工信息管理系统_第8张图片

2015数据结构课程设计——职工信息管理系统_第9张图片

你可能感兴趣的:(2015数据结构课程设计——职工信息管理系统)