基于C语言的人性化实用通讯录
c语言通讯录程序设计
c语言通讯录程序设计在现代社会中,通讯录是人们工作和生活中必不可少的工具之一。
为了方便管理联系人的信息,许多人开始使用电子化的通讯录,并希望能够通过程序来实现通讯录的管理。
本文将以C语言为基础,介绍一个简单但实用的通讯录程序设计。
首先,我们需要定义通讯录的数据结构。
通讯录中每个联系人都应该有姓名、电话号码、电子邮件等基本信息。
为了方便管理,我们可以定义一个结构体来表示联系人的信息。
以下是一个简单的示例:```c#define MAX_CONTACTS 100typedef struct {char name[100];char phone[100];char email[100];} Contact;Contact contacts[MAX_CONTACTS];int numContacts = 0;```上述代码中,我们使用了一个数组来存储联系人的信息,数组的大小可以根据需求进行修改。
同时,我们还定义了一个变量`numContacts`来记录当前通讯录中联系人的数量。
接下来,我们可以设计一些基本的功能,比如添加联系人、查找联系人和删除联系人等。
下面是这些功能的实现示例:```cvoid addContact() {if (numContacts >= MAX_CONTACTS) {printf("通讯录已满,无法添加新的联系人。
\n"); return;}Contact newContact;printf("请输入联系人姓名:");scanf("%s", );printf("请输入联系人电话号码:");scanf("%s", newContact.phone);printf("请输入联系人电子邮件:");scanf("%s", newContact.email);contacts[numContacts] = newContact;numContacts++;printf("联系人添加成功。
C语言课程设计通讯录系统
联系人的数据结构定义
联系人信息:包括姓名、性别、年 龄、电话、地址等
联系人分组:根据联系人关系进行 分组,如家庭、朋友、同事等
添加标题
添加标题
添加标题
添加标题
联系人关系:联系人之间的亲属、 朋友、同事等关系
联系人操作:添加、删除、修改、 查询等操作
通讯录系统的数据结构定义
联系人列表:存储所有联系 人信息的数据结构
修改联系人信息功能
功能描述:用户可 以修改联系人的姓 名、电话、地址等 信息
操作步骤:选择要 修改的联系人,点 击“修改”按钮, 输入新的信息,点 击“保存”按钮
功能限制:不能修 改联系人的ID,因 为ID是唯一的标识 符
错误处理:如果输 入的信息不符合要 求(如电话号码格 式错误),系统会 提示错误信息,并 让用户重新输入
03 通讯录系统的数据结构
联系人信息的存储方式
链表节点包含联系人信息和 指向下一个节点的指针
每个联系人信息包括姓名、 电话、地址等字段
采用链表结构存储联系人信 息
链表的头节点指向第一个联 系人信息节点
链表的尾节点指向空,表示 联系人信息的结束
链表的插入和删除操作方便 快捷,适用于频繁更新的联
系人信息
查找联系人功能
输入联系人姓名或 电话号码,系统自 动查找并显示相关 信息
支持模糊查询,如 输入部分姓名或电 话号码,系统自动 匹配相关联系人
查找结果按照姓名 或电话号码排序, 方便用户查看
查找结果可显示联 系人的详细信息, 如姓名、电话号码 、地址等
显示所有联系人功能
功能描述:显示所有联系人的信息,包括姓名、电话、地址等 操作方式:点击“显示所有联系人”按钮,系统将显示所有联系人的信息 应用场景:用户需要查找某个联系人时,可以通过这个功能快速找到 技术实现:通过数据库查询,将联系人信息从数据库中读取出来,并显示在界面上
c语言课程设计通讯录
c语言课程设计 通讯录一、课程目标知识目标:1. 理解并掌握C语言结构体和数组的使用,能够运用其创建和操作通讯录。
2. 学习并掌握C语言中的文件操作,实现通讯录数据的保存和读取功能。
3. 掌握C语言中的函数定义和应用,实现通讯录各项功能模块的划分和调用。
技能目标:1. 能够编写C程序,实现通讯录的增加、删除、修改和查询功能。
2. 能够运用所学知识,设计出界面友好、操作简便的通讯录管理系统。
3. 能够对程序进行调试和优化,提高代码的可读性和执行效率。
情感态度价值观目标:1. 培养学生主动探索、积极实践的学习态度,增强其解决实际问题的能力。
2. 培养学生的团队协作精神,学会与他人共同分析问题、解决问题。
3. 通过本课程的学习,使学生认识到编程在生活中的应用价值,激发其对计算机科学的兴趣。
分析课程性质、学生特点和教学要求:本课程为C语言课程设计,旨在巩固和拓展学生所学知识,提高其编程能力。
学生已具备一定的C语言基础,能够独立完成简单的程序编写。
课程要求学生通过动手实践,掌握结构体、数组、文件操作等知识,并能够将其应用于实际项目中。
课程目标明确,分解为具体学习成果,便于教学设计和评估。
在教学过程中,注重培养学生的实际操作能力和团队协作能力,提高其综合素质。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. C语言基础知识回顾:结构体、数组、函数、文件操作等。
- 结构体:定义、声明、初始化、结构体数组。
- 数组:一维数组、二维数组、字符串与字符数组。
- 函数:函数定义、声明、调用、参数传递。
- 文件操作:文件打开、关闭、读写、定位。
2. 通讯录管理系统功能模块设计:- 系统架构设计:功能模块划分、模块间关系。
- 功能实现:增加、删除、修改、查询、排序等。
3. 编程实践与调试:- 编写代码实现通讯录管理系统各项功能。
- 调试程序,优化代码,提高执行效率。
4. 团队协作与项目展示:- 分组进行项目开发,培养学生团队协作能力。
C语言课程设计通讯录实验报告
C语言课程设计通讯录实验报告实验目的:本实验旨在通过设计一个通讯录程序,加深理解和掌握结构体、函数和文件操作等C语言知识,并培养学生的实践能力和解决问题的能力。
实验要求:设计一个通讯录程序,能够实现添加联系人、删除联系人、查找联系人、修改联系人信息等基本功能,并能够将联系人信息保存到文件中,实现数据的持久化存储。
实验原理:通讯录程序的数据结构可以设计为一个结构体数组,每个元素表示一个联系人,结构体包含姓名、电话号码、地址等信息。
通过使用不同的函数实现不同的功能,如添加联系人函数addContact()、删除联系人函数deleteContact()、查找联系人函数searchContact()等。
实验步骤:1. 定义一个结构体类型,包含姓名、电话号码和地址等信息。
2. 声明并实现各个功能函数,如添加联系人函数addContact()、删除联系人函数deleteContact()、查找联系人函数searchContact()等。
3. 在主函数中使用循环菜单来实现用户的各种操作选择。
4. 将联系人信息保存到文件中,实现数据的持久化存储。
5. 编译并运行程序,验证程序的正确性和功能完整性。
实验结果:通过实验,成功设计并实现了一个通讯录程序,能够实现添加联系人、删除联系人、查找联系人、修改联系人信息等基本功能,并能够将联系人信息保存到文件中,实现数据的持久化存储。
实验总结:本实验通过设计一个通讯录程序,加深了对结构体、函数和文件操作等C语言知识的理解和掌握,同时也培养了解决问题的能力和实践能力。
通过实验,我进一步理解了结构体的定义和使用、函数的声明和调用、文件的打开和关闭等操作。
在实验过程中,我也遇到了一些问题,如如何优化查找联系人的算法、如何处理文件打开失败的情况等,通过思考和调试逐步解决了这些问题。
实验过程中的问题和解决方法不仅加深了对C 语言的理解,也提高了解决问题的能力。
C语言程序课设通讯录
C语言程序课设通讯录 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】C语言程序课设通讯录1问题描述通讯录是人们日常生活中经常要用到的通讯管理工具,它以文件的方式保存用户录入的数据,并提供查询的功能供用户查询和使用通讯录信息。
在本节中我们将介绍一个用C语言实现的简易通讯录管理系统,它支持基本的录入、删除、查找、修改和文件读写功能。
程序中涉及大量基本块和指针的操作,结构体和共用体数据结构的定义、使用,以及文件的读写、定位等。
2功能分析通讯录要求实现最基本的功能,包括录入、删除、查找和修改,为此需要首先定义记录项的格式,其基本属性包括姓名、性别、联系电话、电子邮件等。
作为简易通讯录,目前仅考虑英文姓名、地址数据输入,不支持中文。
功能:1、录入:操作添加一条新的记录项;2、删除:删除一条已经存在的记录项;3、修改:改变记录项的一个或多个属性,并用新的记录项覆盖已经存在的记录项;4、查找:根据用户输入的属性值查找符合条件的记录项。
依据某一属性是否可以唯一地确定一条记录项,可以将属性区分为主属性和非主属性。
对非主属性上的查找可能返回多条记录项。
为了区分,系统可以在数据录入时为每个记录项自动分配一个记录编号,这样就可以实现所有项的精确查找。
通讯录数据以文件形式存储在磁盘上,因此在程序运行中需要对文件进行读取操作。
编程人员可以根据实际需要自己定义文件的存储格式,在数据读写时必须精确定位,以免破坏文件的正确性。
除此之外,程序中还要不停处理用户的输入,对输入数据的容错性进行检查,可以保证通讯录数据的合法性,避免恶意和非恶意的操作对用户数据的破坏。
3开发工具的介绍本软件采用开发工具为C语言。
C语言是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
通讯录管理系统c语言课程设计代码
通讯录管理系统C语言课程设计代码
一、引言
在现代社会中,通讯方式多样化且频繁,通讯录管理系统应运而生。
本文将介
绍一个基于C语言设计的通讯录管理系统的代码实现。
通讯录管理系统可以帮助
用户有效地管理联系人信息,实现增删改查等操作。
二、系统功能设计
通讯录管理系统主要包括以下功能: 1. 添加联系人:用户可以输入联系人姓名、电话号码等信息,将联系人信息添加到通讯录中。
2. 删除联系人:用户可以根据
姓名或电话号码删除指定联系人信息。
3. 修改联系人:用户可以修改已有联系人
的信息,包括姓名、电话号码等。
4. 查询联系人:用户可以根据姓名或电话号码
查询联系人信息。
5. 显示所有联系人:用户可以查看通讯录中所有联系人的信息。
三、代码实现
```c #include <stdio.h> #include <string.h>
#define MAX_CONTACTS 100 #define MAX_NAME_LENGTH 50 #define
MAX_PHONE_LENGTH 15
struct Contact { char name[MAX_NAME_LENGTH]; char
phone[MAX_PHONE_LENGTH]; };
struct Contact contacts[MAX_CONTACTS]; int numContacts = 0;
void addContact() { if (numContacts < MAX_CONTACTS) { printf(。
c语言课程设计通讯录
c语言课程设计通讯录一、课程目标知识目标:1. 理解并掌握C语言中的结构体概念,能够运用结构体创建复杂数据类型;2. 学会使用数组存储结构体数据,实现结构体数组的操作;3. 掌握文件操作的基本方法,实现对通讯录数据的读写和存储。
技能目标:1. 能够编写C程序,设计并实现一个基本的通讯录管理系统;2. 能够运用选择、循环等基本控制结构实现对通讯录的有效管理;3. 能够对程序进行调试和优化,提高代码的执行效率。
情感态度价值观目标:1. 培养学生的编程兴趣,激发他们主动探索问题的积极性;2. 培养学生团队协作意识,提高沟通与协作能力;3. 引导学生认识到编程在生活中的实际应用,增强学以致用的意识。
课程性质分析:本课程为C语言课程设计,旨在通过设计一个通讯录管理系统,让学生将所学C语言知识应用于实际项目中,提高编程实践能力。
学生特点分析:学生已具备基本的C语言知识,熟悉语法和基本控制结构,但可能缺乏实际项目经验,对复杂数据类型和文件操作尚需加强。
教学要求:1. 注重理论与实践相结合,引导学生通过实际操作掌握知识;2. 鼓励学生相互讨论、协作,培养解决问题和团队协作能力;3. 强化代码规范,提高代码质量和可读性。
二、教学内容1. 结构体和结构体数组:- 介绍结构体的定义和使用;- 通过通讯录管理系统的需求,设计联系人结构体;- 引导学生运用结构体数组存储和管理联系人信息。
2. 文件操作:- 讲解文件的基本概念和文件操作函数;- 结合通讯录管理系统,实现数据的读写和存储。
3. 通讯录功能实现:- 添加联系人:实现输入、存储联系人信息的功能;- 删除联系人:实现根据条件删除指定联系人的功能;- 查找联系人:实现根据关键字查找联系人的功能;- 显示所有联系人:实现显示通讯录中所有联系人的功能。
4. 程序调试与优化:- 分析程序可能出现的错误和异常;- 引导学生掌握调试方法,优化代码执行效率。
教材章节关联:本教学内容与教材中关于结构体、数组、文件操作等章节密切相关。
基于c语言的通讯录管理系统设计与实现
基于c语言的通讯录管理系统设计与实现 Document number【AA80KGB-AA98YT-AAT8CB-2A6UT-A18GG】《高级语言程序设计》——基于c语言的通讯录管理系统的设计与实现姓名:王炳旭学号: 1216F0610119指导老师:孟芸系别:信息工程系专业班级:计科F1201班《高级语言程序设计》课程设计任务书设计内容及要求:1.设计内容输入功能:记录信息并保存文件中。
显示功能:输出文件中所有信息。
查找功能:查询所需通讯信息。
删除功能:删除无用信息。
2.设计要求建立通讯录信息,信息包含姓名、性别、班级、电话,保存在文件中;能够输出文件中所有通讯录信息。
能够提供按姓名、班级或性别查询信息;能够提供按姓名删除通讯录信息的功能;时间安排:九月:选择自己所要设计的程序,查阅书籍、网上查询,收集所需资料解决疑惑。
十月:开始编写程序,不断分析。
十一月:代码实现,程序能够运行。
十二月:写报告,完成课程设计。
《高级语言程序设计》课程设计教师评阅成绩表《高级语言程序设计》课程设计承诺书目录1.引言----------------------------------------------------------------------- 21.1设计内容------------------------------------------------------------- 21.2设计任务及具体要求--------------------------------------------------- 21.3系统环境------------------------------------------------------------- 32.总体设计------------------------------------------------------------------- 32.1系统功能简介--------------------------------------------------------- 32.2总体程序框图--------------------------------------------------------- 32.3各个模块之间的主要关系----------------------------------------------- 43.详细设计------------------------------------------------------------------- 43.1各个模块的程序流程图及运行界面--------------------------------------- 43.2关键代码分析说明----------------------------------------------------- 83.3程序使用说明--------------------------------------------------------- 94.总结----------------------------------------------------------------------- 9致谢------------------------------------------------------------------------- 9参考文献--------------------------------------------------------------------- 9附录------------------------------------------------------------------------ 101.引言当今时代,计算机已经成为人们生活中不可或缺的一部分,它打破了地域时间限制,改变了人们的工作和生活方式。
c语言通讯录管理系统课程设计报告
C语言通讯录管理系统课程设计报告一、引言通讯录管理系统是一种常见的实用性软件,用于记录和管理个人或组织的联系人信息。
本文档旨在介绍一种基于C语言开发的通讯录管理系统的设计与实现。
通过本系统,用户可以方便地添加、删除、搜索和编辑联系人信息,实现了通讯录的基本功能。
二、系统需求分析本通讯录管理系统的主要功能包括: 1. 添加联系人:用户可以添加联系人的姓名、电话号码、邮箱等信息。
2. 删除联系人:用户可以根据联系人的姓名或电话号码删除对应的联系人信息。
3. 查找联系人:用户可以根据联系人的姓名或电话号码查找对应的联系人信息。
4. 修改联系人:用户可以修改已存在联系人的信息。
5. 显示所有联系人:用户可以查看通讯录中所有的联系人信息。
三、系统设计1. 数据结构设计为了实现通讯录管理系统,我们需要设计适当的数据结构来存储联系人信息。
在本设计中,使用结构体数组来表示每个联系人的信息,其中每个结构体包含姓名、电话号码、邮箱等成员变量。
struct Contact {char name[50];char phoneNumber[20];char email[50];};2. 功能模块设计本系统主要包含以下几个功能模块:a. 添加联系人模块用户可以选择添加新的联系人,输入姓名、电话号码和邮箱等信息后,系统将在通讯录中添加新的联系人。
b. 删除联系人模块用户可以根据输入的姓名或电话号码查找对应的联系人信息,并选择删除对应的联系人。
c. 查找联系人模块用户可以根据输入的姓名或电话号码查找对应的联系人信息,并在界面上显示查询结果。
d. 修改联系人模块用户可以根据输入的姓名或电话号码查找对应的联系人信息,并选择修改对应的联系人。
e. 显示所有联系人模块用户可以选择显示通讯录中所有的联系人信息,在界面上进行展示。
3. 系统框架设计本系统的整体框架如下:1. 主菜单显示2. 根据用户的选择,进入对应的功能模块四、系统流程图下图展示了通讯录管理系统的整体流程:主菜单 -> 用户选择功能模块 -> 执行对应模块功能五、代码实现以下为通讯录管理系统的部分核心代码实现,完整代码可参考附录部分。
c语言课程设计通讯录
c语言课程设计通讯录好的,我可以帮助您设计一个简单的通讯录程序。
下面是一个示例代码,实现了通讯录的基本功能,包括添加联系人、显示联系人列表、查找联系人、删除联系人和修改联系人信息。
c复制代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_CONTACTS 100 // 通讯录最大容量// 定义联系人结构体typedef struct {char name[20]; // 姓名char phone[15]; // 电话号码char email[30]; // 邮箱地址} Contact;// 定义通讯录结构体typedef struct {Contact contacts[MAX_CONTACTS]; // 联系人数组int size; // 当前联系人数量} AddressBook;// 添加联系人void add_contact(AddressBook *book) {if (book->size >= MAX_CONTACTS) {printf("通讯录已满,无法添加联系人。
\n"); return;}printf("请输入联系人姓名:");scanf("%s", book->contacts[book->size].name); printf("请输入联系人电话号码:");scanf("%s", book->contacts[book->size].phone); printf("请输入联系人邮箱地址:");scanf("%s", book->contacts[book->size].email); book->size++;printf("联系人已添加。
个人通讯录管理系统C语言源程序(优秀新版)
#include <stdio.h> /*头文件*/#include <stdlib.h> //包含最常用的系统函数#include <string.h> //关于字符数组的函数定义的头文件#include <conio.h> //控制台输入输出//定义结构体struct tongxunlu /*定义通讯录结构体变量*/{char xingming[20]。
/*定义输入名字的数组*/char dianhua[20]。
/*定义输入电话号码的数组*/char dizhi[40]。
/*定义输入地址的数组*/} txl[100]。
//默认100个数据int n=0。
//记录数据联系人数量FILE *fp。
/*定义文件*///程序用到的所有函数void zhucaidan()。
/*主菜单函数*/void zengjia()。
/*增加联系人函数*/void readfile()。
/*文件中读入函数*/void writefile()。
/*文件中写入函数*/void xiugai()。
/*修改联系人函数*/void xiugai_xingming()。
/*姓名修改*/void xiugai_dianhua()。
/*电话号码修改*/void chazhao()。
/*查找联系人函数*/void chazhao_xingming()。
/*按姓名查找*/void chazhao_dianhua()。
/*按号码查找*/void shanchu()。
/*删除联系人函数*/void shanchu_quanbu()。
/*全部删除*/void shanchu_dange()。
/*单个删除*/void xianshi()。
/*号码显示*///程序主函数模块六void main() /*主函数main*/{ readfile()。
/*读入文件*/while(1) /* 循环(永远进行)*/{zhucaidan()。
用C语言实现简易通讯录
⽤C语⾔实现简易通讯录C语⾔实现⼀个通讯录,通讯录可以⽤来存储1000个⼈的信息,每个⼈的信息包括:姓名、性别、年龄、电话、住址**提供⽅法:1. 添加联系⼈信息2. 删除指定联系⼈信息3. 查找指定联系⼈信息4. 修改指定联系⼈信息5. 显⽰所有联系⼈信息6. 清空所有联系⼈7. 以名字排序所有联系⼈**思路分析:⾸先我们可以分三个模块来解决这个问题,第⼀个模块我们需要⼀个头⽂件,这个头⽂件⾥可以包含⼀些相应信息,当实现⽂件和测试⽂件包含⾃⼰定义的头⽂件时便可以获得⼀些相关的信息。
所以头⽂件⾥应该包括⼀个结构体,这个结构体⾥应包含姓名,性别,年龄,电话,住址。
同时还可以定义⼀个结构体,这个结构体⾥包含通讯录,同时通讯录⾥⼈员的计数变量,将通讯录的地址传到别的地⽅便可以实现对它遍历或者其他操作。
第⼆个模块便是我们的测试函数,测试函数便可以实现我们的菜单打印,同时由我们接收不同的值便可以实现不同的操作,就是相应的⽅法的实现,这⾥很明显可以通过⼀个switch语句来进⾏控制。
第三个模块便是我们的⽅法实现的函数,将模块2⾥定义的类型为通讯录的地址传到各个⽅法⾥,这样便可以实现对通讯录的操作。
1.linkman.h(头⽂件)#ifndef __LINKMAN_H__#define __LINKMAN_H__#include<stdio.h>#include<windows.h>#include<string.h>#pragma warning (disable:4996)typedef struct LINKMAN//建⽴结构体,存放联系⼈信息{char name[20];char sex[10];int age;int tel[12];char addr[50];}LINKMAN;typedef struct Statis //把通讯录和⼈员统计放在结构体内{LINKMAN num[1000];int count;}Statis;void inint_linkman(Statis *p);//初始化数组void Add_linkman(Statis *p);// 添加联系⼈信息void Dele_linkman(Statis *p);//删除指定联系⼈信息void Find_linkman(Statis *p);//查找指定联系⼈信息void Revise_linkman(Statis *p);//修改指定联系⼈信息void Display_linkman(Statis *p);//显⽰所有联系⼈信息void Empty_linkman(Statis *p);//清空所有联系⼈void sort_linkman(Statis *p);//以名字排序所有联系⼈#endif2.test.c(测试)#include "linkman.h"Statis sta;void menu()//菜单{printf("***********************************\n");printf("********1.添加联系⼈信息***********\n");printf("********2.删除指定联系⼈信息*******\n");printf("********3.查找指定联系⼈信息*******\n");printf("********4.修改指定联系⼈信息*******\n");printf("********5.显⽰所有联系⼈信息*******\n");printf("********6.清空所有联系⼈***********\n");printf("********7.以名字排序所有联系⼈*****\n");printf("**************按0退出程序**********\n");printf("***********************************\n");}void test(){int i = 0;do{menu();printf("请输⼊你要进⾏的选项:");scanf("%d", &i);switch (i){case 1:Add_linkman(&sta);break;case 2:Dele_linkman(&sta);break;case 3:Find_linkman(&sta);break;case 4:Revise_linkman(&sta);break;case 5:Display_linkman(&sta);break;case 6:Empty_linkman(&sta);break;case 7:sort_linkman(&sta);break;case 0:exit(1);break;default:printf("输⼊错误\n");break;}} while (i);}int main(){inint_linkman(&sta);test();system("pause");return 0;}3.game.c(实现)#include "linkman.h"void inint_linkman(Statis *p){int count = sizeof(p->num);p->count = 0;memset(p->num, 0,count);}int Find(Statis *p, char *pname)//对于⼀个联系⼈是否存在封装⼀个函数,在后⾯的修改、删除、查找可以⽤到{int i = 0;for (i = 0; i < (p->count); i++){if (strcmp(p->num[i].name, pname) == 0) return i;}return -1;}void menu1()//修改联系⼈时所⽤到的菜单{printf("*********************\n");printf("****1.姓名*2.性别****\n");printf("****3.年龄*4.电话****\n");printf("****5.地址*6.返回****\n");printf("*********************\n");}void Add_linkman(Statis *p)//添加联系⼈{printf("请输⼊你要添加的联系⼈姓名:\n"); scanf("%s", p->num[p->count].name);printf("请输⼊你要添加的联系⼈性别:\n"); scanf("%s", p->num[p->count].sex);printf("请输⼊你要添加的联系⼈年龄:\n"); scanf("%d", &(p->num[p->count].age)); printf("请输⼊你要添加的联系⼈电话:\n"); scanf("%s", p->num[p->count].tel);printf("请输⼊你要添加的联系⼈地址:\n"); scanf("%s", p->num[p->count].addr);if ((p->count) > 1000){printf("联系⼈上限\n");}else{printf("添加成功\n");p->count++;}}void Dele_linkman(Statis *p)//删除联系⼈{char name[20] = { 0 };int result = 0;int n = 0;int i = 0;printf("请输⼊要删除⼈的姓名:\n");scanf("%s", name);result = Find(p, name);if (result != -1){printf("你是否要删除该联系⼈?\n");printf("删除请按1,不删除请按0\n");scanf("%d", &n);if (n == 1){for (i = 0; i < (p->count)-1; i++){p->num[i] = p->num[i + 1];}p->count --;printf("删除成功\n");}else{printf("删除失败\n");}}else{printf("你要删除的联系⼈不存在\n");}}void Find_linkman(Statis *p)//查找联系⼈{char name[20] = { 0 };int result = 0;printf("请输⼊要查找联系⼈的姓名:\n");scanf("%s", name);result = Find(p, name);if (result != -1){printf("姓名:%s\n", p->num[result].name);printf("性别:%s\n", p->num[result].sex);printf("年龄:%d\n", p->num[result].age);printf("电话:%s\n", p->num[result].tel);printf("地址:%s\n", p->num[result].addr);}else{printf("你要查找的联系⼈不存在\n");}}void Revise_linkman(Statis *p)//修改联系⼈{char name[20] = {0};int result = 0;printf("请输⼊你要修改联系⼈的姓名:\n");scanf("%s", name);result = Find(p, name);if (result != -1){printf("姓名:%s\n", p->num[result].name);printf("性别:%s\n", p->num[result].sex);printf("年龄:%d\n", p->num[result].age);printf("电话:%s\n", p->num[result].tel);printf("地址:%s\n", p->num[result].addr);int i = 0;do{menu1();printf("输⼊你要修改的选项:\n");scanf("%d", &i);switch (i){case 1:printf("请把姓名修改成:");scanf("%s", p->num[result].name);break;case 2:printf("请把性别修改成:");scanf("%s", p->num[result].sex);break;case 3:printf("请把年龄修改成:");scanf("%d", &(p->num[result].age));break;case 4:printf("请把电话修改成:");scanf("%s", p->num[result].tel);break;case 5:printf("请把地址修改成:");scanf("%s", p->num[result].addr);break;case 0:break;default:printf("输⼊错误");break;}} while (i);}else{printf("你要修改的联系⼈不存在\n");}}void Display_linkman(Statis *p)//打印所有联系⼈信息{int i = 0;printf("输出所有⼈的信息:\n");printf("%10s%7s%6s%8s%10s\n","名字","性别","年龄","电话","住址"); for (i = 0; i <(p->count); i++){printf("%11s", p->num[i].name);printf("%5s", p->num[i].sex);printf("%5d", p->num[i].age);printf("%10s", p->num[i].tel);printf("%12s", p->num[i].addr);printf("\n");}}void Empty_linkman(Statis *p)//清空联系⼈{p->count = 0;}void sort_linkman(Statis *p)//以名字排序所有联系⼈(冒泡){int i = 0;int j = 0;for (i = 0; i < p->count - 1; i++)for (j = 0; j < p->count - 1 - i; j++){if (strcmp(p->num[j].name, p->num[j + 1].name)>0){LINKMAN tmp;tmp = p->num[j];p->num[j] = p->num[j + 1];p->num[j + 1] = tmp;}}}程序运⾏结果部分⽰范:到此为⽌,我们的简易通讯录就实现啦。
c语言通讯录程序(共5篇)
c语言通讯录程序(共5篇)第一篇:c语言通讯录程序C语言程序设计实践——通讯录管理系统六、程序源代码及注释#include #include #include #include #define SUM 100 #define STOP 1000typedef struct /*结构体,存放通讯录成员信息,重新定义成member型变量*/ { char name[10]; char tel[15]; char cla[5]; char mail[20]; char qq[15]; }member;member info[SUM]; //所有成员空间FILE *fp;//文件指针,用于打开或保存通讯录文件int count=0; //全局变量,用于计数已存入数量/*-----------------------*/int load(char filename[])//打开通讯录文件{ member *p; int i=0; if((fp=fopen(filename,"rb"))==NULL)return i; else{while(!feof(fp)){p=(member *)malloc(sizeof(member));if(fread(p,sizeof(member),1,fp)==1){strcpy(info[i].name,p->name);strcpy(info[i].tel,p->tel);strcpy(info[i].cla,p->cla);strcpy(info[i].mail,p->mail);strcpy(info[i].qq,p->qq);i++;}free(p);}return i;} } /*------------------*/void save(char filename[]) //保存通讯录文件 {int i;member *p;if((fp=fopen(filename,"wb"))==NULL){printf("无法保存!打开文件%s时出错\n",filename); exit(1);}elsefor(i=0;i{p=(member *)malloc(sizeof(member));strcpy(p->name,info[i].name);strcpy(p->tel,info[i].tel);strcpy(p->cla,info[i].cla);strcpy(p->mail,info[i].mail);strcpy(p->qq,info[i].qq);fwrite(p,sizeof(member),1,fp);free(p);}fclose(fp); } /*-----------------*/ void display(void) //分类查看功能 { system("cls");char dis;char way[5];int i,j=0;choice:printf("**********请选择查看分类***********\n");printf("**********1.亲友**********\n");printf("**********2.同学**********\n");printf("**********3.老师**********\n");printf("**********4.其他**********\n");printf("**********5.查看全部**********\n");printf("**********0.返回上一级菜单**********\n");printf("*****************************************\n"); printf("请选择(1~5或0):");dis=getchar();getchar();switch(dis){case '1':strcpy(way,"亲友");break;case '2':strcpy(way,"同学");break;case '3':strcpy(way,"老师");break;case '4':strcpy(way,"其他");break;case '5':printf("*******全部通讯成员*******\n"); for(i=0;iprintf("姓名:%s\n",info[i].name);printf("电话号码:%s\n",info[i].tel);printf("电子邮箱:%s\n",info[i].mail);printf("QQ号:%s\n",info[i].qq);printf("分类:%s\n",info[i].cla);printf("*****************************\n");j++;}if(j==0){printf("************************\n");printf("无任何通讯成员\n");}j=0;Sleep(STOP);goto choice; break;case '0':return; break;default:printf("*************************\n");printf("输入指令有误!\n");printf("*************************\n");Sleep(STOP);goto choice;}printf("********通讯成员之%s*******\n",way); for(i=0;iif(strcmp(info[i].cla,way)==0){printf("****姓名:%s\n",info[i].name);printf("****电话号码:%s\n",info[i].tel);printf("****电子邮箱:%s\n",info[i].mail);printf("****QQ号:%s\n",info[i].qq);printf("****分类:%s\n",info[i].cla);printf("**********************************\n"); j++;}}if(j==0){printf("该分类中无通讯成员\n");printf("******************\n");}j=0;Sleep(STOP);goto choice; }/*------*/ int add(void)//增加新的成员 {member temp;int i;reinput_name:printf("请输入新成员的姓名:");gets();for(i=0;iif(strcmp(info[i].name,)==0){ printf("该姓名已存在!\n");Sleep(STOP);goto reinput_name;}reinput_tel:printf("请输入新成员的电话号码:"); gets(temp.tel);for(i=0;iif(strcmp(info[i].tel,temp.tel)==0){ printf("该电话号码已存在!\n");Sleep(STOP);goto reinput_tel;}printf("请输入新成员的电子邮箱:"); gets(temp.mail);printf("请输入新成员的QQ号:");gets(temp.qq);printf("请输入新成员的分类:");gets(temp.cla);info[count]=temp;count++;return count; }/*-----*/ int search(char sname[]) //查找功能 { int flag=0,i;for(i=0;iif(strcmp(info[i].name,sname)==0){printf("*****************************\n"); printf("****姓名:%s\n",info[i].name);printf("****电话号码:%s\n",info[i].tel);printf("****电子邮箱:%s\n",info[i].mail);printf("****QQ号:%s\n",info[i].qq);printf("****分类:%s\n",info[i].cla);printf("******************************\n"); flag=1;}return flag; }/*---------*/ int rework(char rname[])//修改功能 {int flag=0,i;for(i=0;iif(strcmp(info[i].name,rname)==0){printf("*********************");printf("请输入新的姓名:");gets(info[i].name);printf("请输入新的电话号码:");gets(info[i].tel);printf("请输入新的电子邮箱:");gets(info[i].mail);printf("请输入新的QQ号:");gets(info[i].qq);printf("请输入新的分类:");gets(info[i].cla);printf("********************");flag=1;}return flag; }/*-----------------------------*/ int erase(char ename[]) //删除功能 {int flag=0,i,j;for(i=0;iif(strcmp(info[i].name,ename)==0){for(j=i;jinfo[j]=info[j+1];count--;flag=1;}return flag; } /*-----------------------------*/ int call(void)//拨号功能 {int i,j,flag=0;char cname[10];printf("**************************\n");for(i=0;iprintf("%s ",info[i].name);}putchar('\n');printf("请输入需要拨号的姓名:");gets(cname);for(i=0;iif(strcmp(info[i].name,cname)==0){printf("正在拨号:");for(j=0;info[i].tel[j]!='\0';j++){printf("%c",info[i].tel[j]);Sleep(300);}putchar('\n');flag=1;}return flag; } /*-----------------------*/ int main(void)//主函数{ char filename[40]; char c,save_j; int t; char s_r_e_name[10];printf("欢迎使用通讯录系统!请输入通讯录文件的有效路径(若文件不存在则自动创建新通讯录)\n"); gets(filename); count=load(filename); system("cls");printf("======================================\ n");printf("==========欢迎使用我的通讯录==========\n");printf("============ 制作:石贵清===========\n");begin:printf("★★★★★★★★★★★★★★★★★★★★★★★★★★\n");printf("※※\n");printf("※通迅录※\n");printf("※※\n");printf("※1. 添加新联系人.5. 分类显示查询.※\n");printf("※※\n");printf("※2. 删除联系人.6.拨出电话.※\n");printf("※※\n");printf("※3. 查询通讯成员.7.保存通讯文件.※\n");printf("※※\n");printf("※4. 修改信息.0. 关闭通迅录.※\n");printf("★★★★★★★★★★★★★★★★★★★★★★★★★★\n"); printf("友情提醒:请在退出本程序之前按7保存通讯文件! \n"); printf("请输入您选择的操作:");c=getchar();getchar(); switch(c) {case '1':if(count==SUM){printf("======= 通讯录空间已满,无法继续录入!===\n"); Sleep(STOP);goto begin; break;}t=add();printf("===== 信息已建立,请尽快保存!=====\n");if(t==SUM){printf("===== 通讯录空间已满,无法继续录入!=====\n"); }Sleep(STOP);goto begin;break; case '2': if(count==0){printf("========================\n");printf("=== 通讯录中无任何成员!====\n");printf("======================\n");Sleep(STOP);goto begin;break; }printf("请输入要删除成员的姓名:");gets(s_r_e_name);t=erase(s_r_e_name);if(!t) {printf("=================\n");printf("==== 查无此人====\n");printf("=================\n"); } else {printf("======================\n");printf("======已成功删除======\n");printf("======================\n"); } Sleep(STOP); goto begin;break; case '3':printf("请输入要查找的成员姓名:");gets(s_r_e_name);t=search(s_r_e_name);if(!t){printf("======================\n");printf("===== 查无此人 =======\n");printf("======================\n");}Sleep(STOP);goto begin;break;case '7':save(filename);printf("==============================\n");printf("======保存成功!=======\n");printf("==============================\n"); Sleep(STOP); goto begin;break;case '4':printf("请输入要修改的成员姓名:");gets(s_r_e_name);t=rework(s_r_e_name);if(!t) {printf("=======查无此人====\n"); }else{printf("=========================\n"); printf("====修改成功====\n");}Sleep(STOP);goto begin;break;case '5':display();Sleep(STOP);goto begin;break;case '6':t=call();if(!t){printf("=============================\n"); printf("====== 输入姓名错误! =======\n");printf("============================\n"); }else{printf("=========================\n");printf("======电话已经拨出=====\n");printf("=======================\n");}Sleep(STOP);goto begin;break;case '0':printf("是否保存数据文件?(Y:是/N:否)");save_j=getchar();if(save_j=='Y'||save_j=='y'){save(filename);printf("====== 保存成功!=======\n");printf("======= 感谢您的使用!再见! ======\n");}else{printf("========================\n");printf("=== 感谢您的使用!再见! ===\n");printf("========================\n");}exit(0); default:printf("=====Sleep(STOP);goto begin; } return 0; }输入指令无效!====");第二篇:C语言程序设计学生通讯录管理系统#include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" #include "stdlib.h" #define null 0 struct record { char name[20]; char phone[20]; char adress[40]; char postcode[10]; char e_mail[30]; }student[500]; struct LinkList { struct record US; struct LinkList *next; }a; struct LinkList *head=null; int num=0; FILE *fp; int menu_select(); int adduser(); int list(); int search(); int display(); int add(); int listbyname(); int dele(); int save(); int exit();void main() {system("cls"); for(;;) { switch(menu_select()) { case 0:adduser();break; case 1:list();break; case 2:search();break; case 3:add();break; case 4:dele();break; case 5:save();break; case 6:exit(0); } } } menu_select() { char s[80]; int a; printf("*_* press any key enter menu! *_* \n"); getch(); system("cls"); printf("\t\t********************MENU*********************\n\n"); printf("\t\t 0. 输入记录\n"); printf("\t\t 1. 显示记录 \n"); printf("\t\t 2. 按姓名查找\n"); printf("\t\t 3. 插入记录 \n"); printf("\t\t 4. 删除记录\n"); printf("\t\t 5. 记录保存文件\n"); printf("\t\t 6. Quit\n"); printf("\t\t***********************************************\n");do{ printf("\n Enter you choice(0~11):"); scanf("%s",s); a=atoi(s); } while (a<0||a>11); return a; }adduser() { printf("\n\t\t**************** 请输入用户信息****************\n"); printf("\n\t\t输入姓名:"); scanf("%s",&student[num].name); printf("\n\t\t输入电话号码:"); scanf("%s",&student[num].phone); printf("\n\t\t输入地址:"); scanf("%s",&student[num].adress); printf("\n\t\t输入邮编:"); scanf("%s",&student[num].postcode); printf("\n\t\t输入e-mail:"); scanf("%s",&student[num].e_mail); num++; printf("\n\t\t是否继续添加?(Y/N):"); if (getch()=='y') adduser(); return(0); } list() { int i; system("cls"); if(num!=0) { printf("\n\t\t*************** 以下为通讯录所有信息************"); for (i=0;iprintf("\n\t\t姓名:%s",student[i].name); printf("\n\t\t电话:%s",student[i].phone); printf("\n\t\t地址:%s",student[i].adress); printf("\n\t\t邮编:%s",student[i].postcode); printf("\n\t\te-mail:%s",student[i].e_mail); printf("\t\t"); if (i+1add() { int i; if ((fp=fopen("student.bin","wb"))==NULL) { printf("\n\t\t文件打开失败"); } for (i=0;isave() { int j; FILE*fp; fp=fopen("student.txt","w"); if (fp==NULL) printf("can't open the file."); if(num!=0) { for(j=0;j fwrite(student,sizeof(student),1,fp); } } printf("保存成功!"); fclose(fp); return(0); }第三篇:C语言作业:学通讯录学生通讯录一、语言和环境1.实现语言:C语言。
基于C语言设计的通讯录
信息 科掌
基 于 c语 言 设 计 的 通 讯 录
沈德强 ( 杭州师范大学钱江学院计算机0 41浙江杭州31 001 2)
[ 摘要] 本试验设计的 是基于c语言 的通讯录, 具有一般通讯 录的添加,查 找,删除, 修改功能,还 能保存文件 和读取文件。 [ 关键 词】C语言通 讯录 中图 分类号 :TP2 文献标识码: ^ 文章编 号:1671- - 7597( 2008) 0520051- - 0 1
删除纪录子程序:完成纪录的删除。构造d el et e函数,以指定的姓名 作为删除结点 的标志。从P指 向的第一个结点开始,检查 该结点中的 na me值是否等于输入的要求删除的那个姓名。如果相等则该点删除,如不 相 等, 就将 P后移 一个 结点 下去 ,再 如此 进行 下去 ,直 到遇 到表 尾为 止。 设两个变量P和q ,先使P和q指向头结点,如果删除的不是第一个结点,则 使 P指向 下一 个结 点 ,在 此之 前应 将P 的值 赋给 q’使 q指 向刚 才检 查过 的那 个结点。如此一次次地使P后移,直到找到所要删除的结点或检查完全部 链 表都 找不 到要 删除 的结 点为 止。 如 果找 到某 一结 点是 要删 除的 结点 ,还 要分两种情况:①要删的是第一个结点,则应将p - >n ext 赋给hea d。这时 hea d指向原来的第二个结点。第一个结点虽然存在,但它已与链表脱离, 因为链表中没有一个结点或头指针指向它。虽然P还指向他,它仍指向第 二个 结点 ,但仍 无济 于事, 现在 链表的 第一 个结 点是原 来的 第二个 结点 , 原 来第 一个 结点 已经 “丢 失” 。即 不 再是 链表 中的 一部 分了 .② 如果 要删 除的 不是第 一个结点 ,则将 P一>ne xt 赋给q 一>nex t 。q- >n ext 原来 指向P指 向 的结点,现在q一>n ext 改为指向p一>nex t 所指向的结点。P所指向的结点不 再是链表的一部分:
基于C语言设计的通讯录
基于C语言设计的通讯录作者:沈德强来源:《硅谷》2008年第10期[摘要]本试验设计的是基于C语言的通讯录,具有一般通讯录的添加,查找,删除,修改功能,还能保存文件和读取文件。
[关键词]C语言通讯录中图分类号:TP2 文献标识码:A 文章编号:1671-7597(2008)0520051-01运用C语言,对一个具有纪录录入和纪录显示及数据处理等功能的通讯录进行程序分析,编译,调试,使其实现添加、查找、删除、修改功能的通讯录,并使其便于操作和使用。
在编程的过程中加深对《C语言》课程所学知识的理解,进一步巩固C语言语法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力。
在程序设计中,代码的编写分为主菜单、添加、显示、查找、修改、删除、保存纪录、读取纪录这几部分程序写的。
主菜单的功能是把后面这些程序串联起来,形成一个直观的界面,一目了然,更清晰。
而后面的其他功能都是实现主菜单所显示的功能。
这样子就避免了错误较多,难于调试等问题。
一、软件构成由TXL.EXE和TXL.DAT两个文件构成。
其中TXL.EXE是数据运行程序,运行后,可以实现对数据文件进行纪录的添加、显示、查找、删除、修改。
后一个是数据文件,用来存储数据纪录,并能在TXL.EXE中读取存储过的数据。
纪录结构及其实现每个纪录共设5个字段:Name(姓名)Addr(地址)Age (年龄)Tel(电话)Email(邮箱)C语言是用字符变量来定义以上字段,定义如下:char name[20]char addr[30]char age[10]char tel[20]char Email[20]中括号内表示的是最大多少个字节,例如char name[20],就表示姓名这一栏最多能容纳20个字符。
二、程序设计内容用C语言设计一个通讯录,使其具有添加、显示、查找、修改、删除、保存纪录、读取纪录、退出功能。
(一)程序设计思路整个程序采用主菜单调用子程序的方法,主程序完成菜单的显示,子程序完成一个独立功能的方法实现,这样子比较明朗化。
C语言课程设计报告 通讯录
《C语言课程设计》目录摘要 (3)一、课程设计目的 (4)二、课程设计内容 (4)三、总体设计 (5)四、详细设计 (6)(1)数据结构设计 (6)(2)模块接口设计 (7)(3)流程图 (7)五、调试与测试 (10)(1)调试过程中的主要问题 (10)(2)测试结果的分析与讨论 (10)六. 实习总结 (12)注: 13摘要日益繁多的人际交往使得我们很难搞清楚与每个人之间的联系方式, 特别是对于做经常出差的人来说更是难, 所以通讯录能够便捷的给我们带来所需要的相关信息。
而随着计算机的普及, 人们的生活摆脱了传统式的记事本、电话簿, 越来越多的靠计算机来帮助人们记住这些事情, 极其简便。
这就需要有一个使用的通讯录管理系统, 用户可以方便的通过自己电脑的通讯录管理系统, 来随时查阅自己所需要的信息, 而不必再大费周折去翻开那繁琐的记事本。
通讯录管理系统是一个专门针对储存用户联系方式以及一些简单个人信息的实用管理系统, 它方便了用户对众多客户、朋友、同事等个人信息的储存和快速查阅的功能, 大大减少了查找过程的时间。
一、课程设计目的1、通过课程设计, 加深对结构化设计思想的理解, 能对系统功能进行分析, 并设计合理的模块化结构。
2、通过课程设计, 学会设计数据结构。
其中包括对结构数组、链表和数据结构等知识的运用。
3、通过课程设计, 提高程序开发功能, 能运用合理的控制流程编写清晰高效的程序。
4、通过课程设计, 训练C程序调试能力, 能将一个中小型各级组织系统联调通过。
通过课程设计, 开发一个中小型系统, 掌握系统研发全过程。
通话课程设计, 培养分析问题、解决实际问题的能力。
二、课程设计内容(1)设计一个实用的通讯录管理系统, 能以简便高效的方式对通讯录进行管理和检索, 具体要示:(2)录入:通讯录信息包括:编号, 姓名, 单位, 电话, 地址, QQ, 邮编。
以结构通讯录信息。
(3)更新: 能插入、删除通讯录信息。
c语言通讯录设计与实现
C 语言通讯录设计与实现本文主要介绍了如何使用 C 语言设计并实现一个通讯录程序,包括通讯录的存储、添加、查找、修改和删除等基本操作,同时考虑了数据的持久化存储问题。
下面是本店铺为大家精心编写的4篇《C 语言通讯录设计与实现》,供大家借鉴与参考,希望对大家有所帮助。
《C 语言通讯录设计与实现》篇1引言通讯录是一个常见的应用程序,用于存储和管理联系人的信息,包括姓名、电话号码、电子邮件地址等。
在现代智能手机中,通讯录已经成为了一个不可或缺的应用程序。
在本文中,我们将使用 C 语言来设计和实现一个简单的通讯录程序。
通讯录的设计通讯录程序需要存储联系人的信息,包括姓名和电话号码等。
我们可以使用结构体来存储联系人的信息,如下所示:```struct contact {char name[20];char phone[20];};```通讯录程序需要具有添加、查找、修改和删除联系人信息的功能。
我们可以使用数组来存储联系人的信息,并使用索引来标识每个联系人。
以下是通讯录程序的基本设计:```#define MAX_CONTACTS 100 // 通讯录最大容量struct contact contacts[MAX_CONTACTS]; // 通讯录数组int num_contacts; // 当前通讯录中的联系人数量// 添加联系人信息void add_contact(char *name, char *phone) {if (num_contacts == MAX_CONTACTS) {printf("通讯录已满,无法添加联系人");return;}contacts[num_contacts].name = name;strcpy(contacts[num_contacts].phone, phone);num_contacts++;}// 查找联系人信息void find_contact(char *name) {int i;for (i = 0; i < num_contacts; i++) {if (strcmp(contacts[i].name, name) == 0) {printf("找到联系人 %s,电话号码为 %s", name, contacts[i].phone);return;}}printf("未找到联系人 %s", name);}// 修改联系人信息void modify_contact(char *name, char *phone) { int i;for (i = 0; i < num_contacts; i++) {if (strcmp(contacts[i].name, name) == 0) {contacts[i].phone = phone;printf("修改联系人 %s的电话号码为 %s", name, phone);return;}}printf("未找到联系人 %s", name);}// 删除联系人信息void delete_contact(char *name) {int i, j;for (i = 0; i < num_contacts; i++) {if (strcmp(contacts[i].name, name) == 0) { for (j = i; j < num_contacts - 1; j++) { contacts[j] = contacts[j + 1];}num_contacts--;printf("删除联系人 %s成功", name);return;}}printf("未找到联系人 %s", name);}```通讯录的实现为了实现通讯录程序,我们需要将设计转化为代码。
原创c语言学生通讯录管理系统设计
原创 C 语言学生通讯录管理系统设计简介本文将介绍一个基于 C 语言的学生通讯录管理系统的设计。
该系统旨在提供一个方便管理学生通讯录信息的工具,包括学生的基本信息、联系方式以及其他相关信息。
功能需求学生通讯录管理系统应具备以下功能:1.添加学生信息:包括学生姓名、年龄、性别、学号、联系方式等。
2.删除学生信息:根据学生姓名或学号进行删除。
3.修改学生信息:根据学生姓名或学号进行修改。
4.查询学生信息:根据学生姓名或学号进行查询。
5.显示所有学生信息:以表格形式展示所有学生的基本信息。
数据结构设计为了实现上述功能需求,我们需要设计适当的数据结构来存储学生信息。
本系统采用单链表作为主要数据结构,每个节点表示一个学生的信息。
每个节点包括以下字段:•char name[50]:学生姓名•int age:学生年龄•char gender[10]:学生性别•int studentID:学生学号•char contact[50]:学生联系方式其中,name、gender和contact字段使用字符数组来存储字符串信息,age和studentID字段使用整数来存储相应的信息。
为了方便管理学生信息,我们还需要定义一个指针变量head来表示链表的头节点。
以下是相关数据结构的定义:typedef struct ListNode {char name[50];int age;char gender[10];int studentID;char contact[50];struct ListNode* next;} ListNode;ListNode* head = NULL;功能实现添加学生信息添加学生信息的功能通过以下步骤实现:1.创建一个新的节点newNode2.提示用户输入学生的基本信息,并将信息保存到newNode的相应字段中3.将newNode插入到链表中的合适位置以下是添加学生信息的代码实现:```c ListNode* newNode = (ListNode*)malloc(sizeof(ListNode)); printf(。
基于C语言实现个人通讯录管理系统
基于C语⾔实现个⼈通讯录管理系统之前利⽤C语⾔完成了⼀个关于个⼈通讯录管理系统的课题,主要是关于联系⼈的添加、查找、删除、修改、输出以及⽂件的写⼊与读出,还有⼀个甜点功能—模拟通话,它的实现原理也很容易理解,⽂章末尾会介绍到。
主框架:1、函数声明关于这⾥的函数声明,主要是为了可以清楚的了解整个系统的功能,这⾥不做过多介绍。
还有结构体链表的创建,贯穿了各个功能代码部分,必不可少。
2、联系⼈的添加这部分主要涉及联系⼈的姓名、地址、电话、QQ号和邮箱(当然需要其他功能可⾃⾏添加),考虑到数组操作不便前提下,使⽤链表的尾插法,通过不断开创新的结点,然后不断将新的结点的地址指向尾结点,使尾结点不断后移,⽽新创的结点时按照添加的先后顺序进⾏连接(参考下图可快速理解,此图⽚来源于⽹络),当然其中某些项的条件限制也是必不可少的。
⽐如:电话、QQ号、邮箱int Addpeo() //添加联系⼈{int t,n,a;char flag='y'; //仅作为第⼀次执⾏条件ptcs p=head,q;while(flag!='n'&&flag!='N') //判断是否继续添加{q=(ptcs)malloc(sizeof(pcs)); //申请内存p->next=q; //赋予下⼀个节点p=q;q->next=NULL; //尾结点地址赋空值,尾插法printf("\n\t请输⼊:\n");printf("\t\t姓名:");scanf("\t\t%s",q->);printf("\t\t地址:");scanf("\t\t%s",q->chat.add);printf("\t\t⼿机号:");scanf("\t\t%s",q->chat.tel);do{n=0; //仅做记录if(strlen(q->chat.tel)!=11) //计算⼿机号的长度,判断是否输⼊规范 {n=1;printf("\t\t您输⼊的⼿机号格式不存在,请重新输⼊:");scanf("\t\t%s",q->chat.tel);}else{for(t=0;t<11;t++){if(q->chat.tel[t]<'0'||q->chat.tel[t]>'9'){n=1;printf("\t\t您输⼊的⼿机号格式不合理,请重新输⼊:");scanf("\t\t%s",q->chat.tel);break;}}}}while(n);//输⼊QQ号printf("\t\tQQ号:");scanf("\t\t%s",q->chat.tecent);do{n=0;if(strlen(q->chat.tecent)>10) //以10位QQ号为准,判断是否符合规范 {n=1;printf("\t\t您输⼊的QQ号格式不存在,请重新输⼊:");scanf("\t\t%s",q->chat.tecent);}else{for(t=0;t<10;t++){if(q->chat.tecent[t]<'0'||q->chat.tecent[t]>'9'){n=1;printf("\t\t您输⼊的QQ号格式不合理,请重新输⼊:");scanf("\t\t%s",q->chat.tecent);break;}}}}while(n);//输⼊邮箱printf("\t\tEmail:");scanf("\t\t%s",q->chat.email);do{//判断邮箱 @符号输⼊规范(这⾥不限定邮箱号码位数)a=0;for(t=0;q->chat.email[t]!='\0';t++){if(q->chat.email[t]=='@')a++; //@数为1}if(a!=1){printf("\t\t输⼊的邮箱格式不合理,请重新输⼊:");scanf("\t\t%s",q->chat.email);}}while(a!=1); //是否输⼊@ ,为1则终⽌循环printf("\n\t是否继续添加?(Y/N)");scanf("\t%c",&flag);}return 0;}3、联系⼈的查询这步使⽤的是遍历查询,共设置了三种⽅式,在定义链表指针的前提下,通过遍历链表进⾏信息的对⽐,从⽽判断联系⼈是否存在,如果存在就直接显⽰给⽤户,不存在就直接退回功能选项。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Keyห้องสมุดไป่ตู้ W or ds : El e c t r o n i c a d d r e s s b o o k Da t a S t r u c ur t e U s e r Ex pe ie r nc e
分别建立具有添加 、 删 除、 修改、 查询等功能的子函数 , 完成相 应功 能, 对程 序实现模块化 , 力求做到程序的“ 高内聚, 低耦合 ” , 并 在软件结构上 “ 高扇 出, 低扇入” 。 删除时用结构体指针指向链 表的 第一个结点 , 检查 该节 点的值 是否 等于输入 的要删 除的学号 , 若相 等就删除 , 否则将指针后移一个节点 , 直至表尾 。 插入 时也要先找到 相应结点 , 再添加 。 查询 功能要设 置学 号、 姓名 、 性别等多种方 式。 为实现存储功能 , 需用到文件 的相关 函数 , 打开 文件 , 将添加 、 修改或删 除后 的信息保存 。 为以表格 的形式输出文件 , 宏定义格式化输 出语句制作特定输 出格式 , 便于使用者浏 览信息 。 注: 通讯录程序结构 如图2 . 1 : 1需 求 分析 为实现加密功能 , 在储存通讯录之后 , 可运行加密器并定义密 作者对 吉林省 四平市的学生、 教师、 工人、 个体业主进行抽样调 码对数据进行 加密 。 加密器使用MD 5 加密算法对数据进行 加密 。 查, 样本总量 1 0 0 人, 得 出结论 : 用 户认 为现有 电子通讯录主要有操 注: 加密部分程序结构如 图2 . 2 : 作 不便( 4 2 %) 、 冗余功 能过 多( 3 2 %) 、 数据 不安全( 1 8 % ) 的弊端 。
l数 日啦 术
f 五
应 用 研 究
基于 C语言的人性化实用通讯录 术
谭峻强 谭振江
( 吉林师范大学计算机 学院 吉林四平 1 3 6 0 0 0 )
摘要: 本 文在 易用性及安全 性方 面研 究 了现代 电子通讯 录的解决 方案, 设计 了一种 基于c 语言的 } 生 化 实用通讯 录 系统 。 该 系统具有 简单易用, 方 便 快捷 的特 色、 具 有操 作人 性化 I 用户体验 良好 的优 点, 为将 来的研 究奠 定理论 基础 与数 据基 础 。
关键词 : 电子 通讯 录 数 据结构 用户体 验 中 图分类 号: T P 3 1 1 . 5 2 文献标识 码: A
文章 编号 : 1 0 0 7 — 9 4 1 6 ( 2 0 1 4 ) 1 1 - 0 0 6 1 — 0 2
Abs t r a ct : I n t hi s p a pe r , i n t he e a s e o fu s e a n d s a f e t y a s pe c t s, we s t ud i e d t he s o l u t i on f u r t he mod e m e l e c t r o ni c ma i l l i s t . The d e s i g n o fa r e c o r d s y s t e m o f
h uma n n a t ur e a n d p r a c t i c a l c o mmu n i c a t i on b a s e d o n C l a n g ua g e . Th e s ys t e m i s s i mp l e a nd e a s y t o u s e. Wi t h t he o p e r a t i o n o fh u ma n na t u r e a n d g o od us e r e x pe ie r n c e, i t l a y t h e t h e o r e t i c a l f o u nd a t i o n a nd b a s i c at d a ur f f u ur t e r e s e a r c h.
2系 统 设计
3模块 设 计
3 . 1菜单模 块 函数 原形 : v o i d Me n u ( ) , 功能 : 进行程序 主要功 能展示 、 提供 ( 1 ) 需要 建立通讯录信 息结构体 , 信息至少包 括姓 名 、 性别 、 年 操作提示 并根 据用户操作使程序 进入 相应模块 。 调用 函数 : a d d ( ) 、 龄、 电话号 、 Q Q、 邮箱 、 工作单位等 内容。 ( 2 ) 能够提供添加 、 删除和修 S e a r c h ( ) 、 D e l e t e D a t e 0 、 C h a n g e ( ) 、 Wr i t e F i l e O 、 D o n e ( ) 、 M e n u ( ) 。 说明: 改通讯录信 息等 功能。 ( 3 ) 能够提供按照不 同方式查询的功能 , 如按 每次执行完功能 函数后都会 返回菜单 函数 , 使其返 回主菜单 , 进行 姓名或年龄 、 电话查询 。 ( 4 ) 能够按更便于浏览 的表格方式输 出通讯 后续操作 。 录信息。 ( 5 ) 能够调用其他程序 的A P I 以实现功能的扩展。 ( 6 ) 能够 自动 3 . 2添 加 模 块
随着信息时代的到来 , 越来越多 的传统生活工具被搬到了计算 机 中, 通讯 录就是一个典型 的例子 。 传统通讯录 以纸张作为信息存 储 方式 , 有不易保存 , 容易丢失等缺点 ; 而现今 的电子通讯录虽弥补 了以上缺点但是易用性较差, 进而导致“ 电子通讯录 ” 这一科技产物 并没有 真正的造福于人类 。 于此同时 , 通讯录作为人脉 的记录表很 可能涉及到商业机密 , 而现今的信息安 全并没有 得到很好的保障 , 故而信息的安全性也十分重要, 软件使用者 的根本诉求 尚得 不到应 有 的满足。 本论文所 研究的该通讯 录系统就应运而生 , 为使用者提 供一个 多功能的 、 易用的并且安全的通讯信息存储解决办法 , 致力 于 打造一款人性化的通讯录 、 一款安全的通讯录 。