资源简介
1、基本要求
1.根据ID号查询员工信息;
2.根据姓名查询员工信息(姓名重复时,显示所有同名者信息);
3.显示通讯录中所有员工信息;
4.往系统中添加一个员工;
5.从系统中删除一个员工;
6.程序退出时将系统中所有员工信息保存到文件中;
7.程序启动时将文件中所有员工信息读入程序中。
2、扩展要求
1.系统中所有成员按ID号排序;
2.系统中所有成员按姓名排序;
3.按部门分类显示系统中的成员;
4.自己设计一些合理的附加功能。
代码片段和文件信息
#include
#include
#include
#include “list.h“
//初始化链表
STATUS InitList(linkList &L )
{
//申请一个结点的内存作为头结点
L = (linkList)malloc(sizeof(LNode) );
if(!L ) exit(OVERFLOW );
L->next = NULL;
return OK;
}
//销毁链表
//释放包括头结点的所有结点
STATUS DestroyList(linkList &L )
{
LNode *p;
while(L )
{
p = L;
L = L->next;
free(p );
}
return OK;
}
//清空链表
//释放头结点之外的所有结点
STATUS ClearList(linkList L )
{
LNode *p;
while(L->next )
{
p = L->next;
L->next = p->next;
free(p );
}
return OK;
}
//判断链表是否为空,
//返回值,空:TRUE;不空:FALSE
STATUS ListEmpty(linkList L )
{
if(!L->next )
return TRUE;
return FALSE;
}
//求链表的长度,即链表中数据结点的个数
int ListLength(linkList L )
{
int length;
LNode *p;
length = 0;
p = L->next;
while(p )
{
length++;
p=p->next;
}
return length;
}
//从链表中取位序为i的结点数据,并用e返回该值
STATUS GetElem(linkList L int i ElemType &e )
{
int j=1;
LNode *p = L->next;
//找到元素所在的位置
while(p && j {
p = p->next;
j++;
}
if(!p || j>i )
return FALSE; //找不到位序为i的结点
//找到位序为i的结点,用e把其数据返回
e = p->data;
return OK;
}
//判断元素e是否在链表中,如果在返回其在链表中的位序,否则返回0
int LocateElem(linkList L ElemType e
STATUS (*compare)(ElemType e1 ElemType e2) )
{
int pos = 1;
LNode *p = L->next;
while(p )
{
if( (*compare)(e p->data) )
return pos; //元素e在链表中,返回其位置
pos++;
p = p->next;
}
return 0; //元素e不在链表中,返回0
}
//往链表中添加一个结点,结点数据为e
STATUS ListInsert(linkList L int i ElemType e )
{
LNode *p *s;
int j;
//查找插入位置
j = 0;
p = L;
while(p && j {
p=p->next;
j++;
}
if(!p || j>i-1 )
return ERROR;
//申请结点存储空间,并放到链表中
s = (LNode*)malloc(sizeof(LNode) );
if(!s ) exit(OVERFLOW );
s->data = e;
s->next = p->next;
p->next = s;
return OK;
}
//删除位序为i的结点,并用e返回结点数据
STATUS ListDelete(linkList L int i ElemType &e )
{
int j=1;
LNode *p = L;
LNode *q;
//找到元素所在的位置
while(p->next && j {
p = p->next;
j++;
}
if(!p->next || j>i )
return FALSE; //找不到位序为i的结点
//找到结点,用e返回结点数据,并删除该结点
q = p->next;
p->next = q->next;
e = q->data;
free(q );
return OK;
}
//遍历链表中的每个结点,并调用visit()对结点数据处理
STATUS ListTraverse(linkList L STATUS (*visit)(ElemType e) )
{
LNode *p;
for(p=L->next; p; p=p->next )
{
if( !(*visit)(p->data) )
return ERROR;
}
return OK;
}
//修改位序为i的结点数据
STATUS ListModify(linkList L int i ElemType e )
{
int j=1;
LNode *p = L->next;
//找到元素所在的位置
while(p && j {
p = p->next;
j++;
}
if(!p || j>i )
return FALSE; //找不到位序为i的结点
//找到位序为i的结点,修改其结点数据
p->data = e;
return OK;
}
//从文件中将学生信息导入内存,每个学生信息用一个链表节点保存,从文件
//中顺序读学生信息的同时,将节点插入链表中
//文件内部数据存储格式如下
/************************************************************************************
| 存储第一个学生的信 | 紧跟着存储第二个学生 | 紧跟着存储第三个学生 |
| 息,占的字节数为 | 的信息,占的字节数为 |
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 541 2007-03-26 21:21 员工管理系统程序完成\li
文件 230400 2010-07-12 09:14 员工管理系统程序完成\li
文件 921 2010-07-12 08:59 员工管理系统程序完成\li
文件 5812 2008-06-16 15:02 员工管理系统程序完成\list.cpp
文件 972 2010-07-12 08:45 员工管理系统程序完成\stuscore.dat
文件 4534 2010-07-06 10:25 员工管理系统程序完成\li
文件 1478 2010-07-08 09:46 员工管理系统程序完成\list.h
文件 447 2010-07-08 10:51 员工管理系统程序完成\链表的冒泡排序.txt
文件 543 2010-07-09 11:43 员工管理系统程序完成\main.cpp
文件 2353 2010-07-09 16:56 员工管理系统程序完成\ui.h
文件 189440 2010-07-12 08:59 员工管理系统程序完成\Debug\vc60.idb
文件 61440 2010-07-12 08:59 员工管理系统程序完成\Debug\vc60.pdb
文件 574464 2010-07-12 08:59 员工管理系统程序完成\Debug\li
文件 4824 2008-06-02 09:04 员工管理系统程序完成\Debug\data.obj
文件 11493 2008-06-16 14:56 员工管理系统程序完成\Debug\list_l.obj
文件 685104 2010-07-12 08:59 员工管理系统程序完成\Debug\li
文件 200800 2010-07-12 08:59 员工管理系统程序完成\Debug\li
文件 12010 2010-07-09 11:35 员工管理系统程序完成\Debug\list.obj
文件 2873 2010-07-09 17:00 员工管理系统程序完成\Debug\main.obj
文件 231708 2010-07-12 08:44 员工管理系统程序完成\Debug\li
文件 42915 2010-07-12 08:59 员工管理系统程序完成\Debug\ui.obj
目录 0 2010-07-12 08:43 员工管理系统程序完成\Debug
文件 18346 2010-07-12 08:59 员工管理系统程序完成\ui.cpp
文件 54784 2010-07-12 09:14 员工管理系统程序完成\li
目录 0 2010-07-12 08:43 员工管理系统程序完成
----------- --------- ---------- ----- ----
2338202 25
- 上一篇:模拟卫星旋转和地球自转
- 下一篇:game.cpp
评论
共有 条评论