C语言ll作业01

一.作业头

这个作业属于哪个课程|班级链接
-|-|-
这个作业要求在哪里|作业要求链接
这个作业的目标|能够更加熟悉数组,二维数组及结构的知识
作业正文|本篇博客
其他参考文献|NULL , 清屏函数

二.作业正文

1.需求分析

1)分为5个不同功能的函数,除了退出程序;
2)排序操作通过对字符串的比较进行;添加操作运用了结构;修改操作运用指针;
2)运用switch进行功能的选择。

2.程序代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct people
{
	char name[20];
	char tel[20];
	int number;
};
struct people a[50];
static int c=0,sum=50;
void menu();
void display();
void rank();
void add();
void del();
void modify();
void* search();
int search(int mid);

void display()
{
	printf("========== 通讯录 ==========\n\n\n");
	printf("========== 界面 ==========\n");
	printf("人数:%d	|剩余空间:%d\n", c,sum);
	for(int i=0;i<c;i++)
	{
		printf("编号:%2d| 姓名:%s|电话:%s\n", a[i].number,a[i].name,a[i].tel);
	}
}
void menu()
{
	int m;
	while(1)
	{
		display();
		printf("\n\n\n操作列表:\n");
	    printf("1)排序          2)添加          3)删除\n4)修改          5)查找          6)退出程序\n\n\n\n");
	    printf("请输入操作:");
	    scanf("%d",&m);
	    putchar('\n');
	    putchar('\n');
	    switch(m)
	    {
	    	case 1:
			rank();
			system("cls");
			break;
		case 2:
			add();
			system("cls");
			break;
		case 3:
			del();
			system("cls");
			break;
		case 4:
			modify();
			system("cls");
			break;
		case 5:
			search();
			system("cls");
			break;
		case 6:
			exit(0);
			break;
		default:
			printf("Error!!!\n错误操作指令, 请重新输入");
			break;
		}
	}
}
void rank()
{
	int y = 0;
	printf("请选择排序的方式");
	printf("1)编号排序  2)姓名排序\n");
	scanf("%d", &y);
	struct people temp;
	switch (y)
	{
	case 1:
		for (int i = 0; i < c - 1; i++)
		{
			for (int j = 0; j < c - 1 - i; j++)
			{
				if (a[j].number>a[j+1].number)
				{
					temp = a[j];
					a[j]=a[j+1];
					a[j+1] = temp;
				}
			}
		}
		break;
	case 2:
		for (int i = 0; i < c - 1; i++)
		{
			for (int j = 0; j < c - 1 - i; j++)
			{
				if (strcmp(a[j].name,a[j+1].name)>0)
				{
					temp = a[j];
					a[j] = a[j+1];
					a[j+1] = temp;
				}
			}
		}
		break;
	default:
		printf("错误操作请重新输入");
		getchar();
		system("cls");
		break;
	}
}
void add()
{
	if(sum==0)
	{
		printf("\n");
		printf("通讯录已满\n");
		system("pause");
	}
	printf("添加操作:\n");
	printf("请输入添加位置:");
	scanf("%d",&a[c].number);
	if(a[c].number>50||a[c].number<1)
	{
		printf("处理编号超过阈值");
		system("pause");
	}
	for(int i=0;i<c;i++)
	{
		if(a[i].number==a[c].number)
		{
			printf("此处已有数据");
		    system("pause");
		}
	}
	printf("请输入联系人姓名:");
	scanf("%s", a[c].name);
	printf("请输入联系人电话:");
	scanf("%s", a[c].tel);
	c++;
	sum--;
}
void del()
{
	int mid;
	int index;
	printf("删除操作:\n");
	printf("请输入操作位置:");
	scanf("%d", &mid);
    if (mid> 50 || mid < 1)
	{
		printf("处理编号超过阈值");
		system("pause");
	}
	index=search(mid);
	if(index==-1)
	{
		printf("此处无数据\n");
		system("pause");	 
	}
	else
	{
		for(int i=index;i<c;i++)
		{
			a[i-1]=a[i];
		}
		c--;
		sum++;
	}
}
void modify()
{
	int mid;
	int index;
	char* z1=NULL;
	char* z2=NULL;
	printf("修改操作:\n");
	printf("请输入操作位置:");
	scanf("%d", &mid);
	if (mid> 50 || mid < 1)
	{
		printf("处理编号超过阈值");
		system("pause");
	}
	index=search(mid);
	if(index==-1)
	{
		printf("此处无数据\n");
		system("pause");
	}
	else
	{
		z1=a[index-1].name;
		z2=a[index-1].tel;
		printf("已删除,请重新输入:\n");
		printf("请输入联系人姓名:\n");
		scanf("%s",z1);
		printf("请输入联系人电话:\n");
		scanf("%s",z2);
	}
}
void* search()
{
	int min=0,max=c-1,mid;
	char n[40];
	printf("请输入要查询的联系人的姓名或电话:");
	scanf("%s", &n);
	if(n[0]>='1'&&n[0]<='9')
	{
		for(int i=0;i<c;i++)
		{
			if(strcmp(n,a[i].tel)==0)
			{
				printf("编号:%2d | 姓名:%s |电话:%s\n", a[i].number,a[i].name,a[i].tel);
			    system("pause");
			    return 0;
			}
		}
		printf("\n查无此人\n");
		system("pause");
	}
	else
	{
		for(int i=0;i<=50;i++)
		{
			if(strcmp(a[i].name,n)==0)
			{
				getchar();
				printf("编号:%2d | 姓名:%s |电话:%s\n", a[i].number,a[i].name,a[i].tel);
				system("pause");
				return 0;
			}
		}
		printf("查无此人\n");
		system("pause");
	}
}
int search(int mid)
{
	for(int i=0;i<c;i++)
	{
		if(a[i].number==mid)
		{
			return i+1;
		}
	}
	return -1;
}
int main(int arg,char const*argc[])
{
	menu();
}

3.源代码








4.程序调用图与流程图

5.功能测试

添加操作


删除操作


排序操作

修改操作


查找操作

6.应用集成

Gitee上传截图与链接

链接

posted @ 2020-04-27 09:45  陈double  阅读(390)  评论(1编辑  收藏  举报