手机通讯录系统课程设计报告

合集下载

通讯录管理系统课程设计报告

通讯录管理系统课程设计报告

通讯录管理系统课程设计报告一、课程设计背景随着信息化时代的到来,通讯录管理系统已经成为了人们日常生活中必不可少的一部分。

在这个快节奏的社会中,人们需要随时随地地获取和管理自己的联系人信息。

因此,设计一个高效、方便、易用的通讯录管理系统就显得尤为重要。

二、需求分析1.功能需求(1)用户注册与登录:用户可以通过注册账号并登录到系统中。

(2)通讯录添加:用户可以添加联系人,包括姓名、电话号码、电子邮件等信息。

(3)通讯录查询:用户可以根据姓名或电话号码等信息查询特定联系人。

(4)通讯录修改:用户可以对已有联系人信息进行修改。

(5)通讯录删除:用户可以删除指定的联系人。

2.非功能需求(1)易用性:系统应该具有良好的界面设计和操作逻辑,使用户能够快速上手使用。

(2)安全性:系统应该具有安全防护措施,保护用户的数据不被非法获取或篡改。

(3)稳定性:系统应该具有高可靠性和稳定性,确保在任何情况下都能正常运行。

三、技术选型本次课程设计采用Java语言进行开发,使用MySQL数据库作为数据存储后端。

前端采用Java Swing框架进行设计,实现用户界面的构建和交互。

后端采用JDBC技术进行与数据库的交互。

四、系统设计1.系统架构本系统采用MVC(Model-View-Controller)架构模式,将业务逻辑、数据存储和用户界面分离开来,提高了代码的可维护性和可扩展性。

2.模块设计(1)用户管理模块:实现用户注册、登录等功能。

(2)通讯录管理模块:实现通讯录添加、查询、修改、删除等功能。

(3)数据存储模块:负责与数据库进行交互,实现数据的持久化存储。

五、系统实现1.前端实现本系统采用Java Swing框架进行开发,通过调用Swing组件库中的各种控件来构建用户界面。

其中包括登录窗口、注册窗口、主窗口等界面。

2.后端实现本系统采用JDBC技术进行与MySQL数据库的交互。

通过编写SQL语句来完成对数据库中表格的增删改查操作,并将结果返回给前端界面显示。

通讯录管理系统课程设计报告系统存储结构

通讯录管理系统课程设计报告系统存储结构

通讯录管理系统课程设计报告系统存储结构一、引言通讯录管理系统是一种方便快捷地存储和管理联系人信息的应用程序。

在该系统中,数据的存储结构至关重要,它直接关系到系统的性能和稳定性。

本文将介绍通讯录管理系统的系统存储结构设计,包括数据的组织方式、存储介质选择等内容。

二、存储结构设计1. 数据的组织方式在通讯录管理系统中,联系人信息是系统中最主要的数据之一。

为了高效地存储和管理这些信息,我们选择采用数据库的方式进行组织。

数据库将联系人信息按照一定的结构进行组织和存储,方便系统对数据的检索和更新。

2. 数据库的选择在选择数据库时,我们考虑到系统的使用特点和性能要求,最终选择了关系型数据库。

关系型数据库具有良好的数据一致性和完整性,能够满足系统的数据管理需求。

同时,支持 SQL 查询语言的特性也使得对数据进行灵活的操作成为可能。

3. 数据表设计在关系型数据库中,数据是以表的形式进行存储的。

针对通讯录管理系统的需求,我们设计了以下几张表:•用户表:用于存储系统的用户信息,包括用户名、密码等;•联系人表:用于存储用户的联系人信息,包括姓名、电话号码、邮箱地址等;•分组表:用于将联系人进行分类管理,方便用户对联系人信息进行组织。

每张表之间通过外键进行关联,确保数据的一致性和完整性。

三、存储介质选择除了数据库存储外,系统还需要选择适当的存储介质来保存一些系统配置信息和用户的登录状态等数据。

我们选择了文件系统作为存储介质,将这些数据以文件的形式进行存储。

四、存储结构的优化为了提高系统的性能和响应速度,我们对存储结构进行了一定的优化。

主要包括以下几点:•索引设计:对关键字段建立索引,加快检索速度;•归档策略:定期对系统中的数据进行归档,减少存储空间的占用;•缓存机制:使用缓存技术对频繁访问的数据进行缓存,减少数据库访问的频率。

五、总结系统存储结构的设计对于通讯录管理系统的性能和稳定性具有重要影响。

通过合理选择数据库和存储介质,并对存储结构进行优化,可以有效提高系统的用户体验和响应速度。

手机通讯录安卓课程设计报告书

手机通讯录安卓课程设计报告书

XX科技大学计算机科学与工程学院智能终端系统及应用开发课程设计报告题目:手机通讯录学号:********班级:********姓名:********指导老师:********绪论随着3G网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。

因此,移动终端的应用软件和需要的服务将会有很大的发展空间。

在Google和Android手机联盟的共同推动下,Android在众多手机操作系统中脱颖而出,受到广大消费者的欢迎。

手机通讯录作为手机的基本功能之一,每天我们都在频繁地使用着。

根据手机功能使用调查显示,有9成以上的消费者使用手机通讯录功能。

随着手机通讯录功能的不断加强与完善,手机通讯录对于人们的意义,已不仅仅像记事簿一样显示通讯地址,而是向着个性化、人性化的方向发展[4]。

通讯录从无到有,从英文到中文,经过了十几年的发展历程,今后的发展趋势就是从通讯录发展为名片夹,也就是在一个人名下,可以存储座机、手机、单位、地址、电子邮件等内容。

这种名片夹在电话薄的基础上,大大丰富了内容,同时结构也发生了革命性变化,而且随着手机的发展,相信更优秀的通讯录会越来越受到社会各层人士的喜爱。

一、课程设计目的智能终端系统及应用开发课程设计是计算机相关专业的一个综合性实践教学环节,是学习完《智能终端系统及应用开发》课程后进行的一次全面的综合练习。

其目的在于促进学生复习和巩固Android 应用技术,加深对软件设计方法、软件设计技术和设计思想的理解,并能运用所学Android 设计知识,通过本课程设计让学生进行简单Android 应用软件的开发,掌握软件设计的方法和面向对象程序设计的基本技术,提高学生在软件开发方面的综合应用能力。

二、课程设计内容通过对Android技术的相关研究,了解Android源码实现原理以及过程,从而设计出一款能够使用的手机通讯录。

这款手机通讯录实现的相关内容如下:1.简洁、实用的操作界面。

手机通讯录系统课程设计

手机通讯录系统课程设计

手机通讯录系统课程设计一、课程目标知识目标:1. 让学生理解手机通讯录系统的基本概念,掌握其数据结构及存储方式;2. 使学生掌握编程语言中与手机通讯录系统相关的常用语法和功能;3. 引导学生了解手机通讯录系统的实际应用场景,认识到其重要性。

技能目标:1. 培养学生运用所学知识设计和实现一个简单的手机通讯录系统的能力;2. 提高学生分析问题、解决问题的能力,使其能够针对手机通讯录系统进行优化和改进;3. 培养学生的团队协作能力,使其能够在小组合作中发挥自己的优势,共同完成任务。

情感态度价值观目标:1. 培养学生对计算机科学和编程的兴趣,激发其学习热情;2. 引导学生认识到手机通讯录系统在生活中的广泛应用,增强其实用主义价值观;3. 培养学生的创新意识,使其敢于尝试新思路,勇于挑战困难。

课程性质:本课程为实践性较强的课程,结合理论教学和实际操作,使学生能够在实践中掌握知识。

学生特点:学生处于高年级阶段,已具备一定的编程基础,对手机通讯录系统有一定了解。

教学要求:教师应注重理论与实践相结合,关注学生的个体差异,提高学生的动手实践能力。

在教学过程中,将目标分解为具体的学习成果,便于后续教学设计和评估。

二、教学内容1. 手机通讯录系统概述:介绍手机通讯录系统的基本概念、功能及在实际应用中的重要性。

- 教材章节:第3章 数据结构与应用,第4节 手机通讯录系统2. 数据结构及存储方式:讲解手机通讯录系统中常用的数据结构(如链表、二叉树等)及其存储方式。

- 教材章节:第2章 线性表与树,第3章 数据结构与应用3. 编程语言实现:运用所学编程语言(如C语言、Python等)实现手机通讯录系统的功能。

- 教材章节:第1章 程序设计基础,第5章 编程语言实例分析4. 手机通讯录系统功能设计:- 添加、删除、查找和修改联系人信息- 教材章节:第4章 算法设计与分析,第6章 数据库原理与应用5. 系统优化与改进:分析现有手机通讯录系统的不足,提出优化方案并进行改进。

手机通讯录课程设计

手机通讯录课程设计

手机通讯录课程设计一、课程目标知识目标:1. 学生理解手机通讯录的基本概念,掌握通讯录的存储与管理工作原理。

2. 学生掌握在手机中新建、编辑、删除和查找联系人等操作方法。

3. 学生了解手机通讯录的安全性和隐私保护措施。

技能目标:1. 学生能够独立在手机中新建、编辑和删除联系人,实现通讯录的有效管理。

2. 学生学会使用手机通讯录中的搜索功能,快速找到所需联系人。

3. 学生能够对通讯录进行备份和恢复,确保数据的安全性。

情感态度价值观目标:1. 学生认识到手机通讯录在生活中的重要性,培养良好的通讯录管理习惯。

2. 学生在操作过程中,树立保护个人隐私和数据安全的意识。

3. 学生通过学习手机通讯录,增强对现代信息技术的兴趣和认识,培养积极向上的学习态度。

课程性质分析:本课程为信息技术课程,结合学生日常生活实际,以手机通讯录为教学载体,旨在提高学生的信息素养和实际操作能力。

学生特点分析:学生处于中学阶段,对手机操作有一定的基础,好奇心强,善于接受新事物。

但部分学生对通讯录管理重视程度不够,需引导培养其管理意识。

教学要求:1. 结合学生特点,注重理论与实践相结合,提高学生的实际操作能力。

2. 强化信息安全意识,培养学生的责任感。

3. 关注个体差异,给予每个学生充分的实践机会,确保学习成果的达成。

二、教学内容1. 通讯录基本概念:介绍手机通讯录的定义、功能及其在日常生活中的重要性。

- 教材章节:第二章第二节“手机通讯录概述”2. 通讯录操作方法:- 新建联系人:姓名、电话、邮箱、地址等信息的填写与保存。

- 编辑联系人:修改已保存联系人的信息。

- 删除联系人:删除不再需要的联系人。

- 查找联系人:使用搜索功能快速查找指定联系人。

- 教材章节:第二章第三节“通讯录的基本操作”3. 通讯录安全与隐私保护:- 备份通讯录:学习如何将通讯录数据进行备份。

- 恢复通讯录:掌握如何恢复已备份的通讯录。

- 隐私保护:了解通讯录隐私设置,提高数据安全性。

c手机通讯录课程设计

c手机通讯录课程设计

c手机通讯录课程设计一、课程目标知识目标:1. 学生能理解并掌握手机通讯录的基本概念和功能。

2. 学生能了解手机通讯录在生活中的实际应用,如快速查找联系人、添加与删除联系人等。

3. 学生能了解手机通讯录的存储方式及其安全性。

技能目标:1. 学生能熟练操作手机通讯录,包括新建、编辑、删除联系人等功能。

2. 学生能运用手机通讯录进行快速拨号,提高沟通效率。

3. 学生能通过手机通讯录导入和导出联系人,实现不同设备间的信息同步。

情感态度价值观目标:1. 学生能认识到手机通讯录在人际交往中的重要性,增强个人信息管理的意识。

2. 学生在操作手机通讯录的过程中,培养耐心、细致的良好习惯。

3. 学生通过学习手机通讯录,提高对现代通信技术的认识,增强信息安全意识。

本课程针对初中年级学生,结合课程性质、学生特点和教学要求,将目标分解为具体的学习成果。

在教学过程中,注重理论与实践相结合,让学生在实际操作中掌握知识,提高技能,培养情感态度价值观。

通过本课程的学习,使学生能够更好地利用手机通讯录,提高生活品质和沟通效率。

二、教学内容1. 手机通讯录概述- 了解手机通讯录的基本概念、功能及在生活中的应用。

- 熟悉手机通讯录的界面及基本操作。

2. 联系人的管理- 新建、编辑、删除联系人。

- 设置联系人头像、分组、备注等信息。

3. 拨号与短信- 使用手机通讯录快速拨号。

- 发送短信给通讯录中的联系人。

4. 通讯录的导入与导出- 学习导入和导出联系人,实现设备间信息同步。

- 了解不同手机品牌间通讯录的兼容性问题。

5. 通讯录安全与隐私- 了解手机通讯录的存储方式。

- 学习如何保护通讯录隐私,防止信息泄露。

教学内容根据课程目标进行科学性和系统性组织,按照以下教学大纲进行安排:第一课时:手机通讯录概述及基本操作。

第二课时:联系人的管理(新建、编辑、删除)。

第三课时:联系人信息的设置(头像、分组、备注)。

第四课时:拨号与短信功能的应用。

通讯录系统课程设计

通讯录系统课程设计

通讯录系统课程设计一、课程目标知识目标:1. 让学生掌握通讯录系统的基本概念,了解其在日常生活和工作中的应用。

2. 使学生了解并掌握通讯录系统中数据的存储、检索和更新等基本操作。

3. 帮助学生理解通讯录系统的数据结构及其优势。

技能目标:1. 培养学生运用所学知识设计和实现一个简单的通讯录系统。

2. 培养学生运用编程语言实现通讯录系统中数据的增删改查等操作。

3. 提高学生分析问题、解决问题的能力,能够针对通讯录系统提出优化建议。

情感态度价值观目标:1. 培养学生主动探索新知识、积极思考的学习态度,增强他们对信息技术的兴趣和热情。

2. 培养学生的团队协作精神,学会在项目合作中发挥个人优势,共同完成任务。

3. 增强学生的信息素养,使他们意识到信息技术在生活中的重要性,并能够遵守相关法律法规,保护个人隐私。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程为信息技术课程,注重实践操作和理论知识相结合。

2. 学生特点:学生为初中年级,已具备一定的计算机操作基础,对新鲜事物充满好奇心。

3. 教学要求:教师应注重启发式教学,引导学生主动参与课堂,关注学生个体差异,提高教学效果。

二、教学内容1. 通讯录系统基本概念:介绍通讯录的定义、作用及其在生活中的应用。

教材章节:第一章第二节2. 通讯录系统数据结构:讲解通讯录中数据的组织方式,如列表、树等。

教材章节:第二章第一节3. 通讯录系统功能设计:分析通讯录系统所需实现的基本功能,如增加、删除、修改和查询联系人信息。

教材章节:第三章第一节4. 编程语言实现通讯录系统:运用所学编程语言(如Python、C++等),实现通讯录系统的基本功能。

教材章节:第四章5. 通讯录系统优化与扩展:探讨如何优化通讯录系统性能,如提高查询效率、扩展系统功能等。

教材章节:第五章6. 项目实践:分组进行项目实践,设计并实现一个简易的通讯录系统。

教材章节:第六章教学内容安排与进度:第一周:通讯录系统基本概念、数据结构第二周:通讯录系统功能设计第三周:编程语言实现通讯录系统第四周:通讯录系统优化与扩展第五周:项目实践与展示、评价三、教学方法1. 讲授法:针对通讯录系统基本概念、数据结构等理论知识,采用讲授法进行教学,帮助学生建立完整的知识体系。

课程设计手机通讯录的设计

课程设计手机通讯录的设计

课程设计手机通讯录的设计一、课程目标知识目标:1. 让学生掌握手机通讯录的基本概念和功能,理解其在日常生活和工作中的重要性。

2. 学习通讯录的信息存储、检索和管理方法,了解不同手机操作系统的通讯录应用差异。

3. 掌握设计手机通讯录的基本原则和流程,了解界面布局、用户体验等相关知识。

技能目标:1. 培养学生运用所学知识分析和解决实际问题的能力,能独立设计出界面友好、功能实用的手机通讯录。

2. 提高学生团队协作和沟通能力,学会在项目中进行有效分工与合作。

3. 培养学生运用信息技术手段进行资料搜集、整理和分析的能力。

情感态度价值观目标:1. 培养学生关注社会发展、关注新技术,提高对信息科技的兴趣和热情。

2. 增强学生的创新意识和实践能力,鼓励他们勇于尝试,不断优化设计方案。

3. 培养学生尊重他人意见,学会倾听、理解、接纳和包容,形成良好的团队合作精神。

课程性质:本课程为信息技术课程,结合实际应用,注重培养学生的实践操作能力和创新思维。

学生特点:学生具备一定的信息技术基础,对新事物充满好奇,喜欢动手实践,但需加强对知识整合和应用的能力。

教学要求:结合课本内容,以实际操作为主,注重理论与实践相结合,提高学生的综合运用能力。

通过本课程的学习,使学生能够将所学知识应用于实际生活,提高个人信息管理能力。

二、教学内容1. 手机通讯录概述- 通讯录的定义与作用- 不同手机操作系统通讯录应用的特点2. 通讯录信息管理- 联系人信息的录入、编辑、删除和查找- 分类与标签管理- 云同步与备份3. 设计原则与流程- 界面设计原则:简洁、易用、美观- 用户体验:操作便捷、功能明确- 设计流程:需求分析、界面设计、功能实现、测试优化4. 实践操作- 运用设计工具进行界面布局和原型设计- 功能实现:添加、编辑、删除联系人等- 项目分工与协作5. 评估与优化- 评估标准:功能完整性、界面美观度、操作便捷性- 优化方向:界面调整、功能完善、用户体验改进教学内容依据课程目标,结合课本相关章节,注重理论与实践相结合。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程名称: 程序设计基础课程设计 学院名称: 计算机科学与工程学院 专 业: 计算机科学与技术课程设计报告 装 订线目录一、绪论 (3)二、设计内容 (4)1、选题 (4)2、系统功能 (4)3、应用到的技术 (4)三、设计要求 (4)四、设计环境 (5)1、操作系统 (5)2、开发工具 (5)3、PC机配置 (5)五、系统结构图 (5)六、功能实现 (6)1、系统运行 (6)2、添加联系人 (6)3、修改联系人 (7)4、删除联系人 (8)5、查找联系人 (8)6、查看所有联系人 (8)7、对联系人在文件中的存储位置进行排序 (9)8、系统运行结束 (9)七、遇到的问题和解决的方法 (9)八、设计心得 (10)九、参考文献 (11)十、附件 (12)1、头文件 (12)2、主函数 (12)3、函数实现文件 (13)需求分析在这个信息化的时代,手机已成为继固话之后最为通俗的交流工具。

在这个人与人关系愈加密切的时代,“通讯”成了生活中的必需品。

这就有这么一个系统记录下人与人之间的多样联系方式——手机通讯系统。

通过系统记录下对方的联系方式,既减轻了大脑的负担,又不在受各种条件的约束,做到便捷随身管理相关的联系信息,摆脱了传统电话簿,名片的累赘。

从长远利益来看,可是意义重大的环保之举。

根据市场需求,手机通讯录管理系统所记录的信息一般分为个人、商业、办公三类。

清晰了机主的联系方向。

针对性的分门别类,使系统具有了方便了机主的存储和快速查阅优势功能,大大减少了在电话簿,名片上机械翻阅查找过程的时间。

于此同时又根据手机随身携带的特殊性,在一定程度上比一般的制作文件又其次,因为手机是随身携带的通讯工具,这与记事本相比将在一定程度上保障联系人信息的安全性,相对避免了个人隐私信息外泄从而带来的损失。

综上所述,手机通讯录管理系统是一个高效、实时、绿色环保的管理系统。

友元重载常函数构造函数析构判断数据链表手机通讯录管理系统一、主要功能模拟手机通信录管理系统,要求:(1)查看功能:选择此功能时,列出下列三类选择:A 办公类B 个人类C 商务类,当选中某类时,依次显示出此类所有数据中的姓名和电话号码(2)增加功能:能录入新数据(包括:姓名、电话号码、分类(可选项有:A 办公类 B 个人类 C 商务类)、电子邮件)。

♦当录入了重复的姓名和电话号码时,提示数据录入重复并取消录入;♦通信录容量限定在15条以内。

♦当存储信息超出存储空间,提示存储空间已满,不能再录入新数据;♦录入的新数据能按递增的顺序自动进行条目编号。

(3)拔号功能:能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拔号声音。

(4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改(5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。

1.查看功能2、本系统应具备以下七个功能模块:添加联系人信息、修改联系人信息、删除联系人信息、查询联系人信息、查看所有联系人信息、对联系人信息进行排序,退出保存。

(1) 添加联系人信息:将新得到的联系人信息添加到通讯录中,添加的信息有:序列号、姓名、昵称、性别、手机号码、家里电话、QQ和E-mail。

(2) 修改联系人信息:对已经保存的联系人信息进行修改,可以修改全部的信息也可以选择性的修改其中的某些项目。

(3) 删除联系人信息:对保存在通信录中的联系人信息进行删除。

(4) 查询联系人信息:通过联系人的姓名查询联系人的的全部通讯信息(5) 查看所有联系人信息:本功能将一次性的让机主看到通讯录中保存的所有联系人的所有通讯信息。

(6) 联系人信息排序:依据添加时给定的序列号对通讯录中的联系人信息进行排序。

(7) 保存:将添加的联系人通讯信息以.txt文本的形式保存起来,以备以后查询使用。

3、系统设计具体应用到的技术:(1) 结构、枚举类型的定义与使用;(2) 数组的定义和使用使用;(3) 程序的三种基本控制流程的综合、灵活运用;(4) 普通指针和数组指针的定义和使用;(5) 各类函数的定义和调用;(6) 文件的输入/输出;(7) 程序的调试。

二、设计要求1、在Visual C++控制台应用程序方式下设计课题。

2、设计的程序要求完成本次课程设计所规定的功能。

3、程序应具有一定的健壮性。

即程序必须具有必要的检查和出错处理,如在添加新联系人信息时检查输入的序列号是否相同。

删除、查询联系人信息时检查输入的姓名是否存在等。

三、设计环境1、操作系统:Windows XP Professional;2、开发工具:Microsoft Visual C++ 6.0;3、PC机的配置:CPU:Intel(R)Core(TM)2 T7100 @2.00Ghz;内存:1G;硬盘空间:120GB;显卡:128MB DDR3 NVIDIA(R) GeForce(R) 8400M GS 显卡;四、系统结构图添加联系人信息修改联系人信息删除联系人信息查询联系人信息查看所有联系人信息对联系人进行排序保存退出根据姓名删除根据姓名修改根据姓名修改根据序列号排序主菜单五、功能实现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”系统将提示“Press any key to continue”,此时按任意键系统运行结束。

六、遇到的问题和解决的方法1、不熟悉。

由于在本次课程设计之前长时间没有复习和使用visual C++,很对知识已经记忆模糊,甚至已经淡忘。

对于这种情况我做了这些工作:翻阅以前的课本熟悉本次课程设计所涉及和使用到的相关知识点,比如数组、数据指针、结构体和枚举类型等等。

其次就是在设计的过程中遇到自己不能解决的问题,请教其他同学和到图书馆查阅相关资料。

2、系统首次运行,在添加联系人信息时,联系人信息当中的手机号码、家里电话、地址、QQ和E-mail几个项目是始终显示第一位联系人的信息,而不能显示与姓名对应的联系人的通讯信息。

这个问题在请教老师后得知,是我在设计时忽略了添加新的联系人信息时必须考虑已经保存在文件中的已经添加的联系人信息,于是将代码“GetData(book)”改成“GetData(book+CurNum)”,问题得以解决。

3、当系统完成最初设计,执行修改联系人信息时,显示的是第一个联系人的通讯信息,并不是显示当前联系人的信息。

这个问题在系统最初运行的时候,作为设计人员的我并没有注意到,直到跟一位同学进行系统设计缺陷互查的时候才被发现。

经过仔细检查和查阅资料,发现了其中的错误所在。

显示当前信息的代码是“displayone(book+i)”,而我写成了“displayone(book)”,改正过来的系统成功实现显示当前联系人的通讯信息。

4、当book.txt文件中有联系人信息数据,程序运行,在读book.txt文件中的联系人信息数据时总出错。

研究了很久发现,是因为在最初设计时,我考虑将保存到book.txt文件的联系人信息中的各项目之间用顿号隔开以示区别,但在做读数据时我却没有对对应的设计,没有使用顿号,致使在读数据时出现错误。

七、设计小结课程设计是一次将理论知识运用于解决实际生活中所遇到的问题的实战是一次理解和深化理论知识,树立知识服务生活,知识服务经济发展的的理念。

在本次设计过程中,我通过查阅资料,以及调查身边的人进行系统需求分析,在此基础上建立系统模型,编写代码,进行调试。

过程是曲折的,有时候一个字母的大小写就要花上几个小时的时间去查找。

但正是这个过程让我了解了自己对这么语言的掌握程度,锻炼了我独立解决问题的能力,同时让我意识到严谨的态度对一个系统开发者的重要性。

学以致用,手机通讯录管理系统是我独立开发的第一个系统。

由于能力所限,这个系统还相对简单,且有可能存在一定的缺陷,但这并没有影响到我设计成功后的喜悦。

这是一个契机,给自己今后学习和工作指明了方向。

最后,衷心的感谢本次课程设计的罗烨指导老师,正因为老师的指点,使得我少走了很多弯路,同时授予了我很多作为设计人员应该有的正确理念和行为。

参考文献1 谭浩强著.C++程序设计.北京.清华大学出版社,20062 谭浩强主编.C++程序设计题解与上机指导.北京.清华大学出版社,20063 郑莉,董渊,张瑞峰著.C++语言程序设计(第3版).北京.清华大学出版社,20044 郑莉,董渊,张瑞峰主编.C++语言程序设计案例教程.北京.清华大学出版社,20045 洪永清,黄德才,吕丽民.面向对象建模与设计.北京.人民邮电出版社,19986 邵维忠,杨芙清.面向对象的系统分析.北京.清华大学出版社,19987 吴乃陵.C++程序设计实践教程(第2版).北京.高等教育出版社,20068 钱能.C++程序设计实验指导.北京.清华大学出版社,19999 严蔚敏等.数据结构(C++版).北京.清华大学出版社,199710 (美)Ivor Horton 著.李予敏译.C++入门经典(第3版).北京.清华大学出版社,2002附:本系统源程序1、头文件//book.h#ifndef BOOK_H#define BOOK_Hstruct Book{char No[9];char Name[9];char Nickname[9];char Sex[7];char Mobilenum[15];char Familynum[15];char Addr[30];char qq[10];char Email[15];};#endif2、主函数//主函数文件#include <iostream.h>#include <fstream.h>#include <iomanip.h>#include <string.h>#include "手机通讯录.h"int EnterChoice(); //输入选项void Init(); //数据文件初始化void Add(); //增加一个联系人信息void Display(); //显示所有联系人信息void DisplayOne(Book*); //显示全部联系人重载函数void SortNo(); //按序列号排序(从小到大)void Save (); //保存数据int CheckNo(char *); //输入序列号int CheckName(char *); //输入姓名void PrintTitle(); //显示表头void GetData(Book*); //读取联系人信息void Update(); //修改联系人信息void Delete(); //删除联系人信息void Query(); //查询联系人信息enum Choices{ADD=1,UPDATE,DELETE,QUERY,DISPLAY,SORTNO,END}; const int MaxNum=200; //能够建立的最多联系人人数int CurNum; //当前联系人人数Book book[MaxNum]; //结构数组void main(){Init();int choice;while((choice=EnterChoice())!=END){switch(choice){case ADD:Add();break;case UPDATE:Update();break;case DELETE:Delete();break;case QUERY:Query();break;case DISPLAY:Display();break;case SORTNO:SortNo();break;default:cerr<<"输入序列号不正确,请重新输入!\n";}}Save();}3、函数实现文件//函数实现文件#include <iostream.h>#include <iomanip.h>#include <fstream.h>#include <string.h>#include "手机通讯录.h"int EnterChoice(); //输入选项void Init(); //数据文件初始化void Add(); //增加一个联系人信息void Update(); //修改一个联系人信息void Delete(); //删除一个联系人信息void Query(); //查询一个联系人信息void Display(); //显示全部学生void DisplayOne(Book*); //显示一个学生的重载函数void SortNo(); //按建立时的序号排序(从小到大)void Save (); //保存联系人信息数据int CheckNo(char *); //检查联系人是否存在,存在返回序列号,不存在返回-1 int CheckName(char *); //检查联系人是否存在,存在返回姓名,不存在返回-1 void PrintTitle(); //显示选择菜单void GetData(Book*); //读取联系人信息extern const int MaxNum=200; //最多能够建立联系人人数extern int CurNum; //当前已经建立的人数extern Book book[MaxNum]; //结构数组//========================输入选择函数======================== int EnterChoice(){cout<<"\n\t++++++++欢迎使用手机通讯录管理系统+++++++++++++++++\n"; cout<<" 按【1】: 添加一位联系人信息; "<<endl; cout<<" 按【2】: 修改一位联系人信息; "<<endl; cout<<" 按【3】: 删除一位联系人信息; "<<endl; cout<<" 按【4】: 查询一位联系人信息; "<<endl; cout<<" 按【5】: 显示所有联系人信息; "<<endl; cout<<" 按【6】: 按建立序列号排序; "<<endl; cout<<" 按【7】:结束; "<<endl; cout<<"\n\t+++++++++++++++++++++++++++++++++++++++++++++"<<endl; cout<<"\n\t请选择菜单(1-7):" ;int Choice;cin>> Choice;return Choice;}//===========================初始化函数======================== void Init(){ifstream inCount,inBook;ofstream outCount,outBook;inCount.open("count.txt",ios::in); //打开联系人人数文件if(!inCount) //文件不存在,建立该文件{inCount.close();outCount.open("count.txt",ios::out);outCount<<CurNum; //写入联系人人数0outCount.close(); //关闭文件}else{inCount>>CurNum; //文件存在,读取联系人人数inCount.close();}if(CurNum) //联系人总数不为0,联系人文件存在{inBook.open("Book.txt",ios::in); //打开联系人文件for(int i=0;i<CurNum;i++) //读取联系人数据{inBook>>book[i].No; //读取联系人序号inBook>>book[i].Name; //读取联系人姓名inBook>>book[i].Nickname; //读取联系人昵称inBook>>book[i].Sex; //读取联系人性别inBook>>book[i].Mobilenum; //读取联系人手机号码inBook>>book[i].Familynum; //读取联系人家里电话inBook>>book[i].Addr; //读取联系人地址inBook>>book[i].qq; //读取联系人QQinBook>>book[i].Email; //读取联系人E-mail}inBook.close();}else{outBook.open("Book.txt",ios::out);outBook.close();}}//=====================增加一个联系人信息======================= void Add(){char no[9];cout<<"序列号:";cin>>no;int i=CheckNo(no);if (i>=0)cout<<"序列号已存在,请重新输入"<<endl;else{strcpy(book[CurNum].No,no);cout<<"姓名:";cin>>book[CurNum].Name;cout<<"昵称:";cin>>book[CurNum].Nickname;cout<<"性别:";cin>>book[CurNum].Sex ;cout<<"手机号码:";cin>>book[CurNum].Mobilenum;cout<<"家里电话:";cin>>book[CurNum].Familynum;cout<<"地址:";cin>>book[CurNum].Addr ;cout<<"QQ:";cin>>book[CurNum].qq ;cout<<"E-mail:";cin>>book[CurNum].Email ;Save();DisplayOne(book+CurNum); //排序后重新显示CurNum++;}}//==================按序列号从小到大冒泡排序,并显示=============== void SortNo(){Book temp;int flag;for(int i=0;i<CurNum-1;i++){flag=1;for(int j=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(); //排序后重新显示}//==========================显示表头=========================== void PrintTitle(){cout<<setiosflags(ios::left);cout<<setw(4)<<"序号"<<setw(6)<<"姓名"<<setw(6)<<"昵称"<<setw(4)<<"性别"<<setw(10)<<" 手机号码"<<setw(14)<<" 家里电话"<<setw(10)<<" 地址"<<setw(10)<<" QQ"<<setw(10)<<" E-mail"<<endl;}//=======================显示所有联系人信息===================== void Display(){cout<<setiosflags(ios::left);PrintTitle();for (int i=0;i<CurNum;i++){cout<<setw(4)<<book[i].No;cout<<setw(6)<<book[i].Name;cout<<setw(6)<<book[i].Nickname;cout<<setw(4)<<book[i].Sex;cout<<setw(10)<<book[i].Mobilenum;cout<<setw(10)<<book[i].Familynum;cout<<setw(10)<<book[i].Addr;cout<<setw(10)<<book[i].qq;cout<<setw(10)<<book[i].Email<<endl;}}//======================显示一个联系人信息====================== void DisplayOne(Book *book){cout<<setiosflags(ios::left);PrintTitle();cout<<setw(4)<<book->No;cout<<setw(6)<<book->Name;cout<<setw(6)<<book->Nickname;cout<<setw(4)<<book->Sex;cout<<setw(10)<<book->Mobilenum;cout<<setw(10)<<book->Familynum;cout<<setw(10)<<book->Addr;cout<<setw(10)<<book->qq;cout<<setw(10)<<book->Email;}//======================保存联系人信息到文本文件================= void Save(){ofstream outCount,outBook;outCount.open("count.txt",ios::out);outCount<<CurNum;outCount.close();outBook.open ("book.txt",ios::out);for(int i=0;i<CurNum;i++){outBook<<(book+i)->No<<" ";outBook<<(book+i)->Name<<" ";outBook<<(book+i)->Nickname<<" ";outBook<<(book+i)->Sex<<" ";outBook<<(book+i)->Mobilenum<<" ";outBook<<(book+i)->Familynum<<" ";outBook<<(book+i)->Addr<<" ";outBook<<(book+i)->qq<<" ";outBook<<(book+i)->Email<<" "<<endl;}outBook.close();}//=======检查序列号是否存在,找到返回所在数组下标,找不到返回-1======= int CheckNo(char* no){for(int i=0;i<CurNum;i++)if(strcmp(book[i].No,no)==0)return i;return -1;}//======检查姓名是否存在,找到返回所在数组下标,找不到返回-1========= int CheckName(char* name){for(int i=0;i<CurNum;i++)if(strcmp(book[i].Name,name)==0)return i;return -1;}//==============根据输入的姓名,修改联系人信息,并显示============== void Update(){char uName[9];char a;cout<<"输入姓名:";cin>>uName;int i=CheckName(uName);if(i<0)cout<<"联系人不存在!\n";else{cout<<"确定修改吗?(y/n)\n";cin>>a;if(a=='y'||a=='Y'){cout<<"修改序列号吗?(y/n)";cin>>a;if(a=='y'||a=='Y'){cout<<"输入序列号:";cin>>book[i].No;}cout<<"修改昵称吗?(y/n)\n"; cin>>a;if(a=='y'||a=='Y'){cout<<"输入昵称:";cin>>book[i].Nickname;}cout<<"修改性别吗?(y/n)\n"; cin>>a;if(a=='y'||a=='Y'){cout<<"输入性别:";cin>>book[i].Sex;}cout<<"修改手机号码吗?(y/n)\n"; cin>>a;if(a=='y'||a=='Y'){cout<<"输入手机号码:";cin>>book[i].Mobilenum;}cout<<"修改家里电话吗?(y/n)\n"; cin>>a;if(a=='y'||a=='Y'){cout<<"输入家里电话:";cin>>book[i].Familynum;}cout<<"修改地址吗?(y/n)\n"; cin>>a;if(a=='y'||a=='Y'){cout<<"输入地址:";cin>>book[i].Addr;}cout<<"修改QQ吗?(y/n)\n"; cin>>a;if(a=='y'||a=='Y'){cout<<"输入QQ:";cin>>book[i].qq;}cout<<"修改E-mail吗?(y/n)\n";cin>>a;if(a=='y'||a=='Y'){cout<<"输入E-mail:";cin>>book[i].Email;}DisplayOne(book+i); //显示当前记录}}}//===============根据输入的姓名,删除对应的联系人================= void Delete(){char dName[9];char a;cout<<"输入姓名:";cin>>dName;int i=CheckName(dName);if(i<0)cout<<"联系人不存在!\n";else{cout<<"确定删除吗?(y/n)\n";cin>>a;if(a=='y'||a=='Y'){for(int j=i+1;j<CurNum;j++)book[j-1]=book[j];CurNum--;}}}//================根据输入的姓名,查找该联系人并显示=============== void Query(){char qName[9];cout<<"输入姓名:";cin>>qName;int i=CheckName(qName);if(i<0)cout<<"联系人不存在!\n";else{DisplayOne(book+i);}}21。

相关文档
最新文档