c语言通讯录程序设计

合集下载

【文档】C语言程序设计----通讯录

【文档】C语言程序设计----通讯录

一、设计任务书1)复习、巩固C语言的基础知识,进一步加深对C语言的理解和掌握;2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。

提高学生适应实际,实践编程的能力;3)培养学生在项目开发中团队合作精神、创新意识及能力。

4)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;二、本组课题设计一个通讯录管理系统三、程序功能简介该程序具有添加、查找,修改、删除通讯录中各个成员所有信息的功能。

四、主体内容1、设计分析1.1问题提出本人计划编写一个通讯录管理系统,主要用来记录和管理所有联系人的详细联系方式1.2本系统涉及的知识点本系统涉及到所学过的知识点有:编译预处理,函数,循环结构,循环结构,数组,结构体,指针,文件等1.3功能要求1、制作一个通讯录程序,要求可以记录联系人的详细联系方式,包括:姓名,联系电话,居住地所在省份,城市,街道,以及当地邮编2、能根据需要随时在通讯录中添加联系人3、能根据联系人的名字查找他的详细联系方式4、能根据需要修改某联系人的联系方式5、能删除某特定联系人的所有联系方式2、程序结构流程图这里只附部分模块流程图:(1)系统的界面如图1所示(下图)图1 系统的菜单选项2.2、删除模块流程图:如图(2)图(2)删除模块流程图3.各模块的功能及程序说明3.1各模块的功能:* Main模块:根据选单内容实现调用函数* Delete模块:删除通讯录中某人的信息,其程序如下* list模块:显示通讯录中的所有记录3.2程序说明:(1)Main函数/******主函数开始*******/main(){int i;person p[M];int length; /*保存记录长度*/clrscr();/*清屏*/for(;;)/*无限循环*/{switch(menu())()) /*调用主菜单函数,返回值整数作开关语句的条件*/{case 0:length=create(p);break;case 1:list(p,length);break; /*显示全部记录*/case 2:search(p,length);break; /*查找记录*/case 3:length=delete(p,length);break; /*删除记录*/case 4:length=add(p,length); break; /*插入记录*/case 5:exit(0); /*如返回值为5则程序结束*/}}}(2) Delete函数/*删除函数,参数为记录数组和记录条数*/int delete(person t[],int n){char s[20]; /*要删除记录的姓名*/int ch=0;int i,j;printf("please deleted name\n"); /*提示信息*/scanf("%s",s); /*输入姓名*/i=find(t,n,s); /*调用find函数*/if(i>n-1) /*如果i>n-1超过了数组的长度*/printf("no found not deleted\n"); /*显示没找到要删除的记录*/ else{print(t[i]); /*调用输出函数显示该条记录信息*/printf("Are you sure delete it(1/0)\n"); /*确认是否要删除*/scanf("%d",&ch); /*输入一个整数0或1*/if(ch==1) /*如果确认删除整数为1*/{for(j=i+1;j<n;j++) /*删除该记录,实际后续记录前移*/{strcpy(t[j-1].name,t[j].name); /*将后一条记录的姓名拷贝到前一条*/strcpy(t[j-1].units,t[j].units); /*将后一条记录的单位拷贝到前一条*/strcpy(t[j-1].tele,t[j].tele); /*将后一条记录的电话拷贝到前一条*/strcpy(t[j-1].street,t[j].street); /*将后一条记录的街道拷贝到前一条*/strcpy(t[j-1].city,t[j].city); /*将后一条记录的城市拷贝到前一条*/strcpy(t[j-1].provience,t[j].provience); /*将后一条记录的省份拷贝到前一条*/strcpy(t[j-1].num,t[j].num); /*将后一条记录的邮编拷贝到前一条*/}n--; /*记录数减1*/}}return n; /*返回记录数*/}(3)List函数/*显示记录,参数为记录数组和记录条数*/void list(person t[],int n){int i;clrscr();printf("\n\n*******************ADDRESS******************\n");printf("name unit telephone street city provience num\n");printf("------------------------------------------------\n");for(i=0;i<n;i++)printf("%-20s%-30s%-10s%-20s%-20s%-20s%-20s\n",t[i].name,t[i].units,t[i].tele,t[i].street,t[i].city,t[i].provience,t[i].num);if((i+1)%10==0) /*判断输出是否达到10条记录*/{printf("Press any key continue...\n"); /*提示信息*/getch();/*压任意键继续*/}printf("************************end*******************\n");}4、试验结果『含输入数据和输出结果』通过很多次的实验,本程序(源程序在程序清单中)终于可以正常运行,任何一项功能都能顺利实现5、设计体会以前不曾做过课程设计,因此在做课程设计时遇到了很大的困难,首先是在编写程序时,用的时间很长,并且经过多次运行都不能成功。

c语言课程设计通讯录

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语言程序设计代码#include<stdio.h>。

#include<string.h>。

//通讯录结构体。

typedef struct addressbook。

char name[20];。

long tel;。

char addr[20];。

}Address;。

//把Address结构体强转成Address指针。

typedef Address *Addressbook;。

//查找函数。

Addressbook find (Addressbook book,int count)。

char findName[20];。

int flag=0;。

Addressbook p;。

printf("请输入查找的姓名:");。

scanf("%s",findName);。

for(p=book;p<book+count;p++)。

if(strcmp(findName,p->name)==0)。

flag=1;。

}。

}。

if(flag==0)。

printf("没有找到%s\n",findName);。

return book;。

}。

else。

return p;。

}。

}。

//添加函数。

void add (Addressbook book,int *count)。

printf("请输入需要增加的通讯录内容:\n");。

printf("姓名:");。

scanf("%s",(book+*count)->name);。

scanf("%ld",&(book+*count)->tel);。

printf("地址:");。

scanf("%s",(book+*count)->addr);。

printf("添加成功\n");。

通讯录C语言程序设计

通讯录C语言程序设计

通讯录C语言程序设计通讯录C语言程序设计是一个常见的编程练习项目,它可以帮助初学者熟悉C语言的基本语法和数据结构。

下面是一个简单的通讯录程序设计示例,包括了程序的基本框架、功能实现和代码实现。

程序设计目标设计一个通讯录程序,能够实现以下功能:1. 添加联系人2. 删除联系人3. 修改联系人信息4. 显示所有联系人5. 按姓名查找联系人6. 保存联系人信息到文件7. 从文件加载联系人信息程序设计思路1. 数据结构设计:使用结构体`struct Contact`来存储联系人信息,包括姓名、电话号码、电子邮件等。

2. 功能模块划分:将程序分为多个功能模块,如添加、删除、修改、显示、查找、保存和加载。

3. 用户界面设计:设计一个简单的文本界面,使用循环让用户选择相应的操作。

4. 文件操作:使用C语言的文件操作函数来实现联系人信息的持久化存储。

数据结构定义```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_CONTACTS 100#define MAX_NAME 50#define MAX_PHONE 20#define MAX_EMAIL 50struct Contact {char name[MAX_NAME];char phone[MAX_PHONE];char email[MAX_EMAIL];};struct Contact contacts[MAX_CONTACTS];int contactCount = 0;```功能实现1. 添加联系人```cvoid addContact() {if (contactCount >= MAX_CONTACTS) {printf("Contact list is full.\n"); return;}printf("Enter name: ");scanf("%49s", contacts[contactCount].name);printf("Enter phone: ");scanf("%19s", contacts[contactCount].phone);printf("Enter email: ");scanf("%49s", contacts[contactCount].email);contactCount++;}```2. 删除联系人```cvoid deleteContact() {int i, index;printf("Enter name of the contact to delete: ");scanf("%49s", contacts[index].name);for (i = 0; i < contactCount; i++) {if (strcmp(contacts[i].name, contacts[index].name) == 0) {index = i;break;}}if (i == contactCount) {printf("Contact not found.\n");} else {for (; i < contactCount - 1; i++) {contacts[i] = contacts[i + 1];}contactCount--;printf("Contact deleted.\n");}}```3. 修改联系人信息```cvoid modifyContact() {// 类似于删除联系人,找到联系人后修改信息}```4. 显示所有联系人```cvoid displayContacts() {for (int i = 0; i < contactCount; i++) {printf("%s, %s, %s\n", contacts[i].name, contacts[i].phone, contacts[i].email);}}```5. 按姓名查找联系人```cvoid findContact() {char name[MAX_NAME];printf("Enter name to find: ");scanf("%49s", name);for (int i = 0; i < contactCount; i++) {if (strcmp(contacts[i].name, name) == 0) { printf("%s, %s, %s\n", contacts[i].name, contacts[i].phone, contacts[i].email);return;}}printf("Contact not found.\n");}```6. 保存联系人信息到文件```cvoid saveContactsToFile() {FILE *file = fopen("contacts.txt", "w");if (file == NULL) {printf("Error opening file.\n");return;}for (int i = 0; i < contactCount; i++) {fprintf(file, "%s,%s,%s\n", contacts[i].name, contacts[i].phone, contacts[i].email);}fclose(file);printf("Contacts saved to file.\n");}```7. 从文件加载联系人信息```cvoid loadContactsFromFile() {FILE *file = fopen("contacts.txt", "r");if (file == NULL) {printf("。

c语言课程设计通讯录

c语言课程设计通讯录
4.利用文件操作将通讯录数据保存到文件中,实现数据的持久化存储;
5.设计友好的用户界面,使操作更加便捷。
2、教学内容
本节课在上一阶段的基础上,进一步深化以下教学内容:
1.对结构体数组进行排序,实现通讯录联系人的姓名排序功能;
2.引入链表结构,将通讯录升级为动态存储,提高内存利用率;
3.实现链表在增加、删除节点时的动态调整,确保通讯录数据的准确性;
3.结合教材中的文件操作知识,编写函数实现通讯录数据的导入和导出功能,以便于数据的备份和迁移;
4.讨论如何优化程序性能,例如通过索引、二分查找等方法提高通讯录的查询效率;
5.强调代码规范和注释的重要性,指导学生编写整洁、易于理解的C语言代码,为后续的学习和协作打下基础。
4、教学内容
在第四部分的教学内容中,我们将重点关注以下方面:
1.结合实际应用场景,引入内存分配与释放的概念,讲解动态内存管理的重要性,并在通讯录项目中正确使用malloc和free函数;
2.通过案例展示内存泄漏和野指针的问题,教育学生注意避免这些常见的编程错误;
3.引导学生设计测试用例,对通讯录程序进行单元测试和集成测试,确保程序稳定性和正确性;
4.讨论程序异常处理的重要性,教授学生如何使用try-catch机制来处理程序中可能出现的错误;
c语言课程设计通讯录
一、教学内容
本节课为九年级下学期《C语言》课程设计示范课,基于教材第七章“数组与字符串”和第十章“文件操作”的内容,开展“C语言课程设计通讯录”项目实践。教学内容主要包括:
1.使用一维数组存储通讯录中的联系人姓名;
2.使用结构体数组存储联系人的详细信息(如姓名、电话、邮箱等);
3.实现通讯录的增加、删除、查找、修改和显示等功能;

c语言课程设计通讯录

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语言课程设计通讯录

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语言程序设计——通讯录

C语言程序设计——通讯录

C语言程序设计通讯录系别:电气与信息工程系专业班级:10机电一班姓名:贾云鹏学号:04041001018设计内容:设计与开发一个通讯录管理系统,对通讯录中的姓名、单位、电话、QQ 、mail等基本信息进行管理、主要功能如下:1)输入记录;2)显示记录;3按姓名查找显示记录;4)删除记录;5)插入记录;6记录保存为文件;7从文件中读记录;8按姓名排序;9显示单条记录;本系统显示这样的菜单请选择系统功能项a 输入记录;b 显示全部纪录;c 查找记录;d 删除记录;e 插入记录;f 保存文件;g 读文件:(1)按序号显示记录;(2)按姓名排序;(3)快速查找记录;算法提示:1.数据结构;结构体类型数组。

测试数据:源程序/******头文件(.h)***********/#include "stdio.h" /*I/O函数*/#include "stdlib.h" /*标准库函数*/#include "string.h"/*字符串函数*/#include "ctype.h" /*字符操作函数*/#define M 50 /*定义常数表示记录数*/typedef struct /*定义数据结构*/{char name[20]; /*姓名*/char units[30]; /*单位*/char tele[10]; }ADDRESS;/*电话*//******以下是函数原型*******/int enter(ADDRESS t[]); /*输入记录*/void list(ADDRESS t[],int n); /*显示记录*/void search(ADDRESS t[],int n); /*按姓名查找显示记录*/int delete(ADDRESS t[],int n); /*删除记录*/int add(ADDRESS t[],int n); /*插入记录*/void save(ADDRESS t[],int n); /*记录保存为文件*/int load(ADDRESS t[]); /*从文件中读记录*/void display(ADDRESS t[]); /*按序号查找显示记录*/void sort(ADDRESS t[],int n); /*按姓名排序*/void qseek(ADDRESS t[],int n); /*快速查找记录*/void copy(); /*文件复制*/void print(ADDRESS temp); /*显示单条记录*/int find(ADDRESS t[],int n,char *s) ; /*查找函数*/int menu_select(); /*主菜单函数*//******主函数开始*******/main(){int i;ADDRESS adr[M]; /*定义结构体数组*/int length; /*保存记录长度*/clrscr(); /*清屏*/for(;;)/*无限循环*/{switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件 {case 0:length=enter(adr);break;/*输入记录*/case 1:list(adr,length);break; /*显示全部记录*/case 2:search(adr,length);break; /*查找记录*/case 3:length=delete(adr,length);break; /*删除记录*/case 4:length=add(adr,length); break; /*插入记录*/case 5:save(adr,length);break; /*保存文件*/case 6:length=load(adr); break; /*读文件*/case 7:display(adr);break; /*按序号显示记录*/case 8:sort(adr,length);break; /*按姓名排序*/case 9:qseek(adr,length);break; /*快速查找记录*/case 10:copy();break; /*复制文件*/case 11:exit(0);}}} /*如返回值为11则程序结束*//*菜单函数,函数返回值为整数,代表所选的菜单项*/menu_select(){ char s[80];int c;gotoxy(1,25);/*将光标定为在第25行,第1列*/printf("press any key enter menu......\n");/*提示压任意键继续*/ getch(); /*读入任意字符*/clrscr(); /*清屏*/gotoxy(1,1);printf("********************MENU*********************\n\n");printf(" 0. Enter record\n");printf(" 1. List the file\n");printf(" 2. Search record on name\n");printf(" 3. Delete a record\n");printf(" 4. add record \n");printf(" 5. Save the file\n");printf(" 6. Load the file\n");printf(" 7. display record on order\n");printf(" 8. sort to make new file\n");printf(" 9. Quick seek record\n");printf(" 10. copy the file to new file\n");printf(" 11. Quit\n");printf("***********************************************\n");do{printf("\nEnter you choice(0~11):"); /*提示输入选项*/scanf("%s",s); /*输入选择项*/c=atoi(s); } /*将输入的字符串转化为整型数*/while(c<0||c>11); /*选择项不在0~11之间重输*/return c; }/*返回选择项,主程序根据该数调用相应的函数*//***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/ int enter(ADDRESS t[]){ int i,n;char *s;clrscr(); /*清屏*/printf("\nplease input num \n"); /*提示信息*/scanf("%d",&n); /*输入记录数*/printf("please input record \n"); /*提示输入记录*/printf("name unit telephone\n"); printf("------------------------------------------------\n");for(i=0;i<n;i++){scanf("%s%s%s",t[i].name,t[i].units,t[i].tele); /*输入记录*/ printf("----------------------------------------------\n");}return n; }/*返回记录条数*//*显示记录,参数为记录数组和记录条数*/void list(ADDRESS t[],int n){int i;clrscr();printf("\n\n*******************ADDRESS******************\n");printf("name unit telephone\n"); printf("------------------------------------------------\n");for(i=0;i<n;i++)printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);if((i+1)%10==0) /*判断输出是否达到10条记录*/{printf("Press any key continue...\n"); /*提示信息*/getch();} /*压任意键继续*/printf("************************end*******************\n");}/*查找函数,参数为记录数组和记录条数以及姓名s */int find(ADDRESS t[],int n,char *s){int i;for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(s,t[i].name)==0) /*记录中的姓名和待比较的姓名是否相等*/ return i; } /*相等,则返回该记录的下标号,程序提前结结束*/return i; /*返回i值*/}/*删除函数,参数为记录数组和记录条数*/int delete(ADDRESS t[],int n){char s[20]; /*要删除记录的姓名*/int ch=0;int i,j;printf("please deleted name\n"); /*提示信息*/scanf("%s",s);/*输入姓名*/i=find(t,n,s); /*调用find函数*/if(i>n-1) /*如果i>n-1超过了数组的长度*/printf("no found not deleted\n"); /*显示没找到要删除的记录*/else{print(t[i]); /*调用输出函数显示该条记录信息*/printf("Are you sure delete it(1/0)\n"); /*确认是否要删除*/scanf("%d",&ch); /*输入一个整数0或1*/if(ch==1) /*如果确认删除整数为1*/{for(j=i+1;j<n;j++) /*删除该记录,实际后续记录前移*/ {strcpy(t[j-1].name,t[j].name); /*将后一条记录的姓名拷贝到前一条*/ strcpy(t[j-1].units,t[j].units); /*将后一条记录的单位拷贝到前一条strcpy(t[j-1].tele,t[j].tele); } /*将后一条记录的电话拷贝到前一条 n--;}} /*记录数减1*/return n; }/*返回记录数*//*插入记录函数,参数为结构体数组和记录数*/int add(ADDRESS t[],int n)/*插入函数,参数为结构体数组和记录数*/ {ADDRESS temp; /*新插入记录信息*/int i,j;char s[20]; /*确定插入在哪个记录之前*/printf("please input record\n");printf("************************************************\n");printf("name unit telephone\n");printf("--------------------------------------------------\n");scanf("%s%s%s",,temp.units,temp.tele); /*输入插入信息*/printf("---------------------------------------------\n");printf("please input locate name \n");scanf("%s",s); /*输入插入位置的姓名*/i=find(t,n,s); /*调用find,确定插入位置*/for(j=n-1;j>=i;j--) /*从最后一个结点开始向后移动一条*/{ strcpy(t[j+1].name,t[j].name); /*当前记录的姓名拷贝到后一条*/strcpy(t[j+1].units,t[j].units); /*当前记录的单位拷贝到后一条*/ strcpy(t[j+1].tele,t[j].tele); } /*当前记录的电话拷贝到后一条*/strcpy(t[i].name,); /*将新插入记录的姓名拷贝到第i个位置strcpy(t[i].units,temp.units); /*将新插入记录的单位拷贝到第i个位置 strcpy(t[i].tele,temp.tele); /*将新插入记录的电话拷贝到第i个位置*/ n++; /*记录数加1*/return n; } /*返回记录数*//*保存函数,参数为结构体数组和记录数*/void save(ADDRESS t[],int n){int i;FILE *fp; /*指向文件的指针*/if((fp=fopen("record.txt","wb"))==NULL)/*打开文件,并判断打开是否正常 {printf("can not open file\n");/*没打开*/exit(1); } /*退出*/printf("\nSaving file\n"); /*输出提示信息*/fprintf(fp,"%d",n); /*将记录数写入文件*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/for(i=0;i<n;i++){fprintf(fp,"%-20s%-30s%-10s",t[i].name,t[i].units,t[i].tele);/*格式写入记录*/fprintf(fp,"\r\n");}/*将换行符号写入文件*/fclose(fp);/*关闭文件*/printf("****save success***\n");}/*显示保存成功*//*读入函数,参数为结构体数组*/int load(ADDRESS t[]){int i,n;FILE *fp; /*指向文件的指针*/if((fp=fopen("record.txt","rb"))==NULL)/*打开文件*/{printf("can not open file\n"); /*不能打开*/exit(1);} /*退出*/fscanf(fp,"%d",&n); /*读入记录数*/for(i=0;i<n;i++)fscanf(fp,"%20s%30s%10s",t[i].name,t[i].units,t[i].tele); /*按格式读入记录*/fclose(fp); /*关闭文件*/printf("You have success read data from file!!!\n"); /*显示保存成功 return n; }/*返回记录数*//*按序号显示记录函数*/void display(ADDRESS t[]){int id,n;FILE *fp; /*指向文件的指针*/if((fp=fopen("record.txt","rb"))==NULL) /*打开文件*/{printf("can not open file\n"); /*不能打开文件*/exit(1);} /*退出*printf("Enter order number...\n"); /*显示信息*/scanf("%d",&id); /*输入序号*/fscanf(fp,"%d",&n); /*从文件读入记录数*/if(id>=0&&id<n) /*判断序号是否在记录范围内*/{fseek(fp,(id-1)*sizeof(ADDRESS),1); /*移动文件指针到该记录位置*/ print(t[id]); /*调用输出函数显示该记录*/printf("\r\n");}elseprintf("no %d number record!!!\n ",id); /*如果序号不合理显示信息*/ fclose(fp); } /*关闭文件*//*排序函数,参数为结构体数组和记录数*/void sort(ADDRESS t[],int n){int i,j,flag;ADDRESS temp; /*临时变量做交换数据用*/for(i=0;i<n;i++){flag=0; /*设标志判断是否发生过交换*/for(j=0;j<n-1;j++)if((strcmp(t[j].name,t[j+1].name))>0) /*比较大小*/{flag=1;strcpy(,t[j].name); /*交换记录*/strcpy(temp.units,t[j].units);strcpy(temp.tele,t[j].tele);strcpy(t[j].name,t[j+1].name);strcpy(t[j].units,t[j+1].units);strcpy(t[j].tele,t[j+1].tele);strcpy(t[j+1].name,);strcpy(t[j+1].units,temp.units);strcpy(t[j+1].tele,temp.tele);}if(flag==0)break;} /*如果标志为0,说明没有发生过交换循环结束*/ printf("sort sucess!!!\n"); }/*显示排序成功*//*快速查找,参数为结构体数组和记录数*/void qseek(ADDRESS t[],int n){char s[20];int l,r,m;printf("\nPlease sort before qseek!\n"); /*提示确认在查找之前,记录是否已排序*/printf("please enter name for qseek\n"); /*提示输入*/scanf("%s",s); /*输入待查找的姓名*/l=0;r=n-1; /*设置左边界与右边界的初值*/while(l<=r) /*当左边界<=右边界时*/{m=(l+r)/2; /*计算中间位置*/if(strcmp(t[m].name,s)==0) /*与中间结点姓名字段做比较判是否相等*/ {print(t[m]); /*如果相等,则调用print函数显示记录信息*/return ; } /*返回*/if(strcmp(t[m].name,s)<0) /*如果中间结点小*/l=m+1; /*修改左边界*/elser=m-1;} /*否则,中间结点大,修改右边界*/if(l>r) /*如果左边界大于右边界时*/printf("not found\n");}/*显示没找到*/。

通讯录程序设计c

通讯录程序设计c

通讯录程序设计c通讯录程序设计是计算机编程中的一个常见项目,旨在通过编写代码来实现对联系人信息的存储、查询、修改和删除等功能。

以下是关于通讯录程序设计的详细内容。

一、设计目标通讯录程序的主要目标是提供一个用户界面,允许用户添加、查找、更新和删除联系人信息。

联系人信息通常包括姓名、电话号码、电子邮件地址、住址等。

二、需求分析1. 用户界面:简洁直观,易于操作。

2. 数据存储:能够持久化存储联系人信息。

3. 功能需求:- 添加联系人:允许用户输入并保存新的联系人信息。

- 查询联系人:根据姓名或其他信息搜索联系人。

- 修改联系人:允许用户更新已存在的联系人信息。

- 删除联系人:允许用户删除不再需要的联系人信息。

三、技术选型1. 编程语言:根据项目需求和团队熟悉度选择合适的编程语言,如C、Java、Python等。

2. 数据存储:可以使用文件系统、数据库或内存中的数据结构。

3. 开发环境:选择适合的IDE(集成开发环境)进行编码,如Visual Studio、Eclipse等。

四、系统设计1. 数据结构:设计合适的数据结构来存储联系人信息,如使用结构体或类。

2. 功能模块:- 输入模块:负责接收用户输入的联系人信息。

- 存储模块:负责将联系人信息存储到指定的存储介质。

- 查询模块:提供搜索功能,根据用户输入的关键字查找联系人。

- 修改模块:允许用户修改已存储的联系人信息。

- 删除模块:允许用户删除联系人信息。

五、界面设计1. 主界面:显示所有功能选项,如添加、查询、修改、删除。

2. 输入界面:当用户选择添加或修改联系人时,提供输入界面。

3. 查询结果界面:显示查询结果,可能包括联系人列表或详细信息。

六、实现步骤1. 定义数据结构:根据需求定义联系人的数据结构。

2. 编写功能模块:逐一实现添加、查询、修改和删除功能。

3. 集成测试:将各个模块集成到一起,进行系统测试。

4. 用户测试:让实际用户测试程序,收集反馈并进行优化。

c语言通讯录程序(共5篇)

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语言课程设计通讯录

原创C语言课程设计通讯录1. 引言通讯录是一种用于存储联系人信息的工具,对于个人和组织来说,它是必不可少的。

在本篇文章中,我将介绍一个基于C语言的通讯录设计方案。

通过这个课程设计项目,我们可以学习到如何使用C语言实现基本的数据处理和文件操作。

2. 功能需求分析在设计通讯录之前,我们需要明确所要实现的功能。

根据常见的通讯录需求,以下是我们的功能设计:•添加联系人信息:通过输入姓名、手机号码、邮箱等信息,将联系人添加到通讯录中。

•删除联系人信息:根据姓名或手机号码查找并删除指定联系人。

•修改联系人信息:根据姓名或手机号码查找并修改指定联系人的信息。

•查找联系人信息:根据姓名或手机号码查找并显示指定联系人的信息。

•显示全部联系人信息:将通讯录中的所有联系人信息按照一定的格式显示出来。

•保存通讯录:将通讯录中的联系人信息保存到文件中。

3. 数据结构设计在实现通讯录的功能之前,我们需要设计合适的数据结构来存储联系人信息。

考虑到联系人的信息较为复杂,并且需要支持动态增删改查的操作,我们选择使用链表来存储联系人信息。

每个节点包含姓名、手机号码、邮箱等信息,以及指向下一个节点的指针。

struct Contact {char name[50];char phone[20];char email[50];struct Contact *next;};4. 程序流程设计4.1 主菜单设计通讯录程序的主要界面是一个菜单,让用户选择不同的功能。

使用一个无限循环来保持程序一直运行,用户可以输入不同的指令来选择要执行的功能。

```c while (1) { // 显示菜单 printf(。

简单的c语言程序设计班级通讯录管理系统

简单的c语言程序设计班级通讯录管理系统

简单的c语言程序设计班级通讯录管理系统一、引言班级通讯录管理系统是一款基于C语言的简单程序,旨在帮助班级管理者更好地管理班级通讯录信息。

本文将从需求分析、系统设计、代码实现等方面详细介绍该系统。

二、需求分析1. 功能需求(1)添加联系人:可以添加新的联系人信息,包括姓名、性别、电话号码等。

(2)删除联系人:可以删除已有的联系人信息。

(3)修改联系人:可以修改已有的联系人信息,包括姓名、性别、电话号码等。

(4)查询联系人:可以根据姓名或电话号码查询已有的联系人信息。

(5)显示所有联系人:可以查看当前所有已有的联系人信息。

2. 性能需求(1)稳定性:程序应该具有较高的稳定性,不会因为输入错误或其他异常情况导致崩溃。

(2)响应速度:程序应该具有较快的响应速度,不会因为数据量过大或其他原因导致卡顿或延迟。

3. 可靠性需求(1)数据安全:程序应该具有较高的数据安全性,保证用户输入的数据不会被损坏或丢失。

(2)用户友好性:程序应该具有较好的用户友好性,使用户能够轻松使用。

三、系统设计1. 总体设计(1)系统结构:本系统采用单层结构,包含若干个函数模块。

(2)数据结构:本系统采用链表数据结构,将每个联系人信息存储在一个节点中,并通过指针将各个节点连接起来。

(3)界面设计:本系统采用命令行界面,用户可以通过输入不同的命令实现不同的功能。

2. 模块设计(1)添加联系人模块:该模块用于添加新的联系人信息,包括姓名、性别、电话号码等。

用户需要输入相应的信息后,程序将新建一个节点并将其插入到链表中。

(2)删除联系人模块:该模块用于删除已有的联系人信息。

用户需要输入要删除的联系人姓名或电话号码后,程序将在链表中查找相应节点并将其删除。

(3)修改联系人模块:该模块用于修改已有的联系人信息。

用户需要输入要修改的联系人姓名或电话号码后,程序将在链表中查找相应节点并允许用户修改其中的信息。

(4)查询联系人模块:该模块用于根据姓名或电话号码查询已有的联系人信息。

C语言程序设计 通讯录程序

C语言程序设计  通讯录程序

目录:课程设计任务书 (2)目录: (3)一、目的 (4)二、基本情况 (5)三、时间安排 (5)四、设计和调试过程规范化要求 (5)五、设计内容和设计要求 (6)六、考核方式 (7)一通讯录的主要功能: (8)一、问题描述: (8)二、功能要求: (8)三、算法提示: (8)四、测试数据: (9)二、课题的主要功能模块划分: (9)三、主要功能的实现 (10)一、按名字查找显示函数void search( ) (17)二、快速查找函数:void qseek( ) (17)四、程序调试: (18)五、总结 (20)六、源程序 (21)机械工程学院课程设计评分表 (30)前言《C语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。

是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。

通常,课程设计的课题比平时的习题复杂得多,也更接近实际。

课程设计着眼于理论与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养程序设计工作所需要的知识综合能力和动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。

为了达到上述目的,本课程设计安排了15个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。

学生选其中一题进行设计,设计完毕写出课程设计报告,用A4纸打印成册;并将课程设计报告与源程序存盘。

学习委员将课程设计报告与磁盘(缺一不可)收齐后交指导老师。

一、目的全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。

c语言通讯录设计与实现

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. 数据存储与读取:
可以将通讯录数据存储在文件中,程序启动时从文件读取数据,程序退出时将数据写入文件。

6. 错误处理:
需要考虑输入错误、文件读写错误等可能的错误,并给出相应的错误提示。

以上为一个简单的课程设计思路,具体的实现细节和设计风格可根据个人能力和对系统的需求进行调整和完善。

C语言程序设计报告书(手机通讯录)

C语言程序设计报告书(手机通讯录)

此处所用字符函数 “strcpy”,由于删 除联系人后,需要进 行重新编号,故选将 第“q+1”个联系人 的信息复制给第“q” 个联系人。
ห้องสมุดไป่ตู้
PPTFLY
增加功能(APPEND)
void APPEND(int j) /*添加联系人的相关信息*/ { int n; fri[j].num=j+1; printf("Number:%d\n",j+1); printf("Name:"); scanf("%s",fri[j].name); printf("Kind:"); scanf("%s",fri[j].classify); printf("Telephone:"); scanf("%s",fri[j].telephone); printf("Mail:"); scanf("%s",fri[j].mail); }
c语言程序设计报告书手机通讯录c语言通讯录程序设计c语言程序设计报告书c语言通讯录课程设计c语言通讯录程序通讯录管理系统c语言c语言通讯录c语言通讯录代码用c语言编写通讯录c语言通讯录源代码
PPTFLY
C语言程序设计报告
报告人:曾强 学号:05311130 专业:工程力学
通讯录管理系统(A级)
模拟手机通讯录管理系统,初始通讯录信息由文本文件
if(i=20)
printf("\nThe room is full");break; case 2:SHOW(fri);getch();break; case 3:DIAL(fri);getch();break; case 4:CORRECT(fri);getch();break; case 5:DELETE(fri[i]);getch();break; case 6:exit(0); }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

c语言通讯录程序设计
在现代社会中,通讯录是人们工作和生活中必不可少的工具之一。

为了方便管理联系人的信息,许多人开始使用电子化的通讯录,并希望能够通过程序来实现通讯录的管理。

本文将以C语言为基础,介绍一个简单但实用的通讯录程序设计。

首先,我们需要定义通讯录的数据结构。

通讯录中每个联系人都应该有姓名、电话号码、电子邮件等基本信息。

为了方便管理,我们可以定义一个结构体来表示联系人的信息。

以下是一个简单的示例:
```c
#define MAX_CONTACTS 100
typedef struct {
char name[100];
char phone[100];
char email[100];
} Contact;
Contact contacts[MAX_CONTACTS];
int numContacts = 0;
```
上述代码中,我们使用了一个数组来存储联系人的信息,数组的大小可以根据需求进行修改。

同时,我们还定义了一个变量`numContacts`来记录当前通讯录中联系人的数量。

接下来,我们可以设计一些基本的功能,比如添加联系人、查找联系人和删除联系人等。

下面是这些功能的实现示例:
```c
void 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("联系人添加成功。

\n");
return;
}
void searchContact() {
char searchName[100];
printf("请输入要查找的联系人姓名:");
scanf("%s", searchName);
int i;
for (i = 0; i < numContacts; i++) {
if (strcmp(contacts[i].name, searchName) == 0) {
printf("联系人姓名:%s\n", contacts[i].name);
printf("联系人电话:%s\n", contacts[i].phone);
printf("联系人电子邮件:%s\n", contacts[i].email); return;
}
}
printf("未找到匹配的联系人。

\n");
return;
}
void deleteContact() {
char deleteName[100];
printf("请输入要删除的联系人姓名:");
scanf("%s", deleteName);
int i;
for (i = 0; i < numContacts; i++) {
if (strcmp(contacts[i].name, deleteName) == 0) {
int j;
for (j = i; j < numContacts - 1; j++) {
contacts[j] = contacts[j + 1];
}
numContacts--;
printf("联系人删除成功。

\n");
return;
}
}
printf("未找到匹配的联系人。

\n");
return;
}
```
通过上述代码,我们可以实现添加联系人、查找联系人和删除联系人等功能。

在添加联系人时,首先检查通讯录是否已满。

如果未满,则让用户输入联系人的基本信息,并将其添加到通讯录中。

在查找联系人和删除联系人时,我们通过比较联系人的姓名是否与用户输入的姓名相等来进行匹配。

同时,我们还可以为通讯录程序添加一些其他的功能,比如编辑联系人信息、
显示全部联系人等。

具体的实现方法可以根据个人需求进行扩展。

本文只是简单介绍了如何使用C语言设计一个通讯录程序,实际上,通讯录程序可以有很多复杂的功能和扩展,比如导出通讯录、导入通讯录、联系人分组等等。

有了这个基础的设计框架,我们可以根据自己的需求进行功能的扩展和改进,以实现更加实用和高效的通讯录程序。

总结起来,C语言通讯录程序的设计是通过定义数据结构和实现基本功能来实现的。

通过不断扩充和改进,我们可以设计出更加强大和实用的通讯录程序,为人们的工作和生活带来便利。

相关文档
最新文档