数据结构课程设计职工信息管理系统单链表实现程序源代码 下载本文

数据结构课程设计_职工信息管理系统_单链表实现程序源代码

printf(\请你输入工号(以'0'返回上一级菜单:)\ scanf(\

if(strcmp(num,\输入'0',跳出while(1),即跳出add()函数

break;

s=l->next; //作用? 每次从第一个节点开始找,看num是否重复。

while(s) //工号重复时,返回主菜单 {

if(strcmp(s->data.num,num)==0) {

printf(\提示:工号为'%s'的职工已经存在,若要修改请你选择'4 修改'!\\n\ flag=1; //break; return ; }

s=s->next; } //while(s)

p=(Node *)malloc(sizeof(Node)); //生成没赋值的新节点 p

strcpy(p->data.num,num); printf(\请你输入姓名:\ scanf(\ getchar();

printf(\请你输入性别:\ scanf(\ getchar();

printf(\请你输入职工所在部门:\ scanf(\ getchar();

printf(\请你输入职工职称:\ scanf(\ getchar();

printf(\请你输入职工工资:\ scanf(\ getchar();

/* 信息输入已经完成 */

p->next=NULL; /*表明这是链表的尾部结点*/

r->next=p; /*将新建的结点加入链表尾部中*/

5 / 18

数据结构课程设计_职工信息管理系统_单链表实现程序源代码

r=p;

saveflag=1; } //while(1) } //void Add增加结束

void Del(Link l) /* 删除 */ {

int sel;

Node *p,*r; /*实现删除操作的临时的结构体指针变量*/ char findmess[20];

if(!l->next) //当list无后继结点时,提示和结束返回del() {

printf(\提示:没有记录可以删除!\\n\ return; }

printf(\按工号删除\\n=====>2按姓名删除\\n\ scanf(\

if(sel==1) //按工号删除 {

printf(\请你输入要删除的工号:\ scanf(\

p=Locate(l,findmess,\

if(p) {

r=l;

while(r->next!=p)

r=r->next; //从第一个结点找起,直到发现r->next=p, 删除结点,跳出循环

r->next=p->next; //r r->next(p) p->next free(p);

printf(\提示:该职工已经成功删除!\\n\ saveflag=1; } else

Nofind(); //显示一句话 } //if(sel==1)

else if(sel==2) //按姓名删除 {

6 / 18

是待数据结构课程设计_职工信息管理系统_单链表实现程序源代码

printf(\请你输入要删除的姓名:\ scanf(\

p=Locate(l,findmess,\ if(p) {

r=l;

while(r->next!=p) r=r->next;

r->next=p->next; //r r->next(p) p->next free(p);

printf(\提示:该职工已经成功删除!\\n\ saveflag=1; } else

Nofind(); } //if(sel==2) else

Wrong(); //显示输入错误的话 } //void Del删除结束

void Qur(Link l) //查询功能 {

int sel;

char findmess[20];

Node *p; //实现查询操作的临时的结构体指针变量

if(!l->next) {

printf(\提示:没有资料可以查询!\\n\ return; }

printf(\按工号查找\\n=====>2按职称查找\\n\ scanf(\

if(sel==1)/* 工号 */ {

printf(\请你输入要查找的工号:\ scanf(\

p=Locate(l,findmess,\

7 / 18

数据结构课程设计_职工信息管理系统_单链表实现程序源代码

if(p) {

printf(\查找结果\\n\ printstart(); //打印横线

printc(); //打印各学科标题

printe(p); //打印p结点各个数据成员的值 printstart(); //打印横线 } else

Nofind(); } //if(sel==1)

else if(sel==2) /* 职称 */ {

printf(\请你输入要查找的职称:\ scanf(\

p=Locate(l,findmess,\ if(p) {

printf(\查找结果\\n\ printstart(); printc(); printe(p); printstart(); } else

Nofind(); } else

Wrong();

} //void Qur查询结束

void Modify(Link l) //修改功能 {

Node *p;

char findmess[20]; if(!l->next) {

printf(\提示:没有资料可以修改!\\n\ return; }

printf(\请你输入要修改的职工工号:\ scanf(\

8 / 18