晖某 2021-04-05 18:18 采纳率: 0%
浏览 55

大一C语言课设DEBUG

#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#include<string.h>
#include<stdbool.h>
#define MAX_LEN 100
char group[10][20] = { "家人","新人","无","无" ,"无" ,"无" ,"无" ,"无" ,"无" ,"无" };
typedef struct Person
{
	char name[MAX_LEN];//姓名
	int grou[10];//分组号,可以存十个
	char iphone[MAX_LEN][MAX_LEN];//电话
	int time[MAX_LEN];//时间
	char thing[MAX_LEN][MAX_LEN];//事件
	char address[MAX_LEN][MAX_LEN];//地址
	struct Person* next;
}person;
void group_add()
{
	char p[20];
	printf("请输入要添加的分组名:");
	scanf("%s", p);
	for (int i = 0; i < 10; i++)
	{
		if (!strcmp(group[i], p))
		{
			printf("分组重复!!\n");
			return;
		}
	}
	for (int i = 0; i < 10; i++)
	{
		if (!strcmp(group[i], "无"))
		{
			snprintf(group[i], 20, p);
			printf("添加成功\n");
			return;
		}
	}
	printf("添加分组达到上限,请删除一些分组后再添加!!\n");
}
void group_xiu()
{
	char p[20];
	printf("请输入要修改的分组名:");
	scanf("%s", p);
	char p1[20];
	printf("请输入新的分组名:");
	scanf("%s", p1);
	for (int i = 0; i < 10; i++)
	{
		if (!strcmp(group[i], p))
		{
			snprintf(group[i], 20, p1);
			printf("修改成功\n");
			return;
		}
	}
	printf("没有找到该分组!!\n");
}
void group_del()
{
	char p[20];
	printf("请输入要删除的分组名:");
	scanf("%s", p);
	for (int i = 0; i < 10; i++)
	{
		if (!strcmp(group[i], p))
		{
			snprintf(group[i], 20, "无");
			printf("删除成功\n");
			return;
		}
	}
	printf("没有找到该分组!!\n");
}
void menu_group()//分组管理
{
	int k = 0;
	while (1)
	{
		printf("***********分组管理***************\n");
		printf("        1             添加分组\n");
		printf("        2             修改分组\n");
		printf("        3             删除分组\n");
		printf("        0             退出分组管理\n");
		scanf("%d", &k);
		switch (k)
		{
		case 1:
			system("cls");
			group_add();
			Sleep(3000);
			system("cls");
			break;
		case 2:
			system("cls");
			group_xiu();
			Sleep(3000);
			system("cls");
			break;
		case 3:
			system("cls");
			group_del();
			Sleep(3000);
			system("cls");
			break;
		case 0:
			system("cls");
			return;
			break;
		default:
			system("cls");
			printf("输入错误请重新输入!!!\n");
			Sleep(3000);
			system("cls");
			break;
		}
	}
}
person* person_init()
{

	int i = 0;
	person* l = (person*)malloc(sizeof(person));
	snprintf(l->name, MAX_LEN, "");
	for (i = 0; i < 10; i++)
	{
		l->grou[i] = 666;
	}
	for (i = 0; i < MAX_LEN; i++)
	{
		snprintf(l->iphone[i], MAX_LEN, "");
		snprintf(l->thing[i], MAX_LEN, "");
		snprintf(l->address[i], MAX_LEN, "");
		l->time[i] = 0;
	}
	l->next = NULL;
	return l;
}
void person_add(person* ptr)
{
	int i = 0;
	int flag = 1;
	person* l = (person*)malloc(sizeof(person));
	printf("请输入姓名:");
	scanf("%s", l->name);
	for (i = 0; i < 10; i++)
	{
		if (flag)
		{
			printf("请输入分组号:");
			scanf("%d", &l->grou[i]);
			printf("继续输入请输入 1,否则请输入0\n");
			scanf("%d", &flag);
		}
		else
		{
			l->grou[i] = 666;
		}

	}
	flag = 1;
	for (i = 0; i < MAX_LEN; i++)
	{
		if (flag)
		{
			printf("请输入电话号码:");
			scanf("%s", l->iphone[i]);
			printf("继续输入请输入 1,否则请输入0\n");
			scanf("%d", &flag);
		}
		else
		{
			snprintf(l->iphone[i], MAX_LEN, "");
		}
	}
	flag = 1;
	for (i = 0; i < MAX_LEN; i++)
	{
		if (flag)
		{
			printf("请输入地址:");
			scanf("%s", l->address[i]);
			printf("继续输入请输入 1,否则请输入0\n");
			scanf("%d", &flag);
		}
		else
		{
			snprintf(l->address[i], MAX_LEN, "");
		}
	}
	for (i = 0; i < MAX_LEN; i++)
	{
		snprintf(l->thing[i], MAX_LEN, "");
		l->time[i] = 0;
	}
	l->next = NULL;
	person* pt = ptr;
	while (pt->next)
	{
		pt = pt->next;
	}
	pt->next = l;
	printf("添加完成\n");
}
void person_del(person* l)
{
	char name[10];
	printf("请输入姓名:");
	scanf("%s", name);
	person* ptr = l;
	while (ptr->next)
	{
		if (!strcmp(name, ptr->next->name))
		{
			ptr->next = ptr->next->next;
			printf("删除成功\n");
		}
		ptr = ptr->next;
	}
	printf("没有找到该联系人\n");
}
void person_xiu(person* l)
{
	char name[10];
	int i = 0;
	int flag = 1;
	int a=0;
	printf("请输入姓名:");
	scanf("%s", name);
	person* ptr = l->next;
	while (ptr)
	{
		if (!strcmp(name, ptr->name))
		{
            a=1;
			scanf("%s", ptr->name);
			for (i = 0; i < 10; i++)
			{
				if (flag)
				{
					printf("请输入分组号:");
					scanf("%d", &ptr->grou[i]);
					printf("继续输入请输入 1,否则请输入0\n");
					scanf("%d", &flag);
				}


			}
			flag = 1;
			for (i = 0; i < MAX_LEN; i++)
			{
				if (flag)
				{
					printf("请输入电话号码:");
					scanf("%s", ptr->iphone[i]);
					printf("继续输入请输入 1,否则请输入0\n");
					scanf("%d", &flag);
				}
			}
			flag = 1;
			for (i = 0; i < MAX_LEN; i++)
			{
				if (flag)
				{
					printf("请输入地址:");
					scanf("%s", ptr->address[i]);
					printf("继续输入请输入 1,否则请输入0\n");
					scanf("%d", &flag);
				}
			}
			printf("修改成功\n");
		}
		ptr = ptr->next;
	}
	if(a==0){printf("没有找到该联系人\n");}
	return;
}
void person_find(bool flag, person* l)//1    打印全部,   2   按姓名查询
{
	person* ptr = l->next;
	int i = 0;
	char na[MAX_LEN] = "";
	if (flag)
	{
		while (ptr)
		{
			printf("姓名:%s", ptr->name);
			printf("       电话:");
			for (i = 0; i < MAX_LEN; i++)
			{
				if (strcmp(ptr->iphone[i], ""))
				{
					printf("%s     ", ptr->iphone[i]);
				}
			}
			printf("           地址:");
			for (i = 0; i < MAX_LEN; i++)
			{
				if (strcmp(ptr->address[i], ""))
				{
					printf("%s      ", ptr->address[i]);
				}
			}
			printf("             分组:");
			for (i = 0; i < 10; i++)
			{
				if (ptr->grou[i] != 666)
				{
					printf("%s    ", group[ptr->grou[i] - 1]);
				}
			}
			ptr = ptr->next;
			printf("\n");
		}
	}
	else
	{
		printf("请输入要查询的名字:");
		scanf("%s", na);
		while (ptr)
		{
			if (!strcmp(na, ptr->name))
			{
				printf("姓名:%s", ptr->name);
				printf("       电话:");
				for (i = 0; i < MAX_LEN; i++)
				{
					if (strcmp(ptr->iphone[i], ""))
					{
						printf("%s     ", ptr->iphone[i]);
					}
				}
				printf("           地址:");
				for (i = 0; i < MAX_LEN; i++)
				{
					if (strcmp(ptr->address[i], ""))
					{
						printf("%s      ", ptr->address[i]);
					}
				}
				printf("             分组:");
				for (i = 0; i < 10; i++)
				{
					if (ptr->grou[i] != 666)
					{
						printf("%s    ", group[ptr->grou[i] - 1]);
					}
				}
				ptr = ptr->next;
				printf("\n");
			}
		}
	}
}
void menu_person(person* l)
{
	int k = 0;
	while (1)
	{
		printf("***************联系人管理***************\n");
		printf("        1             添加联系人\n");
		printf("        2             修改联系人\n");
		printf("        3             删除联系人\n");
		printf("        4             查询联系人\n");
		printf("        5             打印所有联系人\n");
		printf("        0             退出\n");
		scanf("%d", &k);
		switch (k)
		{
		case 1:
			system("cls");
			person_add(l);
			Sleep(3000);
			system("cls");
			break;
		case 2:
			system("cls");
			person_xiu(l);
			Sleep(3000);
			system("cls");
			break;
		case 3:
			system("cls");
			person_del(l);
			Sleep(3000);
			system("cls");
			break;
		case 4:
			system("cls");
			person_find(false, l);
			Sleep(3000);
			system("cls");
			break;
		case 5:
			system("cls");
			person_find(true, l);
			Sleep(3000);
			system("cls");
			break;
		case 0:
			system("cls");
			main_meun();
			break;
		default:
			printf("输入错误请重新输入!!!\n");
			Sleep(3000);
			system("cls");
			break;
		}

	}
}
void thing_add(person* l)
{

	person* ptr=l;
	while(ptr!=NULL)
    {ptr=ptr->next;}
	int i=0;
	char na[MAX_LEN] = "";
	if(ptr==NULL)
    {
        while(1){
        person* a=(person*)malloc(sizeof(person));
        printf("请输入时间:");
        scanf("%d",&a->time[i]);
        printf("请输入事件:");
        if (!strcmp("",a->thing[i]))
        {
            scanf("%s",a->thing[i]);
        }
        printf("添加成功!!\n");
		l->next=a;
		a->next=NULL;
		printf("输入1继续,输入0退出\n");
        int asd;
        scanf("%d",&asd);
        if(asd==0)
        {
            break;
        }
        i++;
    }

    }
    else{

        while(1){
		    person* a=(person*)malloc(sizeof(person));
				printf("请输入时间:\n");
				scanf("%d",&a->time[i]);
                printf("请输入事件:\n");
                scanf("%s",a->thing[i]);
                ptr->next=a;
                a->next=NULL;
				printf("添加成功!!\n");
				printf("输入1继续,输入0退出");
				int asd;
				scanf("%d",&asd);
				if(asd==0)
                {
                    break;
                }
                i++;

        }




	}return;

}
void thing_find(person* l)
{
	person* ptr=l->next;
	int i=0;
	char na[MAX_LEN] = "";
    if(ptr==NULL)
    {
        printf("没有信息");
        Sleep(2000);
        return;
    }
	while(ptr)
	{

		printf("      时间:");
		for (i=0;i<MAX_LEN;i++)
		{

			if(ptr->time[i]!=0)
			{
				printf("%d     ",ptr->time[i]);
			}
			else{break;}
		}
		printf("             事件:");
		for (i=0;i<10;i++)
		{
			if (!strcmp(ptr->thing[i], ""))
			{
				printf("%s    ",ptr->thing[i]);
			}
			else{break;}
		}
		ptr=ptr->next;
		printf("\n");
	}

}
void menu_thing(person* l)
{
	int k = 0;
	while (1)
	{
		printf("***************联系人通信管理***************\n");
		printf("        1             添加联系人通信信息\n");
		printf("        2             查看联系人通信信息\n");
		printf("        3             退出\n");
		printf("请输入:");
		scanf("%d", &k);
		switch (k)
		{
		case 1:
			system("cls");
			thing_add(l);
			Sleep(3000);
			system("cls");
			break;
		case 2:
			system("cls");
			thing_find(l);
			Sleep(3000);
			system("cls");
			break;
		case 3:
			system("cls");
			return;
			break;
		default:
			system("cls");
			printf("输入错误请重新输入!!!\n");
			Sleep(3000);
			system("cls");
			break;
		}
	}

}
void main_meun()
{
    person* l = person_init();
	int k = 0;
	while (1)
	{
		printf("********************通讯录*******************\n");
		printf("*******1                       分组管理******\n");
		printf("*******2                       联系人管理******\n");
		printf("*******3                       通信事件管理******\n");
		printf("*******4                       退出******\n");
		printf("请输入:");
		scanf("%d", &k);
		switch (k)
		{
		case 1:
			system("cls");
			menu_group();
			system("cls");
			break;
		case 2:
			system("cls");
			menu_person(l);
			system("cls");
			break;
		case 3:
			system("cls");
			menu_thing(l);
			system("cls");
			break;
		case 4:
			return 0;
			break;
		default:
			system("cls");
			printf("输入错误请重新输入!!!\n");
			Sleep(2000);
			system("cls");
			break;
		}
	}
}
int main()
{
	main_meun();
	return 0;
}

麻烦大家看一下第三个通讯事件管理进入后通过1,输入一些数据后,再用第二个查看时显示不了数据了

 

  • 写回答

3条回答 默认 最新

  • SoftwareTeacher 《编程之美》作者 2021-04-05 20:42
    关注

    麻烦你用 ’代码‘ 控件把完整的程序贴出来, 这样大家才好帮你。 

    评论

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿