C语言Il作业01

2.1.1

C语言Il作业01

这个作业属于哪个课程 2019级软件工程4班(中南林业科技大学涉外学院)
这个作业要求在哪里 C语言Il作业01
这个作业的目标 尝试编写一个功能性强,容错率高的程序
参考资料 C语言下的清屏函数 C语言全局变量和局部变量

2.2.2

按照题目要求,通讯录需要,排序,添加,删除,修改和查找功能.
因此用了常规的while循环保证每一次操作结束都能回到主函数直至选择结束选项,
选择排序实现排序功能,添加的数据用结构体来保存,
定义一个空的结构体覆盖这个数据来实现删除功能,
把原有数据修改来实现修改功能,
用for循环遍历来实现查找功能。

2.3.2 函数调用图与流程图

源代码


流程图

2.4 功能测试

增加




修改



排序


查找


删除


2.2.4 程序代码

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include<string.h>
int population=0,FreeSpace=50;
void Menu(); 
void Sort();			
void Add();			
void Delete();	     
void Modify();
void Search();			
void Error();
struct AddressList 	
{
	int number;
	char name[10];
	char phone[20];
}stu[50],temp;
		
int main()
{
	int choose;
	while(1)
	{
		int i,a;
		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");
		Menu();
		scanf("%d",&a);
		printf("\n");
		switch(a)
		{
		case 1:		
		    Sort();
			system("cls");
			break;
		case 2:
			Add();
			system("cls");
			break;
		case 3:
			Delete();
			system("cls");
			break;
		case 4:
			Modify();
			system("cls");
			break;
		case 5:
			Search();
			system("cls");
			break;
		case 6:
			printf("已退出程序");
			system("pause");
			return 0;
		default:
			printf("错误操作请重新输入");
			system("cls");
			break;
		}
	}
}
void Menu()
{
	printf("\n\n\n操作列表:\n");
	printf("1)排序          2)添加          3)删除\n");
	printf("4)修改          5)查找          6)退出程序\n");
	printf("请输入操作:");    
}
void Sort()
{
	int n,i,j,N;
	printf("1)编号排序,2)名字排序\n");
	printf("请选择你要排序的方式:\n");
	scanf("%d", &n);
	switch (n)
	{
		case 1:	
		for (i=0;i<N-1;i++)
		for (j=i;j<N;j++)
		{
			if (stu[j].number > stu[j + 1].number)
			{ // 比较
			
				temp = stu[i]; 
				stu[i]=stu[j];
				stu[j] = temp; // 交换
			}
		}
		break;			 
		case 2:
			for (i=0;i<N-1;i++)
			for (j=i;j<N;j++)
			{
				if (strcmp(stu[i].name,stu[j].name) > 0)
				{ // 比较
					temp=stu[i]; 
					stu[i]=stu[j];
					stu[j]=temp; // 交换
				}
			}
			break;
		default:
			{ 
				printf("错误操作请重新输入");
				system("cls");
				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");
			Sleep(3000);
			return;
		}
		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 Delete()
{
	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 n,i,flag=0;
	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)
			{
				printf("已擦除原有信息,请重新输入\n");
				printf("\n");
				printf("请输入联系人姓名: ");
				scanf("%s",stu[i].name);
				printf("请输入联系人电话号码: ");
				scanf("%s",stu[i].phone);
				flag=1;
			}
		}
		if(flag==0)
		{
			printf("此处无数据\n");
			system("pause");
		}
	}
}
void Search()
{
	int i, flag=-1;
	char str[13];
	printf("请输入你要查找对象的名字或者电话号码: ");
	scanf("%s",str);
	for(i=0;i<population;i++)
	{
		if(strcmp(stu[i].name,str)==0||strcmp(stu[i].phone,str)==0)
		{
			printf("编号: %10d| 姓名: %10s| 电话: %20s\n", stu[i].number, stu[i].name, stu[i].phone);
			return;
		}
	}
		if(flag==-1)
		{
			printf("查无此人\n\n");
			system("pause"); 
			return;
	 	}
}
void Error()
{
	printf("Error!!!\n错误操作指令,请重新输入\n");
	system("pause");
}

3.2 函数调用图与流程图

5 应用集成

D.va

大家觉得我哪里写的不好的话麻烦大家再多多提点我,我会认真修改的。

posted @ 2020-04-26 20:00  凡~\(≧▽≦)/~尔  阅读(378)  评论(1编辑  收藏  举报