




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计电话簿管理系统VER1.0系 别 :计算机科学与技术系专业(班级):电子信息科学与技术2班 姓名徐楚奇 学号51202022022指导教师:赵翔完成日期: 2014年11月7日目 录摘要3第一章前言4第二章 电话簿管理系统介绍52.1 流程图52.2 程序编写概要6第三章 主要功能实现73.1 删除功能设计73.2 添加功能设计7第四章源程序9第五章总结心得23致谢24参考文献24摘要本次课程设计的题目是个人通讯录管理系统,要求将程序中所输人的联系人姓名、电话、QQ、MSN和地址信息这些数据以文本的方式保存,并且能够对所储存的联系人信息进行显示、查询、修改、删除等功能。 本文通过利用模块化程序设计思想,使用单链表和结构体等编写出的可以实现存储、打印、删除等功能的电话簿管理系统。通过完成这个课程设计让我们熟悉并掌握在c语言中使用结构体、单链表,指针,函数,和模块化设计思想。关键词 结构体,链表,指针,函数第一章 前言 在前面我们学习了c语言的一些基础知识对c语言有了初步的认识和了解,为了让我们更加全面地了解c语言程序设计的步骤和方法,在老师的指导下 我们进行了一次综合实训。设计一个简单的电话簿管理系统,可以存储,删除等电话号码。为了方便使用DEV-C+来编写程序,可以添加汉字备注方便理解程序。根据前面所学的单链表、指针、函数、结构体等知识在使用模块化设计思想去编写。设计“通讯录管理系统”使其具有数据插入、修改、删除、显示和查询等功能。使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。其功能包括以下各项:1)数据包括:人名、电话号码。2)可对记录中的姓名和电话号码进行修改。3)可增加或删除记录。4)可显示所有保存的记录。第二章 电话簿管理系统介绍2.1 流程图电话簿管理系统因具备以下功能有流程图表示,如下图2.10电话簿管理系统新建一个电话簿插入新的记录打印所有记录读取文件保存当前输入的内容退出系统查找功能添加新记录图2.102.2程序编写概要1 主函数 main()主函数使用户进入电话簿管理系统主界面用户选择界面,用户可以选择要使用的功能并选择相应的选项进入该功能。使用printf函数和switch case结构来编写主函数。2 creat()函数creat函数用来建立新的电话号码簿,用户可以通过它来向系统输入数据。为下面的操作提供数据。3 delete函数delete函数用来删除不需要的数据,可以用单链表来实现,并要记住用free函数来释放被删除链表的空间,避免浪费空间。4 save函数当需要保存已输入的数据时就需要用到save函数,该函数可以将数据存储到指定的地方为以后使用。5 load函数顾名思义load函数是将所存的数据从文件所在位置读取出来以便做打印等处理。6 search函数当存入很多文件时候,再用普通的方法打印输出所有数据再查找文件中的目标文件就会很麻烦,这时你需要从已存文件中快速找出你所想要的用户的电话号码就要选择此功能,他可以快速找出你所输入用户名的电话号码,简单方便。7 append函数Append函数用来像已有的文件中添加新的电话号码文件。8 modify函数在你无意中或心急的时候很有可能将数据输入错误,所以你还需要具有修改数据的功能,将错误的数据重新输入在进行保存工作,确保数据的正确性,modify函数具有该功能。第3章 主要功能实现3.1 删除功能设计 单链表中的元素是可以删除的,要想删除指定的元素逻辑上是把它从单链表中分离出来,并调用free函数释放其储存空间。 算法如下: 删除链表中的第i个结点,就是要让其前驱的指针绕过该结点,指向该结点的后续结点。假设指针P已经指向链表中的第i-1个结点,如图3.10所示。则删除ai结点最基本的操作可以用一条语句实现:p-next=p-next-next。ai+1NULLa1aiai-1 head p图3.10这样操作会浪费掉所有删除的结点空间。如果被删除的结点不再使用了,则释放其存储空间,因此需要按如下方式实现:temp=p-next;p-next=temp-next;free(temp);3.2 添加功能设计 链表的插入是指将一个结点插入到一个已有的链表中去。 算法如下: 首先产生新结点,并放入数据,然后搜索要插入的位置,再将结点连入到已有链表中。设指针p已经指向了ai-1结点,且要插入结点(值为data)由s指向,如图3.20所示,则插入的操作由下面两个语句来实现。 s-next=p-next; p-next=s; 上面的两条插入语句顺序不可颠倒。 P ai-1 ai X data S 图3.20第四章 源程 序#include#includetypedef struct contactschar name20;/your friends namechar tele20;/your friends telephonechar QQ15 ;/your friends QQ (0- 4294967295)char e_mail30;/your friends E-mailstruct contacts *pre;struct contacts *next;CON;void Dis_menu(void)printf(n*MENU*n n );printf(1. New Contact.n);printf(2. Edit Contact.n);printf(3. Search Contact. n );printf(4. Delete Contact. n);printf(5. Show All Contact. n);printf(6. Exit The System. n);printf(*n );int Menu_chose(void)int chose;Dis_menu();Lp:printf(Please Input you choice (1 6):);scanf(%d,&chose);if(chose 0)return chose;elseprintf(Warning! );goto Lp;void Con_input(CON *load)if(load = NULL)printf(Failded In malloc for new node! n);return ;printf(n Please Input Friends Name:n);scanf(%s,load-name);printf( Please Input Friends Mobile:n);scanf(%s,load-tele);printf( Please Input Friends QQ:n);scanf(%s,load-QQ);printf( Please Input Friends E-mail:n);scanf(%s,load-e_mail);printf(n);CON *Insert_contact(CON *head,CON *load)if(head=NULL)/The fist friendload-pre=NULL;load-next=NULL;head=load;printf(Check_1);elsehead-pre=load;load-next=head;load-pre=NULL;head=load;printf(Check_2);return head;/chose 1 New ContactCON *Add_contact(CON *head)CON *load=(CON *)malloc(sizeof(CON);Con_input(load);head=Insert_contact(head,load);return head;CON *read_file(CON *head)FILE *fp=fopen(/home/kuye/phone,rb+);int ret=0;while(feof(fp)=0)CON *load=(CON *)malloc(sizeof(CON);if(load=NULL)printf(%s%d:failed in mallocn,_FUNCTION_,_LINE_);fclose(fp);return NULL;ret=fread(load,sizeof(CON),1,fp);printf(ret = %dn,ret);if(ret=1)head=Insert_contact(head,load);elsefree(load);return head;/chose 2 Edit Contactvoid Edit_name(CON *load)if(load=NULL)printf( Please Check You Input );return ;Con_input(load);/chose 3 Search ContactCON *find_name(CON *head)CON *load = head;char Found_name20;printf(Please Enter To Your Contact Name :n);scanf(%s,Found_name);while(load != NULL)if(strcmp(load-name ,Found_name)=0)return load;load = load-next;printf( Its not Find ! n);return NULL;/chose 4 Delete Contact.CON* Delete_name(CON *head)CON*load = head;load = find_name(head);if(head-pre=NULL&head-next=NULL)free(head);return NULL;if(head-pre=NULL)head-next-pre=NULL;head=head-next;free(head);return head;else if(load-next=NULL)load-pre-next=NULL;free(load);return head;else load-next-pre=load-pre;load-pre-next=load-next;free(load);return head;/chose 5 Show All Contact.void show_all_nodes(CON *head)CON *load = NULL;load = head;printf(n-ALL CONTACT-n);if(load = NULL)printf( NULL.You Can choce Menu 1 To ADD Contact);printf(n-n);while(load != NULL)printf( Name : %s n Tele : %s n Q Q : %s n E-mail: %s n,load-name,load-tele,load-QQ,load-e_mail);printf(n-n);load=load-next;void delete_all_nodes(CONT *head)CON *load=head;CON *pNext=NULL;int ret;FILE *fp=fopen(/home/kuye/phone,wb+);if(fp=NULL)printf(failed in open written filen);return ;while(load!=NULL)head=load-next;ret=fwrite(load,sizeof(CONT),1,fp);printf(ret= %dn,ret);free(load);load=head;fclose(fp);int main()int chose;char Sure;CON *pst=NULL;CON *fd=NULL;pst=read_file(pst);while(1)chose = Menu_chose();switch(chose)case 1:/Newprintf(n-NEW CONTACT-);pst=Add_contact(pst);break;case 2:/Editprintf(n-EDIT CONTACT-n);fd =find_name(pst);Edit_name(fd);break;case 3:/Searchfd = find_name(pst);if(fd != NULL)printf(n-SEARCH CONTACT-n);printf( Name : %s n Tele : %s n Q Q : %s n E-mail: %s n,fd-name,fd-tele,fd-QQ,fd-e_mail);printf(-n);break;case 4:/Deletepst = Delete_name(pst);break;case 5:/Showshow_all_nodes(pst);break;case 6:/Exitprintf( Are you Sure Exit? (Y/N) n );LOOP:scanf(%s,&Sure);if(Sure = Y|Sure = y)delete_all_nodes(pst);return 1;else if(Sure = N|Sure = n);else printf( Warning ! Please Input Y/N. n );goto LOOP;break;return 1;第五章 总结心得 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,而在学期末我们也进行了一次C语言程序设计,对我们来说也是进入大学的第一次,很有难度,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年木材加工、处理机械项目申请报告
- 水龙吟-苏轼课件
- 机电设备安装调试与验收方案
- 水粉插画基础知识培训课件
- 混凝土施工中预应力钢筋张拉技术方案
- 基础设施施工工艺优化
- 混凝土施工的临时设施搭建与管理方案
- 城镇集中供热的用户需求与服务管理方案
- 水痘和腮腺炎培训课件
- 用户体验设计42课件
- 2025年3到6岁幼儿发展指南考试试题及答案
- 2025年光伏施工安全试题及答案
- 翻越您的浪浪山新学期开学第一课+课件
- 宏图煤矿防突设计2025.9.8
- 贵州航空产业城集团股份有限公司,贵州安立航空材料有限公司招聘笔试题库2025
- 奇瑞购销协议书范本
- 社区模拟试题和答案
- 银行测试管理办法
- 2025年技师(二级)养老护理员职业技能鉴定《理论知识》真题卷(后附答案和解析)
- 境外常驻人员管理办法
- 2025至2030中国城市地下管线探测行业发展状况与投资策略分析报告
评论
0/150
提交评论