数据结构课程设计 简单的职工管理系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计

题目名称:简单的职工管理系统

计算机科学与技术学院

一.需求分析

1.问题描述

对单位的职工进行管理,包括插入、删除、查找、排序等功能。

2.要求

职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。

(1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。

(2)删除一名职工:从职工管理文件中删除一名职工对象。

(3)查询:从职工管理文件中查询符合某些条件的职工。

(4)修改:检索某个职工对象,对其某些属性进行修改。

(5)排序:按某种需要对职工对象文件进行排序。

3.实现提示

职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。

(1)由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。

(2)对职工对象中的"姓名"按字典顺序进行排序。

(3)对排序后的职工对象进行增、删、查询、修改等操作。

二.概要设计

1.设计一个职工的结构体

typedef struct Worker

{

char* name;

char* sex;

char* Bothdate;

char* Workdate;

char* school;

char* duty;

char* address;

char* phone;

struct Worker *next;

}worker;

2.主体函数

(1).输入函数

void Scanfwork(worker** phead,worker** pend,int num);

(2).输出函数

void Printfwork(worker* phead);

(3).查询职工函数

void Findworker(worker* phead);

(4).更新职工函数

void Updata(worker* phead);

(5).删除职工函数

void Delwork(worker** phead,worker** pend);

void Delete(worker** phead,worker** pend,char* name);

(6).按字典排序函数

worker* Sort(worker** phead,worker** pend,int num);

(7).文件调用函数

void save(worker* phead);

(8).增加职工函数

void Addworker(worker** phead,worker** pend,worker* p);

worker* GetnodeIn();

三.详细设计

1.流程图

2.代码详细分析

(1).输入函数

void Scanfwork(worker** phead,worker** pend,int num)

{

int i;

srand((unsigned int)time(0));

for(i=0;i

{

Addworker(phead,pend,Getwork());

}

}

(2).输出函数

void Printfwork(worker* phead)

{

while(phead)

{

printf("%s %s %s %s %s %s %s %s\n",phead->name,phead->se x,phead->Bothdate,phead->Workdate,phead->school,phead->duty,phead->phone, phead->address);

phead=phead->next;

}

printf("b返回主菜单");

key=getchar();

switch (key)

{

case 'b':

return;

break;

default:

printf("按错了\n");

}

}

(3).查询职工函数

void Findworker(worker* phead)

{

char* keyword = NULL;

worker* w=NULL;

worker* newhead=NULL;

worker* newend=NULL;

worker* pDel=NULL;

worker* bj=phead;

while(1)

{

while(1)

{

printf("请输入要查询的关键字:");

keyword=getstring();

printf("按a键确认你的输入,按其他键重新输入:");

if(getkey()=='a')

{

break;

}

else

{

free(keyword);

keyword=NULL;

}

}

phead=bj;

while(phead)

{

if(strncmp(phead->name,keyword,strlen(keyword))==0||

strncmp(phead->sex,keyword,strlen(keyword))==0||

strncmp(phead->Bothdate,keyword,strlen(keyword))==0||

strncmp(phead->Workdate,keyword,strlen(keyword))==0||

strncmp(phead->school,keyword,strlen(keyword))==0||

strncmp(phead->duty,keyword,strlen(keyword))==0||

strncmp(phead->address,keyword,strlen(keyword))==0||

strncmp(phead->phone,keyword,strlen(keyword))==0) {

w=(worker*)malloc(sizeof(worker));

w->name=phead->name;

w->sex=phead->sex;

w->Bothdate=phead->Bothdate;

w->Workdate=phead->Workdate;

w->duty=phead->duty;

w->school=phead->school;

w->address=phead->address;

w->phone=phead->phone;

w->next=NULL;

Addworker(&newhead,&newend,w);

}

phead=phead->next;

}

if(newhead!=NULL)

{

Printfwork(newhead);

while(newhead)

相关文档
最新文档