课程设计报告书 倪博 完结篇 w.docx
- 文档编号:29174622
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:21
- 大小:22.57KB
课程设计报告书 倪博 完结篇 w.docx
《课程设计报告书 倪博 完结篇 w.docx》由会员分享,可在线阅读,更多相关《课程设计报告书 倪博 完结篇 w.docx(21页珍藏版)》请在冰豆网上搜索。
课程设计报告书倪博完结篇w
课程设计报告书
通信录管理系统设计
班级:
方0953-1
学号:
姓名:
倪博
指导教师:
杨子光
石家庄铁道大学四方学院
2010年7月15日
1.选择题目
题目:
通信录管理系统设计
2.内容摘要
摘要:
随着科技的进步和信息产业的飞速发展,通讯录成为了现代生活中一个重要的工具。
此通讯录管理系统为方便管通讯信息,帮助企业公司职员的联系旨在服务社会。
整个系统程序采用c语言来实现。
c语言是目前国际上比较流行的计算机高级编程语言之一,因其简洁、使用方便且具备强大的功能而受到编程人员的普通青睐。
它既适合作为系统描述语言,也可用来编写系统软件,还可用来编写应用软件。
用C/C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。
本文介绍课程设计课题的选题意义,说明了本系统提供的主要功能:
查询,修改,添加,删除等,并画出功能框图,最后给出了作者在小学期设计过程的体会。
3.索引关键字
关键词:
通讯录管理,查询,添加,功能框图
4.目录
1.题目要求4
2.设计思想
3.系统完成功能及框图
4.界面设计
5.核心算法及说明---8
6.结论-11
7.后记-11
8.参考资料
5.正文
5.1课程设计题目要求
5.1.1实验目的
培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应信息管理行业日新月异的发展形势;
本次实验是以学生独立思考解决问题为主,教师指导为辅,结合上机操作,完成指定的任务,作出设计报告。
5.1.2设计要求
◆(建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子邮箱等;
◆能够提供添加、删除和修改通讯录信息的功能;
◆能够提供安不同方式查询的功能;如按姓名或年龄、电话等查询;
◆将通讯录保存在文件中;
◆能够按表格方式输出通讯录信息。
设计一个实用的通讯录管理系统,能以简便高效的方式对通讯录进行管理和检索。
5.2设计思想
1.在设计时考虑以下几个方面:
操作简单。
该系统要求设计的界面美观,操作方便。
便于使用人员快速上手。
易于维护。
一个软件的好坏,关键在于产品的可靠,稳定,便于维护。
易于升级。
随着社会的发展,对系统的要求会越来越高。
要求系统具有更高的安全性;更丰富的功能以及更快的操作速度。
所以在设计时要考虑到到以后的升级问题。
实用性。
注重采用成熟而实用的技术,使系统建设的投入产出比最高,
能产生良好的反应。
2.开发语言的选择
本系统的编译选择的是C语言,作为一种计算机程序设计语言,C语言既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。
C语言具有简介紧凑、灵活方便、运算符丰富、数据结构丰富、语法限制不太严格、程序自由度大、程序执行效率高、可移植性好等优点。
它既能用来编写不依赖计算机硬件的应用程序,又能用来编写各种系统程序,它是一种受欢迎、应用广泛的程序设计语言。
综上所述,选择C语言作为本系统的编译时非常适合的。
5.3系统完成功能及功能框图
添加:
可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱后,会提示是否继续添加。
显示:
可以以表格形式输出所有通讯录里的记录
删除:
输入欲删除的那个人的名字后,会自动删除他(她)的记录内容
查询:
可以选择用姓名、电话、地址三种方式查询
修改:
输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱即可完成修改
保存:
,输入文件名(带后缀名)后,即可将通讯录信息保存到文件
5.4界面设计
本系统针对,信息查询和修改做了5个界面,下面举例说明部分界面得设计。
5.4.1建立一个登录界面
建立一个界面做登录界面,包括信息录入和信息查询
5.4.2添加通讯录信息
5.4.3保存记录界面
5.5核心算法及说明
1、运用顺序程序设计结构,考查getchar,printf,scanf的知识点,例如:
printf("请输入便条的数量:
");
scanf("%d",&num);
2、运用循环设计结构,考查for,if……else循环的知识点,例如:
for(j=i;j { strcpy(per[j].num,per[j+1].num); strcpy(per[j].name,per[j+1].name); strcpy(per[j].age,per[j+1].age); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].email,per[j+1].email); per[j].score=per[j+1].score; } 1、运用数组知识, 2、运用函数知识, 3、运用指针,文件,结构体等知识点。 4、核心代码 通讯录: typedefstruct { charscore;/*编号*/ charname[10];/*姓名*/ charnum[15];/*号码*/ charemail[20];/*邮箱*/ charage[8];/*年龄*/ charadds[20];/*住址*/ }Person; voidmain()/*主函数*/ { intn=0; for(;;) { switch(menu_select()) { case1: printf("\n\t添加记录到通讯录\n");/*添加记录*/ n=Input(pe,n); break; case2: printf("\n\t\t\t通讯录记录表\n");/*显示记录*/ Display(pe,n); break; case3: printf("\n\t从通讯录中删除记录\n"); n=Delete_a_record(pe,n);/*删除记录*/ printf("\t"); system("pause"); break; case4: printf("\n\t在通讯录中查找记录\n"); Query_a_record(pe,n);/*查找记录*/ printf("\t"); system("pause"); break; case5: printf("\n\t修改通讯录中的记录\n"); Change(pe,n);/*修改数据*/ printf("\t"); system("pause"); break; case6: printf("\n\t保存功能\n"); WritetoText(pe,n);/*保存数据*/ printf("\t"); system("pause"); break; case0: printf("\n\t\t谢谢使用,再见! \n");/*结束程序*/ printf("\n\t\t"); system("pause"); exit(0); } } } 5.6结论 现在社会人与人之间的交往越来越频繁,通讯录成为生活的必须品,对通讯录进行必要的管理,对通讯录中的人进行快速查询记录提供了极大方便 在以往学习的知识、参考课外资料和寻求老师的帮助下终于完成了一个简单的软件。 这个软件功能非常简单,因而我想,在实际运用中,还有些不足。 因为知识和能力的不足,我们还无法做出满足实际需求的优秀软件,许多功能还欠缺和不完善,如无法实现快速查询。 由于我的知识浅薄,经验不足及阅历颇浅,因此,在该系统的设计方面还有很多不足,比如功能过少,界面不醒目等问题,我会在学习的使用过程中,根据学习的具体要求不断的修改、完善,争取使系统慢慢趋于完美。 在具体操作中对这学期所学的C语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。 发现上机实训的重要作用,特别是对数组和循环有了深刻的理解。 6.后记 这次实践中我们学习到了以前在课本上无法理解和没有见到过的知识,提高自身的知识面和实践能力,收获颇丰。 因为我刚接触编程不久,对于数据结构、软件工程这些专业名词知之甚少;甚至对于编程应该如何开始都感觉茫然,不知该从哪里下手。 但是我知道编写程序不能急于求成,必须循序渐进。 首先在动手以前,必须理解用户对于程序的要求,从而明确所要编写程序的功能,倘若不知道所要编的程序目的何在,那么编程时就会失去目标,程序自然编不好,也就是说要先进行“可行性分析”。 然后,要明确编程思想,即在编程之前要对程序有一个总体的构思、总体的框架;这样编程时才能条理清晰,不致出现程序结构混乱这样的大错误。 完成了总体设计之后,再进行详细设计、模块设计,这样编程时才能心中有数。 我是通过把一些主要的函数、算法用笔先写出来,这样做是为了在真正编写程序的时候不至于忙东忙西,把思路打断。 否则要是在上机时才进行构思,往往只有看着屏幕发呆的份。 设计大体完工之后,就可以敲上屏幕了。 在我们的辛勤努力下,终于做出一个简单的软件,虽然这个软件功能非常简单,而且有很多不足,离实际应用还有很大的距离,但是我们在发现问题的过程中不断去完善自己制作的软件,力求把它作到趋于完美。 在我们制作程序的过程中,老师和同学们都给与了我们很大的帮助,帮助我们查阅资料寻找知识点,指出我们的软件的错误和不足,在我们遇到困难时给我们鼓励和帮助,在这里,我向这些无私帮助我的人表示由衷的谢意。 7、参考文献: 1.《c语言成语设计教程》 2.王萍.C++面向对象程序设计.北京: 清华大学出版社,2002 3.谭浩强.C程序设计(第二版).北京: 清华大学出版社,1999 8、附录 #include #include #include #include intn=0;//定义全局变量存储电话联系人个数 structphone_info//定义结构体存储联系人信息 { charname[20];//姓名 charphone[20];//电话 chartype;//分类 charemail[20];//邮箱 structphone_info*next;//指向下一个节点的指针 }; /*-----错误函数-----*/ //所需参数: 无 //函数功能: 显示错误信息 //返回参数: 无 voiderror() { printf("代码错误\n\n"); system("pause"); } /*-----输出函数-----*/ //所需参数: 链表头指针 //函数功能: 输出链表中的联系人信息 //返回参数: 无 voidoutput(structphone_info*head) { structphone_info*p1=head,*p2; system("cls");//清屏 if(head==NULL)//如果当前链表头指针为空 { printf("当前没有任何联系人信息\n\n"); system("pause"); return;//返回 } printf("电话联系薄(共%d条信息)\n\n",n); for(;;) { p2=p1->next; printf("姓名: %s\n",p1->name); printf("电话: %s\n",p1->phone); if(p1->type=='A'||p1->type=='a') printf("类别: 办公类\n"); elseif(p1->type=='B'||p1->type=='b') printf("类别: 个人类\n"); else printf("类别: 商务类\n"); printf("邮箱: %s\n",p1->email); printf("\n"); if(p1->next==NULL)//如果当前指针所指向的结构体中next指向空则链表输出完毕 break;//返回 p1=p2; } } /*-----新增函数-----*/ //所需参数: 链表头指针 //函数功能: 新增联系人信息并自动添加到链表末尾 //返回参数: 链表头指针 structphone_info*new_info(structphone_info*head)//新增 { structphone_info*p1,*p2,*p; charc; intflag; system("cls");//清屏 for(;;) { if(n==15)//判断当前联系人数目是否超过系统限制 { printf("存储空间已满,不能再录入新数据! \n\n"); system("pause"); returnhead; } if(n==0)//判断当前联系人数目是否为0 { head=p1=p2=(structphone_info*)malloc(sizeof(structphone_info));//新建结构体并将结构体指针赋予链表头指针 p1->next=NULL; } else { p1=head; p2=(structphone_info*)malloc(sizeof(structphone_info));//新建结构体 } printf("请输入要新增的联系人姓名: \n(如果输入“0”则停止新增,并返回主菜单)\n"); scanf("%s",p2->name); if(strcmp(p2->name,"0")==0)//判断输入的姓名是否为“0” { free(p2);//为“0”则释放新开辟的空间 returnhead;//返回 } printf("\n请输入联系人的电话号码: \n"); scanf("%s",p2->phone); for(flag=1,p=head;n! =0&&p! =NULL;)//判断是否输入了相同的联系人电话 { if(strcmp(p2->phone,p->phone)==0) { printf("\n录入了相同的联系人电话\n\n"); system("pause"); flag=0;//标志位赋“0” free(p2); system("cls"); break;//退出循环 } p=p->next; } if(flag==0)//判断标志位是否为“0” continue;//如果为“0”则进入下一次循环 printf("\n请输入联系人的类别: \n(\"A\"为办公类\"B\"为个人类\"C\"为商务类)\n"); scanf("%c",&c);//保存上一次输入的回车键 scanf("%c",&p2->type); printf("\n请输入联系人的电子邮箱: \n"); scanf("%s",p2->email); while(p1->next! =NULL) p1=p1->next;//找到链表的尾部 p1->next=p2;//将链表的尾部指向新添加的联系人 p2->next=NULL;//新的链表尾部赋结束标记 system("cls"); printf("新增成功\n\n"); n++;//保存的联系人数目加1 } returnhead; } /*-----删除函数-----*/ //所需参数: 链表头指针 //函数功能: 在链表中删除指定的联系人信息 //返回参数: 链表头指针 structphone_info*del(structphone_info*head) { structphone_info*p1=head,*p2; charname[20]; system("cls"); for(;;) { if(n==0)//判断当前联系人数目是否为0 { printf("当前没有任何联系人信息\n\n"); system("pause"); returnhead;//返回 } output(head);//调用输出函数显示当前所有联系人的信息 printf("请输入要删除的联系人的姓名: \n(如果输入“0”则停止删除,并返回主菜单)\n"); scanf("%s",name); if(strcmp(name,"0")==0)//判断输入的姓名是否为0 returnhead;//返回 else if(strcmp(name,head->name)==0)//找到指定的联系人所在节点 { if(head->next==NULL)//判断指定的联系人是否为链表中唯一的联系人信息 { printf("\n删除成功\n\n"); printf("当前没有任何学生信息\n\n"); system("pause"); free(head);//释放头节点 n--;//保存的联系人数目减1 returnNULL;//返回空指针 } head=p1->next;//指定的联系人为链表的头节点将下一节点的地址赋予链表头指针 free(p1);//释放头节点 printf("删除成功\n\n"); system("pause"); n--; } else//指定的联系人不是链表的头节点 { p1=p2=head; for(;;)//找到指定的联系人所在节点 { if(strcmp(name,p1->name)==0) { p2->next=p1->next; free(p1);//释放节点 printf("删除成功\n\n"); system("pause"); n--;//保存的联系人数目减1 system("cls");//清屏 break;//退出循环 } p2=p1; p1=p1->next;//指向下一节点 if(p1==NULL)//节点为空 { printf("\n姓名为%s的联系人不存在! \n\n",name); system("pause"); system("cls");//清屏 break;//退出循环 } } } } returnhead;//返回 } /*-----音乐函数-----*/ //所需参数: 存储数字的字符串指针 //函数功能: 依次显示字符串里存储的数字并放出指定声音 //返回参数: 无 voidmusic(char*p) { intfreq[]={1046};//定义音频数组 inti; printf("\n"); for(i=0;*(p+i)! ='\0';i++) { printf("%c",*(p+i));//显示数字 Beep(freq[*(p+i)-48],500);//调用扬声器发出指定频率的声响 } printf("\n"); } /*-----拨号函数-----*/ //所需参数: 链表头指针 //函数功能: 在链表中查找指定的联系人并模拟拨号效果 //返回参数: 无 voiddiag(structphone_info*head) { charname[20]; structphone_info*p1; system("cls"); for(;;) { if(n==0)//判断当前联系人数目是否为0 { printf("当前没有任何联系人信息\n\n"); system("pause"); return; } system("cls"); output(head);//调用输出函数显示当前所有联系人的信息 printf("请输入要拨号的联系人姓名: \n(如果输入“0”则停止拨号,并返回主菜单)\n"); scanf("%s",name); if(strcmp(name,"0")==0)//判断输入的姓名是否为0 return;//返回 else { p1=head; for(;;) { if(strcmp(name,p1->name)==0)//找到指定联系人所在节点 { music(p1->phone); printf("\n拨号成功\n\n"); system("pause"); break; } p1=p1->next;//找到下一节点 if(p1==NULL)//指针为空 { printf("\n姓名为%s的联系人不存在! \n\n",name); system("pause"); break; } } } } } /*-----修改函数-----*/ //所需参数: 链表头指针 //函数功能: 在链表中修改指定联系人的信息 //返回参数: 无 voidrevise(structphone_info*head) { intflag; inta; charc; charname[20]; structphone_info*p1; system("cls"); for(;;) { if(n==0)//判断当前联系人数目是否为0 { print
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计报告书 倪博 完结篇 课程设计 报告书 完结