C语言通讯录管理程序设计实验报告_第1页
C语言通讯录管理程序设计实验报告_第2页
C语言通讯录管理程序设计实验报告_第3页
C语言通讯录管理程序设计实验报告_第4页
C语言通讯录管理程序设计实验报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言集中上机实验报告学院:通信与信息工程班级:0101009学号:2010210274姓名:李宏梅指导老师:李盘林一.实验目的为综合应用C语言程序设计理论知识、进一步提高学生综合解决问题、协调工作的能力和良好的软件开发习惯,特安排本实验内容。希望通过该实习能够进一步激发学生的学习热情,培养学生初步编程的能力,为后续的学习和发展奠定基础。二、实习基本要求上机实习时间一周;周五检查程序,最迟下周一提交报告。学生从后面参考题中选取一道题目来做,自己选题的学生必需经指导老师的同意方可,否则视为无效选题。限1人选的题目只能由1人单独完成,限2人选的题目可由1-2人完成。模块化程序设计锯齿型书写格式必须上机调试通过三.实验内容题目二:通讯录管理(限最多1人完成)1、设一个通信录由以下几项数据信息构成:数据项类型姓名字符串地址字符串邮政编码字符串电话号码字符串试为通信录数据定义类型和定义通信录变量,实现功能:存取、显示、删除记录、查询记录等功能。2、要求:界面友好,易于操作四.流程图开始结束退出程序查询记录删除记录显示记录添加记录根据菜单选择n的值进入程序输出菜单开始结束退出程序查询记录删除记录显示记录添加记录根据菜单选择n的值进入程序输出菜单 五.设计过程与思想1.定义一个结构体,储存每个联系人的基本信息,并定义一个结构体数组,最多储存80个人typedefstruct{ charname[10];//姓名 charnum[15];//号码 charadds[20];//住址 charyoubian[7];//邮政编码}Person;Personpe[80];2.定义一个登陆函数.调用system("pause");前面需调用#include<stdlib.h>system是一个系统调用;pause是一个系统操作;整体作用是让窗口等待一个回车,这样可以方便查看程序输出。logon(){printf("\n\n\n\t\t\t通讯录管理系统\n\n"); system("pause");}3.定义一个输出菜单并进行选择的函数,功能包括添加记录,显示记录,删除记录,查询记录,退出系统.采用do-while循环,使用户可进行多次操作,并在每次操作完成后又回到菜单这个页面,在用户输入不正确时重新输入.intmenu() { charc; logon(); do{ system("cls");//清屏printf("\n\n"); printf("\t\t\t*****通讯录*****\n"); printf("\t\t\t┌───────┐\n"); printf("\t\t\t│1.添加记录│\n"); printf("\t\t\t│2.显示记录│\n"); printf("\t\t\t│3.删除记录│\n"); printf("\t\t\t│4.查询记录│\n"); printf("\t\t\t│0.退出程序│\n"); printf("\t\t\t└───────┘\n"); printf("\t\t\t请您选择(0-4):"); c=getchar(); }while(c<'0'||c>'4'); return(c-'0'); }4.定义一个添加记录的函数,传递的参数是结构体数组和数组中元素的个数,采用while循环可让用户重复输入,将每次输入的内容储存在结构体数组中,使用变量i记录用户添加记录的个数,返回结构体数组的元素个数为原来的加上i.当用户选择不再添加时退出循环.intInput(Personper[],intn){ inti=0; charsign; while(sign!='n'&&sign!='N') { printf("\t姓名:"); scanf("\t%s",per[n+i].name); printf("\t电话号码:"); scanf("\t%s",per[n+i].num); printf("\t通讯住址:"); scanf("\t%s",per[n+i].adds); printf("\t邮政编码:"); scanf("\t%s",per[n+i].youbian); printf("\n\t是否继续添加?(Y/N)"); scanf("\t%c",&sign); i++; } return(n+i);}5.定义显示记录的函数,传递的参数是结构体数组和数组中元素的个数.voidDisplay(Personper[],intn){ inti;printf("---------------------------------------------------------------------------\n"); printf("姓名电话号码通讯地址邮政编码\n"); printf("---------------------------------------------------------------------------\n"); for(i=1;i<n+1;i++) {printf("%10s%15s%18s%15s\n",per[i-1].name,per[i-1].num,per[i-1].adds,per[i-1].youbian); } printf("------------------------------------------------------------------\n"); system("pause");}6.定义删除函数,传递的参数是结构体数组和数组中元素的个数.先让用户输入想要删除人的姓名,采用while循环在结构体数组中找到此人,若没有找到,则输出通讯录中没有此人!若找到了,则采用for循环依次把结构体数组中每个元素后面字符串变量的值赋给前一个,达到删除效果,然后输出已经成功删除!并返回结构体数组的元素个数为原来的减去1.intDelete(Personper[],intn){ chars[20]; inti=0,j; printf("\t请输入想删除记录中的名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通讯录中没有此人!\n"); return(n);//个数改变了 } for(j=i;j<n-1;j++) { strcpy(per[j].num,per[j+1].num);// strcpy(per[j].name,per[j+1].name); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].youbian,per[j+1].youbian); } printf("\t\t\t已经成功删除!\n"); return(n-1);}7.定义查询函数,传递的参数是结构体数组和数组中元素的个数.先让用户输入想要查询人的姓名,采用while循环在结构体数组中找到此人,若没有找到,则输出通讯录中没有此人!若找到了,组输出该人的信息.voidQuery(Personper[],intn){ chars[20]; inti=0; printf("\t请输入想查询的姓名:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通讯录中没有此人!\n"); return; } printf("\t电话号码:%s\n",per[i].num); printf("\t通讯地址:%s\n",per[i].adds); printf("\t邮政编码:%s\n",per[i].youbian);}8.主函数,先定义一个变量n来记录每次操作后结构体数组中的元素个数,采用无条件的for循环让用户可进行多次操作,for循环中采用switch选择语句,根据用户在菜单中的选择来具体调用以上函数,每次调用完成后使用break退出switch选择语句,由于menu()函数中有do-while循环,所以每次退出switch选择语句时又会输出主菜单供用户进行选择,而主函数中的for循环又将执行switch选择语句,直到用户在主菜单中选择0退出通讯录管理系统.voidmain(){ intn=0; for(;;) { switch(menu()) { case1: printf("\n\t添加记录到通讯录\n"); n=Input(pe,n); break; case2: printf("\n\t\t\t通讯录记录表\n"); Display(pe,n); break; case3: printf("\n\t从通讯录中删除记录\n"); n=Delete(pe,n); printf("\t"); system("pause"); break; case4: printf("\n\t在通讯录中查找记录\n"); Query(pe,n); printf("\t"); system("pause"); break; case0: printf("\n\t\t谢谢使用,再见!\n"); printf("\n\t\t"); system("pause"); exit(0);//正常退出 } }}心得体会写算法之前需要对题的要求掌握的清楚明了,知道应该运用哪些知识来解决问题,在写算法时要注意细节,对每一步要分析到位,否则可能出现错误。通过上机编写算法了解到熟练掌握知识是很重要的,如果不能熟练掌握,就会对题目感到无从下手。有时在程序设计中,不一定非要全部采用自

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论