C语言:课程设计《通讯录管理系统》(详细内容、心得体会)

C语言:课程设计《通讯录管理系统》

操作系统为 Win 10,设计环境 Visual Studio 2019


目录

C语言:课程设计《通讯录管理系统》

前言

一、需求分析

二、总体设计

三、详细设计

1,数据信息

2,模块设计

1)新建联系人模块

2)遍历模块

3)查询模块

4)定向删除模块

5)修改模块

6)排序模块

7)清空模块

四、总结及分析

程序代码


 

前言

本文仅供学习交流,未经允许请勿转载。


一、需求分析

实现简单的通讯录信息管理,系统要求以菜单方式工作,因而根据题目要求,提供键盘式选择菜单实现功能选择,通讯录信息包括编号、姓名、年龄、性别、手机号等。通讯录信息采用链表保存,提供节点的输入、输出、查询、修改等操作;要实现通讯录信息的查询,则要提供查找功能(包括按编号查询、姓名查询和手机号查询三种查询方式);要实现通讯录信息的删除、修改、清空,则要提供节点的删除 、修改功能。

1.系统以菜单方式工作。

2.通讯录信息录入功能

3.通讯录信息浏览功能 。

4.通讯录信息查询功能。

5.通讯录信息删除功能。

6.通讯录修改功能。

7.通讯录联系人排序功能

8.通讯录清空功能。


二、总体设计

根据上面的需求分析,可以将这个系统设计分为以下模块:新建联系人模块、遍历模块、查询模块、定向删除模块、修改模块、排序模块、清空模块。

下面为本次通讯录管理系统的程序框图,如下图所示。

 

 


三、详细设计

主要思想

根据动态链表的特性来实现联系人的“增删改销”,从主菜单分支出来不同的功能,结构体中统一使用字符串方便后续调用大量数据保持格式正确。

在定向删除模块中,通过对节点的头地址和尾地址的修改实现节点的删除(清空模块亦如此)。

在排序模块中,因为直接使用链表排序难度很大,因此选择将节点放入相同结构的数组里面,改变不同节点的数组下标,然后调用数组的方式实现排序输出。

在查询模块中,主要是调用节点数据,然后与输入值比较(不相同就换下一个节点比较直到数据相同,返还对应节点的地址),最后打印出来。

在修改模块中,比较简单,依靠查询模块找到指定联系人的节点然后直接修改。

1,数据信息

编码、姓名年龄性别电话、住址

建立通讯录结构体,结构体成员包括编号(唯一性且不可修改)、姓名年龄性别电话、住址

typedef struct Node
{
	int id;//编号
	char name[20];//姓名
	char age[20];//年龄
	char sex[20];//性别
	char phone[20];//手机号
	char address[20];//住址
	struct Node* pNext;
}Node;

2,模块设计

新建联系人模块:输入联系人的姓名性别、手机号以及其它的一些通讯的相关信息,通过void AddNodeList()函数来实现。

遍历模块:浏览所有联系人的相关信息,通过自己定义的void ScanList()函数与void print(Node* pTemp)函数来实现。

查询模块:可以按联系人姓名、编号、手机号来查询联系人的相关信息,通过自己定义的void Select()函数、Node* SelectNode1(char xm[20])函数 、Node* SelectNode2(int id)函数、Node* SelectNode3(char phone[20])函数来实现。

定向删除模块:输入姓名来定位所要删除的节点地址,并完成节点的删除,通过自己定义的 void DeleteListRand() 函数,void DeleteListHead()函数,void DeleteListTail()和 Node* SelectNode1(char xm[20])函数 、Node* SelectNode2(int id)函数、Node* SelectNode3(char phone[20])函数来实现。

排序模块:选择以年龄、编号、姓名、手机号来进行通讯录排序,通过自己定义void SortList()函数来实现。

清空模块:清空所有的通讯录信息,通过自己定义的void FreeList()函数来实现。

修改模块:通过姓名或者手机号锁定指定联系人,再选择下一项信息。通过自己定义的void change()函数来实现。

1)新建联系人模块

根据数据结构定义,按顺序输入新节点的相关值,通过调整每个节点的首尾指针地址,实现那动态链表。

void AddNodeList()
{
	//创建一个节点
	 Node* pTemp = (Node*)malloc(LEN);
	//节点数据赋值
	 printf("编号为%d\n", idnumber);
	pTemp->id = idnumber;
	printf("请输入姓名:");
	scanf("%s", pTemp->name);
	printf("\n");
	printf("请输入年龄:");
	scanf("%s", pTemp->age);
	printf("\n");
	printf("请输入性别:");
	scanf("%s&
  • 35
    点赞
  • 175
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值