C语言ll作业01

1. 本周作业头

这个作业属于哪个课程 班级作业链接
这个作业要求在哪里 作业要求的链接
这个作业的目标 做一个通讯录
作业正文
其他参考文献 详解宏定义(#define) 清空数组

2. 需求分析

  • 要有操作列表
  • 错误指令
  • 排序、添加、删除、修改、查询操作

3.程序代码

#include <stdio.h>
#include<string.h>
#include <stdlib.h>
#define MAX 50
int b = 0, c = MAX;
typedef struct man
{
	int num;
	char name[20];
	char phone[20];
}list;
typedef struct men
{
	struct man list[MAX];
}men;
void test();
void menu();
int find(men* p, int num);
void add(men* p);
void dele(men* p);
void search(men* p);
void change(men* p);
void sort_name(men* p);
struct men book;
int main()
{
	menu();
	system("pause");
	return 0;
}
void menu()
{
	int select = 0;
	do
	{
		test();
		printf("请输入操作:");
		scanf("%d", &select);
		switch (select)
		{
		test();
		case 1:
			sort_name(&book);
			system("cls");
			break;
		case 2:
			add(&book);
			system("cls");
			break;
		case 3:
			dele(&book);
			system("cls");
			break;
		case 4:
			change(&book);
			system("cls");
			break;
		case 5:
			search(&book);
			system("cls");
			break;
		case 6:
			exit(0);
			break;
		default:
			printf("Error!!!\n错误操作指令, 请重新输入");
			break;
		}
	} while (select != 6);

}
void test()
{
	printf("========== 通讯录 ==========\n\n\n");
	printf("========== 界面 ==========\n");
	printf("人数:%d	|剩余空间:%d\n", b, c);
	for (int i=0; i < 50; i++)
	{
		if(book.list[i].num!=0){
			printf("编号:		%2d| 姓名:		%s|", book.list[i].num, book.list[i].name);
			printf("电话:		%s\n", book.list[i].phone);		
		}
	}
	system("pause");
	printf("\n\n\n操作列表:\n");
	printf("1)排序          2)添加          3)删除\n4)修改          5)查找          6)退出程序\n\n\n\n");
}
int find(men* p, int num)
{
	if (num > 50 || num < 1) {
		printf("处理编号超过阈值");
		system("pause");
	}
	int i = 0;
	for (; i <= MAX; i++)
	{
		if (p->list[i].num == num)
		{
			return i;
		}
	}
	return -1;
}
void dele(men* p)
{
	int s;
	int ret;
	printf("请输入操作位置:");
	scanf("%d", &s);
	ret = find(p, s);
	if (ret == -1)
	{
		printf("此位置没有数据\n");
		system("pause");
	}
	else
	{
		int j = ret;
		for (; j < 50; j++)
		{
			p->list[j] = p->list[j + 1];
		}
		printf("已删除!!!\n");
		b--;
		c++;
	}
}
void add(men* p)
{
	int j = 0;
	printf("请输入添加位置:");
	scanf("%d", &j);
	if (j > 50 || j < 1) {
		printf("处理编号超过阈值");
		system("pause");
	}
	else if (p->list[j].num != 0)
	{
		printf("此处已有数据");
		system("pause");
	}
	else
	{
		p->list[j].num = j;
		printf("请输入联系人姓名:");
		scanf("%s", p->list[j].name);
		printf("请输入联系人电话:");
		scanf("%s", &p->list[j].phone);
		b++;
		c--;
	}

}
void search(men* p)
{
	char name[20];
	int q =0;
	printf("请输入要查询的联系人:");
	scanf("%s", &name);
	for ( int i = 0; i <= 50; i++)
	{
		if (strcmp(p->list[i].name, name) == 0)
		{
			getchar();
			printf("编号:		%2d | 姓名:		%s |", p->list[i].num, p->list[i].name);
			printf("电话:		%s\n", p->list[i].phone);
			system("pause");
			return ;
		}
		++q; 
	}
	if(q>=50)
		{
			printf("查无此人!");
			system("pause");
			return;
		}
}
void change(men* p)
{
	int s;
	int ret;
	printf("请输入操作位置:");
	scanf("%d", &s);
	ret = find(p, s);
	if (ret != -1)
	{
		int j = ret;
		for (; j < b; j++)
		{
			p->list[j] = p->list[j + 1];
		}
		printf("已删除!!!\n请重新输入\n");
		printf("请输入联系人姓名:");
		scanf("%s", p->list[j].name);
		printf("请输入联系人电话:");
		scanf("%s", &p->list[j].phone);
	}
}
void sort_name(men* p)
{
	struct man temp;
	int y = 0;
	printf("请选择排序的方式\n1)编号排序  2)姓名排序");
	scanf("%d", &y);
	switch (y)
	{
	case 1:
		for (int i = 0; i < b - 1; i++)
		{
			for (int j = 0; j < b - 1 - i; j++)
			{
				if (p->list[j].num > p->list[j + 1].num)
				{
					temp = p->list[j];
					p->list[j] = p->list[j + 1];
					p->list[j + 1] = temp;
				}
			}
		}
		break;
	case 2:
		for (int i = 0; i < b - 1; i++)
		{
			for (int j = 0; j < b - 1 - i; j++)
			{
				if (strcmp(p->list[j].name, p->list[j + 1].name) > 0)
				{
					temp = p->list[j];
					p->list[j] = p->list[j + 1];
					p->list[j + 1] = temp;
				}
			}
		}
		break;
	default:
		printf("错误操作请重新输入");
		getchar();
		system("cls");
		break;
	}
}

4.源代码








5. 函数调用图与流程图


6.功能测试

  • 添加:
  • 排序:
  • 删除:
  • 修改:
  • 查找:
  • 退出程序:

7.应用集成


(试了好多次都传不上去)
git链接:https://gitee.com/li_tinga/C-Gaming

posted on 2020-04-26 09:38  LTinga  阅读(218)  评论(0)    收藏  举报

导航