手机通讯录管理系统.docx
- 文档编号:5501518
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:15
- 大小:177.03KB
手机通讯录管理系统.docx
《手机通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《手机通讯录管理系统.docx(15页珍藏版)》请在冰豆网上搜索。
手机通讯录管理系统
《面向对象技术大作业》
报告书
题目:
手机通讯录管理系统
姓名:
韩劲松
学号:
090505110
日期:
2010年11月8日
管理科学与工程学院2010-2011学年第1学期
目录
摘要I
第1章绪论2
第2章需求分析3
2.1编写目的3
2.2需求概述3
2.3需求说明3
第3章总体设计4
3.1编写目的4
3.2总体结构4
3.3数据结构4
第4章流程图5
第5章详细设计6
5.1编写目的6
5.2详细设计6
5.3程序运行12
参考文献14
结束语15
摘要
本次C程序设计课程设计我选择手机通讯录管理系统,在菜单上显示各功能的选项。
在增加功能中可按照编号、姓名、电话号码和类型等输入每个人的通讯信息。
在查看时,可按三种类型如办公类、个人类和商务类等查询,并把各类型的通讯人信息列出。
修改功能中,可以先选中某个人的姓名在进行数据修改,删除功能同上。
在查询功能中可通过姓名和电话号码查询此人信息。
而且在此次设计过程中,我特别地增加了一项拨号功能,在拨号时,在屏幕上显示所拨的号码。
关键词:
手机通讯录管理系统菜单输入功能修改功能删除功能查询查看
1.设计的原始资料及依据
通过课程设计使学生进一步加深对课程内容的理解,利用程序设计的基本思想进行程序的开发,进一步掌握C++编程的技巧,提高学生用程序的思想来解决实际问题的能力。
2.设计的主要内容及要求
a设计题目:
通讯录管理系统
b需要完成的功能:
⑴查看功能;
⑵增加功能;
⑶拨号功能;
⑷修改功能;
⑸删除功能;
⑹菜单功能;
⑺查询功能。
必须用到链表,能将生成的文件存储与外部存储器上,并且从外部存储器上可以编写该文件的功能。
第1章绪论
在本次C++大作业中,我设计手机通讯录管理系统,在主函数中,主要用到了多分支语句(switch)。
在无限循环时也能用到了语句for,当每一个功能使用完毕或输入错误时就会返回,再次调用菜单函数进入菜单界面。
设计主函数时,还大量使用了函数的调用。
在编写输入函数时,运用到了结构体指针,链表,开辟结构体空间。
用比较函数,当输入的通讯人的姓名、号码相同时,系统会提示输入重复并返回。
当每次输入个人通讯信息完毕后,就打开一个确定文本文档,并把它写入磁盘中,再关闭文件。
因本通讯录设计只能存储十五个通讯人信息,所以当存到第十五个时,系统就会提示存储已满。
第2章需求分析
2.1编写目的
通过该系统实现对通讯录信息进行录入,显示,修改,插入,排序,保存等操作的管理。
2.2需求分析
设计一个通讯录管理系统具有以下功能
⑴查看功能:
选择此功能时,列出三类选择:
A办公类、B个人类、C商务类;当选中某类时,显示出此类所有数据中的姓名和电话号码等详细信息。
⑵增加功能:
能录入新数据包括:
姓名、电话号码、分类(参照第一个功能的分类),电子邮件等(还有其他的功能可以添加但需通过组员商量决定)。
⑶拨号功能:
能显示出通讯录中所有人的名字,当选中某个名字时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拨号声音。
⑷修改功能:
选中某个人的姓名时,可对此人的相应数据进行修改。
⑸删除功能:
选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条
⑹菜单功能:
至少采用文本菜单界面(如果能采用图形菜单界面更好)。
⑺查询功能:
要求能通过输入姓名或者电话号码查询此人的详细信息。
2.3需求说明
在主界面菜单下,根据提示,选择功能操作,来实现输入通讯信息的存储、修改、删除、查看和拨号等功能。
通讯录个人信息包括个人的编号、姓名、号码、类型及email等,并且要求人名、号码不能重复,录入的个人信息要求用文件形式保存,并可以进行查看、查询、修改、删除和拨号等基本操作。
个人信息显示要求有一定的规范的格式。
对个人信息的查询应能够按照号码和姓名两种方式来查找浏览信息。
对个人信息的修改应逐个进行,而不能影响其他个人信息。
第3章总体设计
3.1编写目的
根据需求分析文档,初步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案并写出书面文档总体设计说明书,为下一步进行详细设计做准备。
3.2总体设计
该手机通讯录管理系统按功能划分可得功能模块图,如图3-1所示。
图3-1功能模块图
其中:
输入通讯录信息模块完成通讯个人信息的输入功能,输入信息包括个人的编号、姓名、号码、类型、email等;修改联系人信息模块完成个人通讯信息的修改功能;删除联系人信息模块完成个人通讯信息的删除功能;查询联系人信息模块完成个人通讯信息的查询,查询时对应有按号码和姓名两种方式;联系人拨号模块完成通讯人拨号功能查看联系人信息模块完成已录入个人通讯信息的显示功能;菜单选择模块完成用户命令的接受,此模块也是手机通讯录管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择而调用其他模块实现相应的功能。
3.3数据结构
本系统中主要的数据结构就是个人通讯信息,包括个人编号、姓名、类型、号码和email等,在处理过程中各项可以作为一个人的不同属性来进行处理。
第4章程序流程
系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。
系统的流程图如下:
图4-2手机通讯录管理系统流程图
第5章详细设计
5.1编写目的
根据项目概要设计说明书,在项目概要设计的基础之上,对系统进行详细设计,以便下一步进行程序编码工作。
5.2详细设计
1、在本次C++大作业中,对应于总体设计时的系统功能模块图,各个功能系统模块的处理逻辑如下:
⑴查看功能:
选择此功能时,列出三类选择:
A办公类、B个人类、C商务类;当选中某类时,显示出此类所有数据中的姓名和电话号码等详细信息。
⑵增加功能:
能录入新数据包括:
姓名、电话号码、分类(参照第一个功能的分类),电子邮件等。
⑶拨号功能:
能显示出通讯录中所有人的名字,当选中某个名字时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拨号声音。
⑷修改功能:
选中某个人的姓名时,可对此人的相应数据进行修改。
⑸删除功能:
选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条
⑹菜单功能:
至少采用文本菜单界面(如果能采用图形菜单界面更好)。
⑺查询功能:
要求能通过输入姓名或者电话号码查询此人的详细信息。
在主函数前先定义结构体和结构体指针变量,申明菜单中各功能需要调用的函数。
2、其中主函数和输入通讯录信息模块的流程图分别如图4-3和图4-4所示。
图4-3主函数流程图
图4-4输入通讯录信息流程图
3、主函数和输入通讯录信息函数如下:
voidmain()/*主函数开始*/
{
for(;;)/*每次功能结束后或输入错误时,循环返回主界面*/
{
switch(menu_select())/*调用菜单函数*/
{
case1:
system("cls");/*系统清屏*/
printf("****************************\n");
printf("输入通讯录信息\n");
printf("****************************\n");
head=CreateList();/*调用输入通讯录信息模块函数*/
break;/*跳出case1语句的循环*/
case2:
system("cls");
printf("****************************\n");
printf("修改联系人信息\n");
printf("****************************\n");
p=edit(head);/*调用修改联系人信息模块函数*/
break;/*跳出case2语句的循环*/
case3:
system("cls");
printf("****************************\n");
printf("删除联系人信息\n");
printf("****************************\n");
DelNode(head);
break;
case4:
system("cls");
printf("****************************\n");
printf("查看联系人信息\n");
printf("****************************\n");
PrintList(head);
printf("按任意键返回...");
getch();/*接收输入的一个字符*/
system("cls");
break;
case5:
system("cls");
printf("****************************\n");
printf("输入号码拨号\n");
printf("****************************\n");
PrintList(head);/*调用查看联系人信息函数*/
bohao();/*调用拨号功能函数*/
printf("选择联系人号码:
");
break;
case6:
system("cls");
printf("****************************\n");
printf("查找联系人信息\n");
printf("****************************\n");
p=ListFind(head);/*调用查找联系人信息函数并返回指针赋给p*/
if(p!
=NULL)/*p指针指向的地址不为空就执行下面的语句*/
{
printf("编号姓名电话类型e-mail\n");\
printf("=====================================\n");
printf("%s\t%s\t%s\t%s\t%s\n",p->data.num,p->data.name,p->data.phone,p->data.leixing,p->data.email);
/*输出所查找联系人的信息*/
printf("=====================================\n");
}
printf("查找完毕,按任意键返回...");
getch();/*接收输入的一个字符*/
system("cls");
break;
case0:
printf("\t谢谢使用,再见!
\n");/*结束该系统的使用*/
return;/*返回上一语句的输出值*/
}
}
}
LinkListCreateList(void)/*输入联系人函数*/
{
LinkListhead=(ListNode*)malloc(sizeof(ListNode));
/*开辟一个长度为ListNode的内存区,并强制转换为结构体类型,把其指针地址赋给头指针head*/
ListNode*p,*rear,*q;/*定义三个结构体类型指针*/
inti=0,flag=1,a;/*定义整形变量*/
charleixing;/*定义一个字符型变量*/
rear=head;/*把头指针head赋给rear*/
while(flag==1&&i<=16)/*当i>16时退出当前循环*/
{
i++;
if(i<=15)
{
p=(ListNode*)malloc(sizeof(ListNode));
/*开辟一个长度为ListNode的内存区,并强制转换为结构体类型,把其指针地址赋给头指针p*/
printf("请输入编号:
");
scanf("%s",p->data.num);
printf("请输入姓名:
");
scanf("%s",p->data.name);
if(i>1)
{
fp=fopen("a.txt","rb");/*打开一个可读写的文件a.txt*/
for(q=head,a=0;anext)
{
a++;
if(strcmp(p->data.name,q->data.name)==0)/*比较两个字符串的大小*/
{
printf("输入重复!
\n");
printf("按任意键返回...");
getch();
system("cls");
return;
}
}
fclose(fp);/*关闭文件*/
}
printf("请输入号码:
");
scanf("%s",p->data.phone);
if(i>1)/*把刚输入的通讯信息写入文件中*/
{
fp=fopen("a.txt","rb");/*打开文件*/
for(q=head,a=0;anext)
{
a++;
if(strcmp(p->data.phone,q->data.phone)==0)
{
printf("输入重复!
\n");
printf("按任意键返回...");
getch();
system("cls");
return;
}
}
fclose(fp);/*关闭文件*/
}
printf("类型为:
1办公类2个人类3商务类请用序号填写\n");
printf("请输入类型:
");
scanf("%s",p->data.leixing);
printf("请输入e-mail:
");
scanf("%s",p->data.email);
printf("输入完毕,按任意键存储...\n");
getch();
fp=fopen("a.txt","a");/*打开文件*/
fprintf(fp,"%s\t%s\t%s\t%s\t%s\n",p->data.num,p->data.name,p->data.phone,p->data.leixing,p->data.email);
fclose(fp);/*关闭文件*/
printf("存储完毕!
\n");
rear->next=p;/*把p的地址赋给rear的下一个*/
rear=p;
printf("继续输入吗?
(1/0):
");
scanf("%d",&flag);
system("cls");
}
else
{
printf("存储空间已满!
\n");
printf("按任意键进行存储...");
getch();
i++;
}
}
system("cls");
rear->next=NULL;/*把空赋给最后指针的下一个*/
returnhead;/*返回头指针*/
}
5.3运行程序
1、运行程序,打开主界面菜单如图4-5所示。
图4-5菜单
2、根据提示输入数字“1”即可打开输入通讯信息窗口,如图4-6所示。
图4-6输入通讯信息
3、根据提示按任意键存储,打开窗口如图4-7所示,再根据提示可输入“1”继续存储,若输入“0”则回到主菜单。
图4-7存储完毕
参考文献
[1]《C语言程序设计》天津大学出版社高福成主编
[2]《C语言程序设计》高教出版社谭浩强主编
[3]《C语言程序设计实习指导与习题集(第二版)》谭浩强主编
[4]《C语言程序设计》高等教育出版社巫家敏主编
指导教师评语:
成绩:
签名:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手机 通讯录 管理 系统