大佬帮忙看看错误,没有报错但是结果不对不能满足删除查找和修改功能,而且输入的时候有误
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define MAX_ID 12
#define MAX_NAME 11
#define MAX_QQ 10
#define MAX_TEL 12
#define EXIT 0
#define INPUT 1
#define DELETE 2
#define SEARCH 3
#define UPDATE 4
#define OUTPUT 5
#define SEARCH_ID 1
#define SEARCH_NAME 2
typedef struct _StuInfo
{
char id[MAX_ID];
char name[MAX_NAME];
char tel[MAX_TEL];
char qq[MAX_QQ];
}StuInfo;
typedef struct _StuNode
{
StuInfo stu;
struct _StuNode *next;
}StuNode;
typedef StuNode* StuList;
StuList book=NULL;
void ShowMenu();
void AddStu();
void DeleteStu();
void SearchStu();
void SearchStuID();
void SearchStuName();
void UpdateStu();
void OutputStu();
void Exit();
void About();
void ReadFile();
void WriteFile();
int FindStu(char *id);
void ShowMenu()
{
int typeID=0;
ReadFile();
while(1)
{
system(“cls”);
printf("***********************************\n");
printf(" 通信录管理系统 \n");
printf("**********************************\n");
printf(" 0-退出系统 \n");
printf(" 1-添加联系人 \n");
printf(" 2-删除联系人 \n");
printf(" 3-查找联系人 \n");
printf(" 4-修改联系人 \n");
printf(" 5-输入联系人 \n");
printf("***********************************\n");
printf("->请选择操作:\n");
scanf("%d",&typeID);
if(typeID==EXIT)
{
WriteFile();
Exit();
break;
}
switch(typeID)
{
case INPUT:
system("cls");
AddStu();
system("pause");
break;
case DELETE:
system("cls");
DeleteStu();
system("pause");
break;
case SEARCH:
SearchStu();
break;
case UPDATE:
system("cls");
UpdateStu();
system("pasue");
break;
case OUTPUT:
system("cls");
OutputStu();
system("pause");
break;
default:
printf("输入错误!\n");
system("pause");
break;
}
}
}
void AddStu()
{
StuNode p=(StuNode )malloc(sizeof(StuNode));
printf("********************************\n");
printf(" 请输入联系人信息 **\n");
printf("@ 请输入学号(最大长度为%d个字符)\n->",MAX_ID-1);
scanf("%s",p->stu.id);
while(FindStu(p->stu.id)==1)
{
printf("@ 该联系人已存在,请重新输入呢\n->");
scanf("%s",p->stu.id);
}
printf("@ 请输入姓名(最大长度为%d个字符)\n->",MAX_NAME-1);
scanf("%s",p->stu.name);
printf("@ 请输入手机号码\n->");
scanf("%s",p->stu.tel);
printf("@ 请输入QQ号码\n->");
scanf("%s",p->stu.qq);
p->next=book;
book=p;
printf("** 联系人添加成功! **\n");
printf("************************************\n");
}
void DeleteStu()
{
StuNode pre=book;
StuNode p=book;
char id[MAX_ID];
printf("********************************\n");
printf(" 请输入要删除联系人的学号;\n->");
scanf("%s",id);
while(p)
{
if(strcmp(p->stu.id,id)==0)
break;
pre=p;
p=p->next;
}
if(!p)
printf("** 查无此人! **\n");
else
{
if(p==book)book=p->next;
else pre->next=p->next;
free(p);
printf("** 删除成功! **\n");
}
printf("***********************************\n");
}
void SearchStu()
{
int type,flag=1;
while(flag)
{
system(“cls”);
printf(“\n");
printf(" 1-按学号查找 \n");
printf(" 2-按姓名查找 \n");
printf("\n”);
printf("->选择查找方式:\n");
scanf("%d",&type);
switch(type)
{
case SEARCH_ID:
system("cls");
SearchStuID();
flag=0;
break;
case SEARCH_NAME:
system("cls");
SearchStuName();
flag=0;
break;
default:
printf("输入有误!\n");
break;
}
system("pause");
}
}
void SearchStuID()
{
StuNode p=book;
char id[MAX_ID];
printf("******************************\n");
printf(" 请输入要查找的学号:\n->");
scanf("%s",id);
while(p)
{
if(strcmp(p->stu.id,id)==0)
break;
p=p->next;
}
if(!p)
{
printf("** 联系人不存在! **\n");
printf("**********************************\n");
}
else
{
printf("**********************************\n");
printf("** 联系人信息 **\n");
printf("**********************************\n");
printf("$学 号:%s\n",p->stu.id);
printf("$姓 名:%s\n",p->stu.name);
printf("$手机号码:%s\n",p->stu.tel);
printf("$Q Q 号码:%s\n",p->stu.qq);
printf("**********************************\n");
}
}
void SearchStuName()
{
StuNode p=book;
char name[MAX_NAME];
printf("*********************************\n");
printf("** 请输入要查找联系人的姓名: \n->");
scanf("%s",name);
while(p)
{
if(strcmp(p->stu.name,name)==0)
break;
p=p->next;
}
if(!p)
{
printf("** 联系人不存在! **\n");
printf("**********************************\n");
}
else
{
printf("**********************************\n");
printf("** 联系人信息 **\n");
printf("**********************************\n");
printf("$学 号:%s\n",p->stu.id);
printf("$姓 名:%s\n",p->stu.name);
printf("$手机号码:%s\n",p->stu.tel);
printf("$Q Q 号码:%s\n",p->stu.qq);
printf("**********************************\n");
}
}
void UpdateStu()
{
StuNode p=book;
char id[MAX_ID];
printf("*********************************\n");
printf("** 请输入要更新联系人的学号:\n->");
scanf("%s",id);
while(p)
{
if(strcmp(p->stu.id,id)==0)
break;
p=p->next;
}
if(!p)
{
printf("** 查无此人! **\n");
printf("**********************************\n");
}
else
{
printf("$ 原姓名 :%s\n",p->stu.name);
printf("->新姓名:");
scanf("%s",p->stu.name);
printf("$ 原手机号码 :%s\n",p->stu.tel);
printf("->新手机号码:");
scanf("%s",p->stu.tel);
printf("$ 原QQ号码 :%s\n",p->stu.qq);
printf("->新QQ号码:");
scanf("%s",p->stu.qq);
printf("** 修改成功! **\n");
printf("**********************************\n");
}
}
void OutputStu()
{
int i=0;
StuNode p=book;
if(!p)
{
printf("\n");
printf("** 通信录中无联系人记录! **\n");
printf("*\n");
return;
}
while(p)
{
printf("**********************************\n");
printf("** 联系人%d信息 **\n",++i);
printf("**********************************\n");
printf("$学 号:%s\n",p->stu.id);
printf("$姓 名:%s\n",p->stu.name);
printf("$手机号码:%s\n",p->stu.tel);
printf("$Q Q 号码:%s\n",p->stu.qq);
printf("**********************************\n");
p=p->next;
}
}
void Exit()
{
StuNode *p=book;
while§
{
book=p->next;
free§;
p=book;
}
}
void ReadFile()
{
StuNode *p;
char id[MAX_ID];
FILE pf=fopen(“book.txt”,“r”);
if(!pf)return;
while(fscanf(pf,"%s",id)!=EOF)
{
p=(StuNode)malloc(sizeof(StuNode));
strcpy(p->stu.id,id);
fscanf(pf,"%s",p->stu.name);
fscanf(pf,"%s",p->stu.tel);
fscanf(pf,"%s",p->stu.qq);
p->next=book;
book=p;
p=NULL;
}
fclose(pf);
}
void WriteFile()
{
StuNode *p=book;
FILE *pf=fopen(“book.txt”,“w”);
if(!pf)return;
while§
{
fprintf(pf,"%s",p->stu.id);
fprintf(pf,"%s",p->stu.name);
fprintf(pf,"%s",p->stu.tel);
fprintf(pf,"%s",p->stu.qq);
p=p->next;
}
fclose(pf);
}
int FindStu(char *id)
{
StuNode *p=book;
while§
{
if(strcmp(id,p->stu.id)==0)
return 1;
p=p->next;
}
return 0;
}
int main()
{
ShowMenu();
return 0;
}