员工管理系统的数据结构设计_第1页
员工管理系统的数据结构设计_第2页
员工管理系统的数据结构设计_第3页
员工管理系统的数据结构设计_第4页
员工管理系统的数据结构设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学号09710219

上点摘飞也强名优

数据构造课程设计

设计阐明书

员工管理系统

起止日期:2023年1月2日至2023年1月6日

学生姓名

班级09计算机z班

成绩____________________________

指导教师(签字)____________________________

电子与信息工程系

2023年1月4日

天津都市建设学院

课程设计任务书

2023—2023学年第1学期

电子与信息工程系计算机专业09级二班级

课程设计名称:数据构造课程设计

设计题目:员工管理系统_________________________

完毕期限:自2023年1月2日至2023年1月6日共1周

设计根据、规定及重要内容(可另加附页):

一、设计目的

熟悉多种数据构造和运算,会使用数据构造的基本操作处理某些实际问题。

二、设计规定

(1)重视课程设计环节,用严谨、科学和踏实的工作态度看待课程设计的每•项任务;

(2)按照课程设计的题目规定,独立地完毕各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄

袭者皆以零分计入本课程设计成绩。凡发现试验汇报或源程序雷同,波及U勺所有人员皆以零分计入

本课程设计成绩:

(3)学生在接受设计任务后,首先要按设计任务书的规定编写设计进程表;

(4)认真编写课程设计汇报。

三、设计内容

员工管理系统:

1)问题描述

每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、、住址等。系统可以完

组员工信息的查询、更新、插入、删除、排序等功能。

2)基本规定

(1)排序:按不同样关键字,对所有员工的信息进行排序。

(2)查询:按特定条件查找员工。

(3)更新:按编号为某个员工日勺某项信息进行修改。

(4)插入:加入新员工的信息。

(5)删除:按编号删除已离职的员工的信息。

四、参照文献

1.王红梅.数据构造.清华大学出版社

2.王红梅.数据构造学习辅导与试验指导.清华大学出版社

3.严蔚敏,吴伟民.数据构造(C语言版).清华大学出版社

五.重要内容:

1.系统流程图

添除

加顾

顾客

客用

3能

代码

2.源

.h>

stdio

de<

inclu

b.h>

stdli

ude<

^incl

文献

数头

屏函

〃清

.h>

ndows

<wi

lude

^inc

h>

ing.

<str

ude

i+incl

tuff

ctS

stru

charnumber[10];〃员工编号

charname[10];〃员工姓名

charsex[8];〃员工性别

charborth[10];〃员工生日

chardegree[20];〃员工学历

charbusiness[20];〃员工职务

charphone[15];〃员工

charplace[50];〃员工住址

charcon[501;〃判断关键字专用

structStuff*next;

);

charMenu(void);〃菜单显示

structStuff*App(structStuff*hcad);〃添加

voidSort(structStuff*head);〃排序

structStuff*Ser(structStuff*head);〃查找

voidChn(structStuff*head,charn[10]);〃更改

voidScpy(char*p,char*q);〃排序中用于互换员工信息

structStuff*Del(structStuff*head,charn[101);〃删除

intSei(charch,structStuff*p,structStuff*q);〃判断排序及关键字专用函数

voidPrf(structStuff*head);〃输出

voidFre(structStuff*head);〃释放

inti=l;〃定义全局变量,实现实时员工人数记录

intmain(void)

(

charii[10];

structStuff*hcad=NULL;〃链表头指针定义

while(l)

(

switch(MenuO)

(

case'1':

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

head=App(head);

break;

case'2':

Soi't(head);

break;

case'3':

head=Ser(head);

break;

case'4’:

printf("员工信息如下:\n");

Prf(head);

break;

case'5':

printf("请输入员工编号:");

scanfn);

Chn(head,n);

break;

case'6':

printf("请输入员工编号:");

scanfn);

head=Del(head,n);

break;

case'O':

printf("欢迎下次光顾,88!\n");

exit(0);

default:

printf(〃输入错误,请重新输入!\n");

}

fflush(stdin);//清晰缓冲区

printf("按任意键继续、");

getcharO;

system(/,cls,z);〃清屏效果

)

Fre(hcad);

return0;

)

〃菜单函数

charMenu(void)

(

charch;

printf("---------------请选择-----------\n");

printf("1.添加员工信息\n2.员工信息排序\n3.查找员工唁息\n4.输出员工信息\n5.更改员工信

息\n6.删除员工信息\n0.退出\n------------------------------------\n〃);

scanf("%c”,&ch);

returnch;

)

〃添加组员函数

〃输入参数:链表头指针

〃返回参数:链表头指针

structStuff*App(structStuff*head)

structStuff*p=NULL,*q=head;

while(i)

(

p=(structStuff*)malloc(sizeof(structStuff));//申请构造体空间

if(p==NULL)

(

printf("内存不够!\n");

exit(0);

)

p->next=NULL;〃指针域为空

printf("请输入第%d名员工:\n〃,i);

printfC编号I姓名I性别I出生年月I学历I职务II住址:\n");

fflush(stdin);

scanf(“为s',p->number);

if(!strcmp(p->number,"#"))

(

free(p);〃释放不需要的构造体内存

break;

}

else

++i;

scanf(,,%s%s%s%s%s%s%s/,,p->name,p->sex,p->borth,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;〃每次都加在链表尾

)

)

returnhead;

)

〃排序函数

〃输入参数:头指包

voidSort(structStuff*head)

charch;

structStuff*p,*q,*r;

while(l)

(

printf("请选择排序条件:1.编号2.姓名3.性别4.出生年月5.学历6.职务7.8.地址0.退出

\n");

scanf("%cw,&ch);

if(ch=='O')

break;

if(ch<T'||ch>'8')

(

printf("输入错误,请重新输入!\rT);

continue;

)

p二head;

while(p->next!=NULL)//选择排序

(

q=p->next;

r=p;

while(q!=NULL)

if(Sei(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->borth,p->borth);

Scpy(r->degree,p->degree);

Scpy(r->business,p->business);

Scpy(r->phone,p->phone);

Scpy(r->place,p->place);

)

p=p->next;

}

Prf(head);〃输出

}

〃互换函数

voidScpy(char*p,char*q)

(

charc[50];

strcpy(c,p);

strcpy(p,q);

strcpy(q,c);

)

〃判断函数

〃输出参数:1为真,0为假

intSei(charch,structStuff*p,structStuff*q)

(

switch(ch)〃实现各个关键字查找

(

caser:

returnstrcmp(q->numbor,p->number)<0|strcmp(q->con,p->number)==0;〃排序条件及

查找条件

case'2':

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

case'3':

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

case'4':

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

case'5':

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

case'6':

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

case'7,:

returnstrcmp(q->phone,p->phone)<0Istrcmp(q->con,p->phone)==0;

case'81:

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

default:

exit(0);

)

)

〃查找函数

structStuff*Ser(structStuff*head)

structStuff*p=NULL,*q,a={〃\0〃,"\0",〃\0","\0","\0","\0〃,"\0〃,〃\0"};〃防止判断时错误

intflag;〃查找判断

charch,sh;

q=&a;

while(l)

(

printf("请输入要查找的条件:1.编号2.姓名3.性别4.出生年月5.学历6.职务7.8.住址0.

退出\n");

scanf("%c”,&ch);

if(ch==,0')

break;

if(ch<'1'||ch>'8')

(

printf("输入错误,请重新输入!\rT);

continue;

)

fflush(stdin);

printf("请输入:");

gets(q->con);

p=head;〃指向表头

flag=0;

while(p!=NULL)

if(Sei(ch,p,q))

printf("员工信息如下:\n");

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

\n%s%s%s%s%s%s%s%s\n"

,p->number,p->name,p->sex,p->borth,p->degree,p->business,p->phone,p->place);

printf("与否需要:1.更改2.删除3.继续\n");

scanf(*%c”,&sh);

if(sh==,r)

Chn(head,p->number);〃调用更改函数

elseif(sh==,2,)

head=Del(head,p->number);〃调用删除函数,得到H勺head必须return

flag=l;

break;

)

p=p->next;

}

if(flag==O)

printf("没有找到该员工信息!\n");

}

returnhead;

)

〃更改函数

〃输入参数:n[10]为员工编号

voidChn(structStuff*hcad,charn[10])

(

structStuff*p=hcad;

intflag=0;

if(hcad==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->borth,p->degree,p->business

,p->phone,p->place);

printf("员工信息如下:\n");

flag++;

break;

)

p=p->next;

)

if(flag==O)

printf("未找到该员工信息!\n");

)

Prf(head);

)

〃删除函数

〃输入参数:n为员工编号

〃输出参数:头指针

structStuff*Del(structStuff*head,charnf10D

(

structStuff*p,*pr;

intflag;

flag=O;

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

i一;

}

else

printf("未找到员工信息!\n");

}

Prf(head);

returnhead;

)

〃输出函数

voidPrf(structStuff*hcad)

(

structStuff*p=hcad;

inti=l;

while(p!=NULL)

(

printf(,z%d.%s%s%s%s%s%s%s%s\rT

,i++,p->number,p->name,p->sex,p->borth,p->degree,p->business,p->phone,p->pla

co);

p=p->next;

)

)

〃释放函数

voidFrc(structStuff*hcad)

structStuff*p;

whlie(head!=NULL)

p=hcad;

head=head->next;

free(p);

)

)

六.试验界面截图:

(1)管理界面

(2)输入界面

选4?

__j'

一J

=

添员6

4

^心

员信

息=

工7^

1=

员/

I心

X息

5-一

I甘

y息

R主县工信息,直接输入,叱结束

主余1名员工:

»姓名;性别;出生年月;学历职务电话;住址:

1

主Viiiii

rn第2名员工:

u号

”!姓名:性别:出生年月:学历职务电话:住址:

(3)修改信息界面

选-

4

__-'4

一I

V

加J

添员d

1工z

^心

员信

2息

工^

-

查X

3找s-

Im心

4输X-

5/息

6/息

0盘

鹘便"翰:出生年月浮历;职务;电话;住址

(4)查询信息界面

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论