C语言ll作业01

|||
---|:--😐---:
这个作业属于哪个课程|班级链接
这个作业要求在哪里|作业要求
这个作业的目标|用新学的数组做个通讯录
作业正文|本篇博客
其他参考文献|清屏函数 NULL

2.2.2 需求分析

需要满足通讯录的储存,查找,删除,修改等功能,还要对数据进行排序

2.2.3 程序代码

include<stdio.h>

include<stdlib.h>

include<string.h>

struct list {
int number;
char name[20];
char phone[20];
};
struct list p[50];
int min=0,max=50;
void interface();
void menu();
void rank();
void add();
void del();
void change();
void find();
int screen(int b);
void interface()
{
printf("========== 通讯录 \n\n");
printf("
界面 \n");
printf("人数: %d|剩余空间: %d\n",min,max);
for(int i=0;i<min;i++){
printf("编号: %d|姓名: %s|电话: %s",p[i].number,p[i].name,p[i].phone);
printf("\n");
}
}
void menu()
{
int n;
while(1)
{
interface();
printf("\n\n");
printf("操作列表:\n");
printf("1)排序 2)添加 3)删除\n");
printf("4)修改 5)查找 6)退出程序\n");
printf("请输入操作");
scanf("%d",&n);
putchar('\n');
putchar('\n');
switch (n)
{
case 1:rank();system("cls");break;
case 2:add();system("cls");break;
case 3:del();system("cls");break;
case 4:change();system("cls");break;
case 5:find();system("cls");break;
case 6:printf("程序结束.........\n");break;
default :printf("Error!!!\n错误操作指令,请重新输入\n");system("pause");system("cls");break;
}
}
}
void rank()//排序
{
int a;
struct list b;
printf("选择你的排序方式:\n");
printf("1)编号排序 2)姓名排序\n");
scanf("%d",&a);
switch (a)
{
case 1:
for(int i=0;i<min-1;i++)
{
for(int j=0;j<min-1-i;j++)
{
if(p[j].number>p[j+1].number)
{
b = p[j];
p[j]=p[j+1];
p[j+1]=b;
}
}
}break;
case 2:
for(int i=0;i<min-1;i++)
{
for(int j=0;j<min-i-1;j++)
{
if(strcmp(p[j].name,p[j+1].name)
1)
{
b=p[j];
p[j]=p[j+1];
p[j+1]=b;
}
}
}break;
default :printf("Error!!!\n错误操作指令,请重新输入\n");system("pause");system("cls");break;
}
}
void add()//添加
{
if(max
0)
{
printf("\n通讯录已满\n");
system("pause");
}
printf("添加操作:\n");
printf("请输入添加位置:");
scanf("%d",&p[min].number);
if(p[min].number>50||p[min].number<1)
{
printf("\n处理编号超过阈值\n");
system("pause");
}
for(int i=0;i<min;i++)
{
if(p[min].number
p[i].number)
{
printf("\n此处已有数据\n");
system("pause");
}
}
printf("请输入联系人姓名:");
scanf("%s",p[min].name);
printf("请输入联系人电话:");
scanf("%s",p[min].phone);
min++;
max--;
}
void del()//删除
{
int b;
printf("删除操作:\n");
printf("请输入删除位置:");
scanf("%d",&b);
if(b>50||b<1)
{
printf("\n处理编号超过阈值\n");
system("pause");
}
if(screen(b)
-1)
{
printf("\n此处无数据\n");
system("pause");
}
else
{
for(int i=screen(b);i<min;i++)
{
p[i-1]=p[i];
}
min--;
max++;
}
}
void change()//修改
{
int b;
printf("修改操作:\n");
printf("请输入修改位置:");
scanf("%d",&b);
if(b>50||b<1)
{
printf("\n处理编号超过阈值\n");
system("pause");
}
if(screen(b)
-1)
{
printf("\n此处无数据\n");
system("pause");
}
else
{
char *c=NULL;
char *d=NULL;
c=p[screen(b)-1].name;
d=p[screen(b)-1].phone;
printf("已擦除原有信息,请重新键入\n");
printf("请输入联系人姓名:");
scanf("%s",c);
printf("请输入联系人电话:");
scanf("%s",d);
}
}
void find()//查找
{
char b[50];
printf("请输入你要查找联系人的姓名或电话号码:");
scanf("%s",&b);
if(b[0]>='1'&&b[0]<='9')
{
for(int i=0;i<max;i++)
{
if(strcmp(b,p[i].phone)0)
{
printf("编号: %d|姓名: %s|电话: %s\n",p[i].number,p[i].name,p[i].phone);
system("pause");
}
}
printf("\n查无此人\n");
system("pause");
}
else
{
for(int i=0;i<max;i++)
{
if(strcmp(b,p[i].name)
0)
{
printf("编号: %d|姓名: %s|电话: %s\n",p[i].number,p[i].name,p[i].phone);
system("pause");
}
}
printf("\n查无此人\n");
system("pause");
}
}
int screen(int b)//筛选
{
for(int i=0;i<max;i++)
{
if(p[i].number==b)
return i+1;
}
return -1;
}
int main()
{
menu();
}

2.2.3.1 源代码







2.2.3.2 函数调用图与流程图

2.2.4 功能测试

添加操作



排序操作


删除操作




修改操作




查找操作


2.2.5 应用集成

Gitee上传截图与链接


砰砰炸的主页

posted @ 2020-04-27 15:34  砰砰炸  阅读(197)  评论(0)    收藏  举报