如何制作简易电子版通讯录_学生通讯录的制作

对以下通讯录选用顺序表或单链表进行存储,设计一个程序实现:

(1)显示通讯录中所有记录。

(2)查找并输出学生姓名为张江的学生的所有信息。

(3)在通讯录中的第三行添加一个新同学的信息(内容自定)。

(4)删除通讯录中第五行的学生信息。

如何制作简易电子版通讯录_学生通讯录的制作

#include<stdio.h>

#include<malloc.h>

#include<string.h>

typedef struct

{

int xh;

char name[10];

char tel[11];

}STU;

typedef STU elemtype;

typedef struct

{

elemtype data[10];

int length;

}sqlist;

void main()

{

void Lnitlist(sqlist *&L);

void cin(sqlist *&L,int a);

void cout(sqlist *&L);

void seek(sqlist *L);

bool ListInsert(sqlist *&L);

bool ListDelete(sqlist *&L);

void endcout(sqlist *&L);

sqlist *L;

int a;

printf(“你需要输入几个学生的信息n”);

scanf(“%d”,&a);

Lnitlist(L);

cin(L,a);

cout(L);

seek(L);

ListInsert(L);

ListDelete(L);

endcout(L);

}

void Lnitlist(sqlist *&L)

{

L=(sqlist *)malloc(sizeof(sqlist));

L->length=0;

}

void cin(sqlist *&L,int a)

{

int i;

for(i=0;i<a;i++)

{

printf(“请分别输入学号,名字,电话n”);

scanf(“%d%s%s”,&L->data[i].xh,L->data[i].name,&L->data[i].tel);

}

L->length=a;

}

void cout(sqlist *&L)

{

int i,s=L->length;

for(i=0;i<s;i++)

printf(“学号为%d的同学叫%s电话为%s的n”,L->data[i].xh,L->data[i].name,L->data[i].tel);

}

void seek(sqlist *L)

{

char s[10],*p;

p=s;

int i,j=1;

elemtype e;

printf(“请输入姓名n”);

while(j)

{

scanf(“%s”,s);

for(i=0;i<L->length;i++)

{

if(strcmp(p,L->data[i].name)==0)

{

e=L->data[i];

j–;

printf(“%s同学的学号为%d电话为%sn”,p,e.xh,e.tel);

break;

}

}

if(i==L->length)

printf(“查无此人,请重新输入n”);

}

}

bool ListInsert(sqlist *&L)

{

int i,j;

elemtype e;

printf(“请输入新同学信息n”);

scanf(“%d%s%s”,&e.xh,&e.name,&e.tel);

printf(“你要把他放在第几位?n”);

scanf(“%d”,&i);

if(i<1 || i>L->length+1)

return false;

i–;

for(j=L->length;j>i;j–)

L->data[j]=L->data[j-1];

L->data[i]=e;

L->length++;

return true;

}

bool ListDelete(sqlist *&L)

{

int i,j;

printf(“请输入你要删除第几个同学n”);

scanf(“%d”,&i);

if(i<1 || i>L->length)

return false;

i–;

for(j=i;j<L->length-1;j++)

L->data[j]=L->data[j+1];

L->length–;

return true;

}

void endcout(sqlist *&L)

{

int i,s=L->length;

for(i=0;i<s;i++)

printf(“学号为%d的同学叫%s电话为%s的n”,L->data[i].xh,L->data[i].name,L->data[i].tel);

}

运行

你需要输入几个学生的信息

5

请分别输入学号,名字,电话

178101 杨文 13788041567

请分别输入学号,名字,电话

178102 张江 13478920019

请分别输入学号,名字,电话

178103 刘龙 15077471314

请分别输入学号,名字,电话

178104 黄丽 15834372384

请分别输入学号,名字,电话

178105 周勇 18977413478

学号为178101的同学叫杨文电话为13788041567的

学号为178102的同学叫张江电话为13478920019的

学号为178103的同学叫刘龙电话为15077471314的

学号为178104的同学叫黄丽电话为15834372384的

学号为178105的同学叫周勇电话为18977413478的

请输入姓名

张江

张江同学的学号为178102电话为13478920019

请输入新同学信息

178106 王辉 13623778223

你要把他放在第几位?

3

请输入你要删除第几个同学

5

学号为178101的同学叫杨文电话为13788041567的

学号为178102的同学叫张江电话为13478920019的

学号为178106的同学叫王辉电话为13623778223的

学号为178103的同学叫刘龙电话为15077471314的

学号为178105的同学叫周勇电话为18977413478的

解题分析

通讯录中每个学生的信息作为一个数据元素,其类型可定义为:

typedef struct

{ int xh;

char xm[10];

int tel;

}STU;

以顺序表作为存储结构时,顺序表的类型可定义为:

typedef STU ElemType;

typedef struct

{ ElemType data[10];

int length;

}SqList ;

以单链表作为存储结构时,单链表中每个结点的类型可定义为:

typedef STU ElemType;

typedef struct LNode

{ ElemType data;

struct LNode *next;

} LinkNode ;

题目要实现的功能:

(1)显示通讯录中所有记录。

(2)查找并输出学生姓名为张江的学生的所有信息。

(3)在通讯录中的第三行添加一个新同学的信息(内容自定)

(4)删除通讯录中第五行的学生信息。

实现以上功能就是要编写主调函数来调用顺序表或单链表的基本运算算法。

如:先调用初始化运算完成建立一个空的顺序表或单链表,然后输入通讯录的所有信息,从而得到一个非空顺序表或单链表…….

在已得到非空表的基础上,再通过调用输出、查找、插入和删除顺序表或单链表元素的运算算法来完成各项功能。

关键搞清楚算法调用时要提供哪些参数,这些参数要根据所属的类型在调用前先定义好。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 787013311@qq.com 举报,一经查实,本站将立刻删除。
(0)
上一篇 2022-11-09 14:18:51
下一篇 2022-11-09 14:20:15

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注