C语言II作业01

结构:通讯录

2.2.1 作业头:
这个作业属于哪个课程|班级链接
-|-|-
这个作业要求在哪里|作业要求
这个作业的目标|学会使用结构,数组,指针等编写多人通讯录
作业正文|作业如下
其他参考文献|视频

2.2.2 需求分析
·1制作一个通讯录实现50人电话号码,姓名的存储
·2采用指针函数,结构体,函数等实现代码的运行
·3实现排序,添加,删除,修改,查找,等功能
2.2.3 程序代码

include<stdio.h>

include<string.h>

include<stdlib.h>

define MAX 50

int y=0,f=MAX;
typedef struct peinfo
{
int num;
char name[50];
char tel[50];
}text;
typedef struct human
{
struct peinfo text[MAX];
}human;
void menu();
void surface();
void sorting(human *a);
void add(human *a);
void del(human *a);
void polish(human *a);
int last(human *a,int num);
void find(human *a);
struct human all;
int main()
{
menu();
system("pause");
return 0;

}
void menu()
{
int n=0;
do
{
surface();
scanf("%d",&n);
switch(n)
{
surface();
case 1:sorting(&all);
system("cls");
break;
case 2:add(&all);
system("cls");
break;
case 3:del(&all);
system("cls");
break;
case 4:polish(&all);
system("cls");
break;
case 5:find(&all);
system("cls");
break;
case 6:exit(0);
break;
defult:printf("Error!!!\n错误操作指令,请重新输入");
break;
}
}while(n!=6);
}

void surface()
{
printf("通讯录\n");
printf("界 面\n");
printf("人数 : %d | 剩余空间 :%d\n",y,f);
int i=0;
for(i=0;i<50;i++)
{
if(all.text[i].num!=0)
printf("编号:%d|姓名:%s|电话:>%s\n",all.text[i].num,all.text[i].name,all.text[i].tel);
printf("\n");
}
system("pause");
printf("操作列表:\n");
printf("1)排序 2)添加 3)删除\n");
printf("4)修改 5)查找 6)退出程序\n");
printf("请输入操作:\n");
}
void sorting(human *a)
{
struct peinfo odd;
int i=0,j=0,x;
printf("请输入排序方式\n1)姓名排序 2)编号排序\n");
scanf("%d",&x);
switch(x)
{
case 1:
for(i=0;i<f-1;i++)
{
for(j=0;j<f-i-1;j++)
{
if(strcmp(a->text[j].name,a->text[j+1].name)>0)
{
odd=a->text[j];
a->text[j]=a->text[j+1];
a->text[j+1]=odd;
}
}
}
break;
case 2:
for(i=0;i<f-1;i++)
{
for(j=0;j<f-i-1;j++)
{
if(a->text[j].num>a->text[j+1].num)
{
odd=a->text[j];
a->text[j]=a->text[j+1];
a->text[j+1]=odd;
}
}
}
break;
}

}

void add(human *a)
{
int c=0;
printf("请输入添加位置:");
scanf("%d",&c);
if(c>50||c<1)
{
printf("通讯录已满\n处理编号超过阙值\n此处已有数据");
system("pause");
printf("\n");
}
else if(a->text[c].num!=0)
{
printf("此处有数据");
system("pause");
printf("\n");
}
else
{
a->text[c].num=c;
printf("请输入联系人姓名:");
printf("\n");
scanf("%s",a->text[c].name);
printf("请输入联系人电话:");
scanf("%s",&a->text[c].tel);
y++;
f--;
}
printf("\n");
}

void del(human *a)
{
int i=0,t,ind;
printf("请输入删除位置:");
scanf("%d",&t);
ind=last(a,t);
if(ind == -1)
{
printf("此处无数据");
system("pause");
}
else
{
int j=ind;
for(j=ind;j<50;j++)
{
a->text[j]=a->text[j+1];
}
printf("已删除!");
f--;
y++;
}
}
int last(human *a,int num)
{
if(num>50||num<1)
{
printf("处理编号超过阙值\n");
system("pause");
}
for(int i=0;i<=MAX;i++)
{
if(a->text[i].num==num)
{
return i;
}
}
return -1;
}
void polish(human *a)
{
int j=0;
int num;
int ind;
printf("请输入修改位置:");
scanf("%d",&num);
ind =last(a,num);
if(ind!=-1)
{
int j=ind;
for(j=ind;j<f;j++)
{
a->text[j]=a->text[j+1];
}
printf("已擦除原有信息,请重新输入:");
printf("请输入联系人姓名:");
scanf("%s",a->text[j].name);
printf("请输入联系人号码:");
scanf("%s",&a->text[j].tel);
}
else
{
printf("处理编号超过阙值\n此处无数据\n");
}
printf("\n");

}
void find(human* a)
{
int r=0;
char name[50];
printf("请输入你要查找的联系人:");
scanf("%s",&name);
for(int i=0;i<=50;i++)
{
if(strcmp(a->text[i].name,name)==0)
{
getchar();
printf("编号: %d| 姓名: %s|电话号码: %s",a->text[i].num,a->text[i].name,a->text[i].tel);
system("pause");
return ;
}
++r;
}
if(r>=50)
{
printf("查无此人");
system("pause");
return ;
}
}

2.2.3.1 源代码









2.2.3.2 函数调用图与流程图









2.2.5 应用集成

Gitee上传截图与链接

放上你的git链接
git链接

posted @ 2020-04-27 18:03  啧啧卡  阅读(174)  评论(0编辑  收藏  举报