作业头
问题 | 答案 |
---|---|
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/SE2019-2/homework/10669 |
这个作业要求在哪里 | https://i-beta.cnblogs.com/posts/edit |
这个作业的目标 | 学会制作菜单程序 |
作业正文 | .... |
其他参考文献 | 百度 |
2.2.2 需求分析
根据我的要求,编写你的需求分析
1 满足最基本的通讯录功能。
2 读出功能。可以列出所有联系人。
3 修改功能。可以修改联系人中的任意一项
4 增加功能。
5 删除功能。
2.2.3 程序代码
2.2.3.1 源代码
你的代码截图
include<stdio.h>
include<stdlib.h>
include<string.h>
typedef struct Linklist{
char name[50];//存放名字
char num[10];//存放电话号码
struct Linklist *next;
}Linklist,*LNode;
//创建链表
void create(Linklist *L){
char flag='y';
Linklist p,s;
p=L;
puts("--------创建一个通讯录:---------\n帮助信息\n您需要输入命令代号来进行操作\n1------- 输出------\n2------ 修改--------\n3------- 删除--------\n4 ----插入-----\n0---- 退出------\n ");
printf("首先您需输入第一个联系人!\n");
while(flag'Y'||flag'y'){
s=(LNode)malloc(sizeof(Linklist));
printf("姓名:");
scanf("%s",s->name);
printf("号码:");
scanf("%s",s->num);
s->next=NULL;
p->next=s;
p=s;
getchar();
printf("继续输入?(y/n)");
scanf("%c",&flag);
}
}
//输出链表
void output(Linklist *L){
Linklist *p;
p=L->next;
puts("编号\t姓名\t号码");//表头
puts("\t\t====");//华丽的分割线
int count=1;
while(p){
printf("%d\t%s\t%s\n",count,p->name,p->num);
p=p->next;
count++;
}
}
void update(Linklist *L){
Linklist *p;
p=L;
int n;
puts("需要修改哪一项?");
scanf("%d",&n);
for(int i=1;i<n+1;i++){
p=p->next;
}
if(p==NULL){
puts("没有这项!");
}
else{
printf("姓名:");
scanf("%s",p->name);
printf("号码:");
scanf("%s",p->name);
printf("姓名:");
scanf("%s",p->name);
printf("号码:");
scanf("%s",p->name);
}
}
void insert(Linklist *L){
Linklist p,s;
p=L;
while(p->next){
p=p->next;
}
s=(LNode)malloc(sizeof(Linklist));
printf("姓名:");
scanf("%s",s->name);
printf("号码:");
scanf("%s",s->num);
s->next=NULL;
p->next=s;
}
void del(Linklist *L){
Linklist p,q;
p=L;
int n;
puts("需要删除哪一项?");
scanf("%d",&n);
for(int i=1;i<n;i++){
p=p->next;
}
if(p==NULL){
puts("没有这项!");
}
else{
q=p->next;
p->next=q->next;
free(q);
}
}
int main(void){
Linklist *L;
int i=255;
L=(LNode)malloc(sizeof(Linklist));
L->next=NULL;
create(L);
while(i!=0){
printf("请选择功能(用序号)!");
scanf("%d",&i);
switch(i){
case 1:
output(L);
break;
case 2:
update(L);
break;
case 3:
del(L);
break;
case 4:
insert(L);
break;
}
}
}
2.2.3.2 函数调用图与流程图
2.2.4 功能测试
2.2.5 应用集成
Gitee上传截图与链接