VC++60环境下 简单的职工管理系统 课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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<stdio.h>
#include<stdlib.h>
#include<string.h>
#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;
}
}
}。