C++通讯录管理系统的设计与实现

合集下载

C语言-通讯录管理系统

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

c语言实现通讯录管理系统(用链表实现)

c语言实现通讯录管理系统(用链表实现)

c语⾔实现通讯录管理系统(⽤链表实现)题⽬:通讯录(通过链表实现)设计并实现⼀个简易的通讯录软件,管理个⼈通讯记录。

⼀条通讯记录可包括:姓名、⼯作单位、⼿机、住宅电话、E-Mail、家庭住址等(可⾃⾏增删,但不可过少)。

该系统应实现以下基本功能:(1)增加新的通讯记录。

(2)删除已有的通讯记录。

(3)修改已有的通讯记录。

(4)浏览全部或指定(如指定姓名、⼯作单位等)的通讯记录。

(5)合理组织排列各项功能,界⾯可使⽤键盘操作。

(6)以⽂件的形式存储数据。

说明:⼤⼀时的c语⾔课设,⽤链表实现⼀个通讯录管理系统,为了美观好看,花了很多时间调整齐度,记录⼀下⼤⼀时的作业。

其主要功能是对通讯录可输⼊,显⽰,插⼊,删除,最难是可保存,这个学⽂件的时候不怎么会。

内容我⾃⼰弄了7个,名字,性别,⼯作单位,⼿机,住宅电话,E-Mail,家庭住址(其他太多其实都是⼀样的,就懒得加了)。

主要运⽤到对指针中的链表的功能和使⽤要⽐较扎实,分部列写就可以了。

实现图⽚:附上代码:1 #include <stdio.h>2 #include <string.h>3 #include <stdlib.h>4 typedef struct student5 {6char name[20];//名字7char wm[20];//性别8char work[100];//⼯作单位9char stel[20];//⼿机10char htel[20];//住宅号码11char mail[20];//E-Mail12char home[100];//家庭住址13struct student *next;14 }stu;15 stu *head;//头指针16void screen()//主菜单17 {18 printf("\n=======================================================\n");19 printf(" 欢迎来到通讯录管理系统\n\n");20 printf(" 1.输⼊数据 2.显⽰数据\n");21 printf(" 3.插⼊数据 4.删除数据\n");22 printf(" 5.查看数据 6.修改数据\n");23 printf(" 7.保存数据 8.返回主菜单\n");24 printf("\n~~~~~~输~~~~~~⼊~~~~~~9~~~~~~退~~~~~~出~~~~~~程~~~~~~序\n");25 }26void input()//输⼊数据27 {28int ans;//判断是否继续输⼊29 stu *p1,*p2;30 p1=(stu *)malloc(sizeof(stu));//申请内存来⽤31if(p1!=NULL)32 {33 printf("========输⼊数据========\n");34 head=p1;35while(1)36 {37 printf("名字:");38 scanf("%s",&p1->name);39 printf("性别:");40 scanf("%s",&p1->wm);41 printf("⼯作单位:");42 scanf("%s",&p1->work);43 printf("⼿机:");44 scanf("%s",&p1->stel);45 printf("住宅号码:");46 scanf("%s",&p1->htel);47 printf("E-Mail:");48 scanf("%s",&p1->mail);49 printf("家庭地址:");50 scanf("%s",&p1->home);51 printf("===================================\n");52 p2=p1;53 p1=(stu *)malloc(sizeof(stu));//申请下⼀个要⽤的空间54if(p1!=NULL)55 p2->next=p1;56 printf("请选择是否继续输⼊:1.继续 2.退出\n请选择:");//⽤户选择57 scanf("%d",&ans);58if(ans==1)//继续59continue;60else//退出61 {62 printf("========输⼊完毕========\n");63 p2->next=NULL;64free(p1);//将申请的的⽆⽤内存释放65break;66 }67 }68 }69 }70void look(stu *p1)//显⽰数据71 {72 printf("========显⽰数据========\n");73while(p1!=NULL)74 {75 printf("名字:%s\n",p1->name);76 printf("性别:%s\t",p1->wm);77 printf("⼯作单位:%s\t",p1->work);78 printf("⼿机:%s\t",p1->stel);79 printf("住宅号码:%s\t",p1->htel);80 printf("E-Mail:%s\t",p1->mail);81 printf("家庭住址:%s\n",p1->home);82 printf("=====================================\n");83 p1=p1->next;84 }85 printf("========显⽰完毕========\n");86 }87void insert()//插⼊数据88 {89int ans;//选择插⼊位置90char name[20];//插⼊者的名字91 printf("========插⼊数据========\n");92 stu *p1,*p2,*p3;93 p1=head;94 p3=(stu *)malloc(sizeof(stu));//申请内存95 p3->next=NULL;96 printf("请输⼊插⼊者的数据:\n");97 printf("名字:");98 scanf("%s",&p3->name);99 printf("性别:");100 scanf("%s",&p3->wm);101 printf("⼯作单位:");102 scanf("%s",&p3->work);103 printf("⼿机:");104 scanf("%s",&p3->stel);105 printf("住宅号码:");106 scanf("%s",&p3->htel);107 printf("E-Mail:");108 scanf("%s",&p3->mail);109 printf("家庭地址:");110 scanf("%s",&p3->home);111 printf("请选择插⼊位置:1.⾸位置插⼊ 2.尾部插⼊ 3.插到某⼈前⾯\n请选择:");112 scanf("%d",&ans);113switch(ans)114 {115case1://放到头指针116 p3->next=p1;117 head=p3;118break;119case2://放到尾部120while(p1->next!=NULL)121 p1=p1->next;122 p1->next=p3;123break;124case3://放到某⼈前⾯125 printf("请输⼊插到谁前⾯名字:");126 scanf("%s",name);127while(strcmp(name,p1->name)!=0)128 {129 p2=p1;130 p1=p1->next;131 }132 p2->next=p3;133 p3->next=p1;134break;135 }136 printf("========插⼊成功========\n");137 }138void deleted()//删除数据139 {140 stu *p1,*p2;141char name[20];//删除者名字142 printf("========删除数据========\n");143 printf("请输⼊要删除者的名字:");144 scanf("%s",name);145 p1=head;146if(head==NULL)//通讯录已经没数据了147 {148 printf("通讯录⾥什么也没有了。

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

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

广西科技大学鹿山学院课程设计报告课程名称: c语言程序设计课题名称:通讯录管理系统设计指导教师:倪志平班级:物联网152姓名:吴肖军学号: 20153076成绩评定:指导教师签字:二〇一六年七月六日目录1 需求分析 (3)2 总体分析与设计 (3)2.1总体设计方案 (3)2.2功能描述 (4)2.2.1 新增联系人模块 (4)2.2.2 保存联系人模块 (4)2.2.3 查询联系人模块 (4)2.2.4 显示联系人模块 (4)2.2.5 修改联系人模块 (4)2.2.6 删除联系人模块 (4)2.2.7 读取联系人模块 (5)2.2.8 退出系统模块 (4)2.3系统流程图 (5)3 系统实现 (6)4功能测试 (11)4.1.1 新增联系人 (11)4.1.2 查询联系人 (13)4.1.3 显示联系人 (14)4.1.4 修改联系人 (15)4.1.5 删除联系人 (16)4.1.6 退出系统 (17)总结 (18)参考文献 (18)课程设计目的1 需求分析通讯录档案信息采用文件存储,因而要提供文件的输入输出操作;根据联系人信息的变动情况,添加删除记录,因而要提供文件的添加删除操作;根据编号进项查询,所以要提供文件的查找操作;高级编辑功能,就是提供文件的修改操作;显示功能就是显示出通讯录中所有联系人的功能;另外还要提供键盘式选择菜单以实现功能选择。

2 总体分析与设计1.总体设计总体设计目标:使用者可以利用本系统对通讯录的各项管理进行操作,根据用户要求自动进行新增联系人,保存联系人,删除联系人,查找所要的联系人,修改所要的联系人,最后将他们清楚地显示在屏幕中。

结合上述分析,该系统应包括一下模块:新增联系人,保存联系人,查询联系人,修改联系人,显示联系人,删除联系人,退出系统。

结构图如下。

2.1 总体设计方案2.2 功能描述根据以上需求分析,通讯录管理系统划分为七个功能模块,分别是新增联系人模块,保存联系人模块,查找联系人模块,修改联系人模块,显示联系人模块,删除联系人模块,读取联系人模块。

(最新版)通讯录管理系统毕业课程设计报告书(C语言)

(最新版)通讯录管理系统毕业课程设计报告书(C语言)

机电工程学院中南大学本科生C语言课程设计题目通讯录管理系统成员姓名蔡贵学号班级:机械1003班成员姓名张晴学号班级:机械1003班成员姓名陈祎靖学号班级:机械1003班成员姓名宁磊磊学号班级:机械1003班指导教师樊广军学院机电工程学院完成时间2011年06 月31 日目录第一章绪论 (2)1.1 设计题目及要求 (2)1.2 系统功能需求分析 (2)第二章开发环境 (3)2.1 C语言的背景 (3)2.2 C语言主菜单介绍 (3)第三章总体设计与实现 (11)3.1 概要设计 (11)3.2 详细设计 (11)第四章测试数据及其结果分析 (15)4.1 测试 (15)4.2 问题思考 (18)第五章总结 (19)附录 (20)一源代码 (20)二参考文献 (27)第一章绪论1.1 设计题目及要求:◆建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子邮箱等;◆能够提供添加、删除和修改通讯录信息的功能;◆能够提供安不同方式查询的功能;如按姓名或年龄、电话等查询;◆将通讯录保存在文件中;◆能够按表格方式输出通讯录信息。

1.2系统功能需求分析:主要包含一下多种功能:添加:添加通讯录记录显示:显示通讯录记录删除:删除通讯录记录查询:查询通讯录记录修改:修改通讯录记录保存:将信息保存到文件第二章开发环境2.1 C语言的背景C语言属于高级程序语言的一种,它的前身是“ALGOL”。

其创始人是布朗•W•卡尼汉和丹尼斯•M•利奇。

C语言问世时是带有很大的局限性,因为它只能用于UNIX系统上。

然而随着科学技术的进步,计算机工业的发展,C语言逐渐脱离UNIX。

1987年美国标准化协会制定了C语言的国际标准,简称“ANSI C”,从此以后它便成为一种广泛使用的程序语言。

C语言的优点很多,主要的有如下四点:1.兼备高级语言与低级语言的优点,属于一种中间语言。

2.它是一种结构化程序设计语言,非常适合结构化程序设计。

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

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

C语言通讯录管理系统程序代码作者:日期:计科1001 赖祥燃一、课程设计题目及要求题目通讯录管理系统任务:自学C 语言中相关知识,设计出通讯录管理系统。

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

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

模块八:示学生信息通过display() 函数输出通讯录信息模块九; 存信息通过fp=fopen("student.txt","w"); 写入信息模块十:界面菜单通过switch(num) 调用,以上各函数,实现功能三、设计详情1. 主函数主函数设计要求简洁,只提供部分提示语和函数的调用图1. 主函数流程图void menu()/* 界面 */ { int num;printf(" \n\nscanf("%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"); }}四、源代码printf("printf(" * 制作人 : 翁行兴 * printf(" \n\n"); \n \n");\n\n");\n");printf(" -------------------------------- printf("* 1. 刷新学生信息printf(" * 3. 修改学生信息printf(" * 5. 按学号删除信息 printf("* 7. 保存当前学生信息printf("printf(" 请选择菜单编号 :");printf("--------------- \n");2. 查询学生信息\n")4. 增加学生信息\n")6. 显示当前信息\n")8. 退出系统\n")\n");自动化 0901 通讯录管理系统 \n\n");#include<stdio.h> #include<stdlib.h> #include<string.h> #define BUFLEN 100 #define LEN 15 #define N 100 struct 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");计科1001 赖祥燃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(" 学号姓名年龄性别出生年月地址电话第8 页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:计科1001 赖祥燃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);计科1001 赖祥燃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++)计科1001 赖祥燃if(strcmp(stu[i].code,stu[j].code)==0){printf(" 已有该学号, 请检查后重新录入!\n");flag=1;break; /* 如有重复立即退出该层循环,提高判断速度*/ scanf("%s",stu[i].mail);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);if(flag==0)i=i;i++;while(i<n+m);n+=m;printf(" 录入完毕!\n\n");--------- 计科1001 赖祥燃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++)计科1001 赖祥燃{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");系统功能菜单\n"); printf(" --------------------- ------------------------------------- \n");printf(" * 1. 刷新学生信息* * 2. 查询学生信息\n");printf(" * 3. 修改学生信息* * 4. 增加学生信息\n"); printf(" * 5. 按学号删除信息* * 6. 显示当前信息\n"); printf(" * 7. 保存当前学生信息* * 8. 退出系统\n");第printf("计科1001 赖祥燃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");}}五.调试过程一.主界面计科1001 赖祥燃二.测试数据当选择4 ——增加学生信息时,出现对话框,先输入增加的数量。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

通讯录管理系统毕业设计(两篇)2024

通讯录管理系统毕业设计(两篇)2024

引言概述:通讯录管理系统是一种用于管理联系人信息的软件,它能够为用户提供便捷的联系人管理和信息查询功能。

本文将继续介绍通讯录管理系统的设计和实现,重点关注系统的用户界面设计、数据存储与管理、通讯录的分类与搜索功能、用户权限管理以及通讯录系统的扩展与升级。

正文内容:1.用户界面设计1.1设计原则:用户友好性、易用性和美观性原则1.2主界面设计:主界面布局、功能模块展示、导航设计1.3交互设计:交互方式、操作流程、反馈机制1.4响应式设计:适配多种设备和屏幕分辨率2.数据存储与管理2.1数据库设计:确定实体和属性、建立表结构、定义关系2.2数据库连接:连接数据库、读写操作、异常处理2.3数据备份与恢复:数据备份策略、备份文件管理、数据恢复机制2.4数据安全性:权限控制、数据加密、数据完整性3.通讯录的分类与搜索功能3.1通讯录分类:基本分类和用户自定义分类3.2联系人添加与编辑:输入验证、字段定义、数据关联3.3联系人查询:关键字查询、条件过滤、多条件组合查询3.4联系人导入导出:支持多种数据格式、数据匹配与转换、导入导出策略3.5通讯录分享与同步:用户权限设置、跨设备同步、冲突解决4.用户权限管理4.1用户注册与登录:用户信息获取、身份验证、登录状态管理4.2用户权限分配:管理员与普通用户权限区分、权限控制细化4.3用户信息管理:个人信息修改、密码重置、账号注销4.4安全性保护:登录失败锁定、密码加密、会话管理5.通讯录系统的扩展与升级5.1模块化设计:可插拔式功能模块、模块间接口定义5.2扩展性设计:支持插件开发、动态加载与卸载5.3性能优化:数据索引优化、查询优化、缓存机制5.4系统升级:版本管理、更新提示、升级策略总结:通过上述的详细阐述,我们可以看到,通讯录管理系统涵盖了用户界面设计、数据存储与管理、通讯录的分类与搜索功能、用户权限管理以及通讯录系统的扩展与升级等多个关键领域。

在该系统的设计过程中,我们需要重点关注用户友好性、数据安全性和系统的可扩展性。

(完整word版)C通讯录管理系统的设计与实现..

(完整word版)C通讯录管理系统的设计与实现..

目录摘要 0关键词 0第一章绪论 (1)1.1课题背景 (1)1.2 目的和意义 (1)第二章需求分析 (2)2.1 范围 (2)(1) 标识 (2)(2) 系统概述 (2)2.2 需求概述 (2)(1) 系统目标 (2)(2) 运行环境 (2)①设备 (2)②支持程序 (3)③用户的特点 (3)2.3功能需求 (3)(1)功能介绍 (3)(2) 系统用例图 (4)2.4实体关系图 (4)第三章概要设计 (6)3.1 范围 (6)(1) 标识 (6)(2) 系统概述 (6)3.2 系统结构 (6)3.3 通讯录界面设计 (7)第四章系统详细设计 (8)4.1 范围 (8)(1) 标识 (8)(2) 系统概述 (8)4.2 详细设计说明 (8)第五章测试说明 (21)5.1 范围 (21)(1) 标识 (21)(2) 系统概述 (21)5.2 测试计划及预期结果 (21)5.3 具体测试情况 (21)第六章总结 (25)参考文献 (26)通讯录的设计与实现摘要随着互联网的不断发展,互联网对我们生活产生的影响越来越大。

在日常的生活中,我们需要接触很多不同的人,如何运用互联网技术实现朋友圈通讯录的管理呢?这是我们日常生活中经常要面临的问题。

本次毕业设计中设计的通讯录管理系统既可以实现对通讯录进行管理,在本地进行通讯录的增加、修改、删除、更新等操作。

本次设计的通讯录管理系统主要是了解通讯录管理系统的业务逻辑,熟悉通讯录管理系统的实现方式,模拟了真实的通讯录管理软件,为后续相关内容的学习打下了坚实的基础。

通讯录管理系统是一个专门针对少用户的实用系统,它方便了大家对众多信息的储存和快速查询的功能,大大减少了查找过程的时间,是一个比较实用的通讯录管理系统,。

对我们后续学习移动端的通讯录管理也会有很大的帮助。

本设计使用的计算机语言是C++,C++语言是在C语言的基础上作了进一步的强化。

C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。

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

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

学生通讯录管理系统c语言编程以下是一个简单的C语言程序,用于管理学生通讯录。

该程序可以添加、显示、查找和删除学生信息。

c复制代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_STUDENTS 100#define MAX_NAME_LENGTH 50// 学生结构体struct Student {char name[MAX_NAME_LENGTH];int age;char gender;char phone[15];char email[50];};// 学生数组struct Student students[MAX_STUDENTS];int num_students = 0;// 添加学生信息void add_student() {if (num_students >= MAX_STUDENTS) {printf("Error: Reached maximum number of students\n");return;}struct Student new_student;printf("Enter name: ");scanf("%s", new_);printf("Enter age: ");scanf("%d", &new_student.age);printf("Enter gender (M/F): ");scanf(" %c", &new_student.gender);printf("Enter phone number: ");scanf("%s", new_student.phone);printf("Enter email: ");scanf("%s", new_student.email);students[num_students] = new_student;num_students++;}// 显示所有学生信息void display_students() {printf("Name\tAge\tGender\tPhone\tEmail\n");for (int i = 0; i < num_students; i++) {printf("%s\t%d\t%c\t%s\t%s\n", students[i].name, students[i].age, students[i].gender, students[i].phone, students[i].email);}}// 查找学生信息void find_student() {char name[MAX_NAME_LENGTH];printf("Enter student name: ");scanf("%s", name);for (int i = 0; i < num_students; i++) {if (strcmp(students[i].name, name) == 0) {printf("Name: %s\n", students[i].name);printf("Age: %d\n", students[i].age);printf("Gender: %c\n", students[i].gender); printf("Phone: %s\n", students[i].phone); printf("Email: %s\n", students[i].email); return;}}printf("Error: Student not found\n");}// 删除学生信息void delete_student() {char name[MAX_NAME_LENGTH];printf("Enter student name: ");scanf("%s", name);int found = 0;for (int i = 0; i < num_students; i++) {if (strcmp(students[i].name, name) == 0) { found = 1;for (int j = i; j < num_students - 1; j++) { students[j] = students[j+1];}num_students--;break;}}if (!found) {printf("Error: Student not found\n");} else {printf("Student deleted successfully\n"); }}int main() {int choice;do {printf("\nMenu:\n");printf("1. Add student\n");printf("2. Display students\n");printf("3. Find student\n");printf("4. Delete student\n");printf("5. Exit\n");printf("Enter choice: ");scanf("%d", &choice);switch (choice) {case 1: add_student(); break;case 2: display_students(); break;case 3: find_student(); break;case 4: delete_student(); break;case 5: printf("Exiting...\n"); break; default: printf("Invalid choice\n"); break; }} while (choice != 5);return 0。

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

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

C语言课程设计 - 学生通讯录管理系统1. 引言学生通讯录管理系统,简称STMS(Student Telephone Management System),是一款基于 C 语言开发的学生通讯信息管理系统。

该系统旨在帮助学校或其他机构方便地管理学生通讯录信息,包括学生的基本信息、联系方式等。

本文档将介绍该系统的设计要求、功能模块、数据结构、算法以及使用方法。

2. 设计要求学生通讯录管理系统应满足以下设计要求:•能够实现学生信息的添加、删除、修改和查询等基本操作;•提供用户友好的界面,方便用户进行操作;•数据存储应使用文件方式进行,确保数据可以持久保存;•提供合理的错误处理机制,提示用户操作引起的错误并给予相应的错误提示。

3. 功能模块学生通讯录管理系统包含以下功能模块:3.1 用户管理模块该模块用于管理系统注册的用户信息,包括用户的登录名、密码等。

•用户登录:用户输入用户名和密码,系统验证登录信息并提供相应权限;•用户注册:新用户可以通过该功能注册账号,并设置登录密码;•用户权限管理:系统根据用户不同的角色分配相应的权限。

3.2 学生信息管理模块该模块用于管理学生的基本信息和通讯录信息。

•添加学生信息:用户可以添加学生的基本信息和联系方式;•删除学生信息:用户可以根据学生的ID删除特定学生的信息;•修改学生信息:用户可以修改指定学生的信息;•查询学生信息:用户可以根据学生的姓名或其他关键词进行学生信息的查询。

3.3 通讯录管理模块该模块用于管理学生的通讯录信息,包括通讯录的名称、联系方式等。

•添加通讯录:用户可以添加新的通讯录,并指定通讯录的名称;•删除通讯录:用户可以根据通讯录的名称删除指定的通讯录;•修改通讯录:用户可以修改已存在的通讯录的名称;•查询通讯录:用户可以根据通讯录的名称查询对应的联系方式。

4. 数据结构学生通讯录管理系统采用以下数据结构:4.1 学生结构体typedef struct {int id; // 学生IDchar name[20]; // 学生姓名char gender; // 学生性别char phone[11]; // 学生电话号码char email[50]; // 学生电子邮箱} Student;4.2 通讯录结构体typedef struct {char name[50]; // 通讯录名称char phone[11]; // 通讯录联系方式} Directory;5. 算法学生通讯录管理系统采用以下算法实现部分功能:5.1 添加学生信息```c void addStudent() { Student student; // 用户输入学生信息 printf(。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3.1.3 显示删除功能的界面
3.1.4 查找功能:
通过5:find—by—name 用姓名来查找个人的通讯录信息 通过6:find—by—tel 用电话号码来查找个人的通讯录信息
3.1.5 修改功能的界面:
输入姓名后的系统界面: 输入修改信息后的系统界面:
3.1.6添加功能的界面:
选择1后的系统界面:
struct student one; printf("\nInput tel:"); scanf("%s",telkey); if((fp=fopen(filename,"rb"))==NULL) { printf("\nCann't open this addressbook!!!"); exit(); } while(!feof(fp)) { fscanf(fp,"%s%s%s%s%s\n",,one.num,one.dis,one.tel,one.addr); if(!strcmp(telkey,one.tel)) { printf("\n\nHave finded,as follow:\n"); printf(" name num dis tel addr"); printf("\n%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,one.addr); k=1; } } if(!k) printf("\n\nSorry,there is no this student!!"); fclose(fp); } void output() { struct student one; if((fp=fopen(filename,"r"))==NULL) { printf("\nCann't open this addressbook!!!"); exit(0); } /* printf("\n\n%20s\n"," \nCann't open this addressbook\n");*/ while(!feof(fp)) {

通讯录管理系统的设计与实现

通讯录管理系统的设计与实现

通讯录管理系统设计与实现一、内容和要求(1)完成通信录信息的管理,包括添加、修改、删除、查询功能。

尽量丰富联系人的各项信息。

(2)能够根据联系的信息单独或分类查询。

(3)联系人的生日提醒功能。

(4)数据存储功能可以使用文件的块读写操作完成,也可以使用SQLite数据库(要学习如何用C/C++连接SQLite数据库)二、需求分析(1)添加:在系统中添加新成员,并保存在文件“通讯录.txt”中;(2)修改:读入要修改成员的姓名,按照提示进行修改;(3)删除:读入要删除成员的姓名,将进行删除;(4)保存:将所有成员数据保存在文件“通讯录.txt”中;(5)查找:读入要查找成员的姓名,查找成员将显示在屏幕上;三、实现代码#include<iostream>#include<string>#include<fstream>using namespace std;static int count=0;class telephone{char name[20]; //姓名char number[17]; //电话号码char birthday[18]; //生日int year,month,day,hour,minute,age;public:telephone(char *na,char *nu,int y,int m,int d,int h,int mi,int a);telephone(){};// ~telephone();char *getname(); //获得姓名char *getnumber(); //获得电话号码int getyear(); //获得年份int getmonth(); //获得月份int getday(); //获得日int gethour(); //获得小时int getminute(); //获得分钟int getage(); //获得年龄void display(); //输出信息void input(); //添加信息void insert(); //插入信息void Delete(); //删除信息void change(); //改变信息static int getcount();};//int telephone::count=0;telephone::telephone(char *na,char *nu,int y,int m,int d,int h,int mi,int a){strcpy(name,na);strcpy(number,nu);year=y;month=m;day=d;hour=h;minute=mi;age=a;// count++;}char *telephone::getname() //获得姓名{return name;}char *telephone::getnumber() //获得电话号码{return number;}int telephone::getyear() //获得年份{return year;}int telephone::getmonth() //获得月份{return month;}int telephone::getday() //获得日{return day;}int telephone::gethour() //获得小时{return hour;}int telephone::getminute() //获得分钟{return minute;}int telephone::getage() //获得年龄{return age;}void telephone::display() //输出信息{cout<<"姓名:"<<name<<endl;cout<<"年龄:"<<age<<endl;cout<<"号码:"<<number<<endl;cout<<"生日:"<<hour<<":"<<minute<<" "<<year<<"-"<<month<<"-"<<day<<endl;}void telephone::input() //输入信息{char na[20];cout<<"输入姓名:";cin>>na;strcpy(name,na);cout<<"输入年龄:";cin>>age;cout<<"输入电话号码:";cin>>number;cout<<"输入生日(按时、分、年、月、日的顺序):";cin>>hour>>minute>>year>>month>>day;count++;}void telephone::insert () //插入信息{if(!age)input();}void telephone::Delete () //删除信息{strcpy(name,(this+1)->name);strcpy(number,(this+1)->number);hour=(this+1)->hour;minute=(this+1)->minute;year=(this+1)->year;month=(this+1)->month;day=(this+1)->day;age=(this+1)->age;count--;}void telephone::change() //改变信息{cout<<"please input again!"<<endl;input();}int telephone::getcount(){return count;}const int N=20;void menu();void createfile(char *a,telephone *array);void outputtel(telephone *array);void inputtel(telephone *array);int searchtel(telephone *array,char *na);bool inserttel(telephone *array);bool Deletetel(telephone *array,char *na);int main(){telephone array[N];int choice; //读入选项do{menu();cout<<"please input your choice:";cin>>choice;if(choice>=0 && choice<=6)switch(choice){case 1:inputtel(array); break;case 2:cout<<"input the name searched"<<endl;char na[20];cin>>na;int i;i=searchtel(array,na);if(i==N)cout<<"无此人!\n";elsearray[i].display();break;case 3:outputtel(array);break;case 4:if(inserttel(array))cout<<"成功插入一条记录!"<<endl;elsecout<<"插入失败!"<<endl;break;case 5:cout<<"input the name deleted:"<<endl;char na1[20];cin>>na1;// system("cls");if(Deletetel(array,na1))cout<<"成功删除一条记录!"<<endl;elsecout<<"删除失败!"<<endl;break;case 6:cout<<"input the name changed:"<<endl;cin>>na;i=searchtel(array,na);if(i==N)cout<<"没有此联系人,改变失败"<<endl;elsecout<<"被改变联系人的信息为:"<<endl;array[i].display ();cout<<"改变后的信息为:"<<endl;array[i].Delete ();array[i].change ();break;default:break;}}while(choice);createfile("通讯录.txt",array);return 0;}void menu() //定义菜单函数{cout<<"*********1.添加联系人*********"<<endl;cout<<"*********2.查询联系人信息*********"<<endl;cout<<"*********3.浏览联系人信息*********"<<endl;cout<<"*********4.插入联系人*********"<<endl;cout<<"*********5.删除联系人*********"<<endl;cout<<"*********6.改变联系人信息*********"<<endl;cout<<"*********0.退出*********"<<endl;}void createfile(char *a,telephone *array){ofstream outf(a);if(!outf){cout<<"can't open the file\n";return;}for(int i=0;i<count;i++){outf<<"姓名:";outf<<" "<<array[i].getname ()<<endl;outf<<"电话:";outf<<" "<<array[i].getnumber ()<<endl;outf<<"年龄:";outf<<" "<<array[i].getage ()<<endl;outf<<"生日:";outf<<" "<<array[i].gethour ()<<array[i].getminute();outf<<array[i].getyear ()<<"-"<<array[i].getmonth ()<<"-"<<array[i].getday ()<<endl;}outf.close ();}void outputtel(telephone *array) //输出对象信息{cout<<"学生总数="<<count<<endl;for(int i=0;i<count;i++)array[i].display();}int searchtel(telephone *array,char *na) //按姓名查找{int i,j=N;for(i=0;i<N;i++)if(strcmp(array[i].getname(),na)==0){j=i;break;}return j;}void inputtel(telephone *array) //输入对象元素{char ch;int i=0;do{if(telephone::getcount()==N)cout<<"人数已满,无法继续录入!"<<endl;if(!array[i].getage())array[i++].input();array[count].input();cout<<"继续输入吗?(Y or N)"<<endl;cin>>ch;}while(ch=='Y');}bool inserttel(telephone *array) //根据年龄插入{if(telephone::getcount()==N){cout<<"人数已满,无法插入!"<<endl;return false;}// else// for(int j=0;j<N;j++)// {// if(array[j].getage())// {// cout<<"无法插入!";// return false;// }// }for(int i=0;array[i].getage() ;i++);array[i].insert();return true;}bool Deletetel(telephone *array,char *na) //按姓名删除{if(telephone::getcount()==0){cout<<"没有记录,无法删除!"<<endl;return false;}int i=searchtel(array,na);if(i==N){cout<<"查无此人,无法删除!"<<endl;return false;}array[i].Delete();return true;}四、运行结果。

简单的c语言程序设计班级通讯录管理系统

简单的c语言程序设计班级通讯录管理系统

简单的c语言程序设计班级通讯录管理系统一、引言班级通讯录管理系统是一款基于C语言的简单程序,旨在帮助班级管理者更好地管理班级通讯录信息。

本文将从需求分析、系统设计、代码实现等方面详细介绍该系统。

二、需求分析1. 功能需求(1)添加联系人:可以添加新的联系人信息,包括姓名、性别、电话号码等。

(2)删除联系人:可以删除已有的联系人信息。

(3)修改联系人:可以修改已有的联系人信息,包括姓名、性别、电话号码等。

(4)查询联系人:可以根据姓名或电话号码查询已有的联系人信息。

(5)显示所有联系人:可以查看当前所有已有的联系人信息。

2. 性能需求(1)稳定性:程序应该具有较高的稳定性,不会因为输入错误或其他异常情况导致崩溃。

(2)响应速度:程序应该具有较快的响应速度,不会因为数据量过大或其他原因导致卡顿或延迟。

3. 可靠性需求(1)数据安全:程序应该具有较高的数据安全性,保证用户输入的数据不会被损坏或丢失。

(2)用户友好性:程序应该具有较好的用户友好性,使用户能够轻松使用。

三、系统设计1. 总体设计(1)系统结构:本系统采用单层结构,包含若干个函数模块。

(2)数据结构:本系统采用链表数据结构,将每个联系人信息存储在一个节点中,并通过指针将各个节点连接起来。

(3)界面设计:本系统采用命令行界面,用户可以通过输入不同的命令实现不同的功能。

2. 模块设计(1)添加联系人模块:该模块用于添加新的联系人信息,包括姓名、性别、电话号码等。

用户需要输入相应的信息后,程序将新建一个节点并将其插入到链表中。

(2)删除联系人模块:该模块用于删除已有的联系人信息。

用户需要输入要删除的联系人姓名或电话号码后,程序将在链表中查找相应节点并将其删除。

(3)修改联系人模块:该模块用于修改已有的联系人信息。

用户需要输入要修改的联系人姓名或电话号码后,程序将在链表中查找相应节点并允许用户修改其中的信息。

(4)查询联系人模块:该模块用于根据姓名或电话号码查询已有的联系人信息。

大一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语言实现个人通讯录管理系统

基于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、联系⼈的查询这步使⽤的是遍历查询,共设置了三种⽅式,在定义链表指针的前提下,通过遍历链表进⾏信息的对⽐,从⽽判断联系⼈是否存在,如果存在就直接显⽰给⽤户,不存在就直接退回功能选项。

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

目录摘要 (1)关键词 (1)第一章绪论 (2)1.1课题背景 (2)1.2 目的和意义 (2)第二章需求分析 (3)2.1 范围 (3)(1) 标识 (3)(2) 系统概述 (3)2.2 需求概述 (3)(1) 系统目标 (3)(2) 运行环境 (3)①设备 (3)②支持程序 (3)③用户的特点 (3)2.3功能需求 (4)(1)功能介绍 (4)(2) 系统用例图 (4)2.4实体关系图 (5)第三章概要设计 (6)3.1 范围 (6)(1) 标识 (6)(2) 系统概述 (6)3.2 系统结构 (6)3.3 通讯录界面设计 (7)第四章系统详细设计 (8)4.1 范围 (8)(1) 标识 (8)(2) 系统概述 (8)4.2 详细设计说明 (8)第五章测试说明 (16)5.1 范围 (16)(1) 标识 (16)(2) 系统概述 (16)5.2 测试计划及预期结果 (16)5.3 具体测试情况 (16)第六章总结 (19)参考文献 (20)通讯录的设计与实现摘要随着互联网的不断发展,互联网对我们生活产生的影响越来越大。

在日常的生活中,我们需要接触很多不同的人,如何运用互联网技术实现朋友圈通讯录的管理呢?这是我们日常生活中经常要面临的问题。

本次毕业设计中设计的通讯录管理系统既可以实现对通讯录进行管理,在本地进行通讯录的增加、修改、删除、更新等操作。

本次设计的通讯录管理系统主要是了解通讯录管理系统的业务逻辑,熟悉通讯录管理系统的实现方式,模拟了真实的通讯录管理软件,为后续相关内容的学习打下了坚实的基础。

通讯录管理系统是一个专门针对少用户的实用系统,它方便了大家对众多信息的储存和快速查询的功能,大大减少了查找过程的时间,是一个比较实用的通讯录管理系统,。

对我们后续学习移动端的通讯录管理也会有很大的帮助。

本设计使用的计算机语言是C++,C++语言是在C语言的基础上作了进一步的强化。

C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。

它的应用范围广泛,具备很强的数据处理能力。

作为C语言家族的一种,C++也具备了C 语言所具有的优点,并对其进行了优化封装,是开发者更容易操作运用,所以本次课程设计采用了C++作为系统的开发语言。

本通讯录管理系统的主要功能有:建立通讯录的链表、插入通讯录信息、查询通讯录信息、删除通讯录信息,输出通讯录信息,保存到通讯录信息。

采用的是面向过程的方法,封装函数功能,调用各个功能函数来实现系统的各个功能。

关键词通讯录;链表;类;第一章绪论1.1课题背景随着市场经济的发展和人们生活水平的提高,互联网技术也在不断地取得新的成果,近些年移动通讯软件层出不穷,人与人之间的联系越来越便捷,这也使得同时与许多人保持联系成为生活中不可或缺的一部分,而单纯的依靠人脑已经很难记住所有人的联系方式,使用传统的纸面方式记录联系人信息时,在联系人比较多时查找将非常的困难。

因此,本设计实现的通讯录成为了许多人保持联系方式的首选。

当前在许多软件中都附带了通讯录功能,部分手机及一些手机软件也提供了功能不一的通讯录功能,一定程度上说明了通讯录对我们工作生活的重要性。

1.2 目的和意义本毕业设计可以加深对课堂理论学习的理解,增强动手能力,培养了学生合作的能力,为以后的工作学习打下了坚实的基础。

在计算机领域中,信息管理系统是我们在学习和生活中比较常见的系统,通过对通讯录管理系统的业务逻辑进行分析,可以很好的理解信息管理系统的业务逻辑,由于市面上绝大部分的信息管理系统的业务逻辑都存在共性,所以通过通讯录管理系统的设计,可以很好地掌握市面上很多的通讯录管理系统的业务逻辑。

同时,通讯录系统也是计算机理论学习过程中最常见的信息管理系统之一,通过对该系统的设计与实现,也可以很好地锻炼学生的实践能力,以及培养学生的计算机逻辑思维。

本系统最求简洁、实用、方便等一些实用性的功能,新建模块上可以实现多添加;查询模块可以根据姓名、性别和电话号码查询,以方便管理员查询自己想要的信息;删除模块上,管理员可以根据自己不想要的或者过时的信息进行删除,删除方便简洁。

该设计的任务是利用一个简单实用的菜单,通过菜单项进行选择,实现和完成通讯录管理中常用的几个不同的功能。

第二章需求分析2.1 范围(1) 标识(2) 系统概述软件名称:通讯录系统。

软件功能:该软件可用于通讯录中插入,删除,快速查找,输出通讯信息,保存到文件中。

用户:管理员开发者:2.2 需求概述(1) 系统目标本系统的总体目标是通过该系统的实施,可以对通讯录信息更加有效地进行管理。

系统设计实施过程中,力争做到以下几点:①.具有较高的可靠性和可用性;②. 使用方便,易学易用;③. 系统易于管理维护;(2) 运行环境①设备Pentium4 800MHz或更高主频CPU 512MB以上内存。

②支持程序Microsoft Visual C++ 6.0 Windows系统 DOS系统③用户的特点最终用户为参加等级考试的学生,要求操作具有便捷易用等特点。

2.3功能需求(1)功能介绍通讯录用户的建立、插入、查询、删除、输出,保存到文件中。

系统功能主要分为以下六个部分:①.查询功能:1)在通讯录的查询模块中,用户可以快速查找自己想要联系的人,查找不支持模糊查询。

2)如能查询到,在最顶端显示,没查询到则不显示信息。

②. 插入功能:1)用户可以对已有的通讯录信息进行添加。

2) 插入信息后,给出提示,用户插入信息成功。

③. 建立通讯信息功能:1) 用户在需要时可以添加信息,当信息需要录入时,根据系统的输入要求填写信息。

2)当添加完毕后,系统会提示建立通讯录信息成功。

④. 删除功能:1). 用户如要删除不需要的信息,可以调出删除功能,在选定后,可以一个或者多个信息进行删除,并更新通讯录信息内容。

2). 在删除信息时要确认都才能删除。

⑤. 保存功能:用户可以根据需要选择保存功能,对数据进行存储。

⑥.输出功能:用户可以对操作后的通讯录信息进行输出,检查通讯录信息。

(2) 系统用例图系统主要部分:管理员的用例图图2-1 系统用例图2.4实体关系图系统用到实体的关系图如下:图2-2 系统E-R图第三章概要设计3.1 范围(1) 标识(2) 系统概述软件名称:通讯录管理系统。

软件功能:该软件可用于通讯录中插入,删除,快速查找,输出通讯信息,保存到文件中。

用户:管理员开发者:3.2 系统结构通讯录管理系统的结构如下图所示图3-1 系统结构图3.3 通讯录界面设计通讯录用户的建立、插入、查询、删除、输出,保存到文件中。

系统功能主要分为以下六个部分:(1).查询功能:1)在通讯录的查询模块中,用户可以快速查找自己想要联系的人,查找不支持模糊查询。

2)如能查询到,在最顶端显示,没查询到则不显示信息。

(2). 插入功能:1)用户可以对已有的通讯录信息进行添加。

2) 插入信息后,给出提示,用户插入信息成功。

(3). 建立通讯信息功能:1) 用户在需要时可以添加信息,当信息需要录入时,根据系统的输入要求填写信息。

2)当添加完毕后,系统会提示建立通讯录信息成功。

(4). 删除功能:1). 用户如要删除不需要的信息,可以调出删除功能,在选定后,可以一个或者多个信息进行删除,并更新通讯录信息内容。

2). 在删除信息时要确认都才能删除。

(5). 保存功能:用户可以根据需要选择保存功能,对数据进行存储。

(6).输出功能:用户可以对操作后的通讯录信息进行输出,检查通讯录信息。

第四章系统详细设计4.1 范围(1) 标识(2) 系统概述软件名称:通讯录管理系统。

软件功能:该软件可用于通讯录中插入,删除,快速查找,输出通讯信息,保存到文件中。

用户:管理员开发者:4.2 详细设计说明(1) 各个界面设计通讯录资料有ID、姓名、性别、手机号码、地址。

具体结构如下:struct student{int id;char name[20];char sex[20];char cellphone[20];char address[50];struct student *next;};函数原型:int main()main()函数主要是整个系统的控制端,主要功能是控制整个程序的运行。

从主函数开始调用各相关函数来达到相应的功能,关键代码如下:void main(){struct student *creat();void print(struct student *head);struct student *del(struct student *head);void jiemian(); //功能函数的声明void chaxun(struct student *head);struct student *increase(struct student *head);void Save(struct student *head);struct student *stu,*p;int a=1;p=NULL;while(a!=0)//使用循环语句让程序重复可执行,知道输入0结束循环{p=stu;jiemian();cout<<"请输入0-6操作数进行操作\n";cin>>a;switch (a){case 1:cout<<"※当输入ID号为0时结束通讯录信息的输入操作※\n";stu=creat();printf("建立信息链表完成\n");system("pause");system("cls");break;case 2:increase(p);system("pause");system("cls");break;case 3:chaxun(p);system("pause");system("cls");break;case 4: del(p);system("pause");system("cls");break;case 6: Save(p);system("pause");system("cls");break;case 5:print(p);system("pause");system("cls");break;case 0: system("pause"); break;}}cout<<"\n\n";}桌面设计函数函数原型:void jiemian()代码如下:void jiemian()//桌面设计函数{cout<<"\t※------------------------------------------------※\n";cout<<"\t※************欢迎使用通讯信息管理系统************※\n";cout<<"\t※※\n";cout<<"\t※------------------------------------------------※\n";cout<<"\t※ 1.建立通讯录信息链表※\n";cout<<"\t※ 2.插入通讯录信息※\n";cout<<"\t※ 3.查询通讯录信息※\n";cout<<"\t※ 4.删除通讯录信息※\n";cout<<"\t※ 5.输出通讯录信息※\n";cout<<"\t※ 6.保存到文件※\n";cout<<"\t※ 0.退出通讯录系统※\n";cout<<"\t※------------------------------------------------※\n";}建立通讯信息函数函数原型:struct student *creat()代码如下:struct student *creat(){struct student *head;struct student *p1,*p2;p1=p2=(struct student *)malloc(LEN); //为p1,p2分配空间cout<<"请输入ID号:";cin>>p1->id;cout<<"请输入姓名:";cin>>p1->name;cout<<"请输入性别:"; //输入数据对数据进行存储 cin>>p1->sex;cout<<"请输入手机号码:";cin>>p1->cellphone;cout<<"请输入地址: ";cin>>p1->address;head=NULL;n=0;while(p1->id){n++;if(n==1){head = p1;//让头结点指向P1所指向的结点}else{p2->next = p1;//让p2指向p1;}p2=p1;p1=(struct student *)malloc(LEN);//为产生新的节点分配空间cout<<"请输入ID号:";cin>>p1->id;if(p1->id==0)break;//当输入0时,结束循环cout<<"请输入姓名:";cin>>p1->name;cout<<"请输入性别:";cin>>p1->sex;cout<<"请输入手机号码:";cin>>p1->cellphone;cout<<"请输入地址: ";cin>>p1->address;}p2->next = NULL;return head; //返回头节点地址给主函数}查询函数函数原型:void chaxun(struct student *head)进入此函数后,输入ID号进行通讯录信息的查询。

相关文档
最新文档