手机通讯录设计报告附代码Word文件下载.docx
《手机通讯录设计报告附代码Word文件下载.docx》由会员分享,可在线阅读,更多相关《手机通讯录设计报告附代码Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
九、参考文献……………………………………..……………………………....13
十、附件………………………………………..………………………………….14
1、头文件………………………………………………………………………14
2、主函数…………………………………….…………………………………14
3、函数实现文件…………………………..……………………………………15
需求分析
在这个信息化的时代,手机已成为继固话之后最为通俗的交流工具。
在这个人与人关系愈加密切的时代,“通讯”成了生活中的必需品。
这就有这么一个系统记录下人与人之间的多样联系方式——手机通讯系统。
通过系统记录下对方的联系方式,既减轻了大脑的负担,又不在受各种条件的约束,做到便捷随身管理相关的联系信息,摆脱了传统电话簿,名片的累赘。
从长远利益来看,可是意义重大的环保之举。
根据市场需求,手机通讯录管理系统所记录的信息一般分为个人、商业、办公三类。
清晰了机主的联系方向。
针对性的分门别类,使系统具有了方便了机主的存储和快速查阅优势功能,大大减少了在电话簿,名片上机械翻阅查找过程的时间。
于此同时又根据手机随身携带的特殊性,在一定程度上比一般的制作文件
又其次,因为手机是随身携带的通讯工具,这与记事本相比将在一定程度上保障联系人信息的安全性,相对避免了个人隐私信息外泄从而带来的损失。
综上所述,手机通讯录管理系统是一个高效、实时、绿色环保的管理系统。
友元重载常函数构造函数析构判断数据链表
手机通讯录管理系统
一、主要功能
模拟手机通信录管理系统,要求:
(1)查看功能:
选择此功能时,列出下列三类选择:
A办公类B个人类C商务类,当选中某类时,依次显示出此类所有数据中的姓名和电话号码
(2)增加功能:
能录入新数据(包括:
姓名、电话号码、分类(可选项有:
A办公类B个人类C商务类)、电子邮件)。
♦当录入了重复的姓名和电话号码时,提示数据录入重复并取消录入;
♦通信录容量限定在15条以内。
♦当存储信息超出存储空间,提示存储空间已满,不能再录入新数据;
♦录入的新数据能按递增的顺序自动进行条目编号。
(3)修改功能:
选中某个人的姓名时,可重新录入此人信息。
(4)删除功能:
选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。
1.查看功能
2、本系统应具备以下七个功能模块:
添加联系人信息、修改联系人信息、删除联系人信息、查询联系人信息、查看所有联系人信息、对联系人信息进行排序,退出保存。
(1)添加联系人信息:
将新得到的联系人信息添加到通讯录中,添加的信息有:
序列号、姓名、性别、手机号码、QQ和E-mail。
(2)修改联系人信息:
对已经保存的联系人信息进行修改,可以重新输入联系人信息
(3)删除联系人信息:
对保存在通信录中的联系人信息进行删除。
(4)查询联系人信息:
通过联系人的姓名查询联系人的的全部通讯信息
(5)查看所有联系人信息:
本功能将一次性的让机主看到通讯录中保存的所有联系人的所有通讯信息。
(6)联系人信息排序:
依据添加时给定的序列号对通讯录中的联系人信息进行排序。
(7)保存:
将添加的联系人通讯信息以.txt文本的形式保存起来,以备以后查询使用。
3、系统设计具体应用到的技术:
(1)结构、枚举类型的定义与使用;
(2)数组的定义和使用使用;
(3)程序的三种基本控制流程的综合、灵活运用;
(4)普通指针和数组指针的定义和使用;
(5)各类函数的定义和调用;
(6)文件的输入/输出;
(7)程序的调试。
二、设计要求
1、在VisualC++控制台应用程序方式下设计课题。
2、设计的程序要求完成本次课程设计所规定的功能。
3、程序应具有一定的健壮性。
即程序必须具有必要的检查和出错处理,如在添加新联系人信息时检查输入的序列号是否相同。
删除、查询联系人信息时检查输入的姓名是否存在等。
三、设计环境
1、操作系统:
WindowsXPProfessional;
2、开发工具:
MicrosoftVisualC++6.0;
3、PC机的配置:
CPU:
Intel(R)Core(TM)2T7100@2.00Ghz;
内存:
1G;
硬盘空间:
120GB;
显卡:
128MBDDR3NVIDIA(R)GeForce(R)8400MGS显卡;
四、系统结构图
五、功能实现
1、系统运行
系统运行结果如图所示:
2、添加联系人
添加联系人信息运行界面如图所示:
录入完一位联系人的相关信息后,会立刻给予显示,以供核对。
核对后敲击回车,将回到主菜单。
3、修改联系人
修改联系人信息运行界面如图所示:
当选择修改联系人信息菜单“2”时,会提示您输入要修改联系人的姓名,如果您姓名输入错误,则提示联系人不存在,如下图所示:
此时,需重新选择菜单“2”,然后输入正确的姓名即可对联系人信息进行修改,需要修改的项目,选择菜单“y”不需要修改的项目选“n”,将直接进入下一个项目的修改。
4、删除联系人信息
删除联系人信息运行界面如图所示:
此时,输入你要删除的联系人的姓名即可,然后系统会提示你是否确认删除,“y”执行删除,“n”取消删除。
5、查询联系人
查询联系人信息运行界面如图所示:
输入你要查询的联系人的姓名,如果文件book.tet中有这位联系人的信息,将会显示出来;
如果文件book.tet中没有这位联系人信息,系统将会提示你“联系人不存在”。
6、显示所有联系人
显示所有联系人信息运行界面如图所示:
当选择“5”菜单时,将会显示所有保存在book.txt文件中联系人的信息。
7、对联系人在文件中存储位置排序
按序列号对联系人在book.txt文件中排序的运行界面如图所示:
该功能主要是根据在添加联系人是给定的“序列号”,对保存在book.txt文件中的联系人信息进行排序,序列号小的排到前面,大的排到后面。
8、系统结束运行界面
选择菜单“7”系统将提示“Pressanykeytocontinue”,此时按任意键系统运行结束。
六、遇到的问题和解决的方法
1、不熟悉。
由于在本次课程设计之前长时间没有复习和使用visualC++,很对知识已经记忆模糊,甚至已经淡忘。
对于这种情况我做了这些工作:
翻阅以前的课本熟悉本次课程设计所涉及和使用到的相关知识点,比如数组、数据指针、结构体和枚举类型等等。
其次就是在设计的过程中遇到自己不能解决的问题,请教其他同学和到图书馆查阅相关资料。
2、系统首次运行,在添加联系人信息时,联系人信息当中的手机号码、家里电话、地址、QQ和E-mail几个项目是始终显示第一位联系人的信息,而不能显示与姓名对应的联系人的通讯信息。
这个问题在请教老师后得知,是我在设计时忽略了添加新的联系人信息时必须考虑已经保存在文件中的已经添加的联系人信息,于是将代码“GetData(book)”改成“GetData(book+CurNum)”,问题得以解决。
3、当系统完成最初设计,执行修改联系人信息时,显示的是第一个联系人的通讯信息,并不是显示当前联系人的信息。
这个问题在系统最初运行的时候,作为设计人员的我并没有注意到,直到跟一位同学进行系统设计缺陷互查的时候才被发现。
经过仔细检查和查阅资料,发现了其中的错误所在。
显示当前信息的代码是“displayone(book+i)”,而我写成了“displayone(book)”,改正过来的系统成功实现显示当前联系人的通讯信息。
4、当book.txt文件中有联系人信息数据,程序运行,在读book.txt文件中的联系人信息数据时总出错。
研究了很久发现,是因为在最初设计时,我考虑将保存到book.txt文件的联系人信息中的各项目之间用顿号隔开以示区别,但在做读数据时我却没有对对应的设计,没有使用顿号,致使在读数据时出现错误。
七、设计小结
课程设计是一次将理论知识运用于解决实际生活中所遇到的问题的实战是一次理解和深化理论知识,树立知识服务生活,知识服务经济发展的的理念。
在本次设计过程中,我通过查阅资料,以及调查身边的人进行系统需求分析,在此基础上建立系统模型,编写代码,进行调试。
过程是曲折的,有时候一个字母的大小写就要花上几个小时的时间去查找。
但正是这个过程让我了解了自己对这么语言的掌握程度,锻炼了我独立解决问题的能力,同时让我意识到严谨的态度对一个系统开发者的重要性。
学以致用,手机通讯录管理系统是我独立开发的第一个系统。
由于能力所限,这个系统还相对简单,且有可能存在一定的缺陷,但这并没有影响到我设计成功后的喜悦。
这是一个契机,给自己今后学习和工作指明了方向。
最后,衷心的感谢本次课程设计的罗烨指导老师,正因为老师的指点,使得我少走了很多弯路,同时授予了我很多作为设计人员应该有的正确理念和行为。
参考文献
1谭浩强著.C++程序设计.北京.清华大学出版社,2006
2谭浩强主编.C++程序设计题解与上机指导.北京.清华大学出版社,2006
3郑莉,董渊,张瑞峰著.C++语言程序设计(第3版).北京.清华大学出版社,2004
4郑莉,董渊,张瑞峰主编.C++语言程序设计案例教程.北京.清华大学出版社,2004
5洪永清,黄德才,吕丽民.面向对象建模与设计.北京.人民邮电出版社,1998
6邵维忠,杨芙清.面向对象的系统分析.北京.清华大学出版社,1998
7吴乃陵.C++程序设计实践教程(第2版).北京.高等教育出版社,2006
8钱能.C++程序设计实验指导.北京.清华大学出版社,1999
9严蔚敏等.数据结构(C++版).北京.清华大学出版社,1997
10(美)IvorHorton著.李予敏 译.C++入门经典(第3版).北京.清华大学出版社,2002
//附:
本系统源程序
//1、头文件
#ifndefBOOK_H
#defineBOOK_H
structBook
{
charNo[9];
charName[9];
charNickname[9];
charSex[7];
charMobilenum[15];
charFamilynum[15];
charAddr[30];
charqq[10];
charEmail[15];
};
#endif
//2、主函数
//主函数文件
#include<
iostream.h>
fstream.h>
iomanip.h>
string.h>
stdlib.h>
intEnterChoice();
//输入选项
voidInit();
//数据文件初始化
voidAdd();
//增加一个联系人信息
voidDisplay();
//显示所有联系人信息
voidDisplayOne(Book*);
//显示全部联系人重载函数
voidSortNo();
//按序列号排序(从小到大)
voidSave();
//保存数据
intCheckNo(char*);
//输入序列号
intCheckName(char*);
//输入姓名
voidPrintTitle();
//显示表头
voidGetData(Book*);
//读取联系人信息
voidUpdate();
//修改联系人信息
voidDelete();
//删除联系人信息
voidQuery();
//查询联系人信息
enumChoices{ADD=1,UPDATE,DELETE,QUERY,DISPLAY,SORTNO,END};
constintMaxNum=200;
//能够建立的最多联系人人数
intCurNum;
//当前联系人人数
Bookbook[MaxNum];
//结构数组
voidmain()
system("
colord"
);
Init();
intchoice;
while((choice=EnterChoice())!
=END)
{
switch(choice)
{
caseADD:
Add();
break;
caseUPDATE:
Update();
caseDELETE:
Delete();
caseQUERY:
Query();
caseDISPLAY:
Display();
caseSORTNO:
SortNo();
default:
cerr<
<
"
输入编号不正确,请重新输入!
\n"
;
}
}
Save();
}
//3、函数实现文件
//函数实现文件
//========================输入选择函数========================
intEnterChoice()
cout<
\n\t++++++++欢迎使用手机通讯录管理系统+++++++++++++++++\n"
按【1】:
添加联系人;
"
endl;
按【2】:
修改联系人;
按【3】:
删除联系人;
按【4】:
查询联系人;
按【5】:
显示所有联系人;
按【6】:
按建立编号排序;
按【7】:
结束;
\n\t+++++++++++++++++++++++++++++++++++++++++++++"
\n\t请选择菜单(1-7):
;
intChoice;
cin>
>
Choice;
returnChoice;
//===========================初始化函数========================
voidInit()
ifstreaminCount,inBook;
ofstreamoutCount,outBook;
inCount.open("
count.txt"
ios:
:
in);
//打开联系人人数文件
if(!
inCount)//文件不存在,建立该文件
inCount.close();
outCount.open("
out);
outCount<
CurNum;
//写入联系人人数0
outCount.close();
//关闭文件
else
{
inCount>
//文件存在,读取联系人人数
inCount.close();
if(CurNum)//联系人总数不为0,联系人文件存在
inBook.open("
Book.txt"
//打开联系人文件
for(inti=0;
i<
i++)//读取联系人数据
inBook>
book[i].No;
//读取联系人序号
book[i].Name;
//读取联系人姓名
book[i].Sex;
//读取联系人性别
book[i].Mobilenum;
//读取联系人手机号码
book[i].Addr;
//读取联系人地址
book[i].qq;
//读取联系人QQ
book[i].Email;
//读取联系人E-mail
inBook.close();
outBook.open("
outBook.close();
//=====================增加一个联系人信息=======================
voidAdd()
cls"
charno[9];
编号:
no;
inti=CheckNo(no);
if(i>
=0)
cout<
编号已存在,请重新输入"
strcpy(book[CurNum].No,no);
姓名:
cin>
book[CurNum].Name;
性别:
book[CurNum].Sex;
手机号码:
book[CurNum].Mobilenum;
地址:
book[CurNum].Addr;
QQ:
book[CurNum].qq;
E-mail:
book[CurNum].Email;
DisplayOne(book+CurNum);
//排序后重新显示
CurNum++;
//==================按序列号从小到大冒泡排序,并显示===============
voidSortNo()
Booktemp;
intflag;
for(inti=0;
CurNum-1;
i++)
flag=1;
for(intj=0;
j<
CurNum-1-i;
j++)
if(strcmp(book[j+1].No,book[j].No)<
0)
{
flag=0;
temp=book[j+1];
book[j+1]=book[j];
book[j]=temp;
}
if(flag)break;
Display();
//排序后重新显示
//==========================显示表头===========================
voidPrintTitle()
{
setiosflags(ios:
left);
setw(4)<
编号"
setw(6)<
姓名"
性别"
setw(10)<
手机号码"
setw(10)<
地址"
QQ"
E-mail"
//=======================显示所有联系人信息=====================
voidDisplay()
PrintTitle();
for(inti=0;
book[i].Email<
//======================显示一个联系人信息======================
voidDisplayOne(Book*book)
set