• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
阿杰的小火龙
博客园    首页    新随笔    联系   管理    订阅  订阅

C语言II作业01

一.作业头

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

二.作业正文

1.需求分析

1.分为5个不同功能的函数。
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上传截图与链接

链接

https://gitee.com/a-jie-d-xiao-huo-long/blog_job_address_book

posted @ 2020-04-27 18:57  阿杰的小火龙  阅读(228)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3