問題 | 答案 |
---|---|
這個作業要求在哪里 | 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 應用集成