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