您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 数据结构课设-(1)
南通大学计算机科学与技术学院数据结构课程设计班级:软件外包111学号:1113122001姓名:张艳娇1通讯录管理系统的设计与实现班级:软外111学号:1113122001姓名:张艳娇一需求分析通讯录是用来记载和查询联系人通讯信息的工具。电子通讯录已成为手机、电子词典等电子设备中不可缺少的工具软件!请设计一个能够满足这种话需求的软件。(1)设计要求:①设计通讯录数据的逻辑结构和物理结构②通讯录至少包括下列数据信息:姓名、电话、单位③完成输入,显示,查找,插入,删除,保存,读入,排序,修改,移动,退出等基本功能④软件易用,操作简单⑤根据自己使用通讯录的体会,扩充其他功能,如按姓名查找,按号码查找,按序号删除等⑥设计足够多的测试用例(2)案例设计:合理的设计:ID姓名单位住址电话1张三计0012-102130000000012李四计0023-103138000000023王五计0032-204136000000034陈六计0013-30313600000006不合理的设计:6钱八软0023-20113600000007二概要设计(1)功能划分与定义,功能结构图2(2)数据的逻辑设计、抽象的数据类型描述structt{charID[3];charName[8];//姓名charDepart[20];//单位charAddress[30];//住址charTEL[12];//电话};三详细设计(1)存储设计:012345…….i…….N(2)界面设计:退出输入修改显示查找插入删除保存读入排序移动主程序菜单选择结束3数据的输入输出均从文本中实现数据的输入读取:数据的输出保存(实现添加操作后的输出):(3)各功能的算法描述:①输入读取数据:intInput(t*pt)//从文本中读取数据{cout*********正在读取文件信息,请稍后……*********\n;inti;ifstreamin(info.txt);if(!in)//打开不成功{cout***********不能打开文件***********\n;return1;}for(i=0;in;i++,pt++)//打开成功后一一读取,直到读完为止4{inpt-IDpt-Namept-Departpt-Addresspt-TEL;}in.close();cout*********数据读入成功!*********\n;cout---------------------------------------\n;returni-1;//顺便统计读入的数据个数}②输出保存数据:intOutput(t*pt,intSize)//把数据写入文件{ofstreamout(out.txt);if(!out)//打开不成功{coutfailedtoopenout.txt!!\n;exit(1);}for(inti=0;iSize;i++,pt++)//打开成功,依次写入文件{outpt-ID\tpt-Name\tpt-Depart\tpt-Address\tpt-TELendl;}out.close();return1;}③插入信息:intInsert(t*pt,intSize)//往文件中插入数据{inti,size;cout请输入要插入数据的个数:;cinsize;for(i=0;isize;i++)//从键盘输入数据在写入文件{cout--ID、姓名、单位、住址、电话--\n;cinpt[Size+i].IDpt[Size+i].Namept[Size+i].Departpt[Size+i].Addresspt[Size+i].TEL;}if(Output(pt,Size+size))//判断数据写入是否成功{cout********恭喜!数据插入成功********\n;}5else{cout********操作失败,请稍后再试!********\n;}returnSize+size;}④删除信息:voidDelete(t*pt,intSize)//按序号删除信息{charid[3],choice;inti=0;cout---请输入要删除信息的ID:---\n;cout---------------------------------------\n;cinid;while(iSize&&strcmp(pt-ID,id))//同查找,找到后跳出{pt++;i++;}if(!strcmp(pt-ID,id))//找到了,删除信息!{cout您要删除的信息为:\n;coutpt-ID\tpt-Name\tpt-Depart\tpt-Address\tpt-TEL;cout是否确认删除?(y/n)\n;cinchoice;switch(choice){case'y':pt-ID[0]='\0';pt-Name[0]='\0';pt-Depart[0]='\0';pt-TEL[0]='\0';pt-Address[0]='\0';if(Output(pt,Size))//将新信息写入文件{cout---恭喜!信息删除成功!!---\n;;cout---------------------------------------\n;}else{cout---操作失败,请稍后再试!!---\n;cout---------------------------------------\n;6}case'n':break;default:cout选择有误!\n;break;}}else{cout---抱歉,没有找到相关信息!!---\n;cout---------------------------------------\n;}}⑤按姓名查找:voidSearch_name(t*pt,intSize)//按姓名查找信息{inti=0;charname[8];cout---请输入要查询信息的姓名:---\n;cout---------------------------------------\n;cinname;while(iSize&&strcmp(pt-Name,name))//同上,查找{pt++;i++;}if(!strcmp(pt-Name,name))//找到后输出{cout---查到的信息为:\n;cout-------------------------------------------------------\n;coutID\t姓名\t单位\t住址\t电话\n;cout-------------------------------------------------------\n;coutpt-ID\tpt-Name\tpt-Depart\tpt-Address\tpt-TELendl;cout-------------------------------------------------------\n;}else{cout---抱歉,没有找到相关数据---\n;cout---------------------------------------\n;}}7⑥按电话查找:voidSearch_tel(t*pt,intSize)//按电话查找信息{inti=0;chartel[12];cout---请输入要查询信息的电话:---\n;cout---------------------------------------\n;cintel;while(iSize&&strcmp(pt-TEL,tel))//同上,查找{pt++;i++;}if(!strcmp(pt-TEL,tel))//找到后输出{cout---查到的信息为:\n;cout-------------------------------------------------------\n;coutID\t姓名\t单位\t住址\t电话\n;cout-------------------------------------------------------\n;coutpt-ID\tpt-Name\tpt-Depart\tpt-Address\tpt-TELendl;cout-------------------------------------------------------\n;}else{cout---抱歉,没有找到相关数据---\n;cout---------------------------------------\n;}}⑦显示信息:voidDisplay(t*pt,intSize)//显示信息{inti;coutID\t姓名\t单位\t住址\t电话\n;cout-------------------------------------------------------\n;for(i=0;iSize;i++,pt++)//依次输出文件中的信息{coutpt-ID\tpt-Name\tpt-Depart\tpt-Address\tpt-TELendl;cout-------------------------------------------------------\n;}}8⑧修改信息:voidChange(t*pt,intSize)//修改数据{voidDisplay();inti=0;charid[3];charname[8];chardepart[20];chartel[12];charaddress[30];cout---输入要修改信息的姓名:---\n;cout---------------------------------------\n;cinname;while(iSize&&strcmp(pt-Name,name))//遍历数组,查找数据,若查到跳出循环{pt++;i++;}if(!strcmp(pt-Name,name))//如果找到,则开始修改{cout请输入修改后的ID、姓名、单位、住址、电话:\n;cinidnamedepartaddresstel;strcpy(pt-ID,id);strcpy(pt-Name,name);strcpy(pt-Depart,depart);strcpy(pt-Address,address);strcpy(pt-TEL,tel);if(Output(pt,Size))//将修改信息写入文件,并判断是否写入成功{cout---恭喜!信息修改成功!!--\n;;cout---------------------------------------\n;}else{cout---操作失败,请稍后再试!!---\n;cout---------------------------------------\n;}}else{cout---抱歉,没有找到相关信息!---\n;cout---------------------------------------\n;}9}⑨按电话索引排序:voidSort_tel(t*pt,intSize)//按电话排序{cout按号码排序为:\n;coutID\t姓名\t单位\t住址\t电话\n;cout--------------------------------------------------
本文标题:数据结构课设-(1)
链接地址:https://www.777doc.com/doc-7332087 .html