课程设计(论文)-电话簿管理系统.doc
电话簿管理系统-课程设计报告第1页共17页学生成绩管理系统课程设计报告编写人:同组成员:(课程设计负责人)完成日期:2010/12/18辅导教师:批阅日期:分数:电话簿管理系统-课程设计报告第2页共17页一、功能描述此电话簿管理系统主要利用线性表实现,由如下六个功能模块实现1、输入模块。主要完成将电话记录存入线性表的工作。2、输出模块。主要完成将所有记录输出显示的功能。3、建表模块。主要完成建立线性表,开辟空间的功能。4、插入模块。主要完成插入记录的功能。5、查询功能。主要完成查询记录的功能。6、删除功能。主要完成从线性表中删除记录的功能。二、数据结构设计电话簿信息结构体structtelbook/定义一个电话簿结构体,用来存储电话簿信息/定义各结构体成员的数据类型/chartel20;/定义电话号码/charname20;/定义机主姓名/charsex10;/定义机主性别/charaddr50;/定义所在地址/;三、函数功能描述1、建表:函数原型:structtelbook*initsl(intm)/建立线性表/structtelbook*v;v=(structtelbook*)malloc(m*sizeof(structtelbook);/分配此结构体一定的空间,并初始化/returnv;参数含义:m线性表的空间大小V指向线性表表头的指针2、Input1()电话簿管理系统输入记录模块建表模块输出记录模块建表模块建表模块从文件读入从键盘输入插入模块查询模块删除模块电话簿管理系统-课程设计报告第3页共17页函数原型:voidinput1(structtelbook*v,intm,intn)/输入函数1,由键盘输入inti;if(n<=0)printf("输入错误");elseif(n>m)printf("n输入错误,最多只能输入%d个相关信息!",m);/线性表溢出elsefor(i=0;i<n;i+)/可以多次输入printf("n你即将输入第%d个信息n:",i+1);printf("n姓名,性别,电话,地址:");scanf("%s%s%s%s",vi.name,vi.sex,vi.tel,vi.addr);getchar();/输入相关信息printf("nOK!");参数含义:m线性表的空间大小v指向线性表表头的指针n线性表的长度i电话簿信息在表中的位置3、Input2()函数原型:voidinput2(structtelbook*v,intm,intn)/输入函数2,由文件导入inti;FILE*fp;/定义一个指向文件的指针if(fp=fopen("telbook.txt","r")=NULL)printf("n打开文件失败!");exit(0);for(i=0;i<n;i+)fscanf(fp,"%s%s%s%s",vi.name,vi.sex,vi.tel,vi.addr);fprintf(fp,"%s%s%s%s",&vi.name,&vi.sex,&vi.tel,&vi.addr);printf("n成功从文件中导入了%d个信息!n",n);参数含义:m线性表的空间大小v指向线性表表头的指针n线性表的长度i电话簿信息在表中的位置4、output()函数原型:电话簿管理系统-课程设计报告第4页共17页voidoutput(structtelbook*v,intm,intn)/输出函数inti;printf("n以下是全部电话簿信息:");printf("n-");printf("nt姓名t性别t电话t地址t");for(i=0;i<n;i+)printf("nt%st%st%st%st",vi.name,vi.sex,vi.tel,vi.addr);printf("n-");参数含义:m线性表的空间大小v指向线性表表头的指针n线性表的长度i电话簿信息在表中的位置5、insert()函数原型:voidinsert(structtelbook*v,intm,intn)/定义插入函数inti;if(n>m)printf("n存储空间已满,请停止插入!");/实际长度超出了表的容量elseprintf("n你还可以添加%d个信息:",m-n+1);/输入信息printf("n姓名,性别,电话,地址:");scanf("%s%s%s%s",&vi.name,&vi.sex,&vi.tel,&vi.addr);getchar();printf("n成功添加信息n");参数含义:m线性表的空间大小v指向线性表表头的指针n线性表的长度i电话簿信息在表中的位置6、search1()函数原型:voidsearch1(structtelbook*v,intm,intn)/按电话号码查找inti;chartel120;printf("n请输入你要查找信息的电话号码:");scanf("%s",&tel1);for(i=0;i<=n;i+)if(strcmp(tel1,vi.tel)=0l)break;if(i>n)printf("n对不起,没有你要查找的相关信息!");电话簿管理系统-课程设计报告第5页共17页elseprintf("n你所查找的信息如下:");printf("nt姓名t性别t电话t地址t");printf("nt%st%st%st%st",vi.name,vi.sex,vi.tel,vi.addr);参数含义:tel1查找时输入的电话号码m线性表的空间大小v指向线性表表头的指针n线性表的长度i电话簿信息在表中的位置7、search2()函数原型:voidsearch2(structtelbook*v,intm,intn)/按姓名查找inti;charname120;printf("n请输入你要查找姓名:");scanf("%s",name1);for(i=0;i<=n;i+)if(strcmp(name1,vi.name)=0)break;if(i>n)printf("n对不起,没有你要查找的信息!");elseprintf("n你所查找的信息如下:");printf("nt姓名t性别t电话t地址t");printf("nt%st%st%st%st",vi.name,vi.sex,vi.tel,vi.addr);参数含义:name1查找时输入的姓名m线性表的空间大小v指向线性表表头的指针n线性表的长度i电话簿信息在表中的位置8、search3()函数原型:voidsearch3(structtelbook*v,intm,intn)/按地址查找inti;charaddr150;电话簿管理系统-课程设计报告第6页共17页printf("n请输入你要查找地址:");scanf("%s",addr1);for(i=0;i<=n;i+)if(strcmp(addr1,vi.addr)=0)break;if(i>n)printf("n对不起,没有你要查找的信息!");elseprintf("n你所查找的信息如下:");printf("nt姓名t性别t电话t地址t");printf("nt%st%st%st%st",vi.name,vi.sex,vi.tel,vi.addr);参数含义:addr1查找时输入的地址m线性表的空间大小v指向线性表表头的指针n线性表的长度i电话簿信息在表中的位置9、delet1()函数原型;voiddelet1(structtelbook*v,intm,intn)/按电话号码删除相关信息inti;chartel120;printf("n请输入你想要删除信息的电话号码:");/输入要删除信息的电话号码scanf("%s",&tel1);for(i=0;i<n;i+)if(strcmp(tel1,vi.tel)=0)/从第一个开始查找,找到后删除break;if(i>=n)printf("n没有找到你要删除的相关信息!");/若超出了表,则不存在此号码elsefor(i=0;i<n;i+)vi=vi+1;printf("n删除成功!");参数含义:tel1删除时输入的电话号码m线性表的空间大小v指向线性表表头的指针n线性表的长度i电话簿信息在表中的位置10、delet2()电话簿管理系统-课程设计报告第7页共17页函数原型:voiddelet2(structtelbook*v,intm,intn)/按姓名删除信息inti;charname120;printf("n请输入你要删除的信息的机主姓名:");/输入要删除信息的机主姓名scanf("%s",name1);for(i=0;i<n;i+)if(strcmp(name1,vi.name)=0)break;/从第一个开始查找,找到后删除if(i>=n)printf("n对不起,没有找到你要删除的信息!");/若超出了表,则存在此姓名elsefor(i=0;i<n;i+)vi=vi+1;printf("n删除成功!");参数含义:name1删除时输入的姓名m线性表的空间大小v指向线性表表头的指针n线性表的长度i电话簿信息在表中的位置11、delet3()函数原型:voiddelet3(structtelbook*v,intm,intn)/按地址删除信息inti;charaddr120;printf("n请输入你要删除的信息的机主姓名:");/输入要删除信息的地址scanf("%s",addr1);for(i=0;i<n;i+)if(strcmp(addr1,vi.addr)=0)break;/从第一个开始查找,找到后删除if(i>=n)printf("n对不起,没有找到你要删除的信息!");/若超出了表,则不存在此地址elsefor(i=0;i<n;i+)vi=vi+1;printf("n删除成功!");参数含义:addr1删除时输入的地址m线性表的空间大小v指向线性表表头的指针