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

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

p=Locate(l,findmess,\

if(p) {

printf(\请你输入新工号(原来是%s):\ scanf(\

printf(\请你输入新姓名(原来是%s):\ scanf(\ getchar();

printf(\请你输入新性别(原来是%s):\ scanf(\ getchar();

printf(\请你输入新的部门(原来是%s):\ scanf(\

printf(\请你输入新的职称(原来是%s):\ scanf(\ getchar();

printf(\请你输入新的工资(原来是%d):\ scanf(\

printf(\提示:资料修改成功!\\n\

//shoudsave=1; } else

Nofind(); //if(p)结束

} //void Modify(Link l) //修改功能结束

//插入记录:按工号查询到要插入的节点的位置,然后在该工号之后插入一个新节点。

void Insert(Link l) {

Node *s,*r,*p; /*p指向插入位置,p指新插入记录节点*/ char ch,new_num[10],old_num[10];

//old_num[]保存插入点位置之前的工号,new_num[]保存输入的新记录的工号

int flag=0;

9 / 18

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

s=l->next; system(\ Disp(l);

while(1) {

//stringinput(s,10,\Number:\

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

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

return;

s=l->next; //作用? 每次从第一个节点开始找 flag=0;

while(s) /*查询该工号是否存在,flag=1表示该工号存在*/ {

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

flag=1; break; }

s=s->next; }

if(flag==1)

break; /*若工号存在,则进行插入之前的新记录的输入操作*/ else {

getchar();

printf(\number %s is not existing,try again?(y/n):\

scanf(\ if(ch=='y'||ch=='Y') {continue;}

else

{return;} //回主菜单 }

}//while(1)

10 / 18

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

/*以下新记录的插入新节点,工号不能跟已存在的工号相同,操作与Add()相同*/

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

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

return;

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

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

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

printf(\提示:工号为'%s'的职工已经存在'!\\n\

flag=1; return ; }

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

p=(Node *)malloc(sizeof(Node)); if(!p) {

printf(\如没有申请到,打印提示信息*/

return ; /*返回主界面*/ }

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

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

printf(\请你输入部门:\ scanf(\ getchar();

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

11 / 18

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

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

// 信息输入已经完成

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

saveflag=1; /*在main()有对该全局变量的判断,若为1,则进行存盘操作*/

/*将指针赋值给r,因为l中的头节点的下一个节点才实际保存着学生的记录*/

r=l->next; while(1) {

if(strcmp(r->data.num,old_num)==0) /*在链表中插入一个节点*/ {

p->next=r->next; r->next=p; break; }

r=r->next;

}// while(1) , r作为查询指针,依次从第一个节点找起,找到后 跳出 while(1)循环

Disp(l);

printf(\ // getchar(); }

void Tongji(Link l) //统计 {

Node *max,*min;/*用于指向工资最高的节点*/ Node *t=l->next; if(!t) {

system(\

printf(\ getchar(); return; }

system(\

12 / 18