C语言程序设计 手机通讯录管理系统

合集下载

使用C语言打造通讯录管理系统和教学安排系统的代码示例

使用C语言打造通讯录管理系统和教学安排系统的代码示例

使用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语言课程设计报告—手机通讯录管理系统

C语言课程设计报告—手机通讯录管理系统

C程序课程设计报告--手机通讯录管理系统**:**学院:珠宝学院学号:649班级:141082一课程设计目的和内容概述1.目的:加深对《C语言》课程所学知识的理解,进一步巩固C语言编程方法。

学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力,加强动手能力。

2.内容:设计一个简易的手机通讯录管理系统。

该题目要求在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。

进一步掌握各种函数的应用,包括时间函数、、绘图函数,以及文件的读写操作等。

其中结构体,函数的调用,算法的设计是尤为重要的。

二题目手机通讯录管理系统。

[问题描述]该系统模拟手机通讯录管理系统,实现对手机中的通讯录进行管理[基本要求]要能提供以下几种功能:(1)查看功能:选择此功能时,列出下列三类选择:A:办公类B:个人类C:商务类(2)当选中某类时,显示出此类所有数据中的姓名和电话号码(3)添加数据功能:能录入新数据,每个结点包括:姓名,电话号码,分类(可能选项有:w为办公类p为个人类b为商务类),电子邮件。

例如:杨春商务类当录入重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通讯录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。

(4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改。

(5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。

三程序设计1.总体设计首先,因为每个个体有多种信息,所以要建立结构体来储存和整合各个信息。

然后利用模块来分别实现程序的各个功能。

各个模块用函数来实现。

在通过通过主函数来判断输入字母,从而调动函数,实现所需功能。

通讯录管理系统c语言课程设计报告顺序储存

通讯录管理系统c语言课程设计报告顺序储存

通讯录管理系统C语言课程设计报告一、引言通讯录管理系统是一种能够对联系人信息进行存储、增删改查等管理操作的系统。

在本课程设计中,我设计并实现了一个基于C语言实现的通讯录管理系统,采用顺序储存的数据结构。

本报告将介绍通讯录管理系统的设计思路、功能特点以及实现过程。

二、需求分析通讯录管理系统主要包括以下功能:1.添加联系人信息2.删除联系人信息3.修改联系人信息4.查询联系人信息5.显示所有联系人信息在设计系统时,需要考虑如何高效地实现上述功能,并保证数据的准确性和一致性。

三、设计思路为了实现通讯录管理系统,我采用了顺序储存的方式存储联系人信息。

具体而言,我使用结构体数组来存储联系人的姓名、电话号码等信息,通过数组下标来实现对联系人信息的操作。

四、功能实现1. 添加联系人信息用户通过输入联系人的姓名、电话号码等信息,将新的联系人信息添加到通讯录中。

系统会提示用户输入相关信息,并将信息加入到结构体数组中。

2. 删除联系人信息用户可以根据联系人的姓名或电话号码来删除指定的联系人信息。

系统会遍历结构体数组,找到相应的联系人信息并删除。

3. 修改联系人信息用户可以选择需要修改的联系人信息,然后输入新的信息进行修改。

系统会在结构体数组中找到对应的联系人信息,并进行更新操作。

4. 查询联系人信息用户可以通过姓名或电话号码查询指定联系人的信息。

系统会输出符合条件的联系人信息。

5. 显示所有联系人信息系统会将通讯录中所有联系人的信息依次显示出来,方便用户查看。

五、总结通过本次课程设计,我深入理解了C语言的数据结构和实现原理,同时锻炼了对问题的分析与解决能力。

通讯录管理系统是一个简单且实用的应用,通过本次设计,我对通讯录系统的设计与实现有了更深入的认识,也提高了编程的能力。

六、参考文献暂无以上是对通讯录管理系统C语言课程设计报告的简要介绍,希望能够对您有所帮助。

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语言通讯录管理系统课程设计报告

c语言通讯录管理系统课程设计报告报告标题:C语言通讯录管理系统课程设计报告1. 引言本报告旨在介绍并分析本次课程设计所涉及到的C语言通讯录管理系统的设计与实现过程。

2. 设计目标•开发一个功能完善的通讯录管理系统•实现基本的通讯录管理功能,包括添加、删除、查询、修改联系人信息等•提供良好的用户交互界面,方便用户使用该系统•提高系统的效率和稳定性,确保数据的安全性3. 系统设计概述本通讯录管理系统基于C语言开发,主要包括以下几个模块: - 用户管理模块:实现用户注册、登录、退出等功能 - 联系人管理模块:实现联系人的增删改查等功能 - 数据存储模块:使用文件系统进行数据的读写操作数据结构设计本系统使用了以下数据结构: - 用户结构体:包含用户名、密码等信息 - 联系人结构体:包含姓名、电话号码、地址等信息功能模块设计•用户管理模块:提供用户注册、登录、退出等功能•联系人管理模块:提供联系人的添加、删除、查询、修改等功能•数据存储模块:实现数据的读取与保存功能4. 实现细节用户管理模块•注册功能:获取用户输入的用户名和密码,存储到用户数据文件中•登录功能:根据用户输入的用户名和密码,从用户数据文件中验证登录信息•退出功能:退出当前用户,返回系统主界面联系人管理模块•添加联系人功能:获取用户输入的联系人信息,存储到联系人数据文件中•删除联系人功能:根据用户输入的联系人姓名,从联系人数据文件中删除对应的联系人信息•查询联系人功能:根据用户输入的关键词,从联系人数据文件中查找匹配的联系人信息•修改联系人功能:根据用户输入的联系人姓名,从联系人数据文件中修改对应的联系人信息数据存储模块•读取数据功能:从文件中读取用户和联系人的数据•保存数据功能:将用户和联系人的数据保存到文件中5. 测试与优化本系统在开发过程中进行了多次测试和优化,确保系统的稳定性和功能完善性。

通过模拟用户的操作,检测系统的响应速度、功能是否正常等,并对系统进行了性能调优和bug修复。

通讯录管理系统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语言通讯录管理系统课程设计报告

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语言程序设计通讯录管理系统————————————————————————————————作者:————————————————————————————————日期: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语言课程设计学生通讯录管理系统以下是一个简单的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语言通讯录管理系统编程设计以下是一个基于 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("无效选择,请重新输入。

手机通讯录管理系统设计—C语言课程设计

手机通讯录管理系统设计—C语言课程设计

手机通讯录管理系统设计1.题目要求模拟手机通讯录管理系统,实现对手机中的通讯录进行管理.功能要求如下:(1).查看功能:选择此功能时,列出以下三类选择:①办公类②个人类③商务类(2).增加功能:能录入新数据.一个结点包括:姓名、电话号码、分类(办公类、个人类、商务类)、电子邮件。

例如:杨**1358******** 商务类c*****当录入重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通讯录中超过15条信息时,存储空间已满,不能再录入新数据,录入的新数据能按递增的顺序自动进行条目编号。

(3).修改功能:选中某个人的姓名时,可对此人的相印数据进行修改。

(4).删除功能:选中某个人的姓名时,可对此人的相印数据进行删除,并自动调整后续条目的编号。

2.需求分析根据题目要求,手机通讯录文件存放在手机上的指定位置(假设默认位置为D:\tongxunlu.txt),所以应提供文件的输入、输出等操作;在浏览通讯录时要提供显示,查找、插入、修改、删除等操作;另外还应该提供键盘式选择菜单实现功能选择。

3.总体设计根据上面的要求分析,可以将这个系统分成以下模块:菜单选择;查看数据;增加数据;修改数据;删除数据。

4.详细设计.①.函数预备函数准备部分主要包含库文件,预定义部分和本函数定义并使用的函数声明。

#include "stdio.h"#include "conio.h"#include "stdlib.h"#include "string.h"N #define N 15//根据程序要求,本程序内的通讯录条数最多为15条char address[100]="tab.txt";//结构体声明typedef struct person//通讯录结构中结点的定义{int num;char name[20];char tel_number[100];char type[20];char email[30];struct person *next;}PERSON;PERSON person[N];//定义N 个结构体变量,用于存储文件数据PERSON *head,*tail;//定义头指针和尾指针//函数声明部分PERSON *input();//建立文件,输入原始数据PERSON *output();//建立文件,实现原始文本覆盖void browse();//浏览(用包含browse1()和back()实现)void browse1();//浏览模块子程序void add();//添加数据void modify();//修改数据void del();//删除数据void menu();//菜单程序void back();//返回菜单或退出选择程序PERSON *findnum(int num);//通过序号找到数据PERSON *findname(char name[]);//通过姓名找到数据PERSON *findtel(char tel[]);//通过电话号码找到数据②.主函数主函数功能一般设计得比较简单,只提供输入、处理和输出的部分函数调用。

c语言通讯录管理系统课程设计

c语言通讯录管理系统课程设计

c语言通讯录管理系统课程设计一、教学目标本课程旨在让学生掌握C语言编程基础,通过编写通讯录管理系统,培养学生的实际编程能力和问题解决能力。

具体目标如下:1.知识目标:学生能理解C语言的基本语法、数据类型、运算符、控制结构等,并掌握结构体、文件操作等高级概念。

2.技能目标:学生能运用C语言实现功能齐全的通讯录管理系统,包括但不限于添加、删除、查找、修改联系人信息等功能。

3.情感态度价值观目标:通过课程学习,学生能培养编程思维,增强对计算机科学的兴趣,理解技术对现代社会的重要性。

二、教学内容教学内容围绕C语言通讯录管理系统的设计与实现展开,具体包括:1.C语言基础知识:数据类型、变量、运算符、控制结构。

2.高级数据结构:结构体、指针、数组。

3.文件操作:文件的打开、读写、关闭。

4.通讯录管理系统设计:需求分析、系统设计、功能实现。

三、教学方法结合C语言的特点和学生实际情况,采用以下教学方法:1.讲授法:系统讲解C语言基础知识和编程技巧。

2.案例分析法:分析已有的通讯录管理系统案例,引导学生理解系统设计过程。

3.实验法:学生在实验室环境里动手编写代码,实践所学知识。

四、教学资源为确保教学质量,准备以下教学资源:1.教材:《C程序设计语言》(K&R)、《C Primer Plus》。

2.参考书:《C语言深度剖析》、《C语言编程实践》。

3.多媒体资料:教学PPT、在线编程教程、视频讲解。

4.实验设备:计算机、网络环境、编程环境(如Code::Blocks、Visual Studio)。

五、教学评估本课程采用多元化的评估方式,全面客观地评价学生的学习成果:1.平时表现:通过课堂参与、提问、小组讨论等评估学生的积极性与专注度。

2.作业:布置编程作业,评估学生的编程能力和对知识的理解应用。

3.实验:评估学生在实验室的编程实践表现,检查代码质量与创新性。

4.期中期末考试:设置包含选择题、填空题、编程题的试卷,全面测试学生的知识掌握和应用能力。

通讯录管理系统c语言课程设计

通讯录管理系统c语言课程设计

通讯录管理系统 - C语言课程设计一、引言通讯录管理系统是一个基础而重要的应用程序,它可以帮助用户轻松地管理各种联系人信息。

本文将介绍一个使用C语言开发的通讯录管理系统的设计和实现过程。

二、系统设计1. 功能设计通讯录管理系统主要包括以下功能: - 添加联系人信息 - 删除联系人信息 - 修改联系人信息 - 查询联系人信息 - 显示所有联系人信息2. 数据结构设计为了实现通讯录管理系统的功能,我们需要设计合适的数据结构来存储联系人信息。

在本系统中,我们使用结构体来表示每个联系人的信息,结构体包括姓名、电话号码等字段。

typedef struct {char name[50];char phone[20];// 其他字段} Contact;3. 界面设计为了方便用户操作,通讯录管理系统的界面设计应该简洁明了。

在本系统中,我们采用命令行界面,用户通过键盘输入不同的命令来实现相应的功能。

三、系统实现1. 添加联系人信息用户可以通过输入联系人的姓名和电话号码来添加新的联系人信息。

系统将会将新的联系人信息存储到通讯录中。

2. 删除联系人信息用户可以通过输入联系人的姓名来删除特定联系人的信息。

系统将会从通讯录中删除对应的联系人记录。

3. 修改联系人信息用户可以通过输入联系人的姓名来修改特定联系人的信息。

系统将会根据用户输入的信息更新通讯录中相应联系人的记录。

4. 查询联系人信息用户可以通过输入联系人的姓名来查询特定联系人的信息。

系统将会显示出对应联系人的所有信息。

5. 显示所有联系人信息用户可以查看通讯录中所有联系人的信息。

系统将会按照一定的格式将所有联系人的信息逐条显示出来。

四、总结通过本文的介绍,我们了解了一个简单而实用的通讯录管理系统的设计和实现过程。

通讯录管理系统可以帮助用户方便地管理联系人信息,提高工作效率。

我们希望在学习C语言的过程中,通过实际项目的练习,提升自己的编程能力和解决问题的能力。

通讯录管理系统是一个不错的项目选择,希望读者可以从中获益良多。

c语言程序设计通讯录管理系统

c语言程序设计通讯录管理系统

c语言程序设计通讯录管理系统通讯录管理系统是一种常见的应用程序,用于管理个人或者组织的联系人信息。

本文将介绍一个基于C语言的通讯录管理系统的设计和实现。

一、需求分析通讯录管理系统需要满足以下功能需求:1. 添加联系人:可以添加新的联系人,包括姓名、电话号码、邮箱等信息。

2. 查找联系人:可以根据姓名或者电话号码查找已存在的联系人。

3. 删除联系人:可以根据姓名或者电话号码删除已存在的联系人。

4. 修改联系人:可以修改已存在联系人的信息,包括姓名、电话号码、邮箱等。

5. 显示所有联系人:可以显示当前通讯录中的所有联系人信息。

二、设计思路1. 数据结构:使用结构体来表示一个联系人的信息,包括姓名、电话号码、邮箱等字段。

使用数组来存储多个联系人的信息。

2. 添加联系人:通过用户输入的方式获取联系人信息,然后将联系人信息添加到联系人数组中。

3. 查找联系人:通过用户输入的姓名或者电话号码,在联系人数组中查找匹配的联系人,并显示其详细信息。

4. 删除联系人:通过用户输入的姓名或者电话号码,在联系人数组中查找匹配的联系人,并将其从数组中删除。

5. 修改联系人:通过用户输入的姓名或者电话号码,在联系人数组中查找匹配的联系人,并允许用户修改其信息。

6. 显示所有联系人:遍历联系人数组,逐个显示联系人的详细信息。

三、代码实现下面是一个简单的通讯录管理系统的C语言代码实现:```c#include <stdio.h>#include <string.h>#define MAX_CONTACTS 100typedef struct {char name[50];char phone[20];char email[50];} Contact;Contact contacts[MAX_CONTACTS];int numContacts = 0;void addContact() {printf("Enter name: ");scanf("%s", contacts[numContacts].name);printf("Enter phone number: ");scanf("%s", contacts[numContacts].phone);printf("Enter email: ");scanf("%s", contacts[numContacts].email);numContacts++;printf("Contact added successfully!\n");}void findContact() {char search[50];printf("Enter name or phone number to search: ");scanf("%s", search);int found = 0;for (int i = 0; i < numContacts; i++) {if (strcmp(contacts[i].name, search) == 0 || strcmp(contacts[i].phone, search) == 0) {printf("Name: %s\n", contacts[i].name);printf("Phone: %s\n", contacts[i].phone);printf("Email: %s\n", contacts[i].email);found = 1;break;}}if (!found) {printf("Contact not found!\n");}}void deleteContact() {char search[50];printf("Enter name or phone number to delete: ");scanf("%s", search);int found = 0;for (int i = 0; i < numContacts; i++) {if (strcmp(contacts[i].name, search) == 0 || strcmp(contacts[i].phone, search) == 0) {for (int j = i; j < numContacts - 1; j++) {strcpy(contacts[j].name, contacts[j + 1].name);strcpy(contacts[j].phone, contacts[j + 1].phone);strcpy(contacts[j].email, contacts[j + 1].email);}numContacts--;printf("Contact deleted successfully!\n");found = 1;break;}}if (!found) {printf("Contact not found!\n");}}void modifyContact() {char search[50];printf("Enter name or phone number to modify: ");scanf("%s", search);int found = 0;for (int i = 0; i < numContacts; i++) {if (strcmp(contacts[i].name, search) == 0 || strcmp(contacts[i].phone, search) == 0) {printf("Enter new name: ");scanf("%s", contacts[i].name);printf("Enter new phone number: ");scanf("%s", contacts[i].phone);printf("Enter new email: ");scanf("%s", contacts[i].email);printf("Contact modified successfully!\n");found = 1;break;}}if (!found) {printf("Contact not found!\n");}}void displayContacts() {printf("Contacts:\n");for (int i = 0; i < numContacts; i++) {printf("Name: %s\n", contacts[i].name); printf("Phone: %s\n", contacts[i].phone); printf("Email: %s\n", contacts[i].email); printf("\n");}}int main() {int choice;do {printf("1. Add contact\n");printf("2. Find contact\n");printf("3. Delete contact\n");printf("4. Modify contact\n");printf("5. Display all contacts\n"); printf("0. Exit\n");printf("Enter your choice: ");scanf("%d", &choice);switch (choice) {case 1:addContact();break;case 2:findContact();break;case 3:deleteContact();break;case 4:modifyContact();break;case 5:displayContacts();break;case 0:printf("Exiting...\n");break;default:printf("Invalid choice!\n");break;}} while (choice != 0);return 0;}```四、总结本文介绍了一个基于C语言的通讯录管理系统的设计和实现。

c语言课程设计通讯录管理系统课程设计报告

c语言课程设计通讯录管理系统课程设计报告

c语言课程设计通讯录管理系统课程设计报告一、教学目标本课程旨在通过学习C语言,使学生掌握通讯录管理系统的开发过程,培养学生的编程能力和逻辑思维能力。

具体目标如下:1.知识目标:学生能够理解C语言的基本语法和数据结构,掌握函数的定义和调用,了解面向过程的编程思想。

2.技能目标:学生能够使用C语言编写简单的程序,具备解决实际问题的能力,能够独立完成一个通讯录管理系统的开发。

3.情感态度价值观目标:学生通过课程学习,能够培养对编程的兴趣和热情,增强自我学习的动力,提高团队协作的能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数的定义和调用,以及面向过程的编程思想。

具体安排如下:1.C语言的基本语法:介绍变量、常量、运算符、表达式等基本概念。

2.数据结构:介绍整数、浮点数、字符等数据类型的使用,以及数组、指针等数据结构。

3.函数的定义和调用:介绍函数的声明、定义和调用,以及函数的参数传递和返回值。

4.面向过程的编程思想:介绍程序的执行流程、循环结构、条件判断等编程控制语句。

三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。

具体方法如下:1.讲授法:通过讲解C语言的基本语法、数据结构、函数的定义和调用等知识,使学生掌握课程的基本概念。

2.案例分析法:通过分析实际案例,让学生了解编程思想,培养学生的实际操作能力。

3.实验法:安排实验室实践环节,让学生动手编写程序,提高学生的实际编程能力。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。

具体资源如下:1.教材:选用权威、实用的C语言教材,为学生提供系统的学习资料。

2.参考书:推荐学生阅读一些优秀的编程书籍,丰富学生的知识储备。

3.多媒体资料:制作课件、视频等多媒体资料,提高课堂的教学效果。

4.实验设备:提供充足的计算机设备,确保学生能够进行实验和实践。

五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面客观地评价学生的学习成果。

C语言程序设计报告——通讯录管理系统

C语言程序设计报告——通讯录管理系统

C语言程序设计报告一.课题通讯录管理系统二.设计方案简介为了帮助广大人群解决笔记通讯录所带来的诸多不便,本人利用所学的专业知识,设计了一个简单,便利的系统供大家在线存储众多联系人信息。

这样做一来可以将自己的知识生活化,运用自己所学为他人做点事,二来,在完成这项任务的过程中,通过克服一道又一道难题,我巩固了自己的知识,发现了自己的不足,进而提升了自己的能力。

该方案从整体出发,化整为零。

各个功能都是通过独立函数实现。

其中设计了信息录入,信息查询,信息修改,信息删除,信息保存,信息显示等功能。

方案的结构一目了然,便于用户操作。

经过在Microsoft Visual C++ 6.0中多次测试,结果均与预期相符。

加上该程序要求的平台不是很高,一般用户均可方便使用。

三.算法与数据结构<一>运用的数据类型有:int, char, file,.<二>主要功能模块的算法设计思路如下:1、添加信息函数(void Add(Link l))(1)定义指向结构体变量的指针;(2)移动指针,找到插入结点;(3)在要插入的结点输入信息;(4)调用保存函数,打开文件,保存输入信息。

2、修改信息函数(void Modify(Link l))(1)定义指向结构体变量的指针;(2)用指针检验链表中是否有记录,若没记录,返回主函数;(3)根据要修改的编号查找对应结点;(4)修改信息;(5)打开文件,保存修改记录。

3、删除信息函数(void Del(Link l))(1)定义指向结构体变量的指针;(2)用指针检验链表中是否有记录,若没记录,返回主函数;(3)根据要修改的编号查找要删除的结点;(4)修改链表,删除对应结点。

4、显示记录函数(void Disp(Link l))(1)打开文件;(2)用指针检验是否有记录;(3)若无记录,输出提示信息,返回主函数;若有记录,移动指针,依次输出记录;(4)关闭文件。

5、查询通讯录信息(void Find(Link l))(1)选择查询方式(按姓名、编号或地址);(2)输入查询关键字:(3)在链表中寻找相应结点;(4)调用输出函数,输出结点信息。

C语言程序设计通讯录管理系统

C语言程序设计通讯录管理系统

#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 10struct comm /*定义数据结构*/{char num[13]; /*学号*/char name[10]; /*姓名*/char sex[6]; /*性别*/int age; /*年龄*/char tel[11]; /*电话号码*/int year; /*入学年份*/}AddBook[N];int length=0,length1=0;int add;int *fp1=&add;int input_AddBook();void save_AddBook();int load_AddBook();int dele_AddBook();void inquire_AddBook();void revise_AddBook();void list_AddBook();int add_AddBook();void sort_AddBook();int main(){int choice;length1=load_AddBook();do{system("cls");printf("\n ***********通讯录管理系统************\n\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 ***********通讯录管理系统************\n\n"); printf(" 请选择:\n");scanf("%d",&choice);switch(choice){case 0: break;case 1: length=input_AddBook();break;case 2: revise_AddBook();break;case 3: length=dele_AddBook();break;case 4: inquire_AddBook();break;case 5: list_AddBook();break;case 6: length=add_AddBook();break;case 7: sort_AddBook();break;}}while(choice!=0);save_AddBook();system("pause");return 0;}/**********以下是保存文件函数*************/void save_AddBook(){FILE *fp;int i=0;if((fp=fopen("通讯录.txt","r"))==NULL){printf("can not open file\n");getchar();exit(0);}// fscanf(fp,"学号姓名性别年龄电话入学年份\n ");// printf(" 学号姓名性别年龄电话入学年份\n");do{fscanf(fp,"%s",AddBook[i].num);//printf("%-15s",AddBook[i].num);fscanf(fp,"%s",AddBook[i].name);//printf("%-10s",AddBook[i].name);fscanf(fp,"%s",AddBook[i].sex);//printf("%-6s",AddBook[i].sex);fscanf(fp,"%d",&AddBook[i].age);//printf("%-4d",AddBook[i].age);fscanf(fp,"%s",AddBook[i].tel);//printf("%-15s",AddBook[i].tel);fscanf(fp,"%d",&AddBook[i].year);//printf("%-4d\n",AddBook[i].year);i++;}while(i<length+length1);fclose(fp);if((fp=fopen("通讯录二进制数据.txt","w+"))==NULL){printf("can not open file.\n");getchar();exit(0);}for(i=0;i<length+length1;i++)fprintf(fp,"\n%-15s%-10s%-6s%-4d%-15s%-4d",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//fwrite(&AddBook[i],sizeof(struct comm),1,fp);fclose(fp);//保存初识记录数fp=fopen("num.txt","w+");if(fp==NULL){ printf("can't open the file.\n");exit(0);}fprintf(fp,"%d",length+length1);fclose(fp);printf("*********************保存完成*********************\n");printf("以上信息已保存完毕!\n");}/**********以下是读文件函数*************/{FILE *fp,*fp2;int i=0,a;char ch;//读出原始记录数目fp=fopen("num.txt","r+");if(fp==NULL){printf("can't open the file!\n");exit(0);}fscanf(fp,"%d",&a);fclose(fp);//读出原始数据if((fp=fopen("通讯录二进制数据.txt","r"))==NULL){printf("can not open file\n");getchar();exit(0);}if((fp2=fopen("通讯录.txt","w"))==NULL){printf("can not open file\n");getchar();exit(0);}printf(" 学号姓名性别年龄电话入学年份\n");// dofor(i=0;i<a;i++){//fread(&AddBook[i],sizeof(struct comm),1,fp);//printf("%d\n",i);fscanf(fp,"%s%s%s%d%s%d",&AddBook[i].num, &AddBook[i].name, &AddBook[i].sex,&AddBook[i].age, &AddBook[i].tel, &AddBook[i].year);printf(" %s %s %s %d %s %d\n",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//system("pause");fprintf(fp2,"%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//printf(" %-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddB ook[i].age,AddBook[i].tel,AddBook[i].year);}// i++;// }while(i<3);fclose(fp);fclose(fp2);printf("\n*************************读取完成*************************\n");printf("按任意键进入主菜单");getchar();return i;}/**********以下是删除信息函数*************/{FILE *fp;struct comm dele;int i=0,j=0,flag=0,a=0;char choice;do{system("cls");printf("************删除信息*************\n");printf("请输入您要删除的学生的学号:");scanf("%s",dele.num);for(i=0;i<length+length1;i++)if(strcmp(AddBook[i].num,dele.num) == 0)break;else{j++;if(j==length+length1)printf("您要删除的信息不存在!\n");}if((fp=fopen("通讯录.txt","wt"))==NULL){printf("Open file error");getchar();exit(0);}for(i=0;i<length+length1;i++)if(strcmp(AddBook[i].num,dele.num)!=0)fprintf(fp,"%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddBook [i].age,AddBook[i].tel,AddBook[i].year);a++;printf("\n 要继续吗?(Y/N)");choice=getchar();if (choice=='y'||choice=='Y'){printf("\n 继续!\n");flag=1;}elseflag=0;}while(flag==1);a=-a+1;fclose(fp);printf("\n***************删除完成**************");printf("%d",a);printf("\n 按任意键返回主菜单!");getchar();getchar();return a;}/**********以下是查找信息函数*************/void inquire_AddBook(){int choice;void inquire_name();void inquire_num();do{system("cls");printf("\n\n\n **********查询资料**********\n\n\n");printf(" 1.按姓名查询\n\n");printf(" 2.按学号查询\n\n");printf(" 0.退出查找系统\n\n");scanf("%d",&choice);switch(choice){ case 1: inquire_name();break; /* 为函数调用 */case 2: inquire_num();break; /* 同上 */case 0: break;}}while(choice!=0);getchar();}void inquire_name(){{ int i,choice,j=0;struct comm inquire;system("cls");printf("\n 请输入要查询的姓名:");scanf("%s",);for(i=0; i<length+length1; i++)if(strcmp(AddBook[i].name,)==0){printf(" 学号姓名性别年龄电话入学年份\n");printf("%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddBook[i]. age,AddBook[i].tel,AddBook[i].year);break;}else{j++;if(j==length+length1)printf("\n 查询信息不存在!");}getchar();getchar();}}void inquire_num(){{ int i,choice,j=0;struct comm inquire;system("cls");printf("\n 请输入要查询的学号:");scanf("%s",inquire.num);for(i=0;i<length+length1;i++)if(strcmp(AddBook[i].num,inquire.num)== 0){printf(" 学号姓名性别年龄电话入学年份\n");printf("%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddBook[i]. age,AddBook[i].tel,AddBook[i].year);break;}else{j++;if(j==length+length1)printf("\n 查询信息不存在!");}getchar();getchar();}}/**********以下是修改信息函数*************/void revise_AddBook(){struct comm revise;FILE *fp;int i=0,choice,flag;do{system("cls");printf("\n 输入要修改的学生学号:");scanf("%s",revise.num);for(i=0;i<length+length1;i++)if(strcmp(AddBook[i].num,revise.num)== 0){printf("\n ********************资料信息***********************\n");printf(" 学号姓名性别年龄电话入学年份\n");printf("%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddBook[i]. age,AddBook[i].tel,AddBook[i].year);printf("\n 您要修改哪一项?\n");printf("\n 0.修改完成\n");printf("\n 1.学号\n");printf("\n 2.姓名\n");printf("\n 3.性别\n");printf("\n 4.年龄\n");printf("\n 5.电话\n");printf("\n 6.入学年份\n");printf("\n 请选择:");scanf("%d",&choice);switch(choice){case 0: break;case 1: printf("\n 请输入修改后的学号:");scanf("%s",&AddBook[i].num);break;case 2: printf("\n 请输入修改后的姓名:");scanf("%s",&AddBook[i].name);break;case 3: printf("\n 请输入修改后的性别:");scanf("%s",&AddBook[i].sex);break;case 4: printf("\n 请输入修改后的年龄:");scanf("%d",&AddBook[i].age);break;case 5: printf("\n 请输入修改后的电话:");scanf("%s",&AddBook[i].tel);break;case 6: printf("\n 请输入修改后的入学年份:");scanf("%d",&AddBook[i].year);break;}break;}if(i==length+length1){printf("\n 无该资料!");getchar();}getchar();printf("\n\n 继续修改吗?(Y/N)");choice=getchar();if(choice=='Y'||choice=='y'){flag=1;printf("\n 继续!\n");}else{printf("修改后的信息为:\n");printf(" 学号姓名性别年龄电话入学年份\n");printf("%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddBook[i]. age,AddBook[i].tel,AddBook[i].year);flag=0;}}while(flag==1);if((fp=fopen("通讯录.txt","w"))==NULL){printf("Open file error");getchar();exit(0);}for(i=0;i<length+length1;i++)fprintf(fp,"%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);printf("\n 按任意键返回主菜单!");getchar();getchar();}/**********以下是显示信息函数*************/void list_AddBook(){FILE *fp;char ch;if((fp=fopen("通讯录.txt","r"))==NULL){printf("Open file error");system("pause");exit(0);}// rewind(fp);//ch=fgetc(fp);//while(ch!=EOF)//{// futchar(ch);//ch=fgetc(fp);//}int i=0;printf(" 学号姓名性别年龄电话入学年份\n");do{fscanf(fp,"%s%s%s%d%s%d",&AddBook[i].num, &AddBook[i].name, &AddBook[i].sex,&AddBook[i].age, &AddBook[i].tel, &AddBook[i].year);printf(" %s %s %s %d %s %d\n",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//system("pause");// fprintf(fp2,"%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num, AddBook[i].name,AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//printf(" %-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddB ook[i].age,AddBook[i].tel,AddBook[i].year);/*printf("%-15s",AddBook[i].num);printf("%-10s",AddBook[i].name);printf("%-6s",AddBook[i].sex);printf("%-4d",AddBook[i].age);printf("%-15s",AddBook[i].tel);printf("%-4d\n",AddBook[i].year);i++;*/i++;}while(i<length+length1);fclose(fp);printf("\n*************************显示完毕****************************");getchar();getchar();}/**********以下是增加信息函数*************/int add_AddBook(){FILE *fp,*fp2;int i,add1=0;if((fp=fopen("通讯录.txt","a"))==NULL){printf("Open file error");getchar();exit(0);}printf("请输入要增加的通讯录信息:");for(i=0;i<N;i++){printf("\n请输入学生姓名:(#->end)");scanf("%s",AddBook[i].name);if(AddBook[i].name[0]=='#')break;printf("\n请输入学生学号:");scanf("%s",AddBook[i].num);printf("\n请输入学生性别:");scanf("%s",AddBook[i].sex);printf("\n请输入学生年龄:");scanf("%d",&AddBook[i].age);printf("\n请输入学生联系方式:");scanf("%s",AddBook[i].tel);printf("\n请输入学生入学年份:");scanf("%d",&AddBook[i].year);}add1=i;for(i=0;i<add1;i++){fprintf(fp,"%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//fprintf(fp,"%c",10);/*fprintf(fp,"%-11s ",AddBook[i].num);fprintf(fp," %-10s",AddBook[i].name);fprintf(fp," %-8s",AddBook[i].sex);fprintf(fp," %-8d",AddBook[i].age);fprintf(fp," %-11s ",AddBook[i].tel);fprintf(fp," %-4d",AddBook[i].year);fprintf(fp,"%c",10); /*换行*/}fclose(fp);// printf("i+add=%d\n",i+add);system("pause");//return i+add;// add=i+*fp1;save_AddBook();getchar();return add1;}/**********以下是排序信息函数*************/void sort_AddBook(){FILE *fp;struct comm temp;int i,j;if((fp=fopen("通讯录.txt","rt"))==NULL){printf("Open file error");getchar();exit(0);}//fscanf(fp,"学号姓名性别年龄电话入学年份");//printf("学号姓名性别年龄电话入学年份 \n");for(i=0;i<length+length1;i++){fscanf(fp,"%s",AddBook[i].num);fscanf(fp,"%s",AddBook[i].name);fscanf(fp,"%s",AddBook[i].sex);fscanf(fp,"%d",&AddBook[i].age);fscanf(fp,"%s",AddBook[i].tel);fscanf(fp,"%d",&AddBook[i].year);}for(i=0;i<length+length1-1;i++)for(j=i+1;j<length+length1;j++)if(strcmp(AddBook[j].num,AddBook[i].num)<0){temp=AddBook[i];AddBook[i]=AddBook[j];AddBook[j]=temp;}printf("学号姓名性别年龄电话入学年份 \n"); for(i=0;i<length+length1;i++){printf("%-11s ",AddBook[i].num);printf("%-10s",AddBook[i].name);printf("%-8s",AddBook[i].sex);printf("%-8d",AddBook[i].age);printf("%-11s ",AddBook[i].tel);printf("%-4d",AddBook[i].year);printf("\n");}printf("\n*********************排序完成**********************\n");fclose(fp);system("pause");}/**********以下是输入信息函数*************/int input_AddBook(){int i;printf("\n 请输入通讯录信息: \n");for(i=0;i<N;i++){printf("\n请输入学生姓名:(#->end)");scanf("%s",AddBook[i].name);if(AddBook[i].name[0]=='#')break;printf("\n请输入学生学号:");scanf("%s",AddBook[i].num);printf("\n请输入学生性别:");scanf("%s",AddBook[i].sex);printf("\n请输入学生年龄:");scanf("%d",&AddBook[i].age);printf("\n请输入学生联系方式:");scanf("%s",AddBook[i].tel);printf("\n请输入学生入学年份:");scanf("%d",&AddBook[i].year);}return i;}。

c语言课程设计---手机通讯录管理系统

c语言课程设计---手机通讯录管理系统

中国地质大学本科生C语言课程论文报告课程名称C语言课程设计教师姓名本科生姓名本科生学号20101001298本科生专业应用化学所在院系材料与科学学院类别: 本科生日期: 2012年7月10日目录目录 (2)1.课程论文题目 (3)2.程序设计思路 (3)3.功能模块图 (4)4.数据结构设计 (12)5.算法设计 (17)6.程序代码 (29)7 程序运行结果 (34)8、编程中遇到的困难及解决方法 (41)9.总结心得及良好建议 (41)10.致谢 (41)1.课程论文题目(1)、题目名称:手机通讯录管理系统(2)、题目要求①录入人员的编号、姓名、个人邮箱、地址、联系电话。

②显示所有人员的信息。

③通过输入姓名查找人员信息。

④通过输入姓名查找到要删除的人员信息,然后可以进行删除,回显当前通讯录信息。

⑤通过输入姓名查找到要修改的人员信息,然后依次进行信息修改。

⑥添加人员信息。

2.程序设计思路分析整个系统,根据以上的需求分析及题目要求,可将整个系统的设计分为以下五个模块:保存信息,信息输入、录入比赛结果、查询信息、退出.(每个功能模块都标注函数名称,如图1)A、需求分析:根据题目要求应提供键盘式菜单实现功能选择,还应提供信息的输入操作,由于在程序中提供查询功能所以应有显示、查找等操作。

B、总体设计:根据上面的需求分析,可以将这个系统的设计分为1添加模块2显示模块3删除模块 4 查询模块 5 修改模块 6 保存模块。

C、数据结构:数据结构采用结构体数组,包括姓名,归属地,电话号码,邮箱四个结构3.功能模块图本系统设计的函数是由一个主函数几个子函数组成的。

首先构思大局编出一个主函数,然后根据要实现的功能逐步细分设计,分别解决输入、显示、查找、删除、修改,退出功能的子函数编程中遇到的问题。

首先通过结构体的定义,确定通讯录的项目和大小。

首先通过输入函数添加信息,然后再逐步编写和验证其它功能。

显示函数的设计利用C语言的循环功能依次输出信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3
根据上面的分析,可以将这个系统分为如下五大模块:
1.查看模块
2.增加模块
3.修改模块
4.删除模块
5.显示模块
系统功能模块图
4 详细设计
4.1
主函数一般要求设计得比较简洁,只提供输入、输出、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。把界面选择部分语句单独取出来作为一独立函数,目的在于系统实行完每部分功能后能够方便返回系统界面。主函数设计如下:
if(n==0) //是否有数据
{
puts("当前没有数据!");
free(tmp);
getch();
return ;
}
i=select();
if(msgbox("确定修改?"))
{
input(tmp);
con[i]=*tmp;
sort();
save(DATA,con);
free(tmp);
return;
}
i=select();
if(msgbox("确定删除?"))
{
con[i].name[0]=-1;
sort();
n--;
save(DATA,con);
return;
}
}
/**********************************************
删除模块
删除实现原理通过将数据的初始赋值为-1
default:
break;
}
}
else if(key==13) //获取回车键,确定输入
{
return cursor;
}
}
}
4.3公共函数
以下是在每个功能中都有可能用到的公共函数。
/**********************************************
确定函数
**********************************************/
C语言课程设计
名称:手机通信录管理系统
学院:材化学院
班级:031444
姓名:吴雪
指导老师:张冬梅
2015.12
1 题目要求
1.1要求
模拟手机通讯录管理系统,实现对手机中的通讯录进行管理。功能要求如下:
(1)查看功能:选择此功能时,列出下列三类选择。
①办公类
②个人类
③商务类
当选中某类时,显示出此类所有数据中的姓名和电话号码。
n++;
sort(); //排序
save(DATA,con);
free(tmp);
return;
}
void input(CONTACT *p)
{
int err=0,i;
do
{
err=0; //错误标志
system("cls");
puts("\n请输入姓名:\n");
scanf("%s",p->name);
puts("请输入电子邮件:\n");
scanf("%s",p->email);
for(i=0;i<n;i++) //检查重复
{
if(strcmp(p->name,con[i].name)==0||strcmp(p->tel,con[i].tel)==0)
{
err=1;
puts("重复数据,相同姓名或者相同的电话号码!");
int msgbox(char *msg)
{
char ch;
{
if(con[i].group==(key&~32))//取大写比较
{
printf("姓名:%-10s电话:%-15s\n",con[i].name,con[i].tel);
j++;
}
}
if(j)
printf("共找到%d个%s联系人\n",j,groupstr[(key&~32)-'A']);
else
正常字符串不出现-1;
经过比较均比-1小,在排序则将数据删除
**********************************************/
4
[需求分析]
该模块功能是:显示已存储的人的姓名,并提供选择,确定将返回其在结构体数组的位置。
流程图
程序
int select()
{
int i,cursor;
case '3':
modify();break;
case '4':
del();break;
case '0':
exit(0);break;
default:break;
}
}
}
4.2
4.2.1
(1)查看模块
[数据结构]
我们的原始数据只有一类,为个人通信录信息
[分析]
单独看各数据信息,姓名、电话号码、分类、电子邮件都是字符型,可以采用字符型数组。数据信息存放在文件中,一条记录对应一个人,既符合习惯又方便信息管理。现在要考虑的问题是:一个人的记录从文件中读出来后以什么形式存放?
printf("%s联系人暂时没有\n",groupstr[(key&~32)-'A']);
printf("请按任意键返回!");
getch();
break;
case '0':
return;break;
default:break;
}
}
}
4.2.2
[需求分析]
该模块:能录入新数据每个结点包括:姓名,电话号码,分类(办公类、个人类、商务类),电子邮件。当录入重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通讯录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。
(2)增加功能:能录入新数据。
一个结点包括:姓名、电话号码、分类(办公类、个人类、商务类)、电子邮件。例如:杨春
13589664454 商务类chuny@.
当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通讯录中超过15条
信息时,存储空间已满,不能再录入新数据:录入的数据能按递增的顺序自动进行条目编号。
流程图
YN
YN
程序
void add()
{
CONTACT *tmp=(CONTACT *)malloc(LEN);
if(n>MAX-1) //检测存储空间
{
puts("存储空间已满,不能再录入新数据");
free(tmp);
return;
}
input(tmp); //通过临时变量修改数据
con[n]=*tmp;
int key;
cursor=0; //游标初始化
while(1)
{
system("cls");
puts("请选择联系人并确定:");
for(i=0;i<n;i++)
{
if(cursor==i)
printf(" -->\t%s\n",con[i].name);
else
printf("\t%s\n",con[i].name);
n=0;
}
getch();
while(1)
{
//显示主界面
system("cls");
printf(
"**************************************************\n"
"\t\t手机通讯录管理系统\n"
"**************************************************\n"
getch();
break;
}
}
if(err!=1) //显示数据并确定
{
printf("姓名:%-10s电话:%-15s\n分类:%-10s电子邮件:%-30s",p->name,p->tel,groupstr[p->group-'A'],p->email);
err=1-msgbox("数据是否确定?");
"\n""\n"
"\t\t1.查看通讯录\n"
"\t\t2.新建联系人\n"
"\t\t3.修改联系人\n"
"\t\t4.删除联系人\n"
"\t\t0.离开系统\n"
"\n""\t\t\t\t\t\t\t\t\t\n"
"**************************************************\n"
puts("请输入电话号码:\n");
scanf("%s",p->tel);
//下面分类选择提供选择,直接键入就是选择.
puts("请选择分类:A办公类B个人类C商务类\n");
do
{
p->group=getch()&~32;
}
while(p->group!='A'&&p->group!='B'&&p->group!='C');
相关文档
最新文档