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

news2024/11/26 20:32:12

通讯录程序设计

一、课程设计题目与要求

题目 :通讯录管理程序

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。如返回非零值则表示有错误发生。文件的读写对文件的读和写是最常用的文件操作。

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

心得体会

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

程序设计方法

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

♻️ 资源

在这里插入图片描述

大小: 2.34MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87248138

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

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

相关文章

Biotin-PEG-Pyrene,Pyrene-PEG-Biotin,芘丁酸-PEG-生物素peg化芘衍生物

聚乙二醇化芘衍生物之Pyrene-PEG-Biotin(Biotin-PEG-Pyrene),其化学试剂的中文名为芘丁酸-聚乙二醇-生物素,此试剂可用于碳纳米管和石墨烯表面功能化。它所属分类为Biotin PEG Pyrene PEG。 peg试剂的分子量均可定制,…

机器学习实战教程(二):决策树基础篇

一、决策树 决策树是什么?决策树(decision tree)是一种基本的分类与回归方法。举个通俗易懂的例子,如下图所示的流程图就是一个决策树,长方形代表判断模块(decision block),椭圆形成代表终止模块(terminating block),表…

简单架构演变过程概图

单一应用就是一个jar包或者war包丢到tomcat等服务器上运行,耦合度很高,前后不分离,就是一整个应用 演变成 MVC是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就…

1567_AURIX_TC275_电源管理_待机模式

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 进入待机模式前需要有序关闭各个模块以避免出现大的电流突变;之后,所有额度外设以及相关的中断全都关闭以避免异常唤醒;进入待机模式的过程中会有系统时…

JS中一个方法同时发送两个ajax请求出现报错问题的解决方法

目录 1、背景介绍 2、分析原因 3、解决办法 1、背景介绍 在实现前端显示后端数据时遇到这样一个问题:在js同一个方法中调用2个ajax,其中ajax1与ajax2之间没有联系,但是为了看效果需要同时请求数据显示,运行程序却报错,…

java计算机毕业设计ssm影城在线售票及票房数据分析系统8b9a0(附源码、数据库)

java计算机毕业设计ssm影城在线售票及票房数据分析系统8b9a0(附源码、数据库) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都…

Simulink基础【1】-弹簧-阻尼模型的常微分方程求解

Simulink基础【1】-弹簧-阻尼模型的常微分方程求解0. Simulink模块是什么?能干什么?1. 弹簧阻尼模型简介1.1 受常力的弹簧阻尼模型1.2 动力学方程2. simulink模型构建2.1 Simulink基础模块使用2.2 结果可视化后记0. Simulink模块是什么?能干什…

基于微信小程序旅游管理系统-计算机毕业设计

项目介绍 随着互联网的趋势的到来,各行各业都在考虑利用互联网将自己的信息推广出去,最好方式就是建立自己的平台信息,并对其进行管理,随着现在智能手机的普及,人们对于智能手机里面的应用旅游服务软件也在不断的使用…

区块链溯源的应用四大领域

目前基于区块链溯源的应用案例可以分为4大领域:食药畜牧、知识产权、数字凭证和供应链。 1、在食药畜牧领域中,区块链溯源将全流程的关键业务数据上链,做到信息公开透明;将链上链下相结合,确保信息真实性和品质可控&a…

[1.2.0新功能系列:二] Apache Doris 1.2.0 JDBC外表 及 Mutil Catalog

JDBC 外表 JDBC External Table Of Doris 提供了Doris通过数据库访问的标准接口(JDBC)来访问外部表,外部表省去了繁琐的数据导入工作,也省去了之前ODBC繁杂的驱动安装部署及版本匹配问题,兼容性更好,操作更简单,让Dor…

【猿如意】如意如意随我心意快快显灵—markdown笔记来啦

文章目录「猿如意介绍」「猿如意安装」【基于Windows环境安装】「markdown笔记简介」「markdown笔记功能介绍」「markdown笔记通过猿如意下载安装步骤及说明」「markdown笔记使用感受」🎨猿如意官网:猿如意-程序员的如意兵器,工具代码,一搜就有 &#x1…

HbuilderX连接手机模拟器实战记录

下载HBuliderX 点击进入HBuilderX 的官网,建议下载开发版. 下载模拟器 这里使用逍遥模拟器,官方下载地址 HBuilder中配置逍遥模拟器 1.工具–设置–运行配置中添加逍遥模拟器安装目录以及端口号,默认端口号:21503 2.adb.exe配置环境变量 adb.exe一般在HbuilderX目录中&…

苹果电脑ntfs如何打开硬盘?苹果电脑读写ntfs

众所周知,在Mac电脑上面是不能够正常使用NTFS设备的,只能够读取上面的文件内容,但是想要进行删除、编辑、复制等操作是无法实现的,苹果电脑ntfs如何打开硬盘?在本文中,小编给大家介绍了两种让Mac正常使用NT…

C# 属性 索引

一 使用属性、索引的示例 1 使用属性button1.Text ① button1.Text“说你好”; 含义相当于button1.SetText(“说你好”); ② string sbutton1.Text; 2 使用属性string s“abcde” ① 求出长度:s.Length; 含义上相当于s.GetLength(); 3 使用索引 str…

Android Material Design之TextInputLayout,TextInputEditText(十四)

效果图 资源引入 implementation com.google.android.material:material:1.4.0属性 TextInputLayout 属性描述android:id控件idandroid:layout_width控件长度android:layout_height控件高度app:boxBackgroundColor控件背景颜色app:boxBackgroundMode控件模式app:boxStrokeCol…

mysql数据库扩容中的平滑扩容

数据库扩容的过程中,如果想要持续对外提供服务,保证服务的可用性,平滑扩容方案是最好的选择。 平滑扩容就是将数据库数量扩容成原来的2倍,比如:由2个数据库扩容到4个数据库,具体步骤如下: &…

Java#36(网络编程)

目录 网络通信基本模式 1.Client-Server(CS)​编辑 2.Browser-Server(BS)​编辑 一.网络通信的三要素 1.IP地址: 设备在网络中的地址, 是唯一的标识 2.端口: 应用程序在设备中的唯一的标识 3.协议: 数据在网络中传输的规则, 常见的协议有UDP协议和TCP协议 UDP通信 1.D…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java在线影院系统xxdto

毕业设计也不需要做多高端的程序,毕业设计对于大多数同学来说,为什么感觉到难,最重要的一个原因,那就是理论课到实践课的转变,很多人一下不适应,本能开始拒绝,如果是一个考试,大家都…

接口功能测试经验及策略总结,希望可以帮到你

目录 前言 一、接口测试范围 二、接口测试策略 接口设计检查 接口依赖关系检查 接口输入/输出验证 密码重置接口 用户经验值查询接口 比赛成绩同步接口 三、总结 四、重点:配套学习资料和视频教学 前言 由于平台服务器是通过接口来与客户端交互数据提供…

CH9434 嵌入式Linux与安卓系统驱动移植和使用教程

1 前言 CH9434是一款SPI转四串口转接芯片,提供四组全双工的9线异步串口,用于单片机/嵌入式/安卓系统扩展异步串口。提供25路GPIO,以及支持RS485收发控制引脚TNOW。本篇基于STM32MP157处理器平台,介绍CH9434在嵌入式Linux系统/安卓…