员工管理系统_第1页
员工管理系统_第2页
员工管理系统_第3页
员工管理系统_第4页
员工管理系统_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、 程 序 设 计 实 习实 验 报 告班级: 信a0812学号: 25 姓名: 万明 指导老师: 周小雄 2010-2011第1学期实验 员工管理系统班级:信a0812学号:25姓名:万明指导教师签名:_成绩:_一、问题描述设计一个计算机程序,能够实现简单的员工管理功能。设计要求:1每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。2系统的功能包括:(1)查询:按特定条件查找员工。(2)修改:按编号对某个员工的某项信息进行修改。(3)插入:加入新员工的信息。(4)删除:按编号删除已离职员工的信息。(5)排序:按特定条件对所有员工的信息进行排序。二、算法说明1算法功能(1

2、)采用结构体worker来存储员工的相关信息,定义一个由结构体组成的链表来实现对多个员工信息的存储,以及插入、删除、修改等操作。(2)注册新员工信息:采用链表的操作,向链表接点的前一个接点插入信息。(3)查询、修改:采用链表的操作进行信息的查找,找到后可以进行修改覆盖原来的内容。(4)删除:按链表的操作进行,按关键字找到相应的接点,然后删除此接点的前一个接点即可。(5)排序:按照员工的工号升序排序,采用冒泡排序法,并且交换所有信息。2函数说明link create(link head);/创建链表void release(link head);/释放链表空间link search(link h

3、ead);/按条件查找链表节点link searchbywno(link head);/按员工号查找员工信息link updata(link head);/修改员工信息link insert(link head);/插入员工信息link del(link head);/删除退休员工的信息link rankbywno(link head);/按员工号将员工排序void display(link head);/查找链表所有节点void display_node(link pnode);/显示链表节点的信息link searchwithoutprint(link head);/查找链表节点的信息但是

4、不用输出3数据结构说明struct worker/定义员工结构体链表来存储员工的信息 int wnum;/工号 char name15;/姓名 char sex4;/性别 char age12;/出生年月 char post6;/学历 char job10;/职位 unsigned int telnum;/电话号码 char add23;/家庭地址 struct worker *next;定义下一个接点;typedef struct worker node;typedef node *link;/定义链表节点三、测试结果第一组测试: (1):测试目的:注册新信息并显示出来。 (2):测试输入和

5、结果:第二组测试:(1) 测试目的:修改员工信息(2) 测试输入和结果: 第三组测试: (1):测试目的:查找员工信息 (2):测试输入和结果:第四组测试: (1):测试目的:按照员工号升序排序。 (2):测试输入和结果:第五组测试: (1):测试目的:删除员工信息 (2):测试输入和结果:第六组测试:(1) 测试目的:安全退出系统(2) 测试输入一结果:附录:源代码#include/调用系统函数exit#include/字符串的赋值#include /申请空间#include#includestruct worker/定义员工结构体链表来存储员工的信息 int wnum; char name

6、15; char sex4; char age12; char post6; char job10; unsigned int telnum; char add23; struct worker *next;typedef struct worker node;typedef node *link;/定义链表节点link create(link head);/创建链表void release(link head);/释放链表空间link search(link head);/按条件查找链表节点link searchbywno(link head);/按员工号查找员工信息link updata(

7、link head);/修改员工信息link insert(link head);/插入员工信息link del(link head);/删除退休员工的信息link rankbywno(link head);/按员工号将员工排序void display(link head);/查找链表所有节点void display_node(link pnode);/显示链表节点的信息link searchwithoutprint(link head);/查找链表节点的信息但是不用输出 /函数定义部分link create(link head)/创建一个带头节点的空链表 head=(link)new nod

8、e; if(!head) cout分配内存失败!next=null; return head; void release(link head) /释放链表 link ptr;while(head!=null) ptr=head; head=head-next; delete ptr;/释放节点资源 link search(link head) /按员工号查找link ptr; int wnum;ptr=head-next; coutwnum; coutendl-查询结果-wnum=wnum) display_node(ptr);/打印满足条件的节点。 return head; ptr=ptr-

9、next;/查询下一节点。 cout无此职工的信息。endl; return head; link searchbywno(link head)/按员工号查找员工信息link ptr; int code; ptr=head; coutcode; coutendl-查询结果-next) if(ptr-next-wnum=code) display_node(ptr);/打印满足条件的节点。 return ptr;/返回的查询到的节点的直接前趋节点。 ptr-next=ptr-next-next;/查询下一节点。 return ptr; link updata(link head)/修改员工信息

10、link ptr; ptr=searchwithoutprint(head); int wnum1; char name115; char sex14; char age112; char post16; char job110; unsigned int telnum1; char add123;if(ptr!=null) if(ptr-next) cout-你现在可以修改此职工的信息了-endl; coutwnum1; coutendlname1; coutendlsex1; coutendlage1; coutendlpost1; coutendljob1; coutendltelnum

11、1; coutendladd1; coutnext-wnum=wnum1; strcpy(ptr-name,name1); strcpy(ptr-next-sex,sex1); strcpy(ptr-next-age,age1); strcpy(ptr-next-post,post1); strcpy(ptr-next-job,job1); ptr-next-telnum=telnum1; strcpy(ptr-next-add,add1); else cout没找到此职工的记录,无法修改。endl; return head; link insert(link head)/插入员工信息 lin

12、k pnew;/ 声明一个新节点。 int wnum1; char name115; char sex14; char age112; char post16; char job110; unsigned int telnum1; char add123; pnew=(link)new node; coutwnum1; coutendlname1; coutendlsex1; coutendlage1; coutendlpost1; coutendljob1; coutendltelnum1; coutendladd1; coutwnum=wnum1; strcpy(pnew-name,nam

13、e1); strcpy(pnew-sex,sex1); strcpy(pnew-age,age1); strcpy(pnew-post,post1); strcpy(pnew-job,job1); pnew-telnum=telnum1; strcpy(pnew-add,add1); pnew-next=head-next; head-next=pnew; cout数据添加成功!next; if(ptr) ptr_front-next=ptr-next; delete ptr;/删除此节点。 cout删除成功!n ; elsecout没找到此职工的记录,无法删除。next-next; ptr_

14、f=head; head-next-next=null; while(ptr) ptr_n=ptr-next; ptr_f=head;/ptr_f的归位。 while(ptr_f-next) if(ptr-wnum next-wnum) ptr-next=ptr_f-next; ptr_f-next=ptr; break; else ptr_f=ptr_f-next; if(ptr_f-next=null) ptr-next=ptr_f-next; ptr_f-next=ptr;/表示插到有序链表的最后面了。 ptr=ptr_n;/归位,准备下一次排序。 cout工号从低到高,排序成功!nex

15、t; cout=所有职工信息=next; void display_node(link pnode) /显示节点信息 coutwnum name sex age post job addendl;link searchwithoutprint(link head)/按员工号查找员工,但是没有输出link ptr; int code; ptr=head; coutcode; while(ptr-next) if(ptr-next-wnum=code) return ptr;/注意,是返回的查询到的节点的直接前趋节点。 else ptr-next=ptr-next-next;/查询下一节点。 re

16、turn null; void main()link head=0; /初始化链表 head=create(head);/创建链表 int i; while(1) printf(*n); printf(* 员工管理系统 *n); printf(* 1: 注册新员工 2:修改员工信息 *n); printf(* 3: 查找员工 4:删除员工信息 *n); printf(* 5: 按员工号升序排序 6: 显示所有员工 *n); printf(* 7:退出系统 *n); printf(*n); printf(输入您所需服务:); scanf(%d,&i); switch(i) case 1: head=insert(head);break;/插入员工信息 case 2: head=updata(head);break;/修改员

温馨提示

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

评论

0/150

提交评论