企业员工信息管理系统设计与实现语言.docx

上传人:b****6 文档编号:13866186 上传时间:2023-06-18 格式:DOCX 页数:29 大小:37.65KB
下载 相关 举报
企业员工信息管理系统设计与实现语言.docx_第1页
第1页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第2页
第2页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第3页
第3页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第4页
第4页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第5页
第5页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第6页
第6页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第7页
第7页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第8页
第8页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第9页
第9页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第10页
第10页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第11页
第11页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第12页
第12页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第13页
第13页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第14页
第14页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第15页
第15页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第16页
第16页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第17页
第17页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第18页
第18页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第19页
第19页 / 共29页
企业员工信息管理系统设计与实现语言.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

企业员工信息管理系统设计与实现语言.docx

《企业员工信息管理系统设计与实现语言.docx》由会员分享,可在线阅读,更多相关《企业员工信息管理系统设计与实现语言.docx(29页珍藏版)》请在冰点文库上搜索。

企业员工信息管理系统设计与实现语言.docx

企业员工信息管理系统设计与实现语言

《算法与数据结构》

课程设计

题目:

企业员工信息管理系统

设计与实现

院、系:

计算机信息与技术系

学科专业:

计算机科学与技术

学号:

学生姓名:

指导教师:

王楠

2012年9月16日

 

设计要求

1.1问题描述

近年来,随着企业彼此间的竞争日趋激烈,信息管理技术在企业的发展中占据着越来越重要的地位。

在企业的经营生产中,员工信息已成为企业经营管理中不可缺少的一部分,为管理者进行管理决和进行各种人事调配活动提供了重要的依据,在生产分配安排中发挥了越来越重要的作用。

此次课程设计应该具有的功能是能够查看员工的个人信息,每个员工的信息包括:

编号、姓名、性别、部门、工资;系统能够完成员工信息的查询、更新、插入、删除、排序等功能。

1.2需求分析

(1)在相应的每条记录中,应该包括该员工的所有信息,譬如:

编号、姓名、性别、出生年月、学历、职务、电话、住址等;

(2)根据不同关键字(如编号,姓名等),对所有员工的信息进行排序;

(3)按照指定条件查找某个员工的所有信息;

(4)按编号对某个员工的信息进行更改;

(5)添加新员工的信息,并实现排序;

(6)按编号删除已离职的员工的信息;

(7)与此同时,除了以上基本的需求以外,该企业员工信息管理系统的程序源代码还应具有良好的编程结构和适当的注释,运行界面清晰,提示内容明确,易于操作。

概要设计

2.1主界面设计

当输入相应的操作字符(比如:

0-6或者#),通过在主函数中选择并调用对应的子函数程序以及其他函数(比如:

菜单函数)中的辅助调用,实现并完成各自的功能操作(比如:

添加、查找、更改、排序、删除、显示等)。

系统主界面如下:

2.2存储结构设计

依据给定的数据格式,个人信息由九个字段来组成,即编号、姓名、性别、生日、学历、职务、电话和住址,外加一个判断关键字。

如:

编号|姓名|性别|出生年月|学历|职务|电话|住址

01fdfn1991-10bq189p

本课程设计根据功能需求,使用线性结构来组织数据,由于要对表中某项数据进行插入、删除操作,所以使用链表比较方便。

2.3系统功能设计

依据程序的数据结构和功能,遵照“自顶向下”原则,描述该程序的层次结构,在总体上包括数据的插入、添加、删除、查找、更改和数据的排序以及数据的显示等功能模块。

(1)输入函数功能:

通过输入各项数据给数据元素,来建立一个数据表。

(2)排序函数功能:

按照指定关键字对员工信息进行排序。

(3)显示函数功能:

输出表中所有节点的信息。

(4)查找函数功能:

按照指定关键字,对相应员工信息进行查找。

(5)更改函数功能:

输入员工编号,查找到员工信息,对其信息进行更新。

(6)删除函数功能:

查找到要删除员工的相应信息,并将其从表中永久的删除。

(7)主函数功能:

调用以上子函数,并用开关语句进行选择性的调用。

(8)其它函数功能:

主要起辅助作用,比如:

菜单函数,主要起到引导作用;释放空间函数,主要用于释放已经删除节点的信息,或者释放整个链表的节点信息。

模块设计

3.1系统子程序及功能设计

1.创建成员表函数

Stuff*Cre(Stuff*head)//创建一个员工的信息列表

2.添加成员函数

Stuff*App(Stuff*head)//添加其他员工的信息列

3.排序函数

voidSort(Stuff*head)//按照编号等对员工进行排序

4.判断函数

intSel(charch,Stuff*p,Stuff*q)//判断该员工是否存在

5.查找函数

Stuff*Search(Stuff*head)//查找该员工的信息情况

6.更改函数

Stuff*Change(Stuff*head,charn[10])//更改员工的信息情况

7.删除函数

Stuff*Del(Stuff*head,charn[10])//删除员工的信息情况

3.2系统功能图

详细设计

4.1数据类型定义

1.员工结构体定义

structStuff

{

charnumber[10];

charname[10];

charsex[8];

charborth[10];

chardegree[20];

charbusiness[20];

charphone[15];

charplace[50];

charcon[50];

structStuff*next;

};

4.2系统主要子程序详细设计

1.输入函数:

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;

}

}

returnhead;

}

2.排序函数:

voidSort(Stuff*head)

{

charch;

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);//输出

}

}

3.显示函数:

voidShow(Stuff*head)

{

Stuff*p=head;

intn=1;

if(head!

=NULL)

{

printf("员工信息如下:

\n");

printf("编号|姓名|性别|出生年月|学历|职务|电话|住址:

\n");

while(p!

=NULL)

{

printf("%d.%s%s%s%s%s%s%s%s\n"

n++,p->number,p->name,p->sex,p->birthday,p->degree,p->business,p->phone,p->place);

p=p->next;

}

}

else

{

printf("信息为空!

\n");

}

}

4.查找函数:

Stuff*Search(Stuff*head)

{

Stuff*p=NULL,*q,a={"\0","\0","\0","\0","\0","\0","\0","\0"};

intflag;//查找判断

charch,sh;//两个控制变量

q=&a;

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);//调用更改函数

elseif(sh=='2')

head=Del(head,p->number);//调用删除函数

flag=1;

break;

}

p=p->next;

}

if(flag==0)

printf("没有找到该员工信息!

\n");

}

returnhead;

}

5.更改函数:

Stuff*Change(Stuff*head,charn[10])

{

Stuff*p=head;

intflag=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);

returnhead;

}

//删除函数

Stuff*Del(Stuff*head,charn[10])

{

Stuff*p,*pr;

intflag;

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);

returnhead;

6.删除函数:

voidFre(Stuff*head)

{

Stuff*p;

while(head!

=NULL)

{

p=head;

head=head->next;

free(p);

}

}

7.主函数:

voidmain()

{

charIndex[10];

Stuff*head=NULL;//链表头指针定义

printf("---------------欢迎使用《员工信息管理系统》-------------\n");

Sleep(1000);

while

(1)

{

switch(Menu())

{

//case1:

//head=Cre(head);

//break;

case1:

printf("请输入员工信息,直接输入'#'结束\n");

head=App(head);

break;

case2:

Sort(head);

break;

case3:

head=Search(head);

break;

case4:

Show(head);

break;

case5:

printf("请输入员工编号:

");

scanf("%s",Index);

Change(head,Index);

break;

case6:

printf("请输入员工编号:

");

scanf("%s",Index);

head=Del(head,Index);

break;

case0:

printf("-------------------欢迎下次光临!

-----------------\n");

Sleep(2000);

exit(0);

break;

default:

printf("输入错误,请重新输入!

\n");

}

printf("按Enter键继续~");

getchar();

getchar();

system("cls");//清屏效果

}

Fre(head);

}

8.其他函数:

charMenu();//菜单函数

voidShow(Stuff*head);//输出函数

测试分析

各功能的运行结果:

(1)添加界面

(2)排序界面

(3)查找界面

(4)输出员工界面

(5)更改员工信息界面

(6)删除员工信息界面

数据域指针域

源程序清单

#include"stdio.h"

#include"stdlib.h"

#include"windows.h"

#include"string.h"

typedefstructStuff

{

charnumber[10];

charname[10];

charsex[8];

charbirthday[10];

chardegree[20];

charbusiness[20];

charphone[15];

charplace[50];

charcon[50];

structStuff*next;

}Stuff;

charMenu();

//Stuff*Cre(Stuff*head);

Stuff*App(Stuff*head);

voidSort(Stuff*head);

Stuff*Search(Stuff*head);

Stuff*Change(Stuff*head,charn[10]);

voidScpy(char*p,char*q);

Stuff*Del(Stuff*head,charn[10]);

intSel(charch,Stuff*p,Stuff*q);

voidShow(Stuff*head);

voidFre(Stuff*head);

intn=1;

//菜单函数

charMenu(void)

{

intch;

printf("--------------------欢迎光临-------------------\n");

//printf("1.建立员工信息\n");

printf("*1.添加员工信息2.员工信息排序*\n");

printf("*3.查找员工信息4.输出员工信息*\n");

printf("*5.更改员工信息6.删除员工信息*\n");

printf("*0.退出*\n");

printf("-----------------------------------------------\n");

printf("请选择你的操作:

");

scanf("%d",&ch);

returnch;

}

//创建成员表函数

//Stuff*Cre(Stuff*head)

//{

//Stuff*p=NULL,*q=head;

//p=(Stuff*)malloc(sizeof(Stuff));

//App(head);

//returnhead;

//}

//添加成员函数

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;

}

}

returnhead;

}

//排序函数

voidSort(Stuff*head)

{

charch;

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);

}

}

//交换函数

voidScpy(char*p,char*q)

{

charc[50];

strcpy(c,p);

strcpy(p,q);

strcpy(q,c);

}

//判断函数

intSel(charch,Stuff*p,Stuff*q)

{

switch(ch)

{

case'1':

returnstrcmp(q->number,p->number)<0||strcmp(q->con,p->number)==0;case'2':

returnstrcmp(q->name,p->name)<0||strcmp(q->con,p->name)==0;

default:

exit(0);

}

}

//查找函数

Stuff*Search(Stuff*head)

{

Stuff*p=NULL,*q,a={"\0","\0","\0","\0","\0","\0","\0","\0"};

intflag;

char

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 自我管理与提升

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2