通讯录信息管理系统

news2024/11/26 12:31:16

系列文章

任务50 通讯录信息管理系统


文章目录

  • 系列文章
  • 一、实践目的与要求
    • 1、目的
    • 2、要求
  • 二、课题任务
  • 三、总体设计
    • 1.存储结构及数据类型定义
    • 2.程序结构
    • 3.所实现的功能函数
    • 4、程序流程图
  • 四、小组成员及分工
  • 五、 测试
    • 插入
    • 按编号查找
    • 按姓名查找
    • 按城市查找
    • 更新
    • 排序
    • 浏览
    • 删除
    • 统计
  • 六、源代码获取


一、实践目的与要求

1、目的

通过此次实践环节主要达到以下目的:
(1)进一步理解和运用结构化程序设计的思想和方法,学会根据具体问题选择合理的计算机存储结构实现数据的存储,构造较有效率的算法;
(2)学会算法描述的方法,并编制具有结构清晰、合理和易读性的小型实用程序;
(3)并会设计测试方案,完成程序的测试,能撰写出该程序的技术报告,为文档整理工作打下一个初步的基础;
(4)培养小组成员间互相学习,取长补短,协同工作的能力。

2、要求

(1)模块化程序设计,锯齿型书写格式,代码要有足够的注释;
(2)根据课题中规定的要求实现既定目标;
(3)撰写格式排版规范、结构完整的技术文档。

二、课题任务

(题目、内容及主要功能描述)

通讯录信息管理系统
通讯录信息包括:编号、通讯人姓名、联系方式、工作地点、城市、备注等。系统能够完成通讯录信息的查询、更新、插入、删除、排序等功能。
(1) 排序:按编号对所有通讯录的信息进行排序。
(2) 查询:分别按编号、通讯人姓名、城市条件查找通讯录信息。
(3) 更新:按编号对某个通讯录信息的某项信息进行修改。
(4) 插入:加入新通讯录的信息。
(5) 删除:按编号删除已注销的通讯录信息。
(6) 浏览:输出所有通讯录信息。
(7) 统计:统计某城市某工作地点的通讯人的数量并输出。

三、总体设计

1.存储结构及数据类型定义

(采用了什么存储结构、被处理数据定义的数据类型,数据类型定义中要有注释说明)


#define MAX_LENGTH 100
#define MAX_CONTACTS 100 //最大通讯录数
#define NAME_LENGTH 20 //姓名最大长度
#define PHONE_LENGTH 20 //手机号最大长度
#define CITY_LENGTH 20 //城市最大长度
#define WORKPLACE_LENGTH 30 //工作地点最大长度
#define REMARKS_LENGTH 50 //备注最大长度
#define INPUT_LENGTH MAX_LENGTH + 1

struct Contact {
    int id; //编号
    char name[NAME_LENGTH];//通讯人姓名
    char phone[PHONE_LENGTH];//联系方式
    char city[CITY_LENGTH];//工作地点
    char workplace[WORKPLACE_LENGTH];//城市
    char remarks[REMARKS_LENGTH];//备注
};

struct Contact contacts[MAX_CONTACTS]; //通讯录数组
int num_contacts = 0; //当前通讯录数

2.程序结构

(程序整体的模块结构图)
在这里插入图片描述

3.所实现的功能函数

(每个功能对应的函数名、函数形参及返回值说明)

void sortContacts()//排序函数,按编号升序排列 函数名:sortContacts 函数形参:空 函数返回值: void 
void searchContacts()//查找函数,按编号、姓名、城市查找通讯录信息 函数名:searchContacts 函数形参:空 函数返回值: void 
void updateContacts()//更新函数,按编号更新通讯录信息 函数名:updateContacts 函数形参:空 函数返回值: void 
void insertContacts() //插入函数,加入新通讯录的信息 函数名:insertContacts函数形参:空 函数返回值: void 
void deleteContacts()//删除函数,按编号删除已注销的通讯录信息 函数名:deleteContacts函数形参:空 函数返回值: void 
void viewContacts() //浏览函数,输出所有通讯录信息 函数名:viewContacts函数形参:空 函数返回值: void 
void statisticsContacts() //统计函数,统计某城市某工作地点的通讯人的数量并输出 函数名:statisticsContacts函数形参:空 函数返回值: void 

4、程序流程图

在这里插入图片描述

四、小组成员及分工

(组长、组员及每人承担的具体模块任务或其他)
组长:
主函数编写以及排序函数,按编号升序排列、查找函数,按编号、姓名、城市查找通讯录信息以及更新函数,按编号更新通讯录信息模块设计。
组员1:
完成插入函数,加入新通讯录的信息以及删除函数,按编号删除已注销的通讯录信息编写
组员2:
完成//浏览函数,输出所有通讯录信息以及统计函数,统计某城市某工作地点的通讯人的数量并输出模块实现

五、 测试

(整合各功能模块后的测试结果截图及说明)

插入

在这里插入图片描述
在这里插入图片描述

按编号查找

在这里插入图片描述

按姓名查找

在这里插入图片描述

按城市查找

在这里插入图片描述

更新

在这里插入图片描述
在这里插入图片描述

排序

在这里插入图片描述

浏览

在这里插入图片描述

删除

在这里插入图片描述

统计

在这里插入图片描述

六、源代码获取

本次的分享就到这里啦,创作不易,感谢点赞收藏👍
感兴趣的小伙伴可以在评论区留言或者私信我哦💕

提示:代码获取链接: 下载源码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/551717.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

超好玩C++控制台打飞机小游戏,附源码

我终于决定还是把这个放出来。 视频在这:https://v.youku.com/v_show/id_XNDQxMTQwNDA3Mg.html 具体信息主界面上都有写。 按空格暂停,建议暂停后再升级属性。 记录最高分的文件进行了加密。 有boss(上面视频2分47秒)。 挺好…

轻松转换CAJ文件为PDF格式:免费工具和技巧

在处理中国知网(CNKI)数据库中的CAJ文件时,将其转换为更常用的PDF格式可以提供更广泛的共享和便捷的阅读体验。本文将介绍一种免费的工具和一些技巧,帮助您轻松地将CAJ文件转换为PDF格式。我们将使用记灵在线工具进行操作。 记灵…

推荐几本提高程序员职业素养的书

如果你是一名程序员,想要提长自己,那么这几本书推荐给你。 1、好代码 ,坏代码 为了写出优良的代码,我们必须对手上的方案有合理的判断,并彻底想清楚特定方法的结果(好的和坏的)。为此&#xff…

F检验.医学统计实例详解

F检验是一种重要的医学统计方法,常用于检验两个或多个样本的方差是否相等,也被称为方差齐性检验。方差齐性检验是医学研究中的基本方法,因为许多重要的统计分析都要求样本方差相等,如方差分析、t检验等。以下将介绍F检验的基本原理…

简单上手Scrapy框架

创建一个Scrapy框架的爬虫程序 安装Scrapy库,直接通过pycharm搜索Scrapy进行安装即可 在终端执行 scrapy startproject 项目名 scrapy startproject Learn 示例 即可创建名为Learn的Scrapy程序,成功创建项目后,会已项目名称创建一个文件夹&…

FTP和SSH连接远程终端Ubuntu

安装好ubuntu后是默认没有ssh服务和ftp服务的,我们需要自己解决一下这个问题 SSH 更新软件列表和软件 sudo apt-get update sudo apt-get upgrade安装ssh sudo apt-get install ssh启动ssh服务 sudo /etc/init.d/ssh start修改ssh服务配置文件 sudo vim /etc/…

前端工程化:发布一个属于自己的规范 npm 包

初始化项目 首先在github创建一个仓库,协议选择MIT,gitignore选择Node,添加README.md描述文件。使用git clone将项目克隆到本地。cd 进入目录,使用vscode打开(终端输入code . 命令即可)。 然后创建一个合理…

CentOS-7 安装 MariaDB-10.8

一、安装之前删除已存在的 Mysql/MariaDB 1 查找存在的 MariaDB # 注意大小写 rpm -qa | grep MariaDB # rpm -qa 列出所有被安装的rpm package (-qa:query all) rpm -qa | grep mariadb # grep (缩写来自Globally search a Regular Expre…

C++ 折叠参数包:悄然增强编程效率

前言 欢迎来到💖小K💖的💞C专栏💞,本节将为大家带来折叠参数包的详细讲解,折叠参数包为C模板编程提供了更加灵活和强大的工具,可以提高代码的简洁性和可读性,看完后希望对你有收获 文…

室内外融合定位UWB信标定位方案

大家好,我是北京华星智控公司小智,今天我给大家介绍室内外融合定位系统方案,该方案室外采用北斗卫星定位技术室内采用UWB定位技术从而实现室内外精确定位无缝切换,实现室内外的融合定位。 室内外融合定位系统, 该方案…

Binder相关问题

Binder相关问题 1、Binder是什么?2、Binder有什么优势?3、Binder如何做到一次拷贝的?4、MMAP的原理是什么?5、Binder机制是如何跨进程的?6、为什么Intent不能传递大数据7、AIDL生成Java类细节8、四大组件底层的通信机制…

波奇学Linux:yum和vim

Linux三种安装方式 源代码安装 用户下载->软件源码->源码编译->可执行程序 rpm安装:相当于去官网下载Linux安装包 可能存在依赖项不匹配问题。 yum安装包 用户yum下载->软件安装包->可执行程序 yum是软件包管理器,解决安装源&…

玩客云刷Armbian带docker详细教程(附所有软件)

文章目录 介绍一.准备工作1.硬件准备2.软件准备 二.开始折腾1.烧录系统固件2.刷入系统1.准备镜像2.刷入镜像3.刷入镜像到系统 三.功能介绍1.网页终端2.设备状态3.AriaNg4.qBittorrent5.微力同步6.filebrowser7.Portainer 四.拓展1.添加Alist1.介绍2.安装3.配置3.1查看密码3.2修…

chatgpt赋能Python-pythoncidere

PythonCider:提供最优质的 Python 编程知识 Python 是目前最受欢迎的编程语言之一,特别在数据科学和人工智能方面应用广泛。如果你是一名 Python 开发者或者正在学习 Python 编程,PythonCider 是一个你绝对不能错过的网站。 什么是 PythonC…

JavaScript实战训练小项目 WebAPI

JavaScript实战训练小项目 文章目录 JavaScript实战训练小项目 & WebAPI1. JS操作DOM树1.1 获得HTML控件/元素标签1.2 操纵控件1.2.1 获取属性值1.2.1 修改属性值 1.3 实现一个猜数字的功能 2. JQuery3. 简单计算器4. 聚合搜索5. 表白墙 JavaScript实战训练小项目 & We…

OpenLayers入门教程汇总目录

前言 本篇作为OpenLayers入门教程的目录,用于整理汇总专栏所有文章,方便查找。 入门 Gis开发入门,OpenLayers、Leaflet、Maplibre-gl和Cesiumjs地图引擎介绍以及几种地图服务vms、vmts介绍vue项目集成并使用OpenLayers地图的两种方式 加…

记ABAC的落地实践

为什么使用ABAC 一般提到授权,我们就会想到角色(role)。什么样的用户拥有什么样的角色可以怎么操作什么样的资源,这是我们普遍使用的权限系统的模型。这里的角色实质上是包含了一组用户操作资源的规则集合。一旦角色被创建&#…

【RISC-V】执行环境

裸机程序 操作系统 虚拟化 RISC-V处理器3种模式 机器模式(M模式) 安全执行环境,通常运行SBI固件,为操作系统提供服务。 特权模式(S模式) 运行操作系统内核,为应用程序提供服务。 用户模式(U模式) 运行应用程序。 虚拟化新增特权模式 …

Boundary IoU:Improving Object-Centric Image Segmentation Evaluation总结笔记

Boundary IoU:Improving Object-Centric Image Segmentation Evaluation(边界Iou:改进以对象为中心的图像分割评价) 目录 一、论文出发点 二、论文核心思想 三、相关工作 四、敏感度分析 五、Boundary IoU定义和实验证明 六、应用 七…

【系统移植】uboot 通过 NFS 加载根文件系统(一) —— 网络环境配置

前面试过了SD卡烧录根文件系统,然后借助环境变量 bootargs 来加载SD卡中的根文件系统,但是实际开发需要经常对文件做增删改等操作,所以将根文件系统放在SD上不大合适。 因此,最常用的做法是把根文件系统放在NFS服务端&#xff08…