数据结构课程设计_职工信息管理系统_单链表实现程序源代码
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