欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    课程设计通讯录管理系统设计与实现.docx

    • 资源ID:1892747       资源大小:631.42KB        全文页数:33页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    课程设计通讯录管理系统设计与实现.docx

    1、课程设计通讯录管理系统设计与实现 数据结构 课程设计任务书一、设计题目、内容及要求1、设计题目:通讯录管理系统设计与实现。2、设计内容及要求: (1)查询功能:可以通过姓名、电话号码和类别进行查询,显示查询结果。类别可分为三种:(A) 亲属类 (B) 朋友类 (C) 工作类。(2)增加功能:能够录入新数据(包括:姓名、电话号码、类别、电子邮件等信息)例如:张三,1386665555,朋友类,zhangsan当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过20条信息时,存储空间已满,不能再录入新数据。(3)修改功能:能够对通讯录中的记录进行修改。(4)删除功能:能够对

    2、通讯录中的记录进行删除。二、要求的设计成果(课程设计说明书、设计实物、图纸等)1、用C语言进行程序设计,实现系统的功能。注重算法效率,代码要有适当的注释;2、撰写课程设计说明书一份,不少于2000字。课程设计说明书应包括封面、任务书、成绩评定表、正文(设计思路、设计步骤等)、参考文献(资料)、附录(程序代码)等内容。三、进程安排1月4日:进行需求分析,确定系统的主要功能和算法思路;1月5日1月6日:进行详细设计,确定各模块的算法思路;1月7日1月8日:进行编码实现;1月9日1月10日:进行测试调试,完善设计;撰写设计说明书,准备答辩;1月11日:答辩。四、主要参考资料 1.严蔚敏,吴伟民.数据

    3、结构.清华大学出版社,2007.2.苏仕华.数据结构课程设计.机械工业出版社,2010.3.滕国文.数据结构课程设计.清华大学出版社,2010.指导教师(签名):教研室主任(签名):课程设计成绩评定表出勤情况出勤天数 缺勤天数成绩评定出勤情况及设计过程表现(20分)课设答辩(20分)设计成果(60分)总成绩(100分)提问(答辩)问题情况综合评定 指导教师签名: 年 月 日1引言通讯录是用来记载、查询联系人通讯信息的工具。电子通讯录已成为手机、电子词典等电子设备中不可缺少的工具软件。通讯录管理系统能有效地管理通讯录相关信息,包括输入、查询、添加、修改、删除等功能,该软件给用户提供了一个简单的人

    4、机界面,用户可以根据提示信进行各种操作。本次设计使用的编程语言是C语言。通过设计通讯录管理系统使其具有数据输入、修改、删除、添加、显示和查询等功能。我们可以进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。这个设计可以使我们掌握软件设计的基本内容和设计方法;使我们的软件设计的能力得到规范;使我们掌握使用各种计算机资料和有关参考资料,提高我们进行程序设计的基本能力。2问题分析 本题目主要涉及线性表的基本操作。 通讯录中的记录通常按记载顺序先后有序,因此选用线性表;如果考虑到很少删除联系人,并且新增联系人又添加在表尾,则可采用顺序表;但是

    5、如果考虑到在任何位置插入或删除操作,因涉及经常性的插入和删除,则应优先考虑采用链表。通过上述分析,我选择了单链表存储结构,通讯录存储结构如下struct record char name20; char phonenum20; char type20; char email20; student50; struct slnode record date; struct slnode *next; struct slnode *prior; ; typedef slnode * linklist; linklist l;通讯录中需要有查询功能、增加功能、删除功能和修改功能,所以要建立具有这些功能

    6、的子函数,对程序实现模块化。这其中要用到对链表的删除、插入等知识。删除时用一结构体指针指向链表的第一个结点,检查该节点的值是否等于输入的要删除的,若相等就删除,不相等则后移指针,直至表尾。插入时也要先找到相应结点,再添加;查询功能需要可以用姓名、电话号码、类别等多种方式进行查询;为实现存储功能,需用到文件的相关函数,打开文件,将添加、修改或删除的信息存入磁盘中。3总体设计图1 系统模块结构图添加:系统提示用户添加新人员信息,输入到文件中,人员的信息包含姓名(name)、电话号码(phonenum)、类型(type)、电子邮件(email)。显示:该功能显示所有以保存的人员的姓名、电话号码、类型

    7、和电子邮件。查询:由用户输入要查找的人员姓名、电话号码或者类型,系统将调用查找函数,使用相关文件命令输出所查找人员的相关信息。删除:由用户输入需要删除人员的姓名,系统调用删除函数将此人所有相关信息删除。修改:由用户输入需要修改的人员的姓名,系统调用修改函数,用户修改需修改的信息。保存退出:完成任务,退出系统。4详细设计4.1 录入模块该模块主要实现的功能是从键盘录入人员的信息,人员的信息包含姓名(name)、电话号码(phonenum)、类型(type)、电子邮件(email)。4.1.1设计思路 这个模块通过函数void enter()完成,由于每个人员的信息包含多项,所以需要用一个结构体来

    8、存储,我定义了一个数组结构体studentnum,来存放所有人员的信息。即student1,表示第一个人员。用student1.name表示第一个人员的姓名student1.phonenum,student1.type,student1.email分别表示第一个人员的电话号码、类型和电子邮件。用for循环实现了多个人员的录入,并且在其中运用strcmp比较字符串,当录入重复是将提示,从而避免了录入重复的情况。4.1.2流程图 图2 录入模块程序流程图4.2 显示模块 该模块主要实现的功能是显示所有以保存人员的信息。4.2.1设计思路 这个模块通过函数void display()实现,该函数首先

    9、对系统进行了清屏,然后当num!=0时输出所有以保存人员的相关信息。否则打印该通讯录中无任何记录,并返回主菜单。4.2.2流程图 图3 显示模块程序流程图4.3 查询模块该模块主要实现的功能是对人员的查询,当从键盘上输入某人员的姓名、电话号码或者类型时,与已保存的人员信息进行比较,如相同则输出该人全部信息,否则打印该通讯录无此人。4.3.1设计思路这个模块是在函数void search()中完成的,因为题目中要求无论是通过姓名还是电话号码,或者是类型都可以查询,所以我写了void search1(),void search2(),void search3()三个函数来实现。其中void sea

    10、rch1()是通过姓名来查找的,当输入要查找人员的姓名时,与已保存的人员信息进行比较,如相同则输出该人全部信息,否则打印该通讯录无此人;void search2()是通过电话号码来查找的,当输入要查找人员的电话号码时,与已保存的人员信息进行比较,如相同则输出该人全部信息,否则打印该通讯录无此人;void search3()是通过类型来查找的,当输入要查找人员的型时,与已保存的人员信息进行比较,如相同则输出该人全部信息,否则打印该通讯录无此人。最后在void search()中选择用何种方法查找,从而找到需要查找的人员。4.3.2流程图 图4 查询模块程序流程图4.4 删除模块 该模块主要实现的

    11、功能是删除用户需要删除的人员信息,当用户输入了要删除的人员姓名时,系统会输出这个人员的所有相关信息,由用户确认是否删除,若选择Y,则删除所需要删除的人员的信息并打印删除成功,否则返回主菜单。4.4.1设计思路该功能是通过void delete()来实现的,首先由用户输入要删除的人员姓名,然后进行字符串比较,若有此人则输出他的所有相关信息,系统将提示用户是否确认删除,若选择删除,则链表长度减一并打印删除成功。当此人不是最后一个时,系统将打印是否继续删除相同人员信息,若选择是则继续运行删除函数,否则打印不存在相同姓名人员,并返回主菜单。4.4.2流程图 图5 删除模块程序流程图4.5 修改模块该模

    12、块主要实现的功能是对用户所需修改的人员信息进行修改,当用户输入了要修改的人员姓名时,系统进行字符串比较,若有此人员,系统将打印输入该人员新信息,由用户输入即可。4.5.1设计思路 该模块通过函数void modify()来实现的,首先打开文件由用户输入需要修改的人员的姓名,系统进行字符串比较判断是否有该姓名,如果存在输入该人的新信息进行修改即可。4.5.2流程图 图6 修改模块程序流程图4.6 保存退出模块 该模块主要实现的功能是保存已有记录,然后按任意键退出程序。4.6.1设计思路 该模块通过函数void save()来实现的,该函数主要是把信息存入文件中,并退出程序。4.7 导入模块 该模

    13、块主要实现的功能是从文件中导入人员信息。4.7.1设计思路 该模块通过函数void load()来实现,打开文件进行通讯录建立操作,通过移动指针将通讯录的信息记录在文件中。 5运行测试 图7 程序的开始主菜单页面 图8 程序的录入界面 图9 程序的查询菜单界面 图10 程序的显示界面 图11 程序的按姓名查询界面 图12 程序的按电话号码查询界面 图13 程序的按类型查询界面 图14 程序的删除界面 图15 程序的删除后界面 图16 程序的修改界面 图17 程序的修改后界面 图18 程序的退出界面 6总结 本次课程设计我选择的题目是通讯录管理系统的程序设计。通讯录系统是我们很常用一个小系统,开

    14、始选择题目是感觉这个应该简单点,我自知C语言和数据结构学的都不够好,但做了之后才知道并不简单。不过通过设计这个程序,我从中学到了很多。这个系统中每个人员的信息都要求包括姓名、电话号码、类型和电子邮件。程序具有数据录入、显示、查询、删除、修改、等功能,所以我采用链表实现,其中还应用了数组的知识。在编写过程中,开始我只是简单把一些函数罗列在了一起,毫无逻辑性,导致有的错误看不出来,遇到了不少麻烦,甚至改了好多次都没有成功,不过在老师和同学的帮助下,最终的程序基本实现了所要求的功能,但在一些方面还不够完善。例如在添加模块中,连续输入时可以辨别是否重复,一旦返回主菜单了再次输入时则无法辨别是否与以前所

    15、存储的重复。通过这个小系统的设计我深深的体会到我学习的这些知识还远远不够,为了能做出更好的程序我们必须积累知识,打开思路,因为只有多多练习才能写出较好的程序。总之,这次的课程设计使我体会较大的是应用比理论学习难得多,它涉及到各种实际问题。但实习时所用到的这些知识会有更深的记忆,理解也更加透彻。 参考文献1 严蔚敏,吴伟民数据结构北京:清华大学出版社,2008 2 苏仕华数据结构课程设计北京:机械工业出版社,2010.3 .滕国文数据结构课程设计北京:清华大学出版社,2010. 附录#include #include #include #include struct record char na

    16、me20; char phonenum20; char type20; char email20; student50; struct slnode record date; struct slnode *next; struct slnode *prior; ; typedef slnode * linklist; linklist l; int num=0; FILE *fp; void mainmenu(); void searchmenu(); void enter(); void search(); void search1(); void search2(); void searc

    17、h3(); void display(); void load(); void save(); void delet(); void modify(); void listinsert(); void initlist(); void main() initlist(); load(); listinsert(); while (1) mainmenu(); void load() if(fp=fopen(student.bin,rb)=NULL) printf(ntt通讯录文件不存在); if (fp=fopen(student,wb)=NULL) printf(ntt建立失败); exit

    18、(0); else printf(ntt通讯录文件已建立); printf(ntt按任意键进入主菜单); getch(); return; exit(0); fseek(fp,0,2); if (ftell(fp)0) rewind(fp); for (num=0;!feof(fp) & fread(&studentnum,sizeof(struct record),1,fp);num+); printf(ntt文件导入成功); printf(ntt按任意键返回主菜单); getch(); return; printf(ntt文件导入成功); printf(ntt通讯录文件中无任何纪录); p

    19、rintf(ntt按任意键返回主菜单); getch(); return; void mainmenu() char choic; system(cls); printf(ntt*欢迎进入通讯录系统*); printf(ntt*1新添纪录 *); printf(ntt*2查询菜单 *); printf(ntt*3查找联系人 *); printf(ntt*4删除联系人 *); printf(ntt*5修改信息 *); printf(ntt*6保存退出 *); printf(ntt*); printf(ntt请选择:); choic=getch(); switch (choic) case 1:e

    20、nter();break; case 2:searchmenu();break; case 3:search();break; case 4:delet();break; case 5:modify();break; case 6:save(); default:mainmenu(); void searchmenu() char choic; system(cls); printf(ntt* 查询菜单 *); printf(ntt* 1-显示所有 *); printf(ntt* 2-按姓名查询 *); printf(ntt* 3-按电话号码查询 *); printf(ntt* 4-按类型查询

    21、 *); printf(ntt* 5-返回主菜单 *); printf(ntt*); printf(ntt请选择:); choic=getch(); switch (choic) case 1:display();break; case 2:search1();break; case 3:search2();break; case 4:search3();break; case 5:mainmenu();break; void enter() int i; char name20; printf(ntt* 请输入学生信息 *n); printf(ntt姓名:); scanf(%s,&stude

    22、ntnum.name); printf(ntt电话号码:); scanf(%s,&studentnum.phonenum); printf(ntt类型:); scanf(%s,&studentnum.type); printf(ntt电子邮件:); scanf(%s,&studentnum.email); num+; printf(ntt是否继续添加?(Y/N):); if (getch()=y) printf(输入联系人姓名:n); scanf(%s,&name); for (i=0;inum;i+) if(strcmp(studenti.name,name)=0) printf(ntt*

    23、输入重复 ,按任意键返回主菜单*n); getch(); return; enter(); return; void display() int i; system(cls); if(num!=0) printf(ntt* 以下为通讯录所有信息*); for (i=0;inum;i+) printf(ntt姓名: %s,studenti.name); printf(ntt电话号码: %s,studenti.phonenum); printf(ntt类型: %s,studenti.type); printf(ntt电子邮件: %s,studenti.email); printf(tt); if

    24、(i+1num) printf(ntt_); system(pause); printf(ntt*); else printf(ntt通讯录中无任何纪录); printf(ntt按任意键返回主菜单:); getch(); return; void save() int i; if (fp=fopen(student,wb)=NULL) printf(ntt文件打开失败); for (i=0;inum;i+) if (fwrite(&studenti,sizeof(struct record),1,fp)!=1) printf(ntt写入文件错误!n); fclose(fp); printf(n

    25、tt通讯录文件已保存); printf(ntt按任意键退出程序ntt); exit(0); void listinsert() linklist s,p=l; for(int i=0;idate.name,studenti.name); strcpy(s-date.phonenum,studenti.phonenum); strcpy(s-date.type,studenti.type); strcpy(s-date.email,studenti.email); s-prior=p-prior; s-next=p; p-prior-next=s; p-prior=s; p=p-next; void initlist() l=new slnode;


    注意事项

    本文(课程设计通讯录管理系统设计与实现.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开