您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > c语言个人通信录管理系统课程设计报告
高级语言程序设计报告(个人通信录管理系统)院系:通信与信息工程学院班级:通信工程1104班成员:杨文刚(1107020420)李岩(1107020421)王皓升(1107020417)罗洋(1107020418)沈洋(1107020419)王志旭(1107020422)时间:2012年7月2日基于链表的个人通信录管理系统课程设计任务书课程设计情况课程设计名称基于链表的个人通信录管理系统指导教师姓名职称需学生数6人组长杨文刚成员李岩、王皓升、罗洋、王志旭、沈洋各成员主要负责内容杨文刚负责主体函数框架建立和函数模块整合李岩负责程序的添加模块王皓升负责程序的删除模块王志旭负责程序的查找模块罗洋负责程序的输出模块沈洋负责程序的输入模块程序的调试和测试由小组成员共同参与完成课程设计的报告撰写由杨文刚、李岩完成-1-目录1.设计目的…………………………………………………12.总体设计…………………………………………………23.详细设计…………………………………………………34.程序调试与测试……………………………………………55.程序清单与执行结果………………………………………65.1程序清单………………………………………………………………65.2程序执行结果…………………………………………………………146.课程设计总结………………………………………………20-1-1.设计目的1.1问题描述编写一C语言程序,其功能是建立一个基于链表的个人通信录管理系统,个人通信录进行建立、输出、添加、查找及删除运行结果进行打印等相关操作。1.2问题分析首先,选择合适的存储结构构造个人通信录,对该程序可以分为几个模块进行分析,每个模块在该程序中的作用进行了解。最后用设计连接图将各模块之间的联系连接起来,以方便我们更容易理解。然后,该程序需要一个详细的设计流程图来表示各个步骤所完成的先后顺序,(如,对个人通信录进行添加,查找输出打印结果)。最后,按流程图进行编写个人通信录的程序,输出结果,并将打印的结果显示出。1.3设计分析本次实验设计主要是建立个人通信录,要实现个人通信录的建立,个人通信录的查找,个人通信录的添加及个人通信录的删除功能。.设计需求上我们需要掌握以下几点:(1).设计部分1.写出本次实验的详细设计方案。2.画出该次程序的流程图。3.分析该次程序的程序清单,进行程序测试并输出运行结果。4.对该次程序中个函数的功能分析结果。5.对该次实验完成后有总结。(2).设计大纲1.了解,分析这次实验的主要问题。2.讨论解决问题的方案。3.分配组员的个人任务。4.进行各部分的整合、修改、完善。5.进行这次实验的总体报告实验总结。-2-2.总体设计2.1程序设计组成框图图12.2流程图开始菜单选择建立输出添加查找删除信息输入信息删除信息查找信息添加信息输出按身份证号查找结束否否否否否是是是是是个人通信录主函数模块个人通信录建立模块个人通信录输出模块个人通信录添加模块个人通信录删除模块个人通信录查找模块-3-3.详细设计3.1模块功能说明3.1.1通信录建立模块创建链表,并返回表头指针{创建新节点;while(判断读入编号){读入联系人信息;保存到指定的域;指针指向下一新节点;}}3.1.2通信录输出模块{按指定格式输出通讯录表头信息;if(头指针不为空){按指定格式输出联系人信息;记录联系人数;}else通信录为空;}3.1.3通信录添加模块{新建节点;屏幕提示输入要添加的联系人信息;读入联系人信息;按联系人编号升序排序;}-4-3.1.4通信录删除模块{提示输入要删除的联系人编号;读入编号信息;if(找到){输出找到的联系人信息;询问是否删除该联系人;}else提示没有该联系人;}3.1.5通信录查找模块{提示输入要查找的联系人身份证号;读入身份证号信息;If(找到)显示查找到的联系人信息;else提示没有该联系人;}-5-4.程序调试与测试参照教材编写完程序的各个模块后,我们将各个模块和主函数整合,运行之后主要存在以下几个问题:1.程序输出信息部分不正确运行程序,输入通信录中联系人信息后,程序输出的电话号码和身份证号信息错误,有时还会出现负数。经过查找发现在读入联系人信息时,这两项采用了长整型数据类型,但是长整型最大支持的值仍然小于电话号码和身份证号的值。我们换用字符串类型读入信息后为问题解决。2.结束联系人信息的输入(以数字0结束)存在问题运行程序,我们在输入联系人信息完毕后是用数字0结束的,但是当我们输入完信息后,得将下一个联系人的所有信息全部输入为数字0时,程序才会结束输入。针对这个问题我们修改了输入模块的循环体顺序,让程序先判断输入的联系人编号是否为0,是0时结束输入,不是0时继续读入联系人信息。这样在我们结束输入时只需按一次0即可结束输入。3.联系人的查找存在问题我们在查找(用身份证号)联系人时,当我们输入通信录中存在的联系人的身份证号时,程序能准确查找到该联系人;但当我们输入的身份证号信息在通信录中不存在时,程序会非法结束。为此,我们请教了老师,修改了if语句中的判断条件,程序能够在我们输入的身份证号信息不存在时正常提示“通信录中没有该联系人”,问题解决。因为我们的程序是根据教材中的程序编写的,所以在调试过程中,程序没有出现大的错误,在模块连接上也没有问题,只是有一些输入输出以及一些循环体上的错误。-6-5.程序清单与执行结果5.1程序清单/*主控菜单程序*/#includestdio.h#includestdlib.h#includestring.hstructper/*定义结构体类型*/{longintnum;charname[20];chartel[12];charmail[30];charadd[50];longintmnum;charid[18];structper*next;};structper*jianli();/*声明建立通信录函数*/voidshuchu(structper*head);/*声明输出通信录函数*/structper*tianjia(structper*head);/*声明添加联系人函数*/structper*shanchu(structper*head);/*声明删除联系人函数*/structper*chazhao(structper*head);/*声明查找联系人函数*/structper*head=NULL;voidmain()/*主函数*/{intselect;intpass1;intpass=123456;printf(\n欢迎使用个人通信录管理系统,请输入登录密码:);scanf(%d,&pass1);if(pass==pass1){printf(\n登录成功!\n\n);do{-7-printf(\n\t*****************欢迎进入个人通信录管理系统******************\n);/*主控菜单*/printf(\n\t-----------------1:建立通信录-----------------);printf(\n\t-----------------2:输出通信录-----------------);printf(\n\t-----------------3:添加联系人-----------------);printf(\n\t-----------------4:删除联系人-----------------);printf(\n\t-----------------5:查找联系人-----------------);printf(\n\t-----------------0:退出系统-----------------\n);printf(\n\t***************************************************************\n);printf(\n\t请选择(0---5):);scanf(%d,&select);printf(\n);switch(select)/*对应模块函数*/{case1:head=jianli();break;case2:shuchu(head);break;case3:head=tianjia(head);break;case4:head=shanchu(head);break;case5:head=chazhao(head);break;case0:break;default:printf(您的输入有误,请重新输入(0---5):\n);}}while(select!=0);}elseprintf(\n对不起,您输入的密码不正确,请按任意键退出程序!!!\n\n);-8-}/*建立通信录函数*/structper*jianli()/*创建链表,并返回表头指针*/{structper*head;/*表头*/structper*p1;/*新建节点*/structper*p2;/*表尾节点*/longintnum1;charname1[20];chartel1[12];charmail1[30];charadd1[50];longintmnum1;charid1[18];head=NULL;/*无任何节点,表头指向空*/printf(请输入联系人编号、姓名、电话、身份证号、邮箱、地址及邮编(用空格分隔,用0结束)\n);scanf(%d,&num1);while(num1!=0)/*假设num=0表示输入结束*/{scanf(%s%s%s%s%s%d,name1,tel1,id1,mail1,add1,&mnum1);/*读入第一个联系人的信息*/p1=(structper*)malloc(sizeof(structper));/*新建一个节点*/p1-num=num1;/*存入联系人的信息*/strcpy(p1-name,name1);strcpy(p1-tel,tel1);strcpy(p1-id,id1);strcpy(p1-mail,mail1);strcpy(p1-add,add1);p1-mnum=mnum1;p1-next=NULL;/*将next域置为空,表示尾节点*/-9-if(head==NULL)head=p1;/*第一个新建节点是表头*/elsep2-next=p1;/*原表尾的下一个节点是新节点*/p2=p1;/*新建节点成为表尾*/scanf(%d,&num1);}returnhead;/*返回表头指针*/}/*输出通信录函数*/voidshuchu(structper*head){structper*p;intn=0;/*统计节点数,即联系人数*/printf(\n\t*******************通*******信*******录*******************\n);printf(\n%-5s%-12s%-12s%-19s%-17s%-9s%-7s\n,编号,姓名,电话号码,身份证号,邮箱,地址,邮编);if(head!=NULL){for(p=head;p!=NULL;p=p-next)/*如果到达尾节点退出循环,否则继续*/{printf(%-5d%-12s%-12s%-19s%-17s%-9s%-7d\n,p-num,p-name,p-tel,p-id,p-mail,p-add,p-mnum);n++;}printf(联系人总数:%d\n\n,n);}else-10-printf(\n对不起,该通信录中没有任何联系人!\n\n);}/*添加联系人函数*/structper*tianjia(structper*head){structper*p;structper*p1;structper*p2;p2=head;p=(structper*)malloc(sizeof(structper));/*新建节点p*/printf(请输入要添加的联系人
本文标题:c语言个人通信录管理系统课程设计报告
链接地址:https://www.777doc.com/doc-4804095 .html