通讯录标准化输入fread c语言,C语言实现通讯录系统
C语言通讯录系统实现,供大家参考,具体内容如下
需求分析:
利用文件读,写的方法
实现增加通讯录联系人信息
实现删除通讯录联系人信息
实现查找通讯录联系人信息
实现修改通讯录联系人信息
实现查看现有通讯录联系人信息
代码实现:
// main.c
// C语言通讯录实现
//
// Created by Brisinga on 15/10/14.
// Copyright © 2015年 yan. All rights reserved.
//
#include
#include
#define LEN 10
#define NAMELEN 22
#define TELLEN 12
//*************结构体变量定义****************
//定义联系人的个数
int contactCount = 0;
//定义结构体
typedef struct{
//定义联系人姓名
char name[NAMELEN];
//定义联系人电话
char tel[TELLEN];
}Person;
//初始化联系人数组
Person contact[LEN];
//定义文件名
charchar *path = "a.data";
//接收用户输入的编号
int no;
//**************函数声明********************
//初始化声明
void init();
//校验声明
int isValid(int n,int min,int max);
//添加联系人
void addContact();
//删除联系人
void deleteContact();
//修改联系人
void updateContact();
//查看所有联系人
void doList();
//搜索联系人
void searchContact();
//退出系统
void quit();
//联系人写入文件
void writeFile();
//***************************************
int main(int argc,const charchar * argv[]) {
//通讯录初始化
init();
printf("通讯录初始化成功!\n");
while (1) {
//定义界面
printf("**********************************\n");
printf("***********欢迎使用通讯录***********\n");
printf("***********1.添加联系人*************\n");
printf("***********2.删除联系人*************\n");
printf("***********3.修改联系人*************\n");
printf("***********4.查看所有联系人**********\n");
printf("***********5.搜索联系人*************\n");
printf("***********6.退出系统***************\n");
printf("**********************************\n");
//提示用户输入编号
printf("请输入要进行操作的编号:\n");
scanf("%d",&no);
//判断输入是否合法
isValid(no,1,6);
//判断用户的操作
switch (no) {
case 1:
//添加联系人
addContact();
break;
case 2:
//删除联系人
deleteContact();
break;
case 3:
//更新联系人
updateContact();
break;
case 4:
//查看联系人
doList();
break;
case 5:
//搜索联系人
searchContact();
break;
case 6:
//退出
quit();
return 0;
default:
break;
}
}
return 0;
}
//通讯录初始化
void init(){
//定义文件指针
FILEFILE *fp = fopen(path,"r");
//判断通讯录是否存在
if (fp!=NULL) {
//如果存在
//1.读取联系人个数
fread(&contactCount,sizeof(contactCount),fp);
//2.读取每一个联系人nts
for (int i=0; i
fread(&contact[i],sizeof(Person),fp);
}
}else{
//如果不存在
//创建通讯录
fp = fopen(path,"wb");
//写入当前联系人的个数
fwrite(&contactCount,fp);
}
fclose(fp);
}
//校验输入是否合法
int isValid(int n,int max){
//如果输入的编号大于min小于max,则返回0
if (n>=min&&n<=max) {
return 0;
}
//否则返回1
printf("输入非法!\n");
return 1;
}
//添加联系人
void addContact(){
//提示用户输入要添加联系人的姓名
printf("请输入要添加的联系人姓名:*注意姓名之间不能有空格\n");
//接收联系人姓名
scanf("%s",contact[contactCount].name);
//提示用户输入要添加联系任的电话
printf("请输入要添加联系人的电话: *注意电话号码之间不能有空格\n");
//接收联系人电话
scanf("%s",contact[contactCount].tel);
//询问是否确定添加
printf("确定要添加么?1.确定 0.取消\n");
scanf("%d",&no);
if (no) {
contactCount++;
//写入文件
writeFile();
printf("添加成功!\n");
}
}
//删除联系人
void deleteContact(){
//显示联系人
doList();
int flag;
//提示用户输入要删除联系人的编号
printf("请输入要删除联系人的编号:\n");
//接收用户输入的编号
scanf("%d",&no);
//判断编号是否合法
if(!isValid(no,contactCount)){
//编号合法
printf("确定要删除么?删除后将无法恢复!1.确定 0.取消\n");
scanf("%d",&flag);
if (flag) {
//如果要删除的联系人在末尾
if (no==contactCount) {
//则contactCount-1
contactCount--;
}else{
//如果要删除的联系人不在末尾
//移动数组元素
for (int i=no-1; i
contact[i]=contact[i+1];
}
}
//contactCount--
contactCount--;
//写文件
writeFile();
}
}else
//编号不合法,则退出
printf("编号不合法!\n");
return ;
}
//修改联系人
void updateContact(){
//显示联系人
doList();
//提示用户输入要修改联系人的编号
printf("请输入要修改的联系人的编号:\n");
//接收用户输入的编号
scanf("%d",&no);
//判断编号是否合法
int flag;
if (!isValid(no,contactCount)) {
//提示用户输入新的的联系人的姓名
printf("请输入新的姓名:*注意:姓名之间不能有空格\n");
//接收用户输入的姓名
scanf("%s",contact[no-1].name);
//提示用户输入新的电话号码
printf("请输入新的电话号码:*注意:电话号码之间不能有空格\n");
//接收用户输入的电话号码
scanf("%s",contact[no-1].tel);
//询问用户确定修改么?
printf("确定要修改么?1.确定 0.取消\n");
scanf("%d",&flag);
if (flag) {
//写文件
writeFile();
printf("联系人修改成功!\n");
}else{
printf("编号不合法!!\n");
return ;
}
}
}
//查看所有联系人
void doList(){
printf("显示所有联系人:\n");
printf("编号\t姓名\t电话\n");
for (int i=0; i
printf("%d\t%s\t%s\n",i+1,contact[i].name,contact[i].tel);
}
}
//搜索联系人
void searchContact(){
int flag = 1;
//接收用户输入的姓名
char searchName[NAMELEN];
//接收用户输入的电话
char searchTel[TELLEN];
//询问用户搜索方式
printf("请输入查找的方式: 1.按姓名查找 2.按电话号码查找\n");
//接收用户的搜索方式
scanf("%d",&no);
if (no==1) {
//请用户输入要查找的姓名
printf("请输入要查找到姓名:\n");
scanf("%s",searchName);
for (int i=0; i
if (!strcmp(searchName,contact[i].name)) {
printf("您查找的联系人为:\n");
printf("%d\t%s\t%s\n",contact[i].tel);
return ;
}else{
flag = 0;
}
}
}else if(no==2){
//请用户输入要查找的电话号码
printf("请输入要查找的电话号码:\n");
scanf("%s",searchTel);
for (int i=0; i
if (!strcmp(searchTel,contact[i].tel)) {
printf("您查找的联系人为:\n");
printf("%d\t%s\t%s\n",contact[i].tel);
return ;
}else{
flag = 0;
}
}
}else{
printf("非法输入!\n");
return ;
}
if (!flag) {
printf("很抱歉!小伙伴不在通讯录中!\n");
}
}
//退出系统
void quit(){
printf("系统正在退出...\n");
printf("系统已经退出!\n");
}
//联系人写入文件
void writeFile(){
//定义文件指针
FILEFILE *fp = fopen(path,"wb");
if (fp!=NULL) {
//写入联系人个数
fwrite(&contactCount,fp);
//写入每个联系人
for (int i=0; i
fwrite(&contact[i],fp);
}
}
fclose(fp);
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结
以上是编程之家为你收集整理的C语言实现通讯录系统全部内容,希望文章能够帮你解决C语言实现通讯录系统所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
通讯录标准化输入fread c语言,C语言实现通讯录系统相关推荐
- C语言标准化输入、输出字符
C语言标准化输入.输出字符 一.scanf用到的格式字符: 1.%d:以十进制整数形式输入. 2.%i:以八进制.十进制.十六进制整数形式输入. 3.%u:输入以十进制无符号整型的数. 4.%o:输入 ...
- 【C语言进阶】C语言程序设计:动态通讯录(顺序表实现)
目录 动态通讯录的实现 一.实验的目的和意义 二.实验内容描述 三.功能描述 四.数据结构 1.三大模块 2.结构设计 3.动态开辟 4.文件操作 5.主要函数 五.流程图及模块算法 1.Contac ...
- 用C语言编写简单的通讯录(大一课程作业)
用C语言编写简单的通讯录(大一课程作业) 该系统概述: 因本人只学习了C语言的基础部分,所以编写该系统时只使用了一个C文件.存储通讯录信息以txt文件方式保存. 系统设计: 显示主菜单主函数:int ...
- c语言程序设计课程设计通讯录,《C语言程序设计》课程设计-通讯录系统(42页)-原创力文档...
<C语言程序设计>课程设计 学 学 号:________ 姓 名:____ 指导教师:_________ 完成日期:2010.07.03 ______________学校______系__ ...
- 通讯录管理系统C语言课程设计大作业,c语言课程设计报告---通讯录管理系统.doc...
c语言课程设计报告---通讯录管理系统.doc Yangtze University College of Arts and Science 学生实习手册 (课程设计报告) 学 部 理 工 学 部 专 ...
- [c语言]——C语言实现通讯录
通讯录的c语言实现源代码 简单通讯录的实现还是包括三个源文件,test.c(实现通讯录主逻辑),txl.c(实现用到的各个函数),txl.h(存放txl中用到的各种头文件与声明). txl.h #if ...
- C语言小项目-《通讯录》(超详细讲解)
加油加油!!! 文章目录 前言 一:静态库通讯录 1:通讯录介绍 1.1代码主体框架的介绍 1.2 要实现的功能 2:通讯录实现 2.1 通讯录的外部封装 2.1 创建通讯录 2.2 初始化通讯录 2 ...
- c语言通讯录程序线性表,数据结构(C语言)课设1——单位员工通讯录管理系统(线性表应用)...
数据结构(C语言)课设1--单位员工通讯录管理系统(线性表应用) 题目要求: 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息 ...
- C语言课程设计:通讯录系统
C语言课程设计:通讯录系统 [题目4]通讯录程序设计 设计一个实用的小型通讯录程序,具有添加,查询和删除功能.由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码.电话号码 ...
- c语言课程设计自动答题系统,C语言课程设计-单项选择题标准化考试系统设计.doc...
PAGE 沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:C语言课程设计 课程设计题目:单项选择题标准化考试系统设计 院(系): 计算机学院 专 业: 计算机科学与技术 班 级: 学 号: 姓 ...
最新文章
- Linux qfile中文文件名,QFile无法打开包含unicode字符的文件名
- CAN总线简明易懂教程(三)
- 微信新增“炸屎”功能,被好友玩坏了。。
- java泛型通配符和类型参数的范围
- android builder模式 插件,如何在Kotlin中实现Builder模式?
- JAVA构造函数是不是封装_Java 封装与构造函数
- Timer类 和 TimerTask类。一种有用计时器工具。可以每隔相同时间去执行某任务一次。
- oracle查看session阻塞,oracle查询blocking session阻塞情况
- linux+下c语言编程项目,精通UNIX下C语言编程与项目实践
- “安防+人工智能”,安企选择哪种抱大腿姿势才有出息?
- 如何能成为一名合格的前端开发工程师?
- 编程ING:人人都能学会程序设计
- Matlab中imnoise函数的用法
- After Effect弹性表达式的用法
- 透镜成像原理,眼球成像原理,小孔成像原理
- AS3动画效果常用公式
- python中合并excel表格
- 学习游戏服务器开发必看,C++游戏服务器开发常用工具介绍
- android 混淆不混淆第三方jar,Android 第三方Jar包FastJson 代码混淆时的解决方法 - Android开发论坛 - 51CTO技术论坛_中国领先的IT技术社区...
- 《SpringBoot2.0 实战》系列-整合thymeleaf 实现模板文件转图片