C語言ll作業01


問題 答案
這個作業要求在哪里 C語言作業01:通訊錄
這個作業的目標 學會用指針數組知識編寫通訊錄
作業正文 C語言作業01
其他參考文獻 學長視頻

1.1 需求分析

通訊錄容納50人,需要有添加,排序,刪除,修改,退出等功能。

1.2 程序代碼

#include <stdio.h> 
#include <stdlib.h>
#include <string.h>

void input(); 
void find();
void xiugai();
void cut();
void menu();  
void Error();
void sort();
struct Preson{
	int no;
	char name[10];
	char phone[20];
	struct Preson *next;
}; 
Preson stu[50];
Preson t; 
Preson *s;
Preson t1; 
int sum=50,count=0;
void menu()
{
    printf("\n");
	printf("操作列表:\n");
    printf("1.排序          2.添加          3.刪除\n");
    printf("4.修改          5.查找          6.退出程序\n");
    printf("請輸入操作: ");
}

int main()
{
    int flag=1,i,j,n;
    while( 1 )
    {
    system("cls");
	printf("========== 通訊錄 ==========\n\n\n");
	printf("");
	printf("========== 界面 ==========\n");
	printf("人數: %d 人           | 剩余空間: %d 人\n",count,sum);
	
	for( i=0; i<count; i++ )
	{
		printf("編號:%10d | 名字:%10s | 電話號碼:%10s\n",stu[i].no,stu[i].name,stu[i].phone);
	}
	menu();
	scanf("%d",&n);
    switch(n)
		{
			case 1: sort();break;
			case 2: input(); break;
			case 3: cut();break;
			case 4: xiugai();break;
			case 5: find();break;
			case 6: return 0;
			default: Error();break;
	    }
   }
}

void input()
{
	int i,flag=1;
	if(sum==0)
	{
		printf("通訊錄已滿!\n");
	}
	else if(sum!=0&&flag!=0)
	{
		
		printf("請輸入添加位置:");
		scanf("%d",&stu[count].no);
		if(stu[count].no>50||stu[count].no<=0)
		{
			printf("處理編號超過閾值");
			system("pause"); 
		}
		else 
		{
			   for( i=0; i<count; i++)
			   { 
				if( stu[i].no==stu[count].no ) {flag=0;printf("已經有該數據");system("pause");}
			   }
			if( flag!=0 )
		    {
		        printf("請輸入聯系人姓名:");
	            scanf("%s",stu[count].name);
		        printf("請請輸入聯系人電話:");
	            scanf("%s",stu[count].phone);
		        count++;
		        sum--; 
		    }
		    if(flag==0)
		    {
		    	void Error();
				printf("已此處已有數據\n");
			}
		}
	}

}

void find()
{
	char name[20];
	int b=0,j=0;
	Preson *p;
	p=stu;
	printf("請輸入需要查詢人的名字:");
	scanf("%s",name);
	while(j!=count)
	{
		if(strcmp(name,p->name)==0)
		{
			b=1;
			break;
		}
		p++;
		j++;
	}
	if(b==0)
	{
		printf("\n查無此人\n");
		system("pause");
	}
	else
	{
		printf("編號:%10d | 名字:%10s | 電話號碼:%10s\n",p->no,p->name,p->phone);
        system("pause");
	}
}

void xiugai()
{
	 int i,j=0,flag=1,number;
	 char name[15]; 
	 char phone[20];
	 if(count==0)
	 {
	 	printf("你還還沒有存儲信息");
	 	system("pause");
	 }
	 else 
	 {  
	    printf("請輸入修改位置:");
		scanf("%d",&number); 
	 	while(j!=count)
	 	{
	 		if(number==stu[j].no) 
	 		{
	 	     printf("請請輸入聯系人姓名:");
			 scanf("%s",&name);
			 strcpy(stu[j].name,name);
			 printf("請請輸入聯系人電話:");
			 scanf("%s",&phone);
			 strcpy(stu[j].phone,phone);
	 		 break;
			 }
			 else
			j++; 
		}
		if(j==count)
		{
			printf("此處無數據\n");
			system("pause");
		}
	 }
}

void cut()
{
	Preson *s;
	s=stu;
	int i,j,flag=count;
	int number; 
	if(count==0)
	{
		printf("此處無數據\n");
		system("pause");
	 } 
	 else
	 {
	    printf("請數入該聯系人編號:");
		scanf("%d",&number);
		if(number<=50||number>=0)
	   {
		for( i=0; i<count; i++ )
	     {
			if(number==(s->no))
			{
				for( j=i; j<count; j++ )
				{
					stu[j]=stu[j+1];
				}
			    count--;
			    printf("已經刪除!\n");
			}
			s++;
		 } 
	    }
	    else
	    {
	    	printf("已經越界,請輸入正確數值");
		 } 
	} 
	 if(count==flag)
	 {
	 	printf("沒有這個人\n");
	 	system("pause");
	 }
}

void Error()
{
	printf("錯誤操作:錯誤操作指令,請重新輸入   ");
	system("pause"); 
}

void sort()
{
	int N;
	printf("請選擇排序方式: 1)編號排序 2)名字排序");
	scanf("%d",&N);
	if(count==0)
	{
		printf("你還沒有輸入信息");
		system("pause");
	 }
	else
	{
		switch(N)
	  {
		case 1: printf("抱歉,功能未開發"); 
		case 2: printf("抱歉,功能未開發"); 
	  }
	}
}

1.3 代碼測試









1.4 應用集成


鏈接:
https://gitee.com/zenghao67/zh20199333


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM