电话簿管理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++课程设计 电话簿管理

Visual C++ 课程设计实验报告题目:电话薄管理班级:07102003学号:0710200310姓名:曹哲指导老师:何新2008年9月实验题目: 5-5 电话薄管理一、课程设计要求:功能介绍:一个电话薄管理小程序。

利用文本文件存储电话薄数据,具有添加、删除、显示和查询联系人号码的功能。

(1) 将电话薄数据和相应的函数封装在类中,改写程序使之结构化。

(2) 增加记录修改功能,能选择修改用户的姓名、电话。

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

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

平定难易等级:A级。

二、程序设计思想(相关问题解决办法):类封装成类是首先遇到的问题,我根据课程设计书上的提示,通过看书和与同学讨论,最后比较清楚地明白了类的封装方法。

我在封装时,在类中定义了一些内联函数,并且把函数都定义为公有成员,这样可以方便类外的函数使用成员数据。

书上的参考程序与我的稍有不同。

增加时间这个是通过互联网学到的,利用time.h。

3)增加修改功能我定义了friend_node::modify_record 函数,用来修改用户的姓名、电话。

在函数中,我运用了if-else,switch等语句并对函数进行了重载。

并且本程序可以选择修改,姓,名,电话。

首字母查询这是一个比较难解决的问题,我使用了与全名查找基本相同的函数,我只要求姓相同,全名查找要求姓和名全部相同。

我在这个的解决上还存在一些问题,这证明程序还是不够完善。

这说明我对指针的使用还不够好。

三、课程设计心得:本来打算选计算器,后来觉得计算器编起来没什么意思,就换成了这个难一点儿的电话薄管理。

在程序编写过程中,我发现,不只是难了一点儿。

但是,有难度才有挑战,才有乐趣,不是么?看到源程序,立马被其拥有的函数的数量震撼了。

把它们封装起来费了我不少精力。

但是,看着它们由零散的函数变为整齐的类,就如同看到C语言向C++语言进化。

C语言通讯录管理系统程序代码

C语言通讯录管理系统程序代码

一、课程设计题目及要求题目通讯录管理系统任务:自学C语言中相关知识,设计出通讯录管理系统。

要求如下所述:◆建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子邮箱等;;◆能够提供添加、删除和修改通讯录信息的功能;◆能够提供按姓名或电话等查询;◆将通讯录保存在文件中;◆能够按表格方式输出通讯录信息。

二、系统设计方案(一)总体框架图:通讯录管理系统:1、录入通讯录信息2、修改通讯录信息3、查询通讯录信息4、浏览通讯录信息5、增加通讯录信息6、推出系通讯录统(二)模块设计模块一:头文件,变量定义,函数的声明对系统所使用的变量进行定义,对函数进行声明模块二:录入通讯录信息声明函数void readfile(),说明一个文件指针FILE *fp 打开文件"student.txt"模块三:通讯录信息的查找声明void seek()为查找函数,通过switch(item)设定用学号查找,用姓名查找两个分支模块四:通讯录信息的修改声明void modify()为学生信息修改函数,通过switch(item)设定所要修改的项目模块五:通讯录信息按学号排序声明void sort()将录入通讯录信息系按升序排列,用的是“冒泡排序法”实现排序模块六:加通讯录信息声明void insert()插入通讯录信息,先通过判断通讯录是否存在,若否则继续输入,若是跳出,重新循环模块七:通讯录信息声明void del()实现通讯录信息删除,通过学号对比确定要删除的信息,然后用后一个替换掉。

模块八:示学生信息通过display()函数输出通讯录信息模块九;存信息通过fp=fopen("student.txt","w");写入信息模块十:界面菜单通过switch(num)调用,以上各函数,实现功能三、设计详情1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用【程序】图1. 主函数流程图void menu()/* 界面 */{ int num;printf(" \n\n 自动化0901通讯录管理系统 \n\n");printf(" ***************** \n\n");printf(" * 制作人:翁行兴 * \n \n");printf(" ***************** \n\n");printf("*********************系统功能菜单************************ \n");printf(" ---------------------- ---------------------- \n");printf(" * 1.刷新学生信息 * * 2.查询学生信息 * \n");printf(" * 3.修改学生信息 * * 4.增加学生信息 * \n");printf(" * 5.按学号删除信息 * * 6.显示当前信息 * \n");printf(" * 7.保存当前学生信息 * * 8.退出系统 * \n");printf(" ---------------------- ---------------------- \n");printf("请选择菜单编号:");scanf("%d",&num);switch(num){case 1:readfile();break;case 2:seek();break;case 3:modify();break;case 4:insert();break;case 5:del();break;case 6:display();break;case 7:save();break;case 8:k=0;break;default:printf("请在1-8之间选择\n");}}四、源代码#include<stdio.h>#include<stdlib.h>#include<string.h>#define BUFLEN 100#define LEN 15#define N 100struct record /*结构体*/{char code[LEN+1]; /* 学号 */char name[LEN+1]; /* 姓名 */int age; /* 年龄 */char sex[3]; /* 性别 */char time[LEN+1]; /* 出生年月 */char add[30]; /* 家庭地址 */char tel[LEN+1]; /* 电话号码 */char mail[30]; /* 电子邮件地址 */ }stu[N];int k=1,n,m; /* 定义全局变量 */ void readfile();/* 函数声明 */void seek();void modify();void insert();void del();void display();void save();void menu();int main(){while(k)menu();system("pause");return 0;}void readfile()/* 建立信息 */{char *p="student.txt";FILE *fp;int i=0;if ((fp=fopen("student.txt","r"))==NULL){printf("Open file %s error! Strike any key to exit!",p);system("pause");exit(0);}while(fscanf(fp,"%s %s%d%s %s %s %s %s",stu[i].code,stu[i].name,&stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8){i++; i=i;}fclose(fp);n=i;printf("录入完毕!\n");}void seek() /*查找*/{int i,item,flag;char s1[21]; /* 以姓名和学号最长长度+1为准 */printf("------------------\n");printf("-----1.按学号查询-----\n");printf("-----2.按姓名查询-----\n");printf("-----3.退出本菜单-----\n");printf("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d",&item);flag=0;switch(item){ case 1:printf("请输入要查询的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;printf("学号姓名年龄性别出生年月地址电话 E-mail\n");printf("--------------------------------------------------------------------\n"); printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}if(flag==0)printf("该学号不存在!\n"); break;case 2:printf("请输入要查询的学生的姓名:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].name,s1)==0){flag=1;printf(" 学号姓名年龄性别出生年月地址电话 E-mail\n"); printf("--------------------------------------------------------------------\n");printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}if(flag==0)printf("该姓名不存在!\n"); break;case 3:return;default:printf("请在1-3之间选择\n");}}}void modify() /*修改信息*/{int i,item,num;char sex1[3],s1[LEN+1],s2[LEN+1]; /* 以姓名和学号最长长度+1为准 */printf("请输入要要修改的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0) /*比较字符串是否相等*/num=i;printf("------------------\n");printf("1.修改姓名\n");printf("2.修改年龄\n");printf("3.修改性别\n");printf("4.修改出生年月\n");printf("5.修改地址\n");printf("6.修改电话号码\n");printf("7.修改E-mail地址\n");printf("8.退出本菜单\n");printf("------------------\n"); while(1){printf("请选择子菜单编号:"); scanf("%d",&item);switch(item){case 1:printf("请输入新的姓名:\n"); scanf("%s",s2);strcpy(stu[num].name,s2); break; case 2:printf("请输入新的年龄:\n"); scanf("%d",&stu[num].age);break; case 3:printf("请输入新的性别:\n"); scanf("%s",sex1);strcpy(stu[num].sex,sex1); break; case 4:printf("请输入新的出生年月:\n"); scanf("%s",s2);strcpy(stu[num].time,s2); break; case 5:printf("请输入新的地址:\n"); scanf("%s",s2);strcpy(stu[num].add,s2); break; case 6:printf("请输入新的电话号码:\n"); scanf("%s",s2);strcpy(stu[num].tel,s2); break;case 7:printf("请输入新的E-mail地址:\n"); scanf("%s",s2);strcpy(stu[num].mail,s2); break;case 8:return;default:printf("请在1-8之间选择\n"); }}}void sort()/*按学号排序*/{int i,j,*p,*q,s;char temp[10];for(i=0;i<n-1;i++){for(j=n-1;j>i;j--)if(strcmp(stu[j-1].code,stu[j].code)>0) {strcpy(temp,stu[j-1].code);strcpy(stu[j-1].code,stu[j].code); strcpy(stu[j].code,temp);strcpy(temp,stu[j-1].name);strcpy(stu[j-1].name,stu[j].name); strcpy(stu[j].name,temp);strcpy(temp,stu[j-1].sex);strcpy(stu[j-1].sex,stu[j].sex);strcpy(stu[j].sex,temp);strcpy(temp,stu[j-1].time);strcpy(stu[j-1].time,stu[j].time);strcpy(stu[j].time,temp);strcpy(temp,stu[j-1].add);strcpy(stu[j-1].add,stu[j].add);strcpy(stu[j].add,temp);strcpy(temp,stu[j-1].tel);strcpy(stu[j-1].tel,stu[j].tel);strcpy(stu[j].tel,temp);strcpy(temp,stu[j-1].mail);strcpy(stu[j-1].mail,stu[j].mail);strcpy(stu[j].mail,temp);p=&stu[j-1].age;q=&stu[j].age;s=*q;*q=*p;*p=s;}}}void insert() /*插入函数*/{int i=n,j,flag;printf("请输入待增加的学生数:\n");scanf("%d",&m);do{flag=1;while(flag){flag=0;printf("请输入第 %d 个学生的学号:\n",i+1);scanf("%s",stu[i].code);for(j=0;j<i;j++)if(strcmp(stu[i].code,stu[j].code)==0){printf("已有该学号,请检查后重新录入!\n");flag=1;break; /*如有重复立即退出该层循环,提高判断速度*/}}printf("请输入第 %d 个学生的姓名:\n",i+1);scanf("%s",stu[i].name);printf("请输入第 %d 个学生的年龄:\n",i+1);scanf("%d",&stu[i].age);printf("请输入第 %d 个学生的性别:\n",i+1);scanf("%s",stu[i].sex);printf("请输入第 %d 个学生的出生年月:(格式:年.月)\n",i+1); scanf("%s",stu[i].time);printf("请输入第 %d 个学生的地址:\n",i+1);scanf("%s",stu[i].add);printf("请输入第 %d 个学生的电话:\n",i+1);scanf("%s",stu[i].tel);printf("请输入第 %d 个学生的E-mail:\n",i+1);scanf("%s",stu[i].mail);if(flag==0){i=i;i++;}}while(i<n+m);n+=m;printf("录入完毕!\n\n");sort();}void del(){int i,j,flag=0;char s1[LEN+1];printf("请输入要删除学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;for(j=i;j<n-1;j++)stu[j]=stu[j+1];}if(flag==0)printf("该学号不存在!\n");if(flag==1){printf("删除成功,显示结果请选择菜单6\n");n--;}}void display(){int i;printf("所有学生的信息为:\n");printf("学号姓名年龄性别出生年月地址电话 E-mail\n");printf("--------------------------------------------------------------------\n"); for(i=0;i<n;i++){printf("%6s %7s %5d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}}void save(){int i;FILE *fp;fp=fopen("student.txt","w"); /*写入*/for(i=0;i<n;i++){fprintf(fp,"%s %s %d %s %s %s %s %s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}fclose(fp);}void menu()/* 界面 */{int num;printf(" \n\n 自动化0901学生信息管理系统 \n\n");printf(" ***************** \n\n");printf(" * 制作人:翁行兴 * \n \n");printf(" ***************** \n\n");printf("*********************系统功能菜单************************ \n"); printf(" ---------------------- ---------------------- \n");printf(" * 1.刷新学生信息 * * 2.查询学生信息 * \n");printf(" * 3.修改学生信息 * * 4.增加学生信息 * \n");printf(" * 5.按学号删除信息 * * 6.显示当前信息 * \n");printf(" * 7.保存当前学生信息 * * 8.退出系统 * \n");printf(" ---------------------- ---------------------- \n"); printf("请选择菜单编号:");scanf("%d",&num);switch(num){case 1:readfile();break;case 2:seek();break;case 3:modify();break;case 4:insert();break;case 5:del();break;case 6:display();break;case 7:save();break;case 8:k=0;break;default:printf("请在1-8之间选择\n");}}五.调试过程一.主界面二.测试数据当选择4——增加学生信息时,出现对话框,先输入增加的数量。

课程设计电话簿管理系统

课程设计电话簿管理系统

一.程序功能简介一个基本的电话簿管理程序,具有插入、删除、显示、修改和查询联系人电话码的功能。

主菜单如右图所示,每个菜单项功能如下:1.增加记录菜单:请输入用户姓名,如果该用户已经存在则添加失败,否则,输入用户的电话号码,进行添加。

2.修改某条记录:请输入用户姓名,如果没有该用户显示“该用户不存在”信息,否则,输出原电话号码,然后输入新的电话号码,进行修改。

3.删除记录:输入用户姓名,进行删除(删除时要进行确认)。

4.查询:输入用户姓名,进行查找。

5.排序:根据子菜单,选择不同的排序方式。

6.显示:逐屏显示(每屏显示10条记录)。

7.全删:进行全部删除(要确认)。

二.课程设计要求请选择以下功能1- 增加记录2- 修改记录3- 删除记录4- 查找(按姓名)5- 排序6- 显示记录1.用汉化菜单实现。

2.提供按姓名查询电话号码的功能。

3.显示功能(提供逐屏显示的功能,每屏显示10条记录)。

4.删除和修改时要进行确认。

5.将电话簿记录以文件的形式存在磁盘上;每次操作时将电话簿调出,操作完毕后存盘。

三.课程设计说明1.程序采用数组数据结构实现。

2.用类来实现数据的封装。

四.参考数据结构1.“电话簿”称为用户信息表,用数组实现。

用户信息表由若干用户信息构成,每个用户信息是一个数组元素。

2.“user.txt”是一个文件,用于保存“用户信息表”中的信息。

当系统启动时,从该文件中读入信息,当退出系统时,将“用户信息表”中的信息写到该文件中。

该文件中信息存放形式如下:ZhangHong 5221369LiLi 84891112ZhaoQiang 5221498其中name(姓名)占20列phone_num(电话号码)占12列五.具体功能及实现定义Fphone类,通过其私有成员数组name[20]和phone[12]分别记录用户姓名与电话号码,定义UserDatabase类记录用户信息,通过公有成员函数实现对数据的操作。

电话簿管理系统程序编码

电话簿管理系统程序编码

电话簿管理系统程序编码#include<stdio.h>#include<string.h>int i=0;struct xinxi{char name[30];char add[50];char hao[12];}kehu[50];void jiaohuan(struct xinxi x,struct xinxi y){strcpy(,);strcpy(x.add,y.add);strcpy(x.hao,y.hao);}void jieshou(){printf("--------------------------------------------------\n");printf("* 添加新客户信息*\n");printf("--------------------------------------------------\n");printf("\n请输入客户名称<不超过30个字符>:");fflush(stdin);scanf("%s",kehu[i].name);printf("\n请输入客户地址<不超过50个字符>:");fflush(stdin);scanf("%s",kehu[i].add);do{printf("\n请输入客户电话号码:");fflush(stdin);scanf("%s",kehu[i].hao);if((kehu[i].hao[0])==1)printf("\n <电话号码必须在10000000000到20000000000之间>"); }while(kehu[i].hao[0]==1);printf(" 客户信息已添加...");i++;}void xiugai(){int j;char na[30];printf("--------------------------------------------------\n");printf("* 修改客户信息*\n");printf("--------------------------------------------------\n");printf("请输入要修改客户的名称:");fflush(stdin);scanf("%s",na);for(j=0;j<i;j++){if(strcmp(na,kehu[j].name)==0){printf("以下记录将被修改:\n");printf(" 客户名称=%s\n",kehu[j].name);printf(" 客户地址=%s\n",kehu[j].add);printf(" 电话号码=%s\n",kehu[j].hao);printf("请输入新的数据:\n");printf("\n请输入客户名称<不超过30个字符>:");fflush(stdin);scanf("%s",kehu[j].name);printf("\n请输入客户地址<不超过50个字符>:");fflush(stdin);scanf("%s",kehu[j].add);do{printf("\n请输入客户电话号码:");fflush(stdin);scanf("%s",kehu[j].hao);if(kehu[j].hao[0]==1)printf("\n <电话号码必须在10000000000到20000000000之间>");}while(kehu[j].hao[0]==1);printf(" 该记录已被修改...");}}}void shanchu(){int j,k;char na[30];printf("--------------------------------------------------\n");printf("* 删除客户信息*\n");printf("--------------------------------------------------\n");printf("请输入要删除客户的名称:");fflush(stdin);scanf("%s",na);for(j=0;j<i;j++){ if(strcmp(na,kehu[j].name)==0){ printf("以下记录将被删除:\n");printf(" 客户名称=%s\n",kehu[j].name);printf(" 客户地址=%s\n",kehu[j].add);printf(" 电话号码=%s\n",kehu[j].hao);for(k=j;k<i-1;k++)jiaohuan(kehu[k],kehu[k+1]);printf(" 该记录已被删除...");}}i--;}void dcha(){ int j;char dc[12];printf("--------------------------------------------------\n");printf("* 按电话号码查找客户信息*\n"); printf("--------------------------------------------------\n");printf("请输入要查找的电话号码:");fflush(stdin);scanf("%s",dc);for(j=0;j<i;j++){ if(strcmp(dc,kehu[j].hao)==0){ printf("该号码的详细信息为:\n");printf(" 客户名称=%s\n",kehu[j].name);printf(" 客户地址=%s\n",kehu[j].add);printf(" 电话号码=%s\n",kehu[j].hao);printf(" 按任意键返回...");}}}void kcha(){ int j;char na[30];printf("--------------------------------------------------\n");printf("* 按客户名称查询客户信息*\n"); printf("--------------------------------------------------\n");printf("请输入要查找客户的名称:");fflush(stdin);scanf("%s",na);for(j=0;j<i;j++){ if(strcmp(na,kehu[j].name)==0){printf("该号码的详细信息为:\n");printf(" 客户名称=%s\n",kehu[j].name);printf(" 客户地址=%s\n",kehu[j].add);printf(" 电话号码=%s\n",kehu[j].hao);printf(" 按任意键返回...");}}}void liulan(){int j;printf("* 所有客户的信息*\n");printf("--------------------------------------------------\n");printf("编号名称地址电话\n");printf("--------------------------------------------------\n");for(j=0;j<i;j++){printf("%d %s %s %s\n",j+1,kehu[j].name,kehu[j].add,kehu[j].ha o);}printf("--------------------------------------------------\n");printf(" 按任意键返回...");}int jiemian(){int a;printf("\n--------------------------------------------------\n");printf("* 电话号码存储系统*\n");printf("--------------------------------------------------\n");printf(" 1.新增客户信息\n");printf(" 2.修改客户信息\n");printf(" 3.删除客户信息\n");printf(" 4.按电话号码查询客户信息\n");printf(" 5.按客户名称查询客户信息\n");printf(" 6.浏览所有客户信息\n");printf(" 7.退出\n\n");printf(" 请输入您的选择(1-7):");scanf("%d",&a);fflush(stdin);return a;}void main(){int a;do{ a=jiemian();switch(a){case 1:jieshou();fflush(stdin);getchar();break;case 2:xiugai();fflush(stdin);getchar();break;case 3:shanchu();fflush(stdin);getchar();break;case 4:dcha();fflush(stdin);getchar();break;case 5:kcha();fflush(stdin);getchar();break;case 6:liulan();fflush(stdin);getchar();break;case 7:break;}}while(a!=7);}。

电话簿管理 源程序

电话簿管理 源程序

#include<iostream.h>#include<conio.h>//conio.h 是Console (键盘和屏幕) 输出输入函数的头文件,con -- Console,#include<fstream.h>#include<iomanip.h>#include<string.h>#include<stdlib.h>char pause;class CTelRecord //电话簿记录类{private:char date[20];char time[20];char szName[20];//电话簿的数据:姓名和电话号码char szNumber[20];char szTName[20];public:CTelRecord();//缺省构造函数CTelRecord(char *name,char *number,char *,char*,char*);//构造函数void SetRecord(char *name,char *number,char *,char *D,char *T);//输入数据函数void SetDate_Time(char *dd,char*tt){strcpy(date,dd);strcpy(time,tt);}char *GetLName(){return szName;}char *GetFName(){return szTName;}char *GetNumber(){return szNumber;}char *GetDate(){return date;}//增加时间的显示及存储char *GetTime(){return time;}//显示时间int Compare(CTelRecord &);//比较函数,比较姓名void Show();//打印数据函数void Modify(char*number);//修改电话号码int LookChar(char*szName);//根据首字母查找匹配的姓名};class CNode//定义节点类{private:CTelRecord*pData;//用于指向数据类的指针CNode*pNext;//指向链表下一个节点的指针public:CNode(){pData=new CTelRecord;pNext=0;} //节点构造函数CNode(CTelRecord ctelrecord,CNode node){pData=&ctelrecord,pNext=&node;}//构造函数CNode(CNode&node);//用于拷贝的构造函数~CNode(){};void InputData(CTelRecord*pdata){pData=pdata;}//数据录入函数void ShowNode(){pData->Show();} //结点显示函数CTelRecord *GetData(){return pData;} //获得结点信息函数CNode *GetpNext(){CNode *p=pNext;return p;} //获得下一个结点friend class CList; //定义链表类为友员类};CNode *current_ptr=NULL; //全程变量,用于指明当前在链表中的位置class CList//定义链表类{CNode *pHead;//链表头节点指针public:CList(CNode *node=NULL){pHead=node;} //构造函数~CList(){DeleteList();} //析构函数void SetpHead(CNode*node){pHead=node;} //重置链表头函数void AddNode(CNode *pnode); //在首部添加节点void DeleteNode(CNode *); //删除结点函数CNode *LookUp(CTelRecord &); //按照姓氏智能查询函数(新增函数用以完成设计要求(4))void ShowList(); //显示链表函数void DeleteList(); //删除链表函数CNode *GetListHead(){return pHead;} //获得链表头部函数CNode *GetListEnd(); //获得链表尾部函数CNode *GetListNextNode(CNode *); //获得链表中指定结点的下个结点函数void Insert(CNode *pnode); //排序插入函数int load_list_from_file(); //从文件载入数据函数void delete_record(); //删除记录函数int verify_delete(); //确认删除的函数void write_list_to_file(); //把信息写入文件的函数void handle_choice(int choice); //选择处理函数void help_me(); //帮助函数};CTelRecord::CTelRecord(){strcpy(date,"date");strcpy(time,"time");strcpy(szName,"姓氏");strcpy(szTName,"名字");strcpy(szNumber,"电话号码");}CTelRecord::CTelRecord(char *lastname,char *firstname,char *number,char *DD,char *TT){strcpy(date,DD);strcpy(time,TT);strcpy(szName,lastname);strcpy(szNumber,number);strcpy(szTName,firstname);}void CTelRecord::SetRecord(char *lastname,char *firstname,char *number,char *DD,char *TT){strcpy(date,DD);strcpy(time,TT);strcpy(szName,lastname);strcpy(szNumber,number);strcpy(szTName,firstname);}int CTelRecord::Compare(CTelRecord &ctelrecord){if(strcmp(ctelrecord.szName,szName)==0||strcmp(ctelrecord.sz TName,szTName)==0)return 0;else return 1;}void CTelRecord::Show(){char name[40];strcpy(name,szName);strcat(name,szTName);cout<<setw(40)<<name<<setw(20)<<szNumber<<setw(20)<<d ate<<setw(10)<<time<<'\n';}void CTelRecord::Modify(char *number){strcpy(szNumber,number);}int CTelRecord::LookChar(char szlastName[]){if(strcmp(szName,szlastName)==0)return 1;elsereturn 0;}CNode::CNode(CNode &node){if(node.pData!=NULL)pData=node.pData,pNext=node.pNext; }void CList::AddNode(CNode *pnode){pHead=pnode;pHead->pNext=pnode->pNext=NULL;}CNode *CList::GetListNextNode(CNode *pnode) {return pnode->pNext;}void CList::Insert(CNode * pnode){CNode * M=pHead;if(pHead==NULL){pHead=pnode;pHead->pNext=NULL;}else{while(M->pNext){M=M->pNext;}M->pNext= pnode;pnode->pNext=NULL;}}int CList::load_list_from_file() // 从数据文件FRIENDS.TXT中读取数据重建链表处理函数{current_ptr=pHead;ifstream infile;infile.open("FRIENDS.txt",ios::in|ios::nocreate);CNode *new_rec_ptr;int end_loop = 0;if (!!infile) // 如果成功打开文件{ // 从文件读入数据char dd[20];char tt[20];char LName[20];char FName[20];char Number[20];for(;end_loop==0 ;){new_rec_ptr=new CNode;if(new_rec_ptr->GetData()==NULL){end_loop=1;continue;}if(new_rec_ptr != NULL) // 确保new_rec_ptr指针不为NULL{if(!infile.eof()) //如果文件中有数据可读入{infile.getline(LName,20);infile.getline(FName,20);infile.getline(Number,20);infile.getline(dd,20);infile.getline(tt,20);if(strlen(LName) != 0 &&strcmp(LName, "END OF FILE") != 0)//如果姓氏的长度不为零{if(new_rec_ptr->GetData()!=NULL)new_rec_ptr->GetData()->SetRecord(LName,FName,Number,d d,tt);if(pHead==NULL) //若头指针为零AddNode(new_rec_ptr);elseInsert(new_rec_ptr);strcpy(LName,"");strcpy(FName,"");strcpy(Number,"");strcpy(dd,"");strcpy(tt,"");}elseend_loop = 1;}else{cout << "输入完成!\n";end_loop = 1;}}}return 1;infile.close(); // 关闭文件}else // 打开文件失败{cout << "数据库中暂时没有数据\n";return 0;}} // 文件录入函数结束void CList::delete_record(){ CNode * Q;Q= pHead;system("cls");char search_string[20];CNode *cnode;cnode = NULL;current_ptr = pHead; // 从链表头部开始cin.ignore(20,'\n');cout << "\n您想要删除谁的记录?:";cin.getline(search_string,20);cin.ignore(20,'\n');while((current_ptr != NULL) && current_ptr->GetData()!=NULL&&strncmp(search_string,current_ptr->GetData()->GetLName(),str len(search_string)) !=0&&strncmp(search_string,current_ptr->GetData()->GetLName(),str len(current_ptr->GetData()->GetLName())) !=0)//此函数功能即比较字符串str1和str2的前maxlen个字符{cnode = current_ptr;current_ptr = current_ptr->pNext;}if(current_ptr != NULL&&current_ptr->GetData()!=NULL){cout << "\n以下为您想要寻找的记录\n";cout << current_ptr->GetData()->GetFName() << " ,"<< current_ptr->GetData()->GetLName()<< endl;cout << current_ptr->GetData()->GetNumber() << endl;if(verify_delete()){DeleteNode(current_ptr);cout << "\n已删除记录\n";}else{cout << "\n没有删除任何记录\n";}}else{cout << "\n没有您所需要的数据,没有删除任何记录\n";}system("cls");system("date /t");system("time /t");}void CList::DeleteNode(CNode *cnode) //删除结点函数{CNode * Q;Q= pHead;system("date /t");system("time /t");if( cnode== pHead){ pHead=cnode->pNext ;delete cnode ;}else{if(cnode->pNext == NULL){CNode* p_look = pHead;while(p_look->pNext!=cnode);delete cnode ;p_look->pNext = NULL;}else{ while(Q->pNext!=cnode){Q=Q->pNext;}Q->pNext=cnode->pNext;delete cnode;}}}void CList::DeleteList() //删除链表函数{CNode*temp_ptr;current_ptr=pHead;do{temp_ptr=current_ptr->GetpNext();if(current_ptr->GetpNext()==NULL)current_ptr=NULL;elsecurrent_ptr=temp_ptr;}while(temp_ptr!= NULL);} // 删除链表函数结束void CList::ShowList() //显示信息函数{char fullname[30];char date_time[30];current_ptr = pHead;if(current_ptr != NULL&&current_ptr->GetData()!=NULL){cout << endl;cout << "姓名: 电话号码: 录入时间: \n";do{strcpy(fullname,""); // 清除fullname的内容.strcat(fullname,current_ptr->GetData()->GetLName());strcat(fullname,current_ptr->GetData()->GetFName());strcpy(date_time,current_ptr->GetData()->GetDate());strcat(date_time,current_ptr->GetData()->GetTime());cout.setf(ios::left);cout << setw(30) << fullname;cout << setw(20) << current_ptr->GetData()->GetNumber()<<setw(30)<<date_time<< endl;current_ptr = current_ptr->pNext;cout << endl;}while(current_ptr != NULL);cout << "请按回车键\n";cin.get(pause);cin.ignore(1,pause);}else{cout << "\n没有可以显示的记录\n";}} // 显示信息函数结束int CList::verify_delete(){char YesNo;cout << "\n你确定吗?(Y/N) ";cin >> YesNo;if((YesNo == 'Y') || (YesNo == 'y')){return 1;}else{return 0;}} // 删除确认函数void CList::write_list_to_file(){ofstream outfile;outfile.open("FRIENDS.txt",ios::out|ios::nocreate);if (!!outfile){current_ptr = pHead;if(pHead != NULL&&current_ptr->GetData()!=0){do{outfile<<setiosflags(ios::left)<<current_ptr->GetData()->GetLNa me()<<'\n';outfile<<setiosflags(ios::left)<<current_ptr->GetData()->GetFNa me()<<'\n';outfile<<setiosflags(ios::left)<<current_ptr->GetData()->GetNu mber()<<'\n';outfile<<setiosflags(ios::left)<<current_ptr->GetData()->GetDat e()<<'\n';outfile<<setiosflags(ios::left)<<current_ptr->GetData()->GetTim e()<<'\n';current_ptr = current_ptr->pNext;} while(current_ptr != NULL);}outfile.close();}else{cout << "打开文件失败了……\n";}} //文件录入函数结束CNode * CList::LookUp(CTelRecord &ctelrecord){int i(0);system("cls");char search_string[20];CNode *cc=current_ptr;current_ptr = pHead;strcpy(search_string,ctelrecord.GetLName());while(current_ptr!=NULL){if(current_ptr->GetData()->LookChar(search_string)!=0){if (i==0)cout<<"姓名:-----------------------------------电话号码:--------------录入时间\n";current_ptr->ShowNode();i++;}current_ptr=current_ptr->pNext;}if(i)cout<<"智能查找完成,结果如上显示。

优秀毕业论文——基于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语言课程设计代码
一、引言
在现代社会中,通讯方式多样化且频繁,通讯录管理系统应运而生。

本文将介
绍一个基于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语言编程简介学生通讯录管理系统是一个帮助学生管理通讯录信息的应用程序。

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

功能需求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++实例——电话簿管理程序

void Address::Enter(string& name,string& phone) { int len = name.length(); if (len>30) len = 30; //输入超长时截断 name.copy(Name,len,0); Name[len] = 0; //字符串结束符,把string转换成char* len = phone.length(); if (len>20) len = 20; phone.copy(Phone,len,0); Phone[len] = 0; } void Address::Set() {Status = false;} void Address::Clear() {Status = true;}
void AddressBook::Enter() { string name,phone; int pointer; pointer = FindFree(); if(pointer==-1) cout << "电话簿已记满"; else { cout <<"电话簿中有" << Num << "条通信录" <<endl; cout <<"输入姓名: "; cin >> name; cout <<"输入电话号码: "; cin >> phone; Item[pointer].Enter(name,phone); Item[pointer].Set(); Num++; } }
//Address.h文件 //通信录定义 #include <iostream> #include <iomanip> #include <fstream> #include <string> using namespace std; class Address { bool Status; //通信录状态 char Name[31]; //姓名 char Phone[21]; //电话 public: Address() {Status = true;} //构造时通信录清空 string GetName()const; //取姓名 string GetPhone()const; //取电话 bool isEmpty(); //取通信录状态 void Enter(string& name,string& phone); //输入通信录 void Set(); //置通信录状态0,非空 void Clear(); //置通信录状态1,空 };

通讯录管理系统C语言代码

通讯录管理系统C语言代码
printf("\t姓名:");
scanf("\t%s",per[i].name);
printf("\t电话号码:");
scanf("\t%s",per[i].num);
printf("\t通讯住址:");
scanf("\t%s",per[i].adds);
printf("\t邮政编码:");
{
char s[20];
int i=0,j;
printf("\t请输入想删除记录中的名字:");
scanf("%s",s);
while(strcmp(per[i].name,s)!=0&&i<n) i++;
if(i==n)
{
printf("\t通讯录中没有此人!\n");
printf("\t\t * 0. 退出程序 *\n");
printf("\t\t ****************\n");
printf("\t\t请您选择(0-6):");
c=getchar();
}while(c<'0'||c>'6');
if(i==n)
{
printf("\t通讯录中没有此人!\n");
return;
}
printf("\t此人学号: %d\n",per[i].score);
printf("\t此人姓名: %s\n",per[i].name);

通讯录管理源代码

通讯录管理源代码
}
return -1;
}
int Guanli::findCouname(char name[30]){
int limm=findPast();
for(int i=0;i<limm;i++){
if(strcmp(name,stu[i].couname)==0)
char clas[50]; //班级
char specialty[50]; //专业
int couid; //题目编号
char couname[50]; //题目名称
char keyword[50]; //关键词
char technology[50]; //定义对象
{
cout<<"你输入的学号已经存在,请重新输入!"<<endl;
goto loop;
}
c++;
}
cout<<"请输入需要查找的题目名称:"<<endl;
cin>>name;
}
int Guanli::findName(char name[30]){
int limm=findPast();
for(int i=0;i<limm;i++){
if(strcmp(name,stu[i].stuname)==0)
return i;
}stu[150];
class Guanli
{
public:
void add(); //添加学生信息
void search(); //查询信息

C++课程设计-电话簿管理

C++课程设计-电话簿管理

Visual C++ 课程设计报告题目:电话薄管理姓名:学号:班级:提交时间:1.程序任务:功能介绍:一个电话薄管理小程序。

利用文本文件存储电话簿数据,具有添加、删除、显示和查询联系人号码的功能。

(1) 将电话薄数据和相应的函数封装在类中,改写程序使之结构化。

(2) 增加记录修改功能,能选择修改用户的姓名、电话。

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

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

平定难易等级:A级。

2.所完成的功能:程序大致流程图如下。

主界面增加记录修改记录显示记录查找记录删除记录智能查询退出程序帮助search_by_name()add_record()write_list_tolist()znsearch_by_name()modify_record()delete_record()help_me()display_list()程序关闭2.1原程序各功能分析与说明原程序采用结构化的设计方法,通过直接构建链表来实现增加记录,显示记录,根据姓氏查找号码,删除号码,帮助,退出等基本功能。

原程序在主函数中在do-while循环中插入choice选择结构来对用户需要执行的功能进行选择,增加记录功能通过函数add_record()函数来完成,而函数add_record()里面又含有几个子函数。

显示记录功能是通过display_list()功能来完成的,查找记录功能是通过search_by_name()函数来完成的,删除记录功能是通过delete_record()来完成的,帮助功能是通过help_me()函数来完成,最后在退出之前,执行delete_list()函数来完成相关记录的保存等工作。

2.2课程设计要求的实现1.类的结构因为课程设计要求将原程序的电话簿数据和相应的函数封装在类中,于是我就定义了一个Phone_Book的类,但是在封装成类的时候我遇到了很多问题。

电话簿管理C++源代码

电话簿管理C++源代码

/*第5题电话簿管理*//*本程序是在第5章第5题的基础之上改进而来的。

增加了修改记录的功能、录入时间的显示及存储、智能查询等功能。

汉化了菜单与帮助,并且使用了类与对象重建了系统。

,*/#include<fstream.h>#include<conio.h>#include<iostream.h>#include<iomanip.h>#include<time.h>#include<string.h>#include<stdlib.h>#include"friend_node.h" //此自定义头文件内有类的封装//主函数void main(void){friend_node record;record.welcome();}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//各种所需函数.//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Customer cl;Customer::Customer(){strcpy(Customer::Customer_name,"");}void Customer::log_in(char *password,Customer cust) const//输入密码,{ifstream read_customer("customer.dat");while(!read_customer.eof()){read_customer.read((char*)(&cust),sizeof(cust));if(read_customer.fail()){cout<<"暂时没有建立任何用户,请先注册";cl.Register(&cl);}if(strcmp(password,cust.password)==0){cout<<"密码正确,欢迎进入";break;}else if(strcmp(password,cust.password)!=0){cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~非法入侵,严重警告~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";main();}}read_customer.close();}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~void Customer::Register(Customer *cust)//注册{system("cls"); //执行系统命令:清屏=clscin.get();cout<<"欢迎注册,成为我们的用户"<<endl;cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;cout<<"输入你的名字: ";cin.getline(Customer_name,30);cout<<"输入你的密码(至少六位): ";cin>>password;cin.get();system("cls");cout<<endl<<endl;cout<<"注册完毕"<<endl;cout<<"任意键进入"<<endl;getch();}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void friend_node::enter() //用户登陆系统{int x;cout<<endl<<endl<<endl;cout<<"1 用户等录 ";cout<<"2 用户注册 ";char password[10];cin>>x;switch(x){case 1:system("cls");cout<<endl<<endl;cout<<"请输入密码";cin.get();cin>>password;cin.get();cl.log_in(password,cl);break;case 2:system("cls");cout<<"注册新用户";cout<<"*************";cl.Register(&cl);ofstream write_customer("customer.dat",ios::app);write_customer.write((char*)&cl,sizeof(cl));write_customer.close();break;}}void friend_node::welcome()//欢迎菜单函数{cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl;cout << "\t\t\t电话簿管理\n";cout << "\t\t\t修改及完善陈俞荣(0504520222)\n\n";cout << "\t\t\t进入用户登录界面";cin.get(pause);system("cls"); //执行系统命令:cls-清屏enter();//进入用户登录系统int choice;head_ptr = NULL; // 初始化链表头指针。

通讯录管理系统程序C语言源代码

通讯录管理系统程序C语言源代码
} Address;
Address * h[5];
/*************************************************/
void menu();//一级菜单
void relatives();//亲人
void friends();//朋友
void classmates();//同学
/********************************************************/
void InitList(Address *&L);
int ListInsert(Address *&L,int i,AddressList e);
void DispList(Address *L);
void CreateListR(Address *&L, AddressList a[],int n);
int ListEmpty(Address *L);
void DispName(Address *L);
int ListLength(Address *L);
int ListDelete(Address *&L,int i,AddressList &e);
scanf("%d",&num1);
switch(num1)
{
case 1: menu();
case 2: SecondMenu();
default :exit(1);
}
}
void Delete()
{
int num1;
int m;
if (ListEmpty(h[x])==1)

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语言通讯录管理系统的源代码示例:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_CONTACTS 100// 定义联系人结构体typedef struct {char name[50];char phone[20];char email[50];} Contact;// 全局通讯录数组Contact contacts[MAX_CONTACTS];int numContacts = 0;// 添加联系人void addContact() {if (numContacts >= MAX_CONTACTS) {printf("通讯录已满,无法添加新联系人。

\n");return;}Contact newContact;printf("请输入联系人姓名:");scanf("%s", );printf("请输入联系人电话:");scanf("%s", newContact.phone);printf("请输入联系人邮箱:");scanf("%s", newContact.email);contacts[numContacts] = newContact; numContacts++;printf("联系人添加成功。

\n");}// 显示所有联系人void displayContacts() {if (numContacts == 0) {printf("通讯录为空。

\n");return;}printf("所有联系人:\n");for (int i = 0; i < numContacts; i++) {printf("姓名:%s\t电话:%s\t邮箱:%s\n", contacts[i].name, contacts[i].phone, contacts[i].email); }}// 主菜单void showMenu() {printf("******************************\n"); printf("***** 通讯录管理系统*****\n"); printf("******************************\n"); printf("请选择操作:\n");printf("1. 添加联系人\n");printf("2. 显示所有联系人\n");printf("0. 退出\n");printf("******************************\n"); }int main() {int choice;while (1) {showMenu();printf("请选择操作(输入数字):");scanf("%d", &choice);switch (choice) {case 0:printf("已退出通讯录管理系统。

电话簿管理程序设(C++)

电话簿管理程序设(C++)
system("pause");
return;
}
string sign;
cout <<endl <<"要修改输入姓名或电话号:";
cin >>sign;
string str1;
bool flag = true;
string str;
while (inData >>name >>number)
{
getline(inData, str);
book();//默认构造函数
char inter_face();//首页
void add_person();//添加联系人
void del_person();//删除联系人
void show_all();//显示所有联系人
void alter();//修改信息
void select();//查询联系人
{ ifstream inData("pbook.txt",ios::in);
if (!inData)
{
cout <<endl <<"对不起!文件找不到!" <<endl;
system("pause");
return;
}
string sign;
cout <<endl <<"输入你想查找的联系人的姓名或电话号码: ";
<<" " <<number <<str <<endl;
flag = false;
break;

作业例题参考代码

作业例题参考代码

int i,k=0,l1; gets(a); l1=strlen(a); for(i=0;i<l1-2;)
{k=find(&a[i],b); if (k)printf("%d\n",i+k); if(k==0) printf("not found."); i=i+k+3; } return 0; }
t=t*i; p=pow(-1,n)*pow(x,2*n+1)/t; } printf("%f\n",s);return 1; }
在屏幕上输出如下图形: #include <stdio.h>
* *** ***** *******
void main() { int i,k,n; char ch;
*********
参考的C语言程序代码:
##include<stdio.h> #include<stdlib.h> #include<string.h> struct stu {char name[10];//姓名 char t1[12];//宅电 char t2[12];//手机 }; char filename[20]="d:\\txl.txt";//数据文件名,全局变量
printf("str1<str2"); else printf("str1=str2"); return 1; }
int scmp(char *p1,char *p2) {
while(*p1!='\0' && *p2!='\0') {if(*p1>*p2) {return 1;break;} else if(*p1<*p2) {return 1;break;} p1++,p2++;} if(*p1=='\0' && *p2!='\0') return -1; else if(*p2=='\0' && *p1!='\0') return 1; else return 0; }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include "stdio.h"#include "stdlib.h"#include "string.h"char filename[20];FILE *fp;struct person{char name[10];char tel[15];char addr[50];};void creat(){struct person people;printf("\n请输入电话簿名:");scanf("%s",filename);if((fp=fopen(filename,"w"))==NULL){printf("\n不能建立电话簿!");exit(1);}printf("\n请输入姓名、电话号码及住址(以0结束)\n");scanf("%s",);while(strcmp(,"0")){scanf("%s%s",people.tel,people.addr);fprintf(fp,"%-10s%-20s%-50s\n",,people.tel,people.addr); scanf("%s",);}fclose(fp);printf("按任意键继续!");getchar();}void output(){struct person people;if((fp=fopen(filename,"r"))==NULL){printf("\n不能建立电话簿!");exit(1);}printf("\n\n%5s\n","电话簿:");while(!feof(fp)){fscanf(fp,"%s%s%s\n",,people.tel,people.addr);printf(" 姓名:%-10s电话号码:%-15s地址:%-15s\n",,people.tel,people.addr); }fclose(fp);printf("按任意键继续......");getchar();}void append(){struct person people;if((fp=fopen(filename,"a"))==NULL){printf("\n不能建立电话簿!");exit(1);}printf("\n请输入添加的姓名、电话号码及住址\n");scanf("%s%s%s",,people.tel,people.addr);fprintf(fp,"%-10s%-20s%-50s\n",,people.tel,people.addr);fclose(fp);printf("按任意键继续......");getchar();}void search(){int k=0;char namekey[10];struct person people;printf("\n请输入要查找的姓名:");scanf("%s",namekey);if((fp=fopen(filename,"rb"))==NULL){printf("\n不能打开电话簿!");exit(1);}while(!feof(fp)){fscanf(fp,"%s%s%s\n",,people.tel,people.addr);if(!strcmp(namekey,)){printf("\n\n已查到,记录为:");printf("姓名:%-10s电话号码:%-15s地址:%-15s\n",,people.tel,people.addr);k=1;}}if(!k)printf("\n\n对不起,电话簿还没有你要查找的人!");fclose(fp);printf("按任意键继续......");getchar();}void modify(){int m=0,k=0;long offset;char namekey[10];struct person people;printf("\n请输入要修改的姓名:");scanf("%s",namekey);if((fp=fopen(filename,"r+"))==NULL){printf("\n不能打开通讯录!");exit(1);}while(!feof(fp)){offset=ftell(fp);fscanf(fp,"%s%s%s\n",,people.tel,people.addr);if(!strcmp(namekey,)){k=1;break;}}if(k){printf("\n已查到,记录为:");printf("姓名:%-10s电话号码:%-25s地址:%-15s\n",,people.tel,people.addr); printf("\n请输入新姓名、电话号码及住址:");scanf("%s%s%s",,people.tel,people.addr);fseek(fp,offset,SEEK_SET);printf("%ld",ftell(fp));fprintf(fp,"%-10s%-20s%-50s\n",,people.tel,people.addr);}elseprintf("\n对不起,电话簿中没有此人的记录.");fclose(fp);printf("按任意键继续......");getchar();}void del(){int m,k=0,flag;long offset1,offset2;char namekey[10],valid[4];struct person people;printf("\n请输入要删除的姓名:");scanf("%s",namekey);if((fp=fopen(filename,"r+"))==NULL){printf("\n不能打开电话簿!");exit(1);}while(!feof(fp)){offset1=ftell(fp);fscanf(fp,"%s%s%s\n",,people.tel,people.addr);if(!strcmp(namekey,)){k=1;break;}}if(k){printf("\n已查到要删除的人的信息,记录为:");printf("姓名:%-10s电话号码:%-20s地址:%-20s\n",,people.tel,people.addr); printf("\n确实要删除,按1;不删除,按0:");scanf("%d",&m);if(m){fseek(fp,offset1,SEEK_SET);fprintf(fp,"%-10s%-20s%-50s\n"," "," "," ");}}elseprintf("\n对不起,电话簿中没有此人的记录.");fclose(fp);printf("按任意键继续......");getchar();}void creat();void output();void search();void append();void modify();void del();void menu(){printf("\n 通讯录: ");printf("\n ");printf("\n 添加,请按1");printf("\n 查找,请按2");printf("\n 修改,请按3");printf("\n 删除,请按4");printf("\n 输出,请按5");printf("\n 退出,请按0");}void main(){int m;creat();while(1){menu();printf("\n请选择:");scanf("%d",&m);if(m>=0&&m<=5){switch(m){case 1: append();break;case 2: search();break;case 3: modify();break;case 4: del();break;case 5: output();break;case 0: exit(1);}printf("\n\n操作完毕,请再次选择!");}elseprintf("\n\n选择错误,请再次选择!"); } }。

相关文档
最新文档