C++通讯录课程设计报告
1 C+ 程 序 设 计 课 程 报 告 课题: 简单通讯录系统的设计 专业班级 : 信管 10101 班 学号: 0107 姓名: 易帅龙 指导教师 : 雷红艳 1 2 页 目录 一、设计系统的目的意 义3 二、系统需求、功能分 析3 1:系统需 求3 2:功能分 析3-4 3:系统结构 图4 4:流程 图5 三、数据结构 表6 四、数据测试 表6 五、 运行 和 调试 (各 个功 能调 试运行 结 果)6-12 1、主界面系统运 行6-7 2、添加联系 人7 3、查询联系 3 人8-9 4、修改联系 人 10 5、删除联系 人 11 6、设计人员信 息 11 7、系统运行结 束 12 六、课程设计的心 得 12 七、参考书 目: 12 八、附录:源代 码13-21 九、评阅意见及评阅成 绩21 2 页 一、设计系统的目的意义 1、设计系统的目的 设计这个系统的目的是为了设计一个能够便捷使用的电子通讯录,能够 方便的存储信息, 可以将这个系统应用到手机或者其他电子设备中,方便的 存储联系人,为方便查找联系人的各种信息提供方便。 2、设计系统的意义 4 电子通讯录系统没有使用纸张等,做到了环保,符合当今环保理念这 个系统使用户能够方便快捷的使用存储和查找等优势功能,且具有较高的 安全性,能够有效保护用户联系人资料。 二、系统需求及功能分析 系统需求 1、需要录入联系人到通讯录中; 2、能够对通讯录中各项信息进行查找修改删除排序等一系列操 作; 3、能够完成通讯录的基本功能; 4、凡等候用户输入时,给出足够的提示信息; 5、程序具有一定的健壮性, 不会因为用户的输入错误引起程序运行错误 而中断执行。对输入值的类型、大小范围、字符串的长度等,进行正确性检 查,对不合法的输入值给出出错信息,指出错误类型,等待重新输入; 6、对删除数据应给出警告。 功能分析 1、 录入功能:选择此功能可以用户手动输入联系人各项信息; 2、查看功能:选择此功能时可以选择根据各种信息查询联系人电话、 住址、性别、邮箱、 QQ 等各项信息; 3、排序功能:选择此功能可以按照姓名将所有联系人排序输出; 4、修改功能:选择此功能时能够通过输入联系人姓名或者电话修改 联系人的全部信息; 5、删除功能:选择此功能时能够通过输入联系人姓名或者电话删除联系 人的全部信息; 3 页 5、查看设计人员功能:选择此功能时能够查看该系统设计人员名 单; 6、退出系统功能:选择此功能时能够退出系统并保存数据。 功能结构图: 5 4页 流程图: 主菜单 修 改 联 系 人 查 询 联 系 人 根 据 电 话 查 询 根 据 姓 名 查 询 根 据 类 别 查 询 排 序 输 出 添 加 联 系 人 根 据 电 话 修 改 根 据 姓 名 修 改 删 除 联 系 人 根 据 姓 名 删 除 根 据 电 话 删 除 查 看 设 计 人 员 名 单 退 出 程 序 输入任意键进入主 菜单 根 据 地 址 查 询 6 输入 1 输入 6 输入 5 输入 4 输入 1 输入 2 输入 3 输入 2 输入 1 输入 2 5页 三、数据结构表 输入 06 选择功能 1:添加 2:查询 3:排序 4:修改 5:删除 6:设计人员 0:退出 输 入 各项信息 删除联系人 1:按姓名删 除 1 : 按 姓 名 删 除 2 : 按 电 话 删 除 查 看 设 计 人 员 修 改 联 系 人: 1: 按姓名修 1 : 按 姓 名 修 2 : 按 电 话 修 按 姓 名 排 序 1:按姓名 查询 2:按电话 查询 3:按地址 7 类名数据名数据类型长度 PersonnameChar10 PersonsexChar4 PersontelInt44 PersonaddChar20 PersonPostnumInt40 PersonE_mailChar20 PersonQQInt44 PersonKindChar10 PersonPeoplePerson class person public: char 15 name10,sex4,tel11,add20,postnum10,e_mail20,QQ11,k ind10; public: person() void input() cout<name; cout<sex; cout<tel; cout<add; cout<postnum; cout<e_mail; cout<QQ; 13 页 cout<kind; void save() ofstream fout(e:,ios:app); fout<<name<<sex<<tel<<add<<postnum<<e_mail<<QQ<<kind; cout<<信息已保存至 e:nnn;cout<< 16 n; (); void output() cout<< 姓 名 :<<name<< << 性 别 :<<sex<< << 电 话 :<<tel<< << 地 址 :<<add<< <<邮 箱 :<<postnum<< <<E_mail:<<e_mail<< <<QQ:<<QQ<< << 类 别 :<<kind<< <<endl; ; void main() person people30;int i;static int num=0,p_num=0; do cout<y; system(cls); cout<i; while(i6|i<0) cout<<选择无效,重新输入05: <i; 17 switch(i) case 0:break; case 1:cout<<请输入您要添加人的信息 :n; peoplep_num.input();peoplep_num.save();num+;p_num+;break ; case 2: cout<j; switch(j) case 1: cout<q_name; for(int t=0; t<num; t+) if(strcmp(peoplet.name,q_name)=0) cout<<姓名为:<<q_name<<的信息如 下:n;peoplet.output();cout<< n;break; else cout<<没有找到<<q_name<< 的信 息!n;cout<< n; break; case 2: 15 页 cout<<请输入电话 :<q_tel; for(int t=0; t<num; t+) if(strcmp(peoplet.tel,q_tel)=0) 18 cout<<电 话 为 :<<q_tel<<的 信 息 如 下:n;peoplet.output();cout<< n;break; else cout<<没 有 找 到 <<q_tel<<的 信 息!n;cout<< n; break; case 3: cout<<请输入地址 :<q_add; for(int t=0; t<num; t+) if(strcmp(peoplet.add,q_add)=0) cout<<地 址 为 :<<q_add<<的 信 息 如 下:n;peoplet.output();cout<< n;break; else cout<<没 有 找 到 <<q_add<< 的 信 息!n;cout<< n; break; case 4: cout<<请输入类别 :<q_kind; for(int t=0; t<num; t+) 16 页 if(strcmp(peoplet.kind,q_kind)=0) cout<<类 别 为 :<<q_kind<<的 信 息 如 下:n;peoplet.output();cout<<endl; 19 else cout<<没有找到 <<q_kind<< 的信 息!n;cout<< n; cout<< n;break; case 5: cout<< 所有人的信息如下 :n; for(int t=0; t<num; t+) peoplet.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; s0) 17 页 sort=peoplet;peoplet=peoples;peoples=sort; 20 cout<<按姓名从小到大排序后 :<<endl; for(int n=0; n<num; n+) peoplen.output(); cout<< n; break; case 4: cout<j; switch(j) case 1: cout<s_name; for(int t=0; t<num; t+) if(strcmp(peoplet.name,s_name)=0) person s_people;cout<<n请依次输入修改后的信息 : 名字, 性别, 电话, 地址, 邮政编码 , 邮箱,QQ,类别n; (); peoplet=s_people;break; cout<<修改成功 !nn;cout<< n; break; case 2: cout<s_tel; for(int t=0; t<num; t+) if(strcmp(peoplet.tel,s_tel)=0) person s_people_tel; cout<<n请依次输入修改后的信息: 名字, 性别 , 电话, 地址, 邮政编码 , 邮箱,QQ,类别:n; (); peoplet=s_people_tel;break; cout<<修改成功 !nn;cout<< n; break; break; case 5: cout<j; switch(j) case 1: cout<s_name; for(int t=0; t<num; t+) if(strcmp(peoplet.name,s_name)=0) int j=t+1; for(j;j<num;j+) peoplet=peoplej; t+; 19 页 22 break; num-;cout<<s_name<< 已成功删除 !n;cout<< n; break; case 2: cout<s_tel; for(int