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上传截图与链接


git链接
https://gitee.com/tian_jin_long/tjl20199317.git

posted @ 2020-04-30 15:54  Dear&龙  阅读(148)  评论(0编辑  收藏  举报