VC++6.0环境下 简单的职工管理系统
简单的职工管理系统
一、实验目的
1 ()熟练掌握线性表基本操作及应用。
2 ()利用线性表实现简单的职工管理系统。
二、实验内容:
【问题描述】
对单位的职工进行管理,包括插入、删除、查找、排序等功能。
【基本要求】
职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。
1 ()新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。2 ()删除一名职工:从职工管理文件中删除一名职工对象。3 ()查询:从职工管理文件中查询符合某些条件的职工。4 ()修改:检索某个职工对象,对其某些属性进行修改。5 ()排序:按某种需要对职工对象文件进行排序。
【测试数据】
自己指定。注意尽量覆盖算法的各种情况。
【实现提示】
职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。1 ()由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。2"" ()对职工对象中的姓名按字典顺序进行排序。
3 ()对排序后的职工对象进行增、删、查询、修改、排序等操作。
【选作内容】
将职工对象按散列法存储,并设计解决冲突的方法。在此基础上实现增、删、查询、修改、
排序等操作。
头文件
/*生成单链表*/
int CreatList(Linklist &L) {
Linklist h=NULL;
Linklist p=(Linklist)malloc(sizeof(LNode));
if(NULL==p)
{
printf("录入失败提示:内存不足!\n");
return -1;
}
h=L->next;
while(h)
{
if(h->name==p->name)
{
free(p);
printf("录入失败提示:此职工号已经存在!\n");
return -1;
}
h=h->next;
}
printf("请输入员工姓名\n");
scanf("%s",p->name);
printf("请输入员工性别\n");
scanf("%s",p->sex);
printf("请输入员工出生年月\n");
scanf("%s",p->birthdate);
printf("请输入员工工作年月\n");
scanf("%s",p->workdate);
printf("请输入员工学历\n");
scanf("%s",p->edu);
printf("请输入员工职务\n");
scanf("%s",p->duty);
printf("请输入员工电话\n");
scanf("%s",p->phone);
printf("请输入员工地址\n");
scanf("%s",p->address);
p->next=L->next;
L->next=p;
printf("录入成功!\n");
return -1;
}
/*初始化单链表*/
int Initlist(Linklist &L) {
L=(Linklist)malloc(sizeof(LNode));
if(!L)
return (0);
L->next=NULL;
return OK;
}
/*显示所有员工信息*/
void Display(Linklist &L)
{
Linklist p;
for(p=L->next;p;p=p->next)
{
printf("姓名 %s\n",p->name);
printf("性别 %s\n",p->sex);
printf("出生年月 %s\n",p->birthdate);
printf("工作年月 %s\n",p->workdate);
printf("学历 %s\n",p->edu);
printf("职务 %s\n",p->duty);
printf("电话 %s\n",p->phone);
printf("地址 %s\n",p->address);
printf("============================\n");
}
}
/*出生年月查询*/
int SearchBirthdate(Linklist &L,char birthdate[20])
{
LNode *p;
p=L;
while(p)
{
if(strcmp(p->birthdate,birthdate)==0)
{
printf("姓名 %s\n",p->name);
printf("性别 %s\n",p->sex);
printf("出生年月 %s\n",p->birthdate);
printf("工作年月 %s\n",p->workdate);
printf("学历 %s\n",p->edu);
printf("职务 %s\n",p->duty);
printf("电话 %s\n",p->phone);
printf("地址 %s\n",p->address);
return OK;
}
p=p->next;
}
printf("没有此人\n");
return 0;
}
/*姓名查询*/
int SearchName(Linklist &L,char name[10])
{
LNode *p;
p=L;
while(p)
{
if(strcmp(p->name,name)==0)
{
printf("姓名 %s\n",p->name);
printf("性别 %s\n",p->sex);
printf("出生年月 %s\n",p->birthdate);
printf("工作年月 %s\n",p->workdate);
printf("学历 %s\n",p->edu);
printf("职务 %s\n",p->duty);
printf("电话 %s\n",p->phone);
printf("地址 %s\n",p->address);
return OK;
}
p=p->next;
}
printf("没有此人\n");
return 0;
}
/* 性别查询*/
void SearchSex(Linklist &L,char sex[10])
{
LNode *p;
p=L;
int tag=1;
while(p)
{
if(strcmp(p->sex,sex)==0)
{
printf("姓名 %s\n",p->name);
printf("性别 %s\n",p->sex);
printf("出生年月 %s\n",p->birthdate);
printf("工作年月 %s\n",p->workdate);
printf("学历 %s\n",p->edu);
printf("职务 %s\n",p->duty);
printf("电话 %s\n",p->phone);
printf("地址 %s\n",p->address);
tag=0;
}
p=p->next;
}
if(tag==1)
{
printf("找不到符合此条件的职工!");
}
}
/* 地址查询*/
int SearchAddress(Linklist &L,char address[30])
{
LNode *p;
p=L;
while(p)
{
if(strcmp(p->address,address)==0)
{
printf("姓名 %s\n",p->name);
printf("性别 %s\n",p->sex);
printf("出生年月 %s\n",p->birthdate);
printf("工作年月 %s\n",p->workdate);
printf("学历 %s\n",p->edu);
printf("职务 %s\n",p->duty);
printf("电话 %s\n",p->phone);
printf("地址 %s\n",p->address);
return OK;
}
p=p->next;
}
printf("没有此人\n");
return 0;
}
/*姓名排序*/
void SortName(Linklist &L ,char name[10])
{
Linklist La;
Linklist p,q,m;
La=(Linklist)malloc(sizeof(LNode));
La->next =NULL;
while(L->next)
{
for(q=L->next ,p=L->next ;p->next ;p=p->next )
{
if((strcmp( p->next->name,q->name ))>0 )
{
m=p;
q=p->next ;
}
}
if(q==L->next)
{
L->next =L->next->next ;
}
else
{
m->next =q->next ;
}
q->next =La->next ;
La->next =q ;
}
L=La;
Display(L);
}
/*性别排序*/
void SortSex(Linklist &L ,char sex[10])
{
Linklist La;
Linklist p,q,m;
La=(Linklist)malloc(sizeof(LNode));
La->next =NULL;
while(L->next)
{
for(q=L->next ,p=L->next ;p->next ;p=p->next )
{
if((strcmp( p->next->sex,q->sex))>0 )
{
m=p;
q=p->next ;
}
}
if(q==L->next)
{
L->next =L->next->next ;
}
else
{
m->next =q->next ;
}
q->next =La->next ;
La->next =q ;
}
L=La;
Display(L);
}
/*出生年月排序*/
void SortBirth(Linklist &L ,char birthdate[20])
{
Linklist La;
Linklist p,q,m;
La=(Linklist)malloc(sizeof(LNode));
La->next =NULL;
while(L->next)
{
for(q=L->next ,p=L->next ;p->next ;p=p->next )
{
if((strcmp( p->next->birthdate,q->birthdate))>0 )
{
m=p;
q=p->next ;
}
}
if(q==L->next)
{
L->next =L->next->next ;
}
else
{
m->next =q->next ;
}
q->next =La->next ;
La->next =q ;
}
L=La;
Display(L);
}
/*工作年月排序*/
void SortWork(Linklist &L ,char workdate[20])
{
Linklist La;
Linklist p,q,m;
La=(Linklist)malloc(sizeof(LNode));
La->next =NULL;
while(L->next)
{
for(q=L->next ,p=L->next ;p->next ;p=p->next )
{
if((strcmp( p->next->workdate,q->workdate))>0 )
{
m=p;
q=p->next ;
}
}
if(q==L->next)
{
L->next =L->next->next ;
}
else
{
m->next =q->next ;
}
q->next =La->next ;
La->next =q ;
}
L=La;
Display(L);
}
/*更改*/
int Alter(Linklist &L,char name[10])
{
LNode *p;
p=L;
while(p)
{
if(strcmp(p->name,name)==0)
{
printf("请输入员工姓名\n");
scanf("%s",p->name);
printf("请输入员工性别\n");
scanf("%s",p->sex);
printf("请输入员工出生年月\n");
scanf("%s",p->birthdate);
printf("请输入员工工作年月\n");
scanf("%s",p->workdate);
printf("请输入员工学历\n");
scanf("%s",p->edu);
printf("请输入员工职务\n");
scanf("%s",p->duty);
printf("请输入员工电话\n");
scanf("%s",p->phone);
printf("请输入员工地址\n");
scanf("%s",p->address);
return OK;
}
p=p->next;
} printf("没有此人\n");
return 0; }
/*按姓名删除*/
int Del(Linklist &L,char name[10])
{
LNode *p;
LNode *r;
p=L->next;
r=L;
while(p)
{
if(strcmp(p->name,name)==0)
{
r->next=p->next;
free(p);
printf("删除成功\n");
return OK;
}
p=p->next;
} printf("没有此人\n");
return 0; }
主函数
#include #include #include #define TRUE 1
#define FALSE -1 #define OK 1
#define ERROR 0 #define OVERFLOW -2
typedef struct LNode {
char name[10];
char sex[10];
char birthdate[20];
char workdate[20];
char edu[10];
char duty[10];
char phone[20];
char address[30];
struct LNode *next;
}*Linklist;
#include"Header.h";
void main()
{
Linklist L;
int a;
char name[10];
char sex[10];
char birthdate[20];
char workdate[20];
char edu[10];
char duty[10];
char phone[20];
char address[30];
Initlist(L);
int y;
int x=1;
while(x)
{
printf("\t\t*****************************************\n\n");
printf("\t\t>>>>>>>>>欢迎进入职工管理系统<<<<<<<<<<<<\n\n");
printf("\t\t*****************************************\n");
printf("\t\t**************1-添加员工信息*************\n");
printf("\t\t**************2-查询员工信息*************\n");
printf("\t\t**************3-排序员工信息*************\n");
printf("\t\t**************4-显示员工信息*************\n");
printf("\t\t**************5-更改员工信息*************\n");
printf("\t\t**************6-删除员工信息*************\n");
printf("\t\t**************7-退 出*************\n");
printf("\t\t*****************************************\n");
printf("请选择操作序号并按回车:");
scanf("%d",&y);
switch(y)
{
case 1: CreatList(L);break;
case 2: printf("请输入查询方式(1按出生年月查询,2按姓名查找,3按性别查找)");
scanf("%d",&a);
if(a==1)
{
printf("请输入查询员工出生年月\n");
scanf("%s",&birthdate);
SearchBirthdate(L,birthdate);
}
if(a==2)
{
printf("请输入查询员工姓名\n");
scanf("%s",&name);
SearchName(L,name);
}
if(a==3)
{
printf("请输入查询员工性别\n");
scanf("%s",&sex);
SearchSex(L,sex);
}
break;
case 3: printf("请选择排序条件:1.姓名2.性别3出生年月0.退出\n");
scanf("%d",&a);
if(a==1)
{
printf("姓名排序\n");
SortName(L,name);
}
if(a==2)
{
printf("性别排序\n");
SortSex(L,sex);
}
if(a==3)
{
printf("出生年月排序\n");
SortBirth(L, birthdate);
}
break;
case 4: printf("所有员工信息如下所示\n");
Display(L);
break;
case 5: printf("请输入更改员工姓名");
getchar();
scanf("%s",&name);
Alter(L,name);
break;
case 6: printf("请输入删除员工姓名");
getchar();
scanf("%s",&name);
Del(L,name);
break;
case 7: x=0;
break;
default:
printf("请输入正确序号~\n");
break;
}
}
}
本文档为【VC++6.0环境下 简单的职工管理系统 课程设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。