C语言程序设计 手机通讯录管理系统
- 格式:doc
- 大小:752.01 KB
- 文档页数:33
使用C语言打造通讯录管理系统和教学安排系统的代码示例这篇文章主要介绍了使用C语言打造通讯录管理系统和教学安排系统的代码示例,利用C语言强大的数组和指针能够更加清晰地体现设计思路,需要的朋友可以参考下:通讯录管理系统实现了通讯录的录入信息、保存信息、插入、删除、排序、查找、单个显示等功能。
完整的代码如下:#include <stdio.h>#include <malloc.h> //得到指向大小为Size的内存区域的首字节的指针//#include <string.h>#include <stdlib.h> //标准库函数//#define NULL 0#define LEN sizeof(struct address_list) //计算字节//int n;struct address_list{char name[30]; //名字char work[30]; //职业char handset[30]; //手机char email[30]; //电子邮件char address[30]; //通讯地址struct address_list *next;};struct address_list *shifang(struct address_list *head); // 释放内存函数声明//创建函数,不带头结点的链表struct address_list *creat(void){struct address_list *head,*p1,*p2;char name[20];n=0;p1=(struct address_list *)malloc(LEN);p2=p1; //强制内存转换printf("请输入通讯录的内容!\n姓名输入为0时表示创建完毕!\n");printf("请输入姓名:");gets(name);if(strcmp(name,"0")!=0){strcpy(p1->name,name);printf("请输入职业:"); gets(p1->work);printf("请输入手机:"); gets(p1->handset);printf("请输入电子邮件:"); gets(p1->email);printf("请输入通讯地址:"); gets(p1->address);head=NULL;while(1){n=n+1; //记录通讯录人数个数if(n==1)head=p1;elsep2->next=p1;p2=p1;printf("请输入姓名:");gets(name);if(strcmp(name,"0")==0){break;}else{p1=(struct address_list *)malloc(LEN);strcpy(p1->name,name);printf("请输入职业:"); gets(p1->work);printf("请输入手机:"); gets(p1->handset);printf("请输入电子邮件:"); gets(p1->email);printf("请输入通讯地址:"); gets(p1->address);}}p2->next=NULL;return head;}elsereturn 0;}//输出函数void print(struct address_list *head){struct address_list *p;if(head!=NULL){p=head;printf("本通讯录现在共有%d人:\n",n);printf("---姓名-------职业--------手机-------Email-------通讯地址\n");printf("==================================\n");doprintf("== %s",p->name); printf(" ");printf("%s",p->work); printf(" ");printf("%s",p->handset); printf(" ");printf("%s",p->email); printf(" ");printf("%s",p->address); printf(" \n");p=p->next;}while(p!=NULL);printf("==================================\n");}elseprintf("通讯录为空,无法输出!\n");}//增加函数struct address_list *insert(struct address_list *head){struct address_list *p0,*p1,*p2;char name[20];p1=head;printf("请输入增加的内容:\n");printf("请输入姓名:"); gets(name);if(strcmp(name,"0")==0){printf("姓名不能为0,增加失败!\n");return(head);}else{p0=(struct address_list *)malloc(LEN);strcpy(p0->name,name);printf("请输入职业:"); gets(p0->work);printf("请输入手机:"); gets(p0->handset);printf("请输入电子邮件:"); gets(p0->email);printf("请输入通讯地址:"); gets(p0->address);n=n+1;if(head==NULL){head=p0;p0->next=NULL;return head;}else{while(strcmp(p0->name,p1->name)>0&&(p1->next!=NULL))p2=p1;p1=p1->next;}if(strcmp(p0->name,p1->name)<0 || strcmp(p0->name,p1->name)==0) {if(head==p1){head=p0;}else{p2->next=p0;}p0->next=p1;}else{p1->next=p0;p0->next=NULL;}return head;}}}struct address_list* delete_txl(struct address_list *head){struct address_list *p,*q;char name[30];if(head==NULL){printf("通讯录为空,无法显示!\n");return head;}p=head;printf("请输入需要删除的人的姓名:");gets(name);if(strcmp(head->name,name)==0){head=head->next;free(p);printf("删除操作成功!\n");return head;}{q=head,p=head->next;while(p!=NULL){if(strcmp(p->name,name)==0){q->next=p->next;free(p);printf("删除操作成功!\n");return head;}p=p->next;q=q->next;}}}//显示函数struct address_list *display(struct address_list *head){struct address_list *p1,*p2;char name[30];int m;if(head==NULL){printf("通讯录为空,无法显示!\n");return head;}p1=head;m=0;printf("请输入需要显示人的姓名:");gets(name);while(p1!=NULL){while((strcmp(p1->name,name))!=0 && p1->next!=NULL){p2=p1;p1=p1->next;}if(strcmp(p1->name,name)==0){m++;printf("%s的通讯内容如下:\n",name);printf("---姓名--------职业--------手机-------Email------通讯地址\n");printf("==================================\n");printf("== %s",p1->name);printf(" ");printf("%s",p1->work);printf(" ");printf("%s",p1->handset);printf(" ");printf("%s",p1->email);printf(" ");printf("%s",p1->address); printf(" \n");printf("==================================\n");}p1=p1->next;}if(m==0){printf("此人未在本通讯录中!\n");}return(head);}//排序函数struct address_list *paixu(struct address_list *head){struct address_list *p1,*p2;int i,j;struct address_list1{char name[30];char work[30];char handset[30];char email[30];char address[30];};struct address_list1 px[200];struct address_list1 temp;if(head==NULL){printf("通讯录为空,无法排序!\n");return(head);}p1=head;for(i=0;i<n,p1!=NULL;i++){strcpy(px[i].name,p1->name);strcpy(px[i].work,p1->work);strcpy(px[i].handset,p1->handset);strcpy(px[i].email,p1->email);strcpy(px[i].address,p1->address);p2=p1;p1=p1->next;}head=shifang(head);for(j=0;j<n-1;j++){for(i=j+1;i<n;i++){if(strcmp(px[i].name,px[j].name)<0){temp=px[i];px[i]=px[j];px[j]=temp;}}}p1=(struct address_list *)malloc(LEN);p2=p1;strcpy(p1->name,px[0].name);strcpy(p1->work,px[0].work);strcpy(p1->handset,px[0].handset);strcpy(p1->email,px[0].email);strcpy(p1->address,px[0].address);head=p1;for(i=1;i<n;i++){p1=(struct address_list *)malloc(LEN);strcpy(p1->name,px[i].name);strcpy(p1->work,px[i].work);strcpy(p1->handset,px[i].handset);strcpy(p1->email,px[i].email);strcpy(p1->address,px[i].address);p2->next=p1;p2=p1;}p2->next=NULL;printf("按姓名排序后为:\n");print(head);return(head);}//姓名查找函数struct address_list *search(struct address_list *head){struct address_list *p1,*p2;int m;char name[30];if(head==NULL){printf("通讯录为空,无法分类查找!\n");return(head);}p1=head;printf("********************\n");printf("** 请输入需要查找的姓名**\n");printf("********************\n");m=0;gets(name);while(p1!=NULL){while(strcmp(p1->name,name)!=0&&p1->next!=NULL){p2=p1;p1=p1->next;}if(strcmp(p1->name,name)==0){m++;printf("你查找的内容是:\n");printf("+++++++++++++++++++++++++++++++++++\n");printf("++ %s %s %s %s %s\n",p1->name,p1->work,p1->handset,p1->email,p1-> address);printf("+++++++++++++++++++++++++++++++++++\n");}p1=p1->next;if(m==0){printf("此人未在本通讯录中!\n");}break;}return(head);}//释放内存函数struct address_list *shifang(struct address_list *head){struct address_list *p1;while(head!=NULL){p1=head;head=head->next;free(p1);}return(head);}//文件写入函数void save(struct address_list *head){FILE *fp;struct address_list *p1;char tong[30];if(head==NULL){printf("通讯录为空,无法存储!\n");return;}printf("请输入保存后的文件名:");gets(tong);fp=fopen("(tong).txt","w");if(fp==NULL){printf("cannot open file\n");return;}p1=head;fprintf(fp,"姓名职业手机Email 通讯地址\n");for(;p1!=NULL;){fprintf(fp,"%s %s %s %s %s\n",p1->name,p1->work,p1->handset,p1->email,p1-> address);p1=p1->next;}printf("保存完毕!\n");fclose(fp);}//文件读出函数struct address_list *load(struct address_list *head){FILE *fp;char tong[30];struct address_list *p1,*p2;printf("请输入要输出的文件名:");gets(tong);fp=fopen("(tong).txt","r");if(fp==NULL){printf("此通讯录名不存在,无法输出!\n");return(head);}else{head=shifang(head);}p1=(struct address_list *)malloc(LEN);fscanf(fp,"%s%s%s%s%s",&p1->name,&p1->work,&p1->handset,&p1->email,&p1->address); if(feof(fp)!=0){printf("文件为空,无法打开!\n");return(head);}else{rewind(fp);p2=p1;head=p1;n=0;while(feof(fp)==0){fscanf(fp,"%s%s%s%s%s",&p1->name,&p1->work,&p1->handset,&p1->email,&p1->address);if(feof(fp)!=0)break;p2->next=p1;p2=p1;p1=(struct address_list *)malloc(LEN);n=n+1;}p2->next=NULL;p1=head;head=head->next;n=n-1;free(p1);print(head);printf("打开完毕!\n");return(head);}fclose(fp);}//综合操作函数struct address_list *menu(struct address_list *head) {char num[10];while(1){printf("*********************\n");printf("*** 1 姓名查找****\n");printf("*** 2 单个显示****\n");printf("*** 3 增加****\n");printf("*** 4 退出****\n");printf("*********************\n");printf("请输入您选择的操作:");gets(num);switch(*num){case '1':{head=search(head); //姓名查找print(head);}break;case '2':{head=display(head); //显示}break;case '3':{head=insert(head); //增加print(head);}break;case '4':return head;default:printf("操作错误,此项不存在!\n");break;}if(strcmp(num,"6")==0)break;}return head;}//主函数void main(){struct address_list *head=NULL;char num[10];printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n"); printf("*=* 程序说明*=*\n");printf("*=* 请及时保存创建完毕的通讯录内容! *=*\n"); printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n"); while(1){printf("************************\n");printf("*** 1 创建通讯录****\n");printf("*** 2 按名字排序****\n");printf("*** 3 综合操作****\n");printf("*** 4 保存****\n");printf("*** 5 打开****\n");printf("*** 6 删除****\n");printf("*** 7 退出****\n");printf("************************\n");printf("请输入您选择的操作:");gets(num);switch(*num){case '1':{if(head==NULL){head=creat(); //创建print(head);}else{head=shifang(head);head=creat(); //重新创建print(head);}}break;case '2':{head=paixu(head); //排序}break;case '3':{head=menu(head); //综合操作}break;case '4':{save(head); //文件保存print(head);}break;case '5':{head=load(head); //文件输出}break;case '6':{head=delete_txl(head); //删除print(head);}break;case '7':head=shifang(head);break;default:printf("操作错误,此项不存在!\n");break;}if(strcmp(num,"7")==0)break;}}。
C程序课程设计报告--手机通讯录管理系统**:**学院:珠宝学院学号:649班级:141082一课程设计目的和内容概述1.目的:加深对《C语言》课程所学知识的理解,进一步巩固C语言编程方法。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力,加强动手能力。
2.内容:设计一个简易的手机通讯录管理系统。
该题目要求在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。
进一步掌握各种函数的应用,包括时间函数、、绘图函数,以及文件的读写操作等。
其中结构体,函数的调用,算法的设计是尤为重要的。
二题目手机通讯录管理系统。
[问题描述]该系统模拟手机通讯录管理系统,实现对手机中的通讯录进行管理[基本要求]要能提供以下几种功能:(1)查看功能:选择此功能时,列出下列三类选择:A:办公类B:个人类C:商务类(2)当选中某类时,显示出此类所有数据中的姓名和电话号码(3)添加数据功能:能录入新数据,每个结点包括:姓名,电话号码,分类(可能选项有:w为办公类p为个人类b为商务类),电子邮件。
例如:杨春商务类当录入重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通讯录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。
(4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改。
(5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。
三程序设计1.总体设计首先,因为每个个体有多种信息,所以要建立结构体来储存和整合各个信息。
然后利用模块来分别实现程序的各个功能。
各个模块用函数来实现。
在通过通过主函数来判断输入字母,从而调动函数,实现所需功能。
通讯录管理系统C语言课程设计报告一、引言通讯录管理系统是一种能够对联系人信息进行存储、增删改查等管理操作的系统。
在本课程设计中,我设计并实现了一个基于C语言实现的通讯录管理系统,采用顺序储存的数据结构。
本报告将介绍通讯录管理系统的设计思路、功能特点以及实现过程。
二、需求分析通讯录管理系统主要包括以下功能:1.添加联系人信息2.删除联系人信息3.修改联系人信息4.查询联系人信息5.显示所有联系人信息在设计系统时,需要考虑如何高效地实现上述功能,并保证数据的准确性和一致性。
三、设计思路为了实现通讯录管理系统,我采用了顺序储存的方式存储联系人信息。
具体而言,我使用结构体数组来存储联系人的姓名、电话号码等信息,通过数组下标来实现对联系人信息的操作。
四、功能实现1. 添加联系人信息用户通过输入联系人的姓名、电话号码等信息,将新的联系人信息添加到通讯录中。
系统会提示用户输入相关信息,并将信息加入到结构体数组中。
2. 删除联系人信息用户可以根据联系人的姓名或电话号码来删除指定的联系人信息。
系统会遍历结构体数组,找到相应的联系人信息并删除。
3. 修改联系人信息用户可以选择需要修改的联系人信息,然后输入新的信息进行修改。
系统会在结构体数组中找到对应的联系人信息,并进行更新操作。
4. 查询联系人信息用户可以通过姓名或电话号码查询指定联系人的信息。
系统会输出符合条件的联系人信息。
5. 显示所有联系人信息系统会将通讯录中所有联系人的信息依次显示出来,方便用户查看。
五、总结通过本次课程设计,我深入理解了C语言的数据结构和实现原理,同时锻炼了对问题的分析与解决能力。
通讯录管理系统是一个简单且实用的应用,通过本次设计,我对通讯录系统的设计与实现有了更深入的认识,也提高了编程的能力。
六、参考文献暂无以上是对通讯录管理系统C语言课程设计报告的简要介绍,希望能够对您有所帮助。
航空航天大学课程设计报告课程设计名称:C语言课程设计课程设计题目:手机通讯录管理程序院(系):计算机学院专业:计算机科学与技术班级:学号:姓名:指导教师:伟东完成日期:2012年03月15日目录第1章概要设计 (1)1.1题目的容与要求 (1)1.2总体结构 (1)第2章详细设计 (2)2.1主模块 (2)2.2添加模块 (3)2.3显示模块 (5)2.4删除模块 (6)2.5修改模块 (8)2.6查询模块 (10)第3章调试分析 (14)第4章使用说明 (15)参考文献 (24)附录(程序清单) (25)第1章概要设计1.1题目的容与要求容:设计一个用文本文件的形式实现手机通讯录的程序,实现一个个人通讯信息的管理维护和查询。
要求:1)建立通讯录信息文件,对通讯录信息进行增、删、改、查询(可按多种方式,如、、分组等)。
2)用户界面友好,功能明确,操作方便。
3)操作结束后,需要把操作后的文件容保存到文本文件中。
1.2总体结构本程序主要分为六个模块(功能模块图见图1.1):主模块,添加模块,显示模块,删除模块,修改模块,查询模块。
主模块:控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块,实现各项功能。
添加模块:主要实现程序最初运行时手机通讯录的录入以及其后的运行中手机通讯录的追加功能。
显示模块:显示文本文件中的手机通讯录信息容。
删除模块:对指定的手机通讯录信息进行删除。
修改模块:对指定的手机通讯录信息进行修改。
查询模块:对指定的手机通讯录信息按多种方式(如、、分组等)进行查询。
图1.1 功能模块图第2章详细设计2.1主模块控制整个程序的运行,控制主菜单操作,通过主函数模块分别调用各个模块,实现各项功能。
显示主菜单,选择要进行的操作(添加记录、显示记录、删除记录、修改记录、查询记录、退出程序),根据选择,调用相应的函数,进行相应的操作。
流程如图2.1所示。
图2.1 主模块流程图显示主菜单,选择要进行的操作(添加记录、显示记录、删除记录、修改记录、查询记录、退出程序)。
c语言通讯录管理系统课程设计报告报告标题:C语言通讯录管理系统课程设计报告1. 引言本报告旨在介绍并分析本次课程设计所涉及到的C语言通讯录管理系统的设计与实现过程。
2. 设计目标•开发一个功能完善的通讯录管理系统•实现基本的通讯录管理功能,包括添加、删除、查询、修改联系人信息等•提供良好的用户交互界面,方便用户使用该系统•提高系统的效率和稳定性,确保数据的安全性3. 系统设计概述本通讯录管理系统基于C语言开发,主要包括以下几个模块: - 用户管理模块:实现用户注册、登录、退出等功能 - 联系人管理模块:实现联系人的增删改查等功能 - 数据存储模块:使用文件系统进行数据的读写操作数据结构设计本系统使用了以下数据结构: - 用户结构体:包含用户名、密码等信息 - 联系人结构体:包含姓名、电话号码、地址等信息功能模块设计•用户管理模块:提供用户注册、登录、退出等功能•联系人管理模块:提供联系人的添加、删除、查询、修改等功能•数据存储模块:实现数据的读取与保存功能4. 实现细节用户管理模块•注册功能:获取用户输入的用户名和密码,存储到用户数据文件中•登录功能:根据用户输入的用户名和密码,从用户数据文件中验证登录信息•退出功能:退出当前用户,返回系统主界面联系人管理模块•添加联系人功能:获取用户输入的联系人信息,存储到联系人数据文件中•删除联系人功能:根据用户输入的联系人姓名,从联系人数据文件中删除对应的联系人信息•查询联系人功能:根据用户输入的关键词,从联系人数据文件中查找匹配的联系人信息•修改联系人功能:根据用户输入的联系人姓名,从联系人数据文件中修改对应的联系人信息数据存储模块•读取数据功能:从文件中读取用户和联系人的数据•保存数据功能:将用户和联系人的数据保存到文件中5. 测试与优化本系统在开发过程中进行了多次测试和优化,确保系统的稳定性和功能完善性。
通过模拟用户的操作,检测系统的响应速度、功能是否正常等,并对系统进行了性能调优和bug修复。
通讯录管理系统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. 添加联系人:用户可以添加联系人的姓名、电话号码、邮箱等信息。
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语言程序设计通讯录管理系统————————————————————————————————作者:————————————————————————————————日期:1.需求分析根据题目要求,通讯录保存在文件中,要提供文件的输入和输出功能;还有就是要提供通讯录添加(个人信息包括姓名、学号、年龄、住址、电子邮件等)、删除、显示、修改等基本功能。
2.概要设计系统总体设计是信息的输入、信息的编辑和退出。
系统功能模块如下:1.添加通讯录;2.输出通讯录;3.查找通讯录;4.修改通讯录;5.删除通讯录;6.退出通讯录;3.详细设计1.通讯录里无信息,所以要添加信息。
用键盘逐个输入通讯录里联系人的信息。
开新建Y是否继续添N结束2.输出通讯录用于让使用者观看通讯录里所有的信息。
开始输出所有结束3.查找通讯录是让使用者可以通过电话或姓名来查找通讯录里的联系人。
开始按姓名按号码结束4.修改通讯录是让使用者通过姓名查找到通讯录里的联系人,然后其作出修改。
5.删除通讯录是用来按照联系人的姓名或电话来单独删除通讯录中一些不想要的联系人。
还可以集体删除通讯录中的联系人。
开始 输入姓名选择要修是否继续修改结束YN6.退出通讯录系统。
4.主要源程序代码#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h>struct record {char name[20]; char age[20]; char phone[20]; char adress[40]; char number[30]; char e_mail[20]; }contact[500];int NO=0; FILE *fp;void mainmenu(); void newrecord(); void browsemenu(); void searchmenu();开始删除按姓按电删除结束void searchname();void searchphone();void modifymenu();void deletemenu();void deleteall();void deletesingle();void deletename();void deletephone();int loadfile();void savefile();void main(){printf("\n\t\t :)欢迎使用通讯录管理系统beta");printf("\n\t\t文件导入中……请稍后……\n\n\n\n\n");system("cls");loadfile();while (1){mainmenu();}}void mainmenu(){char choice;system("cls");printf("\n\t\t******************** 主菜单********************"); printf("\n\t\t****************** 1-新建菜单******************"); printf("\n\t\t****************** 2-浏览菜单******************"); printf("\n\t\t****************** 3-查找菜单******************"); printf("\n\t\t****************** 4-修改菜单******************"); printf("\n\t\t****************** 5-删除菜单******************"); printf("\n\t\t****************** 6-退出******************");printf("\n\t\t************************************************"); printf("\n\t\t请选择:");choice=getch();switch (choice){case '1':newrecord();break;case '2':browsemenu();break;case '3':searchmenu();;break;case '4':modifymenu();break;case '5':deletemenu();break;case '6':exit(0);default:mainmenu();}}void newrecord(){printf("\n\t\t**************** 请输入联系人信息****************\n"); printf("\n\t\t输入姓名:");scanf("%s",&contact[NO].name);printf("\n\t\t输入年龄:");scanf("%s",&contact[NO].age);printf("\n\t\t输入电话号码:");scanf("%s",&contact[NO].phone);printf("\n\t\t输入家庭住址:");scanf("%s",&contact[NO].adress);printf("\n\t\t输入学号:");scanf("%s",&contact[NO].number);printf("\n\t\t输入电子邮件:");scanf("%s",&contact[NO].e_mail);NO++;savefile();printf("\n\t\t是否继续添加?(y/n):");if (getch()=='y')newrecord();return;}void browsemenu(){int i;system("cls");if(NO!=0){printf("\n\t\t*************** 以下为通讯录所有信息************");for (i=0;i<NO;i++){printf("\n\t\t姓名:%s",contact[i].name);printf("\n\t\t年龄:%s",contact[i].age);printf("\n\t\t联系电话:%s",contact[i].phone);printf("\n\t\t家庭住址:%s",contact[i].adress);printf("\n\t\t 学号:%s",contact[i].number);printf("\n\t\t电子邮件:%s",contact[i].e_mail);printf("\t\t");if (i+1<NO){printf("\n\t\t__________________________");system("pause");}}printf("\n\t\t************************************************"); }elseprintf("\n\t\t通讯录中无任何纪录");printf("\n\t\t按任意键返回主菜单:");getch();return;}void searchmenu(){char choice;system("cls");printf("\n\t\t******************* 查找菜单*******************"); printf("\n\t\t***************** 1-按姓名查找*****************"); printf("\n\t\t***************** 2-按电话查找*****************"); printf("\n\t\t***************** 3-返回主菜单*****************"); printf("\n\t\t************************************************"); printf("\n\t\t请选择:");choice=getch();switch (choice){case '1':searchname();break;case '2':searchphone();break;case '3':mainmenu();break;}}void searchname(){int mark=0;int i;int a=0;char name[20];printf("\n\t\t***************** 按姓名查找*******************"); printf("\n\t\t请输入姓名:");scanf("%s",name);for(i=a;i<NO;i++){if (strcmp(contact[i].name,name)==0){printf("\n\t\t************ 以下是您查找的联系人信息**********"); printf("\n\t\t姓名:%s",contact[i].name);printf("\n\t\t年龄:%s",contact[i].age);printf("\n\t\t联系电话:%s",contact[i].phone);printf("\n\t\t家庭住址:%s",contact[i].adress);printf("\n\t\t 学号:%s",contact[i].number);printf("\n\t\t电子邮件:%s",contact[i].e_mail);printf("\n\t\t************************************************"); printf("\n\t\t按任意键返回主菜单:");mark++;getch();return;return;}}if(mark==0){printf("\n\t\t没有该姓名的联系人纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}}void searchphone(){int mark=0;int i;int a=0;char phone[10];printf("\n\t\t****************** 按电话查找******************"); printf("\n\t\t请输入电话:");scanf("%s",phone);for(i=0;i<NO;i++){if (strcmp(contact[i].phone,phone)==0){printf("\n\t\t************* 以下是您查找的联系人信息*********"); printf("\n\t\t姓名:%s",contact[i].name);printf("\n\t\t年龄:%s",contact[i].age);printf("\n\t\t联系电话:%s",contact[i].phone);printf("\n\t\t家庭住址:%s",contact[i].adress);printf("\n\t\t 学号:%s",contact[i].number);printf("\n\t\t电子邮件:%s",contact[i].e_mail);printf("\n\t\t************************************************"); printf("\n\t\t按任意键返回主菜单:");mark++;getch();return;}}if (mark==0){printf("\n\t\t没有该联系人信息");printf("\n\t\t按任意键返回主菜单");getch();return;}}void modifymenu(){ int mark=0;int i,k;int a=0;int t=0;char choice;char name[20];struct record modify;system("cls");printf("\n\t\t请输入您要修改的姓名:");scanf("%s",name);for(i=a;i<NO;i++){if (strcmp(contact[i].name,name)==0){ k=i;mark=1;modify=contact[i];printf("\n\t\t********** 以下是您将修改的联系人信息**********"); printf("\n\t\t姓名:%s",contact[i].name);printf("\n\t\t年龄:%s",contact[i].age);printf("\n\t\t联系电话:%s",contact[i].phone);printf("\n\t\t家庭住址:%s",contact[i].adress);printf("\n\t\t 学号:%s",contact[i].number);printf("\n\t\t电子邮件:%s",contact[i].e_mail);printf("\n\t\t是否继续?y/n");if(getch()=='n')modifymenu();else{printf("\n\t\t选择您要修改的选项:");printf("\n\t\t\t(1).姓名");printf("\n\t\t\t(2).年龄");printf("\n\t\t\t(3).联系电话");printf("\n\t\t\t(4).家庭住址");printf("\n\t\t\t(5). 学号");printf("\n\t\t\t(6).电子邮件");printf("\n\t\t\t(7).返回");printf("\n\t\t请选择: ");choice=getch();switch(choice){ case '1': printf("姓名:"); scanf("%s",contact[i].name); break;case '2': printf("年龄:"); scanf("%s",contact[i].age); break;case '3': printf("联系电话:"); scanf("%s",contact[i].phone); break;case '4': printf("家庭住址:"); scanf("%s",contact[i].adress); break;case '5': printf(" 学号:"); scanf("%s",contact[i].number); break;case '6': printf("电子邮件:"); scanf("%s",contact[i].e_mail); break;case '7': mainmenu(); break;default: modifymenu();}printf("\n\t\t您的修改结果为:");printf("\n\t\t姓名:%s",contact[i].name);printf("\n\t\t年龄:%s",contact[i].age);printf("\n\t\t联系电话:%s",contact[i].phone);printf("\n\t\t家庭住址:%s",contact[i].adress);printf("\n\t\t 学号:%s",contact[i].number);printf("\n\t\t电子邮件:%s",contact[i].e_mail);printf("\n\t\t确认修改?y/n");if(getch()=='n'){contact[i]=modify;printf("\n\t\t修改未保存!");}else printf("\n\t\t修改成功!");savefile();mark=0;printf("\n\t\t是否继续修改?(y/n)");if (getch()=='y')modifymenu();}}}if (mark==0){printf("\n\t\t没有该联系人的纪录");printf("\n\t\t是否继续修改?(y/n)");if (getch()=='y')modifymenu();}return;}void deletemenu(){char choice;if(NO==0){printf("\n\t\t对不起,文件中无任何纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}system("cls");printf("\n\t\t******************* 删除菜单*******************"); printf("\n\t\t****************** 1-删除所有******************"); printf("\n\t\t****************** 2-删除单个******************"); printf("\n\t\t***************** 3-返回主菜单*****************"); printf("\n\t\t************************************************"); printf("\n\t\t请选择:");choice=getch();switch(choice){case '1':deleteall();break;case '2':deletesingle();break;case '3':mainmenu();break;default:mainmenu();}}void deleteall(){printf("\n\t\t确认删除?(y/n)");if (getch()=='y'){if ((fp=fopen("contact","w"))==0){printf("\n\t\t不能打开文件,删除失败");loadfile();}NO=0;printf("\n\t\t纪录已删除,按任意键返回主菜单"); getch();fclose(fp);return;}elsereturn;}void deletesingle(){char choice;printf("\n\t\t\t1-按姓名删除");printf("\n\t\t\t2-按号码删除");printf("\n\t\t\t3-返回删除菜单");printf("\n\t\t请选择:");choice=getch();switch (choice){case '1':deletename();break;case '2':deletephone();break;case '3':deletemenu();break;}}void deletename(){int i,j;int mark=0;char name[20];printf("\n\t\t请输入要删除联系人姓名:");scanf("%s",name);if(NO==0){printf("\n\t\t对不起,文件中无任何纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}for (i=0;i<NO;i++){if (strcmp(contact[i].name,name)==0){printf("\n\t\t以下是您要删除的联系人纪录:"); printf("\n\t\t姓名:%s",contact[i].name); printf("\n\t\t年龄:%s",contact[i].age); printf("\n\t\t联系电话:%s",contact[i].phone); printf("\n\t\t家庭住址:%s",contact[i].adress); printf("\n\t\t 学号:%s",contact[i].number); printf("\n\t\t电子邮件:%s",contact[i].e_mail); printf("\n\t\t是否删除?(y/n)");if (getch()=='y'){for (j=i;j<NO-1;j++)contact[j]=contact[j+1];NO--;mark++;printf("\n\t\t删除成功");savefile();printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletename();return;}elsereturn;}continue;}if (mark==0){printf("\n\t\t没有该联系人的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletename();return;}}void deletephone(){int i,j;int mark=0;char phone[20];printf("\n\t\t请输入要删除联系电话:");scanf("%s",phone);if(NO==0)printf("\n\t\t对不起,文件中无任何纪录"); printf("\n\t\t按任意键返回主菜单");getch();return;}for (i=0;i<NO;i++){if (strcmp(contact[i].phone,phone)==0){printf("\n\t\t以下是您要删除的联系人纪录:"); printf("\n\t\t姓名:%s",contact[i].name); printf("\n\t\t年龄:%s",contact[i].age); printf("\n\t\t联系电话:%s",contact[i].phone); printf("\n\t\t家庭住址:%s",contact[i].adress); printf("\n\t\t 学号:%s",contact[i].number); printf("\n\t\t电子邮件:%s",contact[i].e_mail); printf("\n\t\t是否删除?(y/n)");if (getch()=='y'){for (j=i;j<NO-1;j++)contact[j]=contact[j+1];NO--;mark++;printf("\n\t\t删除成功");savefile();printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletephone();return;}elsereturn;}continue;}if (mark==0){printf("\n\t\t没有该联系人的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletephone();return;}int loadfile(){int NO=0;FILE *fp;if((fp=fopen("contact.txt","b"))==0){printf("\n\n\n\n\n\t\t\t 电话簿文件不存在");if ((fp=fopen("contact.txt","wb"))==0){printf("\n\t\t\t\t建立失败");exit(0);}else{printf("\n\t\t\t 电话簿已建立");printf("\n\t\t\t 按任意键进入主菜单");getch();return(NO);}exit(0);}fseek(fp,0,2);if (ftell(fp)>0){rewind(fp);for (NO=0;!feof(fp) && fread(&contact[NO],sizeof(struct record),1,fp);NO++); printf("\n\n\n\n\t\t\t\t :)文件导入成功");printf("\n\t\t\t\t 按任意键返回主菜单");getch();return(NO);}printf("\n\n\n\n\t\t\t :)文件导入成功");printf("\n\t\t\t电话簿文件中无任何纪录");printf("\n\t\t\t 按任意键返回主菜单");getch();return(NO);}void savefile(){int i;if ((fp=fopen("student.txt","wb"))==0)printf("\n\t\t文件打开失败!\n");}for (i=0;i<NO;i++){if (fwrite(&contact[i],sizeof(struct record),1,fp)!=1){printf("\n\t\t写入文件错误!\n");}}printf("\n\t\t已成功保存至文件!\n");fclose(fp);}本程序中大量使用了结构体和结构体数组,系统的功能模块都是使用子函数完成的,子函数中也存在大量结构体数组。
c语言课程设计学生通讯录管理系统以下是一个简单的C语言课程设计学生通讯录管理系统的示例代码,可以实现对学生信息的基本操作,如添加、查找、修改和删除。
```c#include <stdio.h>#include <string.h>// 学生信息结构体struct Student {char name[20];int age;char phone[11];};// 学生信息数组struct Student students[100];int count = 0; // 学生数量// 添加学生信息函数void addStudent() {struct Student s;printf("请输入学生姓名:");scanf("%s", );printf("请输入学生年龄:");scanf("%d", &s.age);printf("请输入学生电话:");scanf("%s", s.phone);students[count++] = s;printf("添加成功!\n");}// 查找学生信息函数void findStudent() {char name[20];printf("请输入要查找的学生姓名:");scanf("%s", name);for (int i = 0; i < count; i++) {if (strcmp(students[i].name, name) == 0) {printf("姓名:%s,年龄:%d,电话:%s\n", students[i].name, students[i].age, students[i].phone);return;}}printf("未找到该学生!\n");}// 修改学生信息函数void modifyStudent() {char name[20];printf("请输入要修改的学生姓名:");scanf("%s", name);for (int i = 0; i < count; i++) {if (strcmp(students[i].name, name) == 0) { printf("请输入新的学生姓名:");scanf("%s", students[i].name);printf("请输入新的学生年龄:");scanf("%d", &students[i].age);printf("请输入新的学生电话:");scanf("%s", students[i].phone);printf("修改成功!\n");return;}}printf("未找到该学生!\n");}// 删除学生信息函数void deleteStudent() {char name[20];printf("请输入要删除的学生姓名:");scanf("%s", name);for (int i = 0; i < count; i++) {if (strcmp(students[i].name, name) == 0) {for (int j = i; j < count - 1; j++) {students[j] = students[j + 1]; // 将后面的学生信息往前移动一位,覆盖掉要删除的学生信息。
基于c语言通讯录管理系统编程设计以下是一个基于 C 语言的简单通讯录管理系统的编程设计示例:```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_CONTACTS 100// 联系人结构体struct Contact {char name[50];char phone[20];char address[100];};// 保存联系人信息的数组struct Contact contacts[MAX_CONTACTS];// 联系人数量int contactCount = 0;// 函数声明void addContact();void displayContacts();void searchContact();void updateContact();void deleteContact();int main() {// 主菜单int choice;do {printf("\n 通讯录管理系统\n\n");printf("1. 添加联系人\n");printf("2. 显示联系人\n");printf("3. 搜索联系人\n");printf("4. 更新联系人\n");printf("5. 删除联系人\n");printf("6. 退出\n\n");printf("请选择操作:");scanf("%d", &choice);switch (choice) {case 1:addContact();break;case 2:displayContacts();break;case 3:searchContact();break;case 4:updateContact();break;case 5:deleteContact();break;case 6:break;default:printf("无效选择,请重新输入。