c语言通讯录管理系统

合集下载

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

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

通讯录管理系统课程设计c语言一、课程目标知识目标:1. 理解通讯录管理系统的基础概念,掌握C语言实现通讯录管理的核心功能;2. 学会使用结构体、数组、文件操作等C语言基础知识,实现数据的存储与读取;3. 掌握函数的定义与调用,能运用模块化编程思想设计通讯录管理系统。

技能目标:1. 能够运用所学知识独立设计并实现一个简单的通讯录管理系统;2. 培养良好的编程习惯,编写规范、可读性强的代码;3. 提高问题分析能力,通过编写程序解决实际问题。

情感态度价值观目标:1. 培养学生对C语言的兴趣,激发学习热情,树立编程自信心;2. 培养学生的团队协作意识,学会在团队中发挥个人优势,共同解决问题;3. 培养学生严谨、踏实的学术态度,养成勤奋思考、乐于探究的良好习惯。

课程性质:本课程为实践性较强的课程,旨在让学生通过实际操作,掌握C语言在通讯录管理系统中的应用。

学生特点:学生具备一定的C语言基础,对编程有一定了解,但实际操作能力有待提高。

教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,培养学生实际编程能力。

通过分解课程目标为具体学习成果,使学生在完成课程学习后,能独立设计并实现一个简单的通讯录管理系统。

二、教学内容1. 通讯录管理系统概述- 了解通讯录管理系统的基本功能与需求;- 掌握系统设计的基本流程与模块划分。

2. C语言基础知识回顾- 结构体、数组的使用;- 文件操作(读写、打开、关闭文件);- 函数的定义与调用。

3. 通讯录管理系统核心功能实现- 设计并实现数据结构存储通讯录信息;- 编写功能函数,包括增加、删除、修改和查询联系人;- 实现数据的持久化存储。

4. 系统测试与优化- 学习测试方法,对系统进行功能测试;- 分析测试结果,优化代码与算法。

5. 编程规范与团队协作- 学习编程规范,编写高质量的代码;- 了解团队协作的重要性,培养团队协作能力。

教学内容安排与进度:第1周:通讯录管理系统概述与需求分析;第2周:C语言基础知识回顾;第3周:设计数据结构与功能函数;第4周:实现通讯录管理系统核心功能;第5周:系统测试与优化;第6周:总结与团队协作。

C语言-通讯录管理系统

C语言-通讯录管理系统
int xz;
printf("--------------------\n");
printf(" 1.按学号查询\n");
printf(" 2.按姓名查询\n");
printf("--------------------\n");
printf("请选择: \n");
scanf("%d",&xz);
if (xห้องสมุดไป่ตู้==1){
i++;
printf("想继续创建吗?(1.是/0.不):");
scanf("%d",&j);
if (!j)
return i;
else
printf("恭喜你,创建成功!请继续创建!\n");
}
return i;
}
int add_record(int flag)
{ int i=flag,j;
for(i;;)
printf("%s,%s,%s,%s,%s,%s\n",data[i].num,data[i].name,data[i].birthday,data[i].post,data[i].phone);
printf(" ------------------------------\n");
return 0;
}
}
int menu_select()
{
int i;
printf(" ******************** \n");
printf(" Welcome! \n ");

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

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

通讯录管理系统c语言课程设计报告(一)通讯录管理系统C语言课程设计报告1. 简介通讯录管理系统是一款基于C语言开发的软件,旨在帮助用户方便地存储、查找、编辑和删除联系人信息。

本报告将对该系统的功能和设计进行详细介绍。

2. 系统功能通讯录管理系统具备以下主要功能:•添加联系人:用户可以输入联系人的姓名、电话号码、电子邮件等信息,并将其添加到通讯录中。

•查找联系人:用户可以根据姓名或电话号码等方式,快速查找通讯录中的联系人信息。

•编辑联系人:用户可以修改通讯录中已有联系人的信息,如电话号码、电子邮件等。

•删除联系人:用户可以从通讯录中删除特定联系人。

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

•退出系统:用户可以选择退出通讯录管理系统。

3. 系统设计数据结构通讯录管理系统主要使用以下数据结构存储联系人信息:•结构体:定义了一个联系人的数据结构,包括姓名、电话号码、电子邮件等字段。

•数组:用于存储多个联系人信息,构成通讯录。

数组的每个元素对应一个联系人的结构体。

主要函数添加联系人函数void addContact(struct Contact contacts[], int *num Contacts)•功能:向通讯录中添加一个联系人。

•输入参数:通讯录数组contacts、通讯录中联系人数量numContacts的指针。

•输出:无。

查找联系人函数void searchContact(struct Contact contacts[], int n umContacts)•功能:根据用户提供的关键词在通讯录中查找联系人。

•输入参数:通讯录数组contacts、通讯录中联系人数量numContacts。

•输出:无。

编辑联系人函数void editContact(struct Contact contacts[], int num Contacts)•功能:根据用户选择的联系人在通讯录中编辑联系人信息。

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

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

c语言通讯录管理系统课程设计一、课程目标知识目标:1. 理解C语言中数据结构的基本概念,掌握通讯录管理系统中链表的应用;2. 掌握C语言中文件操作的基本方法,实现对通讯录信息的存储和读取;3. 学会使用C语言编程解决实际问题,具备分析和设计简单通讯录管理系统的能力。

技能目标:1. 能够运用所学知识,设计并实现一个具备增加、删除、修改和查询功能的通讯录管理系统;2. 能够运用链表数据结构,实现通讯录信息的动态管理;3. 能够编写清晰的C语言代码,养成良好的编程习惯。

情感态度价值观目标:1. 培养学生的团队合作精神,提高沟通与协作能力;2. 激发学生对计算机编程的兴趣,培养自主学习和解决问题的能力;3. 引导学生认识到编程在解决实际问题中的应用价值,增强其学习责任感。

课程性质:本课程为实践性较强的课程,结合C语言编程知识,让学生通过实际操作,掌握通讯录管理系统的设计与实现。

学生特点:学生在本年级已具备一定的C语言基础,对数据结构有一定了解,但实际编程能力有待提高。

教学要求:教师需结合学生特点,采用任务驱动法,引导学生主动参与课堂,通过实践操作,提高学生的编程能力和解决实际问题的能力。

同时,注重培养学生的团队合作精神和自主学习能力。

在教学过程中,关注学生的情感态度价值观的培养,使其在学习过程中形成积极向上的心态。

二、教学内容1. 数据结构基础:复习C语言中的结构体和指针,引入链表的概念及其在通讯录管理系统中的应用。

- 教材章节:第三章 数据结构,第5节 链表。

- 内容安排:讲解链表的创建、插入、删除等基本操作。

2. 文件操作:介绍C语言中文件读写的基本方法,使学生能够将通讯录信息保存在文件中。

- 教材章节:第五章 文件,第2节 文件的读写。

- 内容安排:讲解fopen、fprintf、fscanf、fclose等文件操作函数的使用。

3. 通讯录管理系统功能设计:- 教材章节:实践项目——通讯录管理系统。

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

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

c语言课程设计 通讯录管理系统一、课程目标知识目标:1. 理解C语言中结构体的概念和使用方法,掌握利用结构体创建复杂数据结构的能力;2. 学会使用数组存储结构体数据,实现对通讯录信息的有效管理;3. 掌握基本的文件操作,能够实现通讯录数据的存储和读取。

技能目标:1. 能够运用结构体和数组设计并实现一个简单的通讯录管理系统;2. 掌握在C语言中进行简单的输入输出操作,实现用户界面的友好交互;3. 学会使用调试工具进行程序调试,提高解决问题的能力。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发其主动探索和创新的欲望;2. 培养学生的团队协作意识,学会在项目开发中与他人合作;3. 引导学生关注信息技术在生活中的应用,认识到编程对解决实际问题的重要性。

课程性质:本课程为实践性较强的课程,要求学生在掌握C语言基础知识的基础上,运用所学知识设计并实现一个通讯录管理系统。

学生特点:学生具备一定的C语言基础,对编程有一定的兴趣,但可能缺乏实际项目经验。

教学要求:通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高其编程能力和解决实际问题的能力。

将课程目标分解为具体的学习成果,以便在教学过程中进行有效指导和评估。

二、教学内容1. 结构体和结构体数组的概念及应用- 课本章节:第五章 结构体与共用体- 内容:结构体的定义、结构体成员的访问、结构体数组的创建与使用。

2. 文件操作基础- 课本章节:第六章 文件- 内容:文件的打开与关闭、文件的读写操作、文件的定位。

3. 通讯录管理系统设计- 内容:系统需求分析、功能模块划分、系统设计、实现与测试。

4. 用户界面设计- 内容:菜单设计、命令行用户输入输出、简单的人机交互流程。

5. 项目实践与团队协作- 内容:项目分组、任务分配、代码共享与协作、项目评审。

教学进度安排:第一周:复习结构体和结构体数组相关知识,讲解通讯录管理系统需求。

第二周:学习文件操作基础,设计通讯录数据存储与读取功能。

学生通讯录管理系统c语言编程

学生通讯录管理系统c语言编程

学生通讯录管理系统C语言编程简介学生通讯录管理系统是一个帮助学生管理通讯录信息的应用程序。

通过该系统,学生可以添加、删除、查询和修改通讯录中的联系人信息,从而更好地组织和管理自己的通讯录信息。

功能需求1. 添加联系人学生可以通过输入联系人的姓名、电话号码、邮箱等信息,将联系人添加到通讯录中。

2. 删除联系人学生可以根据联系人的姓名或电话号码,从通讯录中删除指定的联系人信息。

3. 查询联系人学生可以通过姓名或电话号码查询通讯录中的联系人信息,并将查询结果显示出来。

4. 修改联系人学生可以修改通讯录中指定联系人的信息,如电话号码、邮箱等。

技术实现通讯录管理系统将使用C语言进行编程实现。

以下是系统的基本设计思路:1. 数据结构设计通讯录信息可以用结构体来表示,包含联系人的姓名、电话号码、邮箱等字段。

struct Contact {char name[50];char phone[20];char email[50];};2. 功能模块划分•添加联系人模块:用于添加新的联系人信息。

•删除联系人模块:用于删除指定联系人信息。

•查询联系人模块:用于根据姓名或电话号码查询联系人信息。

•修改联系人模块:用于修改指定联系人的信息。

3. 用户界面设计系统将使用控制台界面,通过菜单来实现各个功能模块的调用。

开发步骤1. 定义数据结构首先定义联系人结构体,包含姓名、电话号码、邮箱等字段。

2. 实现功能模块分别实现添加联系人、删除联系人、查询联系人、修改联系人等功能模块的具体代码。

3. 编写主程序编写主程序,通过调用功能模块来实现整体通讯录管理系统的运行。

总结学生通讯录管理系统C语言编程是一个实用的项目,通过这个项目,学生可以熟练掌握C语言编程的基本知识,并且实践项目开发的流程。

通过不断调试和完善,学生可以提升自己的编程能力和项目实现能力。

希望学生能够在这个项目中学到更多的知识,提升自己的编程技能。

c语言通讯录管理系统

c语言通讯录管理系统

一课程设计要求1通讯录要求惯例的信息结构体成员有:姓名,单位,电话,家庭住址。

2程序菜单为:************************MEUN***************************0.Enter record /*输入记录*/1.List the file /*显示全部记录*/2.Search record on name /*查找记录*/3.display record on name /*按序号显示记录*/4.Delete a record /*删除记录*/5.add record /*增加记录*/6.sort by name /*按姓名排序*/7.Quit /*退出*/3定义多个子函数与菜单对应:/***********以下是函数原型************/int menu_Select(); /*主菜单函数*/void Init();/*单链表初始化*/void Create();/*创建单链表,输入记录*/void List (ADDRESS t[],int n); /*显示全部记录*/void SearchByName (ADDRESS t[],int n); /*按姓名查找*/int Delete (ADDRESS t[],int n); /*删除记录*/int Delete (ADDRESS t[],int n); /*删除记录*/int Add (ADDRESS t[],int n); /*插入记录*/void SearchByIndex (ADDRESS t[],int n); /*按序号查找显示序列 */ void Sort(ADDRESS t[],int n); /*按姓名排序*/二功能框图图2.1图2.2查询功能流程图图2.3删除功能流程图三主要功能的实现1 结构体由于使用静态数组需要预先估计记录数,所以先预定义一个常数M 表示记录,也就是数组的大小,记录联系人的信息至少应有姓名、单位、电话。

通讯录管理系统(C语言)

通讯录管理系统(C语言)

通讯录管理系统(C语⾔)/** 对通讯录进⾏插⼊、删除、排序、查找、单个显⽰功能*/#include <stdio.h>#include <malloc.h>#include <string.h>#include <stdlib.h>int n;typedef struct _Address_List{char name[30]; //名字char work[30]; //职业char handset[20]; //⼿机号码char email[30]; //电⼦邮件char address[30]; //地址struct _Address_List *next;}address_List;#define LEN sizeof(address_List)address_List *Release(address_List *head);//创建⼀个通讯录address_List *Create(void){address_List *head,*p1,*p2;char name[30];n = 0;p1 = (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;}else{p2->next = p1;}p2 = p1;printf("请输⼊姓名:");gets(name);if(strcmp(name,"0") == 0){break;}else{p1 = (address_List *)malloc(LEN);strcpy(p1->name,name);printf("请输⼊职业:");gets(p1->work);printf("请输⼊⼿机:");gets(p1->handset);printf("请输⼊电⼦邮件:");gets(p1->email);printf("请输⼊通讯地址:");gets(p1->address);}}return head;}else{return0;}}//打印整个通讯录void print(address_List *head){address_List *p;if(head != NULL){p = head;printf("本通讯录现在共有%d⼈;\n",n);printf("---姓名---------职业----------⼿机--------Email-------------通讯地址\n");printf("====================================================================\n");do{printf("=%s\t\t",p->name);printf("=%s\t\t",p->work);printf("=%s\t\t",p->handset);printf("=%s\t\t",p->email);printf("=%s\n",p->address);p = p->next;}while(p != NULL);printf("==================================================================\n"); }else{printf("通讯录为空,⽆法输出!\n");}}//在通讯录插⼊address_List *insert(address_List *head){address_List *p0,*p1,*p2;char name[20];p1 = head;printf("请输⼊增加的内容:\n");printf("请输⼊姓名:");gets(name);if(strcpy(name,"0") == 0){printf("姓名不能为0,增加失败!\n");return head;}else{p0 = (address_List *)malloc(LEN);strcpy(p0->name,name);printf("请输⼊职业:");gets(p1->work);printf("请输⼊⼿机:");gets(p1->handset);printf("请输⼊电⼦邮件:");gets(p1->email);printf("请输⼊通讯地址:");gets(p1->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{}p0->next = p1;}else{p1->next = p0;p0->next = NULL;}return head;}}}//删除通讯录中某个⼈address_List *delete_txl(address_List *head){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;}else{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;}}}//显⽰通讯录中某个⼈address_List *display(address_List *head){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=\t\t",p1->name);printf("=%s=\t\t",p1->work);printf("=%s=\t\t",p1->handset);printf("=%s=\n",p1->address);printf("====================================================================\n"); }p1 = p1->next;}if(m == 0){printf("此⼈不在通讯录中!\n");}return head;}//对通讯录进⾏排序操作address_List *Sort(address_List *head){address_List *p1,*p2;int i,j;typedef struct _Address_List1{char name[30]; //名字char work[30]; //职业char handset[20]; //⼿机号码char email[30]; //电⼦邮件char address[30]; //地址}address_List1;address_List1 Sort[200];address_List1 temp;if(head == NULL){printf("通讯录为空,⽆法排序!\n");return head;}p1 = head;for(i = 0;i < n,p1 != NULL; i++){strcpy(Sort[i].name,p1->name);strcpy(Sort[i].work,p1->work);strcpy(Sort[i].handset,p1->handset);strcpy(Sort[i].email,p1->email);strcpy(Sort[i].address,p1->address);p2 = p1;p1 = p1->next;}head = Release(head);for(j = 0; j < n-1; j++){for(i = j+1; i < n; i++){if(strcmp(Sort[i].name,Sort[j].name) < 0){Sort[i] = temp;temp = Sort[j];Sort[j] = temp;}}}p1 = (address_List *)malloc(LEN);p2 = p1;strcpy(p1->name,Sort[0].name);strcpy(p1->work,Sort[0].work);strcpy(p1->handset,Sort[0].handset);strcpy(p1->email,Sort[0].email);strcpy(p1->address,Sort[0].address);head = p1;for(i = 1; i < n; i++){p1 = (address_List *)malloc(LEN);strcpy(p1->name,Sort[i].name);strcpy(p1->work,Sort[i].work);strcpy(p1->handset,Sort[i].handset);strcpy(p1->email,Sort[i].email);strcpy(p1->address,Sort[i].address);p2->next = p1;p2 = p1;}p2->next = NULL;printf("按姓名排序后的结果是:\n");print(head);return head;}address_List *Search_name(address_List *head){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\t%s\t%s\t%s\t%s ++",p1->name,p1->work,p1->handset,p1->email,p1->address); printf("++++++++++++++++++++++++++++++++\n");}p1 = p1->next;if(m == 0){printf("你查找的姓名不在通讯录中!\n");}break;}return head;}//释放整个通讯录address_List *Release(address_List *head){address_List *p;while(head != NULL){p = head;head = head->next;free(p);}return head;}//保存(以⽂件的形式保存)void save(address_List *head){FILE *fp;address_List *p;char Filename[30]; //保存后的⽂件名if(head ==NULL){printf("待保存的通讯录为空,⽆法保存!\n");return ;}printf("请输⼊保存后的⽂件名:");gets(Filename);fp = fopen("Filename.txt","w");if(fp == NULL){printf("⽆法打开⽂件!\n");return ;}p = head;fprintf(fp,"姓名\t职业\t⼿机\tEmail\t地址\n");for(;p != NULL;){fprintf(fp,"姓名\t职业\t⼿机\tEmail\t地址",p->name,p->work,p->handset,p->email,p->address);p = p->next;}printf("保存完毕!\n");}//⽂件读出函数address_List *Load(address_List *head){FILE *fp;char Filename[30];address_List *p1,*p2;printf("请输⼊要输出的⽂件名:");gets(Filename);fp = fopen("Filename.txt","r");if(fp == NULL){printf("此通讯录不存在,⽆法输出!\n");return head;}else{head = Release(head);}p1 = (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 = (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);}//菜单选择函数address_List *menu(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_name(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;}//主函数int main(void){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 = Create();print(head);}else{head = Release(head);head = Create();print(head);}}break;case'2':{head = Sort(head);}break;case'3':{head = menu(head);}break;case'4':{save(head);print(head);}break;case'5':{head = Load(head);}break;case'6':{print(head);}break;case'7':{head = Release(head);}break;default:{printf("操作有误,此项不存在!\n"); }break;}if(strcmp(num,"7") == 0){break;}}return0;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言课程设计:通讯录管理系统目录一、需求分析 (2)二、概要设计 (2)三、详细设计 (3)四、上机操作 (14)五、实习心得 (19)六、源程序 (20)一、需求分析具有数据的插入、修改、删除、显示和查询功能的电话簿管理程序。

(1)数据包括:人名、工作单位、电话号码和E-MAIL地址。

(2)可对记录中的姓名和电话号码进行修改。

(3)可增加和删除记录。

(4)可显示所有的保存记录。

(5)可按人名或电话号码进行查询。

[提示]建议采用结构体数组和文件系统实现。

结构体成员包括人名、工作单位、电话号码和E-MAIL地址。

根据题目的要求程序应该采用结构体数组和文件系统实现。

应该有文件的操作功能;在程序中应该包括输入、显示、删除、查询、添加、修改、保存、加载和退出的功能。

二、概要设计根据上面的分析,可以将程序系统的设计分为如下几个模块:插入、显示、删除、查询、修改、保存和退出。

三、详细设计1、主函数;主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。

其中各功能模块用菜单方式选择。

流程图N【程序】int main() //主函数{Man man[500],*pman=man;;char control;int size;printf("\t\t**********************************************\n"); //窗口初始化printf("\t\t********** 欢迎使用通讯录管理系统! ***********\n");printf("\t\t*--------------------------------------------*\n");printf("\t\t* 请按回车键继续! *\n");printf("\t\t**********************************************\n");scanf("%c",&control);if(control){size=Scan(pman); //判断文件是否存在printf("\t\t\t请输入相应操作数操作\n");for(;;) //菜单生成{printf("\t\t**********************************************\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--修改信息*\n");printf("\t\t* 0--退出系统*\n");printf("\t\t**********************************************\n");scanf("%s",&control);switch(control){case '1': size=Insert(pman,size);break; //插入新的通讯录case '2': S_asname(pman,size);break; //按姓名查找case '3': S_astel(pman,size);break; //按电话查找case '4': Delete(pman,size);break; //删除信息case '5': Display(pman,size);break; //显示所有信息case '6': Modify(pman,size);break; //修改信息case '0': printf("**************谢谢使用!再见!**************\n"); //退出系统return 0;default: printf("**********输入数字有误,请重新输入**********\n");break;}}}return 0;}2、插入模块此模块为插入信息模块,插入后再调用保存函数来保存所插入的数据,支持多条信息的插入。

流程图【程序】int Insert(Man * pMan,int Size) //插入模块{int i,n;printf("\t\t***********请输入要插入数据的个数.************\n");printf("\t\t**********************************************\n");scanf("%d",&n);for(i=0;i<n;i++) //从键盘输入数据再写入文件{ printf("您将要录入第%d条记录(共有%d条)\n",i+1,n);printf("请输入姓名:\n");scanf("%s",&pMan[Size+i].Name);printf("请输入工作单位:\n");scanf("%s",&pMan[Size+i].Depart);printf("请输入电话号码:\n");scanf("%s",&pMan[Size+i].TEL);printf("请输入Email地址:\n");scanf("%s",&pMan[Size+i].Email);}if(Save(pMan,Size+n)){printf("\t\t*********** 恭喜!数据插入成功! ***********\n");}else{printf("\t\t*********** 操作失败,请稍后再试!***********\n");}return Size+n;}3、显示模块此模块为显示所有记录,流程图如下:【程序】void Display(Man * pMan,int Size) //显示所有记录{int i;printf("\t人名\t 工作单位\t 电话号码\t E-mail地址\n");printf("\t************************************************************\n");for(i=0;i<=Size;i++,pMan++)//依次输出文件中的信息{printf("\t%s\t\t%s\t%s\t%s\n",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);printf("\t-----------------------------------------------------------\n");}}4、查找模块本模块分为按姓名查找和按电话查找两个子模块。

4.1按姓名查找模块,流程图如下:【程序】void S_asname(Man * pMan,int Size) //查找信息{int i=0;char name[8];printf("\t\t***********请输入要查询信息的姓名:***********\n");printf("\t\t**********************************************\n");scanf("%s",name);while(i<Size&&strcmp(pMan->Name,name))//查找{pMan++;i++;}if(!strcmp(pMan->Name,name))//找到后输出{printf("\t\t***************查到的信息为:***************\n");printf("\t*************************************************************\n");printf("\t人名\t 工作单位\t 电话号码\t E-mail地址\n");printf("\t*************************************************************\n");printf("\t%s\t\t%s\t%s\t%s\n",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);printf("\t*************************************************************\n");}else{printf("\t\t***********抱歉,没有找到相关数据************\n");printf("\t\t**********************************************\n");}}4.2按电话查找模块,此模块与按姓名查找模块相似,流程图略。

【程序】void S_astel(Man * pMan,int Size) //按电话查找模块{int i=0;char tel[12];printf("\t\t***********请输入要查询信息的电话:************\n");printf("\t\t**********************************************\n");scanf("%s",tel);while(i<Size&&strcmp(pMan->TEL,tel)) //查找信息{pMan++;i++;}if(!strcmp(pMan->TEL,tel)) //输出找到的信息{printf("\t\t****************查到的信息为: ****************\n");printf("\t*******************************************************\n");printf("\t人名\t 工作单位\t 电话号码\t E-mail地址\n");printf("\t*******************************************************\n");printf("\t%s\t\t%s\t%s\t%s\n",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);printf("\t*******************************************************\n");}else{printf("\t\t************抱歉,没有找到相关数据************\n");printf("\t\t**********************************************\n");}}5、删除模块此模块先利用查找模块找到所要删除的信息,然后根据用户的选择来确定是否删除信息,此种调用到Save函数。

相关文档
最新文档