目录
实验目的及其要求:
引用头文件、全局变量定义以及函数声明;
结构体定义
主函数
菜单函数
输入信息函数
1、录入信息:通讯录使用前的信息录用函数;
2、排序功能:按照年龄从小到大进行排序;
3、查询信息:根据输入的姓名查找并输出其相关全部信息;
4、插入信息:插入某人的信息,插入后仍然保持通讯录排好的顺序;
5、删除信息:输入某人的姓名,可以从通讯录中删除该人;
6、修改信息:可以修改某人的特定信息,如电话;
7、查看信息:查看学生管理系统信息;
BUG及技巧:
创建一个最多包含50人的通讯录(包含姓名、性别、年龄、电话),实现以下功能:
- 录入信息:能够实现通讯数据的录入;
- 排序功能:能够按照年龄从小到大进行排序;
- 查询信息:根据输入的姓名查找并输出其相关全部信息;
- 插入信息:插入某人的信息,插入后仍然保持通讯录排好的顺序;
- 删除信息:输入某人的姓名,可以从通讯录中删除该人;
- 修改信息:可以修改某人的特定信息,如电话;
- 查看信息:查看整个通讯录的信息。
- 掌握结构体变量的概念与应用;
- 熟悉结构体在内存中的存储方式;
- 掌握结构体变量作为函数参数与返回值的程序设计方法;
- 熟悉结构体数组的运用。
#include
#include
int n=50;
void menu();
struct student input();
void enter(struct student stu[]);
void sort(struct student stu[]);
void search(struct student stu[]);
void insert(struct student stu[]);
void delete1(struct student stu[]);
void revise(struct student stu[]);
void display(struct student stu[]);
struct student
{
char name[100];
int gender;
int age;
char telephone[100];
}stu[100];
int main()
{
while(1)
{
int ch;
menu();
printf("Please Input your choice:");
scanf("%d",&ch);
switch(ch)
{
case 1:enter(stu);break;
case 2:sort(stu);break;
case 3:search(stu);break;
case 4:insert(stu);break;
case 5:delete1(stu);break;
case 6:revise(stu);break;
case 7:display(stu);break;
case 0:return 0;
}
}
}
void menu() //菜单函数
{
printf(" ______________________________________________________________________\n");
printf("|**********************┍ -----------------------┑ *********************|\n");
printf("|********************** 欢迎使用通信管理系统 *********************|\n");
printf("|**********************┕------------------------┙ *********************|\n");
printf("|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx菜单xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|\n");
printf("|======================================================================|\n");
printf("|....... 1.录入信息 ...... 2.排序功能 .......|\n");
printf("|....... 3.查询信息 ...... 4.插入信息 .......|\n");
printf("|....... 5.删除信息 ...... 6.修改信息 .......|\n");
printf("|....... 7.查看信息 ...... 0.退出系统 .......|\n");
printf("|______________________________________________________________________|\n");
}
struct student input()//输入信息函数
{
struct student stu;
printf("input name\n");
gets(stu.name);
printf("input gender 1 or 0\n");
scanf("%d",&stu.gender);
printf("input age\n");
scanf("%d",&stu.age);
getchar();
printf("input telephone\n");
gets(stu.telephone);
return stu;
}
void enter(struct student stu[])//1、录入:通讯录使用前的信息录用函数
{
int i;
getchar();
for(i=0;i
void sort(struct student stu[])//2、排:按照年龄从小到大进行排序
{
int i,j;
struct student t={0};
for(i=0;istu[j].age)
{
t=stu[i];
stu[i]=stu[j];
stu[j]=t;
}
}
}
printf("排序成功!!!!\n\n");
}
void search(struct student stu[])//3、查:根据输入的姓名查找并输出其相关全部信息
{
int i,k,flag=0;
char name1[100];
getchar();
printf("input search's name\n");
gets(name1);
for(i=0;i
void insert(struct student stu[])//4、增:插入某人的信息,插入后仍然保持通讯录排好的顺序
{
int i;
printf("putchar message\n");
getchar();
stu[n]=input();
printf("插入成功!!!!\n\n");
n+=1;
sort(stu);
}
void delete1(struct student stu[]) //5、删:输入某人的姓名,可以从通讯录中删除该人
{
int i,k,j,flag=0;
char name1[100];
getchar();
printf("input delete1's name\n");
gets(name1);
for(i=0;i
void revise(struct student stu[])//6、改:可以修改某人的特定信息,如电话。
{
int i,x,k,flag=0;
char name1[100];
getchar();
printf("input revise's name\n");
gets(name1);
for(i=0;i
void display(struct student stu[])//7、看:查看学生管理系统信息
{
int i;
printf("name gender age telephone\n");
for(i=0;i
BUG及技巧:
1、利用结构体变量作为函数的参数和返回值;
2、scanf函数缓冲区,利用getchar()或者scanf()内写上’\n'去吸收‘\n';(鸣谢xiaowu..投食的知识点)
3、利用if语句、开关变量来判断是否功能实现,避免进入死循环;
4、结构体变量定义长度,避免输出时出现乱码;
5、利用strcmp函数比较输入的信息和结构体数组信息,以此判断是否进入相应功能;
菜单设计来源于 KIN布,如有侵权,联系删除。