内容正文:
任务二 设计开始界面
简单的字符菜单作为通讯录的界面
switch(选择)
{
case 1: 输入/添加通讯录
case 2: 显示通讯录
……
}
while(用户不退出)
{
switch(选择)
{
case 1: input(); break;
case 2: print(); break;
……
}
}
任务三 设计通讯录数据结构
如果能将每个联系人的信息作为一个变量存储就相当方便了。
C语言提供了能够表示复杂数据的自定义类型:结构体类型。它可以将多种类型的数据组合为一个有机整体,形成新的数据类型。可以将姓名、年龄等不同类型的属性封装成一个结构体类型“Record”。通讯录中每个联系人的信息用一个结构体类型的变量来表示,那么100个联系人的信息用一个100个元素的结构体类型数组表示。
结构体类型的定义
结构体类型的定义形式如下:
struct 结构体类型名
{
类型1 成员数据1;
类型2 成员数据2;
……
};
例如:struct Student
{
long sno; /*学号*/
char name[10]; /*姓名*/
int age; /*年龄*/
double score[5]; /*5门功课的成绩*/
};
结构体类型变量的定义
结构体类型变量的定义方式有3种
(1)利用已定义的结构体类型定义变量:先定义结构体类型,然后再定义变量。定义方式如下:
struct 结构体类型 变量1,变量2,数组1[大小]……;
(2)定义类型的同时定义变量:这种定义方式的一般形式如下:
struct 结构体类型名
{ 类型1 成员数据1;
……
}变量1,变量2,数组1[大小]……;
(3)直接定义变量:这种定义的一般形式如下:
struct
{ 类型1 成员数据1;
……
}变量1,变量2,数组1[大小]……;
结构体类型变量的引用
定义结构体变量后就可以使用它了。结构体变量的引用主要是对应成员的引用。结构体变量的成员可以看作普通变量,可以独立的进行赋值、运算、输入与输出。需要注意的是,引用结构体成员的时候必须按照如下的形式:
结构体类型变量名 . 成员数据名
例如:
s1.age=20;
scanf(“%s”,s2.name);
对于通讯录程序,首先定义一个结构体类型Record,将每个联系人的相关信息作为一个整体,代码如下:
struct Record
{
char name[10]; /*姓名*/
char sex; /*性别,'F'表示女士,'M'表示男士*/
int age; /*年龄*/
char phonenumber[15]; /*电话号码*/
char address[50]; /*住址*/
};
struct Record friends[100];
任务四 输入通讯录联系人信息
“friends[i]”是第“i+1”个联系人对应的结构体变量,对于friends[i]中的每个成员,将其看作普通变量,独立地进行输入就可以了。对于每个联系人信息输入的具体代码为:
fflush(stdin); /*清空输入,防止错误*/
printf("input name:
");
gets(friends[i].name); /*输入姓名*/
fflush(stdin);
printf("input sex:
");
scanf(“%c”,&friends[i].sex); /*输入性别*/
任务五 显示通讯录
打印某个联系人“friends[i]”所有信息的代码如下:
printf("name : %s
",friends[i].name);
printf("sex : %c
",friends[i].sex);
printf("age : %d
",friends[i].age);
printf("phone