您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > C语言程序设计 通讯录管理系统
课程设计题目:通讯录管理系统一、系统需求分析1、建立通讯录新年系,信息至少包含编号、姓名、年龄、电话号码、通讯地址等;2、能够提供添加、删除、查找、修改和显示通讯录信息等功能;3、能够提供按不同方式查询的功能,如按姓名或年龄等查询;4、将通讯录保存到文件中;5、能够按表格方式输出通讯录信息。二、系统概要设计1、系统的主要功能系统的主要功能是实现基本的通讯录的数据管理和维护。主要包括:(1)增加数据记录:可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址后,会提示是否继续添加。(2)显示数据记录:可以以表格形式输出所有通讯录里的记录。(3)删除数据记录:输入欲删除的那个人的姓名后,会自动删除他(她)的记录内容。(4)查找数据记录:可以选择用姓名,电话,地址三种方式查询。(5)修改数据记录:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址。(6)保存数据记录:输入文件明(带后缀名)后,即可将通讯录信息保存到文件。2、系统的总体结构3、系统软件环境本程序所适用的计算机系统软硬件环境要求为:硬件环境:1486,586及兼容机,640K基本内存;21M以上扩充内存,10M以上的显示内存.软件环境:内置MS-DOS5.0或者Windows98,且有中文平台.如:UCDOS等。4、数据结构设计(1)通讯录:typedefstruct{Charscore;Charname[10];Charnum[15];Charage[8];Charadds[20];}Person;//编号,姓名,号码,年龄,住址Voidmain(0{intn=0;增加数据记录显示数据记录删除数据记录查找数据记录修改数据记录保存数据记录通讯录管理系统for(;;){Switch(menu_select())//主函数{case1:printf(“\n\t添加记录到通讯录\n);ninput(pe,n);break;Case2:printf(“\n\t\t\tDisplay,n”);break;//添加记录Case3:printf(“\n\t从通讯录中删除记录\n”);n=Delete_a_record(pe,n);Printf(“\t”);system(“pause”);break;Case4:printf(“\n\t在通讯录中查找记录\n”);Query_a_record(pe,n);Printf(“\t”);system(“pause”);break;Case5:printf(“\n\t修改通讯录中的记录\n”);Change(pe,n);Printf(“\t”);system(“pause”);break;Case6:printf(“\n\t保存功能\n”);WritetoText(pe,n);Printf(“\t”);system(“pause”);break;Case0:printf(“\n\t\t谢谢使用,再见!\n”);Printf(“\n\t\t”);system(“pause”);exit(0);}}}三、系统的详细设计系统实现的基本功能是通讯录数据管理,包括:添加数据记录、显示数据记录、删除数据记录、查找数据记录,修改数据记录以及保存数据记录。(分别使用了insert()、seek()、delete()、show()、sort()等函数)。其中数据的查找、数据的删除又可通过不同的方式如按学号或姓名等进行操作。主要函数实现说明:1、insert()该函数可对文件的数据进行添加。在进行添加的时候需要首先打开数据文件,在该函数中调用了file1()函数将数据文件打开。之后同creatfile()中一样的形式输入数据,输入完之后进行保存,对插入的数据进行保存前要先确定插入点,该函数在设计时将插入点放在了文件末尾,即将添加的数据加到文件的最后。同样以上操作为一循环过程,最后根据用户的选择决定循环操作是否进行。该函数与创建新数据文件函数除保存及被使用时间不同外,其他功能基本相同。2、show()使用该函数可以在屏幕上显示数据文件中已经存在的所有数据记录。该功能设计思路比较简单,只需先打开数据文件,读取其中的数据记录,然后将这些记录按一定的形式打印在屏幕上,为是打印的效果整齐、美观,则要对其输出的方式、格式进行设计3、delete()该函数用来删除不需要的数据记录。实现过程为:首先输入需要删除的记录的编号,将该数据逐一与以存文件中的编号进行比较,在比较过程中定义了一个变量g,并初始化为1,当找到要删除的数据的时候,将g赋制值成0,接着就是对该记录的删除操作,将此记录及其后的每一条记录逐一用它们之后的那一条记录替换,即实现了对数据的删除。若没有找到需要删除的数据,g的值任为1,则屏幕显示“cannotfindthename”。在删除记录后需对操作结果进行保存,最后根据用户的选择来决定是否继续删除。4、seek()该函数调用了by-name()和by-number()两个函数来实现不同方式的查找。具体使用什么方式查找需由用户自己选择,于是使用switch语句先设计一个选择过程。当选择按名字查找方式,就启用by-name()函数查找,过程为先要求用户输入所要查找的数据名字,然后再将这个名字与以存数据名字逐个进行比较,当找到数据的时候就调用prt()函数将该数据的所有信息打印出来,否则显示“cannotfindthename”以示没有找到。当选择按学号查找方式的时候,则启用by-number()函数进行查找,过程思路与by-name()函数相同。以上过程为一循环过程,再根据用户的选择决定是否继续循环操作。5、main()一个程序主函数不能少。当以上的函数均编完之后,要实现各个功能操作的连接,还必须有主函数将它们联系起来,这样才能达到理想的结果。对以上函数的连接,此程序采用了switch语句,格式清晰、容易接受。至此班级通讯录管理的基本功能便基本实现。辅助函数:以上介绍的是完成班级通讯录管理这个功能,程序主要包含的函数,为了使程序更有条理性或者更加完整形象,可以将主要函数经常使用的一些功能编成一个函数,这样便可在多处很方便调用,如此程序中的file1()(用来打开数据文件的操作)、file2()(用来保存数据)、prt()函数等便起到这个作用。另外还加了jm1()、jm2()进入界面、退出界面这两个函数,使本程序显得更加完整。四、系统的主要源程序#includestdio.h//#includestdlib.h#includestring.htypedefstruct{charscore;charname[10];charnum[15];charage[8];charadds[20];}Person;Personper[80];intmenu_select(){charc;do{system(cls);printf(\t\t*****通讯录*****\n);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);printf(\t\t请您选择(0-6):);c=getchar();}while(c'0'||c'6');return(c-'0');}intInput(Personper[],intn){inti=0;charsign,x[10];while(sign!='n'&&sign!='N'){printf(\t编号:);scanf(\t%d,&per[n+1].score);printf(\t姓名:);scanf(\t%s,per[n+1].name);printf(\t年龄:);scanf(\t%s,per[n+1].age);printf(\t电话号码:);scanf(\t%s,per[n+1].num);printf(\t通讯地址:);scanf(\t%s,per[n+1].adds);gets(x);printf(\n\t是否继续添加?(Y/N));scanf(\t%c,&sign);i++;}return(n+i);}voidDisplay(Personper[],intn){inti;printf(----------------------------------------\n);printf(编号姓名年龄电话号码通讯地址\n);printf(----------------------------------------\n);for(i=1;in+1;i++){printf(%-5d%-8s%-6s%-13s%-15s\n,per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds);if(i1&&i%10==0){printf(\t----------------------------------\n);printf(\t);system(pause);printf(\t----------------------------------\n);}}printf(------------------------------------\n);system(pause);}intDelete_a_record(Personper[],intn){chars[20];inti=0,j;printf(\t请输入想删除记录中的名字:);scanf(%s,s);while(strcmp(per[i].name,s)!=0&&in)i++;if(i==n){printf(\t通讯录中没有此人!\n);return(n);}for(j=i;jn-1;j++){strcpy(per[j].num,per[j+1].num);strcpy(per[j].name,per[j+1].name);strcpy(per[j].age,per[j+1].age);strcpy(per[j].adds,per[j+1].adds);per[j].score=per[j+1].score;}printf(\t\t\t已经成功删除!\n);return(n-1);}voidQuery_a_record(Personper[],intn){intm;printf(\\n请选择查询方式:\n);printf(\t┍--------------┒\n);printf(\t|1------姓名|\n);printf(\t|2------电话|\n);printf(\t|3------地址|\n);printf(\t|4------返回|\n);printf(\t┕--------------┙\n);printf(请选择:);scanf(%d,&m);while(m!=1&&m!=2&&m!=3&&m!=4){printf(输入错误,请重新选择:);scanf(%d,&m);}if(m==1){chars[20];inti=0;printf(\t请输入想查询的姓名:);scanf(\t%s,s);while(strcmp(per[i].name,s)!=0&&in)i++;if(i==n){printf(\t通讯录中没有此人!\n);return;}printf(\t此人编号:%d\n,per[i].score);printf(\t此人年龄:%s\n,per[i].age);printf(\t电话号码:%s\n,per[i].num);printf(\t通讯地址:%s\n,per[i].adds);}if(m==2){chars[20];
本文标题:C语言程序设计 通讯录管理系统
链接地址:https://www.777doc.com/doc-4352597 .html