基于顺序表完成通讯录项目

在上一篇文章中我们了解了顺序表的基础,我们接下来可以基于顺序表完成通讯录项目。

一,对于通讯录的实现

后面会附上码云,方便大家阅读理解。

在上一篇顺序表基础中, 我们将int重命名为SLdatetype,在实现通讯录中我们将struct重命名为SLdatetype,下面先创建一个contact.h,来定义我们需要的结构体

这样就根据表中所需的功能定义我们的结构体

下一步在我们的Seqlist.h中把顺序表中的int 替换为我们刚才创建的结构体

顺序表中的所有内容都是结构体,改变一个内容,内层的结构体都会受到影响

重命名结构体为contact更好区分

下面我们正式开始了。

1,通讯录的初始化

在contact.h中声明函数

test进行函数测试

直接调用我们之前在顺序表中的初始化函数,这个是在新的.c文件中进行通讯录函数的实现。

2,通讯录的销毁

声明函数

传地址

也是直接调用顺序表中已经实现的函数

3,通讯录的添加

先进行函数声明

传地址

我们创建一个之前定义存储那些数据(姓名。。等),输入每个字段对应的数据,

那我们如何把这些数据放到顺序表呢,

用之前的尾填函数,把一个一个结构体直接放到顺序表中,这样就完成了通讯录的添加。

4,通讯录的展示

依旧是声明函数

进行传地址

结构体的访问

展示完成;

5,通讯录的删除

还是先声明函数

传地址进行测试

在函数进行之前我们需要一个查找函数来确定删除的数据是否存在,因为删除联系人数据的时候先删名字之后就一并删除了,我们传过去需要删除的名字,用字符串比较函数strcmp,在遍历顺序表内的结构体中的name如果存在返回对应顺序表的下标,没有就返回一个无法访问的数。

在函数中如果存在就调用顺序表中的SLErase函数进行指定位置的删除,没有则提前返回。

任务效果图如上。

6,通讯录的查找和修改

1.查找

还是先声明函数

传地址

和上文中findname函数的原理相同找到下标并且打印那一列

任务效果图如上。

2,修改

依旧是声明函数

传地址

和前面添加的思路一模一样。

任务效果图。

这时候我们通讯录的所有功能就实现了。

下面修改test.c函数让他更加美观,这里就不做过多介绍了

下面附上顺序表基础和通讯录项目的gitee

超级通讯录博客 · 0283596 · 王涛c语言/test_c_study - Gitee.com

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
首先,我们需要定义通讯录的联系人实体类: ```java public class Contact { private String name; private String phoneNumber; private String email; public Contact(String name, String phoneNumber, String email) { this.name = name; this.phoneNumber = phoneNumber; this.email = email; } public String getName() { return name; } public String getPhoneNumber() { return phoneNumber; } public String getEmail() { return email; } @Override public String toString() { return "Name: " + name + ", Phone number: " + phoneNumber + ", Email: " + email; } } ``` 接下来,我们需要实现顺序表类: ```java public class ContactList { private Contact[] contacts; private int size; public ContactList(int capacity) { contacts = new Contact[capacity]; size = 0; } public int getSize() { return size; } public void addContact(Contact contact) { if (size == contacts.length) { throw new RuntimeException("Contact list is full"); } contacts[size++] = contact; } public Contact getContact(int index) { if (index < 0 || index >= size) { throw new RuntimeException("Invalid index"); } return contacts[index]; } public void removeContact(int index) { if (index < 0 || index >= size) { throw new RuntimeException("Invalid index"); } for (int i = index; i < size - 1; i++) { contacts[i] = contacts[i + 1]; } contacts[size - 1] = null; size--; } public void updateContact(int index, Contact contact) { if (index < 0 || index >= size) { throw new RuntimeException("Invalid index"); } contacts[index] = contact; } public Contact[] getAllContacts() { Contact[] result = new Contact[size]; for (int i = 0; i < size; i++) { result[i] = contacts[i]; } return result; } } ``` 然后,我们可以在主函数中使用顺序表类来实现通讯录: ```java public static void main(String[] args) { ContactList contactList = new ContactList(10); contactList.addContact(new Contact("Alice", "1234567890", "alice@example.com")); contactList.addContact(new Contact("Bob", "2345678901", "bob@example.com")); contactList.addContact(new Contact("Charlie", "3456789012", "charlie@example.com")); contactList.removeContact(1); contactList.updateContact(0, new Contact("Alice", "0987654321", "alice@example.com")); Contact[] contacts = contactList.getAllContacts(); for (Contact contact : contacts) { System.out.println(contact); } } ``` 输出结果: ``` Name: Alice, Phone number: 0987654321, Email: alice@example.com Name: Charlie, Phone number: 3456789012, Email: charlie@example.com ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值