C语言ll作业01

1.作业头

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/CST2019-4
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/10677
这个作业的目标 用已学过的使用数组,包括二维数组和字符数设计一通讯录
作业正文 https://i-beta.cnblogs.com/posts/edit
其他参考文献 https://blog.csdn.net/u014069939/article/details/80298912

2.需求分析

根据题目要求首先定义一个结构包含编号,姓名,号码;
要使用菜单,就要做到和寒假作业一样使用多个函数具体使用各个功能;
其中还要用到界面更新,这个东西在我写完之后都没有弄得原理;

3.程序代码

3.1源代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct people
{
int number;
char name[80];
char tel[100];
};
struct people t[50];
struct people tem;
int a=0,n=50; 
void menu();//操作列表 
void sort();//排序 
void add();//添加
void del();//删除
void alt();//修改
void find();//查找
void error();//退出 
int main ()
{
int N,i;
while(1)
{
	system("cls");
	printf("========== 通讯录 ==========");
	printf("\n\n");
	printf("========== 界面 ==========");
	printf("\n人数:  %d人         |剩余空间:  %d\n",a,n);
	for(i=0;i<a;i++)
	{
		printf("编号:%d|名字:%s|电话:%d\n",t[i].number,t[i].name,t[i].tel);
	}
	menu();
	printf("\n");
	printf("请输入操作:");
	scanf("%d",&N);
	switch(N)
	{
		case 1:sort();break;
		case 2:add();break;
		case 3:del();break;
		case 4:alt();break;
		case 5:find();break;
		case 6:return 0;
		default:error();break;
	}
}	
}
void menu()
{
printf("\n\n操作列表:\n"); 
printf("1)排序          2)添加          3)删除\n");
printf("4)修改          5)查找          6)退出程序\n");
	
} 
void sort()
{	
int i,j;
printf("请选择排序的方式\n1)编号排序  2)姓名排序");
int N;
scanf("%d",&N);
if(N==1)
{
	if(a>=2)
	{
		for(i=0;i<50;i++)
		{
			for(j=i+1;j<50;j++)
			{
				if(t[i].number>t[j].number)S 
				{
					tem=t[i];
					t[i]=t[j];
					t[j]=t[i];					
				}
			}	
		}	
	}			
} 
else if(N==2)
{
	if(a>=2)
	{
		for(i=0;i<50;i++)
		{
			for(j=i+1;j<50;j++)
			{
				if(t[i].tel>t[j].tel)
				{
					tem=t[i];
					t[i]=t[j];
					t[j]=t[i];					
				}
			}	
		}	
	}
}
else
	error();	 
}
void add()
{

int i,s=0;
if(n==0)
{
	printf("人数已经满了\n");
	system("pause");		
}
else
{
	printf("\n添加操作:\n请输入添加位置:");
	scanf("%s",&t[a].number);
	if(t[a].number>50||t[a].number<0)
	{
		printf("处理编号超过阈值");
		system("pause");	
	}
	else
	{
		for(i=0;i<a;i++)
		{
			if(t[i].number==t[a].number)
			{
				printf("此处已有数据\n");
				system("pause");
				s=1;	
			}	
		}
		if(s==0)
		{
			printf("请输入联系人姓名:");
			scanf("%s",&t[a].name);
			printf("请输入联系人电话:");
			scanf("%s",&t[a].tel);
			a++;
			n--;	
		}	
	}	
} 
}
void del()
{
int i,x,s=0;
printf("删除操作:\n请输入删除位置:");
scanf("%d",&x);
printf("\n\n");
if(x<50&&x>=0)
{
	for(i=0;i<a;i++)
	{
		if(x==t[i].number)
		{
			t[i]=tem;
			a--;
			n++;
			s=1;
		}
	}
	if(s==0)
	{
		printf("此处无数据\n");
		system("pause");
	}
}
else
{
	printf("处理编号超过阈值\n");
	system("pause");
}	
}
void alt()
{
int i,x,s;
printf("修改操作\n请输入修改位置:");
scanf("%d",&x);
if(x<50&&x>=0)
{
	for(i=0;i<a;i++)
	{
		if(x=t[i].number)
		{
			printf("\n已擦除原有信息,请重新键入\n\n");
			printf("请输入联系人姓名:");
			scanf("%s",&t[i].name);
			printf("请输入联系人电话");	
			scanf("%s",&t[i].tel);
			s++; 	
		}	
	}
	if(s==0)
	{
		printf("此处无数据\n");
		system("pause");
	}
}
else
{
	printf("处理编号超过阈值\n");
	system("pause");
}
}
void find()
{
char c[20],i,s=0;
printf("请输入你要查找联系人的姓名或电话号码:");
scanf("%s",&c);
for(i=0;i<n;i++)
{
	if(strcmp(t[i].name,c)==0||strcmp(t[i].tel,c)==0)
	{
		printf("编号:%d|名字:%s|电话:%d\n",t[i].number,t[i].name,t[i].tel);
		s=1;
	}
}
if(s==0)
{
	printf("查无此人\n"); 
	system("pause");
}
}
void error()
{
printf("Error!!!\n错误操作指令, 请重新输入\n");
system("pause");	
}

3.2函数调用图与流程图

4.功能测试

5.应用集成


https://gitee.com/huang_yun/mail_list

posted @ 2020-04-30 19:02  黄昀  阅读(156)  评论(0编辑  收藏  举报