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语言实现电话簿管理系统

课程设计(论文)电话簿管理系统VER1.0报告书系别:计算机科学与技术系专业(班级):计算机科学与技术10级1班作者(学号):汪雨生(51002011037)指导教师:王磊(硕士)完成日期:2011年6月15日蚌埠学院教务处制目录摘要 (3)第一章前言 (4)第二章电话簿管理系统介绍 (5)2.1流程图 (5)2.2程序编写概要 (6)第三章主要功能实现 (7)3.1删除功能设计 (7)3.2添加功能设计 (7)第四章源程序 (9)第五章系统测试 (20)第六章结语 (25)致谢 (26)参考文献 (26)摘要电话簿管理系统是利用单链表实现电话簿管理,进而掌握C语言中的结构体、链表,指针、函数(系统函数,自定义函数)等C语言知识。

本文通过利用模块化程序设计思想,使用单链表和结构体等编写出的可以实现存储、打印、删除等功能的电话簿管理系统。

通过完成这个课程设计让我们熟悉并掌握在c语言中使用结构体、单链表,指针,函数,和模块化设计思想。

关键词结构体,链表,指针,函数第一章前言在前面我们学习了c语言的一些基础知识对c语言有了初步的认识和了解,为了让我们更加全面地了解c语言程序设计的步骤和方法,在老师的指导下我们进行了一次综合实训。

设计一个简单的电话簿管理系统,可以存储,删除等电话号码。

为了方便使用DEV-C++来编写程序,可以添加汉字备注方便理解程序。

根据前面所学的单链表、指针、函数、结构体等知识在使用模块化设计思想去编写。

设计“通讯录管理系统”使其具有数据插入、修改、删除、显示和查询等功能。

使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。

使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。

使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。

其功能包括以下各项:1)数据包括:人名、电话号码。

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. 掌握使用编程语言(如Python)实现简单数据结构,如列表、字典;3. 学会使用文件操作保存和读取通讯录信息。

技能目标:1. 能够运用所学知识设计并实现一个基本的通讯录管理系统;2. 掌握基本的程序调试技巧,提高解决问题的能力;3. 学会对程序进行优化,提高代码的可读性和可维护性。

情感态度价值观目标:1. 培养学生的团队协作精神,提高沟通与表达能力;2. 激发学生对编程的兴趣,鼓励创新思维和动手实践能力;3. 增强学生对信息技术的认识,培养其信息安全意识。

课程性质:本课程为实践性课程,注重培养学生的动手能力和实际操作技能。

学生特点:初中年级学生具有一定的信息技术基础,对新事物充满好奇,但编程经验有限。

教学要求:结合学生特点,以实际操作为主,注重引导和激发学生的学习兴趣,培养其解决问题的能力。

通过课程学习,使学生能够将所学知识运用到实际项目中,提高其信息技术素养。

教学过程中,将课程目标分解为具体的学习成果,以便进行教学设计和评估。

二、教学内容本章节教学内容依据课程目标,紧密结合教材,确保科学性和系统性。

具体安排如下:1. 理论知识学习:- 简介通讯录管理系统的作用和功能;- 数据结构基本概念:列表、字典的使用;- 文件操作:读写文件,保存和加载通讯录信息。

2. 实践操作:- 设计通讯录管理系统需求分析;- 编程实现通讯录管理系统功能模块:添加、删除、查询、修改联系人信息;- 调试与优化程序,提高系统稳定性。

3. 教学大纲:- 第一周:通讯录管理系统概述,学习数据结构基本概念;- 第二周:文件操作,编写通讯录管理系统的基础代码;- 第三周:完善通讯录管理系统,增加功能模块;- 第四周:调试与优化程序,进行项目展示与评价。

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

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

c 课程设计 通讯录管理系统一、课程目标知识目标:1. 让学生掌握通讯录管理系统的基础知识,包括系统结构、功能模块和数据存储方式。

2. 了解并运用编程语言(如Python)实现通讯录的增、删、改、查功能。

3. 学会运用算法和数据处理技巧优化通讯录管理系统的性能。

技能目标:1. 培养学生运用所学知识独立设计和编写通讯录管理系统的能力。

2. 提高学生的问题解决能力,能够针对实际需求调整和优化系统功能。

3. 培养学生的团队协作能力,学会在项目中进行有效沟通和分工。

情感态度价值观目标:1. 培养学生对信息技术课程的兴趣,激发学习热情。

2. 增强学生的自信心,让他们在完成项目的过程中感受到成就感。

3. 培养学生的责任心,使他们认识到技术对社会发展的积极作用,并关注信息安全问题。

课程性质:本课程为信息技术课程,旨在让学生通过实践操作,掌握通讯录管理系统的设计与实现方法。

学生特点:六年级学生已具备一定的计算机操作基础和编程能力,对新鲜事物充满好奇,喜欢挑战。

教学要求:结合学生特点,注重实践操作,鼓励学生独立思考和团队协作,提高解决问题的能力。

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

二、教学内容1. 系统分析与设计:- 理解通讯录管理系统的需求分析,明确系统功能。

- 学习UML类图、用例图等工具进行系统设计。

2. 数据存储结构:- 掌握使用数组、链表等数据结构存储通讯录信息。

- 分析不同存储结构的优缺点,选择合适的数据结构。

3. 编程语言实现:- 运用Python等编程语言编写系统功能代码。

- 掌握面向对象编程思想,实现类和对象的设计。

4. 功能模块实现:- 实现通讯录的增、删、改、查功能。

- 学习使用异常处理、文件操作等技术解决实际问题。

5. 系统优化:- 分析算法性能,优化查询速度。

- 掌握排序、查找等算法在通讯录管理系统中的应用。

6. 项目实战与团队协作:- 按照教学大纲,分阶段完成通讯录管理系统的开发。

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

C语言程序设计  手机通讯录管理系统
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通讯录管理系统课程设计

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

c 通讯录管理系统课程设计一、教学目标本课程旨在让学生了解和掌握通讯录管理系统的基本概念和设计方法,培养学生的实际动手能力和问题解决能力。

具体目标如下:知识目标:使学生了解通讯录管理系统的基本原理,掌握系统设计的基本流程和方法。

技能目标:培养学生使用编程语言实现通讯录管理系统的能力,提高学生的软件开发技能。

情感态度价值观目标:培养学生对计算机科学和编程的兴趣,激发学生的创新精神和团队合作意识。

二、教学内容本课程的教学内容主要包括以下几个部分:1.通讯录管理系统的基本概念:介绍通讯录管理系统的作用、特点和应用场景。

2.系统设计方法:讲解系统设计的基本流程,包括需求分析、系统设计、编码实现和测试等环节。

3.编程语言实践:通过具体案例,使学生掌握使用编程语言实现通讯录管理系统的方法。

4.团队协作与创新:培养学生在团队协作中解决问题的能力,激发学生的创新精神和团队合作意识。

三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学:1.讲授法:讲解通讯录管理系统的基本概念和设计方法。

2.案例分析法:分析实际案例,使学生更好地理解通讯录管理系统的设计和实现过程。

3.实验法:让学生动手实践,实际操作通讯录管理系统的设计和编程。

4.小组讨论法:鼓励学生进行团队协作,共同解决问题,培养学生的团队合作能力。

四、教学资源为了保证教学效果,我们将提供丰富多样的教学资源:1.教材:选用权威、实用的教材,为学生提供系统、全面的学习资料。

2.参考书:提供相关的参考书籍,丰富学生的知识体系。

3.多媒体资料:制作精美的PPT,生动形象地展示课程内容。

4.实验设备:提供充足的实验设备,确保每个学生都能动手实践。

5.在线资源:推荐相关的在线课程和论坛,方便学生随时随地学习、交流。

五、教学评估为了全面、公正地评估学生的学习成果,本课程将采用多种评估方式相结合的方法:1.平时表现:通过课堂参与、提问、讨论等方式,评估学生的学习态度和积极性。

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

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

puts("\t\t*******************3.修
改*******************");
puts("\t\t*******************4.删
除*******************");
puts("\t\t*******************5.浏
览*******************");
printf_n(n);
沈阳大学
课程设计说明书
printf("\t 共有 %d 记录.\n",n); printf("\nPress any key to back..."); getchar(); menu(); }
No 8
void search() { int w0,k,i,n,w1,w2; struct people s; n=load();
do {printf("请选择查找类别: 1).姓名 2).电话号码 [ ]\b\b"); scanf("%d",&w1); if(w1<1||w1>2) {printf("输入错误!请重新输入!\n"); w2=1;} }while(w2==1); if(w1==1) {do
case 3: modify(); break;
case 4: deleter(); break;
case 5: browse(); break;
case 6: search(); break;
case 7: exit(0);
}
}
void search();
void enter() { int i,n;

南航c语言课程设计报告——电话簿管理系统

南航c语言课程设计报告——电话簿管理系统

电话簿管理系统一.程序功能:电话簿管理系统要求实现一个电话薄系统的基本管理功能,包括录入、删除、查找、和导入/导出功能等。

1.创建电话簿;2.#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<string.h>struct telebook{ char num[4];char name[10];char phonenum[15];char email[20];struct telebook *next;};typedef struct telebook TeleBook;int menu_select();TeleBook *s;TeleBook *Create();void Display(TeleBook *head);TeleBook *Insert(TeleBook *head,TeleBook *s);TeleBook *Insert_a_record(TeleBook *head);TeleBook *Delete(TeleBook *head,char *num);TeleBook *Delete_a_record(TeleBook *head);TeleBook *Query(TeleBook *head,char *num);void Query_a_record(TeleBook *head);TeleBook *AddfromText(TeleBook *head,char *filename);void WritertoText(TeleBook *head,char *filename);void Quit(TeleBook *head);TeleBook *DeleteSame(TeleBook *head);int menu_select(){ char c;do {system("cls");printf("1. Create List\n");printf("2. Display All Record\n");printf("3. Insert a Reacord\n");printf("4. Delete a Reacord\n");printf("5. Query\n");printf("6. Add Records from a Text File\n");printf("7. Write to a Text File\n");printf("8. Delete the Same Record\n");printf("0. Quit\n");printf("Give your choice (0-8):\n");c=getchar();}while(c<'0'||c>'8');return(c-'0');}TeleBook *Create(){ TeleBook *s,*head=NULL;char c='Y';printf("create an increasing list...\n");printf("please input num,name,phonenum,email\n");while(c=='Y'||c=='y'){ s=(TeleBook *) malloc(sizeof(TeleBook));system("pause");gets(s->num);gets(s->name);gets(s->phonenum);gets(s->email);head=Insert(head,s);printf("Do you want to continue to input :(Y/N)?\n");c=getchar();}return(head);}void Display(TeleBook *head){ TeleBook *p;int i=0;p=head;printf("output list: \n ");printf("num\tname\tphonenum\temail\n");while(p!=NULL){ printf("%s\t%s\t%s\t%s\n",p->num,p->name,p->phonenum,p->email);p=p->next;if(++i%10==0){ printf("\n");system("pause");system("cls");}}}TeleBook *Insert(TeleBook *head,TeleBook *s) { TeleBook *p1,*p2;if(head==NULL){ head=s;s->next=NULL;return(head);}p2=p1=head;while(strcmp(s->num,p1->num)>0 && p1->next!=NULL){ p2=p1; p1=p1->next; }if(strcmp(s->num,p1->num)<=0){ s->next=p1;if(head==p1) head=s;else p2->next=s;}else {p1->next=s;s->next=NULL;}return(head);}TeleBook *Insert_a_record(TeleBook *head){ TeleBook *p;p=(TeleBook *) malloc(sizeof(TeleBook));printf("Please input the new Num,Name,Phonenum,Email\n");getchar();gets(p->num);gets(p->name);gets(p->phonenum);gets(p->email);head=Insert(head,p);printf("Insert success!!\n");printf("%s\n%s\n%s\n%s\n",p->num,p->name,p->phone num,p->email);return(head);}TeleBook *Delete(TeleBook *head,char *num){ TeleBook *p1,*p2;if(head==NULL){ printf("List is null\n" );return(NULL);}p1=head;while(strcmp(p1->num,num)!=0 && p1->next!=NULL){ p2=p1;p1=p1->next;}if(strcmp(p1->num,num)==0){ if(p1==head) head=p1->next;else p2->next=p1->next;printf("The num %s is deleted.\n",p1->num);free(p1);}elseprintf("The num %s is not found.\n",num);return(head);}TeleBook *Delete_a_record(TeleBook *head) { char c;char num[20];printf("Do you want to delete?(y/n)\n");getchar();c=getchar();if(c=='y'||c=='Y')printf("please input num=\n");getchar();gets(num);head=Delete(head,num);printf("delete success!\n");return(head);}TeleBook *Query(TeleBook *head,char *num) { TeleBook *p;p=(TeleBook *) malloc(sizeof(TeleBook));p=head;while(p!=NULL){ if(strcmp(p->num,num)==0) return(p);p=p->next;}return(NULL);}void Query_a_record(TeleBook *head){ char num[10];TeleBook *p;p=(TeleBook *) malloc(sizeof(TeleBook));printf("Please input the num you want to search\n");getchar();gets(num);p=Query(head,num);if(p==NULL) printf("Fail!\n");else{ printf("Search Success!\n");printf("Num:%s\nName:%s\nPhonenum:%s\nEmail:%s\ n",p->num,p->name,p->phonenum,p->email);}}TeleBook *AddfromText(TeleBook *head,char *filename){ FILE *fp;printf("Please input the filename you want.....\n");getchar();gets(filename);fp=fopen(filename,"r");if(fp==NULL){ printf("Can't open the file!\n");getchar();exit(1); }while(feof(fp)==0){ TeleBook *s;s=(TeleBook *) malloc(sizeof(TeleBook));fscanf(fp,"%s%s%s%s",s->num,s->name,s->phonenum,s ->email);head=Insert(head,s);}fclose(fp);printf("Add success\n");return(head);}void WritertoText(TeleBook *head,char *filename){ TeleBook *p;FILE *fp;printf("Please input the filename you want to output.....\n");getchar();gets(filename);if((fp=fopen(filename,"w"))==NULL){ printf("Can't open ");exit(0);}p=head;printf("Output list:\n");while(p!=NULL){ fprintf(fp,"%s\t%s\t%s\t%s\n",p->num,p->name,p->p honenum,p->email);p=p->next;}fclose(fp);printf("Write Successful!\n");}void Quit(TeleBook *head){ TeleBook *p;char c;printf("Do you want to exit? (Y or N)\n");getchar();c=getchar();if(c=='Y'||c=='y'){ while(head!=NULL){ p=head;head=head->next;free(p);}}}TeleBook *DeleteSame(TeleBook *head) { TeleBook *p;TeleBook *p1,*p2;if(head==NULL){ printf("List is null\n");return(NULL);}for(p=head;p!=NULL;p=p->next)for(p2=p,p1=p->next;p1!=NULL;p2=p1,p1=p1->next) {if(strcmp(p->name,p1->name)==0&&strcmp(p->phonenu m,p1->phonenum)==0&&strcmp(p->email,p1->email)= =0){ p2->next=p1->next;free(p1);printf("Delete Success\n");}}return(head);}void main() { TeleBook *head=NULL;printf("\t ******TeleBook*******\n");for(;;){ switch(menu_select()){case 1:printf("\tCreate List\n");head=Create();system("pause");break;case 2:printf("\tDisplay All Record\n");Display(head);system("pause");break;case 3:printf("\tInsert a Reacord\n");head=Insert_a_record(head);system("pause");break;case 4:printf("\tDelete a Reacord\n");head=Delete_a_record(head);system("pause");break;case 5:printf("\tQuery\n");Query_a_record(head);system("pause");break;case 6:printf("\tAdd Records from a Text File\n"); head=AddfromText(head,"filename");system("pause");break;case 7:printf("\tWrite to a Text File\n"); WritertoText(head,"filename"); system("pause");break;case 8:printf("\tDelete the Same Record\n"); head=DeleteSame(head);system("pause");break;case 0:printf("Goodbye!\n");Quit(head);system("pause");exit(0); }}}。

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 课程设计一、课程目标知识目标:1. 学生能够理解电话簿的基本概念,掌握电话簿的信息结构和管理方法。

2. 学生能够运用所学知识,使用编程语言实现电话簿的基本功能,如增加、删除、查找和修改联系人信息。

3. 学生能够了解数据存储的概念,并运用文件操作实现电话簿数据的持久化。

技能目标:1. 学生能够运用编程语言进行电话簿管理系统的设计与开发,提高编程实践能力。

2. 学生能够运用调试工具解决编程过程中的问题,提高问题解决能力。

3. 学生能够运用所学知识,进行团队协作,共同完成电话簿管理项目的开发。

情感态度价值观目标:1. 学生通过电话簿管理项目,培养对计算机编程的兴趣和热情,增强学习动力。

2. 学生在项目开发过程中,培养团队协作精神,提高沟通与交流能力。

3. 学生能够认识到编程在生活中的应用,理解编程对解决实际问题的价值。

本课程针对高年级学生,结合学科特点和教学要求,注重知识与实践相结合,提高学生的编程能力和问题解决能力。

课程目标具体、可衡量,旨在帮助学生明确学习成果,为教学设计和评估提供依据。

二、教学内容本章节教学内容主要包括以下几部分:1. 电话簿基本概念:电话簿的数据结构、功能特点及其在现实生活中的应用。

2. 编程语言基础:复习巩固与电话簿管理相关的基础语法,如变量、数据类型、控制结构等。

3. 电话簿管理系统功能设计:- 增加联系人:学习输入、输出语句,实现添加联系人信息的功能。

- 删除联系人:学习条件语句,实现根据条件删除联系人信息的功能。

- 查找联系人:学习循环语句,实现查找并显示联系人信息的功能。

- 修改联系人:学习数组操作,实现修改联系人信息的功能。

4. 数据存储与文件操作:学习文件操作,实现电话簿数据的持久化存储。

5. 项目实践:以小组形式,完成一个完整的电话簿管理系统的设计与开发。

教学内容按照以下进度安排:1. 电话簿基本概念及编程语言基础复习(1课时)2. 电话簿管理系统功能设计(2课时)3. 数据存储与文件操作(1课时)4. 项目实践(4课时)教学内容与教材章节关联,以教材中相关章节为基础,结合课程目标进行拓展和深入,确保学生掌握电话簿管理系统的核心知识和技能。

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语言课设--电话簿管理系统解读

高级语言课程设计任务书及说明书设计题目电话簿管理系统学院计算机与通信学院专业、年级通信工程1班学生杨智刚学号 ____ 1416530101_ 指导教师时间 2015 年春季学期目录1 摘要 (3)2 前言 (4)3 正文 (5)3.1系统分析3.2系统总体设计3.3详细设计3.4系统测试4 参考文献 (16)5 总结 (17)附录: 程序源代码本次课程设计采用C语言,开发了一个基本的电话簿管理系统,该系统具备了按联系人姓名查找并输出联系人信息,按联系人姓名查找并删除数据,输出全部联系人信息数据,对联系人的管理也可以更加方便快捷。

关键词:C语言;课程设计;电话簿管理系统随着交际能力的广泛性的提高,朋友的数量逐渐增多,但是在联系人管理方面总是出现联系人姓名、年龄等出现错误的诸多问题。

本文针对上述问题,采用软件工程的开发原理,根据软件流程过程规范,按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个电话簿管理系统。

采用c语言作为开发工具,设计了这个电话簿管理系统,解决了联系人信息管理中存在的数据安全性、数据一致性等问题。

3.1 系统分析3.3.1.设计要求该设计要求以方便查找和管理联系人为背景,设计、开发一套“电话簿管理系统”软件。

通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,针对c语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。

得到软件工程的综合训练,提高解决实际问题的能力。

3.3.2设计任务1、以电话簿管理业务为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型;2、完成软件结构设计和算法设计;3、完成系统的软件开发和测试工作联系人信息包括:姓名,年龄,性别,电话等。

设计“电话簿管理系统”,使之能提供以下功能:1.系统以菜单方式工作;2.联系人信息录入功能;3.联系人信息浏览功能;4.查询功能:按姓名查询;5.联系人信息的删除与修改。

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语⾔完成了⼀个关于个⼈通讯录管理系统的课题,主要是关于联系⼈的添加、查找、删除、修改、输出以及⽂件的写⼊与读出,还有⼀个甜点功能—模拟通话,它的实现原理也很容易理解,⽂章末尾会介绍到。

主框架:1、函数声明关于这⾥的函数声明,主要是为了可以清楚的了解整个系统的功能,这⾥不做过多介绍。

还有结构体链表的创建,贯穿了各个功能代码部分,必不可少。

2、联系⼈的添加这部分主要涉及联系⼈的姓名、地址、电话、QQ号和邮箱(当然需要其他功能可⾃⾏添加),考虑到数组操作不便前提下,使⽤链表的尾插法,通过不断开创新的结点,然后不断将新的结点的地址指向尾结点,使尾结点不断后移,⽽新创的结点时按照添加的先后顺序进⾏连接(参考下图可快速理解,此图⽚来源于⽹络),当然其中某些项的条件限制也是必不可少的。

⽐如:电话、QQ号、邮箱int Addpeo() //添加联系⼈{int t,n,a;char flag='y'; //仅作为第⼀次执⾏条件ptcs p=head,q;while(flag!='n'&&flag!='N') //判断是否继续添加{q=(ptcs)malloc(sizeof(pcs)); //申请内存p->next=q; //赋予下⼀个节点p=q;q->next=NULL; //尾结点地址赋空值,尾插法printf("\n\t请输⼊:\n");printf("\t\t姓名:");scanf("\t\t%s",q->);printf("\t\t地址:");scanf("\t\t%s",q->chat.add);printf("\t\t⼿机号:");scanf("\t\t%s",q->chat.tel);do{n=0; //仅做记录if(strlen(q->chat.tel)!=11) //计算⼿机号的长度,判断是否输⼊规范 {n=1;printf("\t\t您输⼊的⼿机号格式不存在,请重新输⼊:");scanf("\t\t%s",q->chat.tel);}else{for(t=0;t<11;t++){if(q->chat.tel[t]<'0'||q->chat.tel[t]>'9'){n=1;printf("\t\t您输⼊的⼿机号格式不合理,请重新输⼊:");scanf("\t\t%s",q->chat.tel);break;}}}}while(n);//输⼊QQ号printf("\t\tQQ号:");scanf("\t\t%s",q->chat.tecent);do{n=0;if(strlen(q->chat.tecent)>10) //以10位QQ号为准,判断是否符合规范 {n=1;printf("\t\t您输⼊的QQ号格式不存在,请重新输⼊:");scanf("\t\t%s",q->chat.tecent);}else{for(t=0;t<10;t++){if(q->chat.tecent[t]<'0'||q->chat.tecent[t]>'9'){n=1;printf("\t\t您输⼊的QQ号格式不合理,请重新输⼊:");scanf("\t\t%s",q->chat.tecent);break;}}}}while(n);//输⼊邮箱printf("\t\tEmail:");scanf("\t\t%s",q->chat.email);do{//判断邮箱 @符号输⼊规范(这⾥不限定邮箱号码位数)a=0;for(t=0;q->chat.email[t]!='\0';t++){if(q->chat.email[t]=='@')a++; //@数为1}if(a!=1){printf("\t\t输⼊的邮箱格式不合理,请重新输⼊:");scanf("\t\t%s",q->chat.email);}}while(a!=1); //是否输⼊@ ,为1则终⽌循环printf("\n\t是否继续添加?(Y/N)");scanf("\t%c",&flag);}return 0;}3、联系⼈的查询这步使⽤的是遍历查询,共设置了三种⽅式,在定义链表指针的前提下,通过遍历链表进⾏信息的对⽐,从⽽判断联系⼈是否存在,如果存在就直接显⽰给⽤户,不存在就直接退回功能选项。

C语言 电话簿管理系统 VC++6.0运行通过

C语言 电话簿管理系统  VC++6.0运行通过

/*********************电话簿管理系统*********************///the telephon management system//created by tengzhenfang//data:2010.12.24/*******************************************************/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>/*****预定义*********************************/#define HEADER1 "-------------------TELEPHONE BOOK-------------------------\n"#define HEADER2 "| num | name | phonenumber | address |\n" #define HEADER3 "|---------|-----------|----------------|-------------------|\n"#define FORMAT " %-10s | %-10s | %-15s | %-20s |\n"#define DATA p->num,p->name,p->phonenum,p->address#define END "----------------------------------------------------------------\n"#define N 100/*************定义全局变量***********************/int saveflag=0; //是否需要存盘的标志变量/******定义系统的数据结构---电话簿相关信息组成的结构体***********/typedef struct telebook{int num; //编号char name[15]; //姓名char phonenum[15]; //电话号码char address[20]; //地址}TELEBOOK;/*********用户自定义函数原型说明*************************/void menu();void Disp(TELEBOOK temp[],int n);void Wrong();int Add(TELEBOOK temp[],int n);void Qur(TELEBOOK temp[],int n);int Del(TELEBOOK temp[],int n);void Modify(TELEBOOK temp[],int n);int Insert(TELEBOOK temp[],int n);void SelectSort(TELEBOOK temp[],int n);void Save(TELEBOOK temp[],int n);/**********************主函数******************************/void main(){TELEBOOK tele[N]; //定义了N条电话簿记录FILE *fp; //定义文件指针int select; //保存选择结果变量char ch; //保存(y,Y,n,N)int count=0;fp=fopen(".\\telephonebook4.dat","ab+");//以追加方式打开二进制文件c:\telephonebook4.data,可读可写,若此文件不存在,则会自动创建此文件if(fp==NULL){printf("\n=====>can not open file!\n");exit(0); //程序退出函数,exit(0)为正常退出,在头文件stdlib.h 里}while(!feof(fp)){if(fread(&tele[count],sizeof(TELEBOOK),1,fp)==1) //一次从文件读取一条电话簿记录count++;}fclose(fp); //关闭文件printf("\n==>open file success,the total records number is :%d.\n",count);getchar();// menu();while(1){system("cls");menu();printf("\n Please Enter your choice(0~9):");scanf("%d",&select);if(select==0){if(saveflag==1) //对数组的数据有修改且未存盘{fflush(stdin);getchar();printf("\n==>Whether save the modified record to file?(y/n):");scanf("%c",&ch);if(ch=='y'||ch=='Y')Save(tele,count); //保存记录至文件}printf("\n===>thank you for useness!");fflush(stdin);getchar();break;}switch(select){case 1:count=Add(tele,count); //增加电话簿记录break;case 2:system("cls");Disp(tele,count); //显示电话簿记录break;case 3:count=Del(tele,count); //删除电话簿记录break;case 4:Qur(tele,count); //查询电话簿记录break;case 5:Modify(tele,count); //修改电话簿记录break;case 6:count=Insert(tele,count); //插入电话簿记录break;case 7:SelectSort(tele,count); //排序电话簿记录break;case 8:Save(tele,count); //保存电话簿记录break;default:Wrong();fflush(stdin);getchar(); //按键有误,必须为数值0~9break;}}}/****************主菜单界面********************************///用户进入电话簿管理系统时,需要显示主菜单,提示用户进行选择,完成相应任务。

大一C语言电话簿管理系统

大一C语言电话簿管理系统

电话簿管理系统目录一、设计目的 (2)二、项目设计的内容 (2)三、项目设计的要求与数据 (2)四、项目设计应完成的工作 (3)五、总体设计(包含几大功能) (4)六、详细设计(各功能的具体实现算法) (4)七、测试分析(包含各功能的测试用例,及测试结果).. 5八、总结 (13)1、设计目的进一步加深理解《C语言程序设计》,通过此次作业,对本学期所学的内容有一个更深的理解,将所学知识融会贯通,进一步培养自己对综合问题的分析和解决实际问题的能力。

掌握利用所学知识编写简单程序的技巧,提升自己的实践能力,理论知识等。

2、项目设计的内容对用户的信息(包括姓名、电话)进行管理,包括对用户姓名电话的增加、查找、修改、删除、导出用户信息为txt文件、显示所有用户信息的操作。

假设,收集到若干人的姓名电话信息,要求编写一个可以实现上述操作的C语言程序。

学习相关开发软件,熟悉建设工程的过程。

3、项目设计的要求与数据1.用C语言实现程序。

2.对用户信息(姓名、电话号码)进行管理,包括用户信息的增加、查找、修改、删除、导出、显示操作。

3.各个功能的说明(1)增加用户信息功能:增加后保存至文件,可一次性增加若干条用户信息。

(2)查找用户信息功能:完成按姓名查找电话号码的操作并显示。

(3)修改用户信息功能:通过对姓名进行查找并修改的操作。

(4)删除用户信息功能:删除指定信息的功能。

(5)导出用户信息功能:保存当前所有用户信息为文本文件。

(6)显示用户信息功能:显示出当前所保存的所有用户信息。

4、项目设计应完成的工作(1)编写算法;(2)算法测试,并有具体的测试结果和结果分析;(3)撰写项目设计报告。

内容包括:1)封面扉页2)设计任务书3)目录4)总体设计方案5)使用说明及运行实例(包括界面)6)成员设计内容简介7)项目源程序代码(注意注释的使用)8)指导教师评语5、总体设计(包含几大功能)1.用户信息增加功能2.用户信息查找功能3.用户信息修改功能4.用户信息删除功能5.用户信息显示功能6.用户信息导出功能7.清屏6、详细设计(各功能的具体实现算法)1.输入用户信息功能:输入信息包括姓名、电话号码相关信息;可用函数void shuru()实现。

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

电话簿管理系统一、课程设计题目:电话簿管理系统二、目的与要求:1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

2、基本要求:(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;(4)在系统的设计中,至少要用到面向对象的一种机制。

3、创新要求:在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。

4、写出设计说明书三、设计方法和基本原理:1、问题描述(功能要求):电话簿记录按姓名排序存放,显示时每屏不超过20个记录,超过时分屏显示。

增加记录修改功能,能选择修改用户的姓名、电话,在修改或删除之前需要用户进一步确认,确认无误后再进行操作。

增加录入时间的显示及存储。

增加默认的查询方式,即查询时只输入姓名的首字母,所有符合这一条件的电话资料均在屏幕上显示。

2、问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤:(1)分析系统中的各个实体之间的关系及其属性和行为;(2)根据问题描述,设计系统的类层次;(3)完成类层次中各个类的描述(包括属性和方法);(4)完成类中各个成员函数的定义;(5)完成系统的应用模块;(7)完成系统总结报告以及系统使用说明书。

1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

2、基本要求:(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;(4)在系统的设计中,至少要用到面向对象的一种机制。

2.编程体会:电话簿管理程序较长,算法比较复杂,调试的过程中遇到了各种各样的问题。

各种各样的小错误寻找起来十分困难。

在今后编写程序时应当随编随找错。

不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。

可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。

后来慢慢的接触多了,听老师讲的多了,了解多了,渐渐的产生了兴趣。

课设让我们把这一学期所学的C++知识得到了很好的应用,开拓了我们的思路,所谓温故而而知新,这次课设也让我们对以前的知识有了一个全面的回顾,加深了对已学知识的理解。

课设过程艰辛,花费时间很长,需要很强的耐力和信心。

而这也是对我们的一次考验,养成了坚持不懈和吃苦耐劳的精神。

通过这次课程设计的实训,增加了我学习软件技术的兴趣,虽然还不明确软件技术包含的具体内容,但从C++语言这门课程开始,已发现程序设计的乐趣,在学习C++语言的过程中也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。

在实际操作过程中犯的一些错误还会有意外的收获,感觉实训很有意思。

在具体操作中出,在以后的上机中应更加注意,同时体会到C++语言具有的语句简洁,使用灵活,执行效率高等特点。

发现上机实训的重要作用,特别是对数组和循环有了深刻的理解。

通过实际操作,学会C++语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。

深刻体会到“没有做不到的,只有想不到的”,“团结就是力量”,“实践是检验真理的标准”,“不耻下问”……的寓意。

计时在此希望以后应多进行这样的实训,加长设间,培养学生独立思考问题的能力,提高实际操作水平。

总之,C++课设让我们学到了很多,也收获了很多,这必将成为我人生中的一个深刻的回忆。

附件:#include<iostream>#include<string>#include<iomanip>#include<fstream>using namespace std; //用命名空间std中的定义int count=0;class CData{public:CData(){};virtual int Compare(CData &,int)=0;virtual void Show()=0;virtual ~CData(){};};class CNode //定义数据基类{private:CData *pData;CNode *pNext;public:CNode(){pData=0;pNext=0;}; //节点构造函数CNode(CNode &node){pData=node.pData;pNext=node.pNext;}void InputData(CData *pdata){pData=pdata;}void ShowNode(){pData->Show();}CData *GetData(){return pData;}friend class CList;}; //定义链表类为友元类class CList{CNode *pHead;CList(){pHead=0;};~CList(){DeleteList();}void AddNode(CNode *pnode);CNode *DeleteNode(CNode *);CNode *LookUp(CData &);bool LookUpF(CData &);void ShowList(); //打印整个链表void DeleteList();CNode *GetListHead(){return pHead;}CNode *GetListNextNode(CNode *pnode); };CNode *CList::GetListNextNode(CNode *pnode){CNode *p1=pnode;return p1->pNext;};void CList::AddNode(CNode *pnode) //在首部添加结点{if (pHead==0){pHead=pnode;pnode->pNext=0;return;}else{ pnode->pNext=pHead;pHead=pnode;}};CNode *CList::DeleteNode(CNode *pnode){CNode *p1,*p2;p1=pHead; //指向首结点while(p1!=pnode&&p1->pNext!=0){p2=p1;p1=p1->pNext; }if (p1==pHead){pHead=pHead->pNext;return pnode; }p2->pNext=p1->pNext;return pnode;}CNode *CList::LookUp(CData &data){CNode *p1=pHead;while(p1) //从头结点开始查找{if (p1->pData->Compare(data,1)==0)return p1; p1=p1->pNext;}return 0;}bool CList::LookUpF(CData &data){bool f1=false;CNode *p1=pHead;while(p1){ if (p1->pData->Compare(data,0)==0)f1=true;}p1=p1->pNext;}return f1;}void CList::ShowList(){CNode *p1=pHead;while(p1){p1->pData->Show();p1=p1->pNext;}}void CList::DeleteList() //删除整个链表结点{CNode *p1,*p2;p1=pHead;while(p1){delete p1->pData;p2=p1;p1=p1->pNext;delete p2;}}class CTelRecord:public CData{private :char szName[20]; //电话薄的数据:姓名和电话号码char szNumber[20];char szF;public:CTelRecord(){strcpy(szName,"\0");strcpy(szNumber,"\0");} CTelRecord(char *name,char *number){strcpy(szName,name);strcpy(szNumber,number);szF=name[0];}void SetRecord(char *name, char *number){strcpy(szName,name);strcpy(szNumber,number);szF=name[0];}int Compare(CData &,int);void Show();};int CTelRecord::Compare(CData&data,int choice) {CTelRecord &temp=(CTelRecord &)data;if(choice==1)return strcmp(szName,temp.szName);elsereturn (szF==temp.szF ? 0:1);}void CTelRecord::Show(){cout<<setw(15)<<szName<<setw(15)<<szNumber<<endl;}void AddRecord(CList &TelList)CTelRecord *pTel;char szName[20],szNumber[20];system("cls");cout<<"请输入姓名(输入0退出,并进入系统菜单)"<<endl;cin.getline(szName,20);while(strcmp(szName,"0")){cout<<"请输入电话号码: "<<endl;cin.getline(szNumber,20);pTel=new CTelRecord;pTel->SetRecord(szName,szNumber);pNode=new CNode;pNode->InputData(pTel);TelList.AddNode(pNode);count++;cout<<"请输入姓名(输入0退出,并进入系统菜单) "<<endl;cin.getline(szName,20);}cout<<endl<<endl;}void DisplayRecord(CList&TelList){system("cls");cout<<"目前共有 "<<count<<" 条记录,具体记录如下:"<<endl;cout<<setw(15)<<"【姓名】"<<setw(15)<<"【电话号码】"<<endl;TelList.ShowList();cout<<endl<<endl;system("pause");}void LookUpRecord(CList&TelList){system("cls");CNode *pLook;char szName[20];cout<<"请输入您需要查找的姓名(输入0退出,并进入系统菜单)"<<endl; cin.getline(szName,20);while (strcmp(szName,"0")){CTelRecord tele(szName,"0");pLook=TelList.LookUp(tele);if (pLook){cout<<"在电话簿中找到"<<szName<<",内容是:"<<endl;cout<<setw(15)<<"【姓名】"<<setw(15)<<"【电话号码】"<<endl;pLook->ShowNode(); }elsecout<<"在电话簿中找不到"<<szName<<","<<endl;cout<<"请输入您需要查找的姓名(输入0退出,并进入系统菜单)"<<endl; cin.getline(szName,20);}cout<<endl<<endl;}void DeleteRecord(CList&TelList) //删除链表数据{system("cls");char szName[20];cout<<"请输入您需要删除的姓名(输入0退出,并进入系统菜单)"<<endl; cin.getline(szName,20);while(strcmp(szName,"0")){CTelRecord tel(szName,"0");pLook=TelList.LookUp(tel);if (pLook){cout<<"在电话簿中找到"<<szName<<",内容是:"<<endl;pLook->ShowNode();cout<<"请确定是否删除此记录(Y/N)【确定删除请输入Y或y,取消删除请输入N或n】:"<<endl;char ok;cin>>ok;cin.ignore();if (ok=='Y'||ok=='y'){TelList.DeleteNode(pLook);cout<<szName<<"的资料删除成功!"<<endl;delete pLook;count--;}else if(ok=='N'||ok=='n')cout<<szName<<"的资料删除失败"<<endl; }elsecout<<"在电话簿中找不到"<<szName<<","<<endl;cout<<"请输入您需要删除的姓名(输入0退出,并进入系统菜单)"<<endl;cin.getline(szName,20);}cout<<endl<<endl;}void ModifyRecord(CList &TelList){system("cls");CNode *pLook;CTelRecord *pTel;char szName[20],szNumber[20];cout<<"请输入您需要修改的姓名(输入0退出,并进入系统菜单)"<<endl;cin.getline(szName,20);while(strcmp(szName,"0")){CTelRecord tel(szName,"0");pLook=TelList.LookUp(tel);if (pLook){cout<<"在电话簿中找到"<<szName<<",内容是:"<<endl;pLook->ShowNode();cout<<"-----下面开始修改-----"<<endl<<"请输入修改后的姓名: "<<endl;cin.getline(szName,20);cout<<"请输入修改后的电话号码:"<<endl;cin.getline(szNumber,20);或n】:"<<endl;char ok;cin>>ok;cin.ignore();if (ok=='Y'||ok=='y'){pTel=new CTelRecord;*pTel=tel;pTel->SetRecord(szName,szNumber);pLook->InputData(pTel);cout<<szName<<"的资料修改成功!"<<endl;} else if(ok=='N'||ok=='n')cout<<szName<<"的资料修改失败!"<<endl;}elsecout<<" 在电话簿中找不到"<<szName<<","<<endl;cout<<" 请输入您需要修改的姓名(输入0退出,并进入系统菜单)";cin.getline(szName,20); }}void StoreFile(CList&TelList) //存储链表数据{system("cls");ofstream outfile("TELEPHONE.DAT",ios::binary);if (!outfile){ cout<<" 数据库文件打开错误,没有将数据存入文件!\n";return;}CNode *pnode;CTelRecord *pTel;string strName,strNumber;pnode=TelList.GetListHead();while(pnode){pTel=(CTelRecord *)pnode->GetData();outfile.write((char *)pTel,sizeof(CTelRecord));pnode=TelList.GetListNextNode(pnode);}outfile.close();}void Operate(string &strChoice,CList&TelList) //运行{ if (strChoice=="1")AddRecord(TelList);else if (strChoice=="5")DisplayRecord(TelList);else if (strChoice=="3")LookUpRecord(TelList);else if (strChoice=="4")DeleteRecord(TelList);else if(strChoice=="2")ModifyRecord(TelList);else if (strChoice=="6")else cout<<"对不起,您的输入有误,请重新输入您的选择: "<<endl;} void LoadFile(CList &TelList){system("cls");fstream infile("TELEPHONE.DAT",ios::binary);if (!infile){ return;}CNode *pNode;CTelRecord *pTel;while (!infile.eof()){pTel=new CTelRecord;infile.read((char*)pTel,sizeof(CTelRecord));pNode=new CNode;pNode->InputData(pTel);TelList.AddNode(pNode); }TelList.DeleteNode(pNode);infile.close();}int main(){CList TelList;system("cls");LoadFile(TelList);string strChoice;do{ cout<<"-------------【欢迎进入系统菜单】------------- "<<endl; cout<<" 1.增加记录 "<<endl; cout<<" 2.修改记录 "<<endl; cout<<" 3.查询记录 "<<endl; cout<<" 4.删除记录 "<<endl; cout<<" 5.显示记录 "<<endl; cout<<" 6.退出 "<<endl; cout<<"【请输入您的选择】:"<<endl;cin>>strChoice;cin.ignore();Operate(strChoice,TelList);system("cls");}while(strChoice!="6");StoreFile(TelList);system("pause");return 0;}。

相关文档
最新文档