C++通讯录课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++
程
序
设
计
课
程
报
告
课题: 简单通讯录系统的设计
专业班级 : 信管 10101 班
学号:201017020107
姓名: 易帅龙
指导教师 : 雷红艳
1页
目录
一、设计系统的目的意义⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯3
二、系统需求、功能分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯3
1 :系统需求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯3 2:功能分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯3-4 3:系统结构图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯4 4:流程图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯5
三、数据结构表⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯6
四、数据测试表⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯6
五、运行和调试(各个功能调试运行结果)⋯⋯⋯⋯⋯⋯⋯⋯⋯6-12
1、主界面系统运行⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯6-7
2、添加联系人⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯7
3、查询联系人⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯8-9
4、修改联系人⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯10
5、删除联系人⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯11
6、设计人员信息⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯11
7、系统运行结束⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12
六、课程设计的心得⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12 七、参考书目:⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12 八、附录:源代码⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 13-21
九、评阅意见及评阅成绩⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯21
2页
一、设计系统的目的意义
1、设计系统的目的
设计这个系统的目的是为了设计一个能够便捷使用的电子通讯录,能
够方便的存储信息,可以将这个系统应用到手机或者其他电子设备中,方便的存储联系人,为方便查找联系人的各种信息提供方便。
2、设计系统的意义
电子通讯录系统没有使用纸张等,做到了环保,符合当今环保理念这个系统使用户能够方便快捷的使用存储和查找等优势功能,且具有较高的
安全性,能够有效保护用户联系人资料。
二、系统需求及功能分析
系统需求
1、需要录入联系人到通讯录中;
2、能够对通讯录中各项信息进行查找修改删除排序等一系列操作;
3、能够完成通讯录的基本功能;
4、凡等候用户输入时,给出足够的提示信息;
5、程序具有一定的健壮性,不会因为用户的输入错误引起程序运行错误而中
断执行。
对输入值的类型、大小范围、字符串的长度等,进行正确性检查,
对不合法的输入值给出出错信息,指出错误类型,等待重新输入;
6、对删除数据应给出警告。
功能分析
1、录入功能:选择此功能可以用户手动输入联系人各项信息;
2、查看功能:选择此功能时可以选择根据各种信息查询联系人电话、住址、
性别、邮箱、 QQ等各项信息;
3、排序功能:选择此功能可以按照姓名将所有联系人排序输出;
4、修改功能:选择此功能时能够通过输入联系人姓名或者电话修改联系人的
全部信息;
5、删除功能:选择此功能时能够通过输入联系人姓名或者电话删除联系人
的全部信息; 3 页
5、查看设计人员功能:选择此功能时能够查看该系统设计人员名单;
6、退出系统功能:选择此功能时能够退出系统并保存数据。
功能结构图:
主菜单
添查排修删查退
加询序改除看出
联联输联联设程
系系出系系计序
人人人人人
员
名
单
根根根根根根根根
据据据据据据据据
地姓电类姓电姓电
址名话别名话名话
查查查查修修删删
询询询询改改除除
4页
流程图:
输入各项
信息
删除联系人1:按姓名删除2:按电话删除
输入1输入2
1:2:
按按
姓电
名话
删删
除除
输入任意键进入主菜单
输入 1输入 0~6 选择功能
1:添加
2:查询
3:排序
输入 5
4:修改
5:删除
6:设计人员
0:退出
输入 3输入 2
按1:按姓名查询
姓2:按电话查询
名3:按地址查询
排4:按类别查询
序5:查询全部
查
看
输入6设
计
人
员
输入 4
修改联系人:
1:按姓名修改
2:按电话修改
输入1输入2
1:2:
按按
姓电
名话
修修
改改
5页
三、数据结构表
类名数据名数据类型长度
Person name Char[]10
Person sex Char[]4
Person tel Int[]44
Person add Char[]20
Person Postnum Int[]40
Person E_mail Char[]20
Person QQ Int[]44
Person Kind Char[]10
Person People Person &ob
i int4
num Int4
P_num Int4
四、数据测试表
姓名电话性别地址邮箱邮编QQ类别
马启明150男黑龙江150150150同学
易帅龙151男湖南151151151同学
王刚152男湖南152152152老乡
翟凤玺153男天津153153153同学
五、运行和调试
1、系统运行
6页
2、添加人员
7页
3、查询人员
(1)、根据姓名查询
(2)、根据电话查询
(3)、根据地址查询
8页
(4)、根据类别查询
(5)、查询所有名单
(6)、按姓名排序输出
9页
( 7)、按姓名修改
(8)、按电话修改
10页
(9)、按姓名删除
(10)、按电话删除
(11)、显示设计人员名单
11页
(12)、退出程序
六、课程设计心得
通讯录系统的课程设计,我体会到很多,完成一个程序的设计必须要有同伴的支持和合作,必须要跟同伴讨论商量,共同努力才有可能设计出一
个好的程序,遇到困难不能轻易放弃,在编这个程序的时候遇到了很多难
题,后来在老师和同学的帮助解答下终于将遇到的问题一个个解决,我深刻体会到遇到难题不要轻易言弃,还有要多借鉴别人的经验,多阅读一些书籍,编写程序的时候要细心,一点点错误程序就可能编译失败,所以要做到一丝不苟。
七、参考书目
谭浩强,《 C++程序设计》,北京,清华大学出版社,2006 年
钱能,《 C++程序设计实验指导》,北京,清华大学出版社,1999 年
谭浩强,《 C++程序设计题解与上机指导》,北京,清华大学出版社,2006 年
12页
八、附录:源代码
#include<iostream>
#include<fstream>
using namespace std;
class person
{ public:
char
name[10],sex[4],tel[11],add[20],postnum[10],e_mail[20],QQ[11],k
ind[10];
public:
person()
{}
void input()
{
cout<<" 请输入名字 :\n";
cin>>name;
cout<<" 请输入性别 :\n";
cin>>sex;
cout<<" 请输入电话 :\n";
cin>>tel;
cout<<" 请输入地址 :\n";
cin>>add;
cout<<" 请输入邮编 \n";
cin>>postnum;
cout<<" 请输入邮箱 :\n";
cin>>e_mail;
cout<<" 请输入 QQ:\n";
cin>>QQ;13 页
cout<<" 请输入类别 :\n";
cin>>kind;}
void save()
{ ofstream fout("e:\\person.txt",ios::app);
fout<<name<<sex<<tel<<add<<postnum<<e_mail<<QQ<<kind;
cout<<" 信息已保存至e:\\person.txt\n\n\n";cout<<"※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
※※※※\n";
fout.close();
}
void output()
{ cout<<" 姓名 :"<<name<<" "<<" 性别 :"<<sex<<" "<<" 电话 :"<<tel<<" "<<"地址:"<<add<<""<<"邮箱:"<<postnum<<"
"<<"E_mail:"<<e_mail<<" "<<"QQ:"<<QQ<<" "<<" 类别 :"<<kind<<"
"<<endl;
}
};
void main()
{ person people[30];int i;static int num=0,p_num=0;
do
{ cout<<" 请输入任意键显示主菜单 :"; char
y;
cin>>y;
system("cls");
cout<<"※※※※※※※※※※※※※※※※※※\n ※※※※※※通讯录主菜单※※※※※※\n ※※※※※※※※※※※※※※※※※※\n 请输入 0-5 来选择 :\n1. 添加通讯录人员 \n2. 查询人员 \n3. 按姓名排序
14页
\n4.按姓名 , 电话进行修改\n5.按姓名 , 电话进行删除 \n6. 设计人员名单\n0.退出 \n ※※※※※※※※※※※※※※※※※※\n";
cin>>i;
while(i>6||i<0)
{cout<<"选择无效,重新输入0~5: "<<endl;cin>>i;}
switch(i)
{ case 0:{}break;
case 1:{cout<<"请输入您要添加人的信息:\n";
people[p_num].input();people[p_num].save();num++;p_num++;}break
;
case 2:
{ cout<<"1.根据姓名查询\n2.根据电话查询\n3.根据地址查询
\n4. 根据类别查询 \n5. 查询所有名单 \n";
int j;cin>>j;
switch(j)
{ case 1:
{ cout<<" 请输入您要查询的姓名 : \n";
char q_name[20];cin>>q_name;
for(int t=0; t<num; t++)
if(strcmp(people[t].name,q_name)==0)
{cout<<"姓名为:"<<q_name<<"的信息如下 :\n";people[t].output();cout<<"※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n";break;} else {cout<<"没有找到"<<q_name<<"的信息!\n";cout<<"
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
※※※※※※※※※ \n";}
}break;
case 2:15 页
{ cout<<" 请输入电话 :"<<endl;
char q_tel[11];cin>>q_tel;
for(int t=0; t<num; t++)
if(strcmp(people[t].tel,q_tel)==0)
{cout<<"电话为:"<<q_tel<<"的信息如下 :\n";people[t].output();cout<<"※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n";break;}
else{cout<<"没有找到"<<q_tel<<"的信息!\n";cout<<" ※※※※※※※※※※※※※※※※※※※※※※※※
※※※※※※※※※※※※※※※※
\n";} }break;
case 3:
{ cout<<" 请输入地址 :"<<endl;
char q_add[20];cin>>q_add; for(int
t=0; t<num; t++)
if(strcmp(people[t].add,q_add)==0)
{cout<<"地址为:"<<q_add<<"的信息如下 :\n";people[t].output();cout<<"※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n";break;}
else{cout<<"没有找到"<<q_add<<"的信息!\n";cout<<" ※※※※※※※※※※※※※※※※※※※※※※※※
※※※※※※※※※※※※※※※※
\n";} }break;
case 4:
{ cout<<" 请输入类别 :"<<endl;
char q_kind[20];cin>>q_kind;
for(int t=0; t<num; t++)16 页
if(strcmp(people[t].kind,q_kind)==0)
{cout<<"类别为:"<<q_kind<<"的信息如下:\n";people[t].output();cout<<endl;}
else{cout<<"没有找到"<<q_kind<<"的信息 !\n";cout<<"※※※※※※※※※※※※※※※※※※※※※※※※
※※※※※※※※※※※※※※※※\n";}
}cout<<"※※※※※※※※※※※※※※※※※※※※
※※※※※※※※※※※※※※※※※※※※\n";break;
case 5:
{ cout<<"所有人的信息如下:\n";
for(int t=0; t<num; t++)
people[t].output();
cout<<" ※※※※※※※※※※※※※※※※※※※※
※※※※※※※※※※※※※※※※※※※※\n";
}break;
default:
cout<<"您的输入有误!\n"<<endl;cout<<"※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
※※※※\n";
break;
}
}break;
case 3:
{ person sort;int t;
for( t=0; t<num; t++)
{for(int s=t+1; s<num; s++)
if(strcmp(people[t].name,people[s].name)>0)
{17 页
sort=people[t];people[t]=people[s];people[s]=sort;
}
}
cout<<"按姓名从小到大排序后:"<<endl;
for(int n=0; n<num; n++)
people[n].output();
cout<<"※※※※※※※※※※※※※※※※※※※※※※※※
※※※※※※※※※※※※※※※※\n";
}break;
case 4:
{ cout<<"请输入1-2:\n 1.按姓名修改\n 2.按电话修改\n";int j;cin>>j;
switch(j)
{ case 1:
{ cout<<" 请输入您要修改的人的姓名 :\n";
char s_name[20];cin>>s_name;
for(int t=0; t<num; t++)
if(strcmp(people[t].name,s_name)==0)
{ person s_people;cout<<"\n请依次输入修改后的信息: 名字 ,性别 , 电话 , 地址 , 邮政编码 , 邮箱 ,QQ,类别 \n";
s_people.input();
people[t]=s_people;break;
}
cout<<"修改成功 !\n\n";cout<<"※※※※※※※※※※※※※
※※※※※※※※※※※※※※※※※※※※※※※※※※※\n";
}break;
case 2:
{ cout<<" 请输入您要修改的人的电话 :\n";18 页
char s_tel[20];cin>>s_tel;
for(int t=0; t<num; t++)
if(strcmp(people[t].tel,s_tel)==0)
{ person s_people_tel;
cout<<"\n请依次输入修改后的信息: 名字 , 性别 , 电话, 地址 , 邮政编码 , 邮箱 ,QQ,类别 :\n";
s_people_tel.input();
people[t]=s_people_tel;break;
}
cout<<"修改成功!\n\n";cout<<"※※※※※※※※
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
※\n";
}break;
}
}break;
case 5:
{ cout<<"请输入1-2\n 1.按姓名删除\n 2.按电话删除\n";int
j;cin>>j;
switch(j)
{ case 1:
{ cout<<"请输入您要删除的人的姓名:\n";char
s_name[20];cin>>s_name;
for(int t=0; t<num; t++)
if(strcmp(people[t].name,s_name)==0)
{ int j=t+1;
for(j;j<num;j++)
{ people[t]=people[j];
t++;
}19 页
break;
}
num--;cout<<s_name<<"已成功删除!\n";cout<<"※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
※※※※\n";
}break;
case 2:
{ cout<<" 请输入您要删除的人的电话 :\n";
char s_tel[20];cin>>s_tel;
for(int t=0; t<num; t++)
if(strcmp(people[t].tel,s_tel)==0)
{ int j=t+1;
for(j;j<num;j++)
{ people[t]=people[j];
t++;
}
break;
}
num--;cout<<"删除成功!\n\n";cout<<"※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
※※\n";
}break;
}
}break;
case 6:
{cout<<"﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
﹌﹌\n"<<" 信管 10101 班课程设计第二组 : 易帅龙、马启明、王刚、翟凤
20页
玺\n"<<" ﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
\n";}break;
default:
break;
}
} while(i!=0);
}
九、评阅意见及评阅成绩
评阅意见:
评定成绩:
指导老师签名:
年月日
21页。