C语言||作业01
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/CST2019-4 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/10677 |
这个作业的目标 | 用C语言编写一个通讯录 |
作业正文 | https://www.cnblogs.com/ningfan/p/12786565.html |
其它参考文献 | https://www.bilibili.com/video/av88594580/] |
2.2.2 需求分析
要编写一个容纳50人的菜单,结合新学的指针数组,用前几次的菜单框架将每个联系人的信息输入进去,用上编号方便排序。
2.2.3程序代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int population=0,FreeSpace=50;
struct AddressList
{
int number;
char name[10];
char phone[20];
}
stu[50],temp;
void interface();
void sort();
void modify();
void cancel();
void add();
void find();
void error();
int main()
{
int choose;
while(1)
{
int i;
system("cls");
printf("==========通讯录==========\n");
printf("\n");
printf("\n");
printf("==========界面==========\n");
printf("人数:%d人 |剩余空间:%d人\n",population,FreeSpace);
for(i=0;i<population;i++)
{
printf("编号:%10d |姓名:%10s |电话:%20s\n",stu[i].number,stu[i].name,stu[i].phone);
}
printf("\n");
printf("\n");
interface();
scanf("%d",&choose);
printf("\n");
switch (choose)
{
case 1:sort();break;
case 2:add();break;
case 3:cancel();break;
case 4:modify();break;
case 5:find();break;
case 6:return 0;
default:error();
}
}
}
void interface()
{
printf("操作列表:\n");
printf("1)排序 2)添加 3)删除\n");
printf("4)修改 5)查找 6)退出程序\n");
printf("请输入操作:\n");
}
void sort()
{
int i,n,j;
printf("1)编号排序 2)名字排序");
printf("请选择你要排序的方式:");
scanf("%d",&i);
switch (i)
{
case 1:
if (population >= 2)
{
for (n=0;n<population-1;n++)
{
for (j=n;j<population;j++)
{
if(stu[n].number>stu[j].number)
{
temp = stu[n];
stu[n] = stu[j];
stu[j] = temp;
}
}
}
}
break;
case 2:
if (population >=2)
{
for (n=0;n<population-1;n++)
{
for (j=n;j<population;j++)
{
if (strcmp(stu[n].name,stu[j].name)>0)
{
temp = stu[n];
stu[n] = stu[j];
stu[j] = temp;
}
}
}
}
break;
default:error();break;
}
}
void add()
{
int i,flag=0;
if (FreeSpace == 0)
{
printf("通讯录爆满\n");
system("pause");
}
else
{
printf("添加操作:\n");
printf("请输入添加位置:");
scanf("%d",&stu[population].number);
if(stu[population].number>50||stu[population].number<=0)
{
printf("处理编号超过最大值\n");
system("pause");
}
else
{
for (i=0;i<population;i++)
{
if (stu[population].number == stu[i].number)
{
printf("这里已经有数据\n");
system("pause");
flag = 1;
}
}
if(flag==0)
{
printf("请输入联系人姓名:");
scanf("%s",stu[population].name);
printf("请输入联系人电话号码:");
scanf("%s",stu[population].phone);
population++;
}
}
}
}
void cancel()
{
int i,n,flag=0;
printf("删除操作:\n");
printf("请输入删除位置:");
scanf("%d",&n);
if(n>50||n<=0)
{
printf("处理编号超过最大值\n");
system("pause");
}
else
{
for (i=0;i<population;i++)
{
if (n==stu[i].number)
{
stu[i]=temp;
population--;
FreeSpace++;
flag=1;
}
}
if(flag==0)
{
printf("此处无数据\n");
system("pause");
}
}
}
void modify()
{
int i,n,flag=0;
printf("请输入修改位置:");
scanf("%d",&i);
if (i>50||i<=0)
{
printf("处理编号超过最大值\n");
system("pause");
}
else
{
for (n=0;n<population;n++)
{
if (i==stu[n].number)
{
printf("已除去原有信息,请重新输入\n");
printf("\n");
printf("请输入联系人姓名:");
scanf("%s",stu[n].name);
printf("请输入联系人电话号码:");
scanf("%s",stu[n].phone);
flag=1;
}
}
if (flag==0)
{
printf("此处无数据\n");
system("pause");
}
}
}
void find()
{
int i,flag=0;
char n[20];
printf("请输入你要查找对象的名字或电话号码:");
scanf("%s",n);
for (i=0;i<population;i++)
{
if (strcmp(stu[i].name,n)==0||strcmp(stu[i].phone,n)==0)
{
printf("编号:%10d| 姓名:%10s| 电话:%20s\n",stu[i].number,stu[i].name,stu[i].phone);
flag=1;
}
}
if (flag==0)
{
printf("查无此人\n");
}
system("pause");
}
void error()
{
printf("sorry Error!!!\n OMG,错误!请重新输入\n");
system("pause");
}
2.2.3.1 源代码
2.2.3.2函数调用图与流程图
2.2.4 功能测试
错误操作:还没有人员信息
正确操作:先添加
错误操作:添加人数太多,超出限度范围
正确操作:在添加的人数范围内
错误操作:排序方式没在定义里面
正确操作:选择所给的方式
错误操作:修改人员信息编号通讯录里没有
正确操作:在已有联系人里面查找
2.2.5 应用集成
2.2.3.1Gitee上传截图与链接