数据结构建通讯录的课程设计 15

要求:第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。第二个模块——Menu()的功能是:显示英文提示选单。第三个模块——Quit(... 要求:第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。
第二个模块——Menu()的功能是:显示英文提示选单。
第三个模块——Quit()的功能是:退出选单。
第四个模块——Create()的功能是:创建新的通讯录。
第五个模块——Add()的功能是:在通讯录的末尾,写入新的信息,并返回选单。
第六个模块——Find()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。
第七个模块——Alter()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回菜单。
第八个模块——Delete()的功能是:删除某人信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回菜单。
第九个模块——List()的功能是:显示通讯录中的所有记录。

小弟才学数据结构,学得很是不好
现在有本数据结构设计题,很急.希望前辈帮我做下,要完整,执行能通过的,追分150分
展开
 我来答
火红枫—领军者ceb
2010-08-08 · 超过14用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:45.1万
展开全部
//xieai999
#include <stdio.h>
#include <string.h>

typedef struct study
{
int number;
char name[30];
char state[2];
}LT;

typedef struct book
{
LT *s[1000];
int top;
}LY;

void CreatLT(LT **s,int a,char g[],char c[])
{
(*s)=(LT *)malloc(sizeof(LT));
(*s)->number=a;
int i=0;
while(i<30)
{
if(g[i]!='\0')
(*s)->name[i]=g[i];
else
(*s)->name[i]='\0';
i++;
}
(*s)->state[0]=c[0];
(*s)->state[1]='\0';

}

void CreatLY(LY **r)
{
(*r)=(LY *)malloc(sizeof(LY));
(*r)->top=-1;
}

void Seek(LY *a)
{
printf("1,号码\n2,书名\n3,状态\n");
int x,i,y,k,symble=0;
char d[10],e[1];
scanf("%d",&x);
switch(x)
{
case 1:
printf("书号:");
scanf("%d",&y);
i=0;
for(i;i<=a->top;i++)
{
if(y==a->s[i]->number)
{
printf("%d %s %s\n",a->s[i]->number,a->s[i]->name,a->s[i]->state);
break;
}
if(i==a->top)
printf("没找到\n");
}
break;

case 2:
i=0;
printf("书名:");
scanf("%s",&d);
for(i;i<=a->top;i++)
{
if(strlen(d)==strlen(a->s[i]->name))
for(k=0;k<strlen(d);k++)
{
if(d[k]!=a->s[i]->name[k])
break;
if(k==strlen(d)-1)
{
printf("%d %s %s\n",a->s[i]->number,a->s[i]->name,a->s[i]->state);
symble=1;
}
}
if(symble==1)
break;
if(i==a->top)
printf("没找到\n");
}
break;

case 3:
printf("状态(Y/N)\n");
scanf("%s",&e);
i=0;
for(i;i<=a->top;i++)
{
if(a->s[i]->state[0]==e[0])
printf("%d %s %s\n",a->s[i]->number,a->s[i]->name,a->s[i]->state);
}
break;
default:
printf("没有该选项\n");
break;
}
}

main()
{
printf("欢迎进入图书管理系统\n");
int k=0,i=0;
LT *s[1000],*p;LY *A;
CreatLY(&A); char a[30]="",b[2]="";
for(k; ;k++)
{
printf("1,输入\n2,输出\n3,查询\n4,删除\n5,修改\n0,退出\n");
int x,number,j=0,h;
scanf("%d",&x);
switch(x)
{
case 1:
printf("编号(必须是整数):");
scanf("%d",&number);
printf("书名:");
scanf("%s",&a);
printf("状态(注意:只能输入N(借出)/Y(未借出)):");
scanf("%s",&b);
CreatLT(&s[i],number,a,b);
A->top++;
A->s[A->top]=s[i];
i++;
break;

case 2:
j=0;
while(j<=A->top)
{
printf("%d %s %s\n",A->s[j]->number,A->s[j]->name,A->s[j]->state);
j++;
}
break;

case 3:
Seek(A);
break;

case 4:
printf("要删除的书号:");
scanf("%d",&number);
j=0;
for(j;j<=A->top;j++)
{
if(A->s[j]->number==number)
{
p=A->s[A->top];
A->s[A->top]=A->s[j];
A->s[j]=p;
A->top--;
break;
}
if(j==A->top)
printf("没有这本书\n");
}
break;

case 5:
printf("要修改的书号:");
scanf("%d",&number);
j=0;
for(j;j<=A->top;j++)
{
if(A->s[j]->number==number)
{
printf("1,修改书号\n2,修改书名\n3,修改状态\n");
scanf("%d",&number);
if(number==1)
{
printf("新书号:");
scanf("%d",&number);
A->s[j]->number=number;
break;
}
else
if(number==2)
{
printf("新书名:");
scanf("%s",&a);
h=0;
while(A->s[j]->name[h]!='\0')
{
if(a[h]!='\0')
A->s[i]->name[h]=a[h];
else
A->s[i]->name[h]='\0';
h++;
}
break;
}
else
if(number==3)
{
printf("新状态:");
scanf("%s",&b);
A->s[i]->state[0]=b[0];
break;
}
else
{
printf("输入错误\n");
j=j-1;
}
}
if(j==A->top)
printf("没有这本书\n");
}
break;

case 0:
h=10000;
break;

default:
printf("没有该选项\n");
break;
}
if(h==10000)
break;
}
}

自己改一下吧,,,
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式