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

通讯录管理系统课程设计c语言一、课程目标知识目标:1. 理解通讯录管理系统的基础概念,掌握C语言实现通讯录管理的核心功能;2. 学会使用结构体、数组、文件操作等C语言基础知识,实现数据的存储与读取;3. 掌握函数的定义与调用,能运用模块化编程思想设计通讯录管理系统。
技能目标:1. 能够运用所学知识独立设计并实现一个简单的通讯录管理系统;2. 培养良好的编程习惯,编写规范、可读性强的代码;3. 提高问题分析能力,通过编写程序解决实际问题。
情感态度价值观目标:1. 培养学生对C语言的兴趣,激发学习热情,树立编程自信心;2. 培养学生的团队协作意识,学会在团队中发挥个人优势,共同解决问题;3. 培养学生严谨、踏实的学术态度,养成勤奋思考、乐于探究的良好习惯。
课程性质:本课程为实践性较强的课程,旨在让学生通过实际操作,掌握C语言在通讯录管理系统中的应用。
学生特点:学生具备一定的C语言基础,对编程有一定了解,但实际操作能力有待提高。
教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,培养学生实际编程能力。
通过分解课程目标为具体学习成果,使学生在完成课程学习后,能独立设计并实现一个简单的通讯录管理系统。
二、教学内容1. 通讯录管理系统概述- 了解通讯录管理系统的基本功能与需求;- 掌握系统设计的基本流程与模块划分。
2. C语言基础知识回顾- 结构体、数组的使用;- 文件操作(读写、打开、关闭文件);- 函数的定义与调用。
3. 通讯录管理系统核心功能实现- 设计并实现数据结构存储通讯录信息;- 编写功能函数,包括增加、删除、修改和查询联系人;- 实现数据的持久化存储。
4. 系统测试与优化- 学习测试方法,对系统进行功能测试;- 分析测试结果,优化代码与算法。
5. 编程规范与团队协作- 学习编程规范,编写高质量的代码;- 了解团队协作的重要性,培养团队协作能力。
教学内容安排与进度:第1周:通讯录管理系统概述与需求分析;第2周:C语言基础知识回顾;第3周:设计数据结构与功能函数;第4周:实现通讯录管理系统核心功能;第5周:系统测试与优化;第6周:总结与团队协作。
c语言实现通讯录管理系统(用链表实现)

c语⾔实现通讯录管理系统(⽤链表实现)题⽬:通讯录(通过链表实现)设计并实现⼀个简易的通讯录软件,管理个⼈通讯记录。
⼀条通讯记录可包括:姓名、⼯作单位、⼿机、住宅电话、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语言课程设计报告1. 简介通讯录管理系统是一款基于C语言开发的软件,旨在帮助用户方便地存储、查找、编辑和删除联系人信息。
本报告将对该系统的功能和设计进行详细介绍。
2. 系统功能通讯录管理系统具备以下主要功能:•添加联系人:用户可以输入联系人的姓名、电话号码、电子邮件等信息,并将其添加到通讯录中。
•查找联系人:用户可以根据姓名或电话号码等方式,快速查找通讯录中的联系人信息。
•编辑联系人:用户可以修改通讯录中已有联系人的信息,如电话号码、电子邮件等。
•删除联系人:用户可以从通讯录中删除特定联系人。
•显示通讯录:用户可以查看通讯录中的所有联系人信息。
•退出系统:用户可以选择退出通讯录管理系统。
3. 系统设计数据结构通讯录管理系统主要使用以下数据结构存储联系人信息:•结构体:定义了一个联系人的数据结构,包括姓名、电话号码、电子邮件等字段。
•数组:用于存储多个联系人信息,构成通讯录。
数组的每个元素对应一个联系人的结构体。
主要函数添加联系人函数void addContact(struct Contact contacts[], int *num Contacts)•功能:向通讯录中添加一个联系人。
•输入参数:通讯录数组contacts、通讯录中联系人数量numContacts的指针。
•输出:无。
查找联系人函数void searchContact(struct Contact contacts[], int n umContacts)•功能:根据用户提供的关键词在通讯录中查找联系人。
•输入参数:通讯录数组contacts、通讯录中联系人数量numContacts。
•输出:无。
编辑联系人函数void editContact(struct Contact contacts[], int num Contacts)•功能:根据用户选择的联系人在通讯录中编辑联系人信息。
c语言课程设计通讯录管理系统

c语言课程设计通讯录管理系统一、教学目标本课程旨在通过学习C语言,使学生掌握通讯录管理系统的基本概念、原理和方法,培养学生运用C语言进行程序设计的能力。
具体目标如下:1.理解C语言的基本语法和数据结构。
2.掌握函数的定义和调用方法。
3.了解通讯录管理系统的基本需求和设计思路。
4.能够使用C语言编写简单的程序。
5.能够独立完成通讯录管理系统的功能模块设计。
6.具备调试和优化程序的能力。
情感态度价值观目标:1.培养学生的团队合作意识和沟通能力。
2.培养学生的创新思维和解决问题的能力。
3.培养学生对编程事业的热爱和敬业精神。
二、教学内容本课程的教学内容主要包括C语言基础知识、通讯录管理系统的设计和实现。
具体安排如下:1.C语言基础知识:–数据类型和变量–运算符和表达式–数组和字符串2.通讯录管理系统的设计和实现:–系统需求分析–功能模块划分–程序编写和调试三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:通过讲解C语言的基本语法和概念,使学生掌握基础知识。
2.案例分析法:分析实际案例,让学生了解通讯录管理系统的设计过程和思路。
3.实验法:让学生动手编写程序,培养实际操作能力和解决问题的能力。
四、教学资源本课程的教学资源包括教材、多媒体资料和实验设备。
1.教材:选用权威、实用的C语言教材,为学生提供系统的学习资料。
2.多媒体资料:制作课件、教学视频等,丰富教学手段,提高教学质量。
3.实验设备:提供计算机、编程环境等,让学生进行实际操作,锻炼编程能力。
五、教学评估本课程的评估方式包括平时表现、作业、考试等,以全面、客观、公正地评价学生的学习成果。
1.平时表现:通过课堂参与、讨论、提问等环节,评估学生的学习态度和积极性。
2.作业:布置适量作业,评估学生的理解和应用能力。
3.考试:进行期中和期末考试,评估学生的知识掌握和编程能力。
六、教学安排本课程的教学安排如下:1.教学进度:按照教材和教学大纲,合理安排每个章节的教学内容。
C语言程序设计通讯录管理系统

scanf("%s", search_name); /*获得名字到指针型字符串变量*/ for(j=1;j<=i;j++) { if(strcmp(search_name,records[j].name)==0) /*比较字符串,即 查看是否与记录中名字 相同*/ { Data_Show(j); printf("\n"); /*搜索成功,打印记录结束循环*/ break; } } if(j>i) /*搜索失败*/ printf("\n\tNo Record "); /*显示无此记录*/ break; case '5': printf("\n\tInsert No:"); /*录入插入位置*/ scanf("%d",&k); for(j=k+1;j<i;j++) /*将插入位置后的元素顺序后移,即将其复 制到后一位置,循环操作*/ { strcpy(records[j].name,records[j-1].name); records[j].sex=records[j-1].sex; records[j].birth.year=records[j-1].birth.year; records[j].birth.month=records[j-1].birth.month; records[j].birth.day=records[j-1].birth.day; strcpy(records[j].addr.post_num,records[j-1].addr.post_num); strcpy(records[j].addr.addr,records[j-1].addr.addr); strcpy(records[j].telephone,records[j-1].telephone); } Data_Input(k); /*声明增加数据函数*/ i++;/*将记录数目加一*/ break; case '6': Data_Save(); printf("\n"); /*声明保存函数*/ exit(0); break; /*保存后退出*/ case '7': printf("\n\tsave or not?:(y/n)"); ch=getch(); /*获得输入字符*/
通讯录管理系统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、插入模块此模块为插入信息模块,插入后再调用保存函数来保存所插入的数据,支持多条信息的插入。
c语言通讯录程序(共5篇)
c语言通讯录程序(共5篇)第一篇:c语言通讯录程序C语言程序设计实践——通讯录管理系统六、程序源代码及注释#include #include #include #include #define SUM 100 #define STOP 1000typedef struct /*结构体,存放通讯录成员信息,重新定义成member型变量*/ { char name[10]; char tel[15]; char cla[5]; char mail[20]; char qq[15]; }member;member info[SUM]; //所有成员空间FILE *fp;//文件指针,用于打开或保存通讯录文件int count=0; //全局变量,用于计数已存入数量/*-----------------------*/int load(char filename[])//打开通讯录文件{ member *p; int i=0; if((fp=fopen(filename,"rb"))==NULL)return i; else{while(!feof(fp)){p=(member *)malloc(sizeof(member));if(fread(p,sizeof(member),1,fp)==1){strcpy(info[i].name,p->name);strcpy(info[i].tel,p->tel);strcpy(info[i].cla,p->cla);strcpy(info[i].mail,p->mail);strcpy(info[i].qq,p->qq);i++;}free(p);}return i;} } /*------------------*/void save(char filename[]) //保存通讯录文件 {int i;member *p;if((fp=fopen(filename,"wb"))==NULL){printf("无法保存!打开文件%s时出错\n",filename); exit(1);}elsefor(i=0;i{p=(member *)malloc(sizeof(member));strcpy(p->name,info[i].name);strcpy(p->tel,info[i].tel);strcpy(p->cla,info[i].cla);strcpy(p->mail,info[i].mail);strcpy(p->qq,info[i].qq);fwrite(p,sizeof(member),1,fp);free(p);}fclose(fp); } /*-----------------*/ void display(void) //分类查看功能 { system("cls");char dis;char way[5];int i,j=0;choice:printf("**********请选择查看分类***********\n");printf("**********1.亲友**********\n");printf("**********2.同学**********\n");printf("**********3.老师**********\n");printf("**********4.其他**********\n");printf("**********5.查看全部**********\n");printf("**********0.返回上一级菜单**********\n");printf("*****************************************\n"); printf("请选择(1~5或0):");dis=getchar();getchar();switch(dis){case '1':strcpy(way,"亲友");break;case '2':strcpy(way,"同学");break;case '3':strcpy(way,"老师");break;case '4':strcpy(way,"其他");break;case '5':printf("*******全部通讯成员*******\n"); for(i=0;iprintf("姓名:%s\n",info[i].name);printf("电话号码:%s\n",info[i].tel);printf("电子邮箱:%s\n",info[i].mail);printf("QQ号:%s\n",info[i].qq);printf("分类:%s\n",info[i].cla);printf("*****************************\n");j++;}if(j==0){printf("************************\n");printf("无任何通讯成员\n");}j=0;Sleep(STOP);goto choice; break;case '0':return; break;default:printf("*************************\n");printf("输入指令有误!\n");printf("*************************\n");Sleep(STOP);goto choice;}printf("********通讯成员之%s*******\n",way); for(i=0;iif(strcmp(info[i].cla,way)==0){printf("****姓名:%s\n",info[i].name);printf("****电话号码:%s\n",info[i].tel);printf("****电子邮箱:%s\n",info[i].mail);printf("****QQ号:%s\n",info[i].qq);printf("****分类:%s\n",info[i].cla);printf("**********************************\n"); j++;}}if(j==0){printf("该分类中无通讯成员\n");printf("******************\n");}j=0;Sleep(STOP);goto choice; }/*------*/ int add(void)//增加新的成员 {member temp;int i;reinput_name:printf("请输入新成员的姓名:");gets();for(i=0;iif(strcmp(info[i].name,)==0){ printf("该姓名已存在!\n");Sleep(STOP);goto reinput_name;}reinput_tel:printf("请输入新成员的电话号码:"); gets(temp.tel);for(i=0;iif(strcmp(info[i].tel,temp.tel)==0){ printf("该电话号码已存在!\n");Sleep(STOP);goto reinput_tel;}printf("请输入新成员的电子邮箱:"); gets(temp.mail);printf("请输入新成员的QQ号:");gets(temp.qq);printf("请输入新成员的分类:");gets(temp.cla);info[count]=temp;count++;return count; }/*-----*/ int search(char sname[]) //查找功能 { int flag=0,i;for(i=0;iif(strcmp(info[i].name,sname)==0){printf("*****************************\n"); printf("****姓名:%s\n",info[i].name);printf("****电话号码:%s\n",info[i].tel);printf("****电子邮箱:%s\n",info[i].mail);printf("****QQ号:%s\n",info[i].qq);printf("****分类:%s\n",info[i].cla);printf("******************************\n"); flag=1;}return flag; }/*---------*/ int rework(char rname[])//修改功能 {int flag=0,i;for(i=0;iif(strcmp(info[i].name,rname)==0){printf("*********************");printf("请输入新的姓名:");gets(info[i].name);printf("请输入新的电话号码:");gets(info[i].tel);printf("请输入新的电子邮箱:");gets(info[i].mail);printf("请输入新的QQ号:");gets(info[i].qq);printf("请输入新的分类:");gets(info[i].cla);printf("********************");flag=1;}return flag; }/*-----------------------------*/ int erase(char ename[]) //删除功能 {int flag=0,i,j;for(i=0;iif(strcmp(info[i].name,ename)==0){for(j=i;jinfo[j]=info[j+1];count--;flag=1;}return flag; } /*-----------------------------*/ int call(void)//拨号功能 {int i,j,flag=0;char cname[10];printf("**************************\n");for(i=0;iprintf("%s ",info[i].name);}putchar('\n');printf("请输入需要拨号的姓名:");gets(cname);for(i=0;iif(strcmp(info[i].name,cname)==0){printf("正在拨号:");for(j=0;info[i].tel[j]!='\0';j++){printf("%c",info[i].tel[j]);Sleep(300);}putchar('\n');flag=1;}return flag; } /*-----------------------*/ int main(void)//主函数{ char filename[40]; char c,save_j; int t; char s_r_e_name[10];printf("欢迎使用通讯录系统!请输入通讯录文件的有效路径(若文件不存在则自动创建新通讯录)\n"); gets(filename); count=load(filename); system("cls");printf("======================================\ n");printf("==========欢迎使用我的通讯录==========\n");printf("============ 制作:石贵清===========\n");begin:printf("★★★★★★★★★★★★★★★★★★★★★★★★★★\n");printf("※※\n");printf("※通迅录※\n");printf("※※\n");printf("※1. 添加新联系人.5. 分类显示查询.※\n");printf("※※\n");printf("※2. 删除联系人.6.拨出电话.※\n");printf("※※\n");printf("※3. 查询通讯成员.7.保存通讯文件.※\n");printf("※※\n");printf("※4. 修改信息.0. 关闭通迅录.※\n");printf("★★★★★★★★★★★★★★★★★★★★★★★★★★\n"); printf("友情提醒:请在退出本程序之前按7保存通讯文件! \n"); printf("请输入您选择的操作:");c=getchar();getchar(); switch(c) {case '1':if(count==SUM){printf("======= 通讯录空间已满,无法继续录入!===\n"); Sleep(STOP);goto begin; break;}t=add();printf("===== 信息已建立,请尽快保存!=====\n");if(t==SUM){printf("===== 通讯录空间已满,无法继续录入!=====\n"); }Sleep(STOP);goto begin;break; case '2': if(count==0){printf("========================\n");printf("=== 通讯录中无任何成员!====\n");printf("======================\n");Sleep(STOP);goto begin;break; }printf("请输入要删除成员的姓名:");gets(s_r_e_name);t=erase(s_r_e_name);if(!t) {printf("=================\n");printf("==== 查无此人====\n");printf("=================\n"); } else {printf("======================\n");printf("======已成功删除======\n");printf("======================\n"); } Sleep(STOP); goto begin;break; case '3':printf("请输入要查找的成员姓名:");gets(s_r_e_name);t=search(s_r_e_name);if(!t){printf("======================\n");printf("===== 查无此人 =======\n");printf("======================\n");}Sleep(STOP);goto begin;break;case '7':save(filename);printf("==============================\n");printf("======保存成功!=======\n");printf("==============================\n"); Sleep(STOP); goto begin;break;case '4':printf("请输入要修改的成员姓名:");gets(s_r_e_name);t=rework(s_r_e_name);if(!t) {printf("=======查无此人====\n"); }else{printf("=========================\n"); printf("====修改成功====\n");}Sleep(STOP);goto begin;break;case '5':display();Sleep(STOP);goto begin;break;case '6':t=call();if(!t){printf("=============================\n"); printf("====== 输入姓名错误! =======\n");printf("============================\n"); }else{printf("=========================\n");printf("======电话已经拨出=====\n");printf("=======================\n");}Sleep(STOP);goto begin;break;case '0':printf("是否保存数据文件?(Y:是/N:否)");save_j=getchar();if(save_j=='Y'||save_j=='y'){save(filename);printf("====== 保存成功!=======\n");printf("======= 感谢您的使用!再见! ======\n");}else{printf("========================\n");printf("=== 感谢您的使用!再见! ===\n");printf("========================\n");}exit(0); default:printf("=====Sleep(STOP);goto begin; } return 0; }输入指令无效!====");第二篇:C语言程序设计学生通讯录管理系统#include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" #include "stdlib.h" #define null 0 struct record { char name[20]; char phone[20]; char adress[40]; char postcode[10]; char e_mail[30]; }student[500]; struct LinkList { struct record US; struct LinkList *next; }a; struct LinkList *head=null; int num=0; FILE *fp; int menu_select(); int adduser(); int list(); int search(); int display(); int add(); int listbyname(); int dele(); int save(); int exit();void main() {system("cls"); for(;;) { switch(menu_select()) { case 0:adduser();break; case 1:list();break; case 2:search();break; case 3:add();break; case 4:dele();break; case 5:save();break; case 6:exit(0); } } } menu_select() { char s[80]; int a; printf("*_* press any key enter menu! *_* \n"); getch(); system("cls"); printf("\t\t********************MENU*********************\n\n"); printf("\t\t 0. 输入记录\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. Quit\n"); printf("\t\t***********************************************\n");do{ printf("\n Enter you choice(0~11):"); scanf("%s",s); a=atoi(s); } while (a<0||a>11); return a; }adduser() { printf("\n\t\t**************** 请输入用户信息****************\n"); printf("\n\t\t输入姓名:"); scanf("%s",&student[num].name); printf("\n\t\t输入电话号码:"); scanf("%s",&student[num].phone); printf("\n\t\t输入地址:"); scanf("%s",&student[num].adress); printf("\n\t\t输入邮编:"); scanf("%s",&student[num].postcode); printf("\n\t\t输入e-mail:"); scanf("%s",&student[num].e_mail); num++; printf("\n\t\t是否继续添加?(Y/N):"); if (getch()=='y') adduser(); return(0); } list() { int i; system("cls"); if(num!=0) { printf("\n\t\t*************** 以下为通讯录所有信息************"); for (i=0;iprintf("\n\t\t姓名:%s",student[i].name); printf("\n\t\t电话:%s",student[i].phone); printf("\n\t\t地址:%s",student[i].adress); printf("\n\t\t邮编:%s",student[i].postcode); printf("\n\t\te-mail:%s",student[i].e_mail); printf("\t\t"); if (i+1add() { int i; if ((fp=fopen("student.bin","wb"))==NULL) { printf("\n\t\t文件打开失败"); } for (i=0;isave() { int j; FILE*fp; fp=fopen("student.txt","w"); if (fp==NULL) printf("can't open the file."); if(num!=0) { for(j=0;j fwrite(student,sizeof(student),1,fp); } } printf("保存成功!"); fclose(fp); return(0); }第三篇:C语言作业:学通讯录学生通讯录一、语言和环境1.实现语言:C语言。
C++程序设计(班级通讯录)
C++程序设计(班级通讯录)一、项目简介本项目是一个用C++语言实现的班级通讯录管理系统。
通过该系统,用户可以方便地管理班级成员的联系信息,包括姓名、学号、方式等。
二、功能列表1. 添加联系人:用户可以输入学生的信息,包括姓名、学号、方式等,并将其添加到通讯录中。
2. 删除联系人:用户可以输入学生的学号,将对应的联系人从通讯录中删除。
3. 修改联系人:用户可以输入学生的学号,修改对应的联系人的信息。
4. 查询联系人:用户可以输入学生的学号或姓名,查询对应的联系人的信息。
5. 显示所有联系人:用户可以查看通讯录中所有联系人的信息。
6. 清空通讯录:用户可以选择清空通讯录,将所有联系人信息清空。
三、实现思路1. 创建一个学生类,包含姓名、学号、方式等属性,并提供相应的成员函数用于获取和设置这些属性。
2. 创建一个通讯录类,用于管理学生信息。
包括添加联系人、删除联系人、修改联系人、查询联系人和显示所有联系人等功能。
3. 在主函数中,显示主菜单,根据用户的选择调用相应的功能函数。
四、实现步骤1. 定义学生类,包含姓名、学号、方式等属性,并提供相应的成员函数用于获取和设置这些属性。
2. 定义通讯录类,包括添加联系人、删除联系人、修改联系人、查询联系人和显示所有联系人等功能函数。
3. 在主函数中,显示主菜单,根据用户的选择调用相应的功能函数。
五、项目优势1. 简单易用:用户界面友好,操作简便,不需要输入繁琐的指令。
2. 功能完善:涵盖了常用的联系人管理功能,满足用户的需求。
3. 数据安全:通讯录数据保存在内存中,不会外泄或丢失。
4. 可扩展性强:可以根据实际需求进行修改和扩展。
六、通过本项目的实现,我们学习了C++程序设计的基本语法和面向对象的编程思想。
也加深了对通讯录管理系统的理解和实现能力。
希望这个项目对大家学习和了解C++编程有所帮助。
c语言程序的设计通讯录管理系统方案
1.需求分析根据题目要求,通讯录保存在文件中,要提供文件的输入和输出功能;还有就是要提供通讯录添加(个人信息包括、学号、年龄、住址、电子等)、删除、显示、修改等基本功能。
2.概要设计系统总体设计是信息的输入、信息的编辑和退出。
系统功能模块如下:1.添加通讯录;2.输出通讯录;3.查找通讯录;4.修改通讯录;5.删除通讯录;6.退出通讯录;3.详细设计1.通讯录里无信息,所以要添加信息。
用键盘逐个输入通讯录里联系人的信息。
2.输出通讯录用于让使用者观看通讯录里所有的信息。
3.查找通讯录是让使用者可以通过或来查找通讯录里的联系人。
4.修改通讯录是让使用者通过查找到通讯录里的联系人,然后其作出修改。
5.删除通讯录是用来按照联系人的或来单独删除通讯录中一些不想要的联系人。
还可以集体删除通讯录中的联系人。
6.退出通讯录系统。
4.主要源程序代码#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>struct record{char name[20];char age[20];char phone[20];char adress[40];char number[30];char e_mail[20];}contact[500];int NO=0;FILE *fp;void mainmenu();void newrecord();void browsemenu();void searchmenu();void searchname();void searchphone();void modifymenu();void deletemenu();void deleteall();void deletesingle();void deletename();void deletephone();int loadfile();void savefile();void main(){printf("\n\t\t :)欢迎使用通讯录管理系统beta");printf("\n\t\t文件导入中……请稍后……\n\n\n\n\n");system("cls");loadfile();while (1){mainmenu();}}void mainmenu(){char choice;system("cls");printf("\n\t\t******************** 主菜单 ********************"); printf("\n\t\t****************** 1-新建菜单 ******************"); printf("\n\t\t****************** 2-浏览菜单 ******************"); printf("\n\t\t****************** 3-查找菜单 ******************"); printf("\n\t\t****************** 4-修改菜单 ******************"); printf("\n\t\t****************** 5-删除菜单 ******************"); printf("\n\t\t****************** 6-退出 ******************");printf("\n\t\t************************************************"); printf("\n\t\t请选择:");choice=getch();switch (choice){case '1':newrecord();break;case '2':browsemenu();break;case '3':searchmenu();;break;case '4':modifymenu();break;case '5':deletemenu();break;case '6':exit(0);default:mainmenu();}}void newrecord(){printf("\n\t\t**************** 请输入联系人信息 ****************\n"); printf("\n\t\t输入:");scanf("%s",&contact[NO].name);printf("\n\t\t输入年龄:");scanf("%s",&contact[NO].age);printf("\n\t\t输入:");scanf("%s",&contact[NO].phone);printf("\n\t\t输入家庭住址:");scanf("%s",&contact[NO].adress);printf("\n\t\t输入学号:");scanf("%s",&contact[NO].number);printf("\n\t\t输入电子:");scanf("%s",&contact[NO].e_mail);NO++;savefile();printf("\n\t\t是否继续添加?(y/n):");if (getch()=='y')newrecord();return;}void browsemenu(){int i;system("cls");if(NO!=0){printf("\n\t\t*************** 以下为通讯录所有信息************");for (i=0;i<NO;i++){printf("\n\t\t姓名: %s",contact[i].name);printf("\n\t\t年龄: %s",contact[i].age);printf("\n\t\t联系: %s",contact[i].phone);printf("\n\t\t家庭住址: %s",contact[i].adress);printf("\n\t\t 学号: %s",contact[i].number);printf("\n\t\t电子: %s",contact[i].e_mail);printf("\t\t");if (i+1<NO){printf("\n\t\t__________________________");system("pause");}}printf("\n\t\t************************************************"); }elseprintf("\n\t\t通讯录中无任何纪录");printf("\n\t\t按任意键返回主菜单:");getch();return;}void searchmenu(){char choice;system("cls");printf("\n\t\t******************* 查找菜单 *******************"); printf("\n\t\t***************** 1-按查找 *****************"); printf("\n\t\t***************** 2-按查找 *****************"); printf("\n\t\t***************** 3-返回主菜单 *****************"); printf("\n\t\t************************************************"); printf("\n\t\t请选择:");choice=getch();switch (choice){case '1':searchname();break;case '2':searchphone();break;case '3':mainmenu();break;}}void searchname(){int mark=0;int i;int a=0;char name[20];printf("\n\t\t***************** 按查找 *******************"); printf("\n\t\t请输入:");scanf("%s",name);for(i=a;i<NO;i++){if (strcmp(contact[i].name,name)==0){printf("\n\t\t************ 以下是您查找的联系人信息 **********"); printf("\n\t\t姓名: %s",contact[i].name);printf("\n\t\t年龄: %s",contact[i].age);printf("\n\t\t联系: %s",contact[i].phone);printf("\n\t\t家庭住址: %s",contact[i].adress);printf("\n\t\t 学号: %s",contact[i].number);printf("\n\t\t电子: %s",contact[i].e_mail);printf("\n\t\t************************************************"); printf("\n\t\t按任意键返回主菜单:");mark++;getch();return;return;}}if(mark==0){printf("\n\t\t没有该的联系人纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}}void searchphone(){int mark=0;int i;int a=0;char phone[10];printf("\n\t\t****************** 按查找 ******************"); printf("\n\t\t请输入:");scanf("%s",phone);for(i=0;i<NO;i++){if (strcmp(contact[i].phone,phone)==0){printf("\n\t\t************* 以下是您查找的联系人信息 *********"); printf("\n\t\t姓名: %s",contact[i].name);printf("\n\t\t年龄: %s",contact[i].age);printf("\n\t\t联系: %s",contact[i].phone);printf("\n\t\t家庭住址: %s",contact[i].adress);printf("\n\t\t 学号:%s",contact[i].number);printf("\n\t\t电子: %s",contact[i].e_mail);printf("\n\t\t************************************************"); printf("\n\t\t按任意键返回主菜单:");mark++;getch();return;}}if (mark==0){printf("\n\t\t没有该联系人信息");printf("\n\t\t按任意键返回主菜单");getch();return;}}void modifymenu(){ int mark=0;int i,k;int a=0;int t=0;char choice;char name[20];struct record modify;system("cls");printf("\n\t\t请输入您要修改的:");scanf("%s",name);for(i=a;i<NO;i++){if (strcmp(contact[i].name,name)==0){ k=i;mark=1;modify=contact[i];printf("\n\t\t********** 以下是您将修改的联系人信息 **********"); printf("\n\t\t姓名: %s",contact[i].name);printf("\n\t\t年龄: %s",contact[i].age);printf("\n\t\t联系: %s",contact[i].phone);printf("\n\t\t家庭住址: %s",contact[i].adress);printf("\n\t\t 学号: %s",contact[i].number);printf("\n\t\t电子: %s",contact[i].e_mail);printf("\n\t\t是否继续?y/n");if(getch()=='n')modifymenu();else{printf("\n\t\t选择您要修改的选项:");printf("\n\t\t\t(1).姓名");printf("\n\t\t\t(2).年龄");printf("\n\t\t\t(3).联系");printf("\n\t\t\t(4).家庭住址");printf("\n\t\t\t(5). 学号");printf("\n\t\t\t(6).电子");printf("\n\t\t\t(7).返回");printf("\n\t\t请选择: ");choice=getch();switch(choice){ case '1': printf("姓名:"); scanf("%s",contact[i].name); break;case '2': printf("年龄:"); scanf("%s",contact[i].age); break;case '3': printf("联系:"); scanf("%s",contact[i].phone); break;case '4': printf("家庭住址:"); scanf("%s",contact[i].adress); break;case '5': printf(" 学号:"); scanf("%s",contact[i].number); break;case '6': printf("电子:"); scanf("%s",contact[i].e_mail); break;case '7': mainmenu(); break;default: modifymenu();}printf("\n\t\t您的修改结果为:");printf("\n\t\t姓名: %s",contact[i].name);printf("\n\t\t年龄: %s",contact[i].age);printf("\n\t\t联系: %s",contact[i].phone);printf("\n\t\t家庭住址: %s",contact[i].adress);printf("\n\t\t 学号: %s",contact[i].number);printf("\n\t\t电子: %s",contact[i].e_mail);printf("\n\t\t确认修改?y/n");if(getch()=='n'){contact[i]=modify;printf("\n\t\t修改未保存!");}else printf("\n\t\t修改成功!");savefile();mark=0;printf("\n\t\t是否继续修改?(y/n)");if (getch()=='y')modifymenu();}}}if (mark==0){printf("\n\t\t没有该联系人的纪录");printf("\n\t\t是否继续修改?(y/n)");if (getch()=='y')modifymenu();}return;}void deletemenu(){char choice;if(NO==0){printf("\n\t\t对不起,文件中无任何纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}system("cls");printf("\n\t\t******************* 删除菜单 *******************"); printf("\n\t\t****************** 1-删除所有 ******************"); printf("\n\t\t****************** 2-删除单个 ******************"); printf("\n\t\t***************** 3-返回主菜单 *****************"); printf("\n\t\t************************************************"); printf("\n\t\t请选择:");choice=getch();switch(choice){case '1':deleteall();break;case '2':deletesingle();break;case '3':mainmenu();break;default:mainmenu();}}void deleteall(){printf("\n\t\t确认删除?(y/n)");if (getch()=='y'){if ((fp=fopen("contact","w"))==0){printf("\n\t\t不能打开文件,删除失败");loadfile();}NO=0;printf("\n\t\t纪录已删除,按任意键返回主菜单"); getch();fclose(fp);return;}elsereturn;}void deletesingle(){char choice;printf("\n\t\t\t1-按删除");printf("\n\t\t\t2-按删除");printf("\n\t\t\t3-返回删除菜单");printf("\n\t\t请选择:");choice=getch();switch (choice){case '1':deletename();break;case '2':deletephone();break;case '3':deletemenu();break;}}void deletename(){int i,j;int mark=0;char name[20];printf("\n\t\t请输入要删除联系人:");scanf("%s",name);if(NO==0){printf("\n\t\t对不起,文件中无任何纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}for (i=0;i<NO;i++){if (strcmp(contact[i].name,name)==0){printf("\n\t\t以下是您要删除的联系人纪录:"); printf("\n\t\t姓名: %s",contact[i].name); printf("\n\t\t年龄: %s",contact[i].age); printf("\n\t\t联系: %s",contact[i].phone); printf("\n\t\t家庭住址: %s",contact[i].adress); printf("\n\t\t 学号: %s",contact[i].number); printf("\n\t\t电子: %s",contact[i].e_mail); printf("\n\t\t是否删除?(y/n)");if (getch()=='y'){for (j=i;j<NO-1;j++)contact[j]=contact[j+1];NO--;mark++;printf("\n\t\t删除成功");savefile();printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletename();return;}elsereturn;}continue;}if (mark==0){printf("\n\t\t没有该联系人的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletename();return;}}void deletephone(){int i,j;int mark=0;char phone[20];printf("\n\t\t请输入要删除联系:");scanf("%s",phone);if(NO==0)printf("\n\t\t对不起,文件中无任何纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}for (i=0;i<NO;i++){if (strcmp(contact[i].phone,phone)==0){printf("\n\t\t以下是您要删除的联系人纪录:"); printf("\n\t\t姓名: %s",contact[i].name); printf("\n\t\t年龄: %s",contact[i].age); printf("\n\t\t联系: %s",contact[i].phone); printf("\n\t\t家庭住址: %s",contact[i].adress); printf("\n\t\t 学号: %s",contact[i].number); printf("\n\t\t电子: %s",contact[i].e_mail); printf("\n\t\t是否删除?(y/n)");if (getch()=='y'){for (j=i;j<NO-1;j++)contact[j]=contact[j+1];NO--;mark++;printf("\n\t\t删除成功");savefile();printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletephone();return;}elsereturn;}continue;}if (mark==0){printf("\n\t\t没有该联系人的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletephone();return;}int loadfile(){int NO=0;FILE *fp;if((fp=fopen("contact.txt","b"))==0){printf("\n\n\n\n\n\t\t\t 簿文件不存在");if ((fp=fopen("contact.txt","wb"))==0){printf("\n\t\t\t\t建立失败");exit(0);}else{printf("\n\t\t\t 簿已建立");printf("\n\t\t\t 按任意键进入主菜单");getch();return(NO);}exit(0);}fseek(fp,0,2);if (ftell(fp)>0){rewind(fp);for (NO=0;!feof(fp) && fread(&contact[NO],sizeof(struct record),1,fp);NO++); printf("\n\n\n\n\t\t\t\t :)文件导入成功");printf("\n\t\t\t\t 按任意键返回主菜单");getch();return(NO);}printf("\n\n\n\n\t\t\t :)文件导入成功");printf("\n\t\t\t簿文件中无任何纪录");printf("\n\t\t\t 按任意键返回主菜单");getch();return(NO);}void savefile(){int i;if ((fp=fopen("student.txt","wb"))==0)printf("\n\t\t文件打开失败!\n");}for (i=0;i<NO;i++){if (fwrite(&contact[i],sizeof(struct record),1,fp)!=1){printf("\n\t\t写入文件错误!\n");}}printf("\n\t\t已成功保存至文件!\n");fclose(fp);}本程序量使用了结构体和结构体数组,系统的功能模块都是使用子函数完成的,子函数中也存在大量结构体数组。
c语言通讯录管理系统课程设计
c语言通讯录管理系统课程设计一、教学目标本课程旨在让学生掌握C语言编程基础,通过编写通讯录管理系统,培养学生的实际编程能力和问题解决能力。
具体目标如下:1.知识目标:学生能理解C语言的基本语法、数据类型、运算符、控制结构等,并掌握结构体、文件操作等高级概念。
2.技能目标:学生能运用C语言实现功能齐全的通讯录管理系统,包括但不限于添加、删除、查找、修改联系人信息等功能。
3.情感态度价值观目标:通过课程学习,学生能培养编程思维,增强对计算机科学的兴趣,理解技术对现代社会的重要性。
二、教学内容教学内容围绕C语言通讯录管理系统的设计与实现展开,具体包括:1.C语言基础知识:数据类型、变量、运算符、控制结构。
2.高级数据结构:结构体、指针、数组。
3.文件操作:文件的打开、读写、关闭。
4.通讯录管理系统设计:需求分析、系统设计、功能实现。
三、教学方法结合C语言的特点和学生实际情况,采用以下教学方法:1.讲授法:系统讲解C语言基础知识和编程技巧。
2.案例分析法:分析已有的通讯录管理系统案例,引导学生理解系统设计过程。
3.实验法:学生在实验室环境里动手编写代码,实践所学知识。
四、教学资源为确保教学质量,准备以下教学资源:1.教材:《C程序设计语言》(K&R)、《C Primer Plus》。
2.参考书:《C语言深度剖析》、《C语言编程实践》。
3.多媒体资料:教学PPT、在线编程教程、视频讲解。
4.实验设备:计算机、网络环境、编程环境(如Code::Blocks、Visual Studio)。
五、教学评估本课程采用多元化的评估方式,全面客观地评价学生的学习成果:1.平时表现:通过课堂参与、提问、小组讨论等评估学生的积极性与专注度。
2.作业:布置编程作业,评估学生的编程能力和对知识的理解应用。
3.实验:评估学生在实验室的编程实践表现,检查代码质量与创新性。
4.期中期末考试:设置包含选择题、填空题、编程题的试卷,全面测试学生的知识掌握和应用能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简单的c语言程序设计班级通讯录管理系统
一、引言
班级通讯录管理系统是一款基于C语言的简单程序,旨在帮助班级管理者更好地管理班级通讯录信息。
本文将从需求分析、系统设计、代码实现等方面详细介绍该系统。
二、需求分析
1. 功能需求
(1)添加联系人:可以添加新的联系人信息,包括姓名、性别、电话号码等。
(2)删除联系人:可以删除已有的联系人信息。
(3)修改联系人:可以修改已有的联系人信息,包括姓名、性别、电话号码等。
(4)查询联系人:可以根据姓名或电话号码查询已有的联系人信息。
(5)显示所有联系人:可以查看当前所有已有的联系人信息。
2. 性能需求
(1)稳定性:程序应该具有较高的稳定性,不会因为输入错误或其他异常情况导致崩溃。
(2)响应速度:程序应该具有较快的响应速度,不会因为数据量过大或其他原因导致卡顿或延迟。
3. 可靠性需求
(1)数据安全:程序应该具有较高的数据安全性,保证用户输入的数据不会被损坏或丢失。
(2)用户友好性:程序应该具有较好的用户友好性,使用户能够轻松使用。
三、系统设计
1. 总体设计
(1)系统结构:本系统采用单层结构,包含若干个函数模块。
(2)数据结构:本系统采用链表数据结构,将每个联系人信息存储在一个节点中,并通过指针将各个节点连接起来。
(3)界面设计:本系统采用命令行界面,用户可以通过输入不同的命令实现不同的功能。
2. 模块设计
(1)添加联系人模块:该模块用于添加新的联系人信息,包括姓名、性别、电话号码等。
用户需要输入相应的信息后,程序将新建一个节点并将其插入到链表中。
(2)删除联系人模块:该模块用于删除已有的联系人信息。
用户需要输入要删除的联系人姓名或电话号码后,程序将在链表中查找相应节点并将其删除。
(3)修改联系人模块:该模块用于修改已有的联系人信息。
用户需要
输入要修改的联系人姓名或电话号码后,程序将在链表中查找相应节点并允许用户修改其中的信息。
(4)查询联系人模块:该模块用于根据姓名或电话号码查询已有的联系人信息。
用户需要输入要查询的关键字后,程序将在链表中查找相应节点并显示其详细信息。
(5)显示所有联系人模块:该模块用于查看当前所有已有的联系人信息。
程序将遍历整个链表并将每个节点的信息依次显示出来。
四、代码实现
1. 添加联系人模块代码
void add_contact()
{
struct contact *p = (struct contact*)malloc(sizeof(struct contact));
printf("请输入姓名:");
scanf("%s", p->name);
printf("请输入性别:");
scanf("%s", p->sex);
printf("请输入电话号码:");
scanf("%s", p->phone);
p->next = NULL;
if (head == NULL) {
head = p;
tail = p;
printf("添加成功!\n");
return;
}
tail->next = p;
tail = p;
printf("添加成功!\n");
}
2. 删除联系人模块代码
void delete_contact()
{
char name[20];
char phone[20];
printf("请输入要删除的联系人姓名或电话号码:"); scanf("%s", name);
struct contact *p = head;
if (strcmp(p->name, name) == 0 || strcmp(p->phone, name) == 0) {
head = head->next;
free(p);
printf("删除成功!\n");
return;
}
while (p->next != NULL) {
if (strcmp(p->next->name, name) == 0 || strcmp(p->next->phone, name) == 0) {
struct contact *q = p->next;
p->next = q->next;
free(q);
printf("删除成功!\n");
return;
}
p = p->next;
}
printf("未找到该联系人!\n");
}
3. 修改联系人模块代码
void modify_contact()
{
char name[20];
char phone[20];
printf("请输入要修改的联系人姓名或电话号码:");
scanf("%s", name);
struct contact *p = head;
while (p != NULL) {
if (strcmp(p->name, name) == 0 || strcmp(p->phone, name) == 0) {
printf("请输入新的姓名:");
scanf("%s", p->name);
printf("请输入新的性别:");
scanf("%s", p->sex);
printf("请输入新的电话号码:");
scanf("%s", p->phone);
printf("修改成功!\n");
return;
}
p = p->next;
}
printf("未找到该联系人!\n");
}
4. 查询联系人模块代码
void search_contact()
{
char name[20];
char phone[20];
printf("请输入要查询的联系人姓名或电话号码:"); scanf("%s", name);
struct contact *p = head;
while (p != NULL) {
if (strcmp(p->name, name) == 0 || strcmp(p->phone, name) == 0) {
printf("姓名:%s\n性别:%s\n电话号码:%s\n", p-
>name, p->sex, p->phone);
return;
}
p = p->next;
}
printf("未找到该联系人!\n");
}
5. 显示所有联系人模块代码
void display_all()
{
if (head == NULL) {
printf("当前没有任何联系人信息!\n");
return;
}
struct contact *p = head;
while (p != NULL) {
printf("姓名:%s\n性别:%s\n电话号码:%s\n", p->name,
p->sex, p->phone);
p = p->next;
}
}
五、总结
本文主要介绍了一个基于C语言的班级通讯录管理系统的设计与实现,包括需求分析、系统设计和代码实现等方面。
该系统采用链表数据结
构存储联系人信息,并通过不同的模块实现添加、删除、修改、查询
和显示所有联系人等功能。
通过本文的介绍,读者可以了解到如何使
用C语言编写简单的程序,并能够进一步学习和掌握相关知识。