1、 数据结构课程设计 题目名称:题目名称: 简单的职工管理系统简单的职工管理系统 一.需求分析需求分析 1.问题描述 对单位的职工进行管理,包括插入、删除、查找、排序等功能。 2.要求 职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、 电话等信息。 (1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。 (2)删除一名职工:从职工管理文件中删除一名职工对象。 (3)查询:从职工管理文件中查询符合某些条件的职工。 (4)修改:检索某个职工对象,对其某些属性进行修改。 (5)排序:按某种需要对职工对象文件进行排序。 3.实现提示 职工对象数不必很多, 便于一次读入内存, 所
2、有操作不经过内外存交换。 (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).输入
3、函数 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).按字典排序函数 worke
4、r* 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;in
5、ame,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* n
6、ewhead=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)